#include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
struct Inputs {
};
struct Outputs {
    float4 sk_FragColor [[color(0)]];
};
struct Globals {
    bool b;
    short s;
    int i;
    ushort us;
    uint ui;
    float h;
    float f;
    short s2s;
    short i2s;
    short us2s;
    short ui2s;
    short h2s;
    short f2s;
    short b2s;
    int s2i;
    int i2i;
    int us2i;
    int ui2i;
    int h2i;
    int f2i;
    int b2i;
    ushort s2us;
    ushort i2us;
    ushort us2us;
    ushort ui2us;
    ushort h2us;
    ushort f2us;
    ushort b2us;
    uint s2ui;
    uint i2ui;
    uint us2ui;
    uint ui2ui;
    uint h2ui;
    uint f2ui;
    uint b2ui;
    float s2f;
    float i2f;
    float us2f;
    float ui2f;
    float h2f;
    float f2f;
    float b2f;
};










































fragment Outputs fragmentMain(Inputs _in [[stage_in]], bool _frontFacing [[front_facing]], float4 _fragCoord [[position]]) {
    Globals _globals{true, short(sqrt(1.0)), int(sqrt(1.0)), ushort(sqrt(1.0)), uint(sqrt(1.0)), sqrt(1.0), sqrt(1.0), _globals.s, short(_globals.i), short(_globals.us), short(_globals.ui), short(_globals.h), short(_globals.f), short(_globals.b), int(_globals.s), _globals.i, int(_globals.us), int(_globals.ui), int(_globals.h), int(_globals.f), int(_globals.b), ushort(_globals.s), ushort(_globals.i), _globals.us, ushort(_globals.ui), ushort(_globals.h), ushort(_globals.f), ushort(_globals.b), uint(_globals.s), uint(_globals.i), uint(_globals.us), _globals.ui, uint(_globals.h), uint(_globals.f), uint(_globals.b), float(_globals.s), float(_globals.i), float(_globals.us), float(_globals.ui), _globals.h, _globals.f, float(_globals.b)};
    (void)_globals;
    Outputs _out;
    (void)_out;
    _out.sk_FragColor.x = (((((((((((((((((((((float(_globals.s) + float(_globals.i)) + float(_globals.us)) + float(_globals.ui)) + _globals.h) + _globals.f) + float(_globals.s2s)) + float(_globals.i2s)) + float(_globals.us2s)) + float(_globals.ui2s)) + float(_globals.h2s)) + float(_globals.f2s)) + float(_globals.b2s)) + float(_globals.s2i)) + float(_globals.i2i)) + float(_globals.us2i)) + float(_globals.ui2i)) + float(_globals.h2i)) + float(_globals.f2i)) + float(_globals.b2i)) + float(_globals.s2us)) + float(_globals.i2us)) + float(_globals.us2us);
    _out.sk_FragColor.x = _out.sk_FragColor.x + ((((((((((((((((float(_globals.ui2us) + float(_globals.h2us)) + float(_globals.f2us)) + float(_globals.b2us)) + float(_globals.s2ui)) + float(_globals.i2ui)) + float(_globals.us2ui)) + float(_globals.ui2ui)) + float(_globals.h2ui)) + float(_globals.f2ui)) + float(_globals.b2ui)) + _globals.s2f) + _globals.i2f) + _globals.us2f) + _globals.ui2f) + _globals.h2f) + _globals.f2f) + _globals.b2f;
    return _out;
}
