diff --git a/build/zinstructions.go b/build/zinstructions.go index 2d117f1e..3d4513e1 100644 --- a/build/zinstructions.go +++ b/build/zinstructions.go @@ -10013,6 +10013,27 @@ func (c *Context) PBLENDW(i, mx, x operand.Op) { // Operates on the global context. func PBLENDW(i, mx, x operand.Op) { ctx.PBLENDW(i, mx, x) } +// PCALIGN: Align the next instruction to the specified boundary. +// +// Forms: +// +// PCALIGN imm8 +// +// Construct and append a PCALIGN instruction to the active function. +func (c *Context) PCALIGN(i operand.Op) { + c.addinstruction(x86.PCALIGN(i)) +} + +// PCALIGN: Align the next instruction to the specified boundary. +// +// Forms: +// +// PCALIGN imm8 +// +// Construct and append a PCALIGN instruction to the active function. +// Operates on the global context. +func PCALIGN(i operand.Op) { ctx.PCALIGN(i) } + // PCLMULQDQ: Carry-Less Quadword Multiplication. // // Forms: diff --git a/build/zinstructions_test.go b/build/zinstructions_test.go index 3312b9c3..6242cef3 100644 --- a/build/zinstructions_test.go +++ b/build/zinstructions_test.go @@ -478,6 +478,7 @@ func TestContextInstructions(t *testing.T) { ctx.PAVGW(opm128, opxmm) ctx.PBLENDVB(opxmm0, opm128, opxmm) ctx.PBLENDW(opimm8, opm128, opxmm) + ctx.PCALIGN(opimm8) ctx.PCLMULQDQ(opimm8, opm128, opxmm) ctx.PCMPEQB(opm128, opxmm) ctx.PCMPEQL(opm128, opxmm) diff --git a/internal/inst/ztable.go b/internal/inst/ztable.go index d156f14b..4eb2bcaa 100644 --- a/internal/inst/ztable.go +++ b/internal/inst/ztable.go @@ -10030,6 +10030,18 @@ var Instructions = []Instruction{ }, }, }, + { + Opcode: "PCALIGN", + Summary: "Align the next instruction to the specified boundary", + Forms: []Form{ + { + Operands: []Operand{ + {Type: "imm8", Action: 0x0}, + }, + EncodingType: 0x0, + }, + }, + }, { Opcode: "PCLMULQDQ", Summary: "Carry-Less Quadword Multiplication", diff --git a/internal/opcodesextra/instructions.go b/internal/opcodesextra/instructions.go index 4b5258f1..77116c02 100644 --- a/internal/opcodesextra/instructions.go +++ b/internal/opcodesextra/instructions.go @@ -9,6 +9,7 @@ import ( // sets of extra instructions. var sets = [][]*inst.Instruction{ + pseudo, movlqzx, gfni, vaes, diff --git a/internal/opcodesextra/pseudo.go b/internal/opcodesextra/pseudo.go new file mode 100644 index 00000000..f1710167 --- /dev/null +++ b/internal/opcodesextra/pseudo.go @@ -0,0 +1,35 @@ +package opcodesextra + +import "github.com/mmcloughlin/avo/internal/inst" + +// pseudo is pseudo-ops supported by the Go assembler. +var pseudo = []*inst.Instruction{ + // Reference: https://github.com/golang/go/blob/go1.22rc1/doc/asm.html#L469-L482 + // + //
+ // The PCALIGN
pseudo-instruction is used to indicate that the next instruction should be aligned
+ // to a specified boundary by padding with no-op instructions.
+ //
+ // It is currently supported on arm64, amd64, ppc64, loong64 and riscv64.
+ //
+ // For example, the start of the MOVD
instruction below is aligned to 32 bytes:
+ //
+ // PCALIGN $32 + // MOVD $2, R0 + //+ // + // + { + Opcode: "PCALIGN", + Summary: "Align the next instruction to the specified boundary", + Forms: []inst.Form{ + { + Operands: []inst.Operand{ + {Type: "imm8"}, + }, + }, + }, + }, +} diff --git a/x86/zctors.go b/x86/zctors.go index 3d2debca..f69ea777 100644 --- a/x86/zctors.go +++ b/x86/zctors.go @@ -4371,6 +4371,15 @@ func PBLENDW(i, mx, x operand.Op) (*intrep.Instruction, error) { return build(opcPBLENDW.Forms(), sffxs{}, []operand.Op{i, mx, x}) } +// PCALIGN: Align the next instruction to the specified boundary. +// +// Forms: +// +// PCALIGN imm8 +func PCALIGN(i operand.Op) (*intrep.Instruction, error) { + return build(opcPCALIGN.Forms(), sffxs{}, []operand.Op{i}) +} + // PCLMULQDQ: Carry-Less Quadword Multiplication. // // Forms: diff --git a/x86/zctors_test.go b/x86/zctors_test.go index 6c44b33f..165f696f 100644 --- a/x86/zctors_test.go +++ b/x86/zctors_test.go @@ -4261,6 +4261,12 @@ func TestPBLENDWValidFormsNoError(t *testing.T) { } } +func TestPCALIGNValidFormsNoError(t *testing.T) { + if _, err := PCALIGN(opimm8); err != nil { + t.Fatal(err) + } +} + func TestPCLMULQDQValidFormsNoError(t *testing.T) { if _, err := PCLMULQDQ(opimm8, opm128, opxmm); err != nil { t.Fatal(err) diff --git a/x86/zoptab.go b/x86/zoptab.go index ff6108b8..24970885 100644 --- a/x86/zoptab.go +++ b/x86/zoptab.go @@ -832,6 +832,7 @@ const ( opcPAVGW opcPBLENDVB opcPBLENDW + opcPCALIGN opcPCLMULQDQ opcPCMPEQB opcPCMPEQL @@ -2151,6 +2152,7 @@ var opcstringtable = []string{ "PAVGW", "PBLENDVB", "PBLENDW", + "PCALIGN", "PCLMULQDQ", "PCMPEQB", "PCMPEQL", @@ -4019,6 +4021,7 @@ var forms = []form{ {opcPBLENDVB, sffxsclsNIL, 0, isasSSE41, 3, oprnds{{uint8(oprndtypeXMM0), false, actionR}, {uint8(oprndtypeXMM), false, actionR}, {uint8(oprndtypeXMM), false, actionRW}}}, {opcPBLENDW, sffxsclsNIL, 0, isasSSE41, 3, oprnds{{uint8(oprndtypeIMM8), false, actionN}, {uint8(oprndtypeM128), false, actionR}, {uint8(oprndtypeXMM), false, actionRW}}}, {opcPBLENDW, sffxsclsNIL, 0, isasSSE41, 3, oprnds{{uint8(oprndtypeIMM8), false, actionN}, {uint8(oprndtypeXMM), false, actionR}, {uint8(oprndtypeXMM), false, actionRW}}}, + {opcPCALIGN, sffxsclsNIL, 0, isasBase, 1, oprnds{{uint8(oprndtypeIMM8), false, actionN}}}, {opcPCLMULQDQ, sffxsclsNIL, 0, isasPCLMULQDQ, 3, oprnds{{uint8(oprndtypeIMM8), false, actionN}, {uint8(oprndtypeM128), false, actionR}, {uint8(oprndtypeXMM), false, actionRW}}}, {opcPCLMULQDQ, sffxsclsNIL, 0, isasPCLMULQDQ, 3, oprnds{{uint8(oprndtypeIMM8), false, actionN}, {uint8(oprndtypeXMM), false, actionR}, {uint8(oprndtypeXMM), false, actionRW}}}, {opcPCMPEQB, sffxsclsNIL, 0, isasSSE2, 2, oprnds{{uint8(oprndtypeM128), false, actionR}, {uint8(oprndtypeXMM), false, actionRW}}}, @@ -15497,889 +15500,890 @@ var opcformstable = [][]form{ forms[974:976], forms[976:978], forms[978:980], - forms[980:982], - forms[982:984], - forms[984:986], - forms[986:988], - forms[988:990], - forms[990:992], - forms[992:994], - forms[994:996], - forms[996:998], - forms[998:1000], - forms[1000:1002], - forms[1002:1004], - forms[1004:1006], - forms[1006:1008], - forms[1008:1010], - forms[1010:1012], - forms[1012:1014], - forms[1014:1016], - forms[1016:1018], - forms[1018:1020], - forms[1020:1022], - forms[1022:1024], - forms[1024:1026], - forms[1026:1028], - forms[1028:1030], - forms[1030:1032], - forms[1032:1034], - forms[1034:1036], - forms[1036:1038], - forms[1038:1040], - forms[1040:1042], - forms[1042:1044], - forms[1044:1046], - forms[1046:1048], - forms[1048:1050], - forms[1050:1052], - forms[1052:1054], - forms[1054:1056], - forms[1056:1058], - forms[1058:1060], - forms[1060:1062], - forms[1062:1064], - forms[1064:1066], - forms[1066:1068], - forms[1068:1070], - forms[1070:1072], - forms[1072:1073], - forms[1073:1075], - forms[1075:1077], - forms[1077:1079], - forms[1079:1081], - forms[1081:1083], - forms[1083:1085], - forms[1085:1087], - forms[1087:1089], - forms[1089:1091], - forms[1091:1093], - forms[1093:1095], - forms[1095:1097], - forms[1097:1099], - forms[1099:1101], - forms[1101:1103], - forms[1103:1105], - forms[1105:1107], - forms[1107:1109], - forms[1109:1111], - forms[1111:1113], - forms[1113:1115], - forms[1115:1117], - forms[1117:1119], - forms[1119:1121], - forms[1121:1123], - forms[1123:1124], + forms[980:981], + forms[981:983], + forms[983:985], + forms[985:987], + forms[987:989], + forms[989:991], + forms[991:993], + forms[993:995], + forms[995:997], + forms[997:999], + forms[999:1001], + forms[1001:1003], + forms[1003:1005], + forms[1005:1007], + forms[1007:1009], + forms[1009:1011], + forms[1011:1013], + forms[1013:1015], + forms[1015:1017], + forms[1017:1019], + forms[1019:1021], + forms[1021:1023], + forms[1023:1025], + forms[1025:1027], + forms[1027:1029], + forms[1029:1031], + forms[1031:1033], + forms[1033:1035], + forms[1035:1037], + forms[1037:1039], + forms[1039:1041], + forms[1041:1043], + forms[1043:1045], + forms[1045:1047], + forms[1047:1049], + forms[1049:1051], + forms[1051:1053], + forms[1053:1055], + forms[1055:1057], + forms[1057:1059], + forms[1059:1061], + forms[1061:1063], + forms[1063:1065], + forms[1065:1067], + forms[1067:1069], + forms[1069:1071], + forms[1071:1073], + forms[1073:1074], + forms[1074:1076], + forms[1076:1078], + forms[1078:1080], + forms[1080:1082], + forms[1082:1084], + forms[1084:1086], + forms[1086:1088], + forms[1088:1090], + forms[1090:1092], + forms[1092:1094], + forms[1094:1096], + forms[1096:1098], + forms[1098:1100], + forms[1100:1102], + forms[1102:1104], + forms[1104:1106], + forms[1106:1108], + forms[1108:1110], + forms[1110:1112], + forms[1112:1114], + forms[1114:1116], + forms[1116:1118], + forms[1118:1120], + forms[1120:1122], + forms[1122:1124], forms[1124:1125], forms[1125:1126], forms[1126:1127], - forms[1127:1129], - forms[1129:1131], - forms[1131:1133], - forms[1133:1135], - forms[1135:1137], - forms[1137:1139], - forms[1139:1141], - forms[1141:1143], - forms[1143:1145], - forms[1145:1146], - forms[1146:1149], - forms[1149:1150], - forms[1150:1153], - forms[1153:1156], - forms[1156:1159], - forms[1159:1162], - forms[1162:1163], - forms[1163:1166], - forms[1166:1167], - forms[1167:1170], - forms[1170:1173], - forms[1173:1175], - forms[1175:1177], - forms[1177:1179], - forms[1179:1181], - forms[1181:1183], - forms[1183:1185], - forms[1185:1187], - forms[1187:1189], - forms[1189:1191], - forms[1191:1193], - forms[1193:1195], - forms[1195:1197], - forms[1197:1199], - forms[1199:1201], - forms[1201:1203], - forms[1203:1205], - forms[1205:1207], - forms[1207:1211], - forms[1211:1213], - forms[1213:1215], - forms[1215:1221], - forms[1221:1227], - forms[1227:1233], - forms[1233:1239], - forms[1239:1241], - forms[1241:1243], - forms[1243:1249], - forms[1249:1255], - forms[1255:1261], - forms[1261:1267], - forms[1267:1270], - forms[1270:1273], - forms[1273:1274], + forms[1127:1128], + forms[1128:1130], + forms[1130:1132], + forms[1132:1134], + forms[1134:1136], + forms[1136:1138], + forms[1138:1140], + forms[1140:1142], + forms[1142:1144], + forms[1144:1146], + forms[1146:1147], + forms[1147:1150], + forms[1150:1151], + forms[1151:1154], + forms[1154:1157], + forms[1157:1160], + forms[1160:1163], + forms[1163:1164], + forms[1164:1167], + forms[1167:1168], + forms[1168:1171], + forms[1171:1174], + forms[1174:1176], + forms[1176:1178], + forms[1178:1180], + forms[1180:1182], + forms[1182:1184], + forms[1184:1186], + forms[1186:1188], + forms[1188:1190], + forms[1190:1192], + forms[1192:1194], + forms[1194:1196], + forms[1196:1198], + forms[1198:1200], + forms[1200:1202], + forms[1202:1204], + forms[1204:1206], + forms[1206:1208], + forms[1208:1212], + forms[1212:1214], + forms[1214:1216], + forms[1216:1222], + forms[1222:1228], + forms[1228:1234], + forms[1234:1240], + forms[1240:1242], + forms[1242:1244], + forms[1244:1250], + forms[1250:1256], + forms[1256:1262], + forms[1262:1268], + forms[1268:1271], + forms[1271:1274], forms[1274:1275], forms[1275:1276], forms[1276:1277], forms[1277:1278], forms[1278:1279], - forms[1279:1285], - forms[1285:1291], - forms[1291:1297], - forms[1297:1303], - forms[1303:1309], - forms[1309:1315], - forms[1315:1321], - forms[1321:1327], - forms[1327:1329], - forms[1329:1331], - forms[1331:1333], - forms[1333:1335], - forms[1335:1337], - forms[1337:1339], - forms[1339:1341], - forms[1341:1343], - forms[1343:1349], - forms[1349:1355], - forms[1355:1361], - forms[1361:1367], - forms[1367:1373], - forms[1373:1379], - forms[1379:1385], - forms[1385:1391], - forms[1391:1393], - forms[1393:1395], - forms[1395:1401], - forms[1401:1409], - forms[1409:1417], - forms[1417:1425], - forms[1425:1427], - forms[1427:1429], - forms[1429:1431], - forms[1431:1433], - forms[1433:1435], - forms[1435:1437], - forms[1437:1439], - forms[1439:1441], - forms[1441:1443], - forms[1443:1445], - forms[1445:1447], - forms[1447:1449], - forms[1449:1451], - forms[1451:1453], - forms[1453:1455], - forms[1455:1457], - forms[1457:1458], - forms[1458:1460], - forms[1460:1462], - forms[1462:1464], - forms[1464:1466], - forms[1466:1468], - forms[1468:1470], - forms[1470:1472], - forms[1472:1478], - forms[1478:1488], - forms[1488:1498], - forms[1498:1508], - forms[1508:1510], - forms[1510:1512], - forms[1512:1518], - forms[1518:1528], - forms[1528:1538], - forms[1538:1548], - forms[1548:1550], - forms[1550:1552], - forms[1552:1554], - forms[1554:1556], - forms[1556:1558], - forms[1558:1560], - forms[1560:1562], - forms[1562:1564], - forms[1564:1565], + forms[1279:1280], + forms[1280:1286], + forms[1286:1292], + forms[1292:1298], + forms[1298:1304], + forms[1304:1310], + forms[1310:1316], + forms[1316:1322], + forms[1322:1328], + forms[1328:1330], + forms[1330:1332], + forms[1332:1334], + forms[1334:1336], + forms[1336:1338], + forms[1338:1340], + forms[1340:1342], + forms[1342:1344], + forms[1344:1350], + forms[1350:1356], + forms[1356:1362], + forms[1362:1368], + forms[1368:1374], + forms[1374:1380], + forms[1380:1386], + forms[1386:1392], + forms[1392:1394], + forms[1394:1396], + forms[1396:1402], + forms[1402:1410], + forms[1410:1418], + forms[1418:1426], + forms[1426:1428], + forms[1428:1430], + forms[1430:1432], + forms[1432:1434], + forms[1434:1436], + forms[1436:1438], + forms[1438:1440], + forms[1440:1442], + forms[1442:1444], + forms[1444:1446], + forms[1446:1448], + forms[1448:1450], + forms[1450:1452], + forms[1452:1454], + forms[1454:1456], + forms[1456:1458], + forms[1458:1459], + forms[1459:1461], + forms[1461:1463], + forms[1463:1465], + forms[1465:1467], + forms[1467:1469], + forms[1469:1471], + forms[1471:1473], + forms[1473:1479], + forms[1479:1489], + forms[1489:1499], + forms[1499:1509], + forms[1509:1511], + forms[1511:1513], + forms[1513:1519], + forms[1519:1529], + forms[1529:1539], + forms[1539:1549], + forms[1549:1551], + forms[1551:1553], + forms[1553:1555], + forms[1555:1557], + forms[1557:1559], + forms[1559:1561], + forms[1561:1563], + forms[1563:1565], forms[1565:1566], forms[1566:1567], - forms[1567:1573], - forms[1573:1581], - forms[1581:1583], - forms[1583:1585], - forms[1585:1593], - forms[1593:1595], - forms[1595:1597], - forms[1597:1605], - forms[1605:1606], - forms[1606:1611], - forms[1611:1616], - forms[1616:1621], - forms[1621:1626], - forms[1626:1628], - forms[1628:1630], - forms[1630:1632], - forms[1632:1634], - forms[1634:1636], - forms[1636:1637], - forms[1637:1639], - forms[1639:1641], - forms[1641:1643], - forms[1643:1645], - forms[1645:1675], - forms[1675:1705], - forms[1705:1714], - forms[1714:1723], - forms[1723:1727], - forms[1727:1731], - forms[1731:1737], - forms[1737:1743], - forms[1743:1749], - forms[1749:1755], - forms[1755:1757], - forms[1757:1759], - forms[1759:1786], - forms[1786:1813], - forms[1813:1840], - forms[1840:1867], - forms[1867:1894], - forms[1894:1921], - forms[1921:1948], - forms[1948:1975], - forms[1975:1979], - forms[1979:1983], - forms[1983:1987], - forms[1987:1991], - forms[1991:1992], - forms[1992:2004], - forms[2004:2010], - forms[2010:2013], - forms[2013:2019], - forms[2019:2022], - forms[2022:2023], - forms[2023:2041], - forms[2041:2047], - forms[2047:2050], - forms[2050:2056], - forms[2056:2059], - forms[2059:2071], - forms[2071:2085], - forms[2085:2109], - forms[2109:2133], - forms[2133:2141], - forms[2141:2149], - forms[2149:2152], - forms[2152:2155], - forms[2155:2173], - forms[2173:2191], - forms[2191:2218], - forms[2218:2248], - forms[2248:2260], - forms[2260:2269], - forms[2269:2278], - forms[2278:2290], - forms[2290:2299], - forms[2299:2308], - forms[2308:2338], - forms[2338:2350], - forms[2350:2359], - forms[2359:2368], - forms[2368:2398], - forms[2398:2419], - forms[2419:2449], - forms[2449:2479], - forms[2479:2500], - forms[2500:2530], - forms[2530:2560], - forms[2560:2590], - forms[2590:2620], - forms[2620:2632], - forms[2632:2641], - forms[2641:2650], - forms[2650:2653], - forms[2653:2656], - forms[2656:2665], - forms[2665:2668], - forms[2668:2671], - forms[2671:2673], - forms[2673:2676], - forms[2676:2679], - forms[2679:2682], - forms[2682:2691], - forms[2691:2694], - forms[2694:2697], - forms[2697:2700], - forms[2700:2703], - forms[2703:2715], - forms[2715:2724], - forms[2724:2733], - forms[2733:2763], - forms[2763:2775], - forms[2775:2784], - forms[2784:2793], - forms[2793:2823], - forms[2823:2853], - forms[2853:2883], - forms[2883:2913], - forms[2913:2943], - forms[2943:2946], - forms[2946:2949], - forms[2949:2952], - forms[2952:2955], - forms[2955:2958], - forms[2958:2961], - forms[2961:2964], - forms[2964:2967], - forms[2967:2994], - forms[2994:3024], - forms[3024:3054], - forms[3054:3066], - forms[3066:3075], - forms[3075:3084], - forms[3084:3086], - forms[3086:3089], - forms[3089:3092], - forms[3092:3095], - forms[3095:3113], - forms[3113:3143], - forms[3143:3173], - forms[3173:3182], - forms[3182:3191], - forms[3191:3193], - forms[3193:3197], - forms[3197:3209], - forms[3209:3221], - forms[3221:3239], - forms[3239:3257], - forms[3257:3259], - forms[3259:3271], - forms[3271:3277], - forms[3277:3289], - forms[3289:3295], - forms[3295:3297], - forms[3297:3309], - forms[3309:3315], - forms[3315:3327], - forms[3327:3333], - forms[3333:3335], - forms[3335:3365], - forms[3365:3395], - forms[3395:3404], - forms[3404:3413], - forms[3413:3443], - forms[3443:3473], - forms[3473:3482], - forms[3482:3491], - forms[3491:3521], - forms[3521:3551], - forms[3551:3560], - forms[3560:3569], - forms[3569:3599], - forms[3599:3629], - forms[3629:3638], - forms[3638:3647], - forms[3647:3677], - forms[3677:3707], - forms[3707:3737], - forms[3737:3767], - forms[3767:3797], - forms[3797:3827], - forms[3827:3857], - forms[3857:3887], - forms[3887:3896], - forms[3896:3905], - forms[3905:3935], - forms[3935:3965], - forms[3965:3974], - forms[3974:3983], - forms[3983:4013], - forms[4013:4043], - forms[4043:4052], - forms[4052:4061], - forms[4061:4091], - forms[4091:4121], - forms[4121:4151], - forms[4151:4181], - forms[4181:4211], - forms[4211:4241], - forms[4241:4271], - forms[4271:4301], - forms[4301:4310], - forms[4310:4319], - forms[4319:4349], - forms[4349:4379], - forms[4379:4388], - forms[4388:4397], - forms[4397:4427], - forms[4427:4457], - forms[4457:4466], - forms[4466:4475], - forms[4475:4505], - forms[4505:4535], - forms[4535:4544], - forms[4544:4553], - forms[4553:4583], - forms[4583:4613], - forms[4613:4622], - forms[4622:4631], - forms[4631:4661], - forms[4661:4691], - forms[4691:4700], - forms[4700:4709], - forms[4709:4715], - forms[4715:4721], - forms[4721:4727], - forms[4727:4733], - forms[4733:4739], - forms[4739:4745], - forms[4745:4749], - forms[4749:4753], - forms[4753:4758], - forms[4758:4763], - forms[4763:4768], - forms[4768:4773], - forms[4773:4803], - forms[4803:4833], - forms[4833:4842], - forms[4842:4851], - forms[4851:4881], - forms[4881:4911], - forms[4911:4920], - forms[4920:4929], - forms[4929:4956], - forms[4956:4983], - forms[4983:5001], - forms[5001:5005], - forms[5005:5009], - forms[5009:5013], - forms[5013:5017], - forms[5017:5019], - forms[5019:5031], - forms[5031:5037], - forms[5037:5049], - forms[5049:5055], - forms[5055:5057], - forms[5057:5069], - forms[5069:5075], - forms[5075:5087], - forms[5087:5093], - forms[5093:5095], - forms[5095:5097], - forms[5097:5098], + forms[1567:1568], + forms[1568:1574], + forms[1574:1582], + forms[1582:1584], + forms[1584:1586], + forms[1586:1594], + forms[1594:1596], + forms[1596:1598], + forms[1598:1606], + forms[1606:1607], + forms[1607:1612], + forms[1612:1617], + forms[1617:1622], + forms[1622:1627], + forms[1627:1629], + forms[1629:1631], + forms[1631:1633], + forms[1633:1635], + forms[1635:1637], + forms[1637:1638], + forms[1638:1640], + forms[1640:1642], + forms[1642:1644], + forms[1644:1646], + forms[1646:1676], + forms[1676:1706], + forms[1706:1715], + forms[1715:1724], + forms[1724:1728], + forms[1728:1732], + forms[1732:1738], + forms[1738:1744], + forms[1744:1750], + forms[1750:1756], + forms[1756:1758], + forms[1758:1760], + forms[1760:1787], + forms[1787:1814], + forms[1814:1841], + forms[1841:1868], + forms[1868:1895], + forms[1895:1922], + forms[1922:1949], + forms[1949:1976], + forms[1976:1980], + forms[1980:1984], + forms[1984:1988], + forms[1988:1992], + forms[1992:1993], + forms[1993:2005], + forms[2005:2011], + forms[2011:2014], + forms[2014:2020], + forms[2020:2023], + forms[2023:2024], + forms[2024:2042], + forms[2042:2048], + forms[2048:2051], + forms[2051:2057], + forms[2057:2060], + forms[2060:2072], + forms[2072:2086], + forms[2086:2110], + forms[2110:2134], + forms[2134:2142], + forms[2142:2150], + forms[2150:2153], + forms[2153:2156], + forms[2156:2174], + forms[2174:2192], + forms[2192:2219], + forms[2219:2249], + forms[2249:2261], + forms[2261:2270], + forms[2270:2279], + forms[2279:2291], + forms[2291:2300], + forms[2300:2309], + forms[2309:2339], + forms[2339:2351], + forms[2351:2360], + forms[2360:2369], + forms[2369:2399], + forms[2399:2420], + forms[2420:2450], + forms[2450:2480], + forms[2480:2501], + forms[2501:2531], + forms[2531:2561], + forms[2561:2591], + forms[2591:2621], + forms[2621:2633], + forms[2633:2642], + forms[2642:2651], + forms[2651:2654], + forms[2654:2657], + forms[2657:2666], + forms[2666:2669], + forms[2669:2672], + forms[2672:2674], + forms[2674:2677], + forms[2677:2680], + forms[2680:2683], + forms[2683:2692], + forms[2692:2695], + forms[2695:2698], + forms[2698:2701], + forms[2701:2704], + forms[2704:2716], + forms[2716:2725], + forms[2725:2734], + forms[2734:2764], + forms[2764:2776], + forms[2776:2785], + forms[2785:2794], + forms[2794:2824], + forms[2824:2854], + forms[2854:2884], + forms[2884:2914], + forms[2914:2944], + forms[2944:2947], + forms[2947:2950], + forms[2950:2953], + forms[2953:2956], + forms[2956:2959], + forms[2959:2962], + forms[2962:2965], + forms[2965:2968], + forms[2968:2995], + forms[2995:3025], + forms[3025:3055], + forms[3055:3067], + forms[3067:3076], + forms[3076:3085], + forms[3085:3087], + forms[3087:3090], + forms[3090:3093], + forms[3093:3096], + forms[3096:3114], + forms[3114:3144], + forms[3144:3174], + forms[3174:3183], + forms[3183:3192], + forms[3192:3194], + forms[3194:3198], + forms[3198:3210], + forms[3210:3222], + forms[3222:3240], + forms[3240:3258], + forms[3258:3260], + forms[3260:3272], + forms[3272:3278], + forms[3278:3290], + forms[3290:3296], + forms[3296:3298], + forms[3298:3310], + forms[3310:3316], + forms[3316:3328], + forms[3328:3334], + forms[3334:3336], + forms[3336:3366], + forms[3366:3396], + forms[3396:3405], + forms[3405:3414], + forms[3414:3444], + forms[3444:3474], + forms[3474:3483], + forms[3483:3492], + forms[3492:3522], + forms[3522:3552], + forms[3552:3561], + forms[3561:3570], + forms[3570:3600], + forms[3600:3630], + forms[3630:3639], + forms[3639:3648], + forms[3648:3678], + forms[3678:3708], + forms[3708:3738], + forms[3738:3768], + forms[3768:3798], + forms[3798:3828], + forms[3828:3858], + forms[3858:3888], + forms[3888:3897], + forms[3897:3906], + forms[3906:3936], + forms[3936:3966], + forms[3966:3975], + forms[3975:3984], + forms[3984:4014], + forms[4014:4044], + forms[4044:4053], + forms[4053:4062], + forms[4062:4092], + forms[4092:4122], + forms[4122:4152], + forms[4152:4182], + forms[4182:4212], + forms[4212:4242], + forms[4242:4272], + forms[4272:4302], + forms[4302:4311], + forms[4311:4320], + forms[4320:4350], + forms[4350:4380], + forms[4380:4389], + forms[4389:4398], + forms[4398:4428], + forms[4428:4458], + forms[4458:4467], + forms[4467:4476], + forms[4476:4506], + forms[4506:4536], + forms[4536:4545], + forms[4545:4554], + forms[4554:4584], + forms[4584:4614], + forms[4614:4623], + forms[4623:4632], + forms[4632:4662], + forms[4662:4692], + forms[4692:4701], + forms[4701:4710], + forms[4710:4716], + forms[4716:4722], + forms[4722:4728], + forms[4728:4734], + forms[4734:4740], + forms[4740:4746], + forms[4746:4750], + forms[4750:4754], + forms[4754:4759], + forms[4759:4764], + forms[4764:4769], + forms[4769:4774], + forms[4774:4804], + forms[4804:4834], + forms[4834:4843], + forms[4843:4852], + forms[4852:4882], + forms[4882:4912], + forms[4912:4921], + forms[4921:4930], + forms[4930:4957], + forms[4957:4984], + forms[4984:5002], + forms[5002:5006], + forms[5006:5010], + forms[5010:5014], + forms[5014:5018], + forms[5018:5020], + forms[5020:5032], + forms[5032:5038], + forms[5038:5050], + forms[5050:5056], + forms[5056:5058], + forms[5058:5070], + forms[5070:5076], + forms[5076:5088], + forms[5088:5094], + forms[5094:5096], + forms[5096:5098], forms[5098:5099], - forms[5099:5103], - forms[5103:5107], - forms[5107:5137], - forms[5137:5167], - forms[5167:5176], - forms[5176:5185], - forms[5185:5215], - forms[5215:5245], - forms[5245:5254], - forms[5254:5263], - forms[5263:5290], - forms[5290:5317], - forms[5317:5321], - forms[5321:5339], - forms[5339:5345], - forms[5345:5372], - forms[5372:5399], - forms[5399:5405], - forms[5405:5432], - forms[5432:5459], - forms[5459:5486], - forms[5486:5513], - forms[5513:5514], - forms[5514:5516], - forms[5516:5518], - forms[5518:5519], - forms[5519:5521], - forms[5521:5523], - forms[5523:5525], - forms[5525:5527], - forms[5527:5530], - forms[5530:5533], - forms[5533:5536], - forms[5536:5539], - forms[5539:5544], - forms[5544:5552], - forms[5552:5570], - forms[5570:5588], - forms[5588:5596], - forms[5596:5623], - forms[5623:5650], - forms[5650:5654], - forms[5654:5684], - forms[5684:5714], - forms[5714:5723], - forms[5723:5732], - forms[5732:5759], - forms[5759:5786], - forms[5786:5804], - forms[5804:5831], - forms[5831:5858], - forms[5858:5876], - forms[5876:5903], - forms[5903:5921], - forms[5921:5948], - forms[5948:5966], - forms[5966:5984], - forms[5984:6011], - forms[6011:6038], - forms[6038:6056], - forms[6056:6074], - forms[6074:6092], - forms[6092:6110], - forms[6110:6128], - forms[6128:6146], - forms[6146:6150], - forms[6150:6177], - forms[6177:6181], - forms[6181:6208], - forms[6208:6235], - forms[6235:6262], - forms[6262:6280], - forms[6280:6298], - forms[6298:6302], - forms[6302:6320], - forms[6320:6347], - forms[6347:6374], - forms[6374:6392], - forms[6392:6396], - forms[6396:6400], - forms[6400:6427], - forms[6427:6454], - forms[6454:6457], - forms[6457:6460], - forms[6460:6487], - forms[6487:6514], - forms[6514:6520], - forms[6520:6532], - forms[6532:6550], - forms[6550:6566], - forms[6566:6588], - forms[6588:6610], - forms[6610:6626], - forms[6626:6628], - forms[6628:6630], - forms[6630:6646], - forms[6646:6668], - forms[6668:6690], - forms[6690:6706], - forms[6706:6708], - forms[6708:6710], - forms[6710:6728], - forms[6728:6740], - forms[6740:6758], - forms[6758:6776], - forms[6776:6788], - forms[6788:6800], - forms[6800:6815], - forms[6815:6833], - forms[6833:6851], - forms[6851:6866], - forms[6866:6893], - forms[6893:6920], - forms[6920:6947], - forms[6947:6974], - forms[6974:7001], - forms[7001:7028], - forms[7028:7030], - forms[7030:7032], - forms[7032:7050], - forms[7050:7068], - forms[7068:7086], - forms[7086:7113], - forms[7113:7140], - forms[7140:7167], - forms[7167:7194], - forms[7194:7212], - forms[7212:7266], - forms[7266:7320], - forms[7320:7356], - forms[7356:7374], - forms[7374:7410], - forms[7410:7428], - forms[7428:7455], - forms[7455:7482], - forms[7482:7509], - forms[7509:7536], - forms[7536:7554], - forms[7554:7572], - forms[7572:7590], - forms[7590:7608], - forms[7608:7626], - forms[7626:7644], - forms[7644:7646], - forms[7646:7648], - forms[7648:7650], - forms[7650:7652], - forms[7652:7657], - forms[7657:7662], - forms[7662:7667], - forms[7667:7672], - forms[7672:7676], - forms[7676:7680], - forms[7680:7684], - forms[7684:7686], - forms[7686:7690], - forms[7690:7694], - forms[7694:7698], - forms[7698:7700], - forms[7700:7702], - forms[7702:7704], - forms[7704:7706], - forms[7706:7733], - forms[7733:7760], - forms[7760:7787], - forms[7787:7814], - forms[7814:7832], - forms[7832:7850], - forms[7850:7854], - forms[7854:7858], - forms[7858:7876], - forms[7876:7903], - forms[7903:7930], - forms[7930:7948], - forms[7948:7966], - forms[7966:7993], - forms[7993:8020], - forms[8020:8038], - forms[8038:8056], - forms[8056:8083], - forms[8083:8110], - forms[8110:8128], - forms[8128:8146], - forms[8146:8173], - forms[8173:8200], - forms[8200:8218], - forms[8218:8221], - forms[8221:8224], - forms[8224:8242], - forms[8242:8260], - forms[8260:8263], - forms[8263:8266], - forms[8266:8269], - forms[8269:8272], - forms[8272:8274], - forms[8274:8277], - forms[8277:8295], - forms[8295:8313], - forms[8313:8331], - forms[8331:8349], - forms[8349:8367], - forms[8367:8385], - forms[8385:8403], - forms[8403:8421], - forms[8421:8439], - forms[8439:8457], - forms[8457:8475], - forms[8475:8493], - forms[8493:8511], - forms[8511:8529], - forms[8529:8547], - forms[8547:8565], - forms[8565:8583], - forms[8583:8601], - forms[8601:8619], - forms[8619:8637], - forms[8637:8655], - forms[8655:8658], - forms[8658:8676], - forms[8676:8694], - forms[8694:8712], - forms[8712:8730], - forms[8730:8748], - forms[8748:8766], - forms[8766:8784], - forms[8784:8811], - forms[8811:8829], - forms[8829:8847], - forms[8847:8865], - forms[8865:8892], - forms[8892:8919], - forms[8919:8937], - forms[8937:8964], - forms[8964:8991], - forms[8991:9009], - forms[9009:9036], - forms[9036:9063], - forms[9063:9081], - forms[9081:9085], - forms[9085:9112], - forms[9112:9139], - forms[9139:9166], - forms[9166:9193], - forms[9193:9220], - forms[9220:9247], - forms[9247:9274], - forms[9274:9301], - forms[9301:9328], - forms[9328:9355], - forms[9355:9361], - forms[9361:9364], - forms[9364:9367], - forms[9367:9370], - forms[9370:9373], - forms[9373:9400], - forms[9400:9427], - forms[9427:9454], - forms[9454:9481], - forms[9481:9499], - forms[9499:9517], - forms[9517:9544], - forms[9544:9571], - forms[9571:9598], - forms[9598:9625], - forms[9625:9643], - forms[9643:9661], - forms[9661:9679], - forms[9679:9691], - forms[9691:9718], - forms[9718:9736], - forms[9736:9754], - forms[9754:9758], - forms[9758:9762], - forms[9762:9766], - forms[9766:9811], - forms[9811:9817], - forms[9817:9862], - forms[9862:9889], - forms[9889:9916], - forms[9916:9934], - forms[9934:9970], - forms[9970:10015], - forms[10015:10060], - forms[10060:10087], - forms[10087:10114], - forms[10114:10132], - forms[10132:10168], - forms[10168:10213], - forms[10213:10219], - forms[10219:10264], - forms[10264:10291], - forms[10291:10318], - forms[10318:10336], - forms[10336:10372], - forms[10372:10390], - forms[10390:10417], - forms[10417:10444], - forms[10444:10462], - forms[10462:10480], - forms[10480:10498], - forms[10498:10516], - forms[10516:10534], - forms[10534:10561], - forms[10561:10588], - forms[10588:10592], - forms[10592:10604], - forms[10604:10622], - forms[10622:10640], - forms[10640:10652], - forms[10652:10664], - forms[10664:10682], - forms[10682:10700], - forms[10700:10712], - forms[10712:10730], - forms[10730:10757], - forms[10757:10784], - forms[10784:10802], - forms[10802:10820], - forms[10820:10847], - forms[10847:10874], - forms[10874:10892], - forms[10892:10896], - forms[10896:10923], - forms[10923:10950], - forms[10950:10980], - forms[10980:11010], - forms[11010:11019], - forms[11019:11028], - forms[11028:11055], - forms[11055:11082], - forms[11082:11088], - forms[11088:11094], - forms[11094:11106], - forms[11106:11118], - forms[11118:11127], - forms[11127:11136], - forms[11136:11140], - forms[11140:11142], - forms[11142:11169], - forms[11169:11196], - forms[11196:11202], - forms[11202:11208], - forms[11208:11238], - forms[11238:11268], - forms[11268:11277], - forms[11277:11286], - forms[11286:11290], - forms[11290:11294], - forms[11294:11296], - forms[11296:11298], - forms[11298:11325], - forms[11325:11352], - forms[11352:11358], - forms[11358:11364], - forms[11364:11376], - forms[11376:11388], - forms[11388:11397], - forms[11397:11406], - forms[11406:11410], - forms[11410:11412], - forms[11412:11442], - forms[11442:11472], - forms[11472:11481], - forms[11481:11490], - forms[11490:11493], - forms[11493:11496], - forms[11496:11499], - forms[11499:11502], - forms[11502:11520], - forms[11520:11538], - forms[11538:11556], - forms[11556:11574], - forms[11574:11601], - forms[11601:11628], - forms[11628:11658], - forms[11658:11688], - forms[11688:11697], - forms[11697:11706], - forms[11706:11707], - forms[11707:11737], - forms[11737:11767], - forms[11767:11776], - forms[11776:11785], - forms[11785:11789], - forms[11789:11793], - forms[11793:11796], - forms[11796:11799], - forms[11799:11826], - forms[11826:11853], - forms[11853:11880], - forms[11880:11907], - forms[11907:11934], - forms[11934:11961], - forms[11961:11962], + forms[5099:5100], + forms[5100:5104], + forms[5104:5108], + forms[5108:5138], + forms[5138:5168], + forms[5168:5177], + forms[5177:5186], + forms[5186:5216], + forms[5216:5246], + forms[5246:5255], + forms[5255:5264], + forms[5264:5291], + forms[5291:5318], + forms[5318:5322], + forms[5322:5340], + forms[5340:5346], + forms[5346:5373], + forms[5373:5400], + forms[5400:5406], + forms[5406:5433], + forms[5433:5460], + forms[5460:5487], + forms[5487:5514], + forms[5514:5515], + forms[5515:5517], + forms[5517:5519], + forms[5519:5520], + forms[5520:5522], + forms[5522:5524], + forms[5524:5526], + forms[5526:5528], + forms[5528:5531], + forms[5531:5534], + forms[5534:5537], + forms[5537:5540], + forms[5540:5545], + forms[5545:5553], + forms[5553:5571], + forms[5571:5589], + forms[5589:5597], + forms[5597:5624], + forms[5624:5651], + forms[5651:5655], + forms[5655:5685], + forms[5685:5715], + forms[5715:5724], + forms[5724:5733], + forms[5733:5760], + forms[5760:5787], + forms[5787:5805], + forms[5805:5832], + forms[5832:5859], + forms[5859:5877], + forms[5877:5904], + forms[5904:5922], + forms[5922:5949], + forms[5949:5967], + forms[5967:5985], + forms[5985:6012], + forms[6012:6039], + forms[6039:6057], + forms[6057:6075], + forms[6075:6093], + forms[6093:6111], + forms[6111:6129], + forms[6129:6147], + forms[6147:6151], + forms[6151:6178], + forms[6178:6182], + forms[6182:6209], + forms[6209:6236], + forms[6236:6263], + forms[6263:6281], + forms[6281:6299], + forms[6299:6303], + forms[6303:6321], + forms[6321:6348], + forms[6348:6375], + forms[6375:6393], + forms[6393:6397], + forms[6397:6401], + forms[6401:6428], + forms[6428:6455], + forms[6455:6458], + forms[6458:6461], + forms[6461:6488], + forms[6488:6515], + forms[6515:6521], + forms[6521:6533], + forms[6533:6551], + forms[6551:6567], + forms[6567:6589], + forms[6589:6611], + forms[6611:6627], + forms[6627:6629], + forms[6629:6631], + forms[6631:6647], + forms[6647:6669], + forms[6669:6691], + forms[6691:6707], + forms[6707:6709], + forms[6709:6711], + forms[6711:6729], + forms[6729:6741], + forms[6741:6759], + forms[6759:6777], + forms[6777:6789], + forms[6789:6801], + forms[6801:6816], + forms[6816:6834], + forms[6834:6852], + forms[6852:6867], + forms[6867:6894], + forms[6894:6921], + forms[6921:6948], + forms[6948:6975], + forms[6975:7002], + forms[7002:7029], + forms[7029:7031], + forms[7031:7033], + forms[7033:7051], + forms[7051:7069], + forms[7069:7087], + forms[7087:7114], + forms[7114:7141], + forms[7141:7168], + forms[7168:7195], + forms[7195:7213], + forms[7213:7267], + forms[7267:7321], + forms[7321:7357], + forms[7357:7375], + forms[7375:7411], + forms[7411:7429], + forms[7429:7456], + forms[7456:7483], + forms[7483:7510], + forms[7510:7537], + forms[7537:7555], + forms[7555:7573], + forms[7573:7591], + forms[7591:7609], + forms[7609:7627], + forms[7627:7645], + forms[7645:7647], + forms[7647:7649], + forms[7649:7651], + forms[7651:7653], + forms[7653:7658], + forms[7658:7663], + forms[7663:7668], + forms[7668:7673], + forms[7673:7677], + forms[7677:7681], + forms[7681:7685], + forms[7685:7687], + forms[7687:7691], + forms[7691:7695], + forms[7695:7699], + forms[7699:7701], + forms[7701:7703], + forms[7703:7705], + forms[7705:7707], + forms[7707:7734], + forms[7734:7761], + forms[7761:7788], + forms[7788:7815], + forms[7815:7833], + forms[7833:7851], + forms[7851:7855], + forms[7855:7859], + forms[7859:7877], + forms[7877:7904], + forms[7904:7931], + forms[7931:7949], + forms[7949:7967], + forms[7967:7994], + forms[7994:8021], + forms[8021:8039], + forms[8039:8057], + forms[8057:8084], + forms[8084:8111], + forms[8111:8129], + forms[8129:8147], + forms[8147:8174], + forms[8174:8201], + forms[8201:8219], + forms[8219:8222], + forms[8222:8225], + forms[8225:8243], + forms[8243:8261], + forms[8261:8264], + forms[8264:8267], + forms[8267:8270], + forms[8270:8273], + forms[8273:8275], + forms[8275:8278], + forms[8278:8296], + forms[8296:8314], + forms[8314:8332], + forms[8332:8350], + forms[8350:8368], + forms[8368:8386], + forms[8386:8404], + forms[8404:8422], + forms[8422:8440], + forms[8440:8458], + forms[8458:8476], + forms[8476:8494], + forms[8494:8512], + forms[8512:8530], + forms[8530:8548], + forms[8548:8566], + forms[8566:8584], + forms[8584:8602], + forms[8602:8620], + forms[8620:8638], + forms[8638:8656], + forms[8656:8659], + forms[8659:8677], + forms[8677:8695], + forms[8695:8713], + forms[8713:8731], + forms[8731:8749], + forms[8749:8767], + forms[8767:8785], + forms[8785:8812], + forms[8812:8830], + forms[8830:8848], + forms[8848:8866], + forms[8866:8893], + forms[8893:8920], + forms[8920:8938], + forms[8938:8965], + forms[8965:8992], + forms[8992:9010], + forms[9010:9037], + forms[9037:9064], + forms[9064:9082], + forms[9082:9086], + forms[9086:9113], + forms[9113:9140], + forms[9140:9167], + forms[9167:9194], + forms[9194:9221], + forms[9221:9248], + forms[9248:9275], + forms[9275:9302], + forms[9302:9329], + forms[9329:9356], + forms[9356:9362], + forms[9362:9365], + forms[9365:9368], + forms[9368:9371], + forms[9371:9374], + forms[9374:9401], + forms[9401:9428], + forms[9428:9455], + forms[9455:9482], + forms[9482:9500], + forms[9500:9518], + forms[9518:9545], + forms[9545:9572], + forms[9572:9599], + forms[9599:9626], + forms[9626:9644], + forms[9644:9662], + forms[9662:9680], + forms[9680:9692], + forms[9692:9719], + forms[9719:9737], + forms[9737:9755], + forms[9755:9759], + forms[9759:9763], + forms[9763:9767], + forms[9767:9812], + forms[9812:9818], + forms[9818:9863], + forms[9863:9890], + forms[9890:9917], + forms[9917:9935], + forms[9935:9971], + forms[9971:10016], + forms[10016:10061], + forms[10061:10088], + forms[10088:10115], + forms[10115:10133], + forms[10133:10169], + forms[10169:10214], + forms[10214:10220], + forms[10220:10265], + forms[10265:10292], + forms[10292:10319], + forms[10319:10337], + forms[10337:10373], + forms[10373:10391], + forms[10391:10418], + forms[10418:10445], + forms[10445:10463], + forms[10463:10481], + forms[10481:10499], + forms[10499:10517], + forms[10517:10535], + forms[10535:10562], + forms[10562:10589], + forms[10589:10593], + forms[10593:10605], + forms[10605:10623], + forms[10623:10641], + forms[10641:10653], + forms[10653:10665], + forms[10665:10683], + forms[10683:10701], + forms[10701:10713], + forms[10713:10731], + forms[10731:10758], + forms[10758:10785], + forms[10785:10803], + forms[10803:10821], + forms[10821:10848], + forms[10848:10875], + forms[10875:10893], + forms[10893:10897], + forms[10897:10924], + forms[10924:10951], + forms[10951:10981], + forms[10981:11011], + forms[11011:11020], + forms[11020:11029], + forms[11029:11056], + forms[11056:11083], + forms[11083:11089], + forms[11089:11095], + forms[11095:11107], + forms[11107:11119], + forms[11119:11128], + forms[11128:11137], + forms[11137:11141], + forms[11141:11143], + forms[11143:11170], + forms[11170:11197], + forms[11197:11203], + forms[11203:11209], + forms[11209:11239], + forms[11239:11269], + forms[11269:11278], + forms[11278:11287], + forms[11287:11291], + forms[11291:11295], + forms[11295:11297], + forms[11297:11299], + forms[11299:11326], + forms[11326:11353], + forms[11353:11359], + forms[11359:11365], + forms[11365:11377], + forms[11377:11389], + forms[11389:11398], + forms[11398:11407], + forms[11407:11411], + forms[11411:11413], + forms[11413:11443], + forms[11443:11473], + forms[11473:11482], + forms[11482:11491], + forms[11491:11494], + forms[11494:11497], + forms[11497:11500], + forms[11500:11503], + forms[11503:11521], + forms[11521:11539], + forms[11539:11557], + forms[11557:11575], + forms[11575:11602], + forms[11602:11629], + forms[11629:11659], + forms[11659:11689], + forms[11689:11698], + forms[11698:11707], + forms[11707:11708], + forms[11708:11738], + forms[11738:11768], + forms[11768:11777], + forms[11777:11786], + forms[11786:11790], + forms[11790:11794], + forms[11794:11797], + forms[11797:11800], + forms[11800:11827], + forms[11827:11854], + forms[11854:11881], + forms[11881:11908], + forms[11908:11935], + forms[11935:11962], forms[11962:11963], - forms[11963:11965], - forms[11965:11967], - forms[11967:11969], - forms[11969:11971], - forms[11971:11974], - forms[11974:11979], - forms[11979:11984], - forms[11984:11989], - forms[11989:11990], + forms[11963:11964], + forms[11964:11966], + forms[11966:11968], + forms[11968:11970], + forms[11970:11972], + forms[11972:11975], + forms[11975:11980], + forms[11980:11985], + forms[11985:11990], forms[11990:11991], - forms[11991:11997], - forms[11997:12005], - forms[12005:12007], - forms[12007:12009], - forms[12009:12017], - forms[12017:12025], + forms[11991:11992], + forms[11992:11998], + forms[11998:12006], + forms[12006:12008], + forms[12008:12010], + forms[12010:12018], + forms[12018:12026], }