import { g as e, h as t, m as n, p as r } from "./src-CFVe5TPD.js";
import { B as i, C as a, V as o, W as s, _ as c, a as l, b as u, tt as d, v as f } from "./chunk-ICPOFSXX-B9JXAgJU.js";
import { t as p } from "./channel-Br5ChI8U.js";
import { h as m, s as h } from "./chunk-5PVQY5BW-BCjrVrWB.js";
import "./chunk-U2HBQHQK-75Isf1R4.js";
import "./chunk-BSJP7CBP-DE8WR0MI.js";
import "./chunk-ZZ45TVLE-DUagTZ9d.js";
import { t as g } from "./chunk-55IACEB6-DBivnNb2.js";
import { t as _ } from "./chunk-EDXVE4YY-DE9KzYM-.js";
import "./chunk-X2U36JSP-DSzducJI.js";
import "./chunk-5FUZZQ4R-tiEjqlP4.js";
import "./chunk-ENJZ2VHE-DlxIC-A3.js";
import { r as v, t as y } from "./chunk-336JU56O-CFKWNcxR.js";
//#region ../../node_modules/.pnpm/mermaid@11.14.0/node_modules/mermaid/dist/chunks/mermaid.core/erDiagram-SMLLAGMA.mjs
var b = (function() {
	var e = /* @__PURE__ */ t(function(e, t, n, r) {
		for (n ||= {}, r = e.length; r--; n[e[r]] = t);
		return n;
	}, "o"), n = [
		6,
		8,
		10,
		22,
		24,
		26,
		28,
		33,
		34,
		35,
		36,
		37,
		40,
		43,
		44,
		48,
		50,
		51,
		52
	], r = [1, 10], i = [1, 11], a = [1, 12], o = [1, 13], s = [1, 23], c = [1, 24], l = [1, 25], u = [1, 26], d = [1, 27], f = [1, 19], p = [1, 28], m = [1, 29], h = [1, 20], g = [1, 18], _ = [1, 21], v = [1, 22], y = [1, 36], b = [1, 37], x = [1, 38], S = [1, 39], C = [1, 40], w = [
		6,
		8,
		10,
		13,
		15,
		17,
		20,
		21,
		22,
		24,
		26,
		28,
		33,
		34,
		35,
		36,
		37,
		40,
		43,
		44,
		48,
		50,
		51,
		52,
		65,
		66,
		67,
		68,
		69
	], T = [1, 45], E = [1, 46], D = [1, 55], O = [
		40,
		48,
		50,
		51,
		52,
		70,
		71
	], k = [1, 66], A = [1, 64], j = [1, 61], M = [1, 65], N = [1, 67], P = [
		6,
		8,
		10,
		13,
		17,
		22,
		24,
		26,
		28,
		33,
		34,
		35,
		36,
		37,
		40,
		41,
		42,
		43,
		44,
		48,
		49,
		50,
		51,
		52,
		65,
		66,
		67,
		68,
		69
	], F = [
		65,
		66,
		67,
		68,
		69
	], I = [1, 84], L = [1, 83], R = [1, 81], z = [1, 82], B = [
		6,
		10,
		42,
		47
	], V = [
		6,
		10,
		13,
		41,
		42,
		47,
		48,
		49
	], H = [1, 92], U = [1, 91], W = [1, 90], G = [19, 58], K = [1, 101], q = [1, 100], J = [
		19,
		58,
		60,
		62
	], Y = {
		trace: /* @__PURE__ */ t(function() {}, "trace"),
		yy: {},
		symbols_: {
			error: 2,
			start: 3,
			ER_DIAGRAM: 4,
			document: 5,
			EOF: 6,
			line: 7,
			SPACE: 8,
			statement: 9,
			NEWLINE: 10,
			entityName: 11,
			relSpec: 12,
			COLON: 13,
			role: 14,
			STYLE_SEPARATOR: 15,
			idList: 16,
			BLOCK_START: 17,
			attributes: 18,
			BLOCK_STOP: 19,
			SQS: 20,
			SQE: 21,
			title: 22,
			title_value: 23,
			acc_title: 24,
			acc_title_value: 25,
			acc_descr: 26,
			acc_descr_value: 27,
			acc_descr_multiline_value: 28,
			direction: 29,
			classDefStatement: 30,
			classStatement: 31,
			styleStatement: 32,
			direction_tb: 33,
			direction_bt: 34,
			direction_rl: 35,
			direction_lr: 36,
			CLASSDEF: 37,
			stylesOpt: 38,
			separator: 39,
			UNICODE_TEXT: 40,
			STYLE_TEXT: 41,
			COMMA: 42,
			CLASS: 43,
			STYLE: 44,
			style: 45,
			styleComponent: 46,
			SEMI: 47,
			NUM: 48,
			BRKT: 49,
			ENTITY_NAME: 50,
			DECIMAL_NUM: 51,
			ENTITY_ONE: 52,
			attribute: 53,
			attributeType: 54,
			attributeName: 55,
			attributeKeyTypeList: 56,
			attributeComment: 57,
			ATTRIBUTE_WORD: 58,
			attributeKeyType: 59,
			",": 60,
			ATTRIBUTE_KEY: 61,
			COMMENT: 62,
			cardinality: 63,
			relType: 64,
			ZERO_OR_ONE: 65,
			ZERO_OR_MORE: 66,
			ONE_OR_MORE: 67,
			ONLY_ONE: 68,
			MD_PARENT: 69,
			NON_IDENTIFYING: 70,
			IDENTIFYING: 71,
			WORD: 72,
			$accept: 0,
			$end: 1
		},
		terminals_: {
			2: "error",
			4: "ER_DIAGRAM",
			6: "EOF",
			8: "SPACE",
			10: "NEWLINE",
			13: "COLON",
			15: "STYLE_SEPARATOR",
			17: "BLOCK_START",
			19: "BLOCK_STOP",
			20: "SQS",
			21: "SQE",
			22: "title",
			23: "title_value",
			24: "acc_title",
			25: "acc_title_value",
			26: "acc_descr",
			27: "acc_descr_value",
			28: "acc_descr_multiline_value",
			33: "direction_tb",
			34: "direction_bt",
			35: "direction_rl",
			36: "direction_lr",
			37: "CLASSDEF",
			40: "UNICODE_TEXT",
			41: "STYLE_TEXT",
			42: "COMMA",
			43: "CLASS",
			44: "STYLE",
			47: "SEMI",
			48: "NUM",
			49: "BRKT",
			50: "ENTITY_NAME",
			51: "DECIMAL_NUM",
			52: "ENTITY_ONE",
			58: "ATTRIBUTE_WORD",
			60: ",",
			61: "ATTRIBUTE_KEY",
			62: "COMMENT",
			65: "ZERO_OR_ONE",
			66: "ZERO_OR_MORE",
			67: "ONE_OR_MORE",
			68: "ONLY_ONE",
			69: "MD_PARENT",
			70: "NON_IDENTIFYING",
			71: "IDENTIFYING",
			72: "WORD"
		},
		productions_: [
			0,
			[3, 3],
			[5, 0],
			[5, 2],
			[7, 2],
			[7, 1],
			[7, 1],
			[7, 1],
			[9, 5],
			[9, 9],
			[9, 7],
			[9, 7],
			[9, 4],
			[9, 6],
			[9, 3],
			[9, 5],
			[9, 1],
			[9, 3],
			[9, 7],
			[9, 9],
			[9, 6],
			[9, 8],
			[9, 4],
			[9, 6],
			[9, 2],
			[9, 2],
			[9, 2],
			[9, 1],
			[9, 1],
			[9, 1],
			[9, 1],
			[9, 1],
			[29, 1],
			[29, 1],
			[29, 1],
			[29, 1],
			[30, 4],
			[16, 1],
			[16, 1],
			[16, 3],
			[16, 3],
			[31, 3],
			[32, 4],
			[38, 1],
			[38, 3],
			[45, 1],
			[45, 2],
			[39, 1],
			[39, 1],
			[39, 1],
			[46, 1],
			[46, 1],
			[46, 1],
			[46, 1],
			[11, 1],
			[11, 1],
			[11, 1],
			[11, 1],
			[11, 1],
			[18, 1],
			[18, 2],
			[53, 2],
			[53, 3],
			[53, 3],
			[53, 4],
			[54, 1],
			[55, 1],
			[56, 1],
			[56, 3],
			[59, 1],
			[57, 1],
			[12, 3],
			[63, 1],
			[63, 1],
			[63, 1],
			[63, 1],
			[63, 1],
			[64, 1],
			[64, 1],
			[14, 1],
			[14, 1],
			[14, 1]
		],
		performAction: /* @__PURE__ */ t(function(e, t, n, r, i, a, o) {
			var s = a.length - 1;
			switch (i) {
				case 1: break;
				case 2:
					this.$ = [];
					break;
				case 3:
					a[s - 1].push(a[s]), this.$ = a[s - 1];
					break;
				case 4:
				case 5:
					this.$ = a[s];
					break;
				case 6:
				case 7:
					this.$ = [];
					break;
				case 8:
					r.addEntity(a[s - 4]), r.addEntity(a[s - 2]), r.addRelationship(a[s - 4], a[s], a[s - 2], a[s - 3]);
					break;
				case 9:
					r.addEntity(a[s - 8]), r.addEntity(a[s - 4]), r.addRelationship(a[s - 8], a[s], a[s - 4], a[s - 5]), r.setClass([a[s - 8]], a[s - 6]), r.setClass([a[s - 4]], a[s - 2]);
					break;
				case 10:
					r.addEntity(a[s - 6]), r.addEntity(a[s - 2]), r.addRelationship(a[s - 6], a[s], a[s - 2], a[s - 3]), r.setClass([a[s - 6]], a[s - 4]);
					break;
				case 11:
					r.addEntity(a[s - 6]), r.addEntity(a[s - 4]), r.addRelationship(a[s - 6], a[s], a[s - 4], a[s - 5]), r.setClass([a[s - 4]], a[s - 2]);
					break;
				case 12:
					r.addEntity(a[s - 3]), r.addAttributes(a[s - 3], a[s - 1]);
					break;
				case 13:
					r.addEntity(a[s - 5]), r.addAttributes(a[s - 5], a[s - 1]), r.setClass([a[s - 5]], a[s - 3]);
					break;
				case 14:
					r.addEntity(a[s - 2]);
					break;
				case 15:
					r.addEntity(a[s - 4]), r.setClass([a[s - 4]], a[s - 2]);
					break;
				case 16:
					r.addEntity(a[s]);
					break;
				case 17:
					r.addEntity(a[s - 2]), r.setClass([a[s - 2]], a[s]);
					break;
				case 18:
					r.addEntity(a[s - 6], a[s - 4]), r.addAttributes(a[s - 6], a[s - 1]);
					break;
				case 19:
					r.addEntity(a[s - 8], a[s - 6]), r.addAttributes(a[s - 8], a[s - 1]), r.setClass([a[s - 8]], a[s - 3]);
					break;
				case 20:
					r.addEntity(a[s - 5], a[s - 3]);
					break;
				case 21:
					r.addEntity(a[s - 7], a[s - 5]), r.setClass([a[s - 7]], a[s - 2]);
					break;
				case 22:
					r.addEntity(a[s - 3], a[s - 1]);
					break;
				case 23:
					r.addEntity(a[s - 5], a[s - 3]), r.setClass([a[s - 5]], a[s]);
					break;
				case 24:
				case 25:
					this.$ = a[s].trim(), r.setAccTitle(this.$);
					break;
				case 26:
				case 27:
					this.$ = a[s].trim(), r.setAccDescription(this.$);
					break;
				case 32:
					r.setDirection("TB");
					break;
				case 33:
					r.setDirection("BT");
					break;
				case 34:
					r.setDirection("RL");
					break;
				case 35:
					r.setDirection("LR");
					break;
				case 36:
					this.$ = a[s - 3], r.addClass(a[s - 2], a[s - 1]);
					break;
				case 37:
				case 38:
				case 59:
				case 67:
					this.$ = [a[s]];
					break;
				case 39:
				case 40:
					this.$ = a[s - 2].concat([a[s]]);
					break;
				case 41:
					this.$ = a[s - 2], r.setClass(a[s - 1], a[s]);
					break;
				case 42:
					this.$ = a[s - 3], r.addCssStyles(a[s - 2], a[s - 1]);
					break;
				case 43:
					this.$ = [a[s]];
					break;
				case 44:
					a[s - 2].push(a[s]), this.$ = a[s - 2];
					break;
				case 46:
					this.$ = a[s - 1] + a[s];
					break;
				case 54:
				case 79:
				case 80:
					this.$ = a[s].replace(/"/g, "");
					break;
				case 55:
				case 56:
				case 57:
				case 58:
				case 81:
					this.$ = a[s];
					break;
				case 60:
					a[s].push(a[s - 1]), this.$ = a[s];
					break;
				case 61:
					this.$ = {
						type: a[s - 1],
						name: a[s]
					};
					break;
				case 62:
					this.$ = {
						type: a[s - 2],
						name: a[s - 1],
						keys: a[s]
					};
					break;
				case 63:
					this.$ = {
						type: a[s - 2],
						name: a[s - 1],
						comment: a[s]
					};
					break;
				case 64:
					this.$ = {
						type: a[s - 3],
						name: a[s - 2],
						keys: a[s - 1],
						comment: a[s]
					};
					break;
				case 65:
				case 66:
				case 69:
					this.$ = a[s];
					break;
				case 68:
					a[s - 2].push(a[s]), this.$ = a[s - 2];
					break;
				case 70:
					this.$ = a[s].replace(/"/g, "");
					break;
				case 71:
					this.$ = {
						cardA: a[s],
						relType: a[s - 1],
						cardB: a[s - 2]
					};
					break;
				case 72:
					this.$ = r.Cardinality.ZERO_OR_ONE;
					break;
				case 73:
					this.$ = r.Cardinality.ZERO_OR_MORE;
					break;
				case 74:
					this.$ = r.Cardinality.ONE_OR_MORE;
					break;
				case 75:
					this.$ = r.Cardinality.ONLY_ONE;
					break;
				case 76:
					this.$ = r.Cardinality.MD_PARENT;
					break;
				case 77:
					this.$ = r.Identification.NON_IDENTIFYING;
					break;
				case 78:
					this.$ = r.Identification.IDENTIFYING;
					break;
			}
		}, "anonymous"),
		table: [
			{
				3: 1,
				4: [1, 2]
			},
			{ 1: [3] },
			e(n, [2, 2], { 5: 3 }),
			{
				6: [1, 4],
				7: 5,
				8: [1, 6],
				9: 7,
				10: [1, 8],
				11: 9,
				22: r,
				24: i,
				26: a,
				28: o,
				29: 14,
				30: 15,
				31: 16,
				32: 17,
				33: s,
				34: c,
				35: l,
				36: u,
				37: d,
				40: f,
				43: p,
				44: m,
				48: h,
				50: g,
				51: _,
				52: v
			},
			e(n, [2, 7], { 1: [2, 1] }),
			e(n, [2, 3]),
			{
				9: 30,
				11: 9,
				22: r,
				24: i,
				26: a,
				28: o,
				29: 14,
				30: 15,
				31: 16,
				32: 17,
				33: s,
				34: c,
				35: l,
				36: u,
				37: d,
				40: f,
				43: p,
				44: m,
				48: h,
				50: g,
				51: _,
				52: v
			},
			e(n, [2, 5]),
			e(n, [2, 6]),
			e(n, [2, 16], {
				12: 31,
				63: 35,
				15: [1, 32],
				17: [1, 33],
				20: [1, 34],
				65: y,
				66: b,
				67: x,
				68: S,
				69: C
			}),
			{ 23: [1, 41] },
			{ 25: [1, 42] },
			{ 27: [1, 43] },
			e(n, [2, 27]),
			e(n, [2, 28]),
			e(n, [2, 29]),
			e(n, [2, 30]),
			e(n, [2, 31]),
			e(w, [2, 54]),
			e(w, [2, 55]),
			e(w, [2, 56]),
			e(w, [2, 57]),
			e(w, [2, 58]),
			e(n, [2, 32]),
			e(n, [2, 33]),
			e(n, [2, 34]),
			e(n, [2, 35]),
			{
				16: 44,
				40: T,
				41: E
			},
			{
				16: 47,
				40: T,
				41: E
			},
			{
				16: 48,
				40: T,
				41: E
			},
			e(n, [2, 4]),
			{
				11: 49,
				40: f,
				48: h,
				50: g,
				51: _,
				52: v
			},
			{
				16: 50,
				40: T,
				41: E
			},
			{
				18: 51,
				19: [1, 52],
				53: 53,
				54: 54,
				58: D
			},
			{
				11: 56,
				40: f,
				48: h,
				50: g,
				51: _,
				52: v
			},
			{
				64: 57,
				70: [1, 58],
				71: [1, 59]
			},
			e(O, [2, 72]),
			e(O, [2, 73]),
			e(O, [2, 74]),
			e(O, [2, 75]),
			e(O, [2, 76]),
			e(n, [2, 24]),
			e(n, [2, 25]),
			e(n, [2, 26]),
			{
				13: k,
				38: 60,
				41: A,
				42: j,
				45: 62,
				46: 63,
				48: M,
				49: N
			},
			e(P, [2, 37]),
			e(P, [2, 38]),
			{
				16: 68,
				40: T,
				41: E,
				42: j
			},
			{
				13: k,
				38: 69,
				41: A,
				42: j,
				45: 62,
				46: 63,
				48: M,
				49: N
			},
			{
				13: [1, 70],
				15: [1, 71]
			},
			e(n, [2, 17], {
				63: 35,
				12: 72,
				17: [1, 73],
				42: j,
				65: y,
				66: b,
				67: x,
				68: S,
				69: C
			}),
			{ 19: [1, 74] },
			e(n, [2, 14]),
			{
				18: 75,
				19: [2, 59],
				53: 53,
				54: 54,
				58: D
			},
			{
				55: 76,
				58: [1, 77]
			},
			{ 58: [2, 65] },
			{ 21: [1, 78] },
			{
				63: 79,
				65: y,
				66: b,
				67: x,
				68: S,
				69: C
			},
			e(F, [2, 77]),
			e(F, [2, 78]),
			{
				6: I,
				10: L,
				39: 80,
				42: R,
				47: z
			},
			{
				40: [1, 85],
				41: [1, 86]
			},
			e(B, [2, 43], {
				46: 87,
				13: k,
				41: A,
				48: M,
				49: N
			}),
			e(V, [2, 45]),
			e(V, [2, 50]),
			e(V, [2, 51]),
			e(V, [2, 52]),
			e(V, [2, 53]),
			e(n, [2, 41], { 42: j }),
			{
				6: I,
				10: L,
				39: 88,
				42: R,
				47: z
			},
			{
				14: 89,
				40: H,
				50: U,
				72: W
			},
			{
				16: 93,
				40: T,
				41: E
			},
			{
				11: 94,
				40: f,
				48: h,
				50: g,
				51: _,
				52: v
			},
			{
				18: 95,
				19: [1, 96],
				53: 53,
				54: 54,
				58: D
			},
			e(n, [2, 12]),
			{ 19: [2, 60] },
			e(G, [2, 61], {
				56: 97,
				57: 98,
				59: 99,
				61: K,
				62: q
			}),
			e([
				19,
				58,
				61,
				62
			], [2, 66]),
			e(n, [2, 22], {
				15: [1, 103],
				17: [1, 102]
			}),
			e([
				40,
				48,
				50,
				51,
				52
			], [2, 71]),
			e(n, [2, 36]),
			{
				13: k,
				41: A,
				45: 104,
				46: 63,
				48: M,
				49: N
			},
			e(n, [2, 47]),
			e(n, [2, 48]),
			e(n, [2, 49]),
			e(P, [2, 39]),
			e(P, [2, 40]),
			e(V, [2, 46]),
			e(n, [2, 42]),
			e(n, [2, 8]),
			e(n, [2, 79]),
			e(n, [2, 80]),
			e(n, [2, 81]),
			{
				13: [1, 105],
				42: j
			},
			{
				13: [1, 107],
				15: [1, 106]
			},
			{ 19: [1, 108] },
			e(n, [2, 15]),
			e(G, [2, 62], {
				57: 109,
				60: [1, 110],
				62: q
			}),
			e(G, [2, 63]),
			e(J, [2, 67]),
			e(G, [2, 70]),
			e(J, [2, 69]),
			{
				18: 111,
				19: [1, 112],
				53: 53,
				54: 54,
				58: D
			},
			{
				16: 113,
				40: T,
				41: E
			},
			e(B, [2, 44], {
				46: 87,
				13: k,
				41: A,
				48: M,
				49: N
			}),
			{
				14: 114,
				40: H,
				50: U,
				72: W
			},
			{
				16: 115,
				40: T,
				41: E
			},
			{
				14: 116,
				40: H,
				50: U,
				72: W
			},
			e(n, [2, 13]),
			e(G, [2, 64]),
			{
				59: 117,
				61: K
			},
			{ 19: [1, 118] },
			e(n, [2, 20]),
			e(n, [2, 23], {
				17: [1, 119],
				42: j
			}),
			e(n, [2, 11]),
			{
				13: [1, 120],
				42: j
			},
			e(n, [2, 10]),
			e(J, [2, 68]),
			e(n, [2, 18]),
			{
				18: 121,
				19: [1, 122],
				53: 53,
				54: 54,
				58: D
			},
			{
				14: 123,
				40: H,
				50: U,
				72: W
			},
			{ 19: [1, 124] },
			e(n, [2, 21]),
			e(n, [2, 9]),
			e(n, [2, 19])
		],
		defaultActions: {
			55: [2, 65],
			75: [2, 60]
		},
		parseError: /* @__PURE__ */ t(function(e, t) {
			if (t.recoverable) this.trace(e);
			else {
				var n = Error(e);
				throw n.hash = t, n;
			}
		}, "parseError"),
		parse: /* @__PURE__ */ t(function(e) {
			var n = this, r = [0], i = [], a = [null], o = [], s = this.table, c = "", l = 0, u = 0, d = 0, f = 2, p = 1, m = o.slice.call(arguments, 1), h = Object.create(this.lexer), g = { yy: {} };
			for (var _ in this.yy) Object.prototype.hasOwnProperty.call(this.yy, _) && (g.yy[_] = this.yy[_]);
			h.setInput(e, g.yy), g.yy.lexer = h, g.yy.parser = this, h.yylloc === void 0 && (h.yylloc = {});
			var v = h.yylloc;
			o.push(v);
			var y = h.options && h.options.ranges;
			typeof g.yy.parseError == "function" ? this.parseError = g.yy.parseError : this.parseError = Object.getPrototypeOf(this).parseError;
			function b(e) {
				r.length -= 2 * e, a.length -= e, o.length -= e;
			}
			t(b, "popStack");
			function x() {
				var e = i.pop() || h.lex() || p;
				return typeof e != "number" && (e instanceof Array && (i = e, e = i.pop()), e = n.symbols_[e] || e), e;
			}
			t(x, "lex");
			for (var S, C, w, T, E, D = {}, O, k, A, j;;) {
				if (w = r[r.length - 1], this.defaultActions[w] ? T = this.defaultActions[w] : (S ??= x(), T = s[w] && s[w][S]), T === void 0 || !T.length || !T[0]) {
					var M = "";
					for (O in j = [], s[w]) this.terminals_[O] && O > f && j.push("'" + this.terminals_[O] + "'");
					M = h.showPosition ? "Parse error on line " + (l + 1) + ":\n" + h.showPosition() + "\nExpecting " + j.join(", ") + ", got '" + (this.terminals_[S] || S) + "'" : "Parse error on line " + (l + 1) + ": Unexpected " + (S == p ? "end of input" : "'" + (this.terminals_[S] || S) + "'"), this.parseError(M, {
						text: h.match,
						token: this.terminals_[S] || S,
						line: h.yylineno,
						loc: v,
						expected: j
					});
				}
				if (T[0] instanceof Array && T.length > 1) throw Error("Parse Error: multiple actions possible at state: " + w + ", token: " + S);
				switch (T[0]) {
					case 1:
						r.push(S), a.push(h.yytext), o.push(h.yylloc), r.push(T[1]), S = null, C ? (S = C, C = null) : (u = h.yyleng, c = h.yytext, l = h.yylineno, v = h.yylloc, d > 0 && d--);
						break;
					case 2:
						if (k = this.productions_[T[1]][1], D.$ = a[a.length - k], D._$ = {
							first_line: o[o.length - (k || 1)].first_line,
							last_line: o[o.length - 1].last_line,
							first_column: o[o.length - (k || 1)].first_column,
							last_column: o[o.length - 1].last_column
						}, y && (D._$.range = [o[o.length - (k || 1)].range[0], o[o.length - 1].range[1]]), E = this.performAction.apply(D, [
							c,
							u,
							l,
							g.yy,
							T[1],
							a,
							o
						].concat(m)), E !== void 0) return E;
						k && (r = r.slice(0, -1 * k * 2), a = a.slice(0, -1 * k), o = o.slice(0, -1 * k)), r.push(this.productions_[T[1]][0]), a.push(D.$), o.push(D._$), A = s[r[r.length - 2]][r[r.length - 1]], r.push(A);
						break;
					case 3: return !0;
				}
			}
			return !0;
		}, "parse")
	};
	Y.lexer = /* @__PURE__ */ (function() {
		return {
			EOF: 1,
			parseError: /* @__PURE__ */ t(function(e, t) {
				if (this.yy.parser) this.yy.parser.parseError(e, t);
				else throw Error(e);
			}, "parseError"),
			setInput: /* @__PURE__ */ t(function(e, t) {
				return this.yy = t || this.yy || {}, this._input = e, this._more = this._backtrack = this.done = !1, this.yylineno = this.yyleng = 0, this.yytext = this.matched = this.match = "", this.conditionStack = ["INITIAL"], this.yylloc = {
					first_line: 1,
					first_column: 0,
					last_line: 1,
					last_column: 0
				}, this.options.ranges && (this.yylloc.range = [0, 0]), this.offset = 0, this;
			}, "setInput"),
			input: /* @__PURE__ */ t(function() {
				var e = this._input[0];
				return this.yytext += e, this.yyleng++, this.offset++, this.match += e, this.matched += e, e.match(/(?:\r\n?|\n).*/g) ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++, this.options.ranges && this.yylloc.range[1]++, this._input = this._input.slice(1), e;
			}, "input"),
			unput: /* @__PURE__ */ t(function(e) {
				var t = e.length, n = e.split(/(?:\r\n?|\n)/g);
				this._input = e + this._input, this.yytext = this.yytext.substr(0, this.yytext.length - t), this.offset -= t;
				var r = this.match.split(/(?:\r\n?|\n)/g);
				this.match = this.match.substr(0, this.match.length - 1), this.matched = this.matched.substr(0, this.matched.length - 1), n.length - 1 && (this.yylineno -= n.length - 1);
				var i = this.yylloc.range;
				return this.yylloc = {
					first_line: this.yylloc.first_line,
					last_line: this.yylineno + 1,
					first_column: this.yylloc.first_column,
					last_column: n ? (n.length === r.length ? this.yylloc.first_column : 0) + r[r.length - n.length].length - n[0].length : this.yylloc.first_column - t
				}, this.options.ranges && (this.yylloc.range = [i[0], i[0] + this.yyleng - t]), this.yyleng = this.yytext.length, this;
			}, "unput"),
			more: /* @__PURE__ */ t(function() {
				return this._more = !0, this;
			}, "more"),
			reject: /* @__PURE__ */ t(function() {
				if (this.options.backtrack_lexer) this._backtrack = !0;
				else return this.parseError("Lexical error on line " + (this.yylineno + 1) + ". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n" + this.showPosition(), {
					text: "",
					token: null,
					line: this.yylineno
				});
				return this;
			}, "reject"),
			less: /* @__PURE__ */ t(function(e) {
				this.unput(this.match.slice(e));
			}, "less"),
			pastInput: /* @__PURE__ */ t(function() {
				var e = this.matched.substr(0, this.matched.length - this.match.length);
				return (e.length > 20 ? "..." : "") + e.substr(-20).replace(/\n/g, "");
			}, "pastInput"),
			upcomingInput: /* @__PURE__ */ t(function() {
				var e = this.match;
				return e.length < 20 && (e += this._input.substr(0, 20 - e.length)), (e.substr(0, 20) + (e.length > 20 ? "..." : "")).replace(/\n/g, "");
			}, "upcomingInput"),
			showPosition: /* @__PURE__ */ t(function() {
				var e = this.pastInput(), t = Array(e.length + 1).join("-");
				return e + this.upcomingInput() + "\n" + t + "^";
			}, "showPosition"),
			test_match: /* @__PURE__ */ t(function(e, t) {
				var n, r, i;
				if (this.options.backtrack_lexer && (i = {
					yylineno: this.yylineno,
					yylloc: {
						first_line: this.yylloc.first_line,
						last_line: this.last_line,
						first_column: this.yylloc.first_column,
						last_column: this.yylloc.last_column
					},
					yytext: this.yytext,
					match: this.match,
					matches: this.matches,
					matched: this.matched,
					yyleng: this.yyleng,
					offset: this.offset,
					_more: this._more,
					_input: this._input,
					yy: this.yy,
					conditionStack: this.conditionStack.slice(0),
					done: this.done
				}, this.options.ranges && (i.yylloc.range = this.yylloc.range.slice(0))), r = e[0].match(/(?:\r\n?|\n).*/g), r && (this.yylineno += r.length), this.yylloc = {
					first_line: this.yylloc.last_line,
					last_line: this.yylineno + 1,
					first_column: this.yylloc.last_column,
					last_column: r ? r[r.length - 1].length - r[r.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + e[0].length
				}, this.yytext += e[0], this.match += e[0], this.matches = e, this.yyleng = this.yytext.length, this.options.ranges && (this.yylloc.range = [this.offset, this.offset += this.yyleng]), this._more = !1, this._backtrack = !1, this._input = this._input.slice(e[0].length), this.matched += e[0], n = this.performAction.call(this, this.yy, this, t, this.conditionStack[this.conditionStack.length - 1]), this.done && this._input && (this.done = !1), n) return n;
				if (this._backtrack) {
					for (var a in i) this[a] = i[a];
					return !1;
				}
				return !1;
			}, "test_match"),
			next: /* @__PURE__ */ t(function() {
				if (this.done) return this.EOF;
				this._input || (this.done = !0);
				var e, t, n, r;
				this._more || (this.yytext = "", this.match = "");
				for (var i = this._currentRules(), a = 0; a < i.length; a++) if (n = this._input.match(this.rules[i[a]]), n && (!t || n[0].length > t[0].length)) {
					if (t = n, r = a, this.options.backtrack_lexer) {
						if (e = this.test_match(n, i[a]), e !== !1) return e;
						if (this._backtrack) {
							t = !1;
							continue;
						} else return !1;
					} else if (!this.options.flex) break;
				}
				return t ? (e = this.test_match(t, i[r]), e === !1 ? !1 : e) : this._input === "" ? this.EOF : this.parseError("Lexical error on line " + (this.yylineno + 1) + ". Unrecognized text.\n" + this.showPosition(), {
					text: "",
					token: null,
					line: this.yylineno
				});
			}, "next"),
			lex: /* @__PURE__ */ t(function() {
				return this.next() || this.lex();
			}, "lex"),
			begin: /* @__PURE__ */ t(function(e) {
				this.conditionStack.push(e);
			}, "begin"),
			popState: /* @__PURE__ */ t(function() {
				return this.conditionStack.length - 1 > 0 ? this.conditionStack.pop() : this.conditionStack[0];
			}, "popState"),
			_currentRules: /* @__PURE__ */ t(function() {
				return this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1] ? this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules : this.conditions.INITIAL.rules;
			}, "_currentRules"),
			topState: /* @__PURE__ */ t(function(e) {
				return e = this.conditionStack.length - 1 - Math.abs(e || 0), e >= 0 ? this.conditionStack[e] : "INITIAL";
			}, "topState"),
			pushState: /* @__PURE__ */ t(function(e) {
				this.begin(e);
			}, "pushState"),
			stateStackSize: /* @__PURE__ */ t(function() {
				return this.conditionStack.length;
			}, "stateStackSize"),
			options: { "case-insensitive": !0 },
			performAction: /* @__PURE__ */ t(function(e, t, n, r) {
				switch (n) {
					case 0: return this.begin("acc_title"), 24;
					case 1: return this.popState(), "acc_title_value";
					case 2: return this.begin("acc_descr"), 26;
					case 3: return this.popState(), "acc_descr_value";
					case 4:
						this.begin("acc_descr_multiline");
						break;
					case 5:
						this.popState();
						break;
					case 6: return "acc_descr_multiline_value";
					case 7: return 33;
					case 8: return 34;
					case 9: return 35;
					case 10: return 36;
					case 11: return 10;
					case 12: break;
					case 13: return 8;
					case 14: return 50;
					case 15: return 72;
					case 16: return 4;
					case 17: return this.begin("block"), 17;
					case 18: return 49;
					case 19: return 49;
					case 20: return 42;
					case 21: return 15;
					case 22: return 13;
					case 23: break;
					case 24: return 61;
					case 25: return 58;
					case 26: return 58;
					case 27: return 62;
					case 28: break;
					case 29: return this.popState(), 19;
					case 30: return t.yytext[0];
					case 31: return 20;
					case 32: return 21;
					case 33: return this.begin("style"), 44;
					case 34: return this.popState(), 10;
					case 35: break;
					case 36: return 13;
					case 37: return 42;
					case 38: return 49;
					case 39: return this.begin("style"), 37;
					case 40: return 43;
					case 41: return 65;
					case 42: return 67;
					case 43: return 67;
					case 44: return 67;
					case 45: return 65;
					case 46: return 65;
					case 47: return 66;
					case 48: return 66;
					case 49: return 66;
					case 50: return 66;
					case 51: return 66;
					case 52: return 67;
					case 53: return 66;
					case 54: return 67;
					case 55: return 68;
					case 56: return 68;
					case 57: return 51;
					case 58: return 68;
					case 59: return 68;
					case 60: return 68;
					case 61: return 52;
					case 62: return 48;
					case 63: return 68;
					case 64: return 65;
					case 65: return 66;
					case 66: return 67;
					case 67: return 69;
					case 68: return 70;
					case 69: return 71;
					case 70: return 71;
					case 71: return 70;
					case 72: return 70;
					case 73: return 70;
					case 74: return 41;
					case 75: return 47;
					case 76: return 40;
					case 77: return t.yytext[0];
					case 78: return 6;
				}
			}, "anonymous"),
			rules: [
				/^(?:accTitle\s*:\s*)/i,
				/^(?:(?!\n||)*[^\n]*)/i,
				/^(?:accDescr\s*:\s*)/i,
				/^(?:(?!\n||)*[^\n]*)/i,
				/^(?:accDescr\s*\{\s*)/i,
				/^(?:[\}])/i,
				/^(?:[^\}]*)/i,
				/^(?:.*direction\s+TB[^\n]*)/i,
				/^(?:.*direction\s+BT[^\n]*)/i,
				/^(?:.*direction\s+RL[^\n]*)/i,
				/^(?:.*direction\s+LR[^\n]*)/i,
				/^(?:[\n]+)/i,
				/^(?:\s+)/i,
				/^(?:[\s]+)/i,
				/^(?:"[^"%\r\n\v\b\\]+")/i,
				/^(?:"[^"]*")/i,
				/^(?:erDiagram\b)/i,
				/^(?:\{)/i,
				/^(?:#)/i,
				/^(?:#)/i,
				/^(?:,)/i,
				/^(?::::)/i,
				/^(?::)/i,
				/^(?:\s+)/i,
				/^(?:\b((?:PK)|(?:FK)|(?:UK))\b)/i,
				/^(?:([^\s]*)[~].*[~]([^\s]*))/i,
				/^(?:([\*A-Za-z_\u00C0-\uFFFF][A-Za-z0-9\-\_\[\]\(\)\u00C0-\uFFFF\*]*))/i,
				/^(?:"[^"]*")/i,
				/^(?:[\n]+)/i,
				/^(?:\})/i,
				/^(?:.)/i,
				/^(?:\[)/i,
				/^(?:\])/i,
				/^(?:style\b)/i,
				/^(?:[\n]+)/i,
				/^(?:\s+)/i,
				/^(?::)/i,
				/^(?:,)/i,
				/^(?:#)/i,
				/^(?:classDef\b)/i,
				/^(?:class\b)/i,
				/^(?:one or zero\b)/i,
				/^(?:one or more\b)/i,
				/^(?:one or many\b)/i,
				/^(?:1\+)/i,
				/^(?:\|o\b)/i,
				/^(?:zero or one\b)/i,
				/^(?:zero or more\b)/i,
				/^(?:zero or many\b)/i,
				/^(?:0\+)/i,
				/^(?:\}o\b)/i,
				/^(?:many\(0\))/i,
				/^(?:many\(1\))/i,
				/^(?:many\b)/i,
				/^(?:\}\|)/i,
				/^(?:one\b)/i,
				/^(?:only one\b)/i,
				/^(?:[0-9]+\.[0-9]+)/i,
				/^(?:1(?=\s+[A-Za-z_"']))/i,
				/^(?:1(?=\s+[0-9]))/i,
				/^(?:1(?=(--|\.\.|\.-|-\.)))/i,
				/^(?:1\b)/i,
				/^(?:[0-9]+)/i,
				/^(?:\|\|)/i,
				/^(?:o\|)/i,
				/^(?:o\{)/i,
				/^(?:\|\{)/i,
				/^(?:u(?=[\.\-\|]))/i,
				/^(?:\.\.)/i,
				/^(?:--)/i,
				/^(?:to\b)/i,
				/^(?:optionally to\b)/i,
				/^(?:\.-)/i,
				/^(?:-\.)/i,
				/^(?:([^\x00-\x7F]|\w|-|\*)+)/i,
				/^(?:;)/i,
				/^(?:([^\x00-\x7F]|\w|-|\*|\.)+)/i,
				/^(?:.)/i,
				/^(?:$)/i
			],
			conditions: {
				style: {
					rules: [
						34,
						35,
						36,
						37,
						38,
						74,
						75
					],
					inclusive: !1
				},
				acc_descr_multiline: {
					rules: [5, 6],
					inclusive: !1
				},
				acc_descr: {
					rules: [3],
					inclusive: !1
				},
				acc_title: {
					rules: [1],
					inclusive: !1
				},
				block: {
					rules: [
						23,
						24,
						25,
						26,
						27,
						28,
						29,
						30
					],
					inclusive: !1
				},
				INITIAL: {
					rules: [
						0,
						2,
						4,
						7,
						8,
						9,
						10,
						11,
						12,
						13,
						14,
						15,
						16,
						17,
						18,
						19,
						20,
						21,
						22,
						31,
						32,
						33,
						39,
						40,
						41,
						42,
						43,
						44,
						45,
						46,
						47,
						48,
						49,
						50,
						51,
						52,
						53,
						54,
						55,
						56,
						57,
						58,
						59,
						60,
						61,
						62,
						63,
						64,
						65,
						66,
						67,
						68,
						69,
						70,
						71,
						72,
						73,
						76,
						77,
						78
					],
					inclusive: !0
				}
			}
		};
	})();
	function X() {
		this.yy = {};
	}
	return t(X, "Parser"), X.prototype = Y, Y.Parser = X, new X();
})();
b.parser = b;
var x = b, S = class {
	constructor() {
		this.entities = /* @__PURE__ */ new Map(), this.relationships = [], this.classes = /* @__PURE__ */ new Map(), this.direction = "TB", this.Cardinality = {
			ZERO_OR_ONE: "ZERO_OR_ONE",
			ZERO_OR_MORE: "ZERO_OR_MORE",
			ONE_OR_MORE: "ONE_OR_MORE",
			ONLY_ONE: "ONLY_ONE",
			MD_PARENT: "MD_PARENT"
		}, this.Identification = {
			NON_IDENTIFYING: "NON_IDENTIFYING",
			IDENTIFYING: "IDENTIFYING"
		}, this.setAccTitle = o, this.getAccTitle = f, this.setAccDescription = i, this.getAccDescription = c, this.setDiagramTitle = s, this.getDiagramTitle = a, this.getConfig = /* @__PURE__ */ t(() => u().er, "getConfig"), this.clear(), this.addEntity = this.addEntity.bind(this), this.addAttributes = this.addAttributes.bind(this), this.addRelationship = this.addRelationship.bind(this), this.setDirection = this.setDirection.bind(this), this.addCssStyles = this.addCssStyles.bind(this), this.addClass = this.addClass.bind(this), this.setClass = this.setClass.bind(this), this.setAccTitle = this.setAccTitle.bind(this), this.setAccDescription = this.setAccDescription.bind(this);
	}
	static {
		t(this, "ErDB");
	}
	addEntity(t, n = "") {
		return this.entities.has(t) ? !this.entities.get(t)?.alias && n && (this.entities.get(t).alias = n, e.info(`Add alias '${n}' to entity '${t}'`)) : (this.entities.set(t, {
			id: `entity-${t}-${this.entities.size}`,
			label: t,
			attributes: [],
			alias: n,
			shape: "erBox",
			look: u().look ?? "default",
			cssClasses: "default",
			cssStyles: [],
			labelType: "markdown"
		}), e.info("Added new entity :", t)), this.entities.get(t);
	}
	getEntity(e) {
		return this.entities.get(e);
	}
	getEntities() {
		return this.entities;
	}
	getClasses() {
		return this.classes;
	}
	addAttributes(t, n) {
		let r = this.addEntity(t), i;
		for (i = n.length - 1; i >= 0; i--) n[i].keys || (n[i].keys = []), n[i].comment || (n[i].comment = ""), r.attributes.push(n[i]), e.debug("Added attribute ", n[i].name);
	}
	addRelationship(t, n, r, i) {
		let a = this.entities.get(t), o = this.entities.get(r);
		if (!a || !o) return;
		let s = {
			entityA: a.id,
			roleA: n,
			entityB: o.id,
			relSpec: i
		};
		this.relationships.push(s), e.debug("Added new relationship :", s);
	}
	getRelationships() {
		return this.relationships;
	}
	getDirection() {
		return this.direction;
	}
	setDirection(e) {
		this.direction = e;
	}
	getCompiledStyles(e) {
		let t = [];
		for (let n of e) {
			let e = this.classes.get(n);
			e?.styles && (t = [...t, ...e.styles ?? []].map((e) => e.trim())), e?.textStyles && (t = [...t, ...e.textStyles ?? []].map((e) => e.trim()));
		}
		return t;
	}
	addCssStyles(e, t) {
		for (let n of e) {
			let e = this.entities.get(n);
			if (!t || !e) return;
			for (let n of t) e.cssStyles.push(n);
		}
	}
	addClass(e, t) {
		e.forEach((e) => {
			let n = this.classes.get(e);
			n === void 0 && (n = {
				id: e,
				styles: [],
				textStyles: []
			}, this.classes.set(e, n)), t && t.forEach(function(e) {
				if (/color/.exec(e)) {
					let t = e.replace("fill", "bgFill");
					n.textStyles.push(t);
				}
				n.styles.push(e);
			});
		});
	}
	setClass(e, t) {
		for (let n of e) {
			let e = this.entities.get(n);
			if (e) for (let n of t) e.cssClasses += " " + n;
		}
	}
	clear() {
		this.entities = /* @__PURE__ */ new Map(), this.classes = /* @__PURE__ */ new Map(), this.relationships = [], l();
	}
	getData() {
		let e = [], t = [], n = u(), r = 0;
		for (let t of this.entities.keys()) {
			let n = this.entities.get(t);
			n && (n.cssCompiledStyles = this.getCompiledStyles(n.cssClasses.split(" ")), n.colorIndex = r++, e.push(n));
		}
		let i = 0;
		for (let e of this.relationships) {
			let r = {
				id: h(e.entityA, e.entityB, {
					prefix: "id",
					counter: i++
				}),
				type: "normal",
				curve: "basis",
				start: e.entityA,
				end: e.entityB,
				label: e.roleA,
				labelpos: "c",
				thickness: "normal",
				classes: "relationshipLine",
				arrowTypeStart: e.relSpec.cardB.toLowerCase(),
				arrowTypeEnd: e.relSpec.cardA.toLowerCase(),
				pattern: e.relSpec.relType == "IDENTIFYING" ? "solid" : "dashed",
				look: n.look,
				labelType: "markdown"
			};
			t.push(r);
		}
		return {
			nodes: e,
			edges: t,
			other: {},
			config: n,
			direction: "TB"
		};
	}
}, C = {};
n(C, { draw: () => w });
var w = /* @__PURE__ */ t(async function(t, n, i, a) {
	e.info("REF0:"), e.info("Drawing er diagram (unified)", n);
	let { securityLevel: o, er: s, layout: c } = u(), l = a.db.getData(), d = g(n, o);
	l.type = a.type, l.layoutAlgorithm = y(c), l.config.flowchart.nodeSpacing = s?.nodeSpacing || 140, l.config.flowchart.rankSpacing = s?.rankSpacing || 80, l.direction = a.db.getDirection();
	let { config: f } = l, { look: p } = f;
	p === "neo" ? l.markers = [
		"only_one_neo",
		"zero_or_one_neo",
		"one_or_more_neo",
		"zero_or_more_neo"
	] : l.markers = [
		"only_one",
		"zero_or_one",
		"one_or_more",
		"zero_or_more"
	], l.diagramId = n, await v(l, d), l.layoutAlgorithm === "elk" && d.select(".edges").lower();
	let h = d.selectAll("[id*=\"-background\"]");
	Array.from(h).length > 0 && h.each(function() {
		let e = r(this), t = e.attr("id").replace("-background", ""), n = d.select(`#${CSS.escape(t)}`);
		if (!n.empty()) {
			let t = n.attr("transform");
			e.attr("transform", t);
		}
	}), m.insertTitle(d, "erDiagramTitleText", s?.titleTopMargin ?? 25, a.db.getDiagramTitle()), _(d, 8, "erDiagram", s?.useMaxWidth ?? !0);
}, "draw"), T = /* @__PURE__ */ t((e, t) => {
	let n = p;
	return d(n(e, "r"), n(e, "g"), n(e, "b"), t);
}, "fade"), E = /* @__PURE__ */ new Set(["redux-color", "redux-dark-color"]), D = /* @__PURE__ */ t((e) => {
	let { theme: t, look: n, bkgColorArray: r, borderColorArray: i } = e;
	if (!E.has(t)) return "";
	let a = r?.length > 0, o = "";
	for (let t = 0; t < e.THEME_COLOR_LIMIT; t++) o += `

    [data-look="${n}"][data-color-id="color-${t}"].node path {
    stroke: ${i[t]};
    ${a ? `fill: ${r[t]};` : ""}
    }

    [data-look="${n}"][data-color-id="color-${t}"].node  rect {
    stroke: ${i[t]};
    ${a ? `fill: ${r[t]};` : ""}
     }
    `;
	return o;
}, "genColor"), O = {
	parser: x,
	get db() {
		return new S();
	},
	renderer: C,
	styles: /* @__PURE__ */ t((e) => {
		let { look: t, theme: n, erEdgeLabelBackground: r, strokeWidth: i } = e;
		return `
    ${D(e)}
  .entityBox {
    fill: ${e.mainBkg};
    stroke: ${e.nodeBorder};
  }

  .relationshipLabelBox {
    fill: ${e.tertiaryColor};
    opacity: 0.7;
    background-color: ${e.tertiaryColor};
      rect {
        opacity: 0.5;
      }
  }

  .labelBkg {
    background-color: ${E.has(n) && r ? r : T(e.tertiaryColor, .5)};
  }

  .edgeLabel {
    background-color: ${E.has(n) && r ? r : e.edgeLabelBackground};
  }
  .edgeLabel .label rect {
    fill: ${E.has(n) && r ? r : e.edgeLabelBackground};
  }
  .edgeLabel .label text {
    fill: ${e.textColor};
  }

  .edgeLabel .label {
    fill: ${e.nodeBorder};
    font-size: 14px;
  }

  .label {
    font-family: ${e.fontFamily};
    color: ${e.nodeTextColor || e.textColor};
  }

  .edge-pattern-dashed {
    stroke-dasharray: 8,8;
  }

  .node rect,
  .node circle,
  .node ellipse,
  .node polygon
  {
    fill: ${e.mainBkg};
    stroke: ${e.nodeBorder};
    stroke-width: ${t === "neo" ? i : "1px"};
  }

  .relationshipLine {
    stroke: ${e.lineColor};
    stroke-width: ${t === "neo" ? i : "1px"};
    fill: none;
  }

  .marker {
    fill: none !important;
    stroke: ${e.lineColor} !important;
    stroke-width: 1;
  }
  [data-look=neo].labelBkg {
    background-color: ${T(e.tertiaryColor, .5)};
  }
`;
	}, "getStyles")
};
//#endregion
export { O as diagram };
