#include <metal_stdlib>

using namespace metal;
struct VertexOutputs {
  int loc0;
  uint loc1;
  float loc2;
  float4 loc3;
  float4 position;
};
struct tint_symbol_1 {
  int loc0 [[user(locn0)]];
  uint loc1 [[user(locn1)]];
  float loc2 [[user(locn2)]];
  float4 loc3 [[user(locn3)]];
  float4 position [[position]];
};

vertex tint_symbol_1 tint_symbol() {
  VertexOutputs const tint_symbol_2 = {.loc0=1, .loc1=1u, .loc2=1.0f, .loc3=float4(1.0f, 2.0f, 3.0f, 4.0f), .position=float4()};
  tint_symbol_1 const tint_symbol_3 = {.loc0=tint_symbol_2.loc0, .loc1=tint_symbol_2.loc1, .loc2=tint_symbol_2.loc2, .loc3=tint_symbol_2.loc3, .position=tint_symbol_2.position};
  return tint_symbol_3;
}

