// Code generated by tools/gen-plural-rules; DO NOT EDIT.
// CLDR version: 48.1.0

package plural

import pluralop "github.com/agentable/go-intl/internal/plural"

func CardinalRule(loc string) (func(pluralop.OperandsRecord) pluralop.Category, bool) {
	switch loc {
	case "af":
		return cardinalAf, true
	case "am":
		return cardinalAm, true
	case "ar":
		return cardinalAr, true
	case "ar-EG":
		return cardinalArEG, true
	case "ar-SA":
		return cardinalArSA, true
	case "az":
		return cardinalAz, true
	case "be":
		return cardinalBe, true
	case "bg":
		return cardinalBg, true
	case "bn":
		return cardinalBn, true
	case "bn-IN":
		return cardinalBnIN, true
	case "ca":
		return cardinalCa, true
	case "cs":
		return cardinalCs, true
	case "cy":
		return cardinalCy, true
	case "da":
		return cardinalDa, true
	case "de":
		return cardinalDe, true
	case "de-AT":
		return cardinalDeAT, true
	case "de-DE":
		return cardinalDeDE, true
	case "el":
		return cardinalEl, true
	case "en":
		return cardinalEn, true
	case "en-AU":
		return cardinalEnAU, true
	case "en-CA":
		return cardinalEnCA, true
	case "en-GB":
		return cardinalEnGB, true
	case "en-US":
		return cardinalEnUS, true
	case "es":
		return cardinalEs, true
	case "es-419":
		return cardinalEs419, true
	case "es-ES":
		return cardinalEsES, true
	case "es-MX":
		return cardinalEsMX, true
	case "et":
		return cardinalEt, true
	case "eu":
		return cardinalEu, true
	case "fa":
		return cardinalFa, true
	case "fi":
		return cardinalFi, true
	case "fil":
		return cardinalFil, true
	case "fr":
		return cardinalFr, true
	case "fr-CA":
		return cardinalFrCA, true
	case "fr-FR":
		return cardinalFrFR, true
	case "ga":
		return cardinalGa, true
	case "gl":
		return cardinalGl, true
	case "gu":
		return cardinalGu, true
	case "he":
		return cardinalHe, true
	case "hi":
		return cardinalHi, true
	case "hi-IN":
		return cardinalHiIN, true
	case "hr":
		return cardinalHr, true
	case "hu":
		return cardinalHu, true
	case "hy":
		return cardinalHy, true
	case "id":
		return cardinalId, true
	case "id-ID":
		return cardinalIdID, true
	case "is":
		return cardinalIs, true
	case "it":
		return cardinalIt, true
	case "it-IT":
		return cardinalItIT, true
	case "ja":
		return cardinalJa, true
	case "ja-JP":
		return cardinalJaJP, true
	case "ka":
		return cardinalKa, true
	case "kk":
		return cardinalKk, true
	case "km":
		return cardinalKm, true
	case "kn":
		return cardinalKn, true
	case "ko":
		return cardinalKo, true
	case "ko-KR":
		return cardinalKoKR, true
	case "ky":
		return cardinalKy, true
	case "lo":
		return cardinalLo, true
	case "lt":
		return cardinalLt, true
	case "lv":
		return cardinalLv, true
	case "mk":
		return cardinalMk, true
	case "ml":
		return cardinalMl, true
	case "mn":
		return cardinalMn, true
	case "mr":
		return cardinalMr, true
	case "ms":
		return cardinalMs, true
	case "my":
		return cardinalMy, true
	case "nb":
		return cardinalNb, true
	case "ne":
		return cardinalNe, true
	case "nl":
		return cardinalNl, true
	case "nl-NL":
		return cardinalNlNL, true
	case "pa":
		return cardinalPa, true
	case "pl":
		return cardinalPl, true
	case "pl-PL":
		return cardinalPlPL, true
	case "pt":
		return cardinalPt, true
	case "pt-BR":
		return cardinalPtBR, true
	case "pt-PT":
		return cardinalPtPT, true
	case "ro":
		return cardinalRo, true
	case "ru":
		return cardinalRu, true
	case "ru-RU":
		return cardinalRuRU, true
	case "si":
		return cardinalSi, true
	case "sk":
		return cardinalSk, true
	case "sl":
		return cardinalSl, true
	case "sq":
		return cardinalSq, true
	case "sr":
		return cardinalSr, true
	case "sv":
		return cardinalSv, true
	case "sw":
		return cardinalSw, true
	case "ta":
		return cardinalTa, true
	case "te":
		return cardinalTe, true
	case "th":
		return cardinalTh, true
	case "th-TH":
		return cardinalThTH, true
	case "tr":
		return cardinalTr, true
	case "tr-TR":
		return cardinalTrTR, true
	case "uk":
		return cardinalUk, true
	case "ur":
		return cardinalUr, true
	case "uz":
		return cardinalUz, true
	case "vi":
		return cardinalVi, true
	case "vi-VN":
		return cardinalViVN, true
	case "zh":
		return cardinalZh, true
	case "zh-Hans":
		return cardinalZhHans, true
	case "zh-Hans-CN":
		return cardinalZhHansCN, true
	case "zh-Hant":
		return cardinalZhHant, true
	case "zh-Hant-HK":
		return cardinalZhHantHK, true
	case "zh-Hant-TW":
		return cardinalZhHantTW, true
	}
	return nil, false
}

func cardinalAf(o pluralop.OperandsRecord) pluralop.Category {
	if o.N.Equal(1) {
		return pluralop.One
	}
	return pluralop.Other
}

func cardinalAm(o pluralop.OperandsRecord) pluralop.Category {
	if (o.I.Equal(0)) || (o.N.Equal(1)) {
		return pluralop.One
	}
	return pluralop.Other
}

func cardinalAr(o pluralop.OperandsRecord) pluralop.Category {
	if o.N.Equal(0) {
		return pluralop.Zero
	}
	if o.N.Equal(1) {
		return pluralop.One
	}
	if o.N.Equal(2) {
		return pluralop.Two
	}
	if o.N.Mod(100).Between(3, 10) {
		return pluralop.Few
	}
	if o.N.Mod(100).Between(11, 99) {
		return pluralop.Many
	}
	return pluralop.Other
}

func cardinalArEG(o pluralop.OperandsRecord) pluralop.Category {
	if o.N.Equal(0) {
		return pluralop.Zero
	}
	if o.N.Equal(1) {
		return pluralop.One
	}
	if o.N.Equal(2) {
		return pluralop.Two
	}
	if o.N.Mod(100).Between(3, 10) {
		return pluralop.Few
	}
	if o.N.Mod(100).Between(11, 99) {
		return pluralop.Many
	}
	return pluralop.Other
}

func cardinalArSA(o pluralop.OperandsRecord) pluralop.Category {
	if o.N.Equal(0) {
		return pluralop.Zero
	}
	if o.N.Equal(1) {
		return pluralop.One
	}
	if o.N.Equal(2) {
		return pluralop.Two
	}
	if o.N.Mod(100).Between(3, 10) {
		return pluralop.Few
	}
	if o.N.Mod(100).Between(11, 99) {
		return pluralop.Many
	}
	return pluralop.Other
}

func cardinalAz(o pluralop.OperandsRecord) pluralop.Category {
	if o.N.Equal(1) {
		return pluralop.One
	}
	return pluralop.Other
}

func cardinalBe(o pluralop.OperandsRecord) pluralop.Category {
	if o.N.Mod(10).Equal(1) && o.N.Mod(100).NotEqual(11) {
		return pluralop.One
	}
	if o.N.Mod(10).Between(2, 4) && o.N.Mod(100).OutsideRange(12, 14) {
		return pluralop.Few
	}
	if (o.N.Mod(10).Equal(0)) || (o.N.Mod(10).Between(5, 9)) || (o.N.Mod(100).Between(11, 14)) {
		return pluralop.Many
	}
	return pluralop.Other
}

func cardinalBg(o pluralop.OperandsRecord) pluralop.Category {
	if o.N.Equal(1) {
		return pluralop.One
	}
	return pluralop.Other
}

func cardinalBn(o pluralop.OperandsRecord) pluralop.Category {
	if (o.I.Equal(0)) || (o.N.Equal(1)) {
		return pluralop.One
	}
	return pluralop.Other
}

func cardinalBnIN(o pluralop.OperandsRecord) pluralop.Category {
	if (o.I.Equal(0)) || (o.N.Equal(1)) {
		return pluralop.One
	}
	return pluralop.Other
}

func cardinalCa(o pluralop.OperandsRecord) pluralop.Category {
	if o.I.Equal(1) && o.V == 0 {
		return pluralop.One
	}
	if (o.E == 0 && o.I.NotEqual(0) && o.I.Mod(1000000).Equal(0) && o.V == 0) || (o.E < 0 || o.E > 5) {
		return pluralop.Many
	}
	return pluralop.Other
}

func cardinalCs(o pluralop.OperandsRecord) pluralop.Category {
	if o.I.Equal(1) && o.V == 0 {
		return pluralop.One
	}
	if o.I.Between(2, 4) && o.V == 0 {
		return pluralop.Few
	}
	if o.V != 0 {
		return pluralop.Many
	}
	return pluralop.Other
}

func cardinalCy(o pluralop.OperandsRecord) pluralop.Category {
	if o.N.Equal(0) {
		return pluralop.Zero
	}
	if o.N.Equal(1) {
		return pluralop.One
	}
	if o.N.Equal(2) {
		return pluralop.Two
	}
	if o.N.Equal(3) {
		return pluralop.Few
	}
	if o.N.Equal(6) {
		return pluralop.Many
	}
	return pluralop.Other
}

func cardinalDa(o pluralop.OperandsRecord) pluralop.Category {
	if (o.N.Equal(1)) || (o.T.NotEqual(0) && (o.I.Equal(0) || o.I.Equal(1))) {
		return pluralop.One
	}
	return pluralop.Other
}

func cardinalDe(o pluralop.OperandsRecord) pluralop.Category {
	if o.I.Equal(1) && o.V == 0 {
		return pluralop.One
	}
	return pluralop.Other
}

func cardinalDeAT(o pluralop.OperandsRecord) pluralop.Category {
	if o.I.Equal(1) && o.V == 0 {
		return pluralop.One
	}
	return pluralop.Other
}

func cardinalDeDE(o pluralop.OperandsRecord) pluralop.Category {
	if o.I.Equal(1) && o.V == 0 {
		return pluralop.One
	}
	return pluralop.Other
}

func cardinalEl(o pluralop.OperandsRecord) pluralop.Category {
	if o.N.Equal(1) {
		return pluralop.One
	}
	return pluralop.Other
}

func cardinalEn(o pluralop.OperandsRecord) pluralop.Category {
	if o.I.Equal(1) && o.V == 0 {
		return pluralop.One
	}
	return pluralop.Other
}

func cardinalEnAU(o pluralop.OperandsRecord) pluralop.Category {
	if o.I.Equal(1) && o.V == 0 {
		return pluralop.One
	}
	return pluralop.Other
}

func cardinalEnCA(o pluralop.OperandsRecord) pluralop.Category {
	if o.I.Equal(1) && o.V == 0 {
		return pluralop.One
	}
	return pluralop.Other
}

func cardinalEnGB(o pluralop.OperandsRecord) pluralop.Category {
	if o.I.Equal(1) && o.V == 0 {
		return pluralop.One
	}
	return pluralop.Other
}

func cardinalEnUS(o pluralop.OperandsRecord) pluralop.Category {
	if o.I.Equal(1) && o.V == 0 {
		return pluralop.One
	}
	return pluralop.Other
}

func cardinalEs(o pluralop.OperandsRecord) pluralop.Category {
	if o.N.Equal(1) {
		return pluralop.One
	}
	if (o.E == 0 && o.I.NotEqual(0) && o.I.Mod(1000000).Equal(0) && o.V == 0) || (o.E < 0 || o.E > 5) {
		return pluralop.Many
	}
	return pluralop.Other
}

func cardinalEs419(o pluralop.OperandsRecord) pluralop.Category {
	if o.N.Equal(1) {
		return pluralop.One
	}
	if (o.E == 0 && o.I.NotEqual(0) && o.I.Mod(1000000).Equal(0) && o.V == 0) || (o.E < 0 || o.E > 5) {
		return pluralop.Many
	}
	return pluralop.Other
}

func cardinalEsES(o pluralop.OperandsRecord) pluralop.Category {
	if o.N.Equal(1) {
		return pluralop.One
	}
	if (o.E == 0 && o.I.NotEqual(0) && o.I.Mod(1000000).Equal(0) && o.V == 0) || (o.E < 0 || o.E > 5) {
		return pluralop.Many
	}
	return pluralop.Other
}

func cardinalEsMX(o pluralop.OperandsRecord) pluralop.Category {
	if o.N.Equal(1) {
		return pluralop.One
	}
	if (o.E == 0 && o.I.NotEqual(0) && o.I.Mod(1000000).Equal(0) && o.V == 0) || (o.E < 0 || o.E > 5) {
		return pluralop.Many
	}
	return pluralop.Other
}

func cardinalEt(o pluralop.OperandsRecord) pluralop.Category {
	if o.I.Equal(1) && o.V == 0 {
		return pluralop.One
	}
	return pluralop.Other
}

func cardinalEu(o pluralop.OperandsRecord) pluralop.Category {
	if o.N.Equal(1) {
		return pluralop.One
	}
	return pluralop.Other
}

func cardinalFa(o pluralop.OperandsRecord) pluralop.Category {
	if (o.I.Equal(0)) || (o.N.Equal(1)) {
		return pluralop.One
	}
	return pluralop.Other
}

func cardinalFi(o pluralop.OperandsRecord) pluralop.Category {
	if o.I.Equal(1) && o.V == 0 {
		return pluralop.One
	}
	return pluralop.Other
}

func cardinalFil(o pluralop.OperandsRecord) pluralop.Category {
	if (o.V == 0 && (o.I.Equal(1) || o.I.Equal(2) || o.I.Equal(3))) || (o.V == 0 && o.I.Mod(10).NotEqual(4) && o.I.Mod(10).NotEqual(6) && o.I.Mod(10).NotEqual(9)) || (o.V != 0 && o.F.Mod(10).NotEqual(4) && o.F.Mod(10).NotEqual(6) && o.F.Mod(10).NotEqual(9)) {
		return pluralop.One
	}
	return pluralop.Other
}

func cardinalFr(o pluralop.OperandsRecord) pluralop.Category {
	if o.I.Equal(0) || o.I.Equal(1) {
		return pluralop.One
	}
	if (o.E == 0 && o.I.NotEqual(0) && o.I.Mod(1000000).Equal(0) && o.V == 0) || (o.E < 0 || o.E > 5) {
		return pluralop.Many
	}
	return pluralop.Other
}

func cardinalFrCA(o pluralop.OperandsRecord) pluralop.Category {
	if o.I.Equal(0) || o.I.Equal(1) {
		return pluralop.One
	}
	if (o.E == 0 && o.I.NotEqual(0) && o.I.Mod(1000000).Equal(0) && o.V == 0) || (o.E < 0 || o.E > 5) {
		return pluralop.Many
	}
	return pluralop.Other
}

func cardinalFrFR(o pluralop.OperandsRecord) pluralop.Category {
	if o.I.Equal(0) || o.I.Equal(1) {
		return pluralop.One
	}
	if (o.E == 0 && o.I.NotEqual(0) && o.I.Mod(1000000).Equal(0) && o.V == 0) || (o.E < 0 || o.E > 5) {
		return pluralop.Many
	}
	return pluralop.Other
}

func cardinalGa(o pluralop.OperandsRecord) pluralop.Category {
	if o.N.Equal(1) {
		return pluralop.One
	}
	if o.N.Equal(2) {
		return pluralop.Two
	}
	if o.N.Between(3, 6) {
		return pluralop.Few
	}
	if o.N.Between(7, 10) {
		return pluralop.Many
	}
	return pluralop.Other
}

func cardinalGl(o pluralop.OperandsRecord) pluralop.Category {
	if o.I.Equal(1) && o.V == 0 {
		return pluralop.One
	}
	return pluralop.Other
}

func cardinalGu(o pluralop.OperandsRecord) pluralop.Category {
	if (o.I.Equal(0)) || (o.N.Equal(1)) {
		return pluralop.One
	}
	return pluralop.Other
}

func cardinalHe(o pluralop.OperandsRecord) pluralop.Category {
	if (o.I.Equal(1) && o.V == 0) || (o.I.Equal(0) && o.V != 0) {
		return pluralop.One
	}
	if o.I.Equal(2) && o.V == 0 {
		return pluralop.Two
	}
	return pluralop.Other
}

func cardinalHi(o pluralop.OperandsRecord) pluralop.Category {
	if (o.I.Equal(0)) || (o.N.Equal(1)) {
		return pluralop.One
	}
	return pluralop.Other
}

func cardinalHiIN(o pluralop.OperandsRecord) pluralop.Category {
	if (o.I.Equal(0)) || (o.N.Equal(1)) {
		return pluralop.One
	}
	return pluralop.Other
}

func cardinalHr(o pluralop.OperandsRecord) pluralop.Category {
	if (o.V == 0 && o.I.Mod(10).Equal(1) && o.I.Mod(100).NotEqual(11)) || (o.F.Mod(10).Equal(1) && o.F.Mod(100).NotEqual(11)) {
		return pluralop.One
	}
	if (o.V == 0 && o.I.Mod(10).Between(2, 4) && o.I.Mod(100).OutsideRange(12, 14)) || (o.F.Mod(10).Between(2, 4) && o.F.Mod(100).OutsideRange(12, 14)) {
		return pluralop.Few
	}
	return pluralop.Other
}

func cardinalHu(o pluralop.OperandsRecord) pluralop.Category {
	if o.N.Equal(1) {
		return pluralop.One
	}
	return pluralop.Other
}

func cardinalHy(o pluralop.OperandsRecord) pluralop.Category {
	if o.I.Equal(0) || o.I.Equal(1) {
		return pluralop.One
	}
	return pluralop.Other
}

func cardinalId(o pluralop.OperandsRecord) pluralop.Category {
	return pluralop.Other
}

func cardinalIdID(o pluralop.OperandsRecord) pluralop.Category {
	return pluralop.Other
}

func cardinalIs(o pluralop.OperandsRecord) pluralop.Category {
	if (o.T.Equal(0) && o.I.Mod(10).Equal(1) && o.I.Mod(100).NotEqual(11)) || (o.T.Mod(10).Equal(1) && o.T.Mod(100).NotEqual(11)) {
		return pluralop.One
	}
	return pluralop.Other
}

func cardinalIt(o pluralop.OperandsRecord) pluralop.Category {
	if o.I.Equal(1) && o.V == 0 {
		return pluralop.One
	}
	if (o.E == 0 && o.I.NotEqual(0) && o.I.Mod(1000000).Equal(0) && o.V == 0) || (o.E < 0 || o.E > 5) {
		return pluralop.Many
	}
	return pluralop.Other
}

func cardinalItIT(o pluralop.OperandsRecord) pluralop.Category {
	if o.I.Equal(1) && o.V == 0 {
		return pluralop.One
	}
	if (o.E == 0 && o.I.NotEqual(0) && o.I.Mod(1000000).Equal(0) && o.V == 0) || (o.E < 0 || o.E > 5) {
		return pluralop.Many
	}
	return pluralop.Other
}

func cardinalJa(o pluralop.OperandsRecord) pluralop.Category {
	return pluralop.Other
}

func cardinalJaJP(o pluralop.OperandsRecord) pluralop.Category {
	return pluralop.Other
}

func cardinalKa(o pluralop.OperandsRecord) pluralop.Category {
	if o.N.Equal(1) {
		return pluralop.One
	}
	return pluralop.Other
}

func cardinalKk(o pluralop.OperandsRecord) pluralop.Category {
	if o.N.Equal(1) {
		return pluralop.One
	}
	return pluralop.Other
}

func cardinalKm(o pluralop.OperandsRecord) pluralop.Category {
	return pluralop.Other
}

func cardinalKn(o pluralop.OperandsRecord) pluralop.Category {
	if (o.I.Equal(0)) || (o.N.Equal(1)) {
		return pluralop.One
	}
	return pluralop.Other
}

func cardinalKo(o pluralop.OperandsRecord) pluralop.Category {
	return pluralop.Other
}

func cardinalKoKR(o pluralop.OperandsRecord) pluralop.Category {
	return pluralop.Other
}

func cardinalKy(o pluralop.OperandsRecord) pluralop.Category {
	if o.N.Equal(1) {
		return pluralop.One
	}
	return pluralop.Other
}

func cardinalLo(o pluralop.OperandsRecord) pluralop.Category {
	return pluralop.Other
}

func cardinalLt(o pluralop.OperandsRecord) pluralop.Category {
	if o.N.Mod(10).Equal(1) && o.N.Mod(100).OutsideRange(11, 19) {
		return pluralop.One
	}
	if o.N.Mod(10).Between(2, 9) && o.N.Mod(100).OutsideRange(11, 19) {
		return pluralop.Few
	}
	if o.F.NotEqual(0) {
		return pluralop.Many
	}
	return pluralop.Other
}

func cardinalLv(o pluralop.OperandsRecord) pluralop.Category {
	if (o.N.Mod(10).Equal(0)) || (o.N.Mod(100).Between(11, 19)) || (o.V == 2 && o.F.Mod(100).Between(11, 19)) {
		return pluralop.Zero
	}
	if (o.N.Mod(10).Equal(1) && o.N.Mod(100).NotEqual(11)) || (o.V == 2 && o.F.Mod(10).Equal(1) && o.F.Mod(100).NotEqual(11)) || (o.V != 2 && o.F.Mod(10).Equal(1)) {
		return pluralop.One
	}
	return pluralop.Other
}

func cardinalMk(o pluralop.OperandsRecord) pluralop.Category {
	if (o.V == 0 && o.I.Mod(10).Equal(1) && o.I.Mod(100).NotEqual(11)) || (o.F.Mod(10).Equal(1) && o.F.Mod(100).NotEqual(11)) {
		return pluralop.One
	}
	return pluralop.Other
}

func cardinalMl(o pluralop.OperandsRecord) pluralop.Category {
	if o.N.Equal(1) {
		return pluralop.One
	}
	return pluralop.Other
}

func cardinalMn(o pluralop.OperandsRecord) pluralop.Category {
	if o.N.Equal(1) {
		return pluralop.One
	}
	return pluralop.Other
}

func cardinalMr(o pluralop.OperandsRecord) pluralop.Category {
	if o.N.Equal(1) {
		return pluralop.One
	}
	return pluralop.Other
}

func cardinalMs(o pluralop.OperandsRecord) pluralop.Category {
	return pluralop.Other
}

func cardinalMy(o pluralop.OperandsRecord) pluralop.Category {
	return pluralop.Other
}

func cardinalNb(o pluralop.OperandsRecord) pluralop.Category {
	if o.N.Equal(1) {
		return pluralop.One
	}
	return pluralop.Other
}

func cardinalNe(o pluralop.OperandsRecord) pluralop.Category {
	if o.N.Equal(1) {
		return pluralop.One
	}
	return pluralop.Other
}

func cardinalNl(o pluralop.OperandsRecord) pluralop.Category {
	if o.I.Equal(1) && o.V == 0 {
		return pluralop.One
	}
	return pluralop.Other
}

func cardinalNlNL(o pluralop.OperandsRecord) pluralop.Category {
	if o.I.Equal(1) && o.V == 0 {
		return pluralop.One
	}
	return pluralop.Other
}

func cardinalPa(o pluralop.OperandsRecord) pluralop.Category {
	if o.N.Between(0, 1) {
		return pluralop.One
	}
	return pluralop.Other
}

func cardinalPl(o pluralop.OperandsRecord) pluralop.Category {
	if o.I.Equal(1) && o.V == 0 {
		return pluralop.One
	}
	if o.V == 0 && o.I.Mod(10).Between(2, 4) && o.I.Mod(100).OutsideRange(12, 14) {
		return pluralop.Few
	}
	if (o.V == 0 && o.I.NotEqual(1) && o.I.Mod(10).Between(0, 1)) || (o.V == 0 && o.I.Mod(10).Between(5, 9)) || (o.V == 0 && o.I.Mod(100).Between(12, 14)) {
		return pluralop.Many
	}
	return pluralop.Other
}

func cardinalPlPL(o pluralop.OperandsRecord) pluralop.Category {
	if o.I.Equal(1) && o.V == 0 {
		return pluralop.One
	}
	if o.V == 0 && o.I.Mod(10).Between(2, 4) && o.I.Mod(100).OutsideRange(12, 14) {
		return pluralop.Few
	}
	if (o.V == 0 && o.I.NotEqual(1) && o.I.Mod(10).Between(0, 1)) || (o.V == 0 && o.I.Mod(10).Between(5, 9)) || (o.V == 0 && o.I.Mod(100).Between(12, 14)) {
		return pluralop.Many
	}
	return pluralop.Other
}

func cardinalPt(o pluralop.OperandsRecord) pluralop.Category {
	if o.I.Between(0, 1) {
		return pluralop.One
	}
	if (o.E == 0 && o.I.NotEqual(0) && o.I.Mod(1000000).Equal(0) && o.V == 0) || (o.E < 0 || o.E > 5) {
		return pluralop.Many
	}
	return pluralop.Other
}

func cardinalPtBR(o pluralop.OperandsRecord) pluralop.Category {
	if o.I.Between(0, 1) {
		return pluralop.One
	}
	if (o.E == 0 && o.I.NotEqual(0) && o.I.Mod(1000000).Equal(0) && o.V == 0) || (o.E < 0 || o.E > 5) {
		return pluralop.Many
	}
	return pluralop.Other
}

func cardinalPtPT(o pluralop.OperandsRecord) pluralop.Category {
	if o.I.Equal(1) && o.V == 0 {
		return pluralop.One
	}
	if (o.E == 0 && o.I.NotEqual(0) && o.I.Mod(1000000).Equal(0) && o.V == 0) || (o.E < 0 || o.E > 5) {
		return pluralop.Many
	}
	return pluralop.Other
}

func cardinalRo(o pluralop.OperandsRecord) pluralop.Category {
	if o.I.Equal(1) && o.V == 0 {
		return pluralop.One
	}
	if (o.V != 0) || (o.N.Equal(0)) || (o.N.NotEqual(1) && o.N.Mod(100).Between(1, 19)) {
		return pluralop.Few
	}
	return pluralop.Other
}

func cardinalRu(o pluralop.OperandsRecord) pluralop.Category {
	if o.V == 0 && o.I.Mod(10).Equal(1) && o.I.Mod(100).NotEqual(11) {
		return pluralop.One
	}
	if o.V == 0 && o.I.Mod(10).Between(2, 4) && o.I.Mod(100).OutsideRange(12, 14) {
		return pluralop.Few
	}
	if (o.V == 0 && o.I.Mod(10).Equal(0)) || (o.V == 0 && o.I.Mod(10).Between(5, 9)) || (o.V == 0 && o.I.Mod(100).Between(11, 14)) {
		return pluralop.Many
	}
	return pluralop.Other
}

func cardinalRuRU(o pluralop.OperandsRecord) pluralop.Category {
	if o.V == 0 && o.I.Mod(10).Equal(1) && o.I.Mod(100).NotEqual(11) {
		return pluralop.One
	}
	if o.V == 0 && o.I.Mod(10).Between(2, 4) && o.I.Mod(100).OutsideRange(12, 14) {
		return pluralop.Few
	}
	if (o.V == 0 && o.I.Mod(10).Equal(0)) || (o.V == 0 && o.I.Mod(10).Between(5, 9)) || (o.V == 0 && o.I.Mod(100).Between(11, 14)) {
		return pluralop.Many
	}
	return pluralop.Other
}

func cardinalSi(o pluralop.OperandsRecord) pluralop.Category {
	if (o.N.Equal(0) || o.N.Equal(1)) || (o.I.Equal(0) && o.F.Equal(1)) {
		return pluralop.One
	}
	return pluralop.Other
}

func cardinalSk(o pluralop.OperandsRecord) pluralop.Category {
	if o.I.Equal(1) && o.V == 0 {
		return pluralop.One
	}
	if o.I.Between(2, 4) && o.V == 0 {
		return pluralop.Few
	}
	if o.V != 0 {
		return pluralop.Many
	}
	return pluralop.Other
}

func cardinalSl(o pluralop.OperandsRecord) pluralop.Category {
	if o.V == 0 && o.I.Mod(100).Equal(1) {
		return pluralop.One
	}
	if o.V == 0 && o.I.Mod(100).Equal(2) {
		return pluralop.Two
	}
	if (o.V == 0 && o.I.Mod(100).Between(3, 4)) || (o.V != 0) {
		return pluralop.Few
	}
	return pluralop.Other
}

func cardinalSq(o pluralop.OperandsRecord) pluralop.Category {
	if o.N.Equal(1) {
		return pluralop.One
	}
	return pluralop.Other
}

func cardinalSr(o pluralop.OperandsRecord) pluralop.Category {
	if (o.V == 0 && o.I.Mod(10).Equal(1) && o.I.Mod(100).NotEqual(11)) || (o.F.Mod(10).Equal(1) && o.F.Mod(100).NotEqual(11)) {
		return pluralop.One
	}
	if (o.V == 0 && o.I.Mod(10).Between(2, 4) && o.I.Mod(100).OutsideRange(12, 14)) || (o.F.Mod(10).Between(2, 4) && o.F.Mod(100).OutsideRange(12, 14)) {
		return pluralop.Few
	}
	return pluralop.Other
}

func cardinalSv(o pluralop.OperandsRecord) pluralop.Category {
	if o.I.Equal(1) && o.V == 0 {
		return pluralop.One
	}
	return pluralop.Other
}

func cardinalSw(o pluralop.OperandsRecord) pluralop.Category {
	if o.I.Equal(1) && o.V == 0 {
		return pluralop.One
	}
	return pluralop.Other
}

func cardinalTa(o pluralop.OperandsRecord) pluralop.Category {
	if o.N.Equal(1) {
		return pluralop.One
	}
	return pluralop.Other
}

func cardinalTe(o pluralop.OperandsRecord) pluralop.Category {
	if o.N.Equal(1) {
		return pluralop.One
	}
	return pluralop.Other
}

func cardinalTh(o pluralop.OperandsRecord) pluralop.Category {
	return pluralop.Other
}

func cardinalThTH(o pluralop.OperandsRecord) pluralop.Category {
	return pluralop.Other
}

func cardinalTr(o pluralop.OperandsRecord) pluralop.Category {
	if o.N.Equal(1) {
		return pluralop.One
	}
	return pluralop.Other
}

func cardinalTrTR(o pluralop.OperandsRecord) pluralop.Category {
	if o.N.Equal(1) {
		return pluralop.One
	}
	return pluralop.Other
}

func cardinalUk(o pluralop.OperandsRecord) pluralop.Category {
	if o.V == 0 && o.I.Mod(10).Equal(1) && o.I.Mod(100).NotEqual(11) {
		return pluralop.One
	}
	if o.V == 0 && o.I.Mod(10).Between(2, 4) && o.I.Mod(100).OutsideRange(12, 14) {
		return pluralop.Few
	}
	if (o.V == 0 && o.I.Mod(10).Equal(0)) || (o.V == 0 && o.I.Mod(10).Between(5, 9)) || (o.V == 0 && o.I.Mod(100).Between(11, 14)) {
		return pluralop.Many
	}
	return pluralop.Other
}

func cardinalUr(o pluralop.OperandsRecord) pluralop.Category {
	if o.I.Equal(1) && o.V == 0 {
		return pluralop.One
	}
	return pluralop.Other
}

func cardinalUz(o pluralop.OperandsRecord) pluralop.Category {
	if o.N.Equal(1) {
		return pluralop.One
	}
	return pluralop.Other
}

func cardinalVi(o pluralop.OperandsRecord) pluralop.Category {
	return pluralop.Other
}

func cardinalViVN(o pluralop.OperandsRecord) pluralop.Category {
	return pluralop.Other
}

func cardinalZh(o pluralop.OperandsRecord) pluralop.Category {
	return pluralop.Other
}

func cardinalZhHans(o pluralop.OperandsRecord) pluralop.Category {
	return pluralop.Other
}

func cardinalZhHansCN(o pluralop.OperandsRecord) pluralop.Category {
	return pluralop.Other
}

func cardinalZhHant(o pluralop.OperandsRecord) pluralop.Category {
	return pluralop.Other
}

func cardinalZhHantHK(o pluralop.OperandsRecord) pluralop.Category {
	return pluralop.Other
}

func cardinalZhHantTW(o pluralop.OperandsRecord) pluralop.Category {
	return pluralop.Other
}

func cardinalOther(pluralop.OperandsRecord) pluralop.Category {
	return pluralop.Other
}
