<% sprintf("<b>%0#8X</b><br>", $flags) %>
<% join($sep, @match) %>

<%once>
my %named_bits = (
    PSFMODEL => 0x0000_0001,
    EXTMODEL => 0x0000_0002,
    FITTED => 0x0000_0004,
    FITFAIL => 0x0000_0008,
    POORFIT => 0x0000_0010,
    PAIR => 0x0000_0020,
    PSFSTAR => 0x0000_0040,
    SATSTAR => 0x0000_0080,
    BLEND => 0x0000_0100,
    EXTERNALPOS => 0x0000_0200,
    BADPSF => 0x0000_0400,
    DEFECT => 0x0000_0800,
    SATURATED => 0x0000_1000,
    CR_LIMIT => 0x0000_2000,
    EXT_LIMIT => 0x0000_4000,
    MOMENTS_FAILURE => 0x000_8000,
    SKY_FAILURE => 0x0001_0000,
    SKYVAR_FAILURE => 0x0002_0000,
    MOMENTS_SN => 0x0004_0000,
    UNUSED => 0x0008_0000,
    BIG_RADIUS => 0x0010_0000,
    AP_MAGS => 0x0020_0000,
    BLEND_FIT => 0x0040_0000,
    EXTENDED_FIT => 0x0080_0000,
    EXTENDED_STATS => 0x0100_0000,
    LINEAR_FIT => 0x0200_0000,
    NONLINEAR_FIT => 0x0400_0000,
    RADIAL_FLUX => 0x0800_0000,
    SIZE_SKIPPED => 0x1000_0000,
    ON_SPIKE => 0x2000_0000,
    ON_GHOST => 0x4000_0000,
    OFF_CHIP => 0x8000_0000,
);

my @sorted = qw(
    PSFMODEL
    EXTMODEL
    FITTED
    FITFAIL
    POORFIT
    PAIR
    PSFSTAR
    SATSTAR
    BLEND
    EXTERNALPOS
    BADPSF
    DEFECT
    SATURATED
    CR_LIMIT
    EXT_LIMIT
    MOMENTS_FAILURE
    SKY_FAILURE
    SKYVAR_FAILURE
    MOMENTS_SN
    BIG_RADIUS
    AP_MAGS
    BLEND_FIT
    EXTENDED_FIT
    EXTENDED_STATS
    LINEAR_FIT
    NONLINEAR_FIT
    RADIAL_FLUX
    SIZE_SKIPPED
    ON_SPIKE
    ON_GHOST
    OFF_CHIP
);
</%once>

<%args>
$flags
$sep => ' '
</%args>

<%init>
# Convert a flags bitmask to a string showing the representation of the flags.
my @match;
foreach my $k (@sorted) {
    if ($flags & $named_bits{$k}) {
        push @match, $k;
    }
}
</%init>
