#include <metal_stdlib>

using namespace metal;
kernel void tint_symbol(texture2d_array<float, access::write> tint_symbol_1 [[texture(0)]], texture2d_array<float, access::write> tint_symbol_2 [[texture(1)]], texture2d_array<uint, access::write> tint_symbol_3 [[texture(2)]], texture2d_array<int, access::write> tint_symbol_4 [[texture(3)]], texture2d_array<uint, access::write> tint_symbol_5 [[texture(4)]], texture2d_array<int, access::write> tint_symbol_6 [[texture(5)]], texture2d_array<float, access::write> tint_symbol_7 [[texture(6)]], texture2d_array<uint, access::write> tint_symbol_8 [[texture(7)]], texture2d_array<int, access::write> tint_symbol_9 [[texture(8)]], texture2d_array<float, access::write> tint_symbol_10 [[texture(9)]], texture2d_array<uint, access::write> tint_symbol_11 [[texture(10)]], texture2d_array<int, access::write> tint_symbol_12 [[texture(11)]], texture2d_array<float, access::write> tint_symbol_13 [[texture(12)]], texture2d_array<uint, access::write> tint_symbol_14 [[texture(13)]], texture2d_array<int, access::write> tint_symbol_15 [[texture(14)]], texture2d_array<float, access::write> tint_symbol_16 [[texture(15)]]) {
  uint2 dim1 = uint2(tint_symbol_1.get_width(), tint_symbol_1.get_height());
  uint2 dim2 = uint2(tint_symbol_2.get_width(), tint_symbol_2.get_height());
  uint2 dim3 = uint2(tint_symbol_3.get_width(), tint_symbol_3.get_height());
  uint2 dim4 = uint2(tint_symbol_4.get_width(), tint_symbol_4.get_height());
  uint2 dim5 = uint2(tint_symbol_5.get_width(), tint_symbol_5.get_height());
  uint2 dim6 = uint2(tint_symbol_6.get_width(), tint_symbol_6.get_height());
  uint2 dim7 = uint2(tint_symbol_7.get_width(), tint_symbol_7.get_height());
  uint2 dim8 = uint2(tint_symbol_8.get_width(), tint_symbol_8.get_height());
  uint2 dim9 = uint2(tint_symbol_9.get_width(), tint_symbol_9.get_height());
  uint2 dim10 = uint2(tint_symbol_10.get_width(), tint_symbol_10.get_height());
  uint2 dim11 = uint2(tint_symbol_11.get_width(), tint_symbol_11.get_height());
  uint2 dim12 = uint2(tint_symbol_12.get_width(), tint_symbol_12.get_height());
  uint2 dim13 = uint2(tint_symbol_13.get_width(), tint_symbol_13.get_height());
  uint2 dim14 = uint2(tint_symbol_14.get_width(), tint_symbol_14.get_height());
  uint2 dim15 = uint2(tint_symbol_15.get_width(), tint_symbol_15.get_height());
  uint2 dim16 = uint2(tint_symbol_16.get_width(), tint_symbol_16.get_height());
  return;
}

