&&res.locals.numFiles>0),expected:false,error:`Posting files through anonymizers has been disabled ${disableAnonymizerFilePosting?'globally':'on this board'}`},
{result:res.locals.numFiles>res.locals.board.settings.maxFiles,blocking:true,expected:false,error:`Too many files. Max files per post ${res.locals.board.settings.maxFiles<globalLimits.postFiles.max?'on this board ':''}is ${res.locals.board.settings.maxFiles}`},
&&res.locals.board.settings.forceReplyMessage),expected:false,error:'Replies must include a message'},
{result:hasNoMandatoryFile&&!existsBody(req.body.thread)&&res.locals.board.settings.forceThreadFile,expected:false,error:'Threads must include a file'},
{result:hasNoMandatoryFile&&existsBody(req.body.thread)&&res.locals.board.settings.forceReplyFile,expected:false,error:'Replies must include a file'},
{result:lengthBody(req.body.message,0,globalLimits.fieldLength.message),expected:false,blocking:true,error:`Message must be ${globalLimits.fieldLength.message} characters or less`},
expected:false,error:`Reply messages must be ${res.locals.board.settings.minReplyMessageLength}-${res.locals.board.settings.maxReplyMessageLength} characters`},
expected:false,error:`Thread messages must be ${res.locals.board.settings.minThreadMessageLength}-${res.locals.board.settings.maxThreadMessageLength} characters`},
{result:lengthBody(req.body.postpassword,0,globalLimits.fieldLength.postpassword),expected:false,error:`Password must be ${globalLimits.fieldLength.postpassword} characters or less`},
{result:lengthBody(req.body.name,0,globalLimits.fieldLength.name),expected:false,error:`Name must be ${globalLimits.fieldLength.name} characters or less`},
{result:lengthBody(req.body.subject,0,globalLimits.fieldLength.subject),expected:false,error:`Subject must be ${globalLimits.fieldLength.subject} characters or less`},
{result:lengthBody(req.body.email,0,globalLimits.fieldLength.email),expected:false,error:`Email must be ${globalLimits.fieldLength.email} characters or less`},