code:
/* eslint-disable camelcase */
/**
 * @param {App.Entity.SlaveState | number} slave
 */
window.clearSummaryCache = function clearSummaryCache(slave) {
	if (!slave) {
		setup.summaryCache = {};
	} else if (slave instanceof Object && slave.ID !== Infinity && slave.ID !== -Infinity) {
		setup.summaryCache[slave.ID] = undefined;
	} else {
		setup.summaryCache[slave] = undefined;
	}
};

/**
 * @param {App.Entity.SlaveState} slave
 * @returns {object}
 */
window.SlaveSummary = function SlaveSummary(slave) {
	const V = State.variables;
	if (V.useSummaryCache) {
		if (setup.summaryCache[slave.ID] === undefined) {
			setup.summaryCache[slave.ID] = SlaveSummaryUncached(slave);
		}
		// this.output.appendChild(setup.summaryCache[State.temporary.Slave.ID].cloneNode(true))
		return setup.summaryCache[slave.ID];
	}
	return SlaveSummaryUncached(slave);
};

window.SlaveSummaryUncached = (function() {
	"use strict";
	let V;
	let r;
	/*
	let pronouns;
	let he;
	let him;
	let his;
	let hers;
	let himself;
	let boy;
	let He;
	let His;
	*/

	/**
	 * @param {App.Entity.SlaveState} slave
	 * @returns {string} */
	function SlaveSummaryUncached(slave) {
		V = State.variables;
		r = "";
		/*
		pronouns = getPronouns(slave);
		he = pronouns.pronoun;
		him = pronouns.object;
		his = pronouns.possessive;
		hers = pronouns.possessivePronoun;
		himself = pronouns.objectReflexive;
		boy = pronouns.noun;
		He = capFirstChar(he);
		His = capFirstChar(his);
		*/

		if (V.abbreviateDevotion === 1) {
			short_devotion(slave);
		} else if (V.abbreviateDevotion === 2) {
			long_devotion(slave);
		}
		if (slave.fuckdoll === 0) {
			if (V.abbreviateRules === 1) {
				short_rules(slave);
			} else if (V.abbreviateRules === 2) {
				long_rules(slave);
			}
		}
		if (slave.tired !== 0) {
			r += `Tired.`;
		}
		if (V.abbreviateDiet === 1) {
			short_weight(slave);
		} else if (V.abbreviateDiet === 2) {
			long_weight(slave);
		}
		if (V.abbreviateDiet === 1) {
			short_diet(slave);
		} else if (V.abbreviateDiet === 2) {
			long_diet(slave);
		}
		if (V.abbreviateHealth === 1) {
			short_health(slave);
		} else if (V.abbreviateHealth === 2) {
			long_health(slave);
		}
		if (V.abbreviateDrugs === 1) {
			short_drugs(slave);
		} else if (V.abbreviateDrugs === 2) {
			long_drugs(slave);
		}
		if (V.abbreviateNationality + V.abbreviateGenitalia + V.abbreviatePhysicals + V.abbreviateSkills + V.abbreviateMental !== 0) {
			r += `<br>`;
			if (V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1) {
				r += "    ";
			}
		}
		V.desc = SlaveTitle(slave);
		const first_letter = V.desc.substring(0, 1).toUpperCase();
		V.desc = first_letter + V.desc.substring(1);
		r += `<strong><span class="coral">${V.desc}${V.abbreviatePhysicals === 2? '.' : ''}</span></strong> `;
		if (V.seeRace === 1) {
			r += `<span class="tan">`;
			if (V.abbreviateRace === 1) {
				short_race(slave);
			} else if (V.abbreviateRace === 2) {
				long_race(slave);
			}
			r += `</span> `;
		}
		if (V.abbreviateNationality === 1) {
			short_nationality(slave);
		} else if (V.abbreviateNationality === 2) {
			long_nationality(slave);
		}
		if (V.abbreviatePhysicals === 1) {
			short_skin(slave);
		} else {
			r += `<span class="pink">${slave.skin.charAt(0).toUpperCase() + slave.skin.slice(1)} skin.</span> `;
		}
		if (V.abbreviateGenitalia === 1) {
			short_genitals(slave);
		} else if (V.abbreviateGenitalia === 2) {
			long_genitals(slave);
		}
		if (V.abbreviatePhysicals === 1) {
			short_age(slave);
			short_face(slave);
			short_eyes(slave);
			short_ears(slave);
			if (slave.markings !== "none") {
				r += "Markings";
			}
			short_lips(slave);
			short_teeth(slave);
			short_muscles(slave);
			short_limbs(slave);
			short_voice(slave);
			short_tits_ass(slave);
			short_hips(slave);
			short_waist(slave);
			short_implants(slave);
			short_lactation(slave);
			short_mods(slave);
			r += `</span>`;
		} else if (V.abbreviatePhysicals === 2) {
			long_age(slave);
			long_face(slave);
			long_eyes(slave);
			long_ears(slave);
			long_lips(slave);
			long_teeth(slave);
			long_muscles(slave);
			long_limbs(slave);
			long_voice(slave);
			long_tits_ass(slave);
			long_hips(slave);
			long_waist(slave);
			long_implants(slave);
			long_lactation(slave);
			long_mods(slave);
			if (slave.brand !== 0) {
				r += `Branded.`;
			}
			r += `</span>`;
		}
		if (V.abbreviateHormoneBalance === 1) {
			if (slave.hormoneBalance <= -21) {
				r += `<span class="deepskyblue">`;
				r += ` <strong>HB:M</strong>`;
			} else if (slave.hormoneBalance <= 20) {
				r += `<span class="pink">`;
				r += ` <strong>HB:N</strong>`;
			} else if (slave.hormoneBalance <= 500) {
				r += `<span class="pink">`;
				r += ` <strong>HB:F</strong>`;
			}
			r += `</span>`;
		} else if (V.abbreviateHormoneBalance === 2) {
			r += `<span class=`;
			if (slave.hormoneBalance <= -21) {
				r += `"deepskyblue"`;
			} else {
				r += `"pink"`;
			}
			r += `> `;
			if (slave.hormoneBalance < -400) {
				r += `Overwhelmingly masculine`;
			} else if (slave.hormoneBalance <= -300) {
				r += `Extremely masculine`;
			} else if (slave.hormoneBalance <= -200) {
				r += `Heavily masculine`;
			} else if (slave.hormoneBalance <= -100) {
				r += `Very masculine`;
			} else if (slave.hormoneBalance <= -21) {
				r += `Masculine`;
			} else if (slave.hormoneBalance <= 20) {
				r += `Neutral`;
			} else if (slave.hormoneBalance <= 99) {
				r += `Feminine`;
			} else if (slave.hormoneBalance <= 199) {
				r += `Very feminine`;
			} else if (slave.hormoneBalance <= 299) {
				r += `Heavily feminine`;
			} else if (slave.hormoneBalance <= 399) {
				r += `Extremely feminine`;
			} else if (slave.hormoneBalance <= 500) {
				r += `Overwhelmingly feminine`;
			}
			r += ` hormone balance.</span>`;
		}
		r += "
";
		if (V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1) {
			r += "    ";
		}
		if (V.abbreviateSkills === 1) {
			short_intelligence(slave);
			short_sex_skills(slave);
			if (slave.skill.combat > 0) {
				r += "C";
			}
			r += " ";
			short_prestige(slave);
			short_porn_prestige(slave);
		} else if (V.abbreviateSkills === 2) {
			long_intelligence(slave);
			long_sex_skills(slave);
			if (slave.skill.combat > 0) {
				r += "Trained fighter.";
			}
			r += " ";
			long_prestige(slave);
			long_porn_prestige(slave);
		}
		if (V.abbreviateMental === 1) {
			if (slave.fetish !== "mindbroken") {
				if (slave.fetishKnown === 1) {
					short_fetish(slave);
				}
				if (slave.attrKnown === 1) {
					short_attraction(slave);
				}
			}
			if (slave.clitPiercing === 3) {
				short_smart_fetish(slave);
				short_smart_attraction(slave);
			}
			short_behavior_flaw(slave);
			short_sex_flaw(slave);
			short_behavior_quirk(slave);
			short_sex_quirk(slave);
		} else if (V.abbreviateMental === 2) {
			if (slave.fetish !== "mindbroken") {
				if (slave.fetishKnown === 1) {
					long_fetish(slave);
				}
				if (slave.attrKnown === 1) {
					long_attraction(slave);
				}
			}
			if (slave.clitPiercing === 3) {
				long_smart_fetish(slave);
				long_smart_attraction(slave);
			}
			long_behavior_flaw(slave);
			long_sex_flaw(slave);
			long_behavior_quirk(slave);
			long_sex_quirk(slave);
		}
		if (slave.custom.label) {
			r += `<strong><span class="yellow">${capFirstChar(slave.custom.label)}.</span></strong>`;
		}
		if ((slave.relationship !== 0) || (slave.relation !== 0) || (V.abbreviateClothes === 2) || (V.abbreviateRulesets === 2)) {
			r += `<br>`;
			if (V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1) {
				r += `    `;
			}
		}
		if (V.abbreviateMental === 1) {
			r += `<span class="lightgreen">`;
			if (V.familyTesting === 1) {
				short_extended_family(slave);
			} else {
				short_legacy_family(slave);
			}
			r += `</span>`;
			short_clone(slave);
			short_rival(slave);
		} else if (V.abbreviateMental === 2) {
			if (V.familyTesting === 1) {
				long_extended_family(slave);
			} else {
				long_legacy_family(slave);
			}
			long_clone(slave);
			long_rival(slave);
		}
		if (slave.fuckdoll === 0) {
			if (V.abbreviateClothes === 2) {
				r += `    `;
				if (slave.choosesOwnClothes === 1) {
					r += "Dressing herself. ";
				}
				long_clothes(slave);
				long_collar(slave);
				long_belly(slave);
				if (slave.amp !== 1) {
					long_legs(slave);
				}
				if (canWalk(slave)) {
					long_shoes(slave);
				}
				long_chastity(slave);
				long_vaginal_acc(slave);
				long_dick_acc(slave);
				long_buttplug(slave);
			}
		}
		r += `    `;
		rules_assistant(slave);
		if (V.abbreviateOrigins === 2 && slave.origin !== 0) {
			origins(slave);
		}
		return r;
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function short_devotion(slave) {
		if (slave.fetish === "mindbroken") {
			r += `<span class="red">MB</span>`;
		} else if (slave.devotion < -95) {
			r += `<span class="darkviolet">Hate${V.summaryStats ? `[${slave.devotion}]` : ''}</span>`;
		} else if (slave.devotion < -50) {
			r += `<span class="darkviolet">Hate${V.summaryStats ? `[${slave.devotion}]` : ''}</span>`;
		} else if (slave.devotion < -20) {
			r += `<span class="mediumorchid">Res${V.summaryStats ? `[${slave.devotion}]` : ''}</span>`;
		} else if (slave.devotion <= 20) {
			r += `<span class="yellow">Ambiv${V.summaryStats ? `[${slave.devotion}]` : ''}</span>`;
		} else if (slave.devotion <= 50) {
			r += `<span class="hotpink">Accept${V.summaryStats ? `[${slave.devotion}]` : ''}</span>`;
		} else if (slave.devotion <= 95) {
			r += `<span class="deeppink">Devo${V.summaryStats ? `[${slave.devotion}]` : ''}</span>`;
		} else {
			r += `<span class="magenta">Wor${V.summaryStats ? `[${slave.devotion}]` : ''}</span>`;
		}
		r += " ";
		if (slave.fetish === "mindbroken") {
			return;
		} else if (slave.trust < -95) {
			r += `<span class="darkgoldenrod">ETerr${V.summaryStats ? `[${slave.trust}]` : ''}</span>`;
		} else if (slave.trust < -50) {
			r += `<span class="goldenrod">Terr${V.summaryStats ? `[${slave.trust}]` : ''}</span>`;
		} else if (slave.trust < -20) {
			r += `<span class="gold">Fright${V.summaryStats ? `[${slave.trust}]` : ''}</span>`;
		} else if (slave.trust <= 20) {
			r += `<span class="yellow">Fear${V.summaryStats ? `[${slave.trust}]` : ''}</span>`;
		} else if (slave.trust <= 50) {
			if (slave.devotion < -20) {
				r += `<span class="orange">Caref${V.summaryStats ? `[${slave.trust}]` : ''}</span>`;
			} else {
				r += `<span class="mediumaquamarine">Caref${V.summaryStats ? `[${slave.trust}]` : ''}</span>`;
			}
		} else if (slave.trust < 95) {
			if (slave.devotion < -20) {
				r += `<span class="orangered">Bold${V.summaryStats ? `[${slave.trust}]` : ''}</span>`;
			} else {
				r += `<span class="mediumseagreen">Trust${V.summaryStats ? `[${slave.trust}]` : ''}</span>`;
			}
		} else {
			if (slave.devotion < -20) {
				r += `<span class="darkred">Defiant${V.summaryStats ? `[${slave.trust}]` : ''}</span>`;
			} else {
				r += `<span class="seagreen">VTrust ${V.summaryStats ? `[${slave.trust}]` : ''}</span>`;
			}
		}
		r += " ";
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function long_devotion(slave) {
		if (slave.fetish === "mindbroken") {
			r += `<span class="red">Mindbroken.</span>`;
		} else if (slave.devotion < -95) {
			r += `<span class="darkviolet">Very hateful${V.summaryStats ? `[${slave.devotion}]` : ''}.</span>`;
		} else if (slave.devotion < -50) {
			r += `<span class="darkviolet">Hateful${V.summaryStats ? `[${slave.devotion}]` : ''}.</span>`;
		} else if (slave.devotion < -20) {
			r += `<span class="mediumorchid">Resistant${V.summaryStats ? `[${slave.devotion}]` : ''}.</span>`;
		} else if (slave.devotion <= 20) {
			r += `<span class="yellow">Ambivalent${V.summaryStats ? `[${slave.devotion}]` : ''}.</span>`;
		} else if (slave.devotion <= 50) {
			r += `<span class="hotpink">Accepting${V.summaryStats ? `[${slave.devotion}]` : ''}.</span>`;
		} else if (slave.devotion <= 95) {
			r += `<span class="deeppink">Devoted${V.summaryStats ? `[${slave.devotion}]` : ''}.</span>`;
		} else {
			r += `<span class="magenta">Worshipful${V.summaryStats ? `[${slave.devotion}]` : ''}.</span>`;
		}
		r += " ";
		if (slave.fetish === "mindbroken") {
			return;
		} else if (slave.trust < -95) {
			r += `<span class="darkgoldenrod">Extremely terrified${V.summaryStats ? `[${slave.trust}]` : ''}.</span>`;
		} else if (slave.trust < -50) {
			r += `<span class="goldenrod">Terrified${V.summaryStats ? `[${slave.trust}]` : ''}.</span>`;
		} else if (slave.trust < -20) {
			r += `<span class="gold">Frightened${V.summaryStats ? `[${slave.trust}]` : ''}.</span>`;
		} else if (slave.trust <= 20) {
			r += `<span class="yellow">Fearful${V.summaryStats ? `[${slave.trust}]` : ''}.</span>`;
		} else if (slave.trust <= 50) {
			if (slave.devotion < -20) {
				r += `<span class="orange">Careful${V.summaryStats ? `[${slave.trust}]` : ''}.</span>`;
			} else {
				r += `<span class="mediumaquamarine">Careful${V.summaryStats ? `[${slave.trust}]` : ''}.</span>`;
			}
		} else if (slave.trust < 95) {
			if (slave.devotion < -20) {
				r += `<span class="orangered">Bold${V.summaryStats ? `[${slave.trust}]` : ''}.</span>`;
			} else {
				r += `<span class="mediumseagreen">Trusting${V.summaryStats ? `[${slave.trust}]` : ''}.</span>`;
			}
		} else {
			if (slave.devotion < -20) {
				r += `<span class="darkred">Defiant${V.summaryStats ? `[${slave.trust}]` : ''}.</span>`;
			} else {
				r += `<span class="seagreen">Profoundly trusting${V.summaryStats ? `[${slave.trust}]` : ''}.</span>`;
			}
		}
		r += " ";
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function short_rules(slave) {
		switch (slave.livingRules) {
			case "luxurious":
				r += `<strong>LS:Lux</strong>`;
				break;
			case "normal":
				r += `<strong>LS:Nor</strong>`;
				break;
			default:
				r += `<strong>LS:Spa</strong>`;
				break;
		}
		r += " ";
		if (canTalk(slave)) {
			switch (slave.speechRules) {
				case "permissive":
					r += `<strong>SpR:P</strong>`;
					break;
				case "accent elimination":
					r += `<strong>SpR:NoAcc</strong>`;
					break;
				case "language lessons":
					r += `<strong>SpR:LL</strong>`;
					break;
				default:
					r += `<strong>SpR:R</strong>`;
					break;
			}
			r += " ";
		}
		switch (slave.relationshipRules) {
			case "permissive":
				r += `<strong>ReR:P</strong>`;
				break;
			case "just friends":
				r += `<strong>ReR:Fr</strong>`;
				break;
			default:
				r += `<strong>ReR:R</strong>`;
				break;
		}
		r += " ";
		switch (slave.standardPunishment) {
			case "confinement":
				r += `<strong>Pun:Conf</strong>`;
				break;
			case "whipping":
				r += `<strong>Pun:Whip</strong>`;
				break;
			case "chastity":
				r += `<strong>Pun:Chas</strong>`;
				break;
			default:
				r += `<strong>Pun:Situ</strong>`;
				break;
		}
		r += " ";
		switch (slave.standardReward) {
			case "relaxation":
				r += `<strong>Rew:Relx</strong>`;
				break;
			case "drugs":
				r += `<strong>Rew:Drug</strong>`;
				break;
			case "orgasm":
				r += `<strong>Rew:Orga</strong>`;
				break;
			default:
				r += `<strong>Rew:Situ</strong>`;
				break;
		}
		r += " ";
		switch (slave.releaseRules) {
			case "permissive":
				r += `<strong>MaR:P</strong>`;
				break;
			case "sapphic":
				r += `<strong>MaR:S</strong>`;
				break;
			case "masturbation":
				r += `<strong>MaR:M</strong>`;
				break;
			case "chastity":
				r += `<strong>MaR:C</strong>`;
				break;
			default:
				r += `<strong>MaR:R</strong>`;
				break;
		}
		r += " ";
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function long_rules(slave) {
		r += `Living standard: ${slave.livingRules}. `;
		if (canTalk(slave)) {
			r += `Speech rules: ${slave.speechRules}. `;
		}
		r += `Relationship rules: ${slave.relationshipRules}. `;
		r += `Typical punishment: ${slave.standardPunishment}. `;
		r += `Typical reward: ${slave.standardReward}. `;
		r += `Release rules: ${slave.releaseRules}. `;
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function short_weight(slave) {
		if (slave.weight < -95) {
			r += `<strong><span class="red">W---${V.summaryStats? `[${slave.weight}]` : ''}</span></strong>`;
		} else if (slave.weight < -30) {
			if (slave.hips < -1) {
				r += `<strong>W--${V.summaryStats? `[${slave.weight}]` : ''}</strong>`;
			} else {
				r += `<strong><span class="red">W--${V.summaryStats? `[${slave.weight}]` : ''}</span></strong>`;
			}
		} else if (slave.weight < -10) {
			r += `<strong>W-${V.summaryStats? `[${slave.weight}]` : ''}</strong>`;
		} else if (slave.weight <= 10) {
			r += `<strong>W${V.summaryStats? `[${slave.weight}]` : ''}</strong>`;
		} else if (slave.weight <= 30) {
			r += `<strong>W+${V.summaryStats? `[${slave.weight}]` : ''}</strong>`;
		} else if (slave.weight <= 95) {
			if (slave.hips > 1 || V.arcologies[0].FSHedonisticDecadence !== "unset") {
				r += `<strong>W++${V.summaryStats? `[${slave.weight}]` : ''}</strong>`;
			} else {
				r += `<strong><span class="red">W++${V.summaryStats? `[${slave.weight}]` : ''}</span></strong>`;
			}
		} else if (slave.weight <= 130) {
			if (slave.hips > 2 || V.arcologies[0].FSHedonisticDecadence !== "unset") {
				r += `<strong>W+++${V.summaryStats? `[${slave.weight}]` : ''}</strong>`;
			} else {
				r += `<strong><span class="red">W+++${V.summaryStats? `[${slave.weight}]` : ''}</span></strong>`;
			}
		} else if (slave.weight <= 160) {
			if (V.arcologies[0].FSHedonisticDecadence !== "unset") {
				r += `<strong>W++++${V.summaryStats? `[${slave.weight}]` : ''}</strong>`;
			} else {
				r += `<strong><span class="red">W++++${V.summaryStats? `[${slave.weight}]` : ''}</span></strong>`;
			}
		} else if (slave.weight <= 190) {
			if (V.arcologies[0].FSHedonisticDecadence !== "unset") {
				r += `<strong>W+++++${V.summaryStats? `[${slave.weight}]` : ''}</strong>`;
			} else {
				r += `<strong><span class="red">W+++++${V.summaryStats? `[${slave.weight}]` : ''}</span></strong>`;
			}
		} else {
			if (V.arcologies[0].FSHedonisticDecadence !== "unset") {
				r += `<strong>W++++++${V.summaryStats? `[${slave.weight}]` : ''}</strong>`;
			} else {
				r += `<strong><span class="red">W++++++${V.summaryStats? `[${slave.weight}]` : ''}</span></strong>`;
			}
		}
		r += " ";
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function long_weight(slave) {
		if (slave.weight < -95) {
			r += `<span class="red">Emaciated${V.summaryStats ? `[${slave.weight}]`: ''}.</span>`;
		} else if (slave.weight < -30) {
			if (slave.hips < -1) {
				r += `Model-thin${V.summaryStats? `[${slave.weight}]`: ''}.`;
			} else {
				r += `<span class="red">Very thin${V.summaryStats ? `[${slave.weight}]`: ''}.</span>`;
			}
		} else if (slave.weight < -10) {
			r += `Thin${V.summaryStats? `[${slave.weight}]`: ''}.`;
		} else if (slave.weight <= 10) {
			r += `Trim${V.summaryStats? `[${slave.weight}]`: ''}.`;
		} else if (slave.weight <= 30) {
			r += `Plush${V.summaryStats? `[${slave.weight}]`: ''}.`;
		} else if (slave.weight <= 95) {
			if (slave.hips > 1 || V.arcologies[0].FSHedonisticDecadence !== "unset") {
				r += `Nicely chubby${V.summaryStats? `[${slave.weight}]`: ''}.`;
			} else {
				r += `<span class="red">Overweight${V.summaryStats ? `[${slave.weight}]`: ''}.</span>`;
			}
		} else if (slave.weight <= 130) {
			if (slave.hips > 2 || V.arcologies[0].FSHedonisticDecadence !== "unset") {
				r += `Pleasantly soft and shapely${V.summaryStats? `[${slave.weight}]`: ''}.`;
			} else {
				r += `<span class="red">Fat${V.summaryStats ? `[${slave.weight}]`: ''}.</span>`;
			}
		} else if (slave.weight <= 160) {
			if (V.arcologies[0].FSHedonisticDecadence !== "unset") {
				r += `Amazingly voluptuous${V.summaryStats? `[${slave.weight}]`: ''}.`;
			} else {
				r += `<span class="red">Obese${V.summaryStats ? `[${slave.weight}]`: ''}.</span>`;
			}
		} else if (slave.weight <= 190) {
			if (V.arcologies[0].FSHedonisticDecadence !== "unset") {
				r += `SSBBW${V.summaryStats? `[${slave.weight}]`: ''}.`;
			} else {
				r += `<span class="red">Super Obese${V.summaryStats ? `[${slave.weight}]`: ''}.</span>`;
			}
		} else {
			if (V.arcologies[0].FSHedonisticDecadence !== "unset") {
				r += `Perfectly massive${V.summaryStats? `[${slave.weight}]`: ''}.`;
			} else {
				r += `<span class="red">Dangerously Obese${V.summaryStats ? `[${slave.weight}]`: ''}.</span>`;
			}
		}
		r += " ";
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function short_diet(slave) {
		r += `<span class="teal">`;
		switch (slave.diet) {
			case "restricted":
				r += `<strong>Di:W-</strong>`;
				break;
			case "fattening":
				r += `<strong>Di:W+</strong>`;
				break;
			case "XX":
				r += `<strong>Di:XX+</strong>`;
				break;
			case "XY":
				r += `<strong>Di:XY+</strong>`;
				break;
			case "XXY":
				r += `<strong>Di:XXY+</strong>`;
				break;
			case "muscle building":
				r += `<strong>Di:M+</strong>`;
				break;
			case "slimming":
				r += `<strong>Di:M-</strong>`;
				break;
			case "cum production":
				r += `<strong>Di:C+</strong>`;
				break;
			case "cleansing":
				r += `<strong>Di:H+</strong>`;
				break;
			case "fertility":
				r += `<strong>Di:F+</strong>`;
				break;
		}
		r += `</span> `;
		r += `<span class="cyan">`;
		if (slave.dietCum === 2) {
			r += `<strong>Cum++</strong>`;
		} else if (((slave.dietCum === 1) && (slave.dietMilk === 0))) {
			r += `<strong>Cum+</strong>`;
		} else if (((slave.dietCum === 1) && (slave.dietMilk === 1))) {
			r += `<strong>Cum+ Milk+</strong>`;
		} else if (((slave.dietCum === 0) && (slave.dietMilk === 1))) {
			r += `<strong>Milk+</strong>`;
		} else if ((slave.dietMilk === 2)) {
			r += `<strong>Milk++</strong>`;
		}
		r += `</span> `;
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function long_diet(slave) {
		r += `<span class="teal">`;
		switch (slave.diet) {
			case "restricted":
				r += `Dieting.`;
				break;
			case "fattening":
				r += `Gaining weight.`;
				break;
			case "XX":
				r += `Estrogen rich.`;
				break;
			case "XY":
				r += `Testosterone rich.`;
				break;
			case "XXY":
				r += `Futanari mix.`;
				break;
			case "muscle building":
				r += `Pumping iron.`;
				break;
			case "slimming":
				r += `Slimming down.`;
				break;
			case "cum production":
				r += `Cum production.`;
				break;
			case "cleansing":
				r += `Cleansing.`;
				break;
			case "fertility":
				r += `Fertility.`;
				break;
		}
		r += `</span> `;
		if (slave.dietCum === 2) {
			r += `Diet base: <span class="cyan">Cum Based.</span>`;
		} else if (((slave.dietCum === 1) && (slave.dietMilk === 0))) {
			r += `Diet base: <span class="cyan">Cum Added.</span>`;
		} else if (((slave.dietCum === 1) && (slave.dietMilk === 1))) {
			r += `Diet base: <span class="cyan">Milk & Cum Added.</span>`;
		} else if (((slave.dietCum === 0) && (slave.dietMilk === 1))) {
			r += `Diet base: <span class="cyan">Milk Added.</span>`;
		} else if ((slave.dietMilk === 2)) {
			r += `Diet base: <span class="cyan">Milk Based.</span>`;
		}
		r += " ";
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function short_health(slave) {
		if (slave.health < -20) {
			r += `<strong><span class="red">H${V.summaryStats? `[${slave.health}]` : ''}</span></strong>`;
		} else if (slave.health <= 20) {
			r += `<strong><span class="yellow">H${V.summaryStats? `[${slave.health}]` : ''}</span></strong>`;
		} else if (slave.health > 20) {
			r += `<strong><span class="green">H${V.summaryStats? `[${slave.health}]` : ''}</span></strong>`;
		}
		r += " ";
		if (passage() === "Clinic" && V.clinicUpgradeScanner && slave.chem > 15) {
			r += `<strong><span class="cyan">C${Math.ceil(slave.chem/10)}</span></strong> `;
		}
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function long_health(slave) {
		if (slave.health < -90) {
			r += `<span class="red">On the edge of death${V.summaryStats? `[${slave.health}]` : ''}.</span>`;
		} else if (slave.health < -50) {
			r += `<span class="red">Extremely unhealthy${V.summaryStats? `[${slave.health}]` : ''}.</span>`;
		} else if (slave.health < -20) {
			r += `<span class="red">Unhealthy${V.summaryStats? `[${slave.health}]` : ''}.</span>`;
		} else if (slave.health <= 20) {
			r += `<span class="yellow">Healthy${V.summaryStats? `[${slave.health}]` : ''}.</span>`;
		} else if (slave.health <= 50) {
			r += `<span class="green">Very healthy${V.summaryStats? `[${slave.health}]` : ''}.</span>`;
		} else if (slave.health <= 90) {
			r += `<span class="green">Extremely healthy${V.summaryStats? `[${slave.health}]` : ''}.</span>`;
		} else {
			r += `<span class="green">Unnaturally healthy${V.summaryStats? `[${slave.health}]` : ''}.</span>`;
		}
		r += " ";
		if (passage() === "Clinic" && V.clinicUpgradeScanner && slave.chem > 15) {
			r += `<strong><span class="cyan">Carcinogen buildup: ${Math.ceil(slave.chem/10)}</span>.</strong> `;
		}
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function short_drugs(slave) {
		r += `<span class="tan">`;
		switch (slave.drugs) {
			case "breast injections":
				r += `<strong>Dr:Boobs+</strong>`;
				break;
			case "intensive breast injections":
				r += `<strong>Dr:Boobs++</strong>`;
				break;
			case "hyper breast injections":
				r += `<strong>Dr:Boobs+++</strong>`;
				break;
			case "butt injections":
				r += `<strong>Dr:Butt+</strong>`;
				break;
			case "intensive butt injections":
				r += `<strong>Dr:Butt++</strong>`;
				break;
			case "hyper butt injections":
				r += `<strong>Dr:Butt+++</strong>`;
				break;
			case "lip injections":
				r += `<strong>Dr:Lip+</strong>`;
				break;
			case "fertility drugs":
				r += `<strong>Dr:Fert+</strong>`;
				break;
			case "super fertility drugs":
				r += `<strong>Dr:Fert++</strong>`;
				break;
			case "penis enhancement":
				r += `<strong>Dr:Dick+</strong>`;
				break;
			case "intensive penis enhancement":
				r += `<strong>Dr:Dick++</strong>`;
				break;
			case "hyper penis enhancement":
				r += `<strong>Dr:Dick+++</strong>`;
				break;
			case "testicle enhancement":
				r += `<strong>Dr:Balls+</strong>`;
				break;
			case "intensive testicle enhancement":
				r += `<strong>Dr:Balls++</strong>`;
				break;
			case "hyper testicle enhancement":
				r += `<strong>Dr:Balls+++</strong>`;
				break;
			case "psychosuppressants":
				r += `<strong>Dr:Psych</strong>`;
				break;
			case "steroids":
				r += `<strong>Dr:Ster</strong>`;
				break;
			case "female hormone injections":
				r += `<strong>Dr:HormXX++</strong>`;
				break;
			case "male hormone injections":
				r += `<strong>Dr:HormXY++</strong>`;
				break;
			case "hormone enhancers":
				r += `<strong>Dr:Horm+</strong>`;
				break;
			case "hormone blockers":
				r += `<strong>Dr:Horm-</strong>`;
				break;
			case "anti-aging cream":
				r += `<strong>Dr:Age-</strong>`;
				break;
			case "appetite suppressors":
				r += `<strong>Dr:ApSup</strong>`;
				break;
			case "penis atrophiers":
				r += `<strong>Dr:Dick-</strong>`;
				break;
			case "testicle atrophiers":
				r += `<strong>Dr:Balls-</strong>`;
				break;
			case "clitoris atrophiers":
				r += `<strong>Dr:Clit-</strong>`;
				break;
			case "labia atrophiers":
				r += `<strong>Dr:Labia-</strong>`;
				break;
			case "nipple atrophiers":
				r += `<strong>Dr:Nipple-</strong>`;
				break;
			case "lip atrophiers":
				r += `<strong>Dr:Lip-</strong>`;
				break;
			case "breast redistributors":
				r += `<strong>Dr:Breast-</strong>`;
				break;
			case "butt redistributors":
				r += `<strong>Dr:Butt-</strong>`;
				break;
			case "sag-B-gone":
				r += `<strong>Dr:AntiSag</strong>`;
				break;
			case "growth stimulants":
				r += `<strong>Dr:GroStim</strong>`;
				break;
			case "priapism agents":
				r += `<strong>Dr:Erection</strong>`;
				break;
		}
		r += `</span> `;
		r += `<span class="lightgreen">`;
		if (slave.curatives === 2) {
			r += `<strong>Cura</strong>`;
		} else if (slave.curatives === 1) {
			r += `<strong>Prev</strong>`;
		}
		r += `</span> `;
		if (slave.aphrodisiacs !== 0) {
			r += `<span class="lightblue">`;
			if (slave.aphrodisiacs === 1) {
				r += `<strong>Aph</strong>`;
			} else if (slave.aphrodisiacs === 2) {
				r += `<strong>Aph++</strong>`;
			} else {
				r += `<strong>Anaph</strong>`;
			}
			r += `</span> `;
		}
		if (slave.addict !== 0) {
			r += `<span class="cyan">Add</span>`;
		}
		r += `<span class="lightsalmon">`;
		if (slave.hormones > 1) {
			r += `<strong>Ho:F+</strong>`;
		} else if (slave.hormones > 0) {
			r += `<strong>Ho:F</strong>`;
		} else if (slave.hormones < -1) {
			r += `<strong>Ho:M+</strong>`;
		} else if (slave.hormones < 0) {
			r += `<strong>Ho:M</strong>`;
		}
		r += `</span> `;
		r += `<span class="mediumseagreen">`;
		if ((slave.bellyImplant > -1)) {
			r += `<strong>Belly Imp</strong>`;
		} else if (((slave.preg <= -2) || (slave.ovaries === 0)) && (slave.vagina !== -1)) {
			r += `<strong>Barr</strong>`;
		} else if (slave.pubertyXX === 0 && (slave.ovaries === 1 || slave.mpreg === 1)) {
			r += `<strong>Prepub</strong>`;
		} else if (slave.ovaryAge >= 47 && (slave.ovaries === 1 || slave.mpreg === 1)) {
			r += `<strong>Meno</strong>`;
		} else if (slave.pregWeek < 0) {
			r += `<strong>Postpartum</strong>`;
		} else if (slave.preg === -1) {
			r += `<strong>CC</strong>`;
		} else if (slave.preg === 0 && (slave.ovaries === 1 || slave.mpreg === 1)) {
			r += `<strong>Fert+</strong>`;
		} else if (((slave.preg < slave.pregData.normalBirth / 10) && (slave.preg > 0) && slave.pregKnown === 0) || slave.pregWeek === 1) {
			r += `<strong>Preg?</strong>`;
		} else if ((slave.preg >= 36) && (slave.broodmother > 0)) {
			r += `<strong>Perm preg</strong>`;
		} else if (slave.pregKnown === 1) {
			r += `<strong>${slave.pregWeek} wks preg</strong>`;
		}
		r += `</span> `;
		if (slave.induce === 1) {
			r += `<span class="orange"><strong>Early Labor</strong></span>`;
		}
		if (slave.pubertyXY === 0 && slave.balls > 0) {
			r += `<strong>Prepub balls</strong>`;
		}
		if (slave.balls > 0 && slave.vasectomy === 1) {
			r += `<strong>Vasect</strong>`;
		}
		r += `<span class="springgreen">`;
		if (slave.inflation === 3) {
			r += `<strong>8 ltr ${slave.inflationType}</strong>`;
		} else if (slave.inflation === 2) {
			r += `<strong>4 ltr ${slave.inflationType}</strong>`;
		} else if (slave.inflation === 1) {
			r += `<strong>2 ltr ${slave.inflationType}</strong>`;
		} else if (slave.bellyFluid > 0) {
			r += `<strong>${slave.bellyFluid}ccs ${slave.inflationType}</strong>`;
		}
		r += `</span> `;
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function long_drugs(slave) {
		let swd = WombGetLittersData(slave);
		if ((slave.drugs !== "no drugs") && (slave.drugs !== "none")) {
			r += `<span class="tan">On ${slave.drugs}.</span> `;
		}
		r += `<span class="lightgreen">`;
		if (slave.curatives === 2) {
			r += `On curatives.`;
		} else if (slave.curatives === 1) {
			r += `On preventatives.`;
		}
		r += `</span> `;
		r += `<span class="lightblue">`;
		if (slave.aphrodisiacs > 0) {
			r += `On ${slave.aphrodisiacs > 1 ? 'extreme': ''} aphrodisiacs.`;
		} else if (slave.aphrodisiacs === -1) {
			r += `On anaphrodisiacs.`;
		}
		r += `</span> `;
		if (slave.addict !== 0) {
			r += `<span class="cyan">Addict.</span>`;
		}
		r += `<span class="lightsalmon">`;
		if (slave.hormones > 1) {
			r += `Heavy female hormones.`;
		} else if (slave.hormones > 0) {
			r += `Female hormones.`;
		} else if (slave.hormones < -1) {
			r += `Heavy male hormones.`;
		} else if (slave.hormones < 0) {
			r += `Male hormones.`;
		}
		r += `</span> `;
		r += `<span class="mediumseagreen">`;
		if ((slave.bellyImplant > -1)) {
			r += `Belly Implant.`;
		} else if (((slave.preg <= -2) || (slave.ovaries === 0)) && (slave.vagina !== -1)) {
			r += `Barren.`;
		} else if (slave.pubertyXX === 0 && (slave.ovaries === 1 || slave.mpreg === 1)) {
			r += `Not ovulating yet.`;
		} else if (slave.ovaryAge >= 47 && (slave.ovaries === 1 || slave.mpreg === 1)) {
			r += `Menopausal.`;
		} else if (slave.pregWeek < 0) {
			r += `Postpartum.`;
		} else if (slave.preg === -1) {
			r += `On contraceptives.`;
		} else if (slave.preg === 0 && (slave.ovaries === 1 || slave.mpreg === 1)) {
			r += `Fertile.`;
		} else if (((slave.preg < slave.pregData.normalBirth / 10) && (slave.preg > 0) && slave.pregKnown === 0) || slave.pregWeek === 1) {
			r += `May be pregnant.`;
		} else if ((slave.preg >= 36) && (slave.broodmother > 0)) {
			r += `Permanently pregnant.`;
		} else if (swd.litters.length > 1) {
			r += `<span class="lime">`;
			r += `Mutipregnant, (` + swd.litters.length + ` sets).`;
			r+= ` Max:` + swd.litters[0] + ` / Min:` + swd.litters[swd.litters.length-1] + ` week(s).`;
			r += `</span> `;
		} else if (slave.pregKnown === 1) {
			if (slave.pregType < 2 || slave.broodmother > 0) {
				r += `${slave.pregWeek} weeks pregnant.`;
			} else {
				r += `${slave.pregWeek} weeks pregnant with `;
				if (slave.pregType >= 40) {
					r += `a tremendous brood of offspring.`;
				} else if (slave.pregType >= 20) {
					r += `a brood of offspring.`;
				} else if (slave.pregType >= 10) {
					r += `${slave.pregType} babies.`;
				} else if (slave.pregType === 9) {
					r += `nonuplets.`;
				} else if (slave.pregType === 8) {
					r += `octuplets.`;
				} else if (slave.pregType === 7) {
					r += `septuplets.`;
				} else if (slave.pregType === 6) {
					r += `sextuplets.`;
				} else if (slave.pregType === 5) {
					r += `quintuplets.`;
				} else if (slave.pregType === 4) {
					r += `quadruplets.`;
				} else if (slave.pregType === 3) {
					r += `triplets.`;
				} else {
					r += `twins.`;
				}
			}
			if (slave.preg > slave.pregData.normalBirth && slave.broodmother === 0) {
				r += ` (Overdue.)`;
			}
		}
		r += `</span> `;
		if (slave.induce === 1) {
			r += `<span class="orange">Showing signs of early labor.</span>`;
		}
		if (slave.pubertyXY === 0 && slave.balls > 0) {
			r += `Has not had first ejaculation.`;
		}
		if (slave.balls > 0 && slave.vasectomy === 1) {
			r += `Vasectomy.`;
		}
		r += `<span class="springgreen">`;
		if (slave.inflation === 3) {
			r += `Filled with 8 liters of ${slave.inflationType}.`;
		} else if (slave.inflation === 2) {
			r += `Filled with 4 liters of ${slave.inflationType}.`;
		} else if (slave.inflation === 1) {
			r += `Filled with 2 liters of ${slave.inflationType}.`;
		} else if (slave.bellyFluid > 0) {
			r += `Stuffed with ${slave.bellyFluid}ccs of ${slave.inflationType}.`;
		}
		r += `</span> `;
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function long_race(slave) {
		switch (slave.race) {
			case "white":
				r += `Caucasian.`;
				break;
			case "asian":
				r += `Asian.`;
				break;
			case "indo-aryan":
				r += `Indo-aryan.`;
				break;
			case "latina":
				r += `Latina.`;
				break;
			case "middle eastern":
				r += `Middle Eastern.`;
				break;
			case "black":
				r += `Black.`;
				break;
			case "pacific islander":
				r += `Pacific Islander.`;
				break;
			case "malay":
				r += `Malay.`;
				break;
			case "amerindian":
				r += `Amerindian.`;
				break;
			case "semitic":
				r += `Semitic.`;
				break;
			case "southern european":
				r += `Southern European.`;
				break;
			case "mixed race":
				r += `Mixed race.`;
				break;
			default:
				r += `${slave.race.charAt(0).toUpperCase() + slave.race.slice(1)}.`;
				break;
		}
		r += " ";
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function short_race(slave) {
		switch (slave.race) {
			case "white":
				r += `C`;
				break;
			case "asian":
				r += `A`;
				break;
			case "indo-aryan":
				r += `I`;
				break;
			case "latina":
				r += `L`;
				break;
			case "middle eastern":
				r += `ME`;
				break;
			case "black":
				r += `B`;
				break;
			case "pacific islander":
				r += `PI`;
				break;
			case "malay":
				r += `M`;
				break;
			case "amerindian":
				r += `AI`;
				break;
			case "semitic":
				r += `S`;
				break;
			case "southern european":
				r += `SE`;
				break;
			case "mixed race":
				r += `MR`;
				break;
			default:
				r += `${slave.race.charAt(0).toUpperCase() + slave.race.charAt(1) + slave.race.charAt(2)}`;
				break;
		}
		r += " ";
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function short_nationality(slave) {
		r += `<span class="tan">`;
		switch (slave.nationality) {
			case "Afghan":
				r += `Afg`;
				break;
			case "Albanian":
				r += `Alb`;
				break;
			case "Algerian":
				r += `Alg`;
				break;
			case "American":
				r += `USA`;
				break;
			case "Andorran":
				r += `And`;
				break;
			case "Angolan":
				r += `Ang`;
				break;
			case "Antiguan":
				r += `AB`;
				break;
			case "Argentinian":
				r += `Arg`;
				break;
			case "Armenian":
				r += `Arm`;
				break;
			case "Aruban":
				r += `Aru`;
				break;
			case "Australian":
				r += `Aus`;
				break;
			case "Austrian":
				r += `Aut`;
				break;
			case "Azerbaijani":
				r += `Aze`;
				break;
			case "Bahamian":
				r += `Bah`;
				break;
			case "Bahraini":
				r += `Bah`;
				break;
			case "Bangladeshi":
				r += `Bgd`;
				break;
			case "Barbadian":
				r += `Bar`;
				break;
			case "Belarusian":
				r += `Ber`;
				break;
			case "Belgian":
				r += `Bel`;
				break;
			case "Belizean":
				r += `Blz`;
				break;
			case "Beninese":
				r += `Ben`;
				break;
			case "Bermudian":
				r += `Bmd`;
				break;
			case "Bhutanese":
				r += `Bhu`;
				break;
			case "Bissau-Guinean":
				r += `GB`;
				break;
			case "Bolivian":
				r += `Bol`;
				break;
			case "Bosnian":
				r += `Bos`;
				break;
			case "Brazilian":
				r += `Bra`;
				break;
			case "British":
				r += `UK`;
				break;
			case "Bruneian":
				r += `Bru`;
				break;
			case "Bulgarian":
				r += `Bul`;
				break;
			case "Burkinabé":
				r += `BF`;
				break;
			case "Burmese":
				r += `Bur`;
				break;
			case "Burundian":
				r += `Bnd`;
				break;
			case "Cambodian":
				r += `Kam`;
				break;
			case "Cameroonian":
				r += `Cam`;
				break;
			case "Canadian":
				r += `Can`;
				break;
			case "Cape Verdean":
				r += `CV`;
				break;
			case "Catalan":
				r += `Cat`;
				break;
			case "Central African":
				r += `CAR`;
				break;
			case "Chadian":
				r += `Cha`;
				break;
			case "Chilean":
				r += `Chl`;
				break;
			case "Chinese":
				r += `Chi`;
				break;
			case "Colombian":
				r += `Col`;
				break;
			case "Comorian":
				r += `Com`;
				break;
			case "Congolese":
				r += `RC`;
				break;
			case "a Cook Islander":
				r += `CI`;
				break;
			case "Costa Rican":
				r += `CR`;
				break;
			case "Croatian":
				r += `Cro`;
				break;
			case "Cuban":
				r += `Cub`;
				break;
			case "Curaçaoan":
				r += `Cur`;
				break;
			case "Cypriot":
				r += `Cyp`;
				break;
			case "Czech":
				r += `Cze`;
				break;
			case "Danish":
				r += `Den`;
				break;
			case "Djiboutian":
				r += `Dji`;
				break;
			case "Dominican":
				r += `DR`;
				break;
			case "Dominiquais":
				r += `Dom`;
				break;
			case "Dutch":
				r += `Nld`;
				break;
			case "East Timorese":
				r += `ET`;
				break;
			case "Ecuadorian":
				r += `Ecu`;
				break;
			case "Egyptian":
				r += `Egy`;
				break;
			case "Emirati":
				r += `UAE`;
				break;
			case "Equatoguinean":
				r += `EG`;
				break;
			case "Eritrean":
				r += `Eri`;
				break;
			case "Estonian":
				r += `Est`;
				break;
			case "Ethiopian":
				r += `Eth`;
				break;
			case "Fijian":
				r += `Fij`;
				break;
			case "Filipina":
				r += `Phl`;
				break;
			case "Finnish":
				r += `Fin`;
				break;
			case "French":
				r += `Fra`;
				break;
			case "French Guianan":
				r += `FG`;
				break;
			case "French Polynesian":
				r += `FP`;
				break;
			case "Gabonese":
				r += `Gab`;
				break;
			case "Gambian":
				r += `Gam`;
				break;
			case "Georgian":
				r += `Geo`;
				break;
			case "German":
				r += `Ger`;
				break;
			case "Ghanan":
				r += `Gha`;
				break;
			case "Greek":
				r += `Gre`;
				break;
			case "Greenlandic":
				r += `Grn`;
				break;
			case "Grenadian":
				r += `Gda`;
				break;
			case "Guamanian":
				r += `Gua`;
				break;
			case "Guatemalan":
				r += `Gtm`;
				break;
			case "Guinean":
				r += `Gui`;
				break;
			case "Guyanese":
				r += `Guy`;
				break;
			case "Haitian":
				r += `Hai`;
				break;
			case "Honduran":
				r += `Hon`;
				break;
			case "Hungarian":
				r += `Hun`;
				break;
			case "I-Kiribati":
				r += `Kir`;
				break;
			case "Icelandic":
				r += `Ice`;
				break;
			case "Indian":
				r += `Ind`;
				break;
			case "Indonesian":
				r += `Idn`;
				break;
			case "Iranian":
				r += `Irn`;
				break;
			case "Iraqi":
				r += `Irq`;
				break;
			case "Irish":
				r += `Irl`;
				break;
			case "Israeli":
				r += `Isr`;
				break;
			case "Italian":
				r += `Ita`;
				break;
			case "Ivorian":
				r += `IC`;
				break;
			case "Jamaican":
				r += `Jam`;
				break;
			case "Japanese":
				r += `Jpn`;
				break;
			case "Jordanian":
				r += `Jor`;
				break;
			case "Kazakh":
				r += `Kaz`;
				break;
			case "Kenyan":
				r += `Ken`;
				break;
			case "Kittitian":
				r += `SKN`;
				break;
			case "Korean":
				r += `Kor`;
				break;
			case "Kosovan":
				r += `Kos`;
				break;
			case "Kurdish":
				r += `Kur`;
				break;
			case "Kuwaiti":
				r += `Kuw`;
				break;
			case "Kyrgyz":
				r += `Kyr`;
				break;
			case "Laotian":
				r += `Lao`;
				break;
			case "Latvian":
				r += `Lat`;
				break;
			case "Lebanese":
				r += `Lbn`;
				break;
			case "Liberian":
				r += `Lib`;
				break;
			case "Libyan":
				r += `Lby`;
				break;
			case "a Liechtensteiner":
				r += `Lie`;
				break;
			case "Lithuanian":
				r += `Lit`;
				break;
			case "Luxembourgian":
				r += `Lux`;
				break;
			case "Macedonian":
				r += `Mac`;
				break;
			case "Malagasy":
				r += `Mad`;
				break;
			case "Malawian":
				r += `Mwi`;
				break;
			case "Malaysian":
				r += `Mys`;
				break;
			case "Maldivian":
				r += `Mdv`;
				break;
			case "Malian":
				r += `Mal`;
				break;
			case "Maltese":
				r += `Mlt`;
				break;
			case "Marshallese":
				r += `MI`;
				break;
			case "Mauritanian":
				r += `Mta`;
				break;
			case "Mauritian":
				r += `Mts`;
				break;
			case "Mexican":
				r += `Mex`;
				break;
			case "Micronesian":
				r += `FSM`;
				break;
			case "Moldovan":
				r += `Mol`;
				break;
			case "Monégasque":
				r += `Mnc`;
				break;
			case "Mongolian":
				r += `Mon`;
				break;
			case "Montenegrin":
				r += `Mng`;
				break;
			case "Moroccan":
				r += `Mor`;
				break;
			case "Mosotho":
				r += `Les`;
				break;
			case "Motswana":
				r += `Bot`;
				break;
			case "Mozambican":
				r += `Moz`;
				break;
			case "Namibian":
				r += `Nam`;
				break;
			case "Nauruan":
				r += `Nau`;
				break;
			case "Nepalese":
				r += `Npl`;
				break;
			case "New Caledonian":
				r += `NC`;
				break;
			case "a New Zealander":
				r += `NZ`;
				break;
			case "Ni-Vanuatu":
				r += `Van`;
				break;
			case "Nicaraguan":
				r += `Nic`;
				break;
			case "Nigerian":
				r += `Nga`;
				break;
			case "Nigerien":
				r += `Ngr`;
				break;
			case "Niuean":
				r += `Niu`;
				break;
			case "Norwegian":
				r += `Nor`;
				break;
			case "Omani":
				r += `Omn`;
				break;
			case "Pakistani":
				r += `Pak`;
				break;
			case "Palauan":
				r += `Plu`;
				break;
			case "Palestinian":
				r += `Pal`;
				break;
			case "Panamanian":
				r += `Pan`;
				break;
			case "Papua New Guinean":
				r += `PNG`;
				break;
			case "Paraguayan":
				r += `Par`;
				break;
			case "Peruvian":
				r += `Per`;
				break;
			case "Polish":
				r += `Pol`;
				break;
			case "Portuguese":
				r += `Por`;
				break;
			case "Puerto Rican":
				r += `PR`;
				break;
			case "Qatari":
				r += `Qat`;
				break;
			case "Romanian":
				r += `Rom`;
				break;
			case "Russian":
				r += `Rus`;
				break;
			case "Rwandan":
				r += `Rwa`;
				break;
			case "Sahrawi":
				r += `Sah`;
				break;
			case "Saint Lucian":
				r += `SL`;
				break;
			case "Salvadoran":
				r += `ES`;
				break;
			case "Sammarinese":
				r += `SM`;
				break;
			case "Samoan":
				r += `Sam`;
				break;
			case "São Toméan":
				r += `STP`;
				break;
			case "Saudi":
				r += `Sau`;
				break;
			case "Scottish":
				r += `Sco`;
				break;
			case "Senegalese":
				r += `Sen`;
				break;
			case "Serbian":
				r += `Srb`;
				break;
			case "Seychellois":
				r += `Sey`;
				break;
			case "Sierra Leonean":
				r += `Sie`;
				break;
			case "Singaporean":
				r += `Sng`;
				break;
			case "Slovak":
				r += `Svk`;
				break;
			case "Slovene":
				r += `Svn`;
				break;
			case "a Solomon Islander":
				r += `SI`;
				break;
			case "Somali":
				r += `Som`;
				break;
			case "South African":
				r += `RSA`;
				break;
			case "South Sudanese":
				r += `SS`;
				break;
			case "Spanish":
				r += `Spa`;
				break;
			case "Sri Lankan":
				r += `Sri`;
				break;
			case "Sudanese":
				r += `Sud`;
				break;
			case "Surinamese":
				r += `Sur`;
				break;
			case "Swazi":
				r += `Swa`;
				break;
			case "Swedish":
				r += `Swe`;
				break;
			case "Swiss":
				r += `Swi`;
				break;
			case "Syrian":
				r += `Syr`;
				break;
			case "Taiwanese":
				r += `Tai`;
				break;
			case "Tajik":
				r += `Taj`;
				break;
			case "Tanzanian":
				r += `Tza`;
				break;
			case "Thai":
				r += `Tha`;
				break;
			case "Tibetan":
				r += `Tib`;
				break;
			case "Togolese":
				r += `Tog`;
				break;
			case "Tongan":
				r += `Ton`;
				break;
			case "Trinidadian":
				r += `TT`;
				break;
			case "Tunisian":
				r += `Tun`;
				break;
			case "Turkish":
				r += `Tur`;
				break;
			case "Turkmen":
				r += `Tkm`;
				break;
			case "Tuvaluan":
				r += `Tuv`;
				break;
			case "Ugandan":
				r += `Uga`;
				break;
			case "Ukrainian":
				r += `Ukr`;
				break;
			case "Uruguayan":
				r += `Uru`;
				break;
			case "Uzbek":
				r += `Uzb`;
				break;
			case "Vatican":
				r += `VC`;
				break;
			case "Venezuelan":
				r += `Ven`;
				break;
			case "Vietnamese":
				r += `Vnm`;
				break;
			case "Vincentian":
				r += `SVG`;
				break;
			case "Yemeni":
				r += `Yem`;
				break;
			case "Zairian":
				r += `DRC`;
				break;
			case "Zambian":
				r += `Zam`;
				break;
			case "Zimbabwean":
				if (slave.race === "white") {
					r += `Rho`;
				} else {
					r += `Zwe`;
				}
				break;
			case "Ancient Chinese Revivalist":
				r += `Chi Rev`;
				break;
			case "Ancient Egyptian Revivalist":
				r += `Egy Rev`;
				break;
			case "Arabian Revivalist":
				r += `Ara Rev`;
				break;
			case "Aztec Revivalist":
				r += `Azt Rev`;
				break;
			case "Edo Revivalist":
				r += `Edo Rev`;
				break;
			case "Roman Revivalist":
				r += `Rom Rev`;
				break;
			case "":
			case "none":
			case "slave":
			case "Stateless":
				r += `None`;
				break;
			default:
				r += `${slave.nationality.charAt(0) + slave.nationality.charAt(1) + slave.nationality.charAt(2)}`;
				break;
		}
		r += `</span> `;
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function long_nationality(slave) {
		r += `<span class="tan">`;
		switch (slave.nationality) {
			case "a Cook Islander":
				r += `Cook Islander.`;
				break;
			case "a Liechtensteiner":
				r += `Liechtensteiner.`;
				break;
			case "a New Zealander":
				r += `New Zealander.`;
				break;
			case "a Solomon Islander":
				r += `Solomon Islander.`;
				break;
			case "Zimbabwean":
				if (slave.race === "white") {
					r += `Rhodesian.`;
				} else {
					r += `${slave.nationality}.`;
				}
				break;
			case "slave":
			case "none":
			case "":
			case "Stateless":
				r += `Stateless.`;
				break;
			default:
				r += `${slave.nationality}.`;
				break;
		}
		r += `</span> `;
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function short_skin(slave) {
		r += `<span class="pink">`;
		switch (slave.skin) {
			case "pure white":
				r += `P. Whi`;
				break;
			case "extremely fair":
				r += `E. Fai`;
				break;
			case "very fair":
				r += `V. Fai`;
				break;
			case "extremely pale":
				r += `E. Pal`;
				break;
			case "very pale":
				r += `V. Pal`;
				break;
			case "light brown":
				r += `L. Br`;
				break;
			case "dark brown":
				r += `D. Br`;
				break;
			case "light olive":
				r += `L. Oli`;
				break;
			case "dark olive":
				r += `D. Oli`;
				break;
			case "light beige":
				r += `L. Bei`;
				break;
			case "dark beige":
				r += `D. Bei`;
				break;
			case "tan":
				r += `Tan`;
				break;
			case "bronze":
				r += `Bron`;
				break;
			case "ebony":
				r += `Ebon`;
				break;
			case "pure black":
				r += `P. Bla`;
				break;
			case "dark":
			case "fair":
			case "pale":
				r += `${slave.skin.charAt(0).toUpperCase() + slave.skin.slice(1)}`;
				break;
			default:
				r += `${slave.skin.charAt(0).toUpperCase() + slave.skin.charAt(1) + slave.skin.charAt(2)}`;
				break;
		}
		r += `</span> `;
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function short_genitals(slave) {
		if (slave.dick > 0) {
			r += `<span class="pink">`;
			if (slave.balls === 0) {
				r += `Geld`;
			}
			if ((slave.dick > 8) && (slave.balls > 8)) {
				r += `Junk+++`;
			} else if ((slave.dick > 5) && (slave.balls > 5)) {
				r += `Junk++`;
			} else if ((slave.dick > 4) && (slave.balls > 4)) {
				r += `Junk+`;
			} else if ((slave.dick > 3) && (slave.balls > 3)) {
				r += `Junk`;
			} else if (slave.dick > 8) {
				r += `Dick+++`;
			} else if (slave.dick > 5) {
				r += `Dick++`;
			} else if (slave.dick > 4) {
				r += `Dick+`;
			} else if (slave.dick > 3) {
				r += `Dick`;
			} else if (slave.balls > 10) {
				r += `Balls+++`;
			} else if (slave.balls > 5) {
				r += `Balls++`;
			} else if (slave.balls > 4) {
				r += `Balls+`;
			} else if (slave.balls > 3) {
				r += `Balls`;
			}
			r += `</span> `;
		}
		if (slave.vagina === 0) {
			r += `<span class="lime">VV</span>`;
		} else if ((slave.pregKnown === 1) && canWalk(slave) && (slave.clothes === "no clothing" || slave.clothes === "body oil") && (slave.shoes === "none")) {
			r += `<span class="pink">NBP</span>`;
		}
		if (slave.anus === 0) {
			r += ` <span class="lime">AV</span>`;
		}
		r += `<span class="pink">`;
		if ((slave.vagina > 3) && (slave.anus > 3)) {
			r += ` V++A++`;
		} else if ((slave.vagina > 2) && (slave.anus > 2)) {
			r += ` V+A+`;
		} else if (slave.vagina > 3) {
			r += ` V++`;
		} else if (slave.vagina > 2) {
			r += ` V+`;
		} else if (slave.anus > 3) {
			r += ` A++`;
		} else if (slave.anus > 2) {
			r += ` A+`;
		}
		r += `</span> `;
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function long_genitals(slave) {
		if (slave.dick > 0) {
			r += `<span class="pink">`;
			if (slave.balls === 0) {
				r += `Gelded.`;
			}
			if ((slave.dick > 8) && (slave.balls > 8)) {
				r += `Hyper dick & balls.`;
			} else if ((slave.dick > 5) && (slave.balls > 5)) {
				r += `Monster dick & balls.`;
			} else if ((slave.dick > 4) && (slave.balls > 4)) {
				r += `Huge dick & balls.`;
			} else if ((slave.dick > 3) && (slave.balls > 3)) {
				r += `Big dick & balls.`;
			} else if (slave.dick > 8) {
				r += `Hyper dong.`;
			} else if (slave.dick > 5) {
				r += `Monster dong.`;
			} else if (slave.dick > 4) {
				r += `Huge dick.`;
			} else if (slave.dick > 3) {
				r += `Big dick.`;
			} else if (slave.balls > 8) {
				r += `Hyper balls.`;
			} else if (slave.balls > 5) {
				r += `Monstrous balls.`;
			} else if (slave.balls > 4) {
				r += `Huge balls.`;
			} else if (slave.balls > 3) {
				r += `Big balls.`;
			}
			r += `</span> `;
		}
		if (slave.vagina === 0) {
			r += `<span class="lime">Virgin.</span> `;
		} else if ((slave.pregKnown === 1) && canWalk(slave) && (slave.clothes === "no clothing" || slave.clothes === "body oil") && (slave.shoes === "none")) {
			r += `<span class="pink">Naked, barefoot, and pregnant.</span> `;
		}
		if (slave.anus === 0) {
			r += `<span class="lime">Anal virgin.</span> `;
		}
		r += `<span class="pink">`;
		if ((slave.vagina > 3) && (slave.anus > 3)) {
			r += `Blown out holes.`;
		} else if ((slave.vagina > 2) && (slave.anus > 2)) {
			r += `High mileage.`;
		} else if (slave.vagina > 3) {
			r += `Cavernous pussy.`;
		} else if (slave.vagina > 2) {
			r += `Loose pussy.`;
		} else if (slave.anus > 3) {
			r += `Permagaped anus.`;
		} else if (slave.anus > 2) {
			r += `Gaping anus.`;
		}
		r += `</span> `;
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function short_age(slave) {
		r += `<span class="pink">`;
		if (V.showAgeDetail === 1) {
			r += slave.actualAge;
		} else if (slave.actualAge >= 40) {
			r += `40s`;
		} else if (slave.actualAge >= 35) {
			r += `Lt30s`;
		} else if (slave.actualAge >= 30) {
			r += `Ea30s`;
		} else if (slave.actualAge >= 25) {
			r += `Lt20s`;
		} else if (slave.actualAge >= 20) {
			r += `Ea20s`;
		} else if (slave.actualAge >= 18) {
			r += slave.actualAge;
		}
		if (slave.actualAge !== slave.physicalAge) {
			r += ` w ${slave.physicalAge}y-bdy`;
		}
		if (slave.visualAge !== slave.physicalAge) {
			r += ` Lks${slave.visualAge}`;
		}
		r += " ";
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function short_face(slave) {
		if (slave.face < -95) {
			r += `<span class="red">Face---${V.summaryStats? `[${slave.face}]` : ''}</span>`;
		} else if (slave.face < -40) {
			r += `<span class="red">Face--${V.summaryStats? `[${slave.face}]` : ''}</span>`;
		} else if (slave.face < -10) {
			r += `<span class="red">Face-${V.summaryStats? `[${slave.face}]` : ''}</span>`;
		} else if (slave.face <= 10) {
			r += `Face${V.summaryStats? `[${slave.face}]` : ''}`;
		} else if (slave.face <= 40) {
			r += `<span class="pink">Face+${V.summaryStats? `[${slave.face}]` : ''}</span>`;
		} else if (slave.face <= 95) {
			r += `<span class="pink">Face++${V.summaryStats? `[${slave.face}]` : ''}</span>`;
		} else {
			r += `<span class="pink">Face+++${V.summaryStats? `[${slave.face}]` : ''}</span>`;
		}
		r += " ";
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function short_eyes(slave) {
		if (slave.eyes === -2) {
			r += `<span class="red">Blind</span>`;
		} else if (((slave.eyes === -1) && (slave.eyewear !== "corrective glasses") && (slave.eyewear !== "corrective contacts")) || (slave.eyewear === "blurring glasses") || (slave.eyewear === "blurring contacts")) {
			r += `<span class="yellow">Sight-</span>`;
		}
		r += " ";
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function short_ears(slave) {
		if (slave.hears === -2) {
			r += `<span class="red">Deaf</span>`;
		} else if ((slave.hears === -1) && (slave.earwear !== "hearing aids")) {
			r += `<span class="yellow">Hearing-</span>`;
		}
		r += " ";
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function short_lips(slave) {
		if (slave.lips > 95) {
			r += `Facepussy`;
		} else if (slave.lips > 70) {
			r += `Lips+++${V.summaryStats? `[${slave.lips}]` : ''}`;
		} else if (slave.lips > 40) {
			r += `Lips++${V.summaryStats? `[${slave.lips}]` : ''}`;
		} else if (slave.lips > 20) {
			r += `Lips+${V.summaryStats? `[${slave.lips}]` : ''}`;
		} else if (slave.lips > 10) {
			r += `Lips${V.summaryStats? `[${slave.lips}]` : ''}`;
		} else {
			r += `<span class="red">Lips-${V.summaryStats? `[${slave.lips}]` : ''}</span>`;
		}
		r += " ";
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function short_teeth(slave) {
		if (slave.teeth === "crooked") {
			r += `<span class="yellow">Cr Teeth</span>`;
		} else if (slave.teeth === "gapped") {
			r += `<span class="yellow">Gap</span>`;
		} else if (slave.teeth === "cosmetic braces") {
			r += `Cos Braces`;
		} else if (slave.teeth === "straightening braces") {
			r += `Braces`;
		} else if (slave.teeth === "removable") {
			r += `Rem Teeth`;
		} else if (slave.teeth === "pointy") {
			r += `Fangs`;
		} else if (slave.teeth === "baby") {
			r += `Baby`;
		} else if (slave.teeth === "mixed") {
			r += `Mixed`;
		}
		r += " ";
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function short_muscles(slave) {
		if (slave.muscles > 95) {
			r += `Musc++${V.summaryStats? `[${slave.muscles}]`: ''}`;
		} else if (slave.muscles > 50) {
			r += `Musc+${V.summaryStats? `[${slave.muscles}]`: ''}`;
		} else if (slave.muscles > 5) {
			r += `Fit${V.summaryStats? `[${slave.muscles}]`: ''}`;
		} else if (slave.muscles > -6) {
			r += `Soft${V.summaryStats? `[${slave.muscles}]`: ''}`;
		} else if (slave.muscles > -31) {
			if (V.arcologies[0].FSPhysicalIdealist === "unset") {
				r += `<span class="red">Weak</span>${V.summaryStats? `[${slave.muscles}]`: ''}`;
			} else {
				r += `Soft${V.summaryStats? `[${slave.muscles}]`: ''}`;
			}
		} else if (slave.muscles > -96) {
			if (V.arcologies[0].FSPhysicalIdealist === "unset") {
				r += `<span class="red">Weak+</span>${V.summaryStats? `[${slave.muscles}]`: ''}`;
			} else {
				r += `Soft+${V.summaryStats? `[${slave.muscles}]`: ''}`;
			}
		} else {
			r += `<span class="red">Weak++</span>${V.summaryStats? `[${slave.muscles}]`: ''}`;
		}
		r += " ";
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function short_limbs(slave) {
		if (slave.amp !== 0) {
			if (slave.amp === -1) {
				r += `P-Limbs`;
			} else if (slave.amp === -2) {
				r += `Sex P-Limbs`;
			} else if (slave.amp === -3) {
				r += `Beauty P-Limbs`;
			} else if (slave.amp === -4) {
				r += `Combat P-Limbs`;
			} else if (slave.amp === -5) {
				r += `Cyber P-Limbs`;
			} else {
				r += `Amp`;
			}
		}
		r += " ";
		if (!canWalk(slave)) {
			r += ` Immob `;
		}
		if (slave.heels === 1) {
			r += ` Heel `;
		}
		r += `</span> `;
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function short_voice(slave) {
		if (slave.voice === 0) {
			r += `<span class="red">Mute</span>`;
		} else {
			if (slave.accent === 3) {
				r += `<span class="red">Acc--</span>`;
			} else if (slave.accent === 2) {
				r += `Acc-`;
			} else if (slave.accent === 4) {
				r += `Acc--`;
			} else if (slave.accent === 1) {
				r += `<span class="pink">Acc</span>`;
			}
		}
		r += " ";
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function short_tits_ass(slave) {
		r += `<span class="pink">`;
		if ((slave.boobs >= 12000) && (slave.butt > 9)) {
			r += `T&A+++`;
		} else if ((slave.boobs > 4000) && (slave.butt > 8)) {
			r += `T&A++`;
		} else if ((slave.boobs > 2000) && (slave.butt > 6)) {
			r += `T&A+`;
		} else if ((slave.boobs > 800) && (slave.butt > 4)) {
			r += `T&A`;
		} else if ((slave.boobs < 500) && (slave.butt < 3) && (slave.weight <= 10) && (slave.muscles <= 30)) {
			r += `Girlish`;
		} else if (slave.boobs >= 12000) {
			r += `Boobs+++`;
		} else if (slave.boobs > 4000) {
			r += `Boobs++`;
		} else if (slave.boobs > 2000) {
			r += `Boobs+`;
		} else if (slave.boobs > 800) {
			r += `Boobs`;
		} else if (slave.butt > 9) {
			r += `Ass+++`;
		} else if (slave.butt > 8) {
			r += `Ass++`;
		} else if (slave.butt > 6) {
			r += `Ass+`;
		} else if (slave.butt > 4) {
			r += `Ass`;
		}
		r += `</span> `;
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function short_hips(slave) {
		r += `<span class="red">`;
		if (slave.hips < -1) {
			if (slave.butt > 2 && (V.arcologies[0].FSTransformationFetishist < 20 || V.arcologies[0].FSTransformationFetishist === "unset") && (V.arcologies[0].FSHedonisticDecadence < 20 || V.arcologies[0].FSHedonisticDecadence === "unset")) {
				r += `Disp+`;
			}
		} else if (slave.hips < 0) {
			if (slave.butt > 4 && (V.arcologies[0].FSTransformationFetishist < 20 || V.arcologies[0].FSTransformationFetishist === "unset") && (V.arcologies[0].FSHedonisticDecadence < 20 || V.arcologies[0].FSHedonisticDecadence === "unset")) {
				r += `Disp+`;
			}
		} else if (slave.hips > 2) {
			if (slave.butt <= 8) {
				r += `Disp-`;
			}
		} else if (slave.hips > 1) {
			if (slave.butt <= 3 && (V.arcologies[0].FSSlimnessEnthusiast === "unset" || (slave.boobs >= 500))) {
				r += `Disp-`;
			}
		} else if (slave.hips > 0) {
			if (slave.butt > 8) {
				if ((V.arcologies[0].FSTransformationFetishist < 20 || V.arcologies[0].FSTransformationFetishist === "unset") && (V.arcologies[0].FSHedonisticDecadence < 20 || V.arcologies[0].FSHedonisticDecadence === "unset")) {
					r += `Disp+`;
				}
			} else if (slave.butt <= 2 && (V.arcologies[0].FSSlimnessEnthusiast === "unset" || (slave.boobs >= 500))) {
				r += `Disp-`;
			}
		} else {
			if (slave.butt > 6) {
				if ((V.arcologies[0].FSTransformationFetishist < 20 || V.arcologies[0].FSTransformationFetishist === "unset") && (V.arcologies[0].FSHedonisticDecadence < 20 || V.arcologies[0].FSHedonisticDecadence === "unset")) {
					r += `Disp+`;
				}
			} else if (slave.butt <= 1 && (V.arcologies[0].FSSlimnessEnthusiast === "unset" || (slave.boobs >= 500))) {
				r += `Disp-`;
			}
		}
		r += `</span> `;
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function short_waist(slave) {
		if (slave.waist > 95) {
			r += `<span class="red">Wst---${V.summaryStats? `[${slave.waist}]` : ''}</span>`;
		} else if (slave.waist > 40) {
			r += `<span class="red">Wst--${V.summaryStats? `[${slave.waist}]`: ''}</span>`;
		} else if (slave.waist > 10) {
			r += `<span class="red">Wst-${V.summaryStats? `[${slave.waist}]` : ''}</span>`;
		} else if (slave.waist >= -10) {
			r += `Wst${V.summaryStats? `[${slave.waist}]`: ''}`;
		} else if (slave.waist >= -40) {
			r += `<span class="pink">Wst+${V.summaryStats? `[${slave.waist}]` : ''}</span>`;
		} else if (slave.waist >= -95) {
			r += `<span class="pink">Wst++${V.summaryStats? `[${slave.waist}]` : ''}</span>`;
		} else {
			r += `<span class="pink">Wst+++${V.summaryStats? `[${slave.waist}]`: ''}</span>`;
		}
		r += " ";
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function short_implants(slave) {
		r += `<span class="pink">`;
		if ((slave.boobsImplant === 0) && (slave.buttImplant === 0) && (slave.waist >= -95) && (slave.lipsImplant === 0) && (slave.faceImplant <= 5) && (slave.bellyImplant === -1)) {
			r += `Natr`;
		} else {
			r += `Impl`;
		}
		r += " ";
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function short_lactation(slave) {
		if (slave.lactation === 1) {
			r += `Lact`;
		} else if (slave.lactation === 2) {
			r += `Lact++`;
		}
		r += " ";
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function short_mods(slave) {
		V.modScore = SlaveStatsChecker.modScore(slave);
		if (slave.corsetPiercing === 0 && V.piercingScore < 3 && V.tatScore < 2) {
			return;
		} else if (V.modScore > 15 || (V.piercingScore > 8 && V.tatScore > 5)) {
			r += `Mods++`;
		} else if (V.modScore > 7) {
			r += `Mods+`;
		} else {
			r += `Mods`;
		}
		if (slave.brand !== 0) {
			r += `Br`;
		}
		r += " ";
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function long_age(slave) {
		r += `<span class="pink">`;
		if (V.showAgeDetail === 1) {
			r += `Age ` + `${slave.actualAge}` + `.`;
		} else if (slave.actualAge >= 40) {
			r += `Forties.`;
		} else if (slave.actualAge >= 35) {
			r += `Late thirties.`;
		} else if (slave.actualAge >= 30) {
			r += `Early thirties.`;
		} else if (slave.actualAge >= 25) {
			r += `Late twenties.`;
		} else if (slave.actualAge >= 20) {
			r += `Early twenties.`;
		} else if (slave.actualAge >= 19) {
			r += `Nineteen.`;
		} else if (slave.actualAge >= 18) {
			r += `Eighteen.`;
		} else {
			r += `Underage.`;
		}
		r += " ";
		/*
		 ** No NCS, then do the standard, However because of the wrinkes of Incubators, as long as visual age is greater
		 ** than or equal to physical age, we do the old physical body/Looks for fresh out of the can NCS slaves.
		 */
		if (((slave.geneMods.NCS === 0) || (slave.visualAge >= slave.physicalAge))) {
			if (slave.actualAge !== slave.physicalAge) {
				r += `${slave.physicalAge}` + ` year old body. `;
			}
			if (slave.visualAge !== slave.physicalAge) {
				r += `Looks ` + `${slave.visualAge}` + `. `;
			}
		} else {
			/*
			 ** Now the rub. The use of physical Age for the year old body above, basically conflicts with the changes
			 ** that NCS introduces, so here to *distinguish* the changes, we use visual age with the 'year old body'
			 ** and appears, for example: Slave release from incubator at age 10, Her summary would show, 'Age 0. 10
			 ** year old body.' But if she's given NCS a few weeks after release, while she's still before her first
			 ** birthday, it'll appear the same. But once her birthday fires, if we ran with the above code it would
			 ** say: 'Age 1. 11 year old body.' -- this conflicts with the way NCS works though, because she hasn't
			 ** visually aged, so our change here makes it say 'Age 1. Appears to have a 10 year old body.'
			 */
			r += `Appears to have a ` + `${slave.visualAge}` + ` year old body. `;
		}
		if (slave.geneMods.NCS === 1) {
			r += `(<span class="orange">NCS</span>) `;
		}
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function long_face(slave) {
		if (slave.face < -95) {
			r += `<span class="red">Very ugly${V.summaryStats? `[${slave.face}]`: ''}</span>`;
		} else if (slave.face < -40) {
			r += `<span class="red">Ugly${V.summaryStats? `[${slave.face}]`: ''}</span>`;
		} else if (slave.face < -10) {
			r += `<span class="red">Unattractive${V.summaryStats? `[${slave.face}]`: ''}</span>`;
		} else if (slave.face <= 10) {
			r += `Average${V.summaryStats? `[${slave.face}]`: ''}`;
		} else if (slave.face <= 40) {
			r += `<span class="pink">Attractive${V.summaryStats? `[${slave.face}]`: ''}</span>`;
		} else if (slave.face <= 95) {
			r += `<span class="pink">Beautiful${V.summaryStats? `[${slave.face}]`: ''}</span>`;
		} else {
			r += `<span class="pink">Very beautiful${V.summaryStats? `[${slave.face}]`: ''}</span>`;
		}
		r += ` ${slave.faceShape} face. `;
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function long_eyes(slave) {
		if (slave.eyes <= -2) {
			r += `<span class="red">Blind.</span>`;
		} else if (((slave.eyes === -1) && (slave.eyewear !== "corrective glasses") && (slave.eyewear !== "corrective contacts")) || (slave.eyewear === "blurring glasses") || (slave.eyewear === "blurring contacts")) {
			r += `<span class="yellow">Nearsighted.</span>`;
		}
		r += " ";
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function long_ears(slave) {
		if (slave.hears <= -2) {
			r += `<span class="red">Deaf.</span>`;
		} else if ((slave.hears === -1) && (slave.earwear !== "hearing aids")) {
			r += `<span class="yellow">Hard of hearing.</span>`;
		}
		r += " ";
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function long_lips(slave) {
		if (slave.lips > 95) {
			r += `Facepussy${V.summaryStats? `[${slave.lips}]`: ''}.`;
		} else if (slave.lips > 70) {
			r += `Huge lips${V.summaryStats? `[${slave.lips}]`: ''}.`;
		} else if (slave.lips > 40) {
			r += `Big lips${V.summaryStats? `[${slave.lips}]`: ''}.`;
		} else if (slave.lips > 20) {
			r += `Pretty lips${V.summaryStats? `[${slave.lips}]`: ''}.`;
		} else if (slave.lips > 10) {
			r += `Normal lips${V.summaryStats? `[${slave.lips}]`: ''}.`;
		} else {
			r += `<span class="red">Thin lips${V.summaryStats? `[${slave.lips}]`: ''}.</span>`;
		}
		r += " ";
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function long_teeth(slave) {
		if (slave.teeth === "crooked") {
			r += `<span class="yellow">Crooked teeth.</span>`;
		} else if (slave.teeth === "gapped") {
			r += `<span class="yellow">Tooth gap.</span>`;
		} else if (slave.teeth === "cosmetic braces") {
			r += `Cosmetic braces.`;
		} else if (slave.teeth === "straightening braces") {
			r += `Braces.`;
		} else if (slave.teeth === "removable") {
			r += `Removable teeth.`;
		} else if (slave.teeth === "pointy") {
			r += `Sharp fangs.`;
		} else if (slave.teeth === "baby") {
			r += `Baby teeth.`;
		} else if (slave.teeth === "mixed") {
			r += `Mixed teeth.`;
		}
		r += " ";
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function long_muscles(slave) {
		if (slave.muscles > 95) {
			r += `Hugely muscular${V.summaryStats? `[${slave.muscles}]` : ''}.`;
		} else if (slave.muscles > 50) {
			r += `Muscular${V.summaryStats? `[${slave.muscles}]`: ''}.`;
		} else if (slave.muscles > 5) {
			r += `Fit${V.summaryStats? `[${slave.muscles}]`: ''}.`;
		} else if (slave.muscles > -6) {
			r += `Soft${V.summaryStats? `[${slave.muscles}]`: ''}.`;
		} else if (slave.muscles > -31) {
			if (V.arcologies[0].FSPhysicalIdealist === "unset") {
				r += `<span class="red">Weak${V.summaryStats? `[${slave.muscles}]`: ''}.</span>`;
			} else {
				r += `Weak${V.summaryStats? `[${slave.muscles}]`: ''}.`;
			}
		} else if (slave.muscles > -96) {
			if (V.arcologies[0].FSPhysicalIdealist === "unset") {
				r += `<span class="red">Very weak${V.summaryStats? `[${slave.muscles}]`: ''}.</span>`;
			} else {
				r += `Very weak${V.summaryStats? `[${slave.muscles}]`: ''}.`;
			}
		} else {
			r += `<span class="red">Frail${V.summaryStats? `[${slave.muscles}]`: ''}.</span>`;
		}
		r += " ";
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function long_limbs(slave) {
		if (slave.amp !== 0) {
			if (slave.amp === -1) {
				r += `Prosthetic limbs.`;
			} else if (slave.amp === -2) {
				r += `Sexy prosthetic limbs.`;
			} else if (slave.amp === -3) {
				r += `Beautiful prosthetic limbs.`;
			} else if (slave.amp === -4) {
				r += `Deadly prosthetic limbs.`;
			} else if (slave.amp === -5) {
				r += `Cyber prosthetic limbs.`;
			} else {
				r += `Amputee.`;
			}
		}
		r += " ";
		if (!canWalk(slave)) {
			r += `Immobile. `;
		}
		if (slave.heels === 1) {
			r += `Heeled. `;
		}
		r += `</span> `;
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function long_voice(slave) {
		if (slave.voice === 0) {
			r += `<span class="red">Mute.</span>`;
		} else {
			if (slave.accent === 3) {
				r += `<span class="red">Bad accent.</span>`;
			} else if (slave.accent === 4) {
				r += `<span class="red">No language skills.</span>`;
			} else if (slave.accent === 2) {
				r += `Accent.`;
			} else if (slave.accent === 1) {
				r += `<span class="pink">Cute accent.</span>`;
			}
		}
		r += " ";
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function long_tits_ass(slave) {
		r += `<span class="pink">`;
		if ((slave.boobs >= 12000) && (slave.butt > 9)) {
			r += `Hyper T&A.`;
		} else if ((slave.boobs > 4000) && (slave.butt > 8)) {
			r += `Enormous T&A.`;
		} else if ((slave.boobs > 2000) && (slave.butt > 6)) {
			r += `Huge T&A.`;
		} else if ((slave.boobs > 800) && (slave.butt > 4)) {
			r += `Big T&A.`;
		} else if ((slave.boobs < 500) && (slave.butt < 3) && (slave.weight <= 10) && (slave.muscles <= 30)) {
			r += `Girlish figure.`;
		} else if (slave.boobs >= 12000) {
			r += `Immobilizing tits.`;
		} else if (slave.boobs > 4000) {
			r += `Monstrous tits.`;
		} else if (slave.boobs > 2000) {
			r += `Huge tits.`;
		} else if (slave.boobs > 800) {
			r += `Big tits.`;
		} else if (slave.butt > 9) {
			r += `Hyper ass.`;
		} else if (slave.butt > 8) {
			r += `Titanic ass.`;
		} else if (slave.butt > 6) {
			r += `Huge ass.`;
		} else if (slave.butt > 4) {
			r += `Big ass.`;
		}
		r += `</span> `;
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function long_hips(slave) {
		r += `<span class="red">`;
		if (slave.hips < -1) {
			if (slave.butt > 2 && (V.arcologies[0].FSTransformationFetishist < 20 || V.arcologies[0].FSTransformationFetishist === "unset") && (V.arcologies[0].FSHedonisticDecadence < 20 || V.arcologies[0].FSHedonisticDecadence === "unset") && (V.arcologies[0].FSAssetExpansionist < 20 || V.arcologies[0].FSAssetExpansionist === "unset")) {
				r += `Disproportionately big butt.`;
			}
		} else if (slave.hips < 0) {
			if (slave.butt > 4 && (V.arcologies[0].FSTransformationFetishist < 20 || V.arcologies[0].FSTransformationFetishist === "unset") && (V.arcologies[0].FSHedonisticDecadence < 20 || V.arcologies[0].FSHedonisticDecadence === "unset") && (V.arcologies[0].FSAssetExpansionist < 20 || V.arcologies[0].FSAssetExpansionist === "unset")) {
				r += `Disproportionately big butt.`;
			}
		} else if (slave.hips > 2) {
			if (slave.butt <= 8) {
				r += `Disproportionately small butt.`;
			}
		} else if (slave.hips > 1) {
			if (slave.butt <= 3 && ((V.arcologies[0].FSSlimnessEnthusiast === "unset") || (slave.boobs >= 500))) {
				r += `Disproportionately small butt.`;
			}
		} else if (slave.hips > 0) {
			if (slave.butt > 8) {
				if ((V.arcologies[0].FSTransformationFetishist < 20 || V.arcologies[0].FSTransformationFetishist === "unset") && (V.arcologies[0].FSHedonisticDecadence < 20 || V.arcologies[0].FSHedonisticDecadence === "unset") && (V.arcologies[0].FSAssetExpansionist < 20 || V.arcologies[0].FSAssetExpansionist === "unset")) {
					r += `Disproportionately big butt.`;
				}
			} else if (slave.butt <= 2 && ((V.arcologies[0].FSSlimnessEnthusiast === "unset") || (slave.boobs >= 500))) {
				r += `Disproportionately small butt.`;
			}
		} else {
			if (slave.butt > 6) {
				if ((V.arcologies[0].FSTransformationFetishist < 20 || V.arcologies[0].FSTransformationFetishist === "unset") && (V.arcologies[0].FSHedonisticDecadence < 20 || V.arcologies[0].FSHedonisticDecadence === "unset") && (V.arcologies[0].FSAssetExpansionist < 20 || V.arcologies[0].FSAssetExpansionist === "unset")) {
					r += `Disproportionately big butt.`;
				}
			} else if (slave.butt <= 1 && ((V.arcologies[0].FSSlimnessEnthusiast === "unset") || (slave.boobs >= 500))) {
				r += `Disproportionately small butt.`;
			}
		}
		r += `</span> `;
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function long_waist(slave) {
		if (slave.waist > 95) {
			r += `<span class="red">Masculine waist${V.summaryStats? `[${slave.waist}]`: ''}.</span>`;
		} else if (slave.waist > 40) {
			r += `<span class="red">Ugly waist${V.summaryStats? `[${slave.waist}]`: ''}.</span>`;
		} else if (slave.waist > 10) {
			r += `<span class="red">Unattractive waist${V.summaryStats? `[${slave.waist}]`: ''}.</span>`;
		} else if (slave.waist >= -10) {
			r += `Average waist${V.summaryStats? `[${slave.waist}]`: ''}.`;
		} else if (slave.waist >= -40) {
			r += `<span class="pink">Feminine waist${V.summaryStats? `[${slave.waist}]`: ''}.</span>`;
		} else if (slave.waist >= -95) {
			r += `<span class="pink">Hourglass waist${V.summaryStats? `[${slave.waist}]`: ''}.</span>`;
		} else {
			r += `<span class="pink">Absurdly narrow waist${V.summaryStats? `[${slave.waist}]`: ''}.</span>`;
		}
		r += " ";
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function long_implants(slave) {
		r += `<span class="pink">`;
		if ((slave.boobsImplant !== 0) || (slave.buttImplant !== 0) || (slave.lipsImplant !== 0) || (slave.bellyImplant !== -1)) {
			r += `Implants.`;
		} else if ((slave.faceImplant >= 30) || (slave.waist < -95)) {
			r += `Surgery enhanced.`;
		} else {
			r += `All natural.`;
		}
		r += " ";
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function long_lactation(slave) {
		if (slave.lactation === 1) {
			r += `Lactating naturally.`;
		} else if (slave.lactation === 2) {
			r += `Heavy lactation.`;
		}
		r += " ";
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function long_mods(slave) {
		V.modScore = SlaveStatsChecker.modScore(slave);
		if (slave.corsetPiercing === 0 && V.piercingScore < 3 && V.tatScore < 2) {
			return;
		} else if (V.modScore > 15 || (V.piercingScore > 8 && V.tatScore > 5)) {
			r += `Extensive body mods.`;
		} else if (V.modScore > 7) {
			r += `Noticeable body mods.`;
		} else {
			r += `Light body mods.`;
		}
		r += " ";
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function short_intelligence(slave) {
		const intelligence = slave.intelligence + slave.intelligenceImplant;
		if (slave.fetish === "mindbroken") {
			return;
		} else if (slave.intelligenceImplant >= 30) {
			if (intelligence >= 130) {
				r += `<span class="deepskyblue">I++++(e+)${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}</span>`;
			} else if (intelligence > 95) {
				r += `<span class="deepskyblue">I+++(e+)${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}</span>`;
			} else if (intelligence > 50) {
				r += `<span class="deepskyblue">I++(e+)${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}</span>`;
			} else if (intelligence > 15) {
				r += `<span class="deepskyblue">I+(e+)${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}</span>`;
			} else if (intelligence >= -15) {
				r += `I(e+)${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}`;
			} else if (intelligence >= -50) {
				r += `<span class="orangered">I-(e+)${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}</span>`;
			} else if (intelligence >= -95) {
				r += `<span class="orangered">I--(e+)${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}</span>`;
			} else {
				r += `<span class="orangered">I---(e+)${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}</span>`;
			}
		} else if (slave.intelligenceImplant >= 15) {
			if (intelligence > 95) {
				r += `<span class="deepskyblue">I+++(e)${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}</span>`;
			} else if (intelligence > 50) {
				r += `<span class="deepskyblue">I++(e)${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}</span>`;
			} else if (intelligence > 15) {
				r += `<span class="deepskyblue">I+(e)${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}</span>`;
			} else if (intelligence >= -15) {
				r += `I(e)${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}`;
			} else if (intelligence >= -50) {
				r += `<span class="orangered">I-(e)${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}</span>`;
			} else if (intelligence >= -95) {
				r += `<span class="orangered">I--(e)${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}</span>`;
			} else {
				r += `<span class="orangered">I---(e)${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}</span>`;
			}
		} else {
			if (intelligence > 95) {
				r += `<span class="deepskyblue">I+++${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}</span>`;
			} else if (intelligence > 50) {
				r += `<span class="deepskyblue">I++${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}</span>`;
			} else if (intelligence > 15) {
				r += `<span class="deepskyblue">I+${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}</span>`;
			} else if (intelligence >= -15) {
				r += `I${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}`;
			} else if (intelligence >= -50) {
				r += `<span class="orangered">I-${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}</span>`;
			} else if (intelligence >= -95) {
				r += `<span class="orangered">I--${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}</span>`;
			} else {
				r += `<span class="orangered">I---${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}</span>`;
			}
		}
		r += " ";
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function short_sex_skills(slave) {
		let _SSkills = slave.skill.anal + slave.skill.oral;
		r += `<span class="aquamarine">`;
		if (((_SSkills + slave.skill.whoring + slave.skill.entertainment) >= 400) && ((slave.vagina < 0) || (slave.skill.vaginal >= 100))) {
			r += `MSS`;
		} else {
			_SSkills += slave.skill.vaginal;
			_SSkills = Math.trunc(_SSkills);
			if (_SSkills > 180) {
				r += `S++`;
			} else if ((_SSkills > 120) && (slave.vagina < 0)) {
				r += `Sh++`;
			} else if (_SSkills > 90) {
				r += `S+`;
			} else if (_SSkills > 30) {
				r += `S`;
			} else {
				r += `S-`;
			}
			if (V.summaryStats) {
				r += `[${_SSkills}] `;
			}
			r += " ";
			if (slave.skill.whoring >= 100) {
				r += `W+++`;
			} else if (slave.skill.whoring > 60) {
				r += `W++`;
			} else if (slave.skill.whoring > 30) {
				r += `W+`;
			} else if (slave.skill.whoring > 10) {
				r += `W`;
			}
			if (slave.skill.whoring > 10) {
				if (V.summaryStats) {
					r += `[${slave.skill.whoring}] `;
				}
			}
			r += " ";
			if (slave.skill.entertainment >= 100) {
				r += `E+++`;
			} else if (slave.skill.entertainment > 60) {
				r += `E++`;
			} else if (slave.skill.entertainment > 30) {
				r += `E+`;
			} else if (slave.skill.entertainment > 10) {
				r += `E`;
			}
			if (slave.skill.entertainment > 10) {
				if (V.summaryStats) {
					r += `[${slave.skill.entertainment}] `;
				}
			}
		}
		r += " ";
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function short_prestige(slave) {
		if (slave.prestige > 0) {
			r += `<span class="green">`;
			if (slave.prestige > 2) {
				r += `Prest++`;
			} else if (slave.prestige === 2) {
				r += `Prest+`;
			} else if (slave.prestige === 1) {
				r += `Prest`;
			}
			r += `</span> `;
		}
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function short_porn_prestige(slave) {
		if (slave.pornPrestige > 0) {
			r += `<span class="green">`;
			if (slave.pornPrestige > 2) {
				r += `PPrest++`;
			} else if (slave.pornPrestige === 2) {
				r += `PPrest+`;
			} else if (slave.pornPrestige === 1) {
				r += `PPrest`;
			}
			r += `</span> `;
		}
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function long_intelligence(slave) {
		const intelligence = slave.intelligence + slave.intelligenceImplant;
		if (slave.fetish === "mindbroken") {
			return;
		} else if (slave.intelligenceImplant >= 30) {
			if (intelligence >= 130) {
				r += `<span class="deepskyblue">Genius${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}.</span>`;
			} else if (intelligence > 95) {
				r += `<span class="deepskyblue">Brilliant, well educated${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}.</span>`;
			} else if (intelligence > 50) {
				r += `<span class="deepskyblue">Very smart, well educated${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}.</span>`;
			} else if (intelligence > 15) {
				r += `<span class="deepskyblue">Smart, well educated${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}.</span>`;
			} else if (intelligence >= -15) {
				r += `Average intelligence, well educated${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}.`;
			} else if (intelligence >= -50) {
				r += `<span class="orangered">Slow, well educated${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}.</span>`;
			} else if (intelligence >= -95) {
				r += `<span class="orangered">Very slow, well educated${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}.</span>`;
			} else {
				r += `<span class="orangered">Moronic, well educated${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}.</span>`;
			}
		} else if (slave.intelligenceImplant >= 15) {
			if (intelligence > 95) {
				r += `<span class="deepskyblue">Brilliant, educated${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}.</span>`;
			} else if (intelligence > 50) {
				r += `<span class="deepskyblue">Very smart, educated${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}.</span>`;
			} else if (intelligence > 15) {
				r += `<span class="deepskyblue">Smart, educated${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}.</span>`;
			} else if (intelligence >= -15) {
				r += `Average intelligence, educated${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}.`;
			} else if (intelligence >= -50) {
				r += `<span class="orangered">Slow, educated${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}.</span>`;
			} else if (intelligence >= -95) {
				r += `<span class="orangered">Very slow, educated${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}.</span>`;
			} else {
				r += `<span class="orangered">Moronic, educated${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}.</span>`;
			}
		} else {
			if (intelligence > 95) {
				r += `<span class="deepskyblue">Brilliant${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}.</span>`;
			} else if (intelligence > 50) {
				r += `<span class="deepskyblue">Very smart${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}.</span>`;
			} else if (intelligence > 15) {
				r += `<span class="deepskyblue">Smart${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}.</span>`;
			} else if (intelligence >= -15) {
				r += `Average intelligence${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}.`;
			} else if (intelligence >= -50) {
				r += `<span class="orangered">Slow${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}.</span>`;
			} else if (intelligence >= -95) {
				r += `<span class="orangered">Very slow${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}.</span>`;
			} else {
				r += `<span class="orangered">Moronic${V.summaryStats ? `[${slave.intelligence+slave.intelligenceImplant}]` : ''}.</span>`;
			}
		}
		r += " ";
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function long_sex_skills(slave) {
		let _SSkills = (slave.skill.anal + slave.skill.oral);
		r += `<span class="aquamarine">`;
		if (((_SSkills + slave.skill.whoring + slave.skill.entertainment) >= 400) && ((slave.vagina < 0) || (slave.skill.vaginal >= 100))) {
			r += `Masterful Sex Slave. `;
		} else {
			_SSkills += slave.skill.vaginal;
			if (_SSkills > 180) {
				r += `Sex master${V.summaryStats? `[${Math.trunc(_SSkills)}]`: ''}.`;
			} else if ((_SSkills > 120) && (slave.vagina < 0)) {
				r += `Masterful shemale${V.summaryStats? `[${Math.trunc(_SSkills)}]`: ''}.`;
			} else if (_SSkills > 90) {
				r += `Sexual expert${V.summaryStats? `[${Math.trunc(_SSkills)}]`: ''}.`;
			} else if (_SSkills > 30) {
				r += `Sexually skilled${V.summaryStats? `[${Math.trunc(_SSkills)}]` : ''}.`;
			} else {
				r += `Sexually unskilled${V.summaryStats? `[${Math.trunc(_SSkills)}]` : ''}.`;
			}
			r += " ";
			if (slave.skill.whoring >= 100) {
				r += `Masterful whore${V.summaryStats? `[${slave.skill.whoring}]`: ''}.`;
			} else if (slave.skill.whoring >= 60) {
				r += `Expert whore${V.summaryStats? `[${slave.skill.whoring}]`: ''}.`;
			} else if (slave.skill.whoring >= 30) {
				r += `Skilled whore${V.summaryStats? `[${slave.skill.whoring}]`: ''}.`;
			} else if (slave.skill.whoring >= 10) {
				r += `Basic whore${V.summaryStats? `[${slave.skill.whoring}]`: ''}.`;
			}
			r += " ";
			if (slave.skill.entertainment >= 100) {
				r += `Masterful entertainer${V.summaryStats? `[${slave.skill.entertainment}]`: ''}.`;
			} else if (slave.skill.entertainment >= 60) {
				r += `Expert entertainer${V.summaryStats? `[${slave.skill.entertainment}]`: ''}.`;
			} else if (slave.skill.entertainment >= 30) {
				r += `Skilled entertainer${V.summaryStats? `[${slave.skill.entertainment}]`: ''}.`;
			} else if (slave.skill.entertainment >= 10) {
				r += `Basic entertainer${V.summaryStats? `[${slave.skill.entertainment}]`: ''}.`;
			}
			r += " ";
		}
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function long_prestige(slave) {
		if (slave.prestige > 0) {
			r += `<span class="green">`;
			if (slave.prestige > 2) {
				r += `Extremely prestigious.`;
			} else if (slave.prestige === 2) {
				r += `Very prestigious.`;
			} else if (slave.prestige === 1) {
				r += `Prestigious.`;
			}
			r += `</span> `;
		}
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function long_porn_prestige(slave) {
		if (slave.pornPrestige > 0) {
			r += `<span class="green">`;
			if (slave.pornPrestige > 2) {
				r += `Porn star.`;
			} else if (slave.pornPrestige === 2) {
				r += `Porn slut.`;
			} else if (slave.pornPrestige === 1) {
				r += `Porn amateur.`;
			}
			r += `</span> `;
		}
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function short_fetish(slave) {
		r += `<span class="lightcoral">`;
		switch (slave.fetish) {
			case "submissive":
				if (slave.fetishStrength > 95) {
					r += `Sub++`;
				} else if (slave.fetishStrength > 60) {
					r += `Sub+`;
				} else {
					r += `Sub`;
				}
				break;
			case "cumslut":
				if (slave.fetishStrength > 95) {
					r += `Oral++`;
				} else if (slave.fetishStrength > 60) {
					r += `Oral+`;
				} else {
					r += `Oral`;
				}
				break;
			case "humiliation":
				if (slave.fetishStrength > 95) {
					r += `Humil++`;
				} else if (slave.fetishStrength > 60) {
					r += `Humil+`;
				} else {
					r += `Humil`;
				}
				break;
			case "buttslut":
				if (slave.fetishStrength > 95) {
					r += `Anal++`;
				} else if (slave.fetishStrength > 60) {
					r += `Anal+`;
				} else {
					r += `Anal`;
				}
				break;
			case "boobs":
				if (slave.fetishStrength > 95) {
					r += `Boobs++`;
				} else if (slave.fetishStrength > 60) {
					r += `Boobs+`;
				} else {
					r += `Boobs`;
				}
				break;
			case "sadist":
				if (slave.fetishStrength > 95) {
					r += `Sadist++`;
				} else if (slave.fetishStrength > 60) {
					r += `Sadist+`;
				} else {
					r += `Sadist`;
				}
				break;
			case "masochist":
				if (slave.fetishStrength > 95) {
					r += `Pain++`;
				} else if (slave.fetishStrength > 60) {
					r += `Pain+`;
				} else {
					r += `Pain`;
				}
				break;
			case "dom":
				if (slave.fetishStrength > 95) {
					r += `Dom++`;
				} else if (slave.fetishStrength > 60) {
					r += `Dom+`;
				} else {
					r += `Dom`;
				}
				break;
			case "pregnancy":
				if (slave.fetishStrength > 95) {
					r += `Preg++`;
				} else if (slave.fetishStrength > 60) {
					r += `Preg+`;
				} else {
					r += `Preg`;
				}
				break;
			default:
				r += `Vanilla`;
				break;
		}
		if (V.summaryStats) {
			r += `[${slave.fetishStrength}]`;
		}
		r += `</span> `;
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function short_attraction(slave) {
		if (slave.attrXY <= 5) {
			r += `<span class="red">XY---${V.summaryStats? `[${slave.attrXY}]`: ''}</span>`;
		} else if (slave.attrXY <= 15) {
			r += `<span class="red">XY--${V.summaryStats? `[${slave.attrXY}]`: ''}</span>`;
		} else if (slave.attrXY <= 35) {
			r += `<span class="red">XY-${V.summaryStats? `[${slave.attrXY}]`: ''}</span>`;
		} else if (slave.attrXY <= 65) {
			r += `XY${V.summaryStats? `[${slave.attrXY}]`: ''}`;
		} else if (slave.attrXY <= 85) {
			r += `<span class="green">XY+${V.summaryStats? `[${slave.attrXY}]`: ''}</span>`;
		} else if (slave.attrXY <= 95) {
			r += `<span class="green">XY++${V.summaryStats? `[${slave.attrXY}]`: ''}</span>`;
		} else if (slave.attrXX > 95) {
			if (slave.energy <= 95) {
				r += `<span class="green">Omni!</span>`;
			} else {
				r += `<span class="green">Omni+Nympho!!</span>`;
			}
		} else {
			r += `<span class="green">XY+++${V.summaryStats? `[${slave.attrXY}]`: ''}</span>`;
		}
		r += " ";
		if (slave.attrXX <= 5) {
			r += `<span class="red">XX---${V.summaryStats? `[${slave.attrXX}]`: ''}</span>`;
		} else if (slave.attrXX <= 15) {
			r += `<span class="red">XX--${V.summaryStats? `[${slave.attrXX}]`: ''}</span>`;
		} else if (slave.attrXX <= 35) {
			r += `<span class="red">XX-${V.summaryStats? `[${slave.attrXX}]`: ''}</span>`;
		} else if (slave.attrXX <= 65) {
			r += `XX${V.summaryStats? `[${slave.attrXX}]`: ''}`;
		} else if (slave.attrXX <= 85) {
			r += `<span class="green">XX+${V.summaryStats? `[${slave.attrXX}]`: ''}</span>`;
		} else if (slave.attrXX <= 95) {
			r += `<span class="green">XX++${V.summaryStats? `[${slave.attrXX}]`: ''}</span>`;
		} else if (slave.attrXY <= 95) {
			r += `<span class="green">XX+++${V.summaryStats? `[${slave.attrXX}]`: ''}</span>`;
		}
		r += " ";
		if (slave.energy > 95) {
			if ((slave.attrXY <= 95) || (slave.attrXX <= 95)) {
				r += `<span class="green">Nympho!</span>`;
			}
		} else if (slave.energy > 80) {
			r += `<span class="green">SD++${V.summaryStats? `[${slave.energy}]`: ''}</span>`;
		} else if (slave.energy > 60) {
			r += `<span class="green">SD+${V.summaryStats? `[${slave.energy}]`: ''}</span>`;
		} else if (slave.energy > 40) {
			r += `<span class="yellow">SD${V.summaryStats? `[${slave.energy}]`: ''}</span>`;
		} else if (slave.energy > 20) {
			r += `<span class="red">SD-${V.summaryStats? `[${slave.energy}]`: ''}</span>`;
		} else {
			r += `<span class="red">SD--${V.summaryStats? `[${slave.energy}]`: ''}</span>`;
		}
		r += " ";
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function short_smart_fetish(slave) {
		if (slave.fetishKnown === 1) {
			if (slave.clitSetting === "off") {
				r += `SP-`;
			} else if (((slave.fetish !== "submissive") || (slave.fetishStrength <= 95)) && (slave.clitSetting === "submissive")) {
				r += `SP:sub`;
			} else if (((slave.fetish !== "cumslut") || (slave.fetishStrength <= 95)) && (slave.clitSetting === "oral")) {
				r += `SP:oral`;
			} else if (((slave.fetish !== "humiliation") || (slave.fetishStrength <= 95)) && (slave.clitSetting === "humiliation")) {
				r += `SP:humil`;
			} else if (((slave.fetish !== "buttslut") || (slave.fetishStrength <= 95)) && (slave.clitSetting === "anal")) {
				r += `SP:anal`;
			} else if (((slave.fetish !== "boobs") || (slave.fetishStrength <= 95)) && (slave.clitSetting === "boobs")) {
				r += `SP:boobs`;
			} else if (((slave.fetish !== "sadist") || (slave.fetishStrength <= 95)) && (slave.clitSetting === "sadist")) {
				r += `SP:sade`;
			} else if (((slave.fetish !== "masochist") || (slave.fetishStrength <= 95)) && (slave.clitSetting === "masochist")) {
				r += `SP:pain`;
			} else if (((slave.fetish !== "dom") || (slave.fetishStrength <= 95)) && (slave.clitSetting === "dom")) {
				r += `SP:dom`;
			} else if (((slave.fetish !== "pregnancy") || (slave.fetishStrength <= 95)) && (slave.clitSetting === "pregnancy")) {
				r += `SP:preg`;
			} else if (((slave.fetish !== "none") && (slave.clitSetting === "vanilla"))) {
				r += `SP:vanilla`;
			} else if ((slave.energy <= 95) && (slave.clitSetting === "all")) {
				r += `SP:all`;
			} else if ((slave.energy > 5) && (slave.clitSetting === "none")) {
				r += `SP:none`;
			} else if (!["women", "men", "anti-women", "anti-men"].includes(slave.clitSetting)) {
				r += `SP:monitoring`;
			}
		} else {
			switch (slave.clitSetting) {
				case "off":
					r += `SP-`;
					break;
				case "submissive":
					r += `SP:sub`;
					break;
				case "lesbian":
					r += `SP:les`;
					break;
				case "oral":
					r += `SP:oral`;
					break;
				case "humiliation":
					r += `SP:humil`;
					break;
				case "anal":
					r += `SP:anal`;
					break;
				case "boobs":
					r += `SP:boobs`;
					break;
				case "sadist":
					r += `SP:sade`;
					break;
				case "masochist":
					r += `SP:pain`;
					break;
				case "dom":
					r += `SP:dom`;
					break;
				case "pregnancy":
					r += `SP:pregnancy`;
					break;
				case "vanilla":
					r += `SP:vanilla`;
					break;
				case "all":
					r += `SP:all`;
					break;
				case "none":
					r += `SP:none`;
					break;
			}
		}
		r += " ";
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function short_smart_attraction(slave) {
		if (slave.attrKnown === 1) {
			if (slave.clitSetting === "women") {
				if (slave.attrXX < 95) {
					r += `SP:women`;
				} else {
					r += `SP:monitoring`;
				}
			} else if (slave.clitSetting === "men") {
				if (slave.attrXY < 95) {
					r += `SP:men`;
				} else {
					r += `SP:monitoring`;
				}
			} else if (slave.clitSetting === "anti-women") {
				if (slave.attrXX > 0) {
					r += `SP:anti-women`;
				} else {
					r += `SP:monitoring`;
				}
			} else if (slave.clitSetting === "anti-men") {
				if (slave.attrXY > 0) {
					r += `SP:anti-men`;
				} else {
					r += `SP:monitoring`;
				}
			}
		} else {
			if (slave.clitSetting === "women") {
				r += `SP:women`;
			} else if (slave.clitSetting === "men") {
				r += `SP:men`;
			} else if (slave.clitSetting === "anti-women") {
				r += `SP:anti-women`;
			} else if (slave.clitSetting === "anti-men") {
				r += `SP:anti-men`;
			}
		}
		r += " ";
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function short_behavior_flaw(slave) {
		r += `<span class="red">`;
		switch (slave.behavioralFlaw) {
			case "arrogant":
				r += `Arrog`;
				break;
			case "bitchy":
				r += `Bitchy`;
				break;
			case "odd":
				r += `Odd`;
				break;
			case "hates men":
				r += `Men-`;
				break;
			case "hates women":
				r += `Women-`;
				break;
			case "gluttonous":
				r += `Glut`;
				break;
			case "anorexic":
				r += `Ano`;
				break;
			case "devout":
				r += `Dev`;
				break;
			case "liberated":
				r += `Lib`;
				break;
			default:
				slave.behavioralFlaw = "none";
				break;
		}
		r += `</span> `;
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function short_sex_flaw(slave) {
		switch (slave.sexualFlaw) {
			case "hates oral":
				r += `<span class="red">Oral-</span>`;
				break;
			case "hates anal":
				r += `<span class="red">Anal-</span>`;
				break;
			case "hates penetration":
				r += `<span class="red">Fuck-</span>`;
				break;
			case "shamefast":
				r += `<span class="red">Shame</span>`;
				break;
			case "idealistic":
				r += `<span class="red">Ideal</span>`;
				break;
			case "repressed":
				r += `<span class="red">Repre</span>`;
				break;
			case "apathetic":
				r += `<span class="red">Apath</span>`;
				break;
			case "crude":
				r += `<span class="red">Crude</span>`;
				break;
			case "judgemental":
				r += `<span class="red">Judge</span>`;
				break;
			case "cum addict":
				r += `<span class="yellow">CumAdd</span>`;
				break;
			case "anal addict":
				r += `<span class="yellow">AnalAdd</span>`;
				break;
			case "attention whore":
				r += `<span class="yellow">Attention</span>`;
				break;
			case "breast growth":
				r += `<span class="yellow">BoobObsess</span>`;
				break;
			case "abusive":
				r += `<span class="yellow">Abusive</span>`;
				break;
			case "malicious":
				r += `<span class="yellow">Malice</span>`;
				break;
			case "self hating":
				r += `<span class="yellow">SelfHatr</span>`;
				break;
			case "neglectful":
				r += `<span class="yellow">SelfNeglect</span>`;
				break;
			case "breeder":
				r += `<span class="yellow">BreedObsess</span>`;
				break;
			default:
				slave.sexualFlaw = "none";
				break;
		}
		r += " ";
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function short_behavior_quirk(slave) {
		r += `<span class="green">`;
		switch (slave.behavioralQuirk) {
			case "confident":
				r += `Confid`;
				break;
			case "cutting":
				r += `Cutting`;
				break;
			case "funny":
				r += `Funny`;
				break;
			case "fitness":
				r += `Fit`;
				break;
			case "adores women":
				r += `Women+`;
				break;
			case "adores men":
				r += `Men+`;
				break;
			case "insecure":
				r += `Insec`;
				break;
			case "sinful":
				r += `Sinf`;
				break;
			case "advocate":
				r += `Advoc`;
				break;
			default:
				slave.behavioralQuirk = "none";
				break;
		}
		r += " ";
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function short_sex_quirk(slave) {
		switch (slave.sexualQuirk) {
			case "gagfuck queen":
				r += `Gagfuck`;
				break;
			case "painal queen":
				r += `Painal`;
				break;
			case "strugglefuck queen":
				r += `Struggle`;
				break;
			case "tease":
				r += `Tease`;
				break;
			case "romantic":
				r += `Romantic`;
				break;
			case "perverted":
				r += `Perverted`;
				break;
			case "caring":
				r += `Caring`;
				break;
			case "unflinching":
				r += `Unflinch`;
				break;
			case "size queen":
				r += `SizeQ`;
				break;
			default:
				slave.sexualQuirk = "none";
				break;
		}
		r += `</span> `;
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function long_fetish(slave) {
		r += `<span class="lightcoral">`;
		switch (slave.fetish) {
			case "submissive":
				if (slave.fetishStrength > 95) {
					r += `Complete submissive${V.summaryStats? `[${slave.fetishStrength}]` : ''}.`;
				} else if (slave.fetishStrength > 60) {
					r += `Submissive${V.summaryStats? `[${slave.fetishStrength}]` : ''}.`;
				} else {
					r += `Submissive tendencies${V.summaryStats? `[${slave.fetishStrength}]` : ''}.`;
				}
				break;
			case "cumslut":
				if (slave.fetishStrength > 95) {
					r += `Cumslut${V.summaryStats? `[${slave.fetishStrength}]` : ''}.`;
				} else if (slave.fetishStrength > 60) {
					r += `Oral fixation${V.summaryStats? `[${slave.fetishStrength}]` : ''}.`;
				} else {
					r += `Prefers oral${V.summaryStats? `[${slave.fetishStrength}]` : ''}.`;
				}
				break;
			case "humiliation":
				if (slave.fetishStrength > 95) {
					r += `Humiliation slut${V.summaryStats? `[${slave.fetishStrength}]` : ''}.`;
				} else if (slave.fetishStrength > 60) {
					r += `Exhibitionist${V.summaryStats? `[${slave.fetishStrength}]` : ''}.`;
				} else {
					r += `Interest in humiliation${V.summaryStats? `[${slave.fetishStrength}]` : ''}.`;
				}
				break;
			case "buttslut":
				if (slave.fetishStrength > 95) {
					r += `Buttslut${V.summaryStats? `[${slave.fetishStrength}]` : ''}.`;
				} else if (slave.fetishStrength > 60) {
					r += `Anal fixation${V.summaryStats? `[${slave.fetishStrength}]` : ''}.`;
				} else {
					r += `Prefers anal${V.summaryStats? `[${slave.fetishStrength}]` : ''}.`;
				}
				break;
			case "boobs":
				if (slave.fetishStrength > 95) {
					r += `Boobslut${V.summaryStats? `[${slave.fetishStrength}]` : ''}.`;
				} else if (slave.fetishStrength > 60) {
					r += `Breast fixation${V.summaryStats? `[${slave.fetishStrength}]` : ''}.`;
				} else {
					r += `Loves boobs${V.summaryStats? `[${slave.fetishStrength}]` : ''}.`;
				}
				break;
			case "sadist":
				if (slave.fetishStrength > 95) {
					r += `Complete sadist${V.summaryStats? `[${slave.fetishStrength}]` : ''}.`;
				} else if (slave.fetishStrength > 60) {
					r += `Sadist${V.summaryStats? `[${slave.fetishStrength}]` : ''}.`;
				} else {
					r += `Sadistic tendencies${V.summaryStats? `[${slave.fetishStrength}]` : ''}.`;
				}
				break;
			case "masochist":
				if (slave.fetishStrength > 95) {
					r += `Complete masochist${V.summaryStats? `[${slave.fetishStrength}]` : ''}.`;
				} else if (slave.fetishStrength > 60) {
					r += `Masochist${V.summaryStats? `[${slave.fetishStrength}]` : ''}.`;
				} else {
					r += `Masochistic tendencies${V.summaryStats? `[${slave.fetishStrength}]` : ''}.`;
				}
				break;
			case "dom":
				if (slave.fetishStrength > 95) {
					r += `Complete dom${V.summaryStats? `[${slave.fetishStrength}]` : ''}.`;
				} else if (slave.fetishStrength > 60) {
					r += `Dominant${V.summaryStats? `[${slave.fetishStrength}]` : ''}.`;
				} else {
					r += `Dominant tendencies${V.summaryStats? `[${slave.fetishStrength}]` : ''}.`;
				}
				break;
			case "pregnancy":
				if (slave.fetishStrength > 95) {
					r += `Pregnancy fetish${V.summaryStats? `[${slave.fetishStrength}]` : ''}.`;
				} else if (slave.fetishStrength > 60) {
					r += `Pregnancy kink${V.summaryStats? `[${slave.fetishStrength}]` : ''}.`;
				} else {
					r += `Interest in impregnation${V.summaryStats? `[${slave.fetishStrength}]` : ''}.`;
				}
				break;
			default:
				r += `Sexually vanilla${V.summaryStats? `[${slave.fetishStrength}]` : ''}.`;
				break;
		}
		r += `</span> `;
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function long_attraction(slave) {
		if (slave.attrXY <= 5) {
			r += `<span class="red">Disgusted by men${V.summaryStats? `[${slave.attrXY}]` : ''},</span> `;
		} else if (slave.attrXY <= 15) {
			r += `<span class="red">Turned off by men${V.summaryStats? `[${slave.attrXY}]` : ''},</span> `;
		} else if (slave.attrXY <= 35) {
			r += `<span class="red">Not attracted to men${V.summaryStats? `[${slave.attrXY}]` : ''},</span> `;
		} else if (slave.attrXY <= 65) {
			r += `Indifferent to men${V.summaryStats? `[${slave.attrXY}]` : ''}, `;
		} else if (slave.attrXY <= 85) {
			r += `<span class="green">Attracted to men${V.summaryStats? `[${slave.attrXY}]` : ''},</span> `;
		} else if (slave.attrXY <= 95) {
			r += `<span class="green">Aroused by men${V.summaryStats? `[${slave.attrXY}]` : ''},</span> `;
		} else if (slave.attrXX > 95) {
			if (slave.energy <= 95) {
				r += `<span class="green">Omnisexual!</span> `;
			} else {
				r += `<span class="green">Omnisexual nymphomaniac!</span> `;
			}
		} else {
			r += `<span class="green">Passionate about men${V.summaryStats? `[${slave.attrXY}]` : ''},</span> `;
		}
		if (slave.attrXX <= 5) {
			r += `<span class="red">disgusted by women${V.summaryStats? `[${slave.attrXX}]` : ''}.</span> `;
		} else if (slave.attrXX <= 15) {
			r += `<span class="red">turned off by women${V.summaryStats? `[${slave.attrXX}]` : ''}.</span> `;
		} else if (slave.attrXX <= 35) {
			r += `<span class="red">not attracted to women${V.summaryStats? `[${slave.attrXX}]` : ''}.</span> `;
		} else if (slave.attrXX <= 65) {
			r += `indifferent to women${V.summaryStats? `[${slave.attrXX}]` : ''}. `;
		} else if (slave.attrXX <= 85) {
			r += `<span class="green">attracted to women${V.summaryStats? `[${slave.attrXX}]` : ''}.</span> `;
		} else if (slave.attrXX <= 95) {
			r += `<span class="green">aroused by women${V.summaryStats? `[${slave.attrXX}]` : ''}.</span> `;
		} else if (slave.attrXY <= 95) {
			r += `<span class="green">passionate about women${V.summaryStats? `[${slave.attrXX}]` : ''}.</span> `;
		}
		if (slave.energy > 95) {
			if ((slave.attrXY <= 95) || (slave.attrXX <= 95)) {
				r += `<span class="green">Nymphomaniac!</span>`;
			}
		} else if (slave.energy > 80) {
			r += `<span class="green">Powerful sex drive${V.summaryStats? `[${slave.energy}]` : ''}.</span>`;
		} else if (slave.energy > 60) {
			r += `<span class="green">Good sex drive${V.summaryStats? `[${slave.energy}]` : ''}.</span>`;
		} else if (slave.energy > 40) {
			r += `<span class="yellow">Average sex drive${V.summaryStats? `[${slave.energy}]` : ''}.</span>`;
		} else if (slave.energy > 20) {
			r += `<span class="red">Poor sex drive${V.summaryStats? `[${slave.energy}]` : ''}.</span>`;
		} else {
			r += `<span class="red">No sex drive${V.summaryStats? `[${slave.energy}]` : ''}.</span>`;
		}
		r += " ";
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function long_smart_fetish(slave) {
		if (slave.fetishKnown === 1) {
			if (slave.clitSetting === "off") {
				r += `SP off.`;
			} else if (((slave.fetish !== "submissive") || (slave.fetishStrength <= 95)) && (slave.clitSetting === "submissive")) {
				r += `SP: submissive.`;
			} else if (((slave.fetish !== "cumslut") || (slave.fetishStrength <= 95)) && (slave.clitSetting === "oral")) {
				r += `SP: oral.`;
			} else if (((slave.fetish !== "humiliation") || (slave.fetishStrength <= 95)) && (slave.clitSetting === "humiliation")) {
				r += `SP: humiliation.`;
			} else if (((slave.fetish !== "buttslut") || (slave.fetishStrength <= 95)) && (slave.clitSetting === "anal")) {
				r += `SP: anal.`;
			} else if (((slave.fetish !== "boobs") || (slave.fetishStrength <= 95)) && (slave.clitSetting === "boobs")) {
				r += `SP: breasts.`;
			} else if (((slave.fetish !== "sadist") || (slave.fetishStrength <= 95)) && (slave.clitSetting === "sadist")) {
				r += `SP: sadism.`;
			} else if (((slave.fetish !== "masochist") || (slave.fetishStrength <= 95)) && (slave.clitSetting === "masochist")) {
				r += `SP: masochism.`;
			} else if (((slave.fetish !== "dom") || (slave.fetishStrength <= 95)) && (slave.clitSetting === "dom")) {
				r += `SP: dominance.`;
			} else if (((slave.fetish !== "pregnancy") || (slave.fetishStrength <= 95)) && (slave.clitSetting === "pregnancy")) {
				r += `SP: pregnancy.`;
			} else if ((slave.fetish !== "none") && (slave.clitSetting === "vanilla")) {
				r += `SP: vanilla.`;
			} else if ((slave.energy <= 95) && (slave.clitSetting === "all")) {
				r += `SP: all.`;
			} else if ((slave.energy > 5) && (slave.clitSetting === "none")) {
				r += `SP: none.`;
			} else if (!["women", "men", "anti-women", "anti-men"].includes(slave.clitSetting)) {
				r += `SP: monitoring.`;
			}
		} else {
			switch (slave.clitSetting) {
				case "off":
					r += `SP off.`;
					break;
				case "submissive":
					r += `SP: submissive.`;
					break;
				case "oral":
					r += `SP: oral.`;
					break;
				case "humiliation":
					r += `SP: humiliation.`;
					break;
				case "anal":
					r += `SP: anal.`;
					break;
				case "boobs":
					r += `SP: breasts.`;
					break;
				case "sadist":
					r += `SP: sadism.`;
					break;
				case "masochist":
					r += `SP: masochism.`;
					break;
				case "dom":
					r += `SP: dominance.`;
					break;
				case "pregnancy":
					r += `SP: pregnancy.`;
					break;
				case "vanilla":
					r += `SP: vanilla.`;
					break;
				case "all":
					r += `SP: all.`;
					break;
				case "none":
					r += `SP: none.`;
					break;
			}
		}
		r += " ";
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function long_smart_attraction(slave) {
		if (slave.attrKnown === 1) {
			if ((slave.attrXX < 100) && (slave.clitSetting === "women")) {
				r += `SP: women.`;
			} else if ((slave.attrXY < 100) && (slave.clitSetting === "men")) {
				r += `SP: men.`;
			}
		} else {
			if (slave.clitSetting === "women") {
				r += `SP: women.`;
			} else if (slave.clitSetting === "men") {
				r += `SP: men.`;
			}
		}
		r += " ";
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function long_behavior_flaw(slave) {
		r += `<span class="red">`;
		switch (slave.behavioralFlaw) {
			case "arrogant":
				r += `Arrogant.`;
				break;
			case "bitchy":
				r += `Bitchy.`;
				break;
			case "odd":
				r += `Odd.`;
				break;
			case "hates men":
				r += `Hates men.`;
				break;
			case "hates women":
				r += `Hates women.`;
				break;
			case "gluttonous":
				r += `Stress eater.`;
				break;
			case "anorexic":
				r += `Anorexic.`;
				break;
			case "devout":
				r += `Devoutly religious.`;
				break;
			case "liberated":
				r += `Mentally liberated.`;
				break;
			default:
				slave.behavioralFlaw = "none";
				break;
		}
		r += `</span> `;
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function long_sex_flaw(slave) {
		switch (slave.sexualFlaw) {
			case "hates oral":
				r += `<span class="red">Hates oral.</span>`;
				break;
			case "hates anal":
				r += `<span class="red">Hates anal.</span>`;
				break;
			case "hates penetration":
				r += `<span class="red">Hates penetration.</span>`;
				break;
			case "shamefast":
				r += `<span class="red">Shamefast.</span>`;
				break;
			case "idealistic":
				r += `<span class="red">Sexually idealistic.</span>`;
				break;
			case "repressed":
				r += `<span class="red">Sexually repressed.</span>`;
				break;
			case "apathetic":
				r += `<span class="red">Sexually apathetic.</span>`;
				break;
			case "crude":
				r += `<span class="red">Sexually crude.</span>`;
				break;
			case "judgemental":
				r += `<span class="red">Sexually judgemental.</span>`;
				break;
			case "cum addict":
				r += `<span class="yellow">Cum addict.</span>`;
				break;
			case "anal addict":
				r += `<span class="yellow">Anal addict.</span>`;
				break;
			case "attention whore":
				r += `<span class="yellow">Attention whore.</span>`;
				break;
			case "breast growth":
				r += `<span class="yellow">Breast obsession.</span>`;
				break;
			case "abusive":
				r += `<span class="yellow">Sexually abusive.</span>`;
				break;
			case "malicious":
				r += `<span class="yellow">Sexually malicious.</span>`;
				break;
			case "self hating":
				r += `<span class="yellow">Self hatred.</span>`;
				break;
			case "neglectful":
				r += `<span class="yellow">Self neglectful.</span>`;
				break;
			case "breeder":
				r += `<span class="yellow">Breeding obsession.</span>`;
				break;
			default:
				slave.sexualFlaw = "none";
				break;
		}
		r += " ";
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function long_behavior_quirk(slave) {
		r += `<span class="green">`;
		switch (slave.behavioralQuirk) {
			case "confident":
				r += `Confident.`;
				break;
			case "cutting":
				r += `Cutting.`;
				break;
			case "funny":
				r += `Funny.`;
				break;
			case "fitness":
				r += `Fitness.`;
				break;
			case "adores women":
				r += `Adores women.`;
				break;
			case "adores men":
				r += `Adores men.`;
				break;
			case "insecure":
				r += `Insecure.`;
				break;
			case "sinful":
				r += `Sinful.`;
				break;
			case "advocate":
				r += `Advocate.`;
				break;
			default:
				slave.behavioralQuirk = "none";
				break;
		}
		r += " ";
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function long_sex_quirk(slave) {
		switch (slave.sexualQuirk) {
			case "gagfuck queen":
				r += `Gagfuck queen.`;
				break;
			case "painal queen":
				r += `Painal queen.`;
				break;
			case "strugglefuck queen":
				r += `Strugglefuck queen.`;
				break;
			case "tease":
				r += `Tease.`;
				break;
			case "romantic":
				r += `Romantic.`;
				break;
			case "perverted":
				r += `Perverted.`;
				break;
			case "caring":
				r += `Caring.`;
				break;
			case "unflinching":
				r += `Unflinching.`;
				break;
			case "size queen":
				r += `Size queen.`;
				break;
			default:
				slave.sexualQuirk = "none";
				break;
		}
		r += `</span> `;
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function short_extended_family(slave) {
		let handled = 0;
		if (slave.mother > 0) {
			const _ssj = V.slaves.findIndex(s => s.ID === slave.mother);
			if (_ssj !== -1) {
				r += `${SlaveFullName(V.slaves[_ssj])}'s daughter`;
				if (slave.relationshipTarget === V.slaves[_ssj].ID) {
					const friendShipShort = relationshipTermShort(slave);
					r += ` & ${friendShipShort}`;
					handled = 1;
				}
			}
			r += " ";
		} else if (slave.mother === -1) {
			r += `Your daughter`;
			if (slave.relationship === -3) {
				r += ` & wife`;
				handled = 1;
			} else if (slave.relationship === -2) {
				r += ` & lover`;
				handled = 1;
			}
			r += " ";
		} else if (slave.mother in V.missingTable && V.showMissingSlavesSD && V.showMissingSlaves) {
			r += `${V.missingTable[slave.mother].fullName}'s daughter `;
		}
		if (slave.father > 0 && slave.father !== slave.mother) {
			const _ssj = V.slaves.findIndex(s => s.ID === slave.father);
			if (_ssj !== -1) {
				r += `${SlaveFullName(V.slaves[_ssj])}'s daughter`;
				if (slave.relationshipTarget === V.slaves[_ssj].ID && handled !== 1) {
					const friendShipShort = relationshipTermShort(slave);
					r += ` & ${friendShipShort}`;
					handled = 1;
				}
			}
			r += " ";
		} else if (slave.father === -1 && slave.mother !== -1) {
			r += `Your daughter`;
			if (slave.relationship === -3) {
				r += ` & wife`;
				handled = 1;
			} else if (slave.relationship === -2) {
				r += ` & lover`;
				handled = 1;
			}
			r += " ";
		} else if (slave.father in V.missingTable && slave.father !== slave.mother && V.showMissingSlavesSD && V.showMissingSlaves) {
			r += `${V.missingTable[slave.father].fullName}'s daughter`;
		}
		if (slave.daughters === 1) {
			let _ssj = V.slaves.findIndex(s => s.mother === slave.ID);
			if (_ssj !== -1) {
				r += `${SlaveFullName(V.slaves[_ssj])}'s mother`;
				if (slave.relationshipTarget === V.slaves[_ssj].ID) {
					const friendShipShort = relationshipTermShort(slave);
					r += ` & ${friendShipShort}`;
					handled = 1;
				}
			}
			r += " ";
			_ssj = V.slaves.findIndex(s => s.father === slave.ID);
			if (_ssj !== -1) {
				r += `${SlaveFullName(V.slaves[_ssj])}'s father`;
				if (slave.relationshipTarget === V.slaves[_ssj].ID && handled !== 1) {
					const friendShipShort = relationshipTermShort(slave);
					r += ` & ${friendShipShort}`;
					handled = 1;
				}
			}
			r += " ";
		} else if (slave.daughters > 1) {
			r += `multiple daughters `;
		}
		if (slave.sisters === 1) {
			const _ssj = V.slaves.findIndex(s => areSisters(s, slave) > 0);
			if (_ssj !== -1) {
				r += `${SlaveFullName(V.slaves[_ssj])}'s sister`;
				if (slave.relationshipTarget === V.slaves[_ssj].ID) {
					const friendShipShort = relationshipTermShort(slave);
					r += `& ${friendShipShort}`;
					handled = 1;
				}
			}
			r += " ";
		} else if (slave.sisters > 1) {
			r += `multiple sisters `;
		}
		if (slave.relationship > 0 && handled !== 1) {
			const _ssj = V.slaves.findIndex(s => s.ID === slave.relationshipTarget);
			if (_ssj !== -1) {
				r += `${SlaveFullName(V.slaves[_ssj])}'s`;
				const friendShipShort = relationshipTermShort(slave);
				r += ` ${friendShipShort}`;
			}
		} else if (slave.relationship === -3 && slave.mother !== -1 && slave.father !== -1) {
			r += `Your wife`;
		} else if (slave.relationship === -2) {
			r += `E Bonded`;
		} else if (slave.relationship === -1) {
			r += `E Slut`;
		}
		r += " ";
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function short_legacy_family(slave) {
		if (slave.relation !== 0) {
			const _ssj = V.slaves.findIndex(s => s.ID === slave.relationTarget);
			if (_ssj !== -1) {
				r += `${SlaveFullName(V.slaves[_ssj])}'s ${slave.relation}`;
			}
		}
		if (slave.relationship > 0) {
			const _ssj = V.slaves.findIndex(s => s.ID === slave.relationshipTarget);
			if (_ssj !== -1) {
				const friendship = relationshipTerm(slave);
				if (slave.relationshipTarget !== slave.relationTarget) {
					r += `${SlaveFullName(V.slaves[_ssj])}'s`;
				} else {
					r += ` &`;
				}
				r += ` ${friendship}`;
			}
		} else if (slave.relationship === -3) {
			r += `Your wife`;
		} else if (slave.relationship === -2) {
			r += `E Bonded`;
		} else if (slave.relationship === -1) {
			r += `E Slut`;
		}
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function short_clone(slave) {
		if (slave.clone !== 0) {
			r += ` Clone`;
		}
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function short_rival(slave) {
		if (slave.rivalry !== 0) {
			r += `    `;
			const _ssj = V.slaves.findIndex(s => s.ID === slave.rivalryTarget);
			if (_ssj !== -1) {
				r += `<span class="lightsalmon">`;
				if (slave.rivalry <= 1) {
					r += `Disl ${SlaveFullName(V.slaves[_ssj])}`;
				} else if (slave.rivalry <= 2) {
					r += `${SlaveFullName(V.slaves[_ssj])}'s rival`;
				} else {
					r += `Hates ${SlaveFullName(V.slaves[_ssj])}`;
				}
				r += `</span> `;
			}
		}
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function long_extended_family(slave) {
		let handled = 0;
		if (slave.mother > 0) {
			const _ssj = V.slaves.findIndex(s => s.ID === slave.mother);
			if (_ssj !== -1) {
				r += `${SlaveFullName(V.slaves[_ssj])}'s <span class="lightgreen">daughter`;
				if (slave.relationshipTarget === V.slaves[_ssj].ID) {
					const friendShipShort = relationshipTerm(slave);
					r += ` and ${friendShipShort}`;
					handled = 1;
				}
				r += `.</span> `;
			}
		} else if (slave.mother === -1) {
			r += `Your `;
			if (slave.relationship === -3) {
				r += `<span class="lightgreen">daughter and wife.</span> `;
				handled = 1;
			} else if (slave.relationship === -2) {
				r += `<span class="lightgreen">daughter and lover.</span> `;
				handled = 1;
			} else {
				r += `<span class="lightgreen">daughter.</span> `;
			}
		} else if (slave.mother in V.missingTable && V.showMissingSlavesSD && V.showMissingSlaves) {
			r += `${V.missingTable[slave.mother].fullName}'s <span class="lightgreen">daughter.</span> `;
		}
		if (slave.father > 0 && slave.father !== slave.mother) {
			const _ssj = V.slaves.findIndex(s => s.ID === slave.father);
			if (_ssj !== -1) {
				r += `${SlaveFullName(V.slaves[_ssj])}'s <span class="lightgreen">daughter`;
				if (slave.relationshipTarget === V.slaves[_ssj].ID) {
					const friendShipShort = relationshipTerm(slave);
					r += ` and ${friendShipShort}`;
					handled = 1;
				}
				r += `.</span> `;
			}
		} else if (slave.father === -1 && slave.father !== slave.mother) {
			r += `Your `;
			if (slave.relationship === -3) {
				r += `<span class="lightgreen">daughter and wife.</span> `;
				handled = 1;
			} else if (slave.relationship === -2) {
				r += `<span class="lightgreen">daughter and lover.</span> `;
				handled = 1;
			} else {
				r += `<span class="lightgreen">daughter.</span> `;
			}
		} else if (slave.father in V.missingTable && slave.father !== slave.mother && V.showMissingSlavesSD && V.showMissingSlaves) {
			r += `${V.missingTable[slave.father].fullName}'s <span class="lightgreen">daughter.</span> `;
		}
		if (slave.daughters === 1) {
			let _ssj = V.slaves.findIndex(s => s.mother === slave.ID);
			if (_ssj !== -1) {
				r += `${SlaveFullName(V.slaves[_ssj])}'s <span class="lightgreen">mother`;
				if (slave.relationshipTarget === V.slaves[_ssj].ID) {
					const friendShipShort = relationshipTerm(slave);
					r += ` and ${friendShipShort}`;
					handled = 1;
				}
				r += `.</span> `;
			}
			_ssj = V.slaves.findIndex(s => s.father === slave.ID);
			if (_ssj !== -1) {
				r += `${SlaveFullName(V.slaves[_ssj])}'s <span class="lightgreen">father`;
				if (slave.relationshipTarget === V.slaves[_ssj].ID) {
					const friendShipShort = relationshipTerm(slave);
					r += ` and ${friendShipShort}`;
					handled = 1;
				}
				r += `.</span> `;
			}
		} else if (slave.daughters > 1) {
			if (slave.daughters > 10) {
				r += `<span class="lightgreen">Has tons of daughters.</span> `;
			} else if (slave.daughters > 5) {
				r += `<span class="lightgreen">Has many daughters.</span> `;
			} else {
				r += `<span class="lightgreen">Has several daughters.</span> `;
			}
		}
		if (slave.sisters === 1) {
			const _ssj = V.slaves.findIndex(s => areSisters(s, slave) > 0);
			if (_ssj !== -1) {
				r += `${SlaveFullName(V.slaves[_ssj])}'s <span class="lightgreen">sister`;
				if (slave.relationshipTarget === V.slaves[_ssj].ID) {
					const friendShipShort = relationshipTerm(slave);
					r += ` and ${friendShipShort}`;
					handled = 1;
				}
				r += `.</span> `;
			}
		} else if (slave.sisters > 1) {
			if (slave.sisters > 10) {
				r += `<span class="lightgreen">One of many sisters.</span> `;
			} else if (slave.sisters > 5) {
				r += `<span class="lightgreen">Has many sisters.</span> `;
			} else {
				r += `<span class="lightgreen">Has several sisters.</span> `;
			}
		}
		if (slave.relationship > 0 && handled !== 1) {
			const _ssj = V.slaves.findIndex(s => s.ID === slave.relationshipTarget);
			if (_ssj !== -1) {
				const friendship = relationshipTerm(slave);
				r += `${SlaveFullName(V.slaves[_ssj])}'s `;
				r += `<span class="lightgreen">${friendship}.</span> `;
			}
		} else if (slave.relationship === -3 && slave.mother !== -1 && slave.father !== -1) {
			r += `<span class="lightgreen">Your wife.</span> `;
		} else if (slave.relationship === -2) {
			r += `<span class="lightgreen">Emotionally bonded to you.</span> `;
		} else if (slave.relationship === -1) {
			r += `<span class="lightgreen">Emotional slut.</span> `;
		}
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function long_legacy_family(slave) {
		if (slave.relation !== 0) {
			const _ssj = V.slaves.findIndex(s => s.ID === slave.relationTarget);
			if (_ssj !== -1) {
				r += `${SlaveFullName(V.slaves[_ssj])}'s `;
				if (slave.relationshipTarget !== slave.relationTarget) {
					r += `<span class="lightgreen">${slave.relation}.</span> `;
				} else {
					r += `<span class="lightgreen">${slave.relation}</span> `;
				}
				if (slave.relationship <= 0) {
					r += `    `;
				}
			}
		}
		if (slave.relationship > 0) {
			const _ssj = V.slaves.findIndex(s => s.ID === slave.relationshipTarget);
			if (_ssj !== -1) {
				const friendship = relationshipTerm(slave);
				if (slave.relationshipTarget !== slave.relationTarget) {
					r += `${SlaveFullName(V.slaves[_ssj])}'s `;
				} else {
					r += ` and `;
				}
				r += `<span class="lightgreen">${friendship}.</span> `;
			}
		} else if (slave.relationship === -3) {
			r += `<span class="lightgreen">Your wife.</span> `;
		} else if (slave.relationship === -2) {
			r += `<span class="lightgreen">Emotionally bonded to you.</span> `;
		} else if (slave.relationship === -1) {
			r += `<span class="lightgreen">Emotional slut.</span> `;
		}
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function long_clone(slave) {
		if (slave.clone !== 0) {
			r += ` <span class="skyblue">Clone of ${slave.clone}.</span>`;
		}
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function long_rival(slave) {
		if (slave.rivalry !== 0) {
			r += `    `;
			const _ssj = V.slaves.findIndex(s => s.ID === slave.rivalryTarget);
			if (_ssj !== -1) {
				if (slave.rivalry <= 1) {
					r += `<span class="lightsalmon">Dislikes</span> ${SlaveFullName(V.slaves[_ssj])}.`;
				} else if (slave.rivalry <= 2) {
					r += `${SlaveFullName(V.slaves[_ssj])}'s <span class="lightsalmon">rival.</span>`;
				} else {
					r += `<span class="lightsalmon">Hates</span> ${SlaveFullName(V.slaves[_ssj])}.`;
				}
			}
			r += " ";
		}
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function long_clothes(slave) {
		switch (slave.clothes) {
			case "attractive lingerie":
				r += `Nice lingerie.`;
				break;
			case "a succubus outfit":
				r += `Succubus outfit.`;
				break;
			case "a string bikini":
				r += `String bikini.`;
				break;
			case "a scalemail bikini":
				r += `Scalemail bikini.`;
				break;
			case "striped panties":
				r += `Striped panties.`;
				break;
			case "a monokini":
				r += `Monokini.`;
				break;
			case "an apron":
				r += `Apron.`;
				break;
			case "a cybersuit":
				r += `Cybersuit.`;
				break;
			case "cutoffs and a t-shirt":
				r += `Cutoffs, t-shirt.`;
				break;
			case "a slutty outfit":
				r += `Slutty outfit.`;
				break;
			case "uncomfortable straps":
				r += `Leather straps.`;
				break;
			case "a fallen nuns habit":
				r += `Slutty habit.`;
				break;
			case "a chattel habit":
				r += `Chattel habit.`;
				break;
			case "a penitent nuns habit":
				r += `Cilice.`;
				break;
			case "slutty jewelry":
				r += `Bangles.`;
				break;
			case "attractive lingerie for a pregnant woman":
				r += `Preggo lingerie.`;
				break;
			case "a maternity dress":
				r += `Maternity dress.`;
				break;
			case "stretch pants and a crop-top":
				r += `Stretch pants, crop-top.`;
				break;
			case "harem gauze":
				r += `Harem outfit.`;
				break;
			case "a slave gown":
				r += `Slave gown.`;
				break;
			case "a halter top dress":
				r += `Halter top dress.`;
				break;
			case "a mini dress":
				r += `Mini dress.`;
				break;
			case "a ball gown":
				r += `Ball gown.`;
				break;
			case "slutty business attire":
				r += `Slutty suit.`;
				break;
			case "nice business attire":
				r += `Nice suit.`;
				break;
			case "a comfortable bodysuit":
				r += `Bodysuit.`;
				break;
			case "a military uniform":
				r += `Military uniform.`;
				break;
			case "a schutzstaffel uniform":
				r += `Schutzstaffel uniform.`;
				break;
			case "a slutty schutzstaffel uniform":
				r += `Slutty Schutzstaffel uniform.`;
				break;
			case "a red army uniform":
				r += `Red Army uniform.`;
				break;
			case "a long qipao":
				r += `Long Qipao.`;
				break;
			case "battlearmor":
				r += `Battlearmor.`;
				break;
			case "a mounty outfit":
				r += `Mounty outfit.`;
				break;
			case "a dirndl":
				r += `Dirndl.`;
				break;
			case "lederhosen":
				r += `Lederhosen.`;
				break;
			case "a biyelgee costume":
				r += `Biyelgee costume.`;
				break;
			case "a leotard":
				r += `Leotard.`;
				break;
			case "a bunny outfit":
				r += `Bunny outfit.`;
				break;
			case "a slutty maid outfit":
				r += `Slutty maid.`;
				break;
			case "a nice maid outfit":
				r += `Nice maid.`;
				break;
			case "a slutty nurse outfit":
				r += `Slutty nurse.`;
				break;
			case "a nice nurse outfit":
				r += `Nice nurse.`;
				break;
			case "a schoolgirl outfit":
				r += `Schoolgirl outfit.`;
				break;
			case "a kimono":
				r += `Kimono.`;
				break;
			case "a hijab and abaya":
				r += `Hijab and abaya.`;
				break;
			case "battledress":
				r += `Battledress.`;
				break;
			case "a latex catsuit":
				r += `Nice latex.`;
				break;
			case "restrictive latex":
				r += `Bondage latex.`;
				break;
			case "conservative clothing":
				r += `Conservative clothing.`;
				break;
			case "chains":
				r += `Chains.`;
				break;
			case "overalls":
				r += `Overalls.`;
				break;
			case "a cheerleader outfit":
				r += `Cheerleader.`;
				break;
			case "clubslut netting":
				r += `Netting.`;
				break;
			case "shibari ropes":
				r += `Shibari.`;
				break;
			case "Western clothing":
				r += `Chaps.`;
				break;
			case "body oil":
				r += `Body oil.`;
				break;
			case "a toga":
				r += `Toga.`;
				break;
			case "a huipil":
				r += `Huipil.`;
				break;
			case "a slutty qipao":
				r += `Slutty qipao.`;
				break;
			case "spats and a tank top":
				r += `Spats, tank top.`;
				break;
			case "a burkini":
				r += `Burkini.`;
				break;
			case "a niqab and abaya":
				r += `Niqab and abaya.`;
				break;
			case "a klan robe":
				r += `Klan robe.`;
				break;
			case "a hijab and blouse":
				r += `Hijab and blouse.`;
				break;
			case "a burqa":
				r += `Burqa.`;
				break;
			case "kitty lingerie":
				r += `Kitty lingerie.`;
				break;
			case "a tube top and thong":
				r += `Tube top, thong.`;
				break;
			case "a button-up shirt and panties":
				r += `Button-up shirt, panties.`;
				break;
			case "a gothic lolita dress":
				r += `Gothic lolita dress.`;
				break;
			case "a hanbok":
				r += `Hanbok.`;
				break;
			case "a bra":
				r += `Nice bra.`;
				break;
			case "a button-up shirt":
				r += `Nice button-up shirt.`;
				break;
			case "a nice pony outfit":
				r += `Nice pony outfit.`;
				break;
			case "a sweater":
				r += `Nice sweater.`;
				break;
			case "a tank-top":
				r += `Nice tank-top.`;
				break;
			case "a thong":
				r += `Nice thong.`;
				break;
			case "a tube top":
				r += `Nice tube top.`;
				break;
			case "a one-piece swimsuit":
				r += `Swimsuit.`;
				break;
			case "a police uniform":
				r += `Police uniform.`;
				break;
			case "a striped bra":
				r += `Striped bra.`;
				break;
			case "a skimpy loincloth":
				r += `Skimpy loincloth.`;
				break;
			case "a slutty klan robe":
				r += `Slutty klan robe.`;
				break;
			case "a slutty pony outfit":
				r += `Slutty pony outfit.`;
				break;
			case "a Santa dress":
				r += `Santa dress.`;
				break;
			case "a sports bra":
				r += `Sports bra.`;
				break;
			case "a sweater and panties":
				r += `Sweater, panties.`;
				break;
			case "a t-shirt":
				r += `T-shirt.`;
				break;
			case "a tank-top and panties":
				r += `Tank-top, panties.`;
				break;
			case "a t-shirt and thong":
				r += `Thong, t-shirt.`;
				break;
			case "an oversized t-shirt and boyshorts":
				r += `Over-sized t-shirt, boy shorts.`;
				break;
			case "an oversized t-shirt":
				r += `Nice over-sized t-shirt.`;
				break;
			case "a t-shirt and jeans":
				r += `Blue jeans, t-shirt.`;
				break;
			case "boyshorts":
				r += `Boy shorts.`;
				break;
			case "cutoffs":
				r += `Jean shorts.`;
				break;
			case "leather pants and pasties":
				r += `Leather pants, pasties.`;
				break;
			case "leather pants":
				r += `Nice leather pants.`;
				break;
			case "panties":
				r += `Nice panties.`;
				break;
			case "sport shorts and a t-shirt":
				r += `Nice sport shorts, shirt.`;
				break;
			case "a t-shirt and panties":
				r += `Panties, t-shirt.`;
				break;
			case "panties and pasties":
				r += `Pasties, panties.`;
				break;
			case "pasties":
				r += `Pasties.`;
				break;
			case "striped underwear":
				r += `Striped underwear`;
				break;
			case "sport shorts and a sports bra":
				r += `Shorts, bra.`;
				break;
			case "jeans":
				r += `Tight blue jeans.`;
				break;
			case "a sweater and cutoffs":
				r += `Jean shorts, sweater.`;
				break;
			case "leather pants and a tube top":
				r += `Leather pants, tube top.`;
				break;
			case "sport shorts":
				r += `Shorts.`;
				break;
			default:
				r += `Naked.`;
				break;
		}
		r += " ";
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function long_collar(slave) {
		switch (slave.collar) {
			case "uncomfortable leather":
				r += `Leather collar.`;
				break;
			case "tight steel":
				r += `Steel collar.`;
				break;
			case "preg biometrics":
				r += `Pregnancy biometrics collar.`;
				break;
			case "cruel retirement counter":
				r += `Cruel counter collar.`;
				break;
			case "shock punishment":
				r += `Shock collar.`;
				break;
			case "dildo gag":
				r += `Dildo gag.`;
				break;
			case "massive dildo gag":
				r += `Throat-bulging dildo gag.`;
				break;
			case "neck corset":
				r += `Neck corset.`;
				break;
			case "stylish leather":
				r += `Stylish leather collar.`;
				break;
			case "satin choker":
				r += `Satin choker.`;
				break;
			case "silk ribbon":
				r += `Silken ribbon.`;
				break;
			case "heavy gold":
				r += `Gold collar.`;
				break;
			case "bowtie":
				r += `Bowtie collar.`;
				break;
			case "pretty jewelry":
				r += `Pretty collar.`;
				break;
			case "nice retirement counter":
				r += `Nice counter collar.`;
				break;
			case "bell collar":
				r += `Bell collar.`;
				break;
			case "leather with cowbell":
				r += `Cowbell collar.`;
				break;
			case "ancient Egyptian":
				r += `Wesekh.`;
				break;
			case "ball gag":
				r += `Ball gag.`;
				break;
			case "bit gag":
				r += `Bit gag.`;
				break;
			case "porcelain mask":
				r += `Porcelain mask.`;
				break;
		}
		r += " ";
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function long_belly(slave) {
		switch (slave.bellyAccessory) {
			case "shapewear":
				r += `Shapewear.`;
				break;
			case "a small empathy belly":
				r += `Small fake belly.`;
				break;
			case "a medium empathy belly":
				r += `Medium fake belly.`;
				break;
			case "a large empathy belly":
				r += `Large fake belly.`;
				break;
			case "a huge empathy belly":
				r += `Huge fake belly.`;
				break;
			case "a corset":
				r += `Corset.`;
				break;
			case "an extreme corset":
				r += `Extreme corsetage.`;
				break;
		}
		r += " ";
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function long_legs(slave) {
		if (slave.legAccessory === "short stockings") {
			r += `Short stockings.`;
		} else if (slave.legAccessory === "long stockings") {
			r += `Long stockings.`;
		}
		r += " ";
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function long_shoes(slave) {
		if (slave.shoes === "heels") {
			r += `Heels.`;
		} else if (slave.shoes === "pumps") {
			r += `Pumps.`;
		} else if (slave.shoes === "extreme heels") {
			r += `Extreme heels.`;
		} else if (slave.shoes === "boots") {
			r += `Boots.`;
		} else if (slave.heels === 1) {
			r += `<span class="yellow">Crawling.</span>`;
		} else if (slave.shoes === "flats") {
			r += `Flats.`;
		}
		r += " ";
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function long_chastity(slave) {
		if (slave.chastityAnus === 1 && slave.chastityPenis === 1 && slave.chastityVagina === 1) {
			r += `Full chastity.`;
		} else if (slave.chastityPenis === 1 && slave.chastityVagina === 1) {
			r += `Genital chastity.`;
		} else if ((slave.chastityAnus === 1 && slave.chastityVagina === 1) || (slave.chastityAnus === 1 && slave.chastityPenis === 1)) {
			r += `Combined chastity.`;
		} else if (slave.chastityVagina === 1) {
			r += `Vaginal chastity.`;
		} else if (slave.chastityPenis === 1) {
			r += `Chastity cage.`;
		} else if (slave.chastityAnus === 1) {
			r += `Anal chastity.`;
		}
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function long_vaginal_acc(slave) {
		if (slave.vaginalAttachment !== "vibrator") {
			switch (slave.vaginalAccessory) {
				case "bullet vibrator":
					r += `Attached bullet vibrator.`;
					break;
				case "smart bullet vibrator":
					r += `Attached smart bullet vibrator.`;
					break;
				case "dildo":
					r += `Vaginal dildo.`;
					break;
				case "large dildo":
					r += `Large vaginal dildo.`;
					break;
				case "huge dildo":
					r += `Huge vaginal dildo.`;
					break;
				case "long dildo":
					r += `Long vaginal dildo.`;
					break;
				case "long, large dildo":
					r += `Long and large vaginal dildo.`;
					break;
				case "long, huge dildo":
					r += `Long and wide vaginal dildo.`;
					break;
			}
		}
		r += " ";
		if (slave.vaginalAttachment !== "none") {
			switch (slave.vaginalAttachment) {
				case "vibrator":
					r += `Vibrating dildo.`;
					break;
			}
			r += " ";
		}
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function long_dick_acc(slave) {
		switch (slave.dickAccessory) {
			case "sock":
				r += `Cock sock.`;
				break;
			case "bullet vibrator":
				r += `Frenulum bullet vibrator.`;
				break;
			case "smart bullet vibrator":
				r += `Smart frenulum bullet vibrator.`;
				break;
		}
		r += " ";
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function long_buttplug(slave) {
		switch (slave.buttplug) {
			case "plug":
				r += `Buttplug.`;
				break;
			case "large plug":
				r += `Large buttplug.`;
				break;
			case "huge plug":
				r += `Huge buttplug.`;
				break;
			case "long plug":
				r += `Long buttplug.`;
				break;
			case "long, large plug":
				r += `Large, long buttplug.`;
				break;
			case "long, huge plug":
				r += `Enormous buttplug.`;
				break;
		}
		r += " ";
		switch (slave.buttplugAttachment) {
			case "tail":
				r += `Attached tail. `;
				break;
			case "cat tail":
				r += `Attached cat tail. `;
				break;
			case "fox tail":
				r += `Attached fox tail. `;
				break;
		}
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function rules_assistant(slave) {
		if (slave.useRulesAssistant === 0) {
			r += `<span class="lightgreen">RA-Exempt</span> `;
		} else if (V.abbreviateRulesets === 2 && (slave.currentRules !== undefined) && (slave.currentRules.length > 0)) {
			r += `Rules: ${V.defaultRules.filter(x => ruleApplied(slave, x)).map(x => x.name).join(", ")}`;
		}
	}

	/**
	 * @param {App.Entity.SlaveState} slave
	 */
	function origins(slave) {
		r += `<br>`;
		if (V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1) {
			r += `    `;
		}
		r += `<span class="gray">${slave.origin}</span>`;
	}

	return SlaveSummaryUncached;
})();

repo_name: Fekenol/fc