// Copyright 2021 The Tint Authors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

////////////////////////////////////////////////////////////////////////////////
// File generated by tools/intrinsic-gen
// using the template:
//   src/intrinsic_table.inl.tmpl
// and the intrinsic defintion file:
//   src/intrinsics.def
//
// Do not modify this file directly
////////////////////////////////////////////////////////////////////////////////

// clang-format off

/// TypeMatcher for 'type bool'
/// @see src/intrinsics.def:68:6
class Bool : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* Bool::Match(MatchState& state, const sem::Type* ty) const {
  if (!match_bool(ty)) {
    return nullptr;
  }
  return build_bool(state);
}

std::string Bool::String(MatchState&) const {
  return "bool";
}

/// TypeMatcher for 'type f32'
/// @see src/intrinsics.def:69:6
class F32 : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* F32::Match(MatchState& state, const sem::Type* ty) const {
  if (!match_f32(ty)) {
    return nullptr;
  }
  return build_f32(state);
}

std::string F32::String(MatchState&) const {
  return "f32";
}

/// TypeMatcher for 'type i32'
/// @see src/intrinsics.def:70:6
class I32 : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* I32::Match(MatchState& state, const sem::Type* ty) const {
  if (!match_i32(ty)) {
    return nullptr;
  }
  return build_i32(state);
}

std::string I32::String(MatchState&) const {
  return "i32";
}

/// TypeMatcher for 'type u32'
/// @see src/intrinsics.def:71:6
class U32 : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* U32::Match(MatchState& state, const sem::Type* ty) const {
  if (!match_u32(ty)) {
    return nullptr;
  }
  return build_u32(state);
}

std::string U32::String(MatchState&) const {
  return "u32";
}

/// TypeMatcher for 'type vec2'
/// @see src/intrinsics.def:72:6
class Vec2 : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* Vec2::Match(MatchState& state, const sem::Type* ty) const {
  const sem::Type* T = nullptr;
  if (!match_vec2(ty, T)) {
    return nullptr;
  }
  T = state.Type(T);
  if (T == nullptr) {
    return nullptr;
  }
  return build_vec2(state, T);
}

std::string Vec2::String(MatchState& state) const {
  const std::string T = state.TypeName();
  return "vec2<" + T + ">";
}

/// TypeMatcher for 'type vec3'
/// @see src/intrinsics.def:73:6
class Vec3 : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* Vec3::Match(MatchState& state, const sem::Type* ty) const {
  const sem::Type* T = nullptr;
  if (!match_vec3(ty, T)) {
    return nullptr;
  }
  T = state.Type(T);
  if (T == nullptr) {
    return nullptr;
  }
  return build_vec3(state, T);
}

std::string Vec3::String(MatchState& state) const {
  const std::string T = state.TypeName();
  return "vec3<" + T + ">";
}

/// TypeMatcher for 'type vec4'
/// @see src/intrinsics.def:74:6
class Vec4 : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* Vec4::Match(MatchState& state, const sem::Type* ty) const {
  const sem::Type* T = nullptr;
  if (!match_vec4(ty, T)) {
    return nullptr;
  }
  T = state.Type(T);
  if (T == nullptr) {
    return nullptr;
  }
  return build_vec4(state, T);
}

std::string Vec4::String(MatchState& state) const {
  const std::string T = state.TypeName();
  return "vec4<" + T + ">";
}

/// TypeMatcher for 'type vec'
/// @see src/intrinsics.def:75:37
class Vec : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* Vec::Match(MatchState& state, const sem::Type* ty) const {
  Number N = Number::invalid;
  const sem::Type* T = nullptr;
  if (!match_vec(ty, N, T)) {
    return nullptr;
  }
  N = state.Num(N);
  if (!N.IsValid()) {
    return nullptr;
  }
  T = state.Type(T);
  if (T == nullptr) {
    return nullptr;
  }
  return build_vec(state, N, T);
}

std::string Vec::String(MatchState& state) const {
  const std::string N = state.NumName();
  const std::string T = state.TypeName();
  std::stringstream ss;
  ss << "vec" << N << "<" << T << ">";
  return ss.str();
}

/// TypeMatcher for 'type mat'
/// @see src/intrinsics.def:76:37
class Mat : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* Mat::Match(MatchState& state, const sem::Type* ty) const {
  Number N = Number::invalid;
  Number M = Number::invalid;
  const sem::Type* T = nullptr;
  if (!match_mat(ty, N, M, T)) {
    return nullptr;
  }
  N = state.Num(N);
  if (!N.IsValid()) {
    return nullptr;
  }
  M = state.Num(M);
  if (!M.IsValid()) {
    return nullptr;
  }
  T = state.Type(T);
  if (T == nullptr) {
    return nullptr;
  }
  return build_mat(state, N, M, T);
}

std::string Mat::String(MatchState& state) const {
  const std::string N = state.NumName();
  const std::string M = state.NumName();
  const std::string T = state.TypeName();
  std::stringstream ss;
  ss << "mat" << N << "x" << M << "<" << T << ">";
  return ss.str();
}

/// TypeMatcher for 'type ptr'
/// @see src/intrinsics.def:77:6
class Ptr : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* Ptr::Match(MatchState& state, const sem::Type* ty) const {
  Number S = Number::invalid;
  const sem::Type* T = nullptr;
  Number A = Number::invalid;
  if (!match_ptr(ty, S, T, A)) {
    return nullptr;
  }
  S = state.Num(S);
  if (!S.IsValid()) {
    return nullptr;
  }
  T = state.Type(T);
  if (T == nullptr) {
    return nullptr;
  }
  A = state.Num(A);
  if (!A.IsValid()) {
    return nullptr;
  }
  return build_ptr(state, S, T, A);
}

std::string Ptr::String(MatchState& state) const {
  const std::string S = state.NumName();
  const std::string T = state.TypeName();
  const std::string A = state.NumName();
  return "ptr<" + S + ", " + T + ", " + A + ">";
}

/// TypeMatcher for 'type atomic'
/// @see src/intrinsics.def:78:6
class Atomic : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* Atomic::Match(MatchState& state, const sem::Type* ty) const {
  const sem::Type* T = nullptr;
  if (!match_atomic(ty, T)) {
    return nullptr;
  }
  T = state.Type(T);
  if (T == nullptr) {
    return nullptr;
  }
  return build_atomic(state, T);
}

std::string Atomic::String(MatchState& state) const {
  const std::string T = state.TypeName();
  return "atomic<" + T + ">";
}

/// TypeMatcher for 'type array'
/// @see src/intrinsics.def:79:6
class Array : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* Array::Match(MatchState& state, const sem::Type* ty) const {
  const sem::Type* T = nullptr;
  if (!match_array(ty, T)) {
    return nullptr;
  }
  T = state.Type(T);
  if (T == nullptr) {
    return nullptr;
  }
  return build_array(state, T);
}

std::string Array::String(MatchState& state) const {
  const std::string T = state.TypeName();
  return "array<" + T + ">";
}

/// TypeMatcher for 'type sampler'
/// @see src/intrinsics.def:80:6
class Sampler : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* Sampler::Match(MatchState& state, const sem::Type* ty) const {
  if (!match_sampler(ty)) {
    return nullptr;
  }
  return build_sampler(state);
}

std::string Sampler::String(MatchState&) const {
  return "sampler";
}

/// TypeMatcher for 'type sampler_comparison'
/// @see src/intrinsics.def:81:6
class SamplerComparison : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* SamplerComparison::Match(MatchState& state, const sem::Type* ty) const {
  if (!match_sampler_comparison(ty)) {
    return nullptr;
  }
  return build_sampler_comparison(state);
}

std::string SamplerComparison::String(MatchState&) const {
  return "sampler_comparison";
}

/// TypeMatcher for 'type texture_1d'
/// @see src/intrinsics.def:82:6
class Texture1D : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* Texture1D::Match(MatchState& state, const sem::Type* ty) const {
  const sem::Type* T = nullptr;
  if (!match_texture_1d(ty, T)) {
    return nullptr;
  }
  T = state.Type(T);
  if (T == nullptr) {
    return nullptr;
  }
  return build_texture_1d(state, T);
}

std::string Texture1D::String(MatchState& state) const {
  const std::string T = state.TypeName();
  return "texture_1d<" + T + ">";
}

/// TypeMatcher for 'type texture_2d'
/// @see src/intrinsics.def:83:6
class Texture2D : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* Texture2D::Match(MatchState& state, const sem::Type* ty) const {
  const sem::Type* T = nullptr;
  if (!match_texture_2d(ty, T)) {
    return nullptr;
  }
  T = state.Type(T);
  if (T == nullptr) {
    return nullptr;
  }
  return build_texture_2d(state, T);
}

std::string Texture2D::String(MatchState& state) const {
  const std::string T = state.TypeName();
  return "texture_2d<" + T + ">";
}

/// TypeMatcher for 'type texture_2d_array'
/// @see src/intrinsics.def:84:6
class Texture2DArray : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* Texture2DArray::Match(MatchState& state, const sem::Type* ty) const {
  const sem::Type* T = nullptr;
  if (!match_texture_2d_array(ty, T)) {
    return nullptr;
  }
  T = state.Type(T);
  if (T == nullptr) {
    return nullptr;
  }
  return build_texture_2d_array(state, T);
}

std::string Texture2DArray::String(MatchState& state) const {
  const std::string T = state.TypeName();
  return "texture_2d_array<" + T + ">";
}

/// TypeMatcher for 'type texture_3d'
/// @see src/intrinsics.def:85:6
class Texture3D : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* Texture3D::Match(MatchState& state, const sem::Type* ty) const {
  const sem::Type* T = nullptr;
  if (!match_texture_3d(ty, T)) {
    return nullptr;
  }
  T = state.Type(T);
  if (T == nullptr) {
    return nullptr;
  }
  return build_texture_3d(state, T);
}

std::string Texture3D::String(MatchState& state) const {
  const std::string T = state.TypeName();
  return "texture_3d<" + T + ">";
}

/// TypeMatcher for 'type texture_cube'
/// @see src/intrinsics.def:86:6
class TextureCube : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* TextureCube::Match(MatchState& state, const sem::Type* ty) const {
  const sem::Type* T = nullptr;
  if (!match_texture_cube(ty, T)) {
    return nullptr;
  }
  T = state.Type(T);
  if (T == nullptr) {
    return nullptr;
  }
  return build_texture_cube(state, T);
}

std::string TextureCube::String(MatchState& state) const {
  const std::string T = state.TypeName();
  return "texture_cube<" + T + ">";
}

/// TypeMatcher for 'type texture_cube_array'
/// @see src/intrinsics.def:87:6
class TextureCubeArray : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* TextureCubeArray::Match(MatchState& state, const sem::Type* ty) const {
  const sem::Type* T = nullptr;
  if (!match_texture_cube_array(ty, T)) {
    return nullptr;
  }
  T = state.Type(T);
  if (T == nullptr) {
    return nullptr;
  }
  return build_texture_cube_array(state, T);
}

std::string TextureCubeArray::String(MatchState& state) const {
  const std::string T = state.TypeName();
  return "texture_cube_array<" + T + ">";
}

/// TypeMatcher for 'type texture_multisampled_2d'
/// @see src/intrinsics.def:88:6
class TextureMultisampled2D : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* TextureMultisampled2D::Match(MatchState& state, const sem::Type* ty) const {
  const sem::Type* T = nullptr;
  if (!match_texture_multisampled_2d(ty, T)) {
    return nullptr;
  }
  T = state.Type(T);
  if (T == nullptr) {
    return nullptr;
  }
  return build_texture_multisampled_2d(state, T);
}

std::string TextureMultisampled2D::String(MatchState& state) const {
  const std::string T = state.TypeName();
  return "texture_multisampled_2d<" + T + ">";
}

/// TypeMatcher for 'type texture_depth_2d'
/// @see src/intrinsics.def:89:6
class TextureDepth2D : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* TextureDepth2D::Match(MatchState& state, const sem::Type* ty) const {
  if (!match_texture_depth_2d(ty)) {
    return nullptr;
  }
  return build_texture_depth_2d(state);
}

std::string TextureDepth2D::String(MatchState&) const {
  return "texture_depth_2d";
}

/// TypeMatcher for 'type texture_depth_2d_array'
/// @see src/intrinsics.def:90:6
class TextureDepth2DArray : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* TextureDepth2DArray::Match(MatchState& state, const sem::Type* ty) const {
  if (!match_texture_depth_2d_array(ty)) {
    return nullptr;
  }
  return build_texture_depth_2d_array(state);
}

std::string TextureDepth2DArray::String(MatchState&) const {
  return "texture_depth_2d_array";
}

/// TypeMatcher for 'type texture_depth_cube'
/// @see src/intrinsics.def:91:6
class TextureDepthCube : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* TextureDepthCube::Match(MatchState& state, const sem::Type* ty) const {
  if (!match_texture_depth_cube(ty)) {
    return nullptr;
  }
  return build_texture_depth_cube(state);
}

std::string TextureDepthCube::String(MatchState&) const {
  return "texture_depth_cube";
}

/// TypeMatcher for 'type texture_depth_cube_array'
/// @see src/intrinsics.def:92:6
class TextureDepthCubeArray : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* TextureDepthCubeArray::Match(MatchState& state, const sem::Type* ty) const {
  if (!match_texture_depth_cube_array(ty)) {
    return nullptr;
  }
  return build_texture_depth_cube_array(state);
}

std::string TextureDepthCubeArray::String(MatchState&) const {
  return "texture_depth_cube_array";
}

/// TypeMatcher for 'type texture_storage_1d'
/// @see src/intrinsics.def:93:6
class TextureStorage1D : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* TextureStorage1D::Match(MatchState& state, const sem::Type* ty) const {
  Number F = Number::invalid;
  Number A = Number::invalid;
  if (!match_texture_storage_1d(ty, F, A)) {
    return nullptr;
  }
  F = state.Num(F);
  if (!F.IsValid()) {
    return nullptr;
  }
  A = state.Num(A);
  if (!A.IsValid()) {
    return nullptr;
  }
  return build_texture_storage_1d(state, F, A);
}

std::string TextureStorage1D::String(MatchState& state) const {
  const std::string F = state.NumName();
  const std::string A = state.NumName();
  return "texture_storage_1d<" + F + ", " + A + ">";
}

/// TypeMatcher for 'type texture_storage_2d'
/// @see src/intrinsics.def:94:6
class TextureStorage2D : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* TextureStorage2D::Match(MatchState& state, const sem::Type* ty) const {
  Number F = Number::invalid;
  Number A = Number::invalid;
  if (!match_texture_storage_2d(ty, F, A)) {
    return nullptr;
  }
  F = state.Num(F);
  if (!F.IsValid()) {
    return nullptr;
  }
  A = state.Num(A);
  if (!A.IsValid()) {
    return nullptr;
  }
  return build_texture_storage_2d(state, F, A);
}

std::string TextureStorage2D::String(MatchState& state) const {
  const std::string F = state.NumName();
  const std::string A = state.NumName();
  return "texture_storage_2d<" + F + ", " + A + ">";
}

/// TypeMatcher for 'type texture_storage_2d_array'
/// @see src/intrinsics.def:95:6
class TextureStorage2DArray : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* TextureStorage2DArray::Match(MatchState& state, const sem::Type* ty) const {
  Number F = Number::invalid;
  Number A = Number::invalid;
  if (!match_texture_storage_2d_array(ty, F, A)) {
    return nullptr;
  }
  F = state.Num(F);
  if (!F.IsValid()) {
    return nullptr;
  }
  A = state.Num(A);
  if (!A.IsValid()) {
    return nullptr;
  }
  return build_texture_storage_2d_array(state, F, A);
}

std::string TextureStorage2DArray::String(MatchState& state) const {
  const std::string F = state.NumName();
  const std::string A = state.NumName();
  return "texture_storage_2d_array<" + F + ", " + A + ">";
}

/// TypeMatcher for 'type texture_storage_3d'
/// @see src/intrinsics.def:96:6
class TextureStorage3D : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* TextureStorage3D::Match(MatchState& state, const sem::Type* ty) const {
  Number F = Number::invalid;
  Number A = Number::invalid;
  if (!match_texture_storage_3d(ty, F, A)) {
    return nullptr;
  }
  F = state.Num(F);
  if (!F.IsValid()) {
    return nullptr;
  }
  A = state.Num(A);
  if (!A.IsValid()) {
    return nullptr;
  }
  return build_texture_storage_3d(state, F, A);
}

std::string TextureStorage3D::String(MatchState& state) const {
  const std::string F = state.NumName();
  const std::string A = state.NumName();
  return "texture_storage_3d<" + F + ", " + A + ">";
}

/// TypeMatcher for 'type texture_external'
/// @see src/intrinsics.def:97:6
class TextureExternal : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* TextureExternal::Match(MatchState& state, const sem::Type* ty) const {
  if (!match_texture_external(ty)) {
    return nullptr;
  }
  return build_texture_external(state);
}

std::string TextureExternal::String(MatchState&) const {
  return "texture_external";
}

/// TypeMatcher for 'type _modf_result'
/// @see src/intrinsics.def:99:6
class ModfResult : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* ModfResult::Match(MatchState& state, const sem::Type* ty) const {
  if (!match_modf_result(ty)) {
    return nullptr;
  }
  return build_modf_result(state);
}

std::string ModfResult::String(MatchState&) const {
  return "_modf_result";
}

/// TypeMatcher for 'type _modf_result_vec'
/// @see src/intrinsics.def:100:41
class ModfResultVec : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* ModfResultVec::Match(MatchState& state, const sem::Type* ty) const {
  Number N = Number::invalid;
  if (!match_modf_result_vec(ty, N)) {
    return nullptr;
  }
  N = state.Num(N);
  if (!N.IsValid()) {
    return nullptr;
  }
  return build_modf_result_vec(state, N);
}

std::string ModfResultVec::String(MatchState& state) const {
  const std::string N = state.NumName();
  std::stringstream ss;
  ss << "_modf_result_vec" << N;
  return ss.str();
}

/// TypeMatcher for 'type _frexp_result'
/// @see src/intrinsics.def:101:6
class FrexpResult : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* FrexpResult::Match(MatchState& state, const sem::Type* ty) const {
  if (!match_frexp_result(ty)) {
    return nullptr;
  }
  return build_frexp_result(state);
}

std::string FrexpResult::String(MatchState&) const {
  return "_frexp_result";
}

/// TypeMatcher for 'type _frexp_result_vec'
/// @see src/intrinsics.def:102:42
class FrexpResultVec : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* FrexpResultVec::Match(MatchState& state, const sem::Type* ty) const {
  Number N = Number::invalid;
  if (!match_frexp_result_vec(ty, N)) {
    return nullptr;
  }
  N = state.Num(N);
  if (!N.IsValid()) {
    return nullptr;
  }
  return build_frexp_result_vec(state, N);
}

std::string FrexpResultVec::String(MatchState& state) const {
  const std::string N = state.NumName();
  std::stringstream ss;
  ss << "_frexp_result_vec" << N;
  return ss.str();
}

/// TypeMatcher for 'match fiu32'
/// @see src/intrinsics.def:110:7
class Fiu32 : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules, and returns the
  /// expected, canonicalized type on success.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* Fiu32::Match(MatchState& state, const sem::Type* ty) const {
  if (match_f32(ty)) {
    return build_f32(state);
  }
  if (match_i32(ty)) {
    return build_i32(state);
  }
  if (match_u32(ty)) {
    return build_u32(state);
  }
  return nullptr;
}

std::string Fiu32::String(MatchState&) const {
  return "f32, i32 or u32";
}

/// TypeMatcher for 'match iu32'
/// @see src/intrinsics.def:111:7
class Iu32 : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules, and returns the
  /// expected, canonicalized type on success.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* Iu32::Match(MatchState& state, const sem::Type* ty) const {
  if (match_i32(ty)) {
    return build_i32(state);
  }
  if (match_u32(ty)) {
    return build_u32(state);
  }
  return nullptr;
}

std::string Iu32::String(MatchState&) const {
  return "i32 or u32";
}

/// TypeMatcher for 'match scalar'
/// @see src/intrinsics.def:112:7
class Scalar : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules, and returns the
  /// expected, canonicalized type on success.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param type the type to match
  /// @returns the canonicalized type on match, otherwise nullptr
  const sem::Type* Match(MatchState& state,
                         const sem::Type* type) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

const sem::Type* Scalar::Match(MatchState& state, const sem::Type* ty) const {
  if (match_f32(ty)) {
    return build_f32(state);
  }
  if (match_i32(ty)) {
    return build_i32(state);
  }
  if (match_u32(ty)) {
    return build_u32(state);
  }
  if (match_bool(ty)) {
    return build_bool(state);
  }
  return nullptr;
}

std::string Scalar::String(MatchState&) const {
  return "f32, i32, u32 or bool";
}

/// EnumMatcher for 'match f32_texel_format'
/// @see src/intrinsics.def:123:7
class F32TexelFormat : public NumberMatcher {
 public:
  /// Checks whether the given number matches the enum matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param number the enum value as a Number
  /// @return true if the enum value matches the set
  Number Match(MatchState& state, Number number) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

Number F32TexelFormat::Match(MatchState&, Number number) const {
  switch (static_cast<TexelFormat>(number.Value())) {
    case TexelFormat::kRgba8Unorm:
    case TexelFormat::kRgba8Snorm:
    case TexelFormat::kRgba16Float:
    case TexelFormat::kR32Float:
    case TexelFormat::kRg32Float:
    case TexelFormat::kRgba32Float:
      return number;
    default:
      return Number::invalid;
  }
}

std::string F32TexelFormat::String(MatchState&) const {
  return "rgba8unorm, rgba8snorm, rgba16float, r32float, rg32float or rgba32float";
}

/// EnumMatcher for 'match i32_texel_format'
/// @see src/intrinsics.def:125:7
class I32TexelFormat : public NumberMatcher {
 public:
  /// Checks whether the given number matches the enum matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param number the enum value as a Number
  /// @return true if the enum value matches the set
  Number Match(MatchState& state, Number number) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

Number I32TexelFormat::Match(MatchState&, Number number) const {
  switch (static_cast<TexelFormat>(number.Value())) {
    case TexelFormat::kRgba8Sint:
    case TexelFormat::kRgba16Sint:
    case TexelFormat::kR32Sint:
    case TexelFormat::kRg32Sint:
    case TexelFormat::kRgba32Sint:
      return number;
    default:
      return Number::invalid;
  }
}

std::string I32TexelFormat::String(MatchState&) const {
  return "rgba8sint, rgba16sint, r32sint, rg32sint or rgba32sint";
}

/// EnumMatcher for 'match u32_texel_format'
/// @see src/intrinsics.def:127:7
class U32TexelFormat : public NumberMatcher {
 public:
  /// Checks whether the given number matches the enum matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param number the enum value as a Number
  /// @return true if the enum value matches the set
  Number Match(MatchState& state, Number number) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

Number U32TexelFormat::Match(MatchState&, Number number) const {
  switch (static_cast<TexelFormat>(number.Value())) {
    case TexelFormat::kRgba8Uint:
    case TexelFormat::kRgba16Uint:
    case TexelFormat::kR32Uint:
    case TexelFormat::kRg32Uint:
    case TexelFormat::kRgba32Uint:
      return number;
    default:
      return Number::invalid;
  }
}

std::string U32TexelFormat::String(MatchState&) const {
  return "rgba8uint, rgba16uint, r32uint, rg32uint or rgba32uint";
}

/// EnumMatcher for 'match read_or_write'
/// @see src/intrinsics.def:130:7
class ReadOrWrite : public NumberMatcher {
 public:
  /// Checks whether the given number matches the enum matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param number the enum value as a Number
  /// @return true if the enum value matches the set
  Number Match(MatchState& state, Number number) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

Number ReadOrWrite::Match(MatchState&, Number number) const {
  switch (static_cast<Access>(number.Value())) {
    case Access::kRead:
    case Access::kWrite:
      return number;
    default:
      return Number::invalid;
  }
}

std::string ReadOrWrite::String(MatchState&) const {
  return "read or write";
}

/// EnumMatcher for 'match function_private_workgroup'
/// @see src/intrinsics.def:132:7
class FunctionPrivateWorkgroup : public NumberMatcher {
 public:
  /// Checks whether the given number matches the enum matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param number the enum value as a Number
  /// @return true if the enum value matches the set
  Number Match(MatchState& state, Number number) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

Number FunctionPrivateWorkgroup::Match(MatchState&, Number number) const {
  switch (static_cast<StorageClass>(number.Value())) {
    case StorageClass::kFunction:
    case StorageClass::kPrivate:
    case StorageClass::kWorkgroup:
      return number;
    default:
      return Number::invalid;
  }
}

std::string FunctionPrivateWorkgroup::String(MatchState&) const {
  return "function, private or workgroup";
}

/// EnumMatcher for 'match workgroup_or_storage'
/// @see src/intrinsics.def:133:7
class WorkgroupOrStorage : public NumberMatcher {
 public:
  /// Checks whether the given number matches the enum matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param number the enum value as a Number
  /// @return true if the enum value matches the set
  Number Match(MatchState& state, Number number) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

Number WorkgroupOrStorage::Match(MatchState&, Number number) const {
  switch (static_cast<StorageClass>(number.Value())) {
    case StorageClass::kWorkgroup:
    case StorageClass::kStorage:
      return number;
    default:
      return Number::invalid;
  }
}

std::string WorkgroupOrStorage::String(MatchState&) const {
  return "workgroup or storage";
}

/// EnumMatcher for 'match storage'
class Storage : public NumberMatcher {
 public:
  /// Checks whether the given number matches the enum matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param number the enum value as a Number
  /// @return true if the enum value matches the set
  Number Match(MatchState& state, Number number) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

Number Storage::Match(MatchState&, Number number) const {
  if (number.IsAny() || number.Value() == static_cast<uint32_t>(StorageClass::kStorage)) {
    return Number(static_cast<uint32_t>(StorageClass::kStorage));
  }
  return Number::invalid;
}

std::string Storage::String(MatchState&) const {
  return "storage";
}

/// EnumMatcher for 'match write'
class Write : public NumberMatcher {
 public:
  /// Checks whether the given number matches the enum matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param number the enum value as a Number
  /// @return true if the enum value matches the set
  Number Match(MatchState& state, Number number) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

Number Write::Match(MatchState&, Number number) const {
  if (number.IsAny() || number.Value() == static_cast<uint32_t>(Access::kWrite)) {
    return Number(static_cast<uint32_t>(Access::kWrite));
  }
  return Number::invalid;
}

std::string Write::String(MatchState&) const {
  return "write";
}

/// EnumMatcher for 'match read'
class Read : public NumberMatcher {
 public:
  /// Checks whether the given number matches the enum matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param number the enum value as a Number
  /// @return true if the enum value matches the set
  Number Match(MatchState& state, Number number) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

Number Read::Match(MatchState&, Number number) const {
  if (number.IsAny() || number.Value() == static_cast<uint32_t>(Access::kRead)) {
    return Number(static_cast<uint32_t>(Access::kRead));
  }
  return Number::invalid;
}

std::string Read::String(MatchState&) const {
  return "read";
}

/// EnumMatcher for 'match read_write'
class ReadWrite : public NumberMatcher {
 public:
  /// Checks whether the given number matches the enum matcher rules.
  /// Match may close open types and numbers in state.
  /// @param state the MatchState
  /// @param number the enum value as a Number
  /// @return true if the enum value matches the set
  Number Match(MatchState& state, Number number) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState& state) const override;
};

Number ReadWrite::Match(MatchState&, Number number) const {
  if (number.IsAny() || number.Value() == static_cast<uint32_t>(Access::kReadWrite)) {
    return Number(static_cast<uint32_t>(Access::kReadWrite));
  }
  return Number::invalid;
}

std::string ReadWrite::String(MatchState&) const {
  return "read_write";
}

/// Matchers holds type and number matchers
class Matchers {
 private:
  OpenTypeMatcher open_type_0_{0};
  OpenNumberMatcher open_number_0_{0};
  OpenNumberMatcher open_number_1_{1};
  OpenNumberMatcher open_number_2_{2};
  Bool Bool_;
  F32 F32_;
  I32 I32_;
  U32 U32_;
  Vec2 Vec2_;
  Vec3 Vec3_;
  Vec4 Vec4_;
  Vec Vec_;
  Mat Mat_;
  Ptr Ptr_;
  Atomic Atomic_;
  Array Array_;
  Sampler Sampler_;
  SamplerComparison SamplerComparison_;
  Texture1D Texture1D_;
  Texture2D Texture2D_;
  Texture2DArray Texture2DArray_;
  Texture3D Texture3D_;
  TextureCube TextureCube_;
  TextureCubeArray TextureCubeArray_;
  TextureMultisampled2D TextureMultisampled2D_;
  TextureDepth2D TextureDepth2D_;
  TextureDepth2DArray TextureDepth2DArray_;
  TextureDepthCube TextureDepthCube_;
  TextureDepthCubeArray TextureDepthCubeArray_;
  TextureStorage1D TextureStorage1D_;
  TextureStorage2D TextureStorage2D_;
  TextureStorage2DArray TextureStorage2DArray_;
  TextureStorage3D TextureStorage3D_;
  TextureExternal TextureExternal_;
  ModfResult ModfResult_;
  ModfResultVec ModfResultVec_;
  FrexpResult FrexpResult_;
  FrexpResultVec FrexpResultVec_;
  Fiu32 Fiu32_;
  Iu32 Iu32_;
  Scalar Scalar_;
  F32TexelFormat F32TexelFormat_;
  I32TexelFormat I32TexelFormat_;
  U32TexelFormat U32TexelFormat_;
  ReadOrWrite ReadOrWrite_;
  FunctionPrivateWorkgroup FunctionPrivateWorkgroup_;
  WorkgroupOrStorage WorkgroupOrStorage_;
  Storage Storage_;
  Write Write_;
  Read Read_;
  ReadWrite ReadWrite_;

 public:
  /// Constructor
  Matchers();
  /// Destructor
  ~Matchers();

  /// The open-types, types, and type matchers
  TypeMatcher const* const type[38] = {
    /* [0] */ &open_type_0_,
    /* [1] */ &Bool_,
    /* [2] */ &F32_,
    /* [3] */ &I32_,
    /* [4] */ &U32_,
    /* [5] */ &Vec2_,
    /* [6] */ &Vec3_,
    /* [7] */ &Vec4_,
    /* [8] */ &Vec_,
    /* [9] */ &Mat_,
    /* [10] */ &Ptr_,
    /* [11] */ &Atomic_,
    /* [12] */ &Array_,
    /* [13] */ &Sampler_,
    /* [14] */ &SamplerComparison_,
    /* [15] */ &Texture1D_,
    /* [16] */ &Texture2D_,
    /* [17] */ &Texture2DArray_,
    /* [18] */ &Texture3D_,
    /* [19] */ &TextureCube_,
    /* [20] */ &TextureCubeArray_,
    /* [21] */ &TextureMultisampled2D_,
    /* [22] */ &TextureDepth2D_,
    /* [23] */ &TextureDepth2DArray_,
    /* [24] */ &TextureDepthCube_,
    /* [25] */ &TextureDepthCubeArray_,
    /* [26] */ &TextureStorage1D_,
    /* [27] */ &TextureStorage2D_,
    /* [28] */ &TextureStorage2DArray_,
    /* [29] */ &TextureStorage3D_,
    /* [30] */ &TextureExternal_,
    /* [31] */ &ModfResult_,
    /* [32] */ &ModfResultVec_,
    /* [33] */ &FrexpResult_,
    /* [34] */ &FrexpResultVec_,
    /* [35] */ &Fiu32_,
    /* [36] */ &Iu32_,
    /* [37] */ &Scalar_,
  };

  /// The open-numbers, and number matchers
  NumberMatcher const* const number[13] = {
    /* [0] */ &open_number_0_,
    /* [1] */ &open_number_1_,
    /* [2] */ &open_number_2_,
    /* [3] */ &F32TexelFormat_,
    /* [4] */ &I32TexelFormat_,
    /* [5] */ &U32TexelFormat_,
    /* [6] */ &ReadOrWrite_,
    /* [7] */ &FunctionPrivateWorkgroup_,
    /* [8] */ &WorkgroupOrStorage_,
    /* [9] */ &Storage_,
    /* [10] */ &Write_,
    /* [11] */ &Read_,
    /* [12] */ &ReadWrite_,
  };
};

Matchers::Matchers() = default;
Matchers::~Matchers() = default;

constexpr MatcherIndex kMatcherIndices[] = {
  /* [0] */ 29,
  /* [1] */ 5,
  /* [2] */ 10,
  /* [3] */ 1,
  /* [4] */ 8,
  /* [5] */ 0,
  /* [6] */ 3,
  /* [7] */ 2,
  /* [8] */ 10,
  /* [9] */ 1,
  /* [10] */ 8,
  /* [11] */ 0,
  /* [12] */ 2,
  /* [13] */ 2,
  /* [14] */ 10,
  /* [15] */ 0,
  /* [16] */ 11,
  /* [17] */ 0,
  /* [18] */ 12,
  /* [19] */ 10,
  /* [20] */ 9,
  /* [21] */ 12,
  /* [22] */ 0,
  /* [23] */ 0,
  /* [24] */ 9,
  /* [25] */ 0,
  /* [26] */ 1,
  /* [27] */ 2,
  /* [28] */ 9,
  /* [29] */ 0,
  /* [30] */ 0,
  /* [31] */ 2,
  /* [32] */ 10,
  /* [33] */ 0,
  /* [34] */ 3,
  /* [35] */ 1,
  /* [36] */ 10,
  /* [37] */ 0,
  /* [38] */ 2,
  /* [39] */ 1,
  /* [40] */ 9,
  /* [41] */ 1,
  /* [42] */ 0,
  /* [43] */ 2,
  /* [44] */ 8,
  /* [45] */ 0,
  /* [46] */ 0,
  /* [47] */ 28,
  /* [48] */ 0,
  /* [49] */ 1,
  /* [50] */ 29,
  /* [51] */ 0,
  /* [52] */ 1,
  /* [53] */ 27,
  /* [54] */ 0,
  /* [55] */ 1,
  /* [56] */ 29,
  /* [57] */ 5,
  /* [58] */ 11,
  /* [59] */ 26,
  /* [60] */ 0,
  /* [61] */ 1,
  /* [62] */ 28,
  /* [63] */ 5,
  /* [64] */ 11,
  /* [65] */ 27,
  /* [66] */ 5,
  /* [67] */ 11,
  /* [68] */ 8,
  /* [69] */ 0,
  /* [70] */ 1,
  /* [71] */ 26,
  /* [72] */ 5,
  /* [73] */ 11,
  /* [74] */ 29,
  /* [75] */ 4,
  /* [76] */ 11,
  /* [77] */ 28,
  /* [78] */ 4,
  /* [79] */ 11,
  /* [80] */ 27,
  /* [81] */ 4,
  /* [82] */ 11,
  /* [83] */ 26,
  /* [84] */ 4,
  /* [85] */ 11,
  /* [86] */ 29,
  /* [87] */ 3,
  /* [88] */ 11,
  /* [89] */ 28,
  /* [90] */ 3,
  /* [91] */ 11,
  /* [92] */ 27,
  /* [93] */ 3,
  /* [94] */ 11,
  /* [95] */ 26,
  /* [96] */ 3,
  /* [97] */ 11,
  /* [98] */ 28,
  /* [99] */ 5,
  /* [100] */ 10,
  /* [101] */ 27,
  /* [102] */ 5,
  /* [103] */ 10,
  /* [104] */ 26,
  /* [105] */ 5,
  /* [106] */ 10,
  /* [107] */ 29,
  /* [108] */ 4,
  /* [109] */ 10,
  /* [110] */ 28,
  /* [111] */ 4,
  /* [112] */ 10,
  /* [113] */ 27,
  /* [114] */ 4,
  /* [115] */ 10,
  /* [116] */ 26,
  /* [117] */ 4,
  /* [118] */ 10,
  /* [119] */ 29,
  /* [120] */ 3,
  /* [121] */ 10,
  /* [122] */ 28,
  /* [123] */ 3,
  /* [124] */ 10,
  /* [125] */ 26,
  /* [126] */ 3,
  /* [127] */ 10,
  /* [128] */ 27,
  /* [129] */ 3,
  /* [130] */ 10,
  /* [131] */ 5,
  /* [132] */ 3,
  /* [133] */ 7,
  /* [134] */ 2,
  /* [135] */ 5,
  /* [136] */ 2,
  /* [137] */ 6,
  /* [138] */ 3,
  /* [139] */ 7,
  /* [140] */ 3,
  /* [141] */ 6,
  /* [142] */ 2,
  /* [143] */ 32,
  /* [144] */ 0,
  /* [145] */ 7,
  /* [146] */ 4,
  /* [147] */ 20,
  /* [148] */ 2,
  /* [149] */ 15,
  /* [150] */ 0,
  /* [151] */ 7,
  /* [152] */ 0,
  /* [153] */ 34,
  /* [154] */ 0,
  /* [155] */ 19,
  /* [156] */ 2,
  /* [157] */ 16,
  /* [158] */ 0,
  /* [159] */ 18,
  /* [160] */ 2,
  /* [161] */ 17,
  /* [162] */ 0,
  /* [163] */ 18,
  /* [164] */ 0,
  /* [165] */ 21,
  /* [166] */ 0,
  /* [167] */ 17,
  /* [168] */ 2,
  /* [169] */ 16,
  /* [170] */ 2,
  /* [171] */ 19,
  /* [172] */ 0,
  /* [173] */ 20,
  /* [174] */ 0,
  /* [175] */ 15,
  /* [176] */ 2,
  /* [177] */ 5,
  /* [178] */ 0,
  /* [179] */ 25,
  /* [180] */ 13,
  /* [181] */ 24,
  /* [182] */ 23,
  /* [183] */ 22,
  /* [184] */ 14,
  /* [185] */ 30,
  /* [186] */ 31,
  /* [187] */ 33,
};

// Assert that the MatcherIndex is big enough to index all the matchers, plus
// kNoMatcher.
static_assert(static_cast<int>(sizeof(kMatcherIndices) / sizeof(kMatcherIndices[0])) <
              static_cast<int>(std::numeric_limits<MatcherIndex>::max() - 1),
              "MatcherIndex is not large enough to index kMatcherIndices");

constexpr ParameterInfo kParameters[] = {
  {
    /* [0] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[167],
  },
  {
    /* [1] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[180],
  },
  {
    /* [2] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[135],
  },
  {
    /* [3] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [4] */
    /* usage */ ParameterUsage::kDdx,
    /* matcher indices */ &kMatcherIndices[135],
  },
  {
    /* [5] */
    /* usage */ ParameterUsage::kDdy,
    /* matcher indices */ &kMatcherIndices[135],
  },
  {
    /* [6] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [7] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[147],
  },
  {
    /* [8] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[180],
  },
  {
    /* [9] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [10] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [11] */
    /* usage */ ParameterUsage::kDdx,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [12] */
    /* usage */ ParameterUsage::kDdy,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [13] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[182],
  },
  {
    /* [14] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[180],
  },
  {
    /* [15] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[135],
  },
  {
    /* [16] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [17] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [18] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [19] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[167],
  },
  {
    /* [20] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[180],
  },
  {
    /* [21] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[135],
  },
  {
    /* [22] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [23] */
    /* usage */ ParameterUsage::kBias,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [24] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [25] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[167],
  },
  {
    /* [26] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[180],
  },
  {
    /* [27] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[135],
  },
  {
    /* [28] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [29] */
    /* usage */ ParameterUsage::kDdx,
    /* matcher indices */ &kMatcherIndices[135],
  },
  {
    /* [30] */
    /* usage */ ParameterUsage::kDdy,
    /* matcher indices */ &kMatcherIndices[135],
  },
  {
    /* [31] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[169],
  },
  {
    /* [32] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[180],
  },
  {
    /* [33] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[135],
  },
  {
    /* [34] */
    /* usage */ ParameterUsage::kDdx,
    /* matcher indices */ &kMatcherIndices[135],
  },
  {
    /* [35] */
    /* usage */ ParameterUsage::kDdy,
    /* matcher indices */ &kMatcherIndices[135],
  },
  {
    /* [36] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [37] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[159],
  },
  {
    /* [38] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[180],
  },
  {
    /* [39] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [40] */
    /* usage */ ParameterUsage::kDdx,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [41] */
    /* usage */ ParameterUsage::kDdy,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [42] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[137],
  },
  {
    /* [43] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[182],
  },
  {
    /* [44] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[184],
  },
  {
    /* [45] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[135],
  },
  {
    /* [46] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [47] */
    /* usage */ ParameterUsage::kDepthRef,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [48] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [49] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[167],
  },
  {
    /* [50] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[180],
  },
  {
    /* [51] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[135],
  },
  {
    /* [52] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [53] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [54] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [55] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[182],
  },
  {
    /* [56] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[184],
  },
  {
    /* [57] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[135],
  },
  {
    /* [58] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [59] */
    /* usage */ ParameterUsage::kDepthRef,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [60] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [61] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[159],
  },
  {
    /* [62] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[180],
  },
  {
    /* [63] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [64] */
    /* usage */ ParameterUsage::kDdx,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [65] */
    /* usage */ ParameterUsage::kDdy,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [66] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[147],
  },
  {
    /* [67] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[180],
  },
  {
    /* [68] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [69] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [70] */
    /* usage */ ParameterUsage::kBias,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [71] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[159],
  },
  {
    /* [72] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[180],
  },
  {
    /* [73] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [74] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [75] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[137],
  },
  {
    /* [76] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[147],
  },
  {
    /* [77] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[180],
  },
  {
    /* [78] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [79] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [80] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [81] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[167],
  },
  {
    /* [82] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[180],
  },
  {
    /* [83] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[135],
  },
  {
    /* [84] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [85] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [86] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[159],
  },
  {
    /* [87] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[180],
  },
  {
    /* [88] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [89] */
    /* usage */ ParameterUsage::kBias,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [90] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[137],
  },
  {
    /* [91] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[183],
  },
  {
    /* [92] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[184],
  },
  {
    /* [93] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[135],
  },
  {
    /* [94] */
    /* usage */ ParameterUsage::kDepthRef,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [95] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [96] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[182],
  },
  {
    /* [97] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[184],
  },
  {
    /* [98] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[135],
  },
  {
    /* [99] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [100] */
    /* usage */ ParameterUsage::kDepthRef,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [101] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[169],
  },
  {
    /* [102] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[180],
  },
  {
    /* [103] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[135],
  },
  {
    /* [104] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [105] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [106] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[182],
  },
  {
    /* [107] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[180],
  },
  {
    /* [108] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[135],
  },
  {
    /* [109] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [110] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [111] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[179],
  },
  {
    /* [112] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[184],
  },
  {
    /* [113] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [114] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [115] */
    /* usage */ ParameterUsage::kDepthRef,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [116] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[167],
  },
  {
    /* [117] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[180],
  },
  {
    /* [118] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[135],
  },
  {
    /* [119] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [120] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [121] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[183],
  },
  {
    /* [122] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[180],
  },
  {
    /* [123] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[135],
  },
  {
    /* [124] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [125] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [126] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[182],
  },
  {
    /* [127] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[180],
  },
  {
    /* [128] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[135],
  },
  {
    /* [129] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [130] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [131] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[182],
  },
  {
    /* [132] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[184],
  },
  {
    /* [133] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[135],
  },
  {
    /* [134] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [135] */
    /* usage */ ParameterUsage::kDepthRef,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [136] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[179],
  },
  {
    /* [137] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[184],
  },
  {
    /* [138] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [139] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [140] */
    /* usage */ ParameterUsage::kDepthRef,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [141] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[169],
  },
  {
    /* [142] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[180],
  },
  {
    /* [143] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[135],
  },
  {
    /* [144] */
    /* usage */ ParameterUsage::kBias,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [145] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [146] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[169],
  },
  {
    /* [147] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[180],
  },
  {
    /* [148] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[135],
  },
  {
    /* [149] */
    /* usage */ ParameterUsage::kDdx,
    /* matcher indices */ &kMatcherIndices[135],
  },
  {
    /* [150] */
    /* usage */ ParameterUsage::kDdy,
    /* matcher indices */ &kMatcherIndices[135],
  },
  {
    /* [151] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[155],
  },
  {
    /* [152] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[180],
  },
  {
    /* [153] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [154] */
    /* usage */ ParameterUsage::kDdx,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [155] */
    /* usage */ ParameterUsage::kDdy,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [156] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[167],
  },
  {
    /* [157] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[180],
  },
  {
    /* [158] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[135],
  },
  {
    /* [159] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [160] */
    /* usage */ ParameterUsage::kBias,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [161] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[183],
  },
  {
    /* [162] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[184],
  },
  {
    /* [163] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[135],
  },
  {
    /* [164] */
    /* usage */ ParameterUsage::kDepthRef,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [165] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [166] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[179],
  },
  {
    /* [167] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[180],
  },
  {
    /* [168] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [169] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [170] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [171] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[183],
  },
  {
    /* [172] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[180],
  },
  {
    /* [173] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[135],
  },
  {
    /* [174] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [175] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[181],
  },
  {
    /* [176] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[180],
  },
  {
    /* [177] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [178] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [179] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[182],
  },
  {
    /* [180] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [181] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [182] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [183] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[169],
  },
  {
    /* [184] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[180],
  },
  {
    /* [185] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[135],
  },
  {
    /* [186] */
    /* usage */ ParameterUsage::kBias,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [187] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[179],
  },
  {
    /* [188] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[180],
  },
  {
    /* [189] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [190] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [191] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[169],
  },
  {
    /* [192] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[180],
  },
  {
    /* [193] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[135],
  },
  {
    /* [194] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [195] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[98],
  },
  {
    /* [196] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [197] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [198] */
    /* usage */ ParameterUsage::kValue,
    /* matcher indices */ &kMatcherIndices[145],
  },
  {
    /* [199] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[181],
  },
  {
    /* [200] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[184],
  },
  {
    /* [201] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [202] */
    /* usage */ ParameterUsage::kDepthRef,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [203] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[110],
  },
  {
    /* [204] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [205] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [206] */
    /* usage */ ParameterUsage::kValue,
    /* matcher indices */ &kMatcherIndices[139],
  },
  {
    /* [207] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[182],
  },
  {
    /* [208] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[180],
  },
  {
    /* [209] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[135],
  },
  {
    /* [210] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [211] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[161],
  },
  {
    /* [212] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [213] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [214] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [215] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[159],
  },
  {
    /* [216] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[180],
  },
  {
    /* [217] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [218] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [219] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[155],
  },
  {
    /* [220] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[180],
  },
  {
    /* [221] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [222] */
    /* usage */ ParameterUsage::kBias,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [223] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[122],
  },
  {
    /* [224] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [225] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [226] */
    /* usage */ ParameterUsage::kValue,
    /* matcher indices */ &kMatcherIndices[133],
  },
  {
    /* [227] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[155],
  },
  {
    /* [228] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[180],
  },
  {
    /* [229] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [230] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [231] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[183],
  },
  {
    /* [232] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[184],
  },
  {
    /* [233] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[135],
  },
  {
    /* [234] */
    /* usage */ ParameterUsage::kDepthRef,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [235] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[159],
  },
  {
    /* [236] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[180],
  },
  {
    /* [237] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [238] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[137],
  },
  {
    /* [239] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[167],
  },
  {
    /* [240] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[180],
  },
  {
    /* [241] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[135],
  },
  {
    /* [242] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [243] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[169],
  },
  {
    /* [244] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[180],
  },
  {
    /* [245] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[135],
  },
  {
    /* [246] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [247] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[159],
  },
  {
    /* [248] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[180],
  },
  {
    /* [249] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [250] */
    /* usage */ ParameterUsage::kBias,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [251] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[183],
  },
  {
    /* [252] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[184],
  },
  {
    /* [253] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[135],
  },
  {
    /* [254] */
    /* usage */ ParameterUsage::kDepthRef,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [255] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[181],
  },
  {
    /* [256] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[184],
  },
  {
    /* [257] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [258] */
    /* usage */ ParameterUsage::kDepthRef,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [259] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[183],
  },
  {
    /* [260] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[180],
  },
  {
    /* [261] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[135],
  },
  {
    /* [262] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [263] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[147],
  },
  {
    /* [264] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[180],
  },
  {
    /* [265] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [266] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [267] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [268] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [269] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [270] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[125],
  },
  {
    /* [271] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [272] */
    /* usage */ ParameterUsage::kValue,
    /* matcher indices */ &kMatcherIndices[133],
  },
  {
    /* [273] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [274] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [275] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [276] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [277] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [278] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [279] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[128],
  },
  {
    /* [280] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [281] */
    /* usage */ ParameterUsage::kValue,
    /* matcher indices */ &kMatcherIndices[133],
  },
  {
    /* [282] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [283] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [284] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [285] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[119],
  },
  {
    /* [286] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[137],
  },
  {
    /* [287] */
    /* usage */ ParameterUsage::kValue,
    /* matcher indices */ &kMatcherIndices[133],
  },
  {
    /* [288] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[116],
  },
  {
    /* [289] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [290] */
    /* usage */ ParameterUsage::kValue,
    /* matcher indices */ &kMatcherIndices[139],
  },
  {
    /* [291] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[113],
  },
  {
    /* [292] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [293] */
    /* usage */ ParameterUsage::kValue,
    /* matcher indices */ &kMatcherIndices[139],
  },
  {
    /* [294] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[104],
  },
  {
    /* [295] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [296] */
    /* usage */ ParameterUsage::kValue,
    /* matcher indices */ &kMatcherIndices[145],
  },
  {
    /* [297] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[101],
  },
  {
    /* [298] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [299] */
    /* usage */ ParameterUsage::kValue,
    /* matcher indices */ &kMatcherIndices[145],
  },
  {
    /* [300] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[0],
  },
  {
    /* [301] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[137],
  },
  {
    /* [302] */
    /* usage */ ParameterUsage::kValue,
    /* matcher indices */ &kMatcherIndices[145],
  },
  {
    /* [303] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[149],
  },
  {
    /* [304] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [305] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [306] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[157],
  },
  {
    /* [307] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [308] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [309] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[163],
  },
  {
    /* [310] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[137],
  },
  {
    /* [311] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [312] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[165],
  },
  {
    /* [313] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [314] */
    /* usage */ ParameterUsage::kSampleIndex,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [315] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[183],
  },
  {
    /* [316] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [317] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [318] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[5],
  },
  {
    /* [319] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[5],
  },
  {
    /* [320] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[3],
  },
  {
    /* [321] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[185],
  },
  {
    /* [322] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[180],
  },
  {
    /* [323] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[135],
  },
  {
    /* [324] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [325] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [326] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [327] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[89],
  },
  {
    /* [328] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [329] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [330] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[181],
  },
  {
    /* [331] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[180],
  },
  {
    /* [332] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [333] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[77],
  },
  {
    /* [334] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [335] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [336] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[44],
  },
  {
    /* [337] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[44],
  },
  {
    /* [338] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[44],
  },
  {
    /* [339] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[5],
  },
  {
    /* [340] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[5],
  },
  {
    /* [341] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[5],
  },
  {
    /* [342] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[183],
  },
  {
    /* [343] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[180],
  },
  {
    /* [344] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[135],
  },
  {
    /* [345] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[155],
  },
  {
    /* [346] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[180],
  },
  {
    /* [347] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [348] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[62],
  },
  {
    /* [349] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [350] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [351] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [352] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [353] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [354] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [355] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [356] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [357] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [358] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [359] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [360] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [361] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [362] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [363] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[159],
  },
  {
    /* [364] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[180],
  },
  {
    /* [365] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [366] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[14],
  },
  {
    /* [367] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[5],
  },
  {
    /* [368] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[5],
  },
  {
    /* [369] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[169],
  },
  {
    /* [370] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[180],
  },
  {
    /* [371] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[135],
  },
  {
    /* [372] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[175],
  },
  {
    /* [373] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[180],
  },
  {
    /* [374] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [375] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[107],
  },
  {
    /* [376] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[137],
  },
  {
    /* [377] */
    /* usage */ ParameterUsage::kValue,
    /* matcher indices */ &kMatcherIndices[139],
  },
  {
    /* [378] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[44],
  },
  {
    /* [379] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[44],
  },
  {
    /* [380] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[3],
  },
  {
    /* [381] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[44],
  },
  {
    /* [382] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[44],
  },
  {
    /* [383] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[68],
  },
  {
    /* [384] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [385] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[5],
  },
  {
    /* [386] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [387] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[8],
  },
  {
    /* [388] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [389] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [390] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [391] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [392] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [393] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [394] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [395] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[36],
  },
  {
    /* [396] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[44],
  },
  {
    /* [397] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[44],
  },
  {
    /* [398] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[5],
  },
  {
    /* [399] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[5],
  },
  {
    /* [400] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[44],
  },
  {
    /* [401] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[44],
  },
  {
    /* [402] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[5],
  },
  {
    /* [403] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[5],
  },
  {
    /* [404] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [405] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[44],
  },
  {
    /* [406] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [407] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[2],
  },
  {
    /* [408] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[171],
  },
  {
    /* [409] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [410] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [411] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[32],
  },
  {
    /* [412] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[173],
  },
  {
    /* [413] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [414] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [415] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [416] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [417] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [418] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [419] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [420] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[95],
  },
  {
    /* [421] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [422] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [423] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[141],
  },
  {
    /* [424] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[92],
  },
  {
    /* [425] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [426] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[86],
  },
  {
    /* [427] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[137],
  },
  {
    /* [428] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[83],
  },
  {
    /* [429] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [430] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [431] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [432] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [433] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [434] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[14],
  },
  {
    /* [435] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[5],
  },
  {
    /* [436] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[74],
  },
  {
    /* [437] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[137],
  },
  {
    /* [438] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[71],
  },
  {
    /* [439] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [440] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [441] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [442] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [443] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [444] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[65],
  },
  {
    /* [445] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [446] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[56],
  },
  {
    /* [447] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[137],
  },
  {
    /* [448] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[185],
  },
  {
    /* [449] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [450] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[14],
  },
  {
    /* [451] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[5],
  },
  {
    /* [452] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[14],
  },
  {
    /* [453] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[5],
  },
  {
    /* [454] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[14],
  },
  {
    /* [455] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[5],
  },
  {
    /* [456] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[14],
  },
  {
    /* [457] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[5],
  },
  {
    /* [458] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[14],
  },
  {
    /* [459] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[5],
  },
  {
    /* [460] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[14],
  },
  {
    /* [461] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[5],
  },
  {
    /* [462] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[179],
  },
  {
    /* [463] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [464] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[149],
  },
  {
    /* [465] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [466] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[181],
  },
  {
    /* [467] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [468] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[157],
  },
  {
    /* [469] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [470] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[14],
  },
  {
    /* [471] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[5],
  },
  {
    /* [472] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[161],
  },
  {
    /* [473] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [474] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[182],
  },
  {
    /* [475] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [476] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[163],
  },
  {
    /* [477] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [478] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[183],
  },
  {
    /* [479] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [480] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[80],
  },
  {
    /* [481] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [482] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[161],
  },
  {
    /* [483] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[173],
  },
  {
    /* [484] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[165],
  },
  {
    /* [485] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[183],
  },
  {
    /* [486] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[171],
  },
  {
    /* [487] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[182],
  },
  {
    /* [488] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[163],
  },
  {
    /* [489] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[181],
  },
  {
    /* [490] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[157],
  },
  {
    /* [491] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[179],
  },
  {
    /* [492] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[149],
  },
  {
    /* [493] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[59],
  },
  {
    /* [494] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[53],
  },
  {
    /* [495] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[47],
  },
  {
    /* [496] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[50],
  },
  {
    /* [497] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[185],
  },
  {
    /* [498] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[161],
  },
  {
    /* [499] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[173],
  },
  {
    /* [500] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[182],
  },
  {
    /* [501] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[179],
  },
  {
    /* [502] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[47],
  },
  {
    /* [503] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[149],
  },
  {
    /* [504] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[157],
  },
  {
    /* [505] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[161],
  },
  {
    /* [506] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[163],
  },
  {
    /* [507] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[171],
  },
  {
    /* [508] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[173],
  },
  {
    /* [509] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[183],
  },
  {
    /* [510] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[182],
  },
  {
    /* [511] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[181],
  },
  {
    /* [512] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[179],
  },
  {
    /* [513] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[165],
  },
  {
    /* [514] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[75],
  },
  {
    /* [515] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[75],
  },
  {
    /* [516] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[75],
  },
  {
    /* [517] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[75],
  },
  {
    /* [518] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[75],
  },
  {
    /* [519] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [520] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [521] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[24],
  },
  {
    /* [522] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [523] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [524] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [525] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [526] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [527] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [528] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [529] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [530] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [531] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [532] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [533] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [534] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [535] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [536] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[44],
  },
  {
    /* [537] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[5],
  },
  {
    /* [538] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[133],
  },
  {
    /* [539] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[133],
  },
  {
    /* [540] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[135],
  },
  {
    /* [541] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[135],
  },
  {
    /* [542] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[135],
  },
  {
    /* [543] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [544] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [545] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [546] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [547] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [548] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [549] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [550] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [551] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [552] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [553] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [554] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [555] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [556] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [557] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [558] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [559] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [560] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [561] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [562] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[5],
  },
  {
    /* [563] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [564] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [565] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [566] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [567] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [568] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [569] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [570] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [571] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [572] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [573] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [574] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [575] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [576] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [577] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [578] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [579] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [580] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [581] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [582] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [583] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [584] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [585] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [586] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [587] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [588] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [589] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [590] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [591] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[28],
  },
  {
    /* [592] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[44],
  },
  {
    /* [593] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[5],
  },
  {
    /* [594] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [595] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [596] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [597] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [598] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [599] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [600] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [601] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [602] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [603] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [604] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[14],
  },
  {
    /* [605] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[19],
  },
  {
    /* [606] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[68],
  },
  {
    /* [607] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[68],
  },
  {
    /* [608] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [609] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[7],
  },
  {
    /* [610] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[44],
  },
  {
    /* [611] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[5],
  },
};

constexpr OpenTypeInfo kOpenTypes[] = {
  {
    /* [0] */
    /* name */ "T",
    /* matcher index */ kNoMatcher,
  },
  {
    /* [1] */
    /* name */ "T",
    /* matcher index */ 35,
  },
  {
    /* [2] */
    /* name */ "T",
    /* matcher index */ 36,
  },
  {
    /* [3] */
    /* name */ "T",
    /* matcher index */ 37,
  },
};

constexpr OpenNumberInfo kOpenNumbers[] = {
  {
    /* [0] */
    /* name */ "M",
    /* matcher index */ kNoMatcher,
  },
  {
    /* [1] */
    /* name */ "N",
    /* matcher index */ kNoMatcher,
  },
  {
    /* [2] */
    /* name */ "S",
    /* matcher index */ 7,
  },
  {
    /* [3] */
    /* name */ "A",
    /* matcher index */ kNoMatcher,
  },
  {
    /* [4] */
    /* name */ "F",
    /* matcher index */ kNoMatcher,
  },
  {
    /* [5] */
    /* name */ "A",
    /* matcher index */ 6,
  },
  {
    /* [6] */
    /* name */ "S",
    /* matcher index */ 8,
  },
};

constexpr OverloadInfo kOverloads[] = {
  {
    /* [0] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[492],
    /* return matcher indices */ &kMatcherIndices[6],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [1] */
    /* num parameters */ 2,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[464],
    /* return matcher indices */ &kMatcherIndices[6],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [2] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[490],
    /* return matcher indices */ &kMatcherIndices[131],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [3] */
    /* num parameters */ 2,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[468],
    /* return matcher indices */ &kMatcherIndices[131],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [4] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[482],
    /* return matcher indices */ &kMatcherIndices[131],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [5] */
    /* num parameters */ 2,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[472],
    /* return matcher indices */ &kMatcherIndices[131],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [6] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[488],
    /* return matcher indices */ &kMatcherIndices[137],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [7] */
    /* num parameters */ 2,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[476],
    /* return matcher indices */ &kMatcherIndices[137],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [8] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[486],
    /* return matcher indices */ &kMatcherIndices[131],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [9] */
    /* num parameters */ 2,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[408],
    /* return matcher indices */ &kMatcherIndices[131],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [10] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[483],
    /* return matcher indices */ &kMatcherIndices[131],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [11] */
    /* num parameters */ 2,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[412],
    /* return matcher indices */ &kMatcherIndices[131],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [12] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[484],
    /* return matcher indices */ &kMatcherIndices[131],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [13] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[485],
    /* return matcher indices */ &kMatcherIndices[131],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [14] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[478],
    /* return matcher indices */ &kMatcherIndices[131],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [15] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[487],
    /* return matcher indices */ &kMatcherIndices[131],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [16] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[474],
    /* return matcher indices */ &kMatcherIndices[131],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [17] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[489],
    /* return matcher indices */ &kMatcherIndices[131],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [18] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[466],
    /* return matcher indices */ &kMatcherIndices[131],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [19] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[491],
    /* return matcher indices */ &kMatcherIndices[131],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [20] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[462],
    /* return matcher indices */ &kMatcherIndices[131],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [21] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 2,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[4],
    /* parameters */ &kParameters[493],
    /* return matcher indices */ &kMatcherIndices[6],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [22] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 2,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[4],
    /* parameters */ &kParameters[494],
    /* return matcher indices */ &kMatcherIndices[131],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [23] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 2,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[4],
    /* parameters */ &kParameters[495],
    /* return matcher indices */ &kMatcherIndices[131],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [24] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 2,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[4],
    /* parameters */ &kParameters[496],
    /* return matcher indices */ &kMatcherIndices[137],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [25] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[497],
    /* return matcher indices */ &kMatcherIndices[131],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [26] */
    /* num parameters */ 3,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[303],
    /* return matcher indices */ &kMatcherIndices[151],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [27] */
    /* num parameters */ 3,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[306],
    /* return matcher indices */ &kMatcherIndices[151],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [28] */
    /* num parameters */ 4,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[211],
    /* return matcher indices */ &kMatcherIndices[151],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [29] */
    /* num parameters */ 3,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[309],
    /* return matcher indices */ &kMatcherIndices[151],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [30] */
    /* num parameters */ 3,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[312],
    /* return matcher indices */ &kMatcherIndices[151],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [31] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[315],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [32] */
    /* num parameters */ 4,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[179],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [33] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[420],
    /* return matcher indices */ &kMatcherIndices[133],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ true,
  },
  {
    /* [34] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[424],
    /* return matcher indices */ &kMatcherIndices[133],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ true,
  },
  {
    /* [35] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[327],
    /* return matcher indices */ &kMatcherIndices[133],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ true,
  },
  {
    /* [36] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[426],
    /* return matcher indices */ &kMatcherIndices[133],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ true,
  },
  {
    /* [37] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[428],
    /* return matcher indices */ &kMatcherIndices[139],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ true,
  },
  {
    /* [38] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[480],
    /* return matcher indices */ &kMatcherIndices[139],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ true,
  },
  {
    /* [39] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[333],
    /* return matcher indices */ &kMatcherIndices[139],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ true,
  },
  {
    /* [40] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[436],
    /* return matcher indices */ &kMatcherIndices[139],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ true,
  },
  {
    /* [41] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[438],
    /* return matcher indices */ &kMatcherIndices[145],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ true,
  },
  {
    /* [42] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[444],
    /* return matcher indices */ &kMatcherIndices[145],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ true,
  },
  {
    /* [43] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[348],
    /* return matcher indices */ &kMatcherIndices[145],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ true,
  },
  {
    /* [44] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[446],
    /* return matcher indices */ &kMatcherIndices[145],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ true,
  },
  {
    /* [45] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[448],
    /* return matcher indices */ &kMatcherIndices[133],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [46] */
    /* num parameters */ 4,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[191],
    /* return matcher indices */ &kMatcherIndices[133],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [47] */
    /* num parameters */ 5,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[101],
    /* return matcher indices */ &kMatcherIndices[133],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [48] */
    /* num parameters */ 5,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[81],
    /* return matcher indices */ &kMatcherIndices[133],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [49] */
    /* num parameters */ 6,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[49],
    /* return matcher indices */ &kMatcherIndices[133],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [50] */
    /* num parameters */ 4,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[215],
    /* return matcher indices */ &kMatcherIndices[133],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [51] */
    /* num parameters */ 5,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[71],
    /* return matcher indices */ &kMatcherIndices[133],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [52] */
    /* num parameters */ 4,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[227],
    /* return matcher indices */ &kMatcherIndices[133],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [53] */
    /* num parameters */ 5,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[76],
    /* return matcher indices */ &kMatcherIndices[133],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [54] */
    /* num parameters */ 4,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[259],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [55] */
    /* num parameters */ 5,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[121],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [56] */
    /* num parameters */ 5,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[126],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [57] */
    /* num parameters */ 6,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[13],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [58] */
    /* num parameters */ 4,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[175],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [59] */
    /* num parameters */ 5,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[166],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [60] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[321],
    /* return matcher indices */ &kMatcherIndices[133],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [61] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[372],
    /* return matcher indices */ &kMatcherIndices[133],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [62] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[369],
    /* return matcher indices */ &kMatcherIndices[133],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [63] */
    /* num parameters */ 4,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[243],
    /* return matcher indices */ &kMatcherIndices[133],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [64] */
    /* num parameters */ 4,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[239],
    /* return matcher indices */ &kMatcherIndices[133],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [65] */
    /* num parameters */ 5,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[116],
    /* return matcher indices */ &kMatcherIndices[133],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [66] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[363],
    /* return matcher indices */ &kMatcherIndices[133],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [67] */
    /* num parameters */ 4,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[235],
    /* return matcher indices */ &kMatcherIndices[133],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [68] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[345],
    /* return matcher indices */ &kMatcherIndices[133],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [69] */
    /* num parameters */ 4,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[263],
    /* return matcher indices */ &kMatcherIndices[133],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [70] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[342],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [71] */
    /* num parameters */ 4,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[171],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [72] */
    /* num parameters */ 4,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[207],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [73] */
    /* num parameters */ 5,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[106],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [74] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[330],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [75] */
    /* num parameters */ 4,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[187],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [76] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[270],
    /* return matcher indices */ nullptr,
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [77] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[279],
    /* return matcher indices */ nullptr,
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [78] */
    /* num parameters */ 4,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[223],
    /* return matcher indices */ nullptr,
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [79] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[285],
    /* return matcher indices */ nullptr,
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [80] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[288],
    /* return matcher indices */ nullptr,
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [81] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[291],
    /* return matcher indices */ nullptr,
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [82] */
    /* num parameters */ 4,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[203],
    /* return matcher indices */ nullptr,
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [83] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[375],
    /* return matcher indices */ nullptr,
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [84] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[294],
    /* return matcher indices */ nullptr,
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [85] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[297],
    /* return matcher indices */ nullptr,
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [86] */
    /* num parameters */ 4,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[195],
    /* return matcher indices */ nullptr,
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [87] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[300],
    /* return matcher indices */ nullptr,
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [88] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[503],
    /* return matcher indices */ &kMatcherIndices[6],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [89] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[504],
    /* return matcher indices */ &kMatcherIndices[6],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [90] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[505],
    /* return matcher indices */ &kMatcherIndices[6],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [91] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[506],
    /* return matcher indices */ &kMatcherIndices[6],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [92] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[507],
    /* return matcher indices */ &kMatcherIndices[6],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [93] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[508],
    /* return matcher indices */ &kMatcherIndices[6],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [94] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[509],
    /* return matcher indices */ &kMatcherIndices[6],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [95] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[510],
    /* return matcher indices */ &kMatcherIndices[6],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [96] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[511],
    /* return matcher indices */ &kMatcherIndices[6],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [97] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[512],
    /* return matcher indices */ &kMatcherIndices[6],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [98] */
    /* num parameters */ 5,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[146],
    /* return matcher indices */ &kMatcherIndices[133],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [99] */
    /* num parameters */ 6,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[31],
    /* return matcher indices */ &kMatcherIndices[133],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [100] */
    /* num parameters */ 6,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[25],
    /* return matcher indices */ &kMatcherIndices[133],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [101] */
    /* num parameters */ 7,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[0],
    /* return matcher indices */ &kMatcherIndices[133],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [102] */
    /* num parameters */ 5,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[61],
    /* return matcher indices */ &kMatcherIndices[133],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [103] */
    /* num parameters */ 6,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[37],
    /* return matcher indices */ &kMatcherIndices[133],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [104] */
    /* num parameters */ 5,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[151],
    /* return matcher indices */ &kMatcherIndices[133],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [105] */
    /* num parameters */ 6,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[7],
    /* return matcher indices */ &kMatcherIndices[133],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [106] */
    /* num parameters */ 4,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[183],
    /* return matcher indices */ &kMatcherIndices[133],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [107] */
    /* num parameters */ 5,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[141],
    /* return matcher indices */ &kMatcherIndices[133],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [108] */
    /* num parameters */ 5,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[156],
    /* return matcher indices */ &kMatcherIndices[133],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [109] */
    /* num parameters */ 6,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[19],
    /* return matcher indices */ &kMatcherIndices[133],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [110] */
    /* num parameters */ 4,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[247],
    /* return matcher indices */ &kMatcherIndices[133],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [111] */
    /* num parameters */ 5,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[86],
    /* return matcher indices */ &kMatcherIndices[133],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [112] */
    /* num parameters */ 4,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[219],
    /* return matcher indices */ &kMatcherIndices[133],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [113] */
    /* num parameters */ 5,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[66],
    /* return matcher indices */ &kMatcherIndices[133],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [114] */
    /* num parameters */ 4,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[251],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [115] */
    /* num parameters */ 5,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[161],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [116] */
    /* num parameters */ 5,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[96],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [117] */
    /* num parameters */ 6,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[43],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [118] */
    /* num parameters */ 4,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[199],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [119] */
    /* num parameters */ 5,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[111],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [120] */
    /* num parameters */ 4,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[231],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [121] */
    /* num parameters */ 5,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[91],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [122] */
    /* num parameters */ 5,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[131],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [123] */
    /* num parameters */ 6,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[55],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [124] */
    /* num parameters */ 4,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[255],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [125] */
    /* num parameters */ 5,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[136],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [126] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[498],
    /* return matcher indices */ &kMatcherIndices[6],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [127] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[499],
    /* return matcher indices */ &kMatcherIndices[6],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [128] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[500],
    /* return matcher indices */ &kMatcherIndices[6],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [129] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[501],
    /* return matcher indices */ &kMatcherIndices[6],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [130] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 2,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[4],
    /* parameters */ &kParameters[502],
    /* return matcher indices */ &kMatcherIndices[6],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [131] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 2,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[2],
    /* parameters */ &kParameters[394],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ true,
  },
  {
    /* [132] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 3,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[386],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ true,
  },
  {
    /* [133] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[545],
    /* return matcher indices */ &kMatcherIndices[186],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [134] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[544],
    /* return matcher indices */ &kMatcherIndices[143],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [135] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 2,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[2],
    /* parameters */ &kParameters[410],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ true,
  },
  {
    /* [136] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 3,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[406],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ true,
  },
  {
    /* [137] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[570],
    /* return matcher indices */ &kMatcherIndices[187],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [138] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[569],
    /* return matcher indices */ &kMatcherIndices[153],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [139] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[351],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [140] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[354],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [141] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[357],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [142] */
    /* num parameters */ 3,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[3],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[318],
    /* return matcher indices */ &kMatcherIndices[5],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [143] */
    /* num parameters */ 3,
    /* num open types */ 1,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[3],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[378],
    /* return matcher indices */ &kMatcherIndices[44],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [144] */
    /* num parameters */ 3,
    /* num open types */ 1,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[3],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[381],
    /* return matcher indices */ &kMatcherIndices[44],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [145] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[442],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [146] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[440],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [147] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[418],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [148] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[416],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [149] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[590],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [150] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[589],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [151] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[588],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [152] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[587],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [153] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[586],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [154] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[585],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [155] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[584],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [156] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[583],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [157] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[582],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [158] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[581],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [159] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[580],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [160] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[579],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [161] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[578],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [162] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[577],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [163] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[576],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [164] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[575],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [165] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[267],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [166] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[324],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [167] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[574],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [168] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[573],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [169] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[273],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [170] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[276],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [171] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[572],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [172] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[571],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [173] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[2],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[593],
    /* return matcher indices */ &kMatcherIndices[5],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [174] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[2],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[592],
    /* return matcher indices */ &kMatcherIndices[44],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [175] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[568],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [176] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[567],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [177] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[566],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [178] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[565],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [179] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[564],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [180] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[563],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [181] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[595],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [182] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[594],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [183] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[561],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [184] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[560],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [185] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[559],
    /* return matcher indices */ &kMatcherIndices[3],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [186] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[558],
    /* return matcher indices */ &kMatcherIndices[68],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [187] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[557],
    /* return matcher indices */ &kMatcherIndices[3],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [188] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[556],
    /* return matcher indices */ &kMatcherIndices[68],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [189] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[555],
    /* return matcher indices */ &kMatcherIndices[3],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [190] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[554],
    /* return matcher indices */ &kMatcherIndices[68],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [191] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[553],
    /* return matcher indices */ &kMatcherIndices[3],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [192] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[552],
    /* return matcher indices */ &kMatcherIndices[68],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [193] */
    /* num parameters */ 2,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[2],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[384],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [194] */
    /* num parameters */ 2,
    /* num open types */ 1,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[2],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[404],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [195] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[551],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [196] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[550],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [197] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[549],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [198] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[548],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [199] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[547],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [200] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[546],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [201] */
    /* num parameters */ 2,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[402],
    /* return matcher indices */ &kMatcherIndices[5],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [202] */
    /* num parameters */ 2,
    /* num open types */ 1,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[400],
    /* return matcher indices */ &kMatcherIndices[44],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [203] */
    /* num parameters */ 2,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[398],
    /* return matcher indices */ &kMatcherIndices[5],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [204] */
    /* num parameters */ 2,
    /* num open types */ 1,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[396],
    /* return matcher indices */ &kMatcherIndices[44],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [205] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[597],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [206] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[596],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [207] */
    /* num parameters */ 3,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[339],
    /* return matcher indices */ &kMatcherIndices[5],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [208] */
    /* num parameters */ 3,
    /* num open types */ 1,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[336],
    /* return matcher indices */ &kMatcherIndices[44],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [209] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[527],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [210] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[526],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [211] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[599],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [212] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[598],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [213] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[529],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [214] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[528],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [215] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[601],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [216] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[600],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [217] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[520],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [218] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[519],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [219] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[523],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [220] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[522],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [221] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[388],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [222] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[390],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [223] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[603],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [224] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[602],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [225] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[430],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [226] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[432],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [227] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[2],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[537],
    /* return matcher indices */ &kMatcherIndices[5],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [228] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[2],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[536],
    /* return matcher indices */ &kMatcherIndices[44],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [229] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[535],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [230] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[534],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [231] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[609],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [232] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[608],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [233] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[533],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [234] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[532],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [235] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[531],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [236] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[530],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [237] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[525],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [238] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[524],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [239] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[611],
    /* return matcher indices */ &kMatcherIndices[5],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [240] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[610],
    /* return matcher indices */ &kMatcherIndices[44],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [241] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[541],
    /* return matcher indices */ &kMatcherIndices[75],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [242] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[360],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [243] */
    /* num parameters */ 0,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[612],
    /* return matcher indices */ nullptr,
    /* supported_stages */ PipelineStageSet(PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [244] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[392],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [245] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[538],
    /* return matcher indices */ &kMatcherIndices[75],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [246] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 2,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[0],
    /* parameters */ &kParameters[521],
    /* return matcher indices */ &kMatcherIndices[40],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [247] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[539],
    /* return matcher indices */ &kMatcherIndices[75],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [248] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[518],
    /* return matcher indices */ &kMatcherIndices[135],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [249] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[517],
    /* return matcher indices */ &kMatcherIndices[135],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [250] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[516],
    /* return matcher indices */ &kMatcherIndices[135],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [251] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[515],
    /* return matcher indices */ &kMatcherIndices[133],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [252] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[514],
    /* return matcher indices */ &kMatcherIndices[133],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [253] */
    /* num parameters */ 0,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[612],
    /* return matcher indices */ nullptr,
    /* supported_stages */ PipelineStageSet(PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [254] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[540],
    /* return matcher indices */ &kMatcherIndices[75],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [255] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[542],
    /* return matcher indices */ &kMatcherIndices[75],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [256] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[543],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [257] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[513],
    /* return matcher indices */ &kMatcherIndices[6],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [258] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[0],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[562],
    /* return matcher indices */ nullptr,
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [259] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[282],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [260] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[414],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [261] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[591],
    /* return matcher indices */ &kMatcherIndices[7],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [262] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[7],
    /* parameters */ &kParameters[422],
    /* return matcher indices */ &kMatcherIndices[141],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [263] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[0],
    /* open numbers */ &kOpenNumbers[3],
    /* parameters */ &kParameters[605],
    /* return matcher indices */ &kMatcherIndices[75],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [264] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[606],
    /* return matcher indices */ &kMatcherIndices[3],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [265] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[1],
    /* parameters */ &kParameters[607],
    /* return matcher indices */ &kMatcherIndices[3],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [266] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[2],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[604],
    /* return matcher indices */ &kMatcherIndices[5],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [267] */
    /* num parameters */ 2,
    /* num open types */ 1,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[2],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[450],
    /* return matcher indices */ nullptr,
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [268] */
    /* num parameters */ 2,
    /* num open types */ 1,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[2],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[452],
    /* return matcher indices */ &kMatcherIndices[5],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [269] */
    /* num parameters */ 2,
    /* num open types */ 1,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[2],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[454],
    /* return matcher indices */ &kMatcherIndices[5],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [270] */
    /* num parameters */ 2,
    /* num open types */ 1,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[2],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[456],
    /* return matcher indices */ &kMatcherIndices[5],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [271] */
    /* num parameters */ 2,
    /* num open types */ 1,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[2],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[458],
    /* return matcher indices */ &kMatcherIndices[5],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [272] */
    /* num parameters */ 2,
    /* num open types */ 1,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[2],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[470],
    /* return matcher indices */ &kMatcherIndices[5],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [273] */
    /* num parameters */ 2,
    /* num open types */ 1,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[2],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[460],
    /* return matcher indices */ &kMatcherIndices[5],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [274] */
    /* num parameters */ 2,
    /* num open types */ 1,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[2],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[434],
    /* return matcher indices */ &kMatcherIndices[5],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [275] */
    /* num parameters */ 3,
    /* num open types */ 1,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[2],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[366],
    /* return matcher indices */ &kMatcherIndices[177],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
};

constexpr IntrinsicInfo kIntrinsics[] = {
  {
    /* [0] */
    /* fn abs<T : fiu32>(T) -> T */
    /* fn abs<N : num, T : fiu32>(vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[239],
  },
  {
    /* [1] */
    /* fn acos(f32) -> f32 */
    /* fn acos<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[231],
  },
  {
    /* [2] */
    /* fn all<N : num>(vec<N, bool>) -> bool */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[265],
  },
  {
    /* [3] */
    /* fn any<N : num>(vec<N, bool>) -> bool */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[264],
  },
  {
    /* [4] */
    /* fn arrayLength<T, A : access>(ptr<storage, array<T>, A>) -> u32 */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[263],
  },
  {
    /* [5] */
    /* fn asin(f32) -> f32 */
    /* fn asin<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[223],
  },
  {
    /* [6] */
    /* fn atan(f32) -> f32 */
    /* fn atan<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[215],
  },
  {
    /* [7] */
    /* fn atan2(f32, f32) -> f32 */
    /* fn atan2<N : num>(vec<N, f32>, vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[145],
  },
  {
    /* [8] */
    /* fn ceil(f32) -> f32 */
    /* fn ceil<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[211],
  },
  {
    /* [9] */
    /* fn clamp<T : fiu32>(T, T, T) -> T */
    /* fn clamp<N : num, T : fiu32>(vec<N, T>, vec<N, T>, vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[207],
  },
  {
    /* [10] */
    /* fn cos(f32) -> f32 */
    /* fn cos<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[205],
  },
  {
    /* [11] */
    /* fn cosh(f32) -> f32 */
    /* fn cosh<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[181],
  },
  {
    /* [12] */
    /* fn countOneBits<T : iu32>(T) -> T */
    /* fn countOneBits<N : num, T : iu32>(vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[173],
  },
  {
    /* [13] */
    /* fn cross(vec3<f32>, vec3<f32>) -> vec3<f32> */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[262],
  },
  {
    /* [14] */
    /* fn determinant<N : num>(mat<N, N, f32>) -> f32 */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[261],
  },
  {
    /* [15] */
    /* fn distance(f32, f32) -> f32 */
    /* fn distance<N : num>(vec<N, f32>, vec<N, f32>) -> f32 */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[147],
  },
  {
    /* [16] */
    /* fn dot<N : num>(vec<N, f32>, vec<N, f32>) -> f32 */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[260],
  },
  {
    /* [17] */
    /* fn dpdx(f32) -> f32 */
    /* fn dpdx<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[149],
  },
  {
    /* [18] */
    /* fn dpdxCoarse(f32) -> f32 */
    /* fn dpdxCoarse<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[151],
  },
  {
    /* [19] */
    /* fn dpdxFine(f32) -> f32 */
    /* fn dpdxFine<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[153],
  },
  {
    /* [20] */
    /* fn dpdy(f32) -> f32 */
    /* fn dpdy<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[155],
  },
  {
    /* [21] */
    /* fn dpdyCoarse(f32) -> f32 */
    /* fn dpdyCoarse<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[157],
  },
  {
    /* [22] */
    /* fn dpdyFine(f32) -> f32 */
    /* fn dpdyFine<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[159],
  },
  {
    /* [23] */
    /* fn exp(f32) -> f32 */
    /* fn exp<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[161],
  },
  {
    /* [24] */
    /* fn exp2(f32) -> f32 */
    /* fn exp2<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[163],
  },
  {
    /* [25] */
    /* fn faceForward<N : num>(vec<N, f32>, vec<N, f32>, vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[259],
  },
  {
    /* [26] */
    /* fn floor(f32) -> f32 */
    /* fn floor<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[167],
  },
  {
    /* [27] */
    /* fn fma(f32, f32, f32) -> f32 */
    /* fn fma<N : num>(vec<N, f32>, vec<N, f32>, vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[169],
  },
  {
    /* [28] */
    /* fn fract(f32) -> f32 */
    /* fn fract<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[171],
  },
  {
    /* [29] */
    /* fn frexp<S : function_private_workgroup, A : access>(f32, ptr<S, i32, A>) -> f32 */
    /* fn frexp<N : num, S : function_private_workgroup, A : access>(vec<N, f32>, ptr<S, vec<N, i32>, A>) -> vec<N, f32> */
    /* fn frexp(f32) -> _frexp_result */
    /* fn frexp<N : num>(vec<N, f32>) -> _frexp_result_vec<N> */
    /* num overloads */ 4,
    /* overloads */ &kOverloads[135],
  },
  {
    /* [30] */
    /* fn fwidth(f32) -> f32 */
    /* fn fwidth<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[175],
  },
  {
    /* [31] */
    /* fn fwidthCoarse(f32) -> f32 */
    /* fn fwidthCoarse<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[177],
  },
  {
    /* [32] */
    /* fn fwidthFine(f32) -> f32 */
    /* fn fwidthFine<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[179],
  },
  {
    /* [33] */
    /* fn ignore<T>(T) */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[258],
  },
  {
    /* [34] */
    /* fn inverseSqrt(f32) -> f32 */
    /* fn inverseSqrt<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[183],
  },
  {
    /* [35] */
    /* fn isFinite(f32) -> bool */
    /* fn isFinite<N : num>(vec<N, f32>) -> vec<N, bool> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[185],
  },
  {
    /* [36] */
    /* fn isInf(f32) -> bool */
    /* fn isInf<N : num>(vec<N, f32>) -> vec<N, bool> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[187],
  },
  {
    /* [37] */
    /* fn isNan(f32) -> bool */
    /* fn isNan<N : num>(vec<N, f32>) -> vec<N, bool> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[189],
  },
  {
    /* [38] */
    /* fn isNormal(f32) -> bool */
    /* fn isNormal<N : num>(vec<N, f32>) -> vec<N, bool> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[191],
  },
  {
    /* [39] */
    /* fn ldexp<T : iu32>(f32, T) -> f32 */
    /* fn ldexp<N : num, T : iu32>(vec<N, f32>, vec<N, T>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[193],
  },
  {
    /* [40] */
    /* fn length(f32) -> f32 */
    /* fn length<N : num>(vec<N, f32>) -> f32 */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[195],
  },
  {
    /* [41] */
    /* fn log(f32) -> f32 */
    /* fn log<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[197],
  },
  {
    /* [42] */
    /* fn log2(f32) -> f32 */
    /* fn log2<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[199],
  },
  {
    /* [43] */
    /* fn max<T : fiu32>(T, T) -> T */
    /* fn max<N : num, T : fiu32>(vec<N, T>, vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[201],
  },
  {
    /* [44] */
    /* fn min<T : fiu32>(T, T) -> T */
    /* fn min<N : num, T : fiu32>(vec<N, T>, vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[203],
  },
  {
    /* [45] */
    /* fn mix(f32, f32, f32) -> f32 */
    /* fn mix<N : num>(vec<N, f32>, vec<N, f32>, vec<N, f32>) -> vec<N, f32> */
    /* fn mix<N : num>(vec<N, f32>, vec<N, f32>, f32) -> vec<N, f32> */
    /* num overloads */ 3,
    /* overloads */ &kOverloads[139],
  },
  {
    /* [46] */
    /* fn modf<S : function_private_workgroup, A : access>(f32, ptr<S, f32, A>) -> f32 */
    /* fn modf<N : num, S : function_private_workgroup, A : access>(vec<N, f32>, ptr<S, vec<N, f32>, A>) -> vec<N, f32> */
    /* fn modf(f32) -> _modf_result */
    /* fn modf<N : num>(vec<N, f32>) -> _modf_result_vec<N> */
    /* num overloads */ 4,
    /* overloads */ &kOverloads[131],
  },
  {
    /* [47] */
    /* fn normalize<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[256],
  },
  {
    /* [48] */
    /* fn pack2x16float(vec2<f32>) -> u32 */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[255],
  },
  {
    /* [49] */
    /* fn pack2x16snorm(vec2<f32>) -> u32 */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[241],
  },
  {
    /* [50] */
    /* fn pack2x16unorm(vec2<f32>) -> u32 */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[254],
  },
  {
    /* [51] */
    /* fn pack4x8snorm(vec4<f32>) -> u32 */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[247],
  },
  {
    /* [52] */
    /* fn pack4x8unorm(vec4<f32>) -> u32 */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[245],
  },
  {
    /* [53] */
    /* fn pow(f32, f32) -> f32 */
    /* fn pow<N : num>(vec<N, f32>, vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[221],
  },
  {
    /* [54] */
    /* fn reflect<N : num>(vec<N, f32>, vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[244],
  },
  {
    /* [55] */
    /* fn refract<N : num>(vec<N, f32>, vec<N, f32>, f32) -> vec<N, f32> */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[242],
  },
  {
    /* [56] */
    /* fn reverseBits<T : iu32>(T) -> T */
    /* fn reverseBits<N : num, T : iu32>(vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[227],
  },
  {
    /* [57] */
    /* fn round(f32) -> f32 */
    /* fn round<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[229],
  },
  {
    /* [58] */
    /* fn select<T : scalar>(T, T, bool) -> T */
    /* fn select<T : scalar, N : num>(vec<N, T>, vec<N, T>, bool) -> vec<N, T> */
    /* fn select<N : num, T : scalar>(vec<N, T>, vec<N, T>, vec<N, bool>) -> vec<N, T> */
    /* num overloads */ 3,
    /* overloads */ &kOverloads[142],
  },
  {
    /* [59] */
    /* fn sign(f32) -> f32 */
    /* fn sign<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[233],
  },
  {
    /* [60] */
    /* fn sin(f32) -> f32 */
    /* fn sin<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[235],
  },
  {
    /* [61] */
    /* fn sinh(f32) -> f32 */
    /* fn sinh<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[213],
  },
  {
    /* [62] */
    /* fn smoothStep(f32, f32, f32) -> f32 */
    /* fn smoothStep<N : num>(vec<N, f32>, vec<N, f32>, vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[165],
  },
  {
    /* [63] */
    /* fn sqrt(f32) -> f32 */
    /* fn sqrt<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[209],
  },
  {
    /* [64] */
    /* fn step(f32, f32) -> f32 */
    /* fn step<N : num>(vec<N, f32>, vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[225],
  },
  {
    /* [65] */
    /* fn storageBarrier() */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[243],
  },
  {
    /* [66] */
    /* fn tan(f32) -> f32 */
    /* fn tan<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[237],
  },
  {
    /* [67] */
    /* fn tanh(f32) -> f32 */
    /* fn tanh<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[219],
  },
  {
    /* [68] */
    /* fn transpose<M : num, N : num>(mat<M, N, f32>) -> mat<N, M, f32> */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[246],
  },
  {
    /* [69] */
    /* fn trunc(f32) -> f32 */
    /* fn trunc<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[217],
  },
  {
    /* [70] */
    /* fn unpack2x16float(u32) -> vec2<f32> */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[248],
  },
  {
    /* [71] */
    /* fn unpack2x16snorm(u32) -> vec2<f32> */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[249],
  },
  {
    /* [72] */
    /* fn unpack2x16unorm(u32) -> vec2<f32> */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[250],
  },
  {
    /* [73] */
    /* fn unpack4x8snorm(u32) -> vec4<f32> */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[251],
  },
  {
    /* [74] */
    /* fn unpack4x8unorm(u32) -> vec4<f32> */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[252],
  },
  {
    /* [75] */
    /* fn workgroupBarrier() */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[253],
  },
  {
    /* [76] */
    /* fn textureDimensions<T : fiu32>(texture: texture_1d<T>) -> i32 */
    /* fn textureDimensions<T : fiu32>(texture: texture_1d<T>, level: i32) -> i32 */
    /* fn textureDimensions<T : fiu32>(texture: texture_2d<T>) -> vec2<i32> */
    /* fn textureDimensions<T : fiu32>(texture: texture_2d<T>, level: i32) -> vec2<i32> */
    /* fn textureDimensions<T : fiu32>(texture: texture_2d_array<T>) -> vec2<i32> */
    /* fn textureDimensions<T : fiu32>(texture: texture_2d_array<T>, level: i32) -> vec2<i32> */
    /* fn textureDimensions<T : fiu32>(texture: texture_3d<T>) -> vec3<i32> */
    /* fn textureDimensions<T : fiu32>(texture: texture_3d<T>, level: i32) -> vec3<i32> */
    /* fn textureDimensions<T : fiu32>(texture: texture_cube<T>) -> vec2<i32> */
    /* fn textureDimensions<T : fiu32>(texture: texture_cube<T>, level: i32) -> vec2<i32> */
    /* fn textureDimensions<T : fiu32>(texture: texture_cube_array<T>) -> vec2<i32> */
    /* fn textureDimensions<T : fiu32>(texture: texture_cube_array<T>, level: i32) -> vec2<i32> */
    /* fn textureDimensions<T : fiu32>(texture: texture_multisampled_2d<T>) -> vec2<i32> */
    /* fn textureDimensions(texture: texture_depth_2d) -> vec2<i32> */
    /* fn textureDimensions(texture: texture_depth_2d, level: i32) -> vec2<i32> */
    /* fn textureDimensions(texture: texture_depth_2d_array) -> vec2<i32> */
    /* fn textureDimensions(texture: texture_depth_2d_array, level: i32) -> vec2<i32> */
    /* fn textureDimensions(texture: texture_depth_cube) -> vec2<i32> */
    /* fn textureDimensions(texture: texture_depth_cube, level: i32) -> vec2<i32> */
    /* fn textureDimensions(texture: texture_depth_cube_array) -> vec2<i32> */
    /* fn textureDimensions(texture: texture_depth_cube_array, level: i32) -> vec2<i32> */
    /* fn textureDimensions<F : texel_format, A : read_or_write>(texture: texture_storage_1d<F, A>) -> i32 */
    /* fn textureDimensions<F : texel_format, A : read_or_write>(texture: texture_storage_2d<F, A>) -> vec2<i32> */
    /* fn textureDimensions<F : texel_format, A : read_or_write>(texture: texture_storage_2d_array<F, A>) -> vec2<i32> */
    /* fn textureDimensions<F : texel_format, A : read_or_write>(texture: texture_storage_3d<F, A>) -> vec3<i32> */
    /* fn textureDimensions(texture: texture_external) -> vec2<i32> */
    /* num overloads */ 26,
    /* overloads */ &kOverloads[0],
  },
  {
    /* [77] */
    /* fn textureNumLayers<T : fiu32>(texture: texture_2d_array<T>) -> i32 */
    /* fn textureNumLayers<T : fiu32>(texture: texture_cube_array<T>) -> i32 */
    /* fn textureNumLayers(texture: texture_depth_2d_array) -> i32 */
    /* fn textureNumLayers(texture: texture_depth_cube_array) -> i32 */
    /* fn textureNumLayers<F : texel_format, A : read_or_write>(texture: texture_storage_2d_array<F, A>) -> i32 */
    /* num overloads */ 5,
    /* overloads */ &kOverloads[126],
  },
  {
    /* [78] */
    /* fn textureNumLevels<T : fiu32>(texture: texture_1d<T>) -> i32 */
    /* fn textureNumLevels<T : fiu32>(texture: texture_2d<T>) -> i32 */
    /* fn textureNumLevels<T : fiu32>(texture: texture_2d_array<T>) -> i32 */
    /* fn textureNumLevels<T : fiu32>(texture: texture_3d<T>) -> i32 */
    /* fn textureNumLevels<T : fiu32>(texture: texture_cube<T>) -> i32 */
    /* fn textureNumLevels<T : fiu32>(texture: texture_cube_array<T>) -> i32 */
    /* fn textureNumLevels(texture: texture_depth_2d) -> i32 */
    /* fn textureNumLevels(texture: texture_depth_2d_array) -> i32 */
    /* fn textureNumLevels(texture: texture_depth_cube) -> i32 */
    /* fn textureNumLevels(texture: texture_depth_cube_array) -> i32 */
    /* num overloads */ 10,
    /* overloads */ &kOverloads[88],
  },
  {
    /* [79] */
    /* fn textureNumSamples<T : fiu32>(texture: texture_multisampled_2d<T>) -> i32 */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[257],
  },
  {
    /* [80] */
    /* fn textureSample(texture: texture_1d<f32>, sampler: sampler, coords: f32) -> vec4<f32> */
    /* fn textureSample(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>) -> vec4<f32> */
    /* fn textureSample(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>, offset: vec2<i32>) -> vec4<f32> */
    /* fn textureSample(texture: texture_2d_array<f32>, sampler: sampler, coords: vec2<f32>, array_index: i32) -> vec4<f32> */
    /* fn textureSample(texture: texture_2d_array<f32>, sampler: sampler, coords: vec2<f32>, array_index: i32, offset: vec2<i32>) -> vec4<f32> */
    /* fn textureSample(texture: texture_3d<f32>, sampler: sampler, coords: vec3<f32>) -> vec4<f32> */
    /* fn textureSample(texture: texture_3d<f32>, sampler: sampler, coords: vec3<f32>, offset: vec3<i32>) -> vec4<f32> */
    /* fn textureSample(texture: texture_cube<f32>, sampler: sampler, coords: vec3<f32>) -> vec4<f32> */
    /* fn textureSample(texture: texture_cube_array<f32>, sampler: sampler, coords: vec3<f32>, array_index: i32) -> vec4<f32> */
    /* fn textureSample(texture: texture_depth_2d, sampler: sampler, coords: vec2<f32>) -> f32 */
    /* fn textureSample(texture: texture_depth_2d, sampler: sampler, coords: vec2<f32>, offset: vec2<i32>) -> f32 */
    /* fn textureSample(texture: texture_depth_2d_array, sampler: sampler, coords: vec2<f32>, array_index: i32) -> f32 */
    /* fn textureSample(texture: texture_depth_2d_array, sampler: sampler, coords: vec2<f32>, array_index: i32, offset: vec2<i32>) -> f32 */
    /* fn textureSample(texture: texture_depth_cube, sampler: sampler, coords: vec3<f32>) -> f32 */
    /* fn textureSample(texture: texture_depth_cube_array, sampler: sampler, coords: vec3<f32>, array_index: i32) -> f32 */
    /* num overloads */ 15,
    /* overloads */ &kOverloads[61],
  },
  {
    /* [81] */
    /* fn textureSampleBias(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>, bias: f32) -> vec4<f32> */
    /* fn textureSampleBias(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>, bias: f32, offset: vec2<i32>) -> vec4<f32> */
    /* fn textureSampleBias(texture: texture_2d_array<f32>, sampler: sampler, coords: vec2<f32>, array_index: i32, bias: f32) -> vec4<f32> */
    /* fn textureSampleBias(texture: texture_2d_array<f32>, sampler: sampler, coords: vec2<f32>, array_index: i32, bias: f32, offset: vec2<i32>) -> vec4<f32> */
    /* fn textureSampleBias(texture: texture_3d<f32>, sampler: sampler, coords: vec3<f32>, bias: f32) -> vec4<f32> */
    /* fn textureSampleBias(texture: texture_3d<f32>, sampler: sampler, coords: vec3<f32>, bias: f32, offset: vec3<i32>) -> vec4<f32> */
    /* fn textureSampleBias(texture: texture_cube<f32>, sampler: sampler, coords: vec3<f32>, bias: f32) -> vec4<f32> */
    /* fn textureSampleBias(texture: texture_cube_array<f32>, sampler: sampler, coords: vec3<f32>, array_index: i32, bias: f32) -> vec4<f32> */
    /* num overloads */ 8,
    /* overloads */ &kOverloads[106],
  },
  {
    /* [82] */
    /* fn textureSampleCompare(texture: texture_depth_2d, sampler: sampler_comparison, coords: vec2<f32>, depth_ref: f32) -> f32 */
    /* fn textureSampleCompare(texture: texture_depth_2d, sampler: sampler_comparison, coords: vec2<f32>, depth_ref: f32, offset: vec2<i32>) -> f32 */
    /* fn textureSampleCompare(texture: texture_depth_2d_array, sampler: sampler_comparison, coords: vec2<f32>, array_index: i32, depth_ref: f32) -> f32 */
    /* fn textureSampleCompare(texture: texture_depth_2d_array, sampler: sampler_comparison, coords: vec2<f32>, array_index: i32, depth_ref: f32, offset: vec2<i32>) -> f32 */
    /* fn textureSampleCompare(texture: texture_depth_cube, sampler: sampler_comparison, coords: vec3<f32>, depth_ref: f32) -> f32 */
    /* fn textureSampleCompare(texture: texture_depth_cube_array, sampler: sampler_comparison, coords: vec3<f32>, array_index: i32, depth_ref: f32) -> f32 */
    /* num overloads */ 6,
    /* overloads */ &kOverloads[120],
  },
  {
    /* [83] */
    /* fn textureSampleCompareLevel(texture: texture_depth_2d, sampler: sampler_comparison, coords: vec2<f32>, depth_ref: f32) -> f32 */
    /* fn textureSampleCompareLevel(texture: texture_depth_2d, sampler: sampler_comparison, coords: vec2<f32>, depth_ref: f32, offset: vec2<i32>) -> f32 */
    /* fn textureSampleCompareLevel(texture: texture_depth_2d_array, sampler: sampler_comparison, coords: vec2<f32>, array_index: i32, depth_ref: f32) -> f32 */
    /* fn textureSampleCompareLevel(texture: texture_depth_2d_array, sampler: sampler_comparison, coords: vec2<f32>, array_index: i32, depth_ref: f32, offset: vec2<i32>) -> f32 */
    /* fn textureSampleCompareLevel(texture: texture_depth_cube, sampler: sampler_comparison, coords: vec3<f32>, depth_ref: f32) -> f32 */
    /* fn textureSampleCompareLevel(texture: texture_depth_cube_array, sampler: sampler_comparison, coords: vec3<f32>, array_index: i32, depth_ref: f32) -> f32 */
    /* num overloads */ 6,
    /* overloads */ &kOverloads[114],
  },
  {
    /* [84] */
    /* fn textureSampleGrad(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>, ddx: vec2<f32>, ddy: vec2<f32>) -> vec4<f32> */
    /* fn textureSampleGrad(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>, ddx: vec2<f32>, ddy: vec2<f32>, offset: vec2<i32>) -> vec4<f32> */
    /* fn textureSampleGrad(texture: texture_2d_array<f32>, sampler: sampler, coords: vec2<f32>, array_index: i32, ddx: vec2<f32>, ddy: vec2<f32>) -> vec4<f32> */
    /* fn textureSampleGrad(texture: texture_2d_array<f32>, sampler: sampler, coords: vec2<f32>, array_index: i32, ddx: vec2<f32>, ddy: vec2<f32>, offset: vec2<i32>) -> vec4<f32> */
    /* fn textureSampleGrad(texture: texture_3d<f32>, sampler: sampler, coords: vec3<f32>, ddx: vec3<f32>, ddy: vec3<f32>) -> vec4<f32> */
    /* fn textureSampleGrad(texture: texture_3d<f32>, sampler: sampler, coords: vec3<f32>, ddx: vec3<f32>, ddy: vec3<f32>, offset: vec3<i32>) -> vec4<f32> */
    /* fn textureSampleGrad(texture: texture_cube<f32>, sampler: sampler, coords: vec3<f32>, ddx: vec3<f32>, ddy: vec3<f32>) -> vec4<f32> */
    /* fn textureSampleGrad(texture: texture_cube_array<f32>, sampler: sampler, coords: vec3<f32>, array_index: i32, ddx: vec3<f32>, ddy: vec3<f32>) -> vec4<f32> */
    /* num overloads */ 8,
    /* overloads */ &kOverloads[98],
  },
  {
    /* [85] */
    /* fn textureSampleLevel(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>, level: f32) -> vec4<f32> */
    /* fn textureSampleLevel(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>, level: f32, offset: vec2<i32>) -> vec4<f32> */
    /* fn textureSampleLevel(texture: texture_2d_array<f32>, sampler: sampler, coords: vec2<f32>, array_index: i32, level: f32) -> vec4<f32> */
    /* fn textureSampleLevel(texture: texture_2d_array<f32>, sampler: sampler, coords: vec2<f32>, array_index: i32, level: f32, offset: vec2<i32>) -> vec4<f32> */
    /* fn textureSampleLevel(texture: texture_3d<f32>, sampler: sampler, coords: vec3<f32>, level: f32) -> vec4<f32> */
    /* fn textureSampleLevel(texture: texture_3d<f32>, sampler: sampler, coords: vec3<f32>, level: f32, offset: vec3<i32>) -> vec4<f32> */
    /* fn textureSampleLevel(texture: texture_cube<f32>, sampler: sampler, coords: vec3<f32>, level: f32) -> vec4<f32> */
    /* fn textureSampleLevel(texture: texture_cube_array<f32>, sampler: sampler, coords: vec3<f32>, array_index: i32, level: f32) -> vec4<f32> */
    /* fn textureSampleLevel(texture: texture_depth_2d, sampler: sampler, coords: vec2<f32>, level: i32) -> f32 */
    /* fn textureSampleLevel(texture: texture_depth_2d, sampler: sampler, coords: vec2<f32>, level: i32, offset: vec2<i32>) -> f32 */
    /* fn textureSampleLevel(texture: texture_depth_2d_array, sampler: sampler, coords: vec2<f32>, array_index: i32, level: i32) -> f32 */
    /* fn textureSampleLevel(texture: texture_depth_2d_array, sampler: sampler, coords: vec2<f32>, array_index: i32, level: i32, offset: vec2<i32>) -> f32 */
    /* fn textureSampleLevel(texture: texture_depth_cube, sampler: sampler, coords: vec3<f32>, level: i32) -> f32 */
    /* fn textureSampleLevel(texture: texture_depth_cube_array, sampler: sampler, coords: vec3<f32>, array_index: i32, level: i32) -> f32 */
    /* fn textureSampleLevel(texture: texture_external, sampler: sampler, coords: vec2<f32>) -> vec4<f32> */
    /* num overloads */ 15,
    /* overloads */ &kOverloads[46],
  },
  {
    /* [86] */
    /* fn textureStore(texture: texture_storage_1d<f32_texel_format, write>, coords: i32, value: vec4<f32>) */
    /* fn textureStore(texture: texture_storage_2d<f32_texel_format, write>, coords: vec2<i32>, value: vec4<f32>) */
    /* fn textureStore(texture: texture_storage_2d_array<f32_texel_format, write>, coords: vec2<i32>, array_index: i32, value: vec4<f32>) */
    /* fn textureStore(texture: texture_storage_3d<f32_texel_format, write>, coords: vec3<i32>, value: vec4<f32>) */
    /* fn textureStore(texture: texture_storage_1d<i32_texel_format, write>, coords: i32, value: vec4<i32>) */
    /* fn textureStore(texture: texture_storage_2d<i32_texel_format, write>, coords: vec2<i32>, value: vec4<i32>) */
    /* fn textureStore(texture: texture_storage_2d_array<i32_texel_format, write>, coords: vec2<i32>, array_index: i32, value: vec4<i32>) */
    /* fn textureStore(texture: texture_storage_3d<i32_texel_format, write>, coords: vec3<i32>, value: vec4<i32>) */
    /* fn textureStore(texture: texture_storage_1d<u32_texel_format, write>, coords: i32, value: vec4<u32>) */
    /* fn textureStore(texture: texture_storage_2d<u32_texel_format, write>, coords: vec2<i32>, value: vec4<u32>) */
    /* fn textureStore(texture: texture_storage_2d_array<u32_texel_format, write>, coords: vec2<i32>, array_index: i32, value: vec4<u32>) */
    /* fn textureStore(texture: texture_storage_3d<u32_texel_format, write>, coords: vec3<i32>, value: vec4<u32>) */
    /* num overloads */ 12,
    /* overloads */ &kOverloads[76],
  },
  {
    /* [87] */
    /* fn textureLoad<T : fiu32>(texture: texture_1d<T>, coords: i32, level: i32) -> vec4<T> */
    /* fn textureLoad<T : fiu32>(texture: texture_2d<T>, coords: vec2<i32>, level: i32) -> vec4<T> */
    /* fn textureLoad<T : fiu32>(texture: texture_2d_array<T>, coords: vec2<i32>, array_index: i32, level: i32) -> vec4<T> */
    /* fn textureLoad<T : fiu32>(texture: texture_3d<T>, coords: vec3<i32>, level: i32) -> vec4<T> */
    /* fn textureLoad<T : fiu32>(texture: texture_multisampled_2d<T>, coords: vec2<i32>, sample_index: i32) -> vec4<T> */
    /* fn textureLoad(texture: texture_depth_2d, coords: vec2<i32>, level: i32) -> f32 */
    /* fn textureLoad(texture: texture_depth_2d_array, coords: vec2<i32>, array_index: i32, level: i32) -> f32 */
    /* fn textureLoad(texture: texture_storage_1d<f32_texel_format, read>, coords: i32) -> vec4<f32> */
    /* fn textureLoad(texture: texture_storage_2d<f32_texel_format, read>, coords: vec2<i32>) -> vec4<f32> */
    /* fn textureLoad(texture: texture_storage_2d_array<f32_texel_format, read>, coords: vec2<i32>, array_index: i32) -> vec4<f32> */
    /* fn textureLoad(texture: texture_storage_3d<f32_texel_format, read>, coords: vec3<i32>) -> vec4<f32> */
    /* fn textureLoad(texture: texture_storage_1d<i32_texel_format, read>, coords: i32) -> vec4<i32> */
    /* fn textureLoad(texture: texture_storage_2d<i32_texel_format, read>, coords: vec2<i32>) -> vec4<i32> */
    /* fn textureLoad(texture: texture_storage_2d_array<i32_texel_format, read>, coords: vec2<i32>, array_index: i32) -> vec4<i32> */
    /* fn textureLoad(texture: texture_storage_3d<i32_texel_format, read>, coords: vec3<i32>) -> vec4<i32> */
    /* fn textureLoad(texture: texture_storage_1d<u32_texel_format, read>, coords: i32) -> vec4<u32> */
    /* fn textureLoad(texture: texture_storage_2d<u32_texel_format, read>, coords: vec2<i32>) -> vec4<u32> */
    /* fn textureLoad(texture: texture_storage_2d_array<u32_texel_format, read>, coords: vec2<i32>, array_index: i32) -> vec4<u32> */
    /* fn textureLoad(texture: texture_storage_3d<u32_texel_format, read>, coords: vec3<i32>) -> vec4<u32> */
    /* fn textureLoad(texture: texture_external, coords: vec2<i32>) -> vec4<f32> */
    /* num overloads */ 20,
    /* overloads */ &kOverloads[26],
  },
  {
    /* [88] */
    /* fn atomicLoad<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>) -> T */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[266],
  },
  {
    /* [89] */
    /* fn atomicStore<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[267],
  },
  {
    /* [90] */
    /* fn atomicAdd<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[268],
  },
  {
    /* [91] */
    /* fn atomicMax<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[269],
  },
  {
    /* [92] */
    /* fn atomicMin<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[270],
  },
  {
    /* [93] */
    /* fn atomicAnd<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[271],
  },
  {
    /* [94] */
    /* fn atomicOr<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[272],
  },
  {
    /* [95] */
    /* fn atomicXor<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[273],
  },
  {
    /* [96] */
    /* fn atomicExchange<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[274],
  },
  {
    /* [97] */
    /* fn atomicCompareExchangeWeak<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T, T) -> vec2<T> */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[275],
  },
};

// clang-format on
