mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-01 12:28:07 +02:00
replaced some tabs with spaces
This commit is contained in:
parent
097d2a025e
commit
d22554d2ce
1 changed files with 94 additions and 94 deletions
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: s_tritemp.h,v 1.24 2001/08/14 14:08:44 brianp Exp $ */
|
||||
/* $Id: s_tritemp.h,v 1.25 2001/09/13 21:54:29 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
|
@ -97,14 +97,14 @@
|
|||
{
|
||||
typedef struct {
|
||||
const SWvertex *v0, *v1; /* Y(v0) < Y(v1) */
|
||||
GLfloat dx; /* X(v1) - X(v0) */
|
||||
GLfloat dy; /* Y(v1) - Y(v0) */
|
||||
GLfixed fdxdy; /* dx/dy in fixed-point */
|
||||
GLfixed fsx; /* first sample point x coord */
|
||||
GLfixed fsy;
|
||||
GLfloat adjy; /* adjust from v[0]->fy to fsy, scaled */
|
||||
GLint lines; /* number of lines to be sampled on this edge */
|
||||
GLfixed fx0; /* fixed pt X of lower endpoint */
|
||||
GLfloat dx; /* X(v1) - X(v0) */
|
||||
GLfloat dy; /* Y(v1) - Y(v0) */
|
||||
GLfixed fdxdy; /* dx/dy in fixed-point */
|
||||
GLfixed fsx; /* first sample point x coord */
|
||||
GLfixed fsy;
|
||||
GLfloat adjy; /* adjust from v[0]->fy to fsy, scaled */
|
||||
GLint lines; /* number of lines to be sampled on this edge */
|
||||
GLfixed fx0; /* fixed pt X of lower endpoint */
|
||||
} EdgeT;
|
||||
|
||||
#ifdef INTERP_Z
|
||||
|
|
@ -135,41 +135,41 @@
|
|||
const GLfixed fy2 = FloatToFixed(v2->win[1] - 0.5F) & snapMask;
|
||||
|
||||
if (fy0 <= fy1) {
|
||||
if (fy1 <= fy2) {
|
||||
if (fy1 <= fy2) {
|
||||
/* y0 <= y1 <= y2 */
|
||||
vMin = v0; vMid = v1; vMax = v2;
|
||||
vMin = v0; vMid = v1; vMax = v2;
|
||||
vMin_fy = fy0; vMid_fy = fy1; vMax_fy = fy2;
|
||||
}
|
||||
else if (fy2 <= fy0) {
|
||||
}
|
||||
else if (fy2 <= fy0) {
|
||||
/* y2 <= y0 <= y1 */
|
||||
vMin = v2; vMid = v0; vMax = v1;
|
||||
vMin = v2; vMid = v0; vMax = v1;
|
||||
vMin_fy = fy2; vMid_fy = fy0; vMax_fy = fy1;
|
||||
}
|
||||
else {
|
||||
}
|
||||
else {
|
||||
/* y0 <= y2 <= y1 */
|
||||
vMin = v0; vMid = v2; vMax = v1;
|
||||
vMin = v0; vMid = v2; vMax = v1;
|
||||
vMin_fy = fy0; vMid_fy = fy2; vMax_fy = fy1;
|
||||
bf = -bf;
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (fy0 <= fy2) {
|
||||
if (fy0 <= fy2) {
|
||||
/* y1 <= y0 <= y2 */
|
||||
vMin = v1; vMid = v0; vMax = v2;
|
||||
vMin = v1; vMid = v0; vMax = v2;
|
||||
vMin_fy = fy1; vMid_fy = fy0; vMax_fy = fy2;
|
||||
bf = -bf;
|
||||
}
|
||||
else if (fy2 <= fy1) {
|
||||
}
|
||||
else if (fy2 <= fy1) {
|
||||
/* y2 <= y1 <= y0 */
|
||||
vMin = v2; vMid = v1; vMax = v0;
|
||||
vMin = v2; vMid = v1; vMax = v0;
|
||||
vMin_fy = fy2; vMid_fy = fy1; vMax_fy = fy0;
|
||||
bf = -bf;
|
||||
}
|
||||
else {
|
||||
}
|
||||
else {
|
||||
/* y1 <= y2 <= y0 */
|
||||
vMin = v1; vMid = v2; vMax = v0;
|
||||
vMin = v1; vMid = v2; vMax = v0;
|
||||
vMin_fy = fy1; vMid_fy = fy2; vMax_fy = fy0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* fixed point X coords */
|
||||
|
|
@ -197,7 +197,7 @@
|
|||
|
||||
/* Do backface culling */
|
||||
if (area * bf < 0.0)
|
||||
return;
|
||||
return;
|
||||
|
||||
if (area == 0.0F)
|
||||
return;
|
||||
|
|
@ -381,7 +381,7 @@
|
|||
span.redStep = SignedFloatToFixed(drdx);
|
||||
drdy = oneOverArea * (eMaj.dx * eBot_dr - eMaj_dr * eBot.dx);
|
||||
eMaj_dg = (GLint) vMax->color[GCOMP] - (GLint) vMin->color[GCOMP];
|
||||
eBot_dg = (GLint) vMid->color[GCOMP] - (GLint) vMin->color[GCOMP];
|
||||
eBot_dg = (GLint) vMid->color[GCOMP] - (GLint) vMin->color[GCOMP];
|
||||
dgdx = oneOverArea * (eMaj_dg * eBot.dy - eMaj.dy * eBot_dg);
|
||||
span.greenStep = SignedFloatToFixed(dgdx);
|
||||
dgdy = oneOverArea * (eMaj.dx * eBot_dg - eMaj_dg * eBot.dx);
|
||||
|
|
@ -389,7 +389,7 @@
|
|||
eBot_db = (GLint) vMid->color[BCOMP] - (GLint) vMin->color[BCOMP];
|
||||
dbdx = oneOverArea * (eMaj_db * eBot.dy - eMaj.dy * eBot_db);
|
||||
span.blueStep = SignedFloatToFixed(dbdx);
|
||||
dbdy = oneOverArea * (eMaj.dx * eBot_db - eMaj_db * eBot.dx);
|
||||
dbdy = oneOverArea * (eMaj.dx * eBot_db - eMaj_db * eBot.dx);
|
||||
# ifdef INTERP_ALPHA
|
||||
eMaj_da = (GLint) vMax->color[ACOMP] - (GLint) vMin->color[ACOMP];
|
||||
eBot_da = (GLint) vMid->color[ACOMP] - (GLint) vMin->color[ACOMP];
|
||||
|
|
@ -425,7 +425,7 @@
|
|||
span.redStep = drdx;
|
||||
drdy = oneOverArea * (eMaj.dx * eBot_dr - eMaj_dr * eBot.dx);
|
||||
eMaj_dg = vMax->color[GCOMP] - vMin->color[GCOMP];
|
||||
eBot_dg = vMid->color[GCOMP] - vMin->color[GCOMP];
|
||||
eBot_dg = vMid->color[GCOMP] - vMin->color[GCOMP];
|
||||
dgdx = oneOverArea * (eMaj_dg * eBot.dy - eMaj.dy * eBot_dg);
|
||||
span.greenStep = dgdx;
|
||||
dgdy = oneOverArea * (eMaj.dx * eBot_dg - eMaj_dg * eBot.dx);
|
||||
|
|
@ -433,7 +433,7 @@
|
|||
eBot_db = vMid->color[BCOMP] - vMin->color[BCOMP];
|
||||
dbdx = oneOverArea * (eMaj_db * eBot.dy - eMaj.dy * eBot_db);
|
||||
span.blueStep = dbdx;
|
||||
dbdy = oneOverArea * (eMaj.dx * eBot_db - eMaj_db * eBot.dx);
|
||||
dbdy = oneOverArea * (eMaj.dx * eBot_db - eMaj_db * eBot.dx);
|
||||
eMaj_da = vMax->color[ACOMP] - vMin->color[ACOMP];
|
||||
eBot_da = vMid->color[ACOMP] - vMin->color[ACOMP];
|
||||
dadx = oneOverArea * (eMaj_da * eBot.dy - eMaj.dy * eBot_da);
|
||||
|
|
@ -459,7 +459,7 @@
|
|||
span.specRedStep = SignedFloatToFixed(dsrdx);
|
||||
dsrdy = oneOverArea * (eMaj.dx * eBot_dsr - eMaj_dsr * eBot.dx);
|
||||
eMaj_dsg = (GLint) vMax->specular[GCOMP] - (GLint) vMin->specular[GCOMP];
|
||||
eBot_dsg = (GLint) vMid->specular[GCOMP] - (GLint) vMin->specular[GCOMP];
|
||||
eBot_dsg = (GLint) vMid->specular[GCOMP] - (GLint) vMin->specular[GCOMP];
|
||||
dsgdx = oneOverArea * (eMaj_dsg * eBot.dy - eMaj.dy * eBot_dsg);
|
||||
span.specGreenStep = SignedFloatToFixed(dsgdx);
|
||||
dsgdy = oneOverArea * (eMaj.dx * eBot_dsg - eMaj_dsg * eBot.dx);
|
||||
|
|
@ -467,7 +467,7 @@
|
|||
eBot_dsb = (GLint) vMid->specular[BCOMP] - (GLint) vMin->specular[BCOMP];
|
||||
dsbdx = oneOverArea * (eMaj_dsb * eBot.dy - eMaj.dy * eBot_dsb);
|
||||
span.specBlueStep = SignedFloatToFixed(dsbdx);
|
||||
dsbdy = oneOverArea * (eMaj.dx * eBot_dsb - eMaj_dsb * eBot.dx);
|
||||
dsbdy = oneOverArea * (eMaj.dx * eBot_dsb - eMaj_dsb * eBot.dx);
|
||||
}
|
||||
else {
|
||||
dsrdx = dsrdy = 0.0F;
|
||||
|
|
@ -490,7 +490,7 @@
|
|||
span.specRedStep = dsrdx;
|
||||
dsrdy = oneOverArea * (eMaj.dx * eBot_dsr - eMaj_dsr * eBot.dx);
|
||||
eMaj_dsg = vMax->specular[GCOMP] - vMin->specular[GCOMP];
|
||||
eBot_dsg = vMid->specular[GCOMP] - vMin->specular[GCOMP];
|
||||
eBot_dsg = vMid->specular[GCOMP] - vMin->specular[GCOMP];
|
||||
dsgdx = oneOverArea * (eMaj_dsg * eBot.dy - eMaj.dy * eBot_dsg);
|
||||
span.specGreenStep = dsgdx;
|
||||
dsgdy = oneOverArea * (eMaj.dx * eBot_dsg - eMaj_dsg * eBot.dx);
|
||||
|
|
@ -498,7 +498,7 @@
|
|||
eBot_dsb = vMid->specular[BCOMP] - vMin->specular[BCOMP];
|
||||
dsbdx = oneOverArea * (eMaj_dsb * eBot.dy - eMaj.dy * eBot_dsb);
|
||||
span.specBlueStep = dsbdx;
|
||||
dsbdy = oneOverArea * (eMaj.dx * eBot_dsb - eMaj_dsb * eBot.dx);
|
||||
dsbdy = oneOverArea * (eMaj.dx * eBot_dsb - eMaj_dsb * eBot.dx);
|
||||
}
|
||||
else {
|
||||
dsrdx = dsrdy = span.specRedStep = 0;
|
||||
|
|
@ -560,23 +560,23 @@
|
|||
- eMaj.dy * eBot_ds);
|
||||
dsdy = oneOverArea * (eMaj.dx * eBot_ds - eMaj_ds * eBot.dx);
|
||||
|
||||
eMaj_dt = vMax->texcoord[0][1] * wMax - vMin->texcoord[0][1] * wMin;
|
||||
eBot_dt = vMid->texcoord[0][1] * wMid - vMin->texcoord[0][1] * wMin;
|
||||
span.texStep[0][1] = oneOverArea * (eMaj_dt * eBot.dy
|
||||
eMaj_dt = vMax->texcoord[0][1] * wMax - vMin->texcoord[0][1] * wMin;
|
||||
eBot_dt = vMid->texcoord[0][1] * wMid - vMin->texcoord[0][1] * wMin;
|
||||
span.texStep[0][1] = oneOverArea * (eMaj_dt * eBot.dy
|
||||
- eMaj.dy * eBot_dt);
|
||||
dtdy = oneOverArea * (eMaj.dx * eBot_dt - eMaj_dt * eBot.dx);
|
||||
dtdy = oneOverArea * (eMaj.dx * eBot_dt - eMaj_dt * eBot.dx);
|
||||
|
||||
eMaj_du = vMax->texcoord[0][2] * wMax - vMin->texcoord[0][2] * wMin;
|
||||
eBot_du = vMid->texcoord[0][2] * wMid - vMin->texcoord[0][2] * wMin;
|
||||
span.texStep[0][2] = oneOverArea * (eMaj_du * eBot.dy
|
||||
eMaj_du = vMax->texcoord[0][2] * wMax - vMin->texcoord[0][2] * wMin;
|
||||
eBot_du = vMid->texcoord[0][2] * wMid - vMin->texcoord[0][2] * wMin;
|
||||
span.texStep[0][2] = oneOverArea * (eMaj_du * eBot.dy
|
||||
- eMaj.dy * eBot_du);
|
||||
dudy = oneOverArea * (eMaj.dx * eBot_du - eMaj_du * eBot.dx);
|
||||
dudy = oneOverArea * (eMaj.dx * eBot_du - eMaj_du * eBot.dx);
|
||||
|
||||
eMaj_dv = vMax->texcoord[0][3] * wMax - vMin->texcoord[0][3] * wMin;
|
||||
eBot_dv = vMid->texcoord[0][3] * wMid - vMin->texcoord[0][3] * wMin;
|
||||
span.texStep[0][3] = oneOverArea * (eMaj_dv * eBot.dy
|
||||
eMaj_dv = vMax->texcoord[0][3] * wMax - vMin->texcoord[0][3] * wMin;
|
||||
eBot_dv = vMid->texcoord[0][3] * wMid - vMin->texcoord[0][3] * wMin;
|
||||
span.texStep[0][3] = oneOverArea * (eMaj_dv * eBot.dy
|
||||
- eMaj.dy * eBot_dv);
|
||||
dvdy = oneOverArea * (eMaj.dx * eBot_dv - eMaj_dv * eBot.dx);
|
||||
dvdy = oneOverArea * (eMaj.dx * eBot_dv - eMaj_dv * eBot.dx);
|
||||
}
|
||||
# ifdef INTERP_LAMBDA
|
||||
{
|
||||
|
|
@ -616,29 +616,29 @@
|
|||
- eMaj.dy * eBot_ds);
|
||||
dsdy[u] = oneOverArea * (eMaj.dx * eBot_ds - eMaj_ds * eBot.dx);
|
||||
|
||||
eMaj_dt = vMax->texcoord[u][1] * wMax
|
||||
- vMin->texcoord[u][1] * wMin;
|
||||
eBot_dt = vMid->texcoord[u][1] * wMid
|
||||
- vMin->texcoord[u][1] * wMin;
|
||||
span.texStep[u][1] = oneOverArea * (eMaj_dt * eBot.dy
|
||||
eMaj_dt = vMax->texcoord[u][1] * wMax
|
||||
- vMin->texcoord[u][1] * wMin;
|
||||
eBot_dt = vMid->texcoord[u][1] * wMid
|
||||
- vMin->texcoord[u][1] * wMin;
|
||||
span.texStep[u][1] = oneOverArea * (eMaj_dt * eBot.dy
|
||||
- eMaj.dy * eBot_dt);
|
||||
dtdy[u] = oneOverArea * (eMaj.dx * eBot_dt - eMaj_dt * eBot.dx);
|
||||
dtdy[u] = oneOverArea * (eMaj.dx * eBot_dt - eMaj_dt * eBot.dx);
|
||||
|
||||
eMaj_du = vMax->texcoord[u][2] * wMax
|
||||
eMaj_du = vMax->texcoord[u][2] * wMax
|
||||
- vMin->texcoord[u][2] * wMin;
|
||||
eBot_du = vMid->texcoord[u][2] * wMid
|
||||
eBot_du = vMid->texcoord[u][2] * wMid
|
||||
- vMin->texcoord[u][2] * wMin;
|
||||
span.texStep[u][2] = oneOverArea * (eMaj_du * eBot.dy
|
||||
span.texStep[u][2] = oneOverArea * (eMaj_du * eBot.dy
|
||||
- eMaj.dy * eBot_du);
|
||||
dudy[u] = oneOverArea * (eMaj.dx * eBot_du - eMaj_du * eBot.dx);
|
||||
dudy[u] = oneOverArea * (eMaj.dx * eBot_du - eMaj_du * eBot.dx);
|
||||
|
||||
eMaj_dv = vMax->texcoord[u][3] * wMax
|
||||
eMaj_dv = vMax->texcoord[u][3] * wMax
|
||||
- vMin->texcoord[u][3] * wMin;
|
||||
eBot_dv = vMid->texcoord[u][3] * wMid
|
||||
eBot_dv = vMid->texcoord[u][3] * wMid
|
||||
- vMin->texcoord[u][3] * wMin;
|
||||
span.texStep[u][3] = oneOverArea * (eMaj_dv * eBot.dy
|
||||
span.texStep[u][3] = oneOverArea * (eMaj_dv * eBot.dy
|
||||
- eMaj.dy * eBot_dv);
|
||||
dvdy[u] = oneOverArea * (eMaj.dx * eBot_dv - eMaj_dv * eBot.dx);
|
||||
dvdy[u] = oneOverArea * (eMaj.dx * eBot_dv - eMaj_dv * eBot.dx);
|
||||
# ifdef INTERP_LAMBDA
|
||||
{
|
||||
GLfloat dudx = span.texStep[u][0] * span.texWidth[u];
|
||||
|
|
@ -997,11 +997,11 @@
|
|||
+ dsdy * adjy) + FIXED_HALF;
|
||||
fdsOuter = SignedFloatToFixed(dsdy + dxOuter * dsdx);
|
||||
|
||||
t0 = vLower->texcoord[0][1] * T_SCALE;
|
||||
ft = (GLfixed)(t0 * FIXED_SCALE + dtdx * adjx
|
||||
t0 = vLower->texcoord[0][1] * T_SCALE;
|
||||
ft = (GLfixed)(t0 * FIXED_SCALE + dtdx * adjx
|
||||
+ dtdy * adjy) + FIXED_HALF;
|
||||
fdtOuter = SignedFloatToFixed(dtdy + dxOuter * dtdx);
|
||||
}
|
||||
fdtOuter = SignedFloatToFixed(dtdy + dxOuter * dtdx);
|
||||
}
|
||||
#endif
|
||||
#ifdef INTERP_TEX
|
||||
{
|
||||
|
|
@ -1011,18 +1011,18 @@
|
|||
sLeft = s0 + (span.texStep[0][0] * adjx + dsdy * adjy)
|
||||
* (1.0F/FIXED_SCALE);
|
||||
dsOuter = dsdy + dxOuter * span.texStep[0][0];
|
||||
t0 = vLower->texcoord[0][1] * invW;
|
||||
tLeft = t0 + (span.texStep[0][1] * adjx + dtdy * adjy)
|
||||
t0 = vLower->texcoord[0][1] * invW;
|
||||
tLeft = t0 + (span.texStep[0][1] * adjx + dtdy * adjy)
|
||||
* (1.0F/FIXED_SCALE);
|
||||
dtOuter = dtdy + dxOuter * span.texStep[0][1];
|
||||
u0 = vLower->texcoord[0][2] * invW;
|
||||
uLeft = u0 + (span.texStep[0][2] * adjx + dudy * adjy)
|
||||
dtOuter = dtdy + dxOuter * span.texStep[0][1];
|
||||
u0 = vLower->texcoord[0][2] * invW;
|
||||
uLeft = u0 + (span.texStep[0][2] * adjx + dudy * adjy)
|
||||
* (1.0F/FIXED_SCALE);
|
||||
duOuter = dudy + dxOuter * span.texStep[0][2];
|
||||
v0 = vLower->texcoord[0][3] * invW;
|
||||
vLeft = v0 + (span.texStep[0][3] * adjx + dvdy * adjy)
|
||||
duOuter = dudy + dxOuter * span.texStep[0][2];
|
||||
v0 = vLower->texcoord[0][3] * invW;
|
||||
vLeft = v0 + (span.texStep[0][3] * adjx + dvdy * adjy)
|
||||
* (1.0F/FIXED_SCALE);
|
||||
dvOuter = dvdy + dxOuter * span.texStep[0][3];
|
||||
dvOuter = dvdy + dxOuter * span.texStep[0][3];
|
||||
}
|
||||
#endif
|
||||
#ifdef INTERP_MULTITEX
|
||||
|
|
@ -1036,15 +1036,15 @@
|
|||
sLeft[u] = s0 + (span.texStep[u][0] * adjx + dsdy[u]
|
||||
* adjy) * (1.0F/FIXED_SCALE);
|
||||
dsOuter[u] = dsdy[u] + dxOuter * span.texStep[u][0];
|
||||
t0 = vLower->texcoord[u][1] * invW;
|
||||
tLeft[u] = t0 + (span.texStep[u][1] * adjx + dtdy[u]
|
||||
t0 = vLower->texcoord[u][1] * invW;
|
||||
tLeft[u] = t0 + (span.texStep[u][1] * adjx + dtdy[u]
|
||||
* adjy) * (1.0F/FIXED_SCALE);
|
||||
dtOuter[u] = dtdy[u] + dxOuter * span.texStep[u][1];
|
||||
u0 = vLower->texcoord[u][2] * invW;
|
||||
uLeft[u] = u0 + (span.texStep[u][2] * adjx + dudy[u]
|
||||
dtOuter[u] = dtdy[u] + dxOuter * span.texStep[u][1];
|
||||
u0 = vLower->texcoord[u][2] * invW;
|
||||
uLeft[u] = u0 + (span.texStep[u][2] * adjx + dudy[u]
|
||||
* adjy) * (1.0F/FIXED_SCALE);
|
||||
duOuter[u] = dudy[u] + dxOuter * span.texStep[u][2];
|
||||
v0 = vLower->texcoord[u][3] * invW;
|
||||
duOuter[u] = dudy[u] + dxOuter * span.texStep[u][2];
|
||||
v0 = vLower->texcoord[u][3] * invW;
|
||||
vLeft[u] = v0 + (span.texStep[u][3] * adjx + dvdy[u]
|
||||
* adjy) * (1.0F/FIXED_SCALE);
|
||||
dvOuter[u] = dvdy[u] + dxOuter * span.texStep[u][3];
|
||||
|
|
@ -1100,10 +1100,10 @@
|
|||
fdtInner = fdtOuter + span.intTexStep[1];
|
||||
#endif
|
||||
#ifdef INTERP_TEX
|
||||
dsInner = dsOuter + span.texStep[0][0];
|
||||
dtInner = dtOuter + span.texStep[0][1];
|
||||
duInner = duOuter + span.texStep[0][2];
|
||||
dvInner = dvOuter + span.texStep[0][3];
|
||||
dsInner = dsOuter + span.texStep[0][0];
|
||||
dtInner = dtOuter + span.texStep[0][1];
|
||||
duInner = duOuter + span.texStep[0][2];
|
||||
dvInner = dvOuter + span.texStep[0][3];
|
||||
#endif
|
||||
#ifdef INTERP_MULTITEX
|
||||
{
|
||||
|
|
@ -1294,10 +1294,10 @@
|
|||
ft += fdtOuter;
|
||||
#endif
|
||||
#ifdef INTERP_TEX
|
||||
sLeft += dsOuter;
|
||||
tLeft += dtOuter;
|
||||
uLeft += duOuter;
|
||||
vLeft += dvOuter;
|
||||
sLeft += dsOuter;
|
||||
tLeft += dtOuter;
|
||||
uLeft += duOuter;
|
||||
vLeft += dvOuter;
|
||||
#endif
|
||||
#ifdef INTERP_MULTITEX
|
||||
{
|
||||
|
|
@ -1347,10 +1347,10 @@
|
|||
ft += fdtInner;
|
||||
#endif
|
||||
#ifdef INTERP_TEX
|
||||
sLeft += dsInner;
|
||||
tLeft += dtInner;
|
||||
uLeft += duInner;
|
||||
vLeft += dvInner;
|
||||
sLeft += dsInner;
|
||||
tLeft += dtInner;
|
||||
uLeft += duInner;
|
||||
vLeft += dvInner;
|
||||
#endif
|
||||
#ifdef INTERP_MULTITEX
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue