Grammalecte  Changes On Branch adee0f51ee98f705

Changes In Branch multid Through [adee0f51ee] Excluding Merge-Ins

This is equivalent to a diff from d7e8aec548 to adee0f51ee

2018-03-07
17:32
merge trunk check-in: a693df4168 user: olr tags: multid
09:22
[fx][bug] spelling: fix display of suggestions from multiple dictionaries check-in: 5603c72dbb user: olr tags: trunk, fx
2018-03-06
21:14
[lo] lexicon editor: ui update check-in: adee0f51ee user: olr tags: lo, multid
18:16
[fx][fr][js] générateur de conjugaisons: nouvelles fonctions check-in: 0230771aa5 user: olr tags: fr, fx, multid
11:34
merge trunk check-in: 7ee6b583e8 user: olr tags: multid
11:33
[build][tb] move the Thunberbird debug profile somewhere else check-in: d7e8aec548 user: olr tags: trunk, build, tb
2018-03-05
15:47
[fx] fix gc options loading at startup (at least for Chrome) check-in: 0734ff8f6b user: olr tags: trunk, fx

Modified gc_core/py/oxt/Grammalecte.py from [1e4211990b] to [6b2cfc5228].

1
2
3
4
5
6
7

8
9
10
11
12
13
14
15
16

17
18
19
20
21
22
23

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
-






+









+







# -*- encoding: UTF-8 -*-
# Grammalecte for Writer
# License: MPL 2
# A derivative work of Lightproof from László Németh (http://cgit.freedesktop.org/libreoffice/lightproof/)

import uno
import unohelper
import json
import sys
import traceback
from collections import deque

from com.sun.star.linguistic2 import XProofreader, XSupportedLocales
from com.sun.star.linguistic2 import ProofreadingResult
from com.sun.star.lang import XServiceInfo, XServiceName, XServiceDisplayName
from com.sun.star.lang import Locale

import helpers
import grammalecte.${lang} as gce
#import lightproof_handler_${implname} as opt_handler
import Options


class Grammalecte (unohelper.Base, XProofreader, XServiceInfo, XServiceName, XServiceDisplayName, XSupportedLocales):

34
35
36
37
38
39
40


41
42
43
44
45
46

47
48
49
50
51
52
53
54
35
36
37
38
39
40
41
42
43
44
45
46
47
48

49

50
51
52
53
54
55
56







+
+





-
+
-







        xCurCtx = uno.getComponentContext()
        # init
        gce.load("Writer")
        # GC options
        # opt_handler.load(xCurCtx)
        dOpt = Options.load(xCurCtx)
        gce.setOptions(dOpt)
        # dictionaries options
        self.loadUserDictionaries()
        # store for results of big paragraphs
        self.dResult = {}
        self.nMaxRes = 1500
        self.lLastRes = deque(maxlen=self.nMaxRes)
        self.nRes = 0
        #oSpellChecker = gce.getSpellChecker();

        #oSpellChecker.setPersonalDictionary("fr.personal.json")

    # XServiceName method implementations
    def getServiceName (self):
        return self.ImplementationName

    # XServiceInfo method implementations
    def getImplementationName (self):
132
133
134
135
136
137
138












139
140
141
142
143
144
145
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159







+
+
+
+
+
+
+
+
+
+
+
+







    # XServiceDisplayName
    def getServiceDisplayName (self, aLocale):
        return gce.name

    # Grammalecte
    def getSpellChecker (self):
        return gce.getSpellChecker()

    def loadUserDictionaries (self):
        try:
            xSettingNode = helpers.getConfigSetting("/org.openoffice.Lightproof_grammalecte/Other/", False)
            xChild = xSettingNode.getByName("o_${lang}")
            if xChild.getPropertyValue("use_personal_dic"):
                sJSON = xChild.getPropertyValue("personal_dic")
                if sJSON:
                    oSpellChecker = gce.getSpellChecker();
                    oSpellChecker.setPersonalDictionary(json.loads(sJSON))
        except:
            traceback.print_exc()


g_ImplementationHelper = unohelper.ImplementationHelper()
g_ImplementationHelper.addImplementation(Grammalecte, "org.openoffice.comp.pyuno.Lightproof."+gce.pkg, ("com.sun.star.linguistic2.Proofreader",),)

# g_ImplementationHelper.addImplementation( opt_handler.LightproofOptionsEventHandler, \
#     "org.openoffice.comp.pyuno.LightproofOptionsEventHandler." + gce.pkg, ("com.sun.star.awt.XContainerWindowEventHandler",),)

Modified gc_core/py/oxt/OptionsDialog.xcs from [bfbbfee5a6] to [3732fcdcec].

12
13
14
15
16
17
18












19
20
21
22
23
24




25
26
27
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43







+
+
+
+
+
+
+
+
+
+
+
+






+
+
+
+



    <templates>
        <group oor:name="${lang}">
            <info>
                <desc>The data for one leaf.</desc>
            </info>
            ${xcs_options}
        </group>

        <group oor:name="o_${lang}">
            <info>
                <desc>The data for one leaf.</desc>
            </info>
            <prop oor:name="use_graphspell" oor:type="xs:int"><value>1</value></prop>
            <prop oor:name="use_graphspell_sugg" oor:type="xs:int"><value>1</value></prop>
            <prop oor:name="use_extended_dic" oor:type="xs:int"><value>0</value></prop>
            <prop oor:name="use_personal_dic" oor:type="xs:int"><value>1</value></prop>
            <prop oor:name="extended_dic" oor:type="xs:string"><value></value></prop>
            <prop oor:name="personal_dic" oor:type="xs:string"><value></value></prop>
        </group>
    </templates>

    <component>
        <group oor:name="Leaves">
            <node-ref oor:name="${lang}" oor:node-type="${lang}" />
        </group>

        <group oor:name="Other">
            <node-ref oor:name="o_${lang}" oor:node-type="o_${lang}" />
        </group>
    </component>

</oor:component-schema>

Added gc_core/py/oxt/helpers.py version [f3ef6493bc].











































































1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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
74
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
# Helpers for LibreOffice extension

import os
import traceback

import uno

from com.sun.star.beans import PropertyValue
from com.sun.star.uno import RuntimeException as _rtex


def xray (myObject):
    "XRay - API explorer"
    try:
        sm = uno.getComponentContext().ServiceManager
        mspf = sm.createInstanceWithContext("com.sun.star.script.provider.MasterScriptProviderFactory", uno.getComponentContext())
        scriptPro = mspf.createScriptProvider("")
        xScript = scriptPro.getScript("vnd.sun.star.script:XrayTool._Main.Xray?language=Basic&location=application")
        xScript.invoke((myObject,), (), ())
        return
    except:
        raise _rtex("\nBasic library Xray is not installed", uno.getComponentContext())


def mri (ctx, xTarget):
    "MRI - API Explorer"
    try:
        xMri = ctx.ServiceManager.createInstanceWithContext("mytools.Mri", ctx)
        xMri.inspect(xTarget)
    except:
        raise _rtex("\nPython extension MRI is not installed", uno.getComponentContext())


def getConfigSetting (sNodeConfig, bUpdate=False):
    "get a configuration node"
    # example: xNode = getConfigSetting("/org.openoffice.Office.Common/Path/Current", False)
    xSvMgr = uno.getComponentContext().ServiceManager
    xConfigProvider = xSvMgr.createInstanceWithContext("com.sun.star.configuration.ConfigurationProvider", uno.getComponentContext())
    xPropertyValue = uno.createUnoStruct("com.sun.star.beans.PropertyValue")
    xPropertyValue.Name = "nodepath"
    xPropertyValue.Value = sNodeConfig
    if bUpdate:
        sService = "com.sun.star.configuration.ConfigurationUpdateAccess"
    else:
        sService = "com.sun.star.configuration.ConfigurationAccess"
    return xConfigProvider.createInstanceWithArguments(sService, (xPropertyValue,)) # return xNode


def printServices (o):
    for s in o.getAvailableServiceNames():
        print(' > '+s)


def getWindowSize ():
    "return main window size"
    xCurCtx = uno.getComponentContext()
    xDesktop = xCurCtx.getServiceManager().createInstanceWithContext('com.sun.star.frame.Desktop', xCurCtx)
    xContainerWindow = xDesktop.getCurrentComponent().CurrentController.Frame.ContainerWindow
    xWindowSize = xContainerWindow.convertSizeToLogic(xContainerWindow.Size, uno.getConstantByName("com.sun.star.util.MeasureUnit.POINT"))
    #print(xContainerWindow.Size.Width, ">", xWindowSize.Width)
    #print(xContainerWindow.Size.Height, ">", xWindowSize.Height)
    xWindowSize.Width = xWindowSize.Width * 0.666
    xWindowSize.Height = xWindowSize.Height * 0.666
    return xWindowSize


def getAbsolutePathOf (sPath=""):
    xDefaultContext = uno.getComponentContext().ServiceManager.DefaultContext
    xPackageInfoProvider = xDefaultContext.getValueByName("/singletons/com.sun.star.deployment.PackageInformationProvider")
    sFullPath = xPackageInfoProvider.getPackageLocation("French.linguistic.resources.from.Dicollecte.by.OlivierR")
    if sPath and not sPath.startswith("/"):
        sPath = "/" + sPath
    sFullPath = sFullPath[8:] + sPath
    return os.path.abspath(sFullPath)

Modified gc_lang/fr/config.ini from [eb081b50e5] to [5898e7ef09].

71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86





87
88
89
90
91
92
93
71
72
73
74
75
76
77

78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97







-








+
+
+
+
+







oxt/_img/logo120_text.png = img/logo120_text.png
oxt/_img/LaMouette_small.png = img/LaMouette_small.png
oxt/_img/Algoo_logo.png = img/Algoo_logo.png
oxt/_img/grammalecte_16.bmp = img/grammalecte_16.bmp
oxt/_img/french_flag_16.bmp = img/french_flag_16.bmp
# AppLauncher
oxt/AppLauncher.py = AppLauncher.py
oxt/helpers.py = pythonpath/helpers.py
# About
oxt/About/About.py = pythonpath/About.py
oxt/About/ab_strings.py = pythonpath/ab_strings.py
# Dictionaries
oxt/Dictionnaires/dictionaries = dictionaries
oxt/Dictionnaires/dictionaries.xcu = dictionaries.xcu
oxt/Dictionnaires/DictionarySwitcher.py = pythonpath/DictionarySwitcher.py
oxt/Dictionnaires/ds_strings.py = pythonpath/ds_strings.py
# Dictionary Options
oxt/DictOptions/DictOptions.py = pythonpath/DictOptions.py
oxt/DictOptions/do_strings.py = pythonpath/do_strings.py
oxt/DictOptions/LexiconEditor.py = pythonpath/LexiconEditor.py
oxt/DictOptions/lxe_strings.py = pythonpath/lxe_strings.py
# ContextMenu
oxt/ContextMenu/ContextMenu.py = ContextMenu.py
oxt/ContextMenu/jobs.xcu = config/jobs.xcu
# TextFormatter
oxt/TextFormatter/TextFormatter.py = pythonpath/TextFormatter.py
oxt/TextFormatter/tf_strings.py = pythonpath/tf_strings.py
oxt/TextFormatter/tf_options.py = pythonpath/tf_options.py

Added gc_lang/fr/modules-js/conj_generator.js version [9ad4d6b546].



































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
//  JavaScript

/*
    Conjugation generator
    beta stage, unfinished, the root for a new way to generate flexions…
*/

"use strict";


var conj_generator = {

    conjugate: function (sVerb, sVerbTag="i_____a", bVarPpas=true) {
        let lConj = [];
        let cGroup = this.getVerbGroupChar(sVerb);
        for (let [nCut, sAdd, sFlexTags, sPattern] of this.getConjRules(sVerb)) {
            if (!sPattern || RegExp(sPattern).test(sLemma)) {
                lConj.push( [sVerb.slice(0, -nCut) + sAdd, ":V" + cGroup + "_" + sVerbTag + sFlexTags] );
            }
        }
        return lConj;
    },

    getVerbGroupChar: function (sVerb) {
        sVerb = sVerb.toLowerCase();
        if (sVerb.endsWith("er")) {
            return "1";
        }
        if (sVerb.endsWith("ir")) {
            return "2";
        }
        if (sVerb == "être" || sVerb == "avoir") {
            return "0";
        }
        if (sVerb.endsWith("re")) {
            return "3";
        }
        return "4";
    },

    getConjRules: function (sVerb, bVarPpas=true, nGroup=2) {
        let lConj = null;
        let sVarPpas = (bVarPpas) ? "true" : "false";
        if (sVerb.endsWith("er")) {
            // premier groupe, conjugaison en fonction de la terminaison du lemme
            // 5 lettres
            if (sVerb.slice(-5) in this.oConj["V1"]) {
                lConj = this.oConj["V1"][sVerb.slice(-5)];
            }
            // 4 lettres
            else if (sVerb.slice(-4) in this.oConj["V1"]) {
                if (sVerb.endsWith("eler") || sVerb.endsWith("eter")) {
                    lConj = this.oConj["V1"][sVerb.slice(-4)]["1"];
                }
                lConj = this.oConj["V1"][sVerb.slice(-4)];
            }
            // 3 lettres
            else if (sVerb.slice(-3) in this.oConj["V1"]) {
                lConj = this.oConj["V1"][sVerb.slice(-3)];
            }
            else {
                lConj = this.oConj["V1"]["er"];
            }
            lConj.push(...this.oConj["V1_ppas"][sVarPpas]);
        } else if (sVerb.endsWith("ir") && nGroup <= 2) {
            // deuxième groupe
            lConj = this.oConj["V2"];
            lConj.push(...this.oConj["V2_ppas"][sVarPpas]);
        } else {
            // TODO: troisième groupe
            lConj = [ [0, "", ":Y/*", false] ];
        }
        return lConj;
    },

    oConj: {
        "V1_ppas": {
            "true": [
                [2,     "é",           ":Q:A:1ŝ:m:s/*",     false],
                [2,     "és",          ":Q:A:m:p/*",        false],
                [2,     "ée",          ":Q:A:f:s/*",        false],
                [2,     "ées",         ":Q:A:f:p/*",        false],
            ],
            "false": [
                [2,     "é",           ":Q:e:i/*",          false],
            ]
        },

        "V2_ppas": {
            "true": [
                [2,     "i",           ":Q:A:m:s/*",        false],
                [2,     "is",          ":Q:A:m:p/*",        false],
                [2,     "ie",          ":Q:A:f:s/*",        false],
                [2,     "ies",         ":Q:A:f:p/*",        false],
            ],
            "false": [
                [2,     "i",           ":Q:e:i/*",          false],
            ]
        },

        // deuxième groupe (le seul groupe régulier)
        "V2": [
            [2,     "ir",           ":Y/*",             false],
            [2,     "issant",       ":P/*",             false],
            [2,     "is",           ":Ip:Is:1s:2s/*",   false],
            [2,     "it",           ":Ip:Is:3s/*",      false],
            [2,     "issons",       ":Ip:1p/*",         false],
            [2,     "issez",        ":Ip:2p/*",         false],
            [2,     "issent",       ":Ip:Sp:Sq:3p/*",   false],
            [2,     "issais",       ":Iq:1s:2s/*",      false],
            [2,     "issait",       ":Iq:3s/*",         false],
            [2,     "issions",      ":Iq:Sp:Sq:1p/*",   false],
            [2,     "issiez",       ":Iq:Sp:Sq:2p/*",   false],
            [2,     "issaient",     ":Iq:3p/*",         false],
            [2,     "îmes",         ":Is:1p/*",         false],
            [2,     "îtes",         ":Is:2p/*",         false],
            [2,     "irent",        ":Is:3p!/*",        false],
            [2,     "irai",         ":If:1s/*",         false],
            [2,     "iras",         ":If:2s/*",         false],
            [2,     "ira",          ":If:3s/*",         false],
            [2,     "irons",        ":If:1p/*",         false],
            [2,     "irez",         ":If:2p/*",         false],
            [2,     "iront",        ":If:3p!/*",        false],
            [2,     "irais",        ":K:1s:2s/*",       false],
            [2,     "irait",        ":K:3s/*",          false],
            [2,     "irions",       ":K:1p/*",          false],
            [2,     "iriez",        ":K:2p/*",          false],
            [2,     "iraient",      ":K:3p/*",          false],
            [2,     "isse",         ":Sp:Sq:1s/*",      false],
            [2,     "isses",        ":Sp:Sq:2s/*",      false],
            [2,     "isse",         ":Sp:3s/*",         false],
            [2,     "ît",           ":Sq:3s/*",         false],
            [2,     "is",           ":E:2s/*",          false],
            [2,     "issons",       ":E:1p/*",          false],
            [2,     "issez",        ":E:2p/*",          false]
        ],
        
        // premier groupe (bien plus irrégulier que prétendu)
        "V1": {
            // a
            // verbes en -er, -ger, -yer, -cer
            "er": [
                [2,      "er",        ":Y/*",               false],
                [2,      "ant",       ":P/*",               false],
                [2,      "e",         ":Ip:Sp:1s:3s/*",     false],
                [2,      "è",         ":Ip:1ś/*",           false],
                [2,      "es",        ":Ip:Sp:2s/*",        false],
                [2,      "ons",       ":Ip:1p/*",           false],
                [2,      "ez",        ":Ip:2p/*",           false],
                [2,      "ent",       ":Ip:Sp:3p/*",        false],
                [2,      "ais",       ":Iq:1s:2s/*",        false],
                [2,      "ait",       ":Iq:3s/*",           false],
                [2,      "ions",      ":Iq:Sp:1p/*",        false],
                [2,      "iez",       ":Iq:Sp:2p/*",        false],
                [2,      "aient",     ":Iq:3p/*",           false],
                [2,      "ai",        ":Is:1s/*",           false],
                [2,      "as",        ":Is:2s/*",           false],
                [2,      "a",         ":Is:3s/*",           false],
                [2,      "âmes",      ":Is:1p/*",           false],
                [2,      "âtes",      ":Is:2p/*",           false],
                [2,      "èrent",     ":Is:3p!/*",          false],
                [2,      "erai",      ":If:1s/*",           false],
                [2,      "eras",      ":If:2s/*",           false],
                [2,      "era",       ":If:3s/*",           false],
                [2,      "erons",     ":If:1p/*",           false],
                [2,      "erez",      ":If:2p/*",           false],
                [2,      "eront",     ":If:3p!/*",          false],
                [2,      "erais",     ":K:1s:2s/*",         false],
                [2,      "erait",     ":K:3s/*",            false],
                [2,      "erions",    ":K:1p/*",            false],
                [2,      "eriez",     ":K:2p/*",            false],
                [2,      "eraient",   ":K:3p/*",            false],
                [2,      "asse",      ":Sq:1s/*",           false],
                [2,      "asses",     ":Sq:2s/*",           false],
                [2,      "ât",        ":Sq:3s/*",           false],
                [2,      "assions",   ":Sq:1p/*",           false],
                [2,      "assiez",    ":Sq:2p/*",           false],
                [2,      "assent",    ":Sq:3p/*",           false],
                [2,      "e",         ":E:2s/*",            false],
                [2,      "ons",       ":E:1p/*",            false],
                [2,      "ez",        ":E:2p/*",            false]
            ],

            "ger": [
                [2,      "er",        ":Y/*",               false],
                [2,      "eant",      ":P/*",               false],
                [2,      "e",         ":Ip:Sp:1s:3s/*",     false],
                [2,      "è",         ":Ip:1ś/*",           false],
                [2,      "es",        ":Ip:Sp:2s/*",        false],
                [2,      "eons",      ":Ip:1p/*",           false],
                [2,      "ez",        ":Ip:2p/*",           false],
                [2,      "ent",       ":Ip:Sp:3p/*",        false],
                [2,      "eais",      ":Iq:1s:2s/*",        false],
                [2,      "eait",      ":Iq:3s/*",           false],
                [2,      "ions",      ":Iq:Sp:1p/*",        false],
                [2,      "iez",       ":Iq:Sp:2p/*",        false],
                [2,      "eaient",    ":Iq:3p/*",           false],
                [2,      "eai",       ":Is:1s/*",           false],
                [2,      "eas",       ":Is:2s/*",           false],
                [2,      "ea",        ":Is:3s/*",           false],
                [2,      "eâmes",     ":Is:1p/*",           false],
                [2,      "eâtes",     ":Is:2p/*",           false],
                [2,      "èrent",     ":Is:3p!/*",          false],
                [2,      "erai",      ":If:1s/*",           false],
                [2,      "eras",      ":If:2s/*",           false],
                [2,      "era",       ":If:3s/*",           false],
                [2,      "erons",     ":If:1p/*",           false],
                [2,      "erez",      ":If:2p/*",           false],
                [2,      "eront",     ":If:3p!/*",          false],
                [2,      "erais",     ":K:1s:2s/*",         false],
                [2,      "erait",     ":K:3s/*",            false],
                [2,      "erions",    ":K:1p/*",            false],
                [2,      "eriez",     ":K:2p/*",            false],
                [2,      "eraient",   ":K:3p/*",            false],
                [2,      "easse",     ":Sq:1s/*",           false],
                [2,      "easses",    ":Sq:2s/*",           false],
                [2,      "eât",       ":Sq:3s/*",           false],
                [2,      "eassions",  ":Sq:1p/*",           false],
                [2,      "eassiez",   ":Sq:2p/*",           false],
                [2,      "eassent",   ":Sq:3p/*",           false],
                [2,      "e",         ":E:2s/*",            false],
                [2,      "eons",      ":E:1p/*",            false],
                [2,      "ez",        ":E:2p/*",            false]
            ],

            "cer": [
                [2,      "er",        ":Y/*",               false],
                [3,      "çant",      ":P/*",               false],
                [2,      "e",         ":Ip:Sp:1s:3s/*",     false],
                [2,      "è",         ":Ip:1ś/*",           false],
                [2,      "es",        ":Ip:Sp:2s/*",        false],
                [3,      "çons",      ":Ip:1p/*",           false],
                [2,      "ez",        ":Ip:2p/*",           false],
                [2,      "ent",       ":Ip:Sp:3p/*",        false],
                [3,      "çais",      ":Iq:1s:2s/*",        false],
                [3,      "çait",      ":Iq:3s/*",           false],
                [2,      "ions",      ":Iq:Sp:1p/*",        false],
                [2,      "iez",       ":Iq:Sp:2p/*",        false],
                [3,      "çaient",    ":Iq:3p/*",           false],
                [3,      "çai",       ":Is:1s/*",           false],
                [3,      "ças",       ":Is:2s/*",           false],
                [3,      "ça",        ":Is:3s/*",           false],
                [3,      "çâmes",     ":Is:1p/*",           false],
                [3,      "çâtes",     ":Is:2p/*",           false],
                [2,      "èrent",     ":Is:3p!/*",          false],
                [2,      "erai",      ":If:1s/*",           false],
                [2,      "eras",      ":If:2s/*",           false],
                [2,      "era",       ":If:3s/*",           false],
                [2,      "erons",     ":If:1p/*",           false],
                [2,      "erez",      ":If:2p/*",           false],
                [2,      "eront",     ":If:3p!/*",          false],
                [2,      "erais",     ":K:1s:2s/*",         false],
                [2,      "erait",     ":K:3s/*",            false],
                [2,      "erions",    ":K:1p/*",            false],
                [2,      "eriez",     ":K:2p/*",            false],
                [2,      "eraient",   ":K:3p/*",            false],
                [3,      "çasse",     ":Sq:1s/*",           false],
                [3,      "çasses",    ":Sq:2s/*",           false],
                [3,      "çât",       ":Sq:3s/*",           false],
                [3,      "çassions",  ":Sq:1p/*",           false],
                [3,      "çassiez",   ":Sq:2p/*",           false],
                [3,      "çassent",   ":Sq:3p/*",           false],
                [2,      "e",         ":E:2s/*",            false],
                [3,      "çons",      ":E:1p/*",            false],
                [2,      "ez",        ":E:2p/*",            false]
            ],

            "yer": [
                [2,     "er",         ":Y/*",               false],
                [2,     "ant",        ":P/*",               false],
                [3,     "ye",         ":Ip:Sp:1s:3s/*",     "[^ou]yer$"],
                [3,     "ie",         ":Ip:Sp:1s:3s/*",     "[aou]yer$"],
                [2,     "è",          ":Ip:1ś/*",           false],
                [3,     "yes",        ":Ip:Sp:2s/*",        "[^ou]yer$"],
                [3,     "ies",        ":Ip:Sp:2s/*",        "[aou]yer$"],
                [2,     "ons",        ":Ip:1p/*",           false],
                [2,     "ez",         ":Ip:2p/*",           false],
                [3,     "yent",       ":Ip:Sp:3p/*",        "[^ou]yer$"],
                [3,     "ient",       ":Ip:Sp:3p/*",        "[aou]yer$"],
                [2,     "ais",        ":Iq:1s:2s/*",        false],
                [2,     "ait",        ":Iq:3s/*",           false],
                [2,     "ions",       ":Iq:Sp:1p/*",        false],
                [2,     "iez",        ":Iq:Sp:2p/*",        false],
                [2,     "aient",      ":Iq:3p/*",           false],
                [2,     "ai",         ":Is:1s/*",           false],
                [2,     "as",         ":Is:2s/*",           false],
                [2,     "a",          ":Is:3s/*",           false],
                [2,     "âmes",       ":Is:1p/*",           false],
                [2,     "âtes",       ":Is:2p/*",           false],
                [2,     "èrent",      ":Is:3p!/*",          false],
                [3,     "yerai",      ":If:1s/*",           "[^ou]yer$"],
                [3,     "ierai",      ":If:1s/*",           "[aou]yer$"],
                [3,     "yeras",      ":If:2s/*",           "[^ou]yer$"],
                [3,     "ieras",      ":If:2s/*",           "[aou]yer$"],
                [3,     "yera",       ":If:3s/*",           "[^ou]yer$"],
                [3,     "iera",       ":If:3s/*",           "[aou]yer$"],
                [3,     "yerons",     ":If:1p/*",           "[^ou]yer$"],
                [3,     "ierons",     ":If:1p/*",           "[aou]yer$"],
                [3,     "yerez",      ":If:2p/*",           "[^ou]yer$"],
                [3,     "ierez",      ":If:2p/*",           "[aou]yer$"],
                [3,     "yeront",     ":If:3p!/*",          "[^ou]yer$"],
                [3,     "ieront",     ":If:3p!/*",          "[aou]yer$"],
                [3,     "yerais",     ":K:1s:2s/*",         "[^ou]yer$"],
                [3,     "ierais",     ":K:1s:2s/*",         "[aou]yer$"],
                [3,     "yerait",     ":K:3s/*",            "[^ou]yer$"],
                [3,     "ierait",     ":K:3s/*",            "[aou]yer$"],
                [3,     "yerions",    ":K:1p/*",            "[^ou]yer$"],
                [3,     "ierions",    ":K:1p/*",            "[aou]yer$"],
                [3,     "yeriez",     ":K:2p/*",            "[^ou]yer$"],
                [3,     "ieriez",     ":K:2p/*",            "[aou]yer$"],
                [3,     "yeraient",   ":K:3p/*",            "[^ou]yer$"],
                [3,     "ieraient",   ":K:3p/*",            "[aou]yer$"],
                [2,     "asse",       ":Sq:1s/*",           false],
                [2,     "asses",      ":Sq:2s/*",           false],
                [2,     "ât",         ":Sq:3s/*",           false],
                [2,     "assions",    ":Sq:1p/*",           false],
                [2,     "assiez",     ":Sq:2p/*",           false],
                [2,     "assent",     ":Sq:3p/*",           false],
                [3,     "ye",         ":E:2s/*",            "[^ou]yer$"],
                [3,     "ie",         ":E:2s/*",            "[aou]yer$"],
                [2,     "ons",        ":E:1p/*",            false],
                [2,     "ez",         ":E:2p/*",            false]
            ],

            // b
            // verbes en -ecer, -emer, -ener, -eper, -erer, -eser, -ever, -evrer
            // verbes en -eler, -eter (pas de doublement de la consonne: acheter, celer, déceler, receler, ciseler, démanteler,
            // écarteler, encasteler, geler, dégeler, congeler, surgeler, marteler, modeler, peler, acheter, racheter,
            // bégueter, corseter, crocheter, fileter, fureter, haleter)
            // changement du e en è avant syllabe muette
            "ecer": [
                [2,     "er",           ":Y/*",                 false],
                [3,     "çant",         ":P/*",                 false],
                [4,     "èce",          ":Ip:Sp:1s:3s/*",       false],
                [2,     "è",            ":Ip:1ś/R",             false],
                [4,     "èces",         ":Ip:Sp:2s/*",          false],
                [3,     "çons",         ":Ip:1p/*",             false],
                [2,     "ez",           ":Ip:2p/*",             false],
                [4,     "ècent",        ":Ip:Sp:3p/*",          false],
                [3,     "çais",         ":Iq:1s:2s/*",          false],
                [3,     "çait",         ":Iq:3s/*",             false],
                [2,     "ions",         ":Iq:Sp:1p/*",          false],
                [2,     "iez",          ":Iq:Sp:2p/*",          false],
                [3,     "çaient",       ":Iq:3p/*",             false],
                [3,     "çai",          ":Is:1s/*",             false],
                [3,     "ças",          ":Is:2s/*",             false],
                [3,     "ça",           ":Is:3s/*",             false],
                [3,     "çâmes",        ":Is:1p/*",             false],
                [3,     "çâtes",        ":Is:2p/*",             false],
                [2,     "èrent",        ":Is:3p!/*",            false],
                [4,     "ècerai",       ":If:1s/*",             false],
                [4,     "èceras",       ":If:2s/*",             false],
                [4,     "ècera",        ":If:3s/*",             false],
                [4,     "ècerons",      ":If:1p/*",             false],
                [4,     "ècerez",       ":If:2p/*",             false],
                [4,     "èceront",      ":If:3p!/*",            false],
                [4,     "ècerais",      ":K:1s:2s/*",           false],
                [4,     "ècerait",      ":K:3s/*",              false],
                [4,     "ècerions",     ":K:1p/*",              false],
                [4,     "èceriez",      ":K:2p/*",              false],
                [4,     "èceraient",    ":K:3p/*",              false],
                [3,     "çasse",        ":Sq:1s/*",             false],
                [3,     "çasses",       ":Sq:2s/*",             false],
                [3,     "çât",          ":Sq:3s/*",             false],
                [3,     "çassions",     ":Sq:1p/*",             false],
                [3,     "çassiez",      ":Sq:2p/*",             false],
                [3,     "çassent",      ":Sq:3p/*",             false],
                [4,     "èce",          ":E:2s/*",              false],
                [3,     "çons",         ":E:1p/*",              false],
                [2,     "ez",           ":E:2p/*",              false]
            ],

            "eler": {
                "1": [
                    [2,     "er",           ":Y/*",             false],
                    [2,     "ant",          ":P/*",             false],
                    [4,     "èle",          ":Ip:Sp:1s:3s/*",   false],
                    [2,     "è",            ":Ip:1ś/R",         false],
                    [4,     "èles",         ":Ip:Sp:2s/*",      false],
                    [2,     "ons",          ":Ip:1p/*",         false],
                    [2,     "ez",           ":Ip:2p/*",         false],
                    [4,     "èlent",        ":Ip:Sp:3p/*",      false],
                    [2,     "ais",          ":Iq:1s:2s/*",      false],
                    [2,     "ait",          ":Iq:3s/*",         false],
                    [2,     "ions",         ":Iq:Sp:1p/*",      false],
                    [2,     "iez",          ":Iq:Sp:2p/*",      false],
                    [2,     "aient",        ":Iq:3p/*",         false],
                    [2,     "ai",           ":Is:1s/*",         false],
                    [2,     "as",           ":Is:2s/*",         false],
                    [2,     "a",            ":Is:3s/*",         false],
                    [2,     "âmes",         ":Is:1p/*",         false],
                    [2,     "âtes",         ":Is:2p/*",         false],
                    [2,     "èrent",        ":Is:3p!/*",        false],
                    [4,     "èlerai",       ":If:1s/*",         false],
                    [4,     "èleras",       ":If:2s/*",         false],
                    [4,     "èlera",        ":If:3s/*",         false],
                    [4,     "èlerons",      ":If:1p/*",         false],
                    [4,     "èlerez",       ":If:2p/*",         false],
                    [4,     "èleront",      ":If:3p!/*",        false],
                    [4,     "èlerais",      ":K:1s:2s/*",       false],
                    [4,     "èlerait",      ":K:3s/*",          false],
                    [4,     "èlerions",     ":K:1p/*",          false],
                    [4,     "èleriez",      ":K:2p/*",          false],
                    [4,     "èleraient",    ":K:3p/*",          false],
                    [2,     "asse",         ":Sq:1s/*",         false],
                    [2,     "asses",        ":Sq:2s/*",         false],
                    [2,     "ât",           ":Sq:3s/*",         false],
                    [2,     "assions",      ":Sq:1p/*",         false],
                    [2,     "assiez",       ":Sq:2p/*",         false],
                    [2,     "assent",       ":Sq:3p/*",         false],
                    [4,     "èle",          ":E:2s/*",          false],
                    [2,     "ons",          ":E:1p/*",          false],
                    [2,     "ez",           ":E:2p/*",          false]
                ],
                "2": [
                    // d. verbes en -eler : doublement de la consonne l.
                    [2,     "er",           ":Y/*",             false],
                    [2,     "ant",          ":P/*",             false],
                    [4,     "elle",         ":Ip:Sp:1s:3s/*",   "ppeler$"],
                    [4,     "elle",         ":Ip:Sp:1s:3s/M",   "[^p].eler$"],
                    [4,     "èle",          ":Ip:Sp:1s:3s/R",   "[^p].eler$"],
                    [2,     "è",            ":Ip:1ś/R",         false],
                    [4,     "elles",        ":Ip:Sp:2s/*",      "ppeler$"],
                    [4,     "elles",        ":Ip:Sp:2s/M",      "[^p].eler$"],
                    [4,     "èles",         ":Ip:Sp:2s/R",      "[^p].eler$"],
                    [2,     "ons",          ":Ip:1p/*",         false],
                    [2,     "ez",           ":Ip:2p/*",         false],
                    [4,     "ellent",       ":Ip:Sp:3p/*",      "ppeler$"],
                    [4,     "ellent",       ":Ip:Sp:3p/M",      "[^p].eler$"],
                    [4,     "èlent",        ":Ip:Sp:3p/R",      "[^p].eler$"],
                    [2,     "ais",          ":Iq:1s:2s/*",      false],
                    [2,     "ait",          ":Iq:3s/*",         false],
                    [2,     "ions",         ":Iq:Sp:1p/*",      false],
                    [2,     "iez",          ":Iq:Sp:2p/*",      false],
                    [2,     "aient",        ":Iq:3p/*",         false],
                    [2,     "ai",           ":Is:1s/*",         false],
                    [2,     "as",           ":Is:2s/*",         false],
                    [2,     "a",            ":Is:3s/*",         false],
                    [2,     "âmes",         ":Is:1p/*",         false],
                    [2,     "âtes",         ":Is:2p/*",         false],
                    [2,     "èrent",        ":Is:3p!/*",        false],
                    [4,     "ellerai",      ":If:1s/*",         "ppeler$"],
                    [4,     "ellerai",      ":If:1s/M",         "[^p].eler$"],
                    [4,     "èlerai",       ":If:1s/R",         "[^p].eler$"],
                    [4,     "elleras",      ":If:2s/*",         "ppeler$"],
                    [4,     "elleras",      ":If:2s/M",         "[^p].eler$"],
                    [4,     "èleras",       ":If:2s/R",         "[^p].eler$"],
                    [4,     "ellera",       ":If:3s/*",         "ppeler$"],
                    [4,     "ellera",       ":If:3s/M",         "[^p].eler$"],
                    [4,     "èlera",        ":If:3s/R",         "[^p].eler$"],
                    [4,     "ellerons",     ":If:1p/*",         "ppeler$"],
                    [4,     "ellerons",     ":If:1p/M",         "[^p].eler$"],
                    [4,     "èlerons",      ":If:1p/R",         "[^p].eler$"],
                    [4,     "ellerez",      ":If:2p/*",         "ppeler$"],
                    [4,     "ellerez",      ":If:2p/M",         "[^p].eler$"],
                    [4,     "èlerez",       ":If:2p/R",         "[^p].eler$"],
                    [4,     "elleront",     ":If:3p!/*",        "ppeler$"],
                    [4,     "elleront",     ":If:3p!/M",        "[^p].eler$"],
                    [4,     "èleront",      ":If:3p!/R",        "[^p].eler$"],
                    [4,     "ellerais",     ":K:1s:2s/*",       "ppeler$"],
                    [4,     "ellerais",     ":K:1s:2s/M",       "[^p].eler$"],
                    [4,     "èlerais",      ":K:1s:2s/R",       "[^p].eler$"],
                    [4,     "ellerait",     ":K:3s/*",          "ppeler$"],
                    [4,     "ellerait",     ":K:3s/M",          "[^p].eler$"],
                    [4,     "èlerait",      ":K:3s/R",          "[^p].eler$"],
                    [4,     "ellerions",    ":K:1p/*",          "ppeler$"],
                    [4,     "ellerions",    ":K:1p/M",          "[^p].eler$"],
                    [4,     "èlerions",     ":K:1p/R",          "[^p].eler$"],
                    [4,     "elleriez",     ":K:2p/*",          "ppeler$"],
                    [4,     "elleriez",     ":K:2p/M",          "[^p].eler$"],
                    [4,     "èleriez",      ":K:2p/R",          "[^p].eler$"],
                    [4,     "elleraient",   ":K:3p/*",          "ppeler$"],
                    [4,     "elleraient",   ":K:3p/M",          "[^p].eler$"],
                    [4,     "èleraient",    ":K:3p/R",          "[^p].eler$"],
                    [2,     "asse",         ":Sq:1s/*",         false],
                    [2,     "asses",        ":Sq:2s/*",         false],
                    [2,     "ât",           ":Sq:3s/*",         false],
                    [2,     "assions",      ":Sq:1p/*",         false],
                    [2,     "assiez",       ":Sq:2p/*",         false],
                    [2,     "assent",       ":Sq:3p/*",         false],
                    [4,     "elle",         ":E:2s/*",          "ppeler$"],
                    [4,     "elle",         ":E:2s/M",          "[^p].eler$"],
                    [4,     "èle",          ":E:2s/R",          "[^p].eler$"],
                    [2,     "ons",          ":E:1p/*",          false],
                    [2,     "ez",           ":E:2p/*",          false]
                ],
            },

            "emer": [
                [2,     "er",           ":Y/*",                 false],
                [2,     "ant",          ":P/*",                 false],
                [4,     "ème",          ":Ip:Sp:1s:3s/*",       false],
                [2,     "è",            ":Ip:1ś/R",             false],
                [4,     "èmes",         ":Ip:Sp:2s/*",          false],
                [2,     "ons",          ":Ip:1p/*",             false],
                [2,     "ez",           ":Ip:2p/*",             false],
                [4,     "èment",        ":Ip:Sp:3p/*",          false],
                [2,     "ais",          ":Iq:1s:2s/*",          false],
                [2,     "ait",          ":Iq:3s/*",             false],
                [2,     "ions",         ":Iq:Sp:1p/*",          false],
                [2,     "iez",          ":Iq:Sp:2p/*",          false],
                [2,     "aient",        ":Iq:3p/*",             false],
                [2,     "ai",           ":Is:1s/*",             false],
                [2,     "as",           ":Is:2s/*",             false],
                [2,     "a",            ":Is:3s/*",             false],
                [2,     "âmes",         ":Is:1p/*",             false],
                [2,     "âtes",         ":Is:2p/*",             false],
                [2,     "èrent",        ":Is:3p!/*",            false],
                [4,     "èmerai",       ":If:1s/*",             false],
                [4,     "èmeras",       ":If:2s/*",             false],
                [4,     "èmera",        ":If:3s/*",             false],
                [4,     "èmerons",      ":If:1p/*",             false],
                [4,     "èmerez",       ":If:2p/*",             false],
                [4,     "èmeront",      ":If:3p!/*",            false],
                [4,     "èmerais",      ":K:1s:2s/*",           false],
                [4,     "èmerait",      ":K:3s/*",              false],
                [4,     "èmerions",     ":K:1p/*",              false],
                [4,     "èmeriez",      ":K:2p/*",              false],
                [4,     "èmeraient",    ":K:3p/*",              false],
                [2,     "asse",         ":Sq:1s/*",             false],
                [2,     "asses",        ":Sq:2s/*",             false],
                [2,     "ât",           ":Sq:3s/*",             false],
                [2,     "assions",      ":Sq:1p/*",             false],
                [2,     "assiez",       ":Sq:2p/*",             false],
                [2,     "assent",       ":Sq:3p/*",             false],
                [4,     "ème",          ":E:2s/*",              false],
                [2,     "ons",          ":E:1p/*",              false],
                [2,     "ez",           ":E:2p/*",              false]
            ],

            "ener": [
                [2,     "er",           ":Y/*",                 false],
                [2,     "ant",          ":P/*",                 false],
                [4,     "ène",          ":Ip:Sp:1s:3s/*",       false],
                [2,     "è",            ":Ip:1ś/R",             false],
                [4,     "ènes",         ":Ip:Sp:2s/*",          false],
                [2,     "ons",          ":Ip:1p/*",             false],
                [2,     "ez",           ":Ip:2p/*",             false],
                [4,     "ènent",        ":Ip:Sp:3p/*",          false],
                [2,     "ais",          ":Iq:1s:2s/*",          false],
                [2,     "ait",          ":Iq:3s/*",             false],
                [2,     "ions",         ":Iq:Sp:1p/*",          false],
                [2,     "iez",          ":Iq:Sp:2p/*",          false],
                [2,     "aient",        ":Iq:3p/*",             false],
                [2,     "ai",           ":Is:1s/*",             false],
                [2,     "as",           ":Is:2s/*",             false],
                [2,     "a",            ":Is:3s/*",             false],
                [2,     "âmes",         ":Is:1p/*",             false],
                [2,     "âtes",         ":Is:2p/*",             false],
                [2,     "èrent",        ":Is:3p!/*",            false],
                [4,     "ènerai",       ":If:1s/*",             false],
                [4,     "èneras",       ":If:2s/*",             false],
                [4,     "ènera",        ":If:3s/*",             false],
                [4,     "ènerons",      ":If:1p/*",             false],
                [4,     "ènerez",       ":If:2p/*",             false],
                [4,     "èneront",      ":If:3p!/*",            false],
                [4,     "ènerais",      ":K:1s:2s/*",           false],
                [4,     "ènerait",      ":K:3s/*",              false],
                [4,     "ènerions",     ":K:1p/*",              false],
                [4,     "èneriez",      ":K:2p/*",              false],
                [4,     "èneraient",    ":K:3p/*",              false],
                [2,     "asse",         ":Sq:1s/*",             false],
                [2,     "asses",        ":Sq:2s/*",             false],
                [2,     "ât",           ":Sq:3s/*",             false],
                [2,     "assions",      ":Sq:1p/*",             false],
                [2,     "assiez",       ":Sq:2p/*",             false],
                [2,     "assent",       ":Sq:3p/*",             false],
                [4,     "ène",          ":E:2s/*",              false],
                [2,     "ons",          ":E:1p/*",              false],
                [2,     "ez",           ":E:2p/*",              false]
            ],

            "eper": [
                [2,     "er",           ":Y/*",                 false],
                [2,     "ant",          ":P/*",                 false],
                [4,     "èpe",          ":Ip:Sp:1s:3s/*",       false],
                [2,     "è",            ":Ip:1ś/R",             false],
                [4,     "èpes",         ":Ip:Sp:2s/*",          false],
                [2,     "ons",          ":Ip:1p/*",             false],
                [2,     "ez",           ":Ip:2p/*",             false],
                [4,     "èpent",        ":Ip:Sp:3p/*",          false],
                [2,     "ais",          ":Iq:1s:2s/*",          false],
                [2,     "ait",          ":Iq:3s/*",             false],
                [2,     "ions",         ":Iq:Sp:1p/*",          false],
                [2,     "iez",          ":Iq:Sp:2p/*",          false],
                [2,     "aient",        ":Iq:3p/*",             false],
                [2,     "ai",           ":Is:1s/*",             false],
                [2,     "as",           ":Is:2s/*",             false],
                [2,     "a",            ":Is:3s/*",             false],
                [2,     "âmes",         ":Is:1p/*",             false],
                [2,     "âtes",         ":Is:2p/*",             false],
                [2,     "èrent",        ":Is:3p!/*",            false],
                [4,     "èperai",       ":If:1s/*",             false],
                [4,     "èperas",       ":If:2s/*",             false],
                [4,     "èpera",        ":If:3s/*",             false],
                [4,     "èperons",      ":If:1p/*",             false],
                [4,     "èperez",       ":If:2p/*",             false],
                [4,     "èperont",      ":If:3p!/*",            false],
                [4,     "èperais",      ":K:1s:2s/*",           false],
                [4,     "èperait",      ":K:3s/*",              false],
                [4,     "èperions",     ":K:1p/*",              false],
                [4,     "èperiez",      ":K:2p/*",              false],
                [4,     "èperaient",    ":K:3p/*",              false],
                [2,     "asse",         ":Sq:1s/*",             false],
                [2,     "asses",        ":Sq:2s/*",             false],
                [2,     "ât",           ":Sq:3s/*",             false],
                [2,     "assions",      ":Sq:1p/*",             false],
                [2,     "assiez",       ":Sq:2p/*",             false],
                [2,     "assent",       ":Sq:3p/*",             false],
                [4,     "èpe",          ":E:2s/*",              false],
                [2,     "ons",          ":E:1p/*",              false],
                [2,     "ez",           ":E:2p/*",              false]
            ],

            "erer": [
                [2,     "er",           ":Y/*",                 false],
                [2,     "ant",          ":P/*",                 false],
                [4,     "ère",          ":Ip:Sp:1s:3s/*",       false],
                [2,     "è",            ":Ip:1ś/R",             false],
                [4,     "ères",         ":Ip:Sp:2s/*",          false],
                [2,     "ons",          ":Ip:1p/*",             false],
                [2,     "ez",           ":Ip:2p/*",             false],
                [4,     "èrent",        ":Ip:Sp:3p/*",          false],
                [2,     "ais",          ":Iq:1s:2s/*",          false],
                [2,     "ait",          ":Iq:3s/*",             false],
                [2,     "ions",         ":Iq:Sp:1p/*",          false],
                [2,     "iez",          ":Iq:Sp:2p/*",          false],
                [2,     "aient",        ":Iq:3p/*",             false],
                [2,     "ai",           ":Is:1s/*",             false],
                [2,     "as",           ":Is:2s/*",             false],
                [2,     "a",            ":Is:3s/*",             false],
                [2,     "âmes",         ":Is:1p/*",             false],
                [2,     "âtes",         ":Is:2p/*",             false],
                [2,     "èrent",        ":Is:3p!/*",            false],
                [4,     "èrerai",       ":If:1s/*",             false],
                [4,     "èreras",       ":If:2s/*",             false],
                [4,     "èrera",        ":If:3s/*",             false],
                [4,     "èrerons",      ":If:1p/*",             false],
                [4,     "èrerez",       ":If:2p/*",             false],
                [4,     "èreront",      ":If:3p!/*",            false],
                [4,     "èrerais",      ":K:1s:2s/*",           false],
                [4,     "èrerait",      ":K:3s/*",              false],
                [4,     "èrerions",     ":K:1p/*",              false],
                [4,     "èreriez",      ":K:2p/*",              false],
                [4,     "èreraient",    ":K:3p/*",              false],
                [2,     "asse",         ":Sq:1s/*",             false],
                [2,     "asses",        ":Sq:2s/*",             false],
                [2,     "ât",           ":Sq:3s/*",             false],
                [2,     "assions",      ":Sq:1p/*",             false],
                [2,     "assiez",       ":Sq:2p/*",             false],
                [2,     "assent",       ":Sq:3p/*",             false],
                [4,     "ère",          ":E:2s/*",              false],
                [2,     "ons",          ":E:1p/*",              false],
                [2,     "ez",           ":E:2p/*",              false]
            ],

            "eser": [
                [2,     "er",           ":Y/*",                 false],
                [2,     "ant",          ":P/*",                 false],
                [4,     "èse",          ":Ip:Sp:1s:3s/*",       false],
                [2,     "è",            ":Ip:1ś/R",             false],
                [4,     "èses",         ":Ip:Sp:2s/*",          false],
                [2,     "ons",          ":Ip:1p/*",             false],
                [2,     "ez",           ":Ip:2p/*",             false],
                [4,     "èsent",        ":Ip:Sp:3p/*",          false],
                [2,     "ais",          ":Iq:1s:2s/*",          false],
                [2,     "ait",          ":Iq:3s/*",             false],
                [2,     "ions",         ":Iq:Sp:1p/*",          false],
                [2,     "iez",          ":Iq:Sp:2p/*",          false],
                [2,     "aient",        ":Iq:3p/*",             false],
                [2,     "ai",           ":Is:1s/*",             false],
                [2,     "as",           ":Is:2s/*",             false],
                [2,     "a",            ":Is:3s/*",             false],
                [2,     "âmes",         ":Is:1p/*",             false],
                [2,     "âtes",         ":Is:2p/*",             false],
                [2,     "èrent",        ":Is:3p!/*",            false],
                [4,     "èserai",       ":If:1s/*",             false],
                [4,     "èseras",       ":If:2s/*",             false],
                [4,     "èsera",        ":If:3s/*",             false],
                [4,     "èserons",      ":If:1p/*",             false],
                [4,     "èserez",       ":If:2p/*",             false],
                [4,     "èseront",      ":If:3p!/*",            false],
                [4,     "èserais",      ":K:1s:2s/*",           false],
                [4,     "èserait",      ":K:3s/*",              false],
                [4,     "èserions",     ":K:1p/*",              false],
                [4,     "èseriez",      ":K:2p/*",              false],
                [4,     "èseraient",    ":K:3p/*",              false],
                [2,     "asse",         ":Sq:1s/*",             false],
                [2,     "asses",        ":Sq:2s/*",             false],
                [2,     "ât",           ":Sq:3s/*",             false],
                [2,     "assions",      ":Sq:1p/*",             false],
                [2,     "assiez",       ":Sq:2p/*",             false],
                [2,     "assent",       ":Sq:3p/*",             false],
                [4,     "èse",          ":E:2s/*",              false],
                [2,     "ons",          ":E:1p/*",              false],
                [2,     "ez",           ":E:2p/*",              false]
            ],

            "eter": {
                "1": [
                    [2,     "er",           ":Y/*",                 false],
                    [2,     "ant",          ":P/*",                 false],
                    [4,     "ète",          ":Ip:Sp:1s:3s/*",       false],
                    [2,     "è",            ":Ip:1ś/R",             false],
                    [4,     "ètes",         ":Ip:Sp:2s/*",          false],
                    [2,     "ons",          ":Ip:1p/*",             false],
                    [2,     "ez",           ":Ip:2p/*",             false],
                    [4,     "ètent",        ":Ip:Sp:3p/*",          false],
                    [2,     "ais",          ":Iq:1s:2s/*",          false],
                    [2,     "ait",          ":Iq:3s/*",             false],
                    [2,     "ions",         ":Iq:Sp:1p/*",          false],
                    [2,     "iez",          ":Iq:Sp:2p/*",          false],
                    [2,     "aient",        ":Iq:3p/*",             false],
                    [2,     "ai",           ":Is:1s/*",             false],
                    [2,     "as",           ":Is:2s/*",             false],
                    [2,     "a",            ":Is:3s/*",             false],
                    [2,     "âmes",         ":Is:1p/*",             false],
                    [2,     "âtes",         ":Is:2p/*",             false],
                    [2,     "èrent",        ":Is:3p!/*",            false],
                    [4,     "èterai",       ":If:1s/*",             false],
                    [4,     "èteras",       ":If:2s/*",             false],
                    [4,     "ètera",        ":If:3s/*",             false],
                    [4,     "èterons",      ":If:1p/*",             false],
                    [4,     "èterez",       ":If:2p/*",             false],
                    [4,     "èteront",      ":If:3p!/*",            false],
                    [4,     "èterais",      ":K:1s:2s/*",           false],
                    [4,     "èterait",      ":K:3s/*",              false],
                    [4,     "èterions",     ":K:1p/*",              false],
                    [4,     "èteriez",      ":K:2p/*",              false],
                    [4,     "èteraient",    ":K:3p/*",              false],
                    [2,     "asse",         ":Sq:1s/*",             false],
                    [2,     "asses",        ":Sq:2s/*",             false],
                    [2,     "ât",           ":Sq:3s/*",             false],
                    [2,     "assions",      ":Sq:1p/*",             false],
                    [2,     "assiez",       ":Sq:2p/*",             false],
                    [2,     "assent",       ":Sq:3p/*",             false],
                    [4,     "ète",          ":E:2s/*",              false],
                    [2,     "ons",          ":E:1p/*",              false],
                    [2,     "ez",           ":E:2p/*",              false]
                ],
                "2": [
                    // d. verbes en -eter : doublement de la consonne t
                    [2,     "er",           ":Y/*",                 false],
                    [2,     "ant",          ":P/*",                 false],
                    [4,     "ette",         ":Ip:Sp:1s:3s/*",       "jeter$"],
                    [4,     "ette",         ":Ip:Sp:1s:3s/M",       "[^j]eter$"],
                    [4,     "ète",          ":Ip:Sp:1s:3s/R",       "[^j]eter$"],
                    [2,     "è",            ":Ip:1ś/R",             false],
                    [4,     "ettes",        ":Ip:Sp:2s/*",          "jeter$"],
                    [4,     "ettes",        ":Ip:Sp:2s/M",          "[^j]eter$"],
                    [4,     "ètes",         ":Ip:Sp:2s/R",          "[^j]eter$"],
                    [2,     "ons",          ":Ip:1p/*",             false],
                    [2,     "ez",           ":Ip:2p/*",             false],
                    [4,     "ettent",       ":Ip:Sp:3p/*",          "jeter$"],
                    [4,     "ettent",       ":Ip:Sp:3p/M",          "[^j]eter$"],
                    [4,     "ètent",        ":Ip:Sp:3p/R",          "[^j]eter$"],
                    [2,     "ais",          ":Iq:1s:2s/*",          false],
                    [2,     "ait",          ":Iq:3s/*",             false],
                    [2,     "ions",         ":Iq:Sp:1p/*",          false],
                    [2,     "iez",          ":Iq:Sp:2p/*",          false],
                    [2,     "aient",        ":Iq:3p/*",             false],
                    [2,     "ai",           ":Is:1s/*",             false],
                    [2,     "as",           ":Is:2s/*",             false],
                    [2,     "a",            ":Is:3s/*",             false],
                    [2,     "âmes",         ":Is:1p/*",             false],
                    [2,     "âtes",         ":Is:2p/*",             false],
                    [2,     "èrent",        ":Is:3p!/*",            false],
                    [4,     "etterai",      ":If:1s/*",             "jeter$"],
                    [4,     "etterai",      ":If:1s/M",             "[^j]eter$"],
                    [4,     "èterai",       ":If:1s/R",             "[^j]eter$"],
                    [4,     "etteras",      ":If:2s/*",             "jeter$"],
                    [4,     "etteras",      ":If:2s/M",             "[^j]eter$"],
                    [4,     "èteras",       ":If:2s/R",             "[^j]eter$"],
                    [4,     "ettera",       ":If:3s/*",             "jeter$"],
                    [4,     "ettera",       ":If:3s/M",             "[^j]eter$"],
                    [4,     "ètera",        ":If:3s/R",             "[^j]eter$"],
                    [4,     "etterons",     ":If:1p/*",             "jeter$"],
                    [4,     "etterons",     ":If:1p/M",             "[^j]eter$"],
                    [4,     "èterons",      ":If:1p/R",             "[^j]eter$"],
                    [4,     "etterez",      ":If:2p/*",             "jeter$"],
                    [4,     "etterez",      ":If:2p/M",             "[^j]eter$"],
                    [4,     "èterez",       ":If:2p/R",             "[^j]eter$"],
                    [4,     "etteront",     ":If:3p!/*",            "jeter$"],
                    [4,     "etteront",     ":If:3p!/M",            "[^j]eter$"],
                    [4,     "èteront",      ":If:3p!/R",            "[^j]eter$"],
                    [4,     "etterais",     ":K:1s:2s/*",           "jeter$"],
                    [4,     "etterais",     ":K:1s:2s/M",           "[^j]eter$"],
                    [4,     "èterais",      ":K:1s:2s/R",           "[^j]eter$"],
                    [4,     "etterait",     ":K:3s/*",              "jeter$"],
                    [4,     "etterait",     ":K:3s/M",              "[^j]eter$"],
                    [4,     "èterait",      ":K:3s/R",              "[^j]eter$"],
                    [4,     "etterions",    ":K:1p/*",              "jeter$"],
                    [4,     "etterions",    ":K:1p/M",              "[^j]eter$"],
                    [4,     "èterions",     ":K:1p/R",              "[^j]eter$"],
                    [4,     "etteriez",     ":K:2p/*",              "jeter$"],
                    [4,     "etteriez",     ":K:2p/M",              "[^j]eter$"],
                    [4,     "èteriez",      ":K:2p/R",              "[^j]eter$"],
                    [4,     "etteraient",   ":K:3p/*",              "jeter$"],
                    [4,     "etteraient",   ":K:3p/M",              "[^j]eter$"],
                    [4,     "èteraient",    ":K:3p/R",              "[^j]eter$"],
                    [2,     "asse",         ":Sq:1s/*",             false],
                    [2,     "asses",        ":Sq:2s/*",             false],
                    [2,     "ât",           ":Sq:3s/*",             false],
                    [2,     "assions",      ":Sq:1p/*",             false],
                    [2,     "assiez",       ":Sq:2p/*",             false],
                    [2,     "assent",       ":Sq:3p/*",             false],
                    [4,     "ette",         ":E:2s/*",              "jeter$"],
                    [4,     "ette",         ":E:2s/M",              "[^j]eter$"],
                    [4,     "ète",          ":E:2s/R",              "[^j]eter$"],
                    [2,     "ons",          ":E:1p/*",              false],
                    [2,     "ez",           ":E:2p/*",              false]
                ]
            },

            "ever": [
                [2,     "er",           ":Y/*",                 false],
                [2,     "ant",          ":P/*",                 false],
                [4,     "ève",          ":Ip:Sp:1s:3s/*",       false],
                [2,     "è",            ":Ip:1ś/R",             false],
                [4,     "èves",         ":Ip:Sp:2s/*",          false],
                [2,     "ons",          ":Ip:1p/*",             false],
                [2,     "ez",           ":Ip:2p/*",             false],
                [4,     "èvent",        ":Ip:Sp:3p/*",          false],
                [2,     "ais",          ":Iq:1s:2s/*",          false],
                [2,     "ait",          ":Iq:3s/*",             false],
                [2,     "ions",         ":Iq:Sp:1p/*",          false],
                [2,     "iez",          ":Iq:Sp:2p/*",          false],
                [2,     "aient",        ":Iq:3p/*",             false],
                [2,     "ai",           ":Is:1s/*",             false],
                [2,     "as",           ":Is:2s/*",             false],
                [2,     "a",            ":Is:3s/*",             false],
                [2,     "âmes",         ":Is:1p/*",             false],
                [2,     "âtes",         ":Is:2p/*",             false],
                [2,     "èrent",        ":Is:3p!/*",            false],
                [4,     "èverai",       ":If:1s/*",             false],
                [4,     "èveras",       ":If:2s/*",             false],
                [4,     "èvera",        ":If:3s/*",             false],
                [4,     "èverons",      ":If:1p/*",             false],
                [4,     "èverez",       ":If:2p/*",             false],
                [4,     "èveront",      ":If:3p!/*",            false],
                [4,     "èverais",      ":K:1s:2s/*",           false],
                [4,     "èverait",      ":K:3s/*",              false],
                [4,     "èverions",     ":K:1p/*",              false],
                [4,     "èveriez",      ":K:2p/*",              false],
                [4,     "èveraient",    ":K:3p/*",              false],
                [2,     "asse",         ":Sq:1s/*",             false],
                [2,     "asses",        ":Sq:2s/*",             false],
                [2,     "ât",           ":Sq:3s/*",             false],
                [2,     "assions",      ":Sq:1p/*",             false],
                [2,     "assiez",       ":Sq:2p/*",             false],
                [2,     "assent",       ":Sq:3p/*",             false],
                [4,     "ève",          ":E:2s/*",              false],
                [2,     "ons",          ":E:1p/*",              false],
                [2,     "ez",           ":E:2p/*",              false]
            ],

            "evrer": [
                [2,     "er",           ":Y/*",                 false],
                [2,     "ant",          ":P/*",                 false],
                [5,     "èvre",         ":Ip:Sp:1s:3s/*",       false],
                [2,     "è",            ":Ip:1ś/R",             false],
                [5,     "èvres",        ":Ip:Sp:2s/*",          false],
                [2,     "ons",          ":Ip:1p/*",             false],
                [2,     "ez",           ":Ip:2p/*",             false],
                [5,     "èvrent",       ":Ip:Sp:3p/*",          false],
                [2,     "ais",          ":Iq:1s:2s/*",          false],
                [2,     "ait",          ":Iq:3s/*",             false],
                [2,     "ions",         ":Iq:Sp:1p/*",          false],
                [2,     "iez",          ":Iq:Sp:2p/*",          false],
                [2,     "aient",        ":Iq:3p/*",             false],
                [2,     "ai",           ":Is:1s/*",             false],
                [2,     "as",           ":Is:2s/*",             false],
                [2,     "a",            ":Is:3s/*",             false],
                [2,     "âmes",         ":Is:1p/*",             false],
                [2,     "âtes",         ":Is:2p/*",             false],
                [2,     "èrent",        ":Is:3p!/*",            false],
                [5,     "èvrerai",      ":If:1s/*",             false],
                [5,     "èvreras",      ":If:2s/*",             false],
                [5,     "èvrera",       ":If:3s/*",             false],
                [5,     "èvrerons",     ":If:1p/*",             false],
                [5,     "èvrerez",      ":If:2p/*",             false],
                [5,     "èvreront",     ":If:3p!/*",            false],
                [5,     "èvrerais",     ":K:1s:2s/*",           false],
                [5,     "èvrerait",     ":K:3s/*",              false],
                [5,     "èvrerions",    ":K:1p/*",              false],
                [5,     "èvreriez",     ":K:2p/*",              false],
                [5,     "èvreraient",   ":K:3p/*",              false],
                [2,     "asse",         ":Sq:1s/*",             false],
                [2,     "asses",        ":Sq:2s/*",             false],
                [2,     "ât",           ":Sq:3s/*",             false],
                [2,     "assions",      ":Sq:1p/*",             false],
                [2,     "assiez",       ":Sq:2p/*",             false],
                [2,     "assent",       ":Sq:3p/*",             false],
                [5,     "èvre",         ":E:2s/*",              false],
                [2,     "ons",          ":E:1p/*",              false],
                [2,     "ez",           ":E:2p/*",              false]
            ],

            // c
            // verbes en -ébrer, -écer, -écher, -écrer, -éder, -éger, -égler, -égner, -égrer, -éguer,
            //           -éler, -émer, -éner, -éper, -équer, -érer, -éser, -éter, -étrer, -évrer, -éyer
            // changement du é en è

            "écer": [
                [2,     "er",           ":Y/*",                 false],
                [4,     "éçant",        ":P/*",                 false],
                [4,     "èce",          ":Ip:Sp:1s:3s/*",       false],
                [2,     "è",            ":Ip:1ś/R",             false],
                [4,     "èces",         ":Ip:Sp:2s/*",          false],
                [4,     "éçons",        ":Ip:1p/*",             false],
                [2,     "ez",           ":Ip:2p/*",             false],
                [4,     "ècent",        ":Ip:Sp:3p/*",          false],
                [4,     "éçais",        ":Iq:1s:2s/*",          false],
                [4,     "éçait",        ":Iq:3s/*",             false],
                [2,     "ions",         ":Iq:Sp:1p/*",          false],
                [2,     "iez",          ":Iq:Sp:2p/*",          false],
                [4,     "éçaient",      ":Iq:3p/*",             false],
                [4,     "éçai",         ":Is:1s/*",             false],
                [4,     "éças",         ":Is:2s/*",             false],
                [4,     "éça",          ":Is:3s/*",             false],
                [4,     "éçâmes",       ":Is:1p/*",             false],
                [4,     "éçâtes",       ":Is:2p/*",             false],
                [2,     "èrent",        ":Is:3p!/*",            false],
                [2,     "erai",         ":If:1s/M",             false],
                [4,     "ècerai",       ":If:1s/R",             false],
                [2,     "eras",         ":If:2s/M",             false],
                [4,     "èceras",       ":If:2s/R",             false],
                [2,     "era",          ":If:3s/M",             false],
                [4,     "ècera",        ":If:3s/R",             false],
                [2,     "erons",        ":If:1p/M",             false],
                [4,     "ècerons",      ":If:1p/R",             false],
                [2,     "erez",         ":If:2p/M",             false],
                [4,     "ècerez",       ":If:2p/R",             false],
                [2,     "eront",        ":If:3p!/M",            false],
                [4,     "èceront",      ":If:3p!/R",            false],
                [2,     "erais",        ":K:1s:2s/M",           false],
                [4,     "ècerais",      ":K:1s:2s/R",           false],
                [2,     "erait",        ":K:3s/M",              false],
                [4,     "ècerait",      ":K:3s/R",              false],
                [2,     "erions",       ":K:1p/M",              false],
                [4,     "ècerions",     ":K:1p/R",              false],
                [2,     "eriez",        ":K:2p/M",              false],
                [4,     "èceriez",      ":K:2p/R",              false],
                [2,     "eraient",      ":K:3p/M",              false],
                [4,     "èceraient",    ":K:3p/R",              false],
                [4,     "éçasse",       ":Sq:1s/*",             false],
                [4,     "éçasses",      ":Sq:2s/*",             false],
                [4,     "éçât",         ":Sq:3s/*",             false],
                [4,     "éçassions",    ":Sq:1p/*",             false],
                [4,     "éçassiez",     ":Sq:2p/*",             false],
                [4,     "éçassent",     ":Sq:3p/*",             false],
                [4,     "èce",          ":E:2s/*",              false],
                [4,     "éçons",        ":E:1p/*",              false],
                [2,     "ez",           ":E:2p/*",              false]
            ],

            "éger": [
                [2,     "er",           ":Y/*",                 false],
                [4,     "égeant",       ":P/*",                 false],
                [4,     "ège",          ":Ip:Sp:1s:3s/*",       false],
                [2,     "è",            ":Ip:1ś/R",             false],
                [4,     "èges",         ":Ip:Sp:2s/*",          false],
                [4,     "égeons",       ":Ip:1p/*",             false],
                [2,     "ez",           ":Ip:2p/*",             false],
                [4,     "ègent",        ":Ip:Sp:3p/*",          false],
                [4,     "égeais",       ":Iq:1s:2s/*",          false],
                [4,     "égeait",       ":Iq:3s/*",             false],
                [2,     "ions",         ":Iq:Sp:1p/*",          false],
                [2,     "iez",          ":Iq:Sp:2p/*",          false],
                [4,     "égeaient",     ":Iq:3p/*",             false],
                [4,     "égeai",        ":Is:1s/*",             false],
                [4,     "égeas",        ":Is:2s/*",             false],
                [4,     "égea",         ":Is:3s/*",             false],
                [4,     "égeâmes",      ":Is:1p/*",             false],
                [4,     "égeâtes",      ":Is:2p/*",             false],
                [2,     "èrent",        ":Is:3p!/*",            false],
                [2,     "erai",         ":If:1s/M",             false],
                [4,     "ègerai",       ":If:1s/R",             false],
                [2,     "eras",         ":If:2s/M",             false],
                [4,     "ègeras",       ":If:2s/R",             false],
                [2,     "era",          ":If:3s/M",             false],
                [4,     "ègera",        ":If:3s/R",             false],
                [2,     "erons",        ":If:1p/M",             false],
                [4,     "ègerons",      ":If:1p/R",             false],
                [2,     "erez",         ":If:2p/M",             false],
                [4,     "ègerez",       ":If:2p/R",             false],
                [2,     "eront",        ":If:3p!/M",            false],
                [4,     "ègeront",      ":If:3p!/R",            false],
                [2,     "erais",        ":K:1s:2s/M",           false],
                [4,     "ègerais",      ":K:1s:2s/R",           false],
                [2,     "erait",        ":K:3s/M",              false],
                [4,     "ègerait",      ":K:3s/R",              false],
                [2,     "erions",       ":K:1p/M",              false],
                [4,     "ègerions",     ":K:1p/R",              false],
                [2,     "eriez",        ":K:2p/M",              false],
                [4,     "ègeriez",      ":K:2p/R",              false],
                [2,     "eraient",      ":K:3p/M",              false],
                [4,     "ègeraient",    ":K:3p/R",              false],
                [4,     "égeasse",      ":Sq:1s/*",             false],
                [4,     "égeasses",     ":Sq:2s/*",             false],
                [4,     "égeât",        ":Sq:3s/*",             false],
                [4,     "égeassions",   ":Sq:1p/*",             false],
                [4,     "égeassiez",    ":Sq:2p/*",             false],
                [4,     "égeassent",    ":Sq:3p/*",             false],
                [4,     "ège",          ":E:2s/*",              false],
                [4,     "égeons",       ":E:1p/*",              false],
                [2,     "ez",           ":E:2p/*",              false]
            ],

            "ébrer": [
                [2,     "er",           ":Y/*",                 false],
                [2,     "ant",          ":P/*",                 false],
                [5,     "èbre",         ":Ip:Sp:1s:3s/*",       false],
                [2,     "è",            ":Ip:1ś/R",             false],
                [5,     "èbres",        ":Ip:Sp:2s/*",          false],
                [2,     "ons",          ":Ip:1p/*",             false],
                [2,     "ez",           ":Ip:2p/*",             false],
                [5,     "èbrent",       ":Ip:Sp:3p/*",          false],
                [2,     "ais",          ":Iq:1s:2s/*",          false],
                [2,     "ait",          ":Iq:3s/*",             false],
                [2,     "ions",         ":Iq:Sp:1p/*",          false],
                [2,     "iez",          ":Iq:Sp:2p/*",          false],
                [2,     "aient",        ":Iq:3p/*",             false],
                [2,     "ai",           ":Is:1s/*",             false],
                [2,     "as",           ":Is:2s/*",             false],
                [2,     "a",            ":Is:3s/*",             false],
                [2,     "âmes",         ":Is:1p/*",             false],
                [2,     "âtes",         ":Is:2p/*",             false],
                [2,     "èrent",        ":Is:3p!/*",            false],
                [2,     "erai",         ":If:1s/M",             false],
                [5,     "èbrerai",      ":If:1s/R",             false],
                [2,     "eras",         ":If:2s/M",             false],
                [5,     "èbreras",      ":If:2s/R",             false],
                [2,     "era",          ":If:3s/M",             false],
                [5,     "èbrera",       ":If:3s/R",             false],
                [2,     "erons",        ":If:1p/M",             false],
                [5,     "èbrerons",     ":If:1p/R",             false],
                [2,     "erez",         ":If:2p/M",             false],
                [5,     "èbrerez",      ":If:2p/R",             false],
                [2,     "eront",        ":If:3p!/M",            false],
                [5,     "èbreront",     ":If:3p!/R",            false],
                [2,     "erais",        ":K:1s:2s/M",           false],
                [5,     "èbrerais",     ":K:1s:2s/R",           false],
                [2,     "erait",        ":K:3s/M",              false],
                [5,     "èbrerait",     ":K:3s/R",              false],
                [2,     "erions",       ":K:1p/M",              false],
                [5,     "èbrerions",    ":K:1p/R",              false],
                [2,     "eriez",        ":K:2p/M",              false],
                [5,     "èbreriez",     ":K:2p/R",              false],
                [2,     "eraient",      ":K:3p/M",              false],
                [5,     "èbreraient",   ":K:3p/R",              false],
                [2,     "asse",         ":Sq:1s/*",             false],
                [2,     "asses",        ":Sq:2s/*",             false],
                [2,     "ât",           ":Sq:3s/*",             false],
                [2,     "assions",      ":Sq:1p/*",             false],
                [2,     "assiez",       ":Sq:2p/*",             false],
                [2,     "assent",       ":Sq:3p/*",             false],
                [5,     "èbre",         ":E:2s/*",              false],
                [2,     "ons",          ":E:1p/*",              false],
                [2,     "ez",           ":E:2p/*",              false]
            ],

            "écher": [
                [2,     "er",           ":Y/*",                 false],
                [2,     "ant",          ":P/*",                 false],
                [5,     "èche",         ":Ip:Sp:1s:3s/*",       false],
                [2,     "è",            ":Ip:1ś/R",             false],
                [5,     "èches",        ":Ip:Sp:2s/*",          false],
                [2,     "ons",          ":Ip:1p/*",             false],
                [2,     "ez",           ":Ip:2p/*",             false],
                [5,     "èchent",       ":Ip:Sp:3p/*",          false],
                [2,     "ais",          ":Iq:1s:2s/*",          false],
                [2,     "ait",          ":Iq:3s/*",             false],
                [2,     "ions",         ":Iq:Sp:1p/*",          false],
                [2,     "iez",          ":Iq:Sp:2p/*",          false],
                [2,     "aient",        ":Iq:3p/*",             false],
                [2,     "ai",           ":Is:1s/*",             false],
                [2,     "as",           ":Is:2s/*",             false],
                [2,     "a",            ":Is:3s/*",             false],
                [2,     "âmes",         ":Is:1p/*",             false],
                [2,     "âtes",         ":Is:2p/*",             false],
                [2,     "èrent",        ":Is:3p!/*",            false],
                [2,     "erai",         ":If:1s/M",             false],
                [5,     "ècherai",      ":If:1s/R",             false],
                [2,     "eras",         ":If:2s/M",             false],
                [5,     "ècheras",      ":If:2s/R",             false],
                [2,     "era",          ":If:3s/M",             false],
                [5,     "èchera",       ":If:3s/R",             false],
                [2,     "erons",        ":If:1p/M",             false],
                [5,     "ècherons",     ":If:1p/R",             false],
                [2,     "erez",         ":If:2p/M",             false],
                [5,     "ècherez",      ":If:2p/R",             false],
                [2,     "eront",        ":If:3p!/M",            false],
                [5,     "ècheront",     ":If:3p!/R",            false],
                [2,     "erais",        ":K:1s:2s/M",           false],
                [5,     "ècherais",     ":K:1s:2s/R",           false],
                [2,     "erait",        ":K:3s/M",              false],
                [5,     "ècherait",     ":K:3s/R",              false],
                [2,     "erions",       ":K:1p/M",              false],
                [5,     "ècherions",    ":K:1p/R",              false],
                [2,     "eriez",        ":K:2p/M",              false],
                [5,     "ècheriez",     ":K:2p/R",              false],
                [2,     "eraient",      ":K:3p/M",              false],
                [5,     "ècheraient",   ":K:3p/R",              false],
                [2,     "asse",         ":Sq:1s/*",             false],
                [2,     "asses",        ":Sq:2s/*",             false],
                [2,     "ât",           ":Sq:3s/*",             false],
                [2,     "assions",      ":Sq:1p/*",             false],
                [2,     "assiez",       ":Sq:2p/*",             false],
                [2,     "assent",       ":Sq:3p/*",             false],
                [5,     "èche",         ":E:2s/*",              false],
                [2,     "ons",          ":E:1p/*",              false],
                [2,     "ez",           ":E:2p/*",              false]
            ],

            "écrer": [
                [2,     "er",           ":Y/*",                 false],
                [2,     "ant",          ":P/*",                 false],
                [5,     "ècre",         ":Ip:Sp:1s:3s/*",       false],
                [2,     "è",            ":Ip:1ś/R",             false],
                [5,     "ècres",        ":Ip:Sp:2s/*",          false],
                [2,     "ons",          ":Ip:1p/*",             false],
                [2,     "ez",           ":Ip:2p/*",             false],
                [5,     "ècrent",       ":Ip:Sp:3p/*",          false],
                [2,     "ais",          ":Iq:1s:2s/*",          false],
                [2,     "ait",          ":Iq:3s/*",             false],
                [2,     "ions",         ":Iq:Sp:1p/*",          false],
                [2,     "iez",          ":Iq:Sp:2p/*",          false],
                [2,     "aient",        ":Iq:3p/*",             false],
                [2,     "ai",           ":Is:1s/*",             false],
                [2,     "as",           ":Is:2s/*",             false],
                [2,     "a",            ":Is:3s/*",             false],
                [2,     "âmes",         ":Is:1p/*",             false],
                [2,     "âtes",         ":Is:2p/*",             false],
                [2,     "èrent",        ":Is:3p!/*",            false],
                [2,     "erai",         ":If:1s/M",             false],
                [5,     "ècrerai",      ":If:1s/R",             false],
                [2,     "eras",         ":If:2s/M",             false],
                [5,     "ècreras",      ":If:2s/R",             false],
                [2,     "era",          ":If:3s/M",             false],
                [5,     "ècrera",       ":If:3s/R",             false],
                [2,     "erons",        ":If:1p/M",             false],
                [5,     "ècrerons",     ":If:1p/R",             false],
                [2,     "erez",         ":If:2p/M",             false],
                [5,     "ècrerez",      ":If:2p/R",             false],
                [2,     "eront",        ":If:3p!/M",            false],
                [5,     "ècreront",     ":If:3p!/R",            false],
                [2,     "erais",        ":K:1s:2s/M",           false],
                [5,     "ècrerais",     ":K:1s:2s/R",           false],
                [2,     "erait",        ":K:3s/M",              false],
                [5,     "ècrerait",     ":K:3s/R",              false],
                [2,     "erions",       ":K:1p/M",              false],
                [5,     "ècrerions",    ":K:1p/R",              false],
                [2,     "eriez",        ":K:2p/M",              false],
                [5,     "ècreriez",     ":K:2p/R",              false],
                [2,     "eraient",      ":K:3p/M",              false],
                [5,     "ècreraient",   ":K:3p/R",              false],
                [2,     "asse",         ":Sq:1s/*",             false],
                [2,     "asses",        ":Sq:2s/*",             false],
                [2,     "ât",           ":Sq:3s/*",             false],
                [2,     "assions",      ":Sq:1p/*",             false],
                [2,     "assiez",       ":Sq:2p/*",             false],
                [2,     "assent",       ":Sq:3p/*",             false],
                [5,     "ècre",         ":E:2s/*",              false],
                [2,     "ons",          ":E:1p/*",              false],
                [2,     "ez",           ":E:2p/*",              false]
            ],

            "éder": [
                [2,     "er",           ":Y/*",                 false],
                [2,     "ant",          ":P/*",                 false],
                [4,     "ède",          ":Ip:Sp:1s:3s/*",       false],
                [2,     "è",            ":Ip:1ś/R",             false],
                [4,     "èdes",         ":Ip:Sp:2s/*",          false],
                [2,     "ons",          ":Ip:1p/*",             false],
                [2,     "ez",           ":Ip:2p/*",             false],
                [4,     "èdent",        ":Ip:Sp:3p/*",          false],
                [2,     "ais",          ":Iq:1s:2s/*",          false],
                [2,     "ait",          ":Iq:3s/*",             false],
                [2,     "ions",         ":Iq:Sp:1p/*",          false],
                [2,     "iez",          ":Iq:Sp:2p/*",          false],
                [2,     "aient",        ":Iq:3p/*",             false],
                [2,     "ai",           ":Is:1s/*",             false],
                [2,     "as",           ":Is:2s/*",             false],
                [2,     "a",            ":Is:3s/*",             false],
                [2,     "âmes",         ":Is:1p/*",             false],
                [2,     "âtes",         ":Is:2p/*",             false],
                [2,     "èrent",        ":Is:3p!/*",            false],
                [2,     "erai",         ":If:1s/M",             false],
                [4,     "èderai",       ":If:1s/R",             false],
                [2,     "eras",         ":If:2s/M",             false],
                [4,     "èderas",       ":If:2s/R",             false],
                [2,     "era",          ":If:3s/M",             false],
                [4,     "èdera",        ":If:3s/R",             false],
                [2,     "erons",        ":If:1p/M",             false],
                [4,     "èderons",      ":If:1p/R",             false],
                [2,     "erez",         ":If:2p/M",             false],
                [4,     "èderez",       ":If:2p/R",             false],
                [2,     "eront",        ":If:3p!/M",            false],
                [4,     "èderont",      ":If:3p!/R",            false],
                [2,     "erais",        ":K:1s:2s/M",           false],
                [4,     "èderais",      ":K:1s:2s/R",           false],
                [2,     "erait",        ":K:3s/M",              false],
                [4,     "èderait",      ":K:3s/R",              false],
                [2,     "erions",       ":K:1p/M",              false],
                [4,     "èderions",     ":K:1p/R",              false],
                [2,     "eriez",        ":K:2p/M",              false],
                [4,     "èderiez",      ":K:2p/R",              false],
                [2,     "eraient",      ":K:3p/M",              false],
                [4,     "èderaient",    ":K:3p/R",              false],
                [2,     "asse",         ":Sq:1s/*",             false],
                [2,     "asses",        ":Sq:2s/*",             false],
                [2,     "ât",           ":Sq:3s/*",             false],
                [2,     "assions",      ":Sq:1p/*",             false],
                [2,     "assiez",       ":Sq:2p/*",             false],
                [2,     "assent",       ":Sq:3p/*",             false],
                [4,     "ède",          ":E:2s/*",              false],
                [2,     "ons",          ":E:1p/*",              false],
                [2,     "ez",           ":E:2p/*",              false]
            ],

            "égler": [
                [2,     "er",           ":Y/*",                 false],
                [2,     "ant",          ":P/*",                 false],
                [5,     "ègle",         ":Ip:Sp:1s:3s/*",       false],
                [2,     "è",            ":Ip:1ś/R",             false],
                [5,     "ègles",        ":Ip:Sp:2s/*",          false],
                [2,     "ons",          ":Ip:1p/*",             false],
                [2,     "ez",           ":Ip:2p/*",             false],
                [5,     "èglent",       ":Ip:Sp:3p/*",          false],
                [2,     "ais",          ":Iq:1s:2s/*",          false],
                [2,     "ait",          ":Iq:3s/*",             false],
                [2,     "ions",         ":Iq:Sp:1p/*",          false],
                [2,     "iez",          ":Iq:Sp:2p/*",          false],
                [2,     "aient",        ":Iq:3p/*",             false],
                [2,     "ai",           ":Is:1s/*",             false],
                [2,     "as",           ":Is:2s/*",             false],
                [2,     "a",            ":Is:3s/*",             false],
                [2,     "âmes",         ":Is:1p/*",             false],
                [2,     "âtes",         ":Is:2p/*",             false],
                [2,     "èrent",        ":Is:3p!/*",            false],
                [2,     "erai",         ":If:1s/M",             false],
                [5,     "èglerai",      ":If:1s/R",             false],
                [2,     "eras",         ":If:2s/M",             false],
                [5,     "ègleras",      ":If:2s/R",             false],
                [2,     "era",          ":If:3s/M",             false],
                [5,     "èglera",       ":If:3s/R",             false],
                [2,     "erons",        ":If:1p/M",             false],
                [5,     "èglerons",     ":If:1p/R",             false],
                [2,     "erez",         ":If:2p/M",             false],
                [5,     "èglerez",      ":If:2p/R",             false],
                [2,     "eront",        ":If:3p!/M",            false],
                [5,     "ègleront",     ":If:3p!/R",            false],
                [2,     "erais",        ":K:1s:2s/M",           false],
                [5,     "èglerais",     ":K:1s:2s/R",           false],
                [2,     "erait",        ":K:3s/M",              false],
                [5,     "èglerait",     ":K:3s/R",              false],
                [2,     "erions",       ":K:1p/M",              false],
                [5,     "èglerions",    ":K:1p/R",              false],
                [2,     "eriez",        ":K:2p/M",              false],
                [5,     "ègleriez",     ":K:2p/R",              false],
                [2,     "eraient",      ":K:3p/M",              false],
                [5,     "ègleraient",   ":K:3p/R",              false],
                [2,     "asse",         ":Sq:1s/*",             false],
                [2,     "asses",        ":Sq:2s/*",             false],
                [2,     "ât",           ":Sq:3s/*",             false],
                [2,     "assions",      ":Sq:1p/*",             false],
                [2,     "assiez",       ":Sq:2p/*",             false],
                [2,     "assent",       ":Sq:3p/*",             false],
                [5,     "ègle",         ":E:2s/*",              false],
                [2,     "ons",          ":E:1p/*",              false],
                [2,     "ez",           ":E:2p/*",              false]
            ],

            "égner": [
                [2,     "er",           ":Y/*",                 false],
                [2,     "ant",          ":P/*",                 false],
                [5,     "ègne",         ":Ip:Sp:1s:3s/*",       false],
                [2,     "è",            ":Ip:1ś/R",             false],
                [5,     "ègnes",        ":Ip:Sp:2s/*",          false],
                [2,     "ons",          ":Ip:1p/*",             false],
                [2,     "ez",           ":Ip:2p/*",             false],
                [5,     "ègnent",       ":Ip:Sp:3p/*",          false],
                [2,     "ais",          ":Iq:1s:2s/*",          false],
                [2,     "ait",          ":Iq:3s/*",             false],
                [2,     "ions",         ":Iq:Sp:1p/*",          false],
                [2,     "iez",          ":Iq:Sp:2p/*",          false],
                [2,     "aient",        ":Iq:3p/*",             false],
                [2,     "ai",           ":Is:1s/*",             false],
                [2,     "as",           ":Is:2s/*",             false],
                [2,     "a",            ":Is:3s/*",             false],
                [2,     "âmes",         ":Is:1p/*",             false],
                [2,     "âtes",         ":Is:2p/*",             false],
                [2,     "èrent",        ":Is:3p!/*",            false],
                [2,     "erai",         ":If:1s/M",             false],
                [5,     "ègnerai",      ":If:1s/R",             false],
                [2,     "eras",         ":If:2s/M",             false],
                [5,     "ègneras",      ":If:2s/R",             false],
                [2,     "era",          ":If:3s/M",             false],
                [5,     "ègnera",       ":If:3s/R",             false],
                [2,     "erons",        ":If:1p/M",             false],
                [5,     "ègnerons",     ":If:1p/R",             false],
                [2,     "erez",         ":If:2p/M",             false],
                [5,     "ègnerez",      ":If:2p/R",             false],
                [2,     "eront",        ":If:3p!/M",            false],
                [5,     "ègneront",     ":If:3p!/R",            false],
                [2,     "erais",        ":K:1s:2s/M",           false],
                [5,     "ègnerais",     ":K:1s:2s/R",           false],
                [2,     "erait",        ":K:3s/M",              false],
                [5,     "ègnerait",     ":K:3s/R",              false],
                [2,     "erions",       ":K:1p/M",              false],
                [5,     "ègnerions",    ":K:1p/R",              false],
                [2,     "eriez",        ":K:2p/M",              false],
                [5,     "ègneriez",     ":K:2p/R",              false],
                [2,     "eraient",      ":K:3p/M",              false],
                [5,     "ègneraient",   ":K:3p/R",              false],
                [2,     "asse",         ":Sq:1s/*",             false],
                [2,     "asses",        ":Sq:2s/*",             false],
                [2,     "ât",           ":Sq:3s/*",             false],
                [2,     "assions",      ":Sq:1p/*",             false],
                [2,     "assiez",       ":Sq:2p/*",             false],
                [2,     "assent",       ":Sq:3p/*",             false],
                [5,     "ègne",         ":E:2s/*",              false],
                [2,     "ons",          ":E:1p/*",              false],
                [2,     "ez",           ":E:2p/*",              false]
            ],

            "égrer": [
                [2,     "er",           ":Y/*",                 false],
                [2,     "ant",          ":P/*",                 false],
                [5,     "ègre",         ":Ip:Sp:1s:3s/*",       false],
                [2,     "è",            ":Ip:1ś/R",             false],
                [5,     "ègres",        ":Ip:Sp:2s/*",          false],
                [2,     "ons",          ":Ip:1p/*",             false],
                [2,     "ez",           ":Ip:2p/*",             false],
                [5,     "ègrent",       ":Ip:Sp:3p/*",          false],
                [2,     "ais",          ":Iq:1s:2s/*",          false],
                [2,     "ait",          ":Iq:3s/*",             false],
                [2,     "ions",         ":Iq:Sp:1p/*",          false],
                [2,     "iez",          ":Iq:Sp:2p/*",          false],
                [2,     "aient",        ":Iq:3p/*",             false],
                [2,     "ai",           ":Is:1s/*",             false],
                [2,     "as",           ":Is:2s/*",             false],
                [2,     "a",            ":Is:3s/*",             false],
                [2,     "âmes",         ":Is:1p/*",             false],
                [2,     "âtes",         ":Is:2p/*",             false],
                [2,     "èrent",        ":Is:3p!/*",            false],
                [2,     "erai",         ":If:1s/M",             false],
                [5,     "ègrerai",      ":If:1s/R",             false],
                [2,     "eras",         ":If:2s/M",             false],
                [5,     "ègreras",      ":If:2s/R",             false],
                [2,     "era",          ":If:3s/M",             false],
                [5,     "ègrera",       ":If:3s/R",             false],
                [2,     "erons",        ":If:1p/M",             false],
                [5,     "ègrerons",     ":If:1p/R",             false],
                [2,     "erez",         ":If:2p/M",             false],
                [5,     "ègrerez",      ":If:2p/R",             false],
                [2,     "eront",        ":If:3p!/M",            false],
                [5,     "ègreront",     ":If:3p!/R",            false],
                [2,     "erais",        ":K:1s:2s/M",           false],
                [5,     "ègrerais",     ":K:1s:2s/R",           false],
                [2,     "erait",        ":K:3s/M",              false],
                [5,     "ègrerait",     ":K:3s/R",              false],
                [2,     "erions",       ":K:1p/M",              false],
                [5,     "ègrerions",    ":K:1p/R",              false],
                [2,     "eriez",        ":K:2p/M",              false],
                [5,     "ègreriez",     ":K:2p/R",              false],
                [2,     "eraient",      ":K:3p/M",              false],
                [5,     "ègreraient",   ":K:3p/R",              false],
                [2,     "asse",         ":Sq:1s/*",             false],
                [2,     "asses",        ":Sq:2s/*",             false],
                [2,     "ât",           ":Sq:3s/*",             false],
                [2,     "assions",      ":Sq:1p/*",             false],
                [2,     "assiez",       ":Sq:2p/*",             false],
                [2,     "assent",       ":Sq:3p/*",             false],
                [5,     "ègre",         ":E:2s/*",              false],
                [2,     "ons",          ":E:1p/*",              false],
                [2,     "ez",           ":E:2p/*",              false]
            ],

            "éguer": [
                [2,     "er",           ":Y/*",                 false],
                [2,     "ant",          ":P/*",                 false],
                [5,     "ègue",         ":Ip:Sp:1s:3s/*",       false],
                [2,     "è",            ":Ip:1ś/R",             false],
                [5,     "ègues",        ":Ip:Sp:2s/*",          false],
                [2,     "ons",          ":Ip:1p/*",             false],
                [2,     "ez",           ":Ip:2p/*",             false],
                [5,     "èguent",       ":Ip:Sp:3p/*",          false],
                [2,     "ais",          ":Iq:1s:2s/*",          false],
                [2,     "ait",          ":Iq:3s/*",             false],
                [2,     "ions",         ":Iq:Sp:1p/*",          false],
                [2,     "iez",          ":Iq:Sp:2p/*",          false],
                [2,     "aient",        ":Iq:3p/*",             false],
                [2,     "ai",           ":Is:1s/*",             false],
                [2,     "as",           ":Is:2s/*",             false],
                [2,     "a",            ":Is:3s/*",             false],
                [2,     "âmes",         ":Is:1p/*",             false],
                [2,     "âtes",         ":Is:2p/*",             false],
                [2,     "èrent",        ":Is:3p!/*",            false],
                [2,     "erai",         ":If:1s/M",             false],
                [5,     "èguerai",      ":If:1s/R",             false],
                [2,     "eras",         ":If:2s/M",             false],
                [5,     "ègueras",      ":If:2s/R",             false],
                [2,     "era",          ":If:3s/M",             false],
                [5,     "èguera",       ":If:3s/R",             false],
                [2,     "erons",        ":If:1p/M",             false],
                [5,     "èguerons",     ":If:1p/R",             false],
                [2,     "erez",         ":If:2p/M",             false],
                [5,     "èguerez",      ":If:2p/R",             false],
                [2,     "eront",        ":If:3p!/M",            false],
                [5,     "ègueront",     ":If:3p!/R",            false],
                [2,     "erais",        ":K:1s:2s/M",           false],
                [5,     "èguerais",     ":K:1s:2s/R",           false],
                [2,     "erait",        ":K:3s/M",              false],
                [5,     "èguerait",     ":K:3s/R",              false],
                [2,     "erions",       ":K:1p/M",              false],
                [5,     "èguerions",    ":K:1p/R",              false],
                [2,     "eriez",        ":K:2p/M",              false],
                [5,     "ègueriez",     ":K:2p/R",              false],
                [2,     "eraient",      ":K:3p/M",              false],
                [5,     "ègueraient",   ":K:3p/R",              false],
                [2,     "asse",         ":Sq:1s/*",             false],
                [2,     "asses",        ":Sq:2s/*",             false],
                [2,     "ât",           ":Sq:3s/*",             false],
                [2,     "assions",      ":Sq:1p/*",             false],
                [2,     "assiez",       ":Sq:2p/*",             false],
                [2,     "assent",       ":Sq:3p/*",             false],
                [5,     "ègue",         ":E:2s/*",              false],
                [2,     "ons",          ":E:1p/*",              false],
                [2,     "ez",           ":E:2p/*",              false]
            ],

            "éler": [
                [2,     "er",           ":Y/*",                 false],
                [2,     "ant",          ":P/*",                 false],
                [4,     "èle",          ":Ip:Sp:1s:3s/*",       false],
                [2,     "è",            ":Ip:1ś/R",             false],
                [4,     "èles",         ":Ip:Sp:2s/*",          false],
                [2,     "ons",          ":Ip:1p/*",             false],
                [2,     "ez",           ":Ip:2p/*",             false],
                [4,     "èlent",        ":Ip:Sp:3p/*",          false],
                [2,     "ais",          ":Iq:1s:2s/*",          false],
                [2,     "ait",          ":Iq:3s/*",             false],
                [2,     "ions",         ":Iq:Sp:1p/*",          false],
                [2,     "iez",          ":Iq:Sp:2p/*",          false],
                [2,     "aient",        ":Iq:3p/*",             false],
                [2,     "ai",           ":Is:1s/*",             false],
                [2,     "as",           ":Is:2s/*",             false],
                [2,     "a",            ":Is:3s/*",             false],
                [2,     "âmes",         ":Is:1p/*",             false],
                [2,     "âtes",         ":Is:2p/*",             false],
                [2,     "èrent",        ":Is:3p!/*",            false],
                [2,     "erai",         ":If:1s/M",             false],
                [4,     "èlerai",       ":If:1s/R",             false],
                [2,     "eras",         ":If:2s/M",             false],
                [4,     "èleras",       ":If:2s/R",             false],
                [2,     "era",          ":If:3s/M",             false],
                [4,     "èlera",        ":If:3s/R",             false],
                [2,     "erons",        ":If:1p/M",             false],
                [4,     "èlerons",      ":If:1p/R",             false],
                [2,     "erez",         ":If:2p/M",             false],
                [4,     "èlerez",       ":If:2p/R",             false],
                [2,     "eront",        ":If:3p!/M",            false],
                [4,     "èleront",      ":If:3p!/R",            false],
                [2,     "erais",        ":K:1s:2s/M",           false],
                [4,     "èlerais",      ":K:1s:2s/R",           false],
                [2,     "erait",        ":K:3s/M",              false],
                [4,     "èlerait",      ":K:3s/R",              false],
                [2,     "erions",       ":K:1p/M",              false],
                [4,     "èlerions",     ":K:1p/R",              false],
                [2,     "eriez",        ":K:2p/M",              false],
                [4,     "èleriez",      ":K:2p/R",              false],
                [2,     "eraient",      ":K:3p/M",              false],
                [4,     "èleraient",    ":K:3p/R",              false],
                [2,     "asse",         ":Sq:1s/*",             false],
                [2,     "asses",        ":Sq:2s/*",             false],
                [2,     "ât",           ":Sq:3s/*",             false],
                [2,     "assions",      ":Sq:1p/*",             false],
                [2,     "assiez",       ":Sq:2p/*",             false],
                [2,     "assent",       ":Sq:3p/*",             false],
                [4,     "èle",          ":E:2s/*",              false],
                [2,     "ons",          ":E:1p/*",              false],
                [2,     "ez",           ":E:2p/*",              false]
            ],

            "émer": [
                [2,     "er",           ":Y/*",                 false],
                [2,     "ant",          ":P/*",                 false],
                [4,     "ème",          ":Ip:Sp:1s:3s/*",       false],
                [2,     "è",            ":Ip:1ś/R",             false],
                [4,     "èmes",         ":Ip:Sp:2s/*",          false],
                [2,     "ons",          ":Ip:1p/*",             false],
                [2,     "ez",           ":Ip:2p/*",             false],
                [4,     "èment",        ":Ip:Sp:3p/*",          false],
                [2,     "ais",          ":Iq:1s:2s/*",          false],
                [2,     "ait",          ":Iq:3s/*",             false],
                [2,     "ions",         ":Iq:Sp:1p/*",          false],
                [2,     "iez",          ":Iq:Sp:2p/*",          false],
                [2,     "aient",        ":Iq:3p/*",             false],
                [2,     "ai",           ":Is:1s/*",             false],
                [2,     "as",           ":Is:2s/*",             false],
                [2,     "a",            ":Is:3s/*",             false],
                [2,     "âmes",         ":Is:1p/*",             false],
                [2,     "âtes",         ":Is:2p/*",             false],
                [2,     "èrent",        ":Is:3p!/*",            false],
                [2,     "erai",         ":If:1s/M",             false],
                [4,     "èmerai",       ":If:1s/R",             false],
                [2,     "eras",         ":If:2s/M",             false],
                [4,     "èmeras",       ":If:2s/R",             false],
                [2,     "era",          ":If:3s/M",             false],
                [4,     "èmera",        ":If:3s/R",             false],
                [2,     "erons",        ":If:1p/M",             false],
                [4,     "èmerons",      ":If:1p/R",             false],
                [2,     "erez",         ":If:2p/M",             false],
                [4,     "èmerez",       ":If:2p/R",             false],
                [2,     "eront",        ":If:3p!/M",            false],
                [4,     "èmeront",      ":If:3p!/R",            false],
                [2,     "erais",        ":K:1s:2s/M",           false],
                [4,     "èmerais",      ":K:1s:2s/R",           false],
                [2,     "erait",        ":K:3s/M",              false],
                [4,     "èmerait",      ":K:3s/R",              false],
                [2,     "erions",       ":K:1p/M",              false],
                [4,     "èmerions",     ":K:1p/R",              false],
                [2,     "eriez",        ":K:2p/M",              false],
                [4,     "èmeriez",      ":K:2p/R",              false],
                [2,     "eraient",      ":K:3p/M",              false],
                [4,     "èmeraient",    ":K:3p/R",              false],
                [2,     "asse",         ":Sq:1s/*",             false],
                [2,     "asses",        ":Sq:2s/*",             false],
                [2,     "ât",           ":Sq:3s/*",             false],
                [2,     "assions",      ":Sq:1p/*",             false],
                [2,     "assiez",       ":Sq:2p/*",             false],
                [2,     "assent",       ":Sq:3p/*",             false],
                [4,     "ème",          ":E:2s/*",              false],
                [2,     "ons",          ":E:1p/*",              false],
                [2,     "ez",           ":E:2p/*",              false]
            ],

            "éner": [
                [2,     "er",           ":Y/*",                 false],
                [2,     "ant",          ":P/*",                 false],
                [4,     "ène",          ":Ip:Sp:1s:3s/*",       false],
                [2,     "è",            ":Ip:1ś/R",             false],
                [4,     "ènes",         ":Ip:Sp:2s/*",          false],
                [2,     "ons",          ":Ip:1p/*",             false],
                [2,     "ez",           ":Ip:2p/*",             false],
                [4,     "ènent",        ":Ip:Sp:3p/*",          false],
                [2,     "ais",          ":Iq:1s:2s/*",          false],
                [2,     "ait",          ":Iq:3s/*",             false],
                [2,     "ions",         ":Iq:Sp:1p/*",          false],
                [2,     "iez",          ":Iq:Sp:2p/*",          false],
                [2,     "aient",        ":Iq:3p/*",             false],
                [2,     "ai",           ":Is:1s/*",             false],
                [2,     "as",           ":Is:2s/*",             false],
                [2,     "a",            ":Is:3s/*",             false],
                [2,     "âmes",         ":Is:1p/*",             false],
                [2,     "âtes",         ":Is:2p/*",             false],
                [2,     "èrent",        ":Is:3p!/*",            false],
                [2,     "erai",         ":If:1s/M",             false],
                [4,     "ènerai",       ":If:1s/R",             false],
                [2,     "eras",         ":If:2s/M",             false],
                [4,     "èneras",       ":If:2s/R",             false],
                [2,     "era",          ":If:3s/M",             false],
                [4,     "ènera",        ":If:3s/R",             false],
                [2,     "erons",        ":If:1p/M",             false],
                [4,     "ènerons",      ":If:1p/R",             false],
                [2,     "erez",         ":If:2p/M",             false],
                [4,     "ènerez",       ":If:2p/R",             false],
                [2,     "eront",        ":If:3p!/M",            false],
                [4,     "èneront",      ":If:3p!/R",            false],
                [2,     "erais",        ":K:1s:2s/M",           false],
                [4,     "ènerais",      ":K:1s:2s/R",           false],
                [2,     "erait",        ":K:3s/M",              false],
                [4,     "ènerait",      ":K:3s/R",              false],
                [2,     "erions",       ":K:1p/M",              false],
                [4,     "ènerions",     ":K:1p/R",              false],
                [2,     "eriez",        ":K:2p/M",              false],
                [4,     "èneriez",      ":K:2p/R",              false],
                [2,     "eraient",      ":K:3p/M",              false],
                [4,     "èneraient",    ":K:3p/R",              false],
                [2,     "asse",         ":Sq:1s/*",             false],
                [2,     "asses",        ":Sq:2s/*",             false],
                [2,     "ât",           ":Sq:3s/*",             false],
                [2,     "assions",      ":Sq:1p/*",             false],
                [2,     "assiez",       ":Sq:2p/*",             false],
                [2,     "assent",       ":Sq:3p/*",             false],
                [4,     "ène",          ":E:2s/*",              false],
                [2,     "ons",          ":E:1p/*",              false],
                [2,     "ez",           ":E:2p/*",              false]
            ],

            "éper": [
                [2,     "er",           ":Y/*",                 false],
                [2,     "ant",          ":P/*",                 false],
                [4,     "èpe",          ":Ip:Sp:1s:3s/*",       false],
                [2,     "è",            ":Ip:1ś/R",             false],
                [4,     "èpes",         ":Ip:Sp:2s/*",          false],
                [2,     "ons",          ":Ip:1p/*",             false],
                [2,     "ez",           ":Ip:2p/*",             false],
                [4,     "èpent",        ":Ip:Sp:3p/*",          false],
                [2,     "ais",          ":Iq:1s:2s/*",          false],
                [2,     "ait",          ":Iq:3s/*",             false],
                [2,     "ions",         ":Iq:Sp:1p/*",          false],
                [2,     "iez",          ":Iq:Sp:2p/*",          false],
                [2,     "aient",        ":Iq:3p/*",             false],
                [2,     "ai",           ":Is:1s/*",             false],
                [2,     "as",           ":Is:2s/*",             false],
                [2,     "a",            ":Is:3s/*",             false],
                [2,     "âmes",         ":Is:1p/*",             false],
                [2,     "âtes",         ":Is:2p/*",             false],
                [2,     "èrent",        ":Is:3p!/*",            false],
                [2,     "erai",         ":If:1s/M",             false],
                [4,     "èperai",       ":If:1s/R",             false],
                [2,     "eras",         ":If:2s/M",             false],
                [4,     "èperas",       ":If:2s/R",             false],
                [2,     "era",          ":If:3s/M",             false],
                [4,     "èpera",        ":If:3s/R",             false],
                [2,     "erons",        ":If:1p/M",             false],
                [4,     "èperons",      ":If:1p/R",             false],
                [2,     "erez",         ":If:2p/M",             false],
                [4,     "èperez",       ":If:2p/R",             false],
                [2,     "eront",        ":If:3p!/M",            false],
                [4,     "èperont",      ":If:3p!/R",            false],
                [2,     "erais",        ":K:1s:2s/M",           false],
                [4,     "èperais",      ":K:1s:2s/R",           false],
                [2,     "erait",        ":K:3s/M",              false],
                [4,     "èperait",      ":K:3s/R",              false],
                [2,     "erions",       ":K:1p/M",              false],
                [4,     "èperions",     ":K:1p/R",              false],
                [2,     "eriez",        ":K:2p/M",              false],
                [4,     "èperiez",      ":K:2p/R",              false],
                [2,     "eraient",      ":K:3p/M",              false],
                [4,     "èperaient",    ":K:3p/R",              false],
                [2,     "asse",         ":Sq:1s/*",             false],
                [2,     "asses",        ":Sq:2s/*",             false],
                [2,     "ât",           ":Sq:3s/*",             false],
                [2,     "assions",      ":Sq:1p/*",             false],
                [2,     "assiez",       ":Sq:2p/*",             false],
                [2,     "assent",       ":Sq:3p/*",             false],
                [4,     "èpe",          ":E:2s/*",              false],
                [2,     "ons",          ":E:1p/*",              false],
                [2,     "ez",           ":E:2p/*",              false]
            ],

            "équer": [
                [2,     "er",           ":Y/*",                 false],
                [2,     "ant",          ":P/*",                 false],
                [5,     "èque",         ":Ip:Sp:1s:3s/*",       false],
                [2,     "è",            ":Ip:1ś/R",             false],
                [5,     "èques",        ":Ip:Sp:2s/*",          false],
                [2,     "ons",          ":Ip:1p/*",             false],
                [2,     "ez",           ":Ip:2p/*",             false],
                [5,     "èquent",       ":Ip:Sp:3p/*",          false],
                [2,     "ais",          ":Iq:1s:2s/*",          false],
                [2,     "ait",          ":Iq:3s/*",             false],
                [2,     "ions",         ":Iq:Sp:1p/*",          false],
                [2,     "iez",          ":Iq:Sp:2p/*",          false],
                [2,     "aient",        ":Iq:3p/*",             false],
                [2,     "ai",           ":Is:1s/*",             false],
                [2,     "as",           ":Is:2s/*",             false],
                [2,     "a",            ":Is:3s/*",             false],
                [2,     "âmes",         ":Is:1p/*",             false],
                [2,     "âtes",         ":Is:2p/*",             false],
                [2,     "èrent",        ":Is:3p!/*",            false],
                [2,     "erai",         ":If:1s/M",             false],
                [5,     "èquerai",      ":If:1s/R",             false],
                [2,     "eras",         ":If:2s/M",             false],
                [5,     "èqueras",      ":If:2s/R",             false],
                [2,     "era",          ":If:3s/M",             false],
                [5,     "èquera",       ":If:3s/R",             false],
                [2,     "erons",        ":If:1p/M",             false],
                [5,     "èquerons",     ":If:1p/R",             false],
                [2,     "erez",         ":If:2p/M",             false],
                [5,     "èquerez",      ":If:2p/R",             false],
                [2,     "eront",        ":If:3p!/M",            false],
                [5,     "èqueront",     ":If:3p!/R",            false],
                [2,     "erais",        ":K:1s:2s/M",           false],
                [5,     "èquerais",     ":K:1s:2s/R",           false],
                [2,     "erait",        ":K:3s/M",              false],
                [5,     "èquerait",     ":K:3s/R",              false],
                [2,     "erions",       ":K:1p/M",              false],
                [5,     "èquerions",    ":K:1p/R",              false],
                [2,     "eriez",        ":K:2p/M",              false],
                [5,     "èqueriez",     ":K:2p/R",              false],
                [2,     "eraient",      ":K:3p/M",              false],
                [5,     "èqueraient",   ":K:3p/R",              false],
                [2,     "asse",         ":Sq:1s/*",             false],
                [2,     "asses",        ":Sq:2s/*",             false],
                [2,     "ât",           ":Sq:3s/*",             false],
                [2,     "assions",      ":Sq:1p/*",             false],
                [2,     "assiez",       ":Sq:2p/*",             false],
                [2,     "assent",       ":Sq:3p/*",             false],
                [5,     "èque",         ":E:2s/*",              false],
                [2,     "ons",          ":E:1p/*",              false],
                [2,     "ez",           ":E:2p/*",              false]
            ],

            "érer": [
                [2,     "er",           ":Y/*",                 false],
                [2,     "ant",          ":P/*",                 false],
                [4,     "ère",          ":Ip:Sp:1s:3s/*",       false],
                [2,     "è",            ":Ip:1ś/R",             false],
                [4,     "ères",         ":Ip:Sp:2s/*",          false],
                [2,     "ons",          ":Ip:1p/*",             false],
                [2,     "ez",           ":Ip:2p/*",             false],
                [4,     "èrent",        ":Ip:Sp:3p/*",          false],
                [2,     "ais",          ":Iq:1s:2s/*",          false],
                [2,     "ait",          ":Iq:3s/*",             false],
                [2,     "ions",         ":Iq:Sp:1p/*",          false],
                [2,     "iez",          ":Iq:Sp:2p/*",          false],
                [2,     "aient",        ":Iq:3p/*",             false],
                [2,     "ai",           ":Is:1s/*",             false],
                [2,     "as",           ":Is:2s/*",             false],
                [2,     "a",            ":Is:3s/*",             false],
                [2,     "âmes",         ":Is:1p/*",             false],
                [2,     "âtes",         ":Is:2p/*",             false],
                [2,     "èrent",        ":Is:3p!/*",            false],
                [2,     "erai",         ":If:1s/M",             false],
                [4,     "èrerai",       ":If:1s/R",             false],
                [2,     "eras",         ":If:2s/M",             false],
                [4,     "èreras",       ":If:2s/R",             false],
                [2,     "era",          ":If:3s/M",             false],
                [4,     "èrera",        ":If:3s/R",             false],
                [2,     "erons",        ":If:1p/M",             false],
                [4,     "èrerons",      ":If:1p/R",             false],
                [2,     "erez",         ":If:2p/M",             false],
                [4,     "èrerez",       ":If:2p/R",             false],
                [2,     "eront",        ":If:3p!/M",            false],
                [4,     "èreront",      ":If:3p!/R",            false],
                [2,     "erais",        ":K:1s:2s/M",           false],
                [4,     "èrerais",      ":K:1s:2s/R",           false],
                [2,     "erait",        ":K:3s/M",              false],
                [4,     "èrerait",      ":K:3s/R",              false],
                [2,     "erions",       ":K:1p/M",              false],
                [4,     "èrerions",     ":K:1p/R",              false],
                [2,     "eriez",        ":K:2p/M",              false],
                [4,     "èreriez",      ":K:2p/R",              false],
                [2,     "eraient",      ":K:3p/M",              false],
                [4,     "èreraient",    ":K:3p/R",              false],
                [2,     "asse",         ":Sq:1s/*",             false],
                [2,     "asses",        ":Sq:2s/*",             false],
                [2,     "ât",           ":Sq:3s/*",             false],
                [2,     "assions",      ":Sq:1p/*",             false],
                [2,     "assiez",       ":Sq:2p/*",             false],
                [2,     "assent",       ":Sq:3p/*",             false],
                [4,     "ère",          ":E:2s/*",              false],
                [2,     "ons",          ":E:1p/*",              false],
                [2,     "ez",           ":E:2p/*",              false]
            ],

            "éser": [
                [2,     "er",           ":Y/*",                 false],
                [2,     "ant",          ":P/*",                 false],
                [4,     "èse",          ":Ip:Sp:1s:3s/*",       false],
                [2,     "è",            ":Ip:1ś/R",             false],
                [4,     "èses",         ":Ip:Sp:2s/*",          false],
                [2,     "ons",          ":Ip:1p/*",             false],
                [2,     "ez",           ":Ip:2p/*",             false],
                [4,     "èsent",        ":Ip:Sp:3p/*",          false],
                [2,     "ais",          ":Iq:1s:2s/*",          false],
                [2,     "ait",          ":Iq:3s/*",             false],
                [2,     "ions",         ":Iq:Sp:1p/*",          false],
                [2,     "iez",          ":Iq:Sp:2p/*",          false],
                [2,     "aient",        ":Iq:3p/*",             false],
                [2,     "ai",           ":Is:1s/*",             false],
                [2,     "as",           ":Is:2s/*",             false],
                [2,     "a",            ":Is:3s/*",             false],
                [2,     "âmes",         ":Is:1p/*",             false],
                [2,     "âtes",         ":Is:2p/*",             false],
                [2,     "èrent",        ":Is:3p!/*",            false],
                [2,     "erai",         ":If:1s/M",             false],
                [4,     "èserai",       ":If:1s/R",             false],
                [2,     "eras",         ":If:2s/M",             false],
                [4,     "èseras",       ":If:2s/R",             false],
                [2,     "era",          ":If:3s/M",             false],
                [4,     "èsera",        ":If:3s/R",             false],
                [2,     "erons",        ":If:1p/M",             false],
                [4,     "èserons",      ":If:1p/R",             false],
                [2,     "erez",         ":If:2p/M",             false],
                [4,     "èserez",       ":If:2p/R",             false],
                [2,     "eront",        ":If:3p!/M",            false],
                [4,     "èseront",      ":If:3p!/R",            false],
                [2,     "erais",        ":K:1s:2s/M",           false],
                [4,     "èserais",      ":K:1s:2s/R",           false],
                [2,     "erait",        ":K:3s/M",              false],
                [4,     "èserait",      ":K:3s/R",              false],
                [2,     "erions",       ":K:1p/M",              false],
                [4,     "èserions",     ":K:1p/R",              false],
                [2,     "eriez",        ":K:2p/M",              false],
                [4,     "èseriez",      ":K:2p/R",              false],
                [2,     "eraient",      ":K:3p/M",              false],
                [4,     "èseraient",    ":K:3p/R",              false],
                [2,     "asse",         ":Sq:1s/*",             false],
                [2,     "asses",        ":Sq:2s/*",             false],
                [2,     "ât",           ":Sq:3s/*",             false],
                [2,     "assions",      ":Sq:1p/*",             false],
                [2,     "assiez",       ":Sq:2p/*",             false],
                [2,     "assent",       ":Sq:3p/*",             false],
                [4,     "èse",          ":E:2s/*",              false],
                [2,     "ons",          ":E:1p/*",              false],
                [2,     "ez",           ":E:2p/*",              false]
            ],

            "éter": [
                [2,     "er",           ":Y/*",                 false],
                [2,     "ant",          ":P/*",                 false],
                [4,     "ète",          ":Ip:Sp:1s:3s/*",       false],
                [2,     "è",            ":Ip:1ś/R",             false],
                [4,     "ètes",         ":Ip:Sp:2s/*",          false],
                [2,     "ons",          ":Ip:1p/*",             false],
                [2,     "ez",           ":Ip:2p/*",             false],
                [4,     "ètent",        ":Ip:Sp:3p/*",          false],
                [2,     "ais",          ":Iq:1s:2s/*",          false],
                [2,     "ait",          ":Iq:3s/*",             false],
                [2,     "ions",         ":Iq:Sp:1p/*",          false],
                [2,     "iez",          ":Iq:Sp:2p/*",          false],
                [2,     "aient",        ":Iq:3p/*",             false],
                [2,     "ai",           ":Is:1s/*",             false],
                [2,     "as",           ":Is:2s/*",             false],
                [2,     "a",            ":Is:3s/*",             false],
                [2,     "âmes",         ":Is:1p/*",             false],
                [2,     "âtes",         ":Is:2p/*",             false],
                [2,     "èrent",        ":Is:3p!/*",            false],
                [2,     "erai",         ":If:1s/M",             false],
                [4,     "èterai",       ":If:1s/R",             false],
                [2,     "eras",         ":If:2s/M",             false],
                [4,     "èteras",       ":If:2s/R",             false],
                [2,     "era",          ":If:3s/M",             false],
                [4,     "ètera",        ":If:3s/R",             false],
                [2,     "erons",        ":If:1p/M",             false],
                [4,     "èterons",      ":If:1p/R",             false],
                [2,     "erez",         ":If:2p/M",             false],
                [4,     "èterez",       ":If:2p/R",             false],
                [2,     "eront",        ":If:3p!/M",            false],
                [4,     "èteront",      ":If:3p!/R",            false],
                [2,     "erais",        ":K:1s:2s/M",           false],
                [4,     "èterais",      ":K:1s:2s/R",           false],
                [2,     "erait",        ":K:3s/M",              false],
                [4,     "èterait",      ":K:3s/R",              false],
                [2,     "erions",       ":K:1p/M",              false],
                [4,     "èterions",     ":K:1p/R",              false],
                [2,     "eriez",        ":K:2p/M",              false],
                [4,     "èteriez",      ":K:2p/R",              false],
                [2,     "eraient",      ":K:3p/M",              false],
                [4,     "èteraient",    ":K:3p/R",              false],
                [2,     "asse",         ":Sq:1s/*",             false],
                [2,     "asses",        ":Sq:2s/*",             false],
                [2,     "ât",           ":Sq:3s/*",             false],
                [2,     "assions",      ":Sq:1p/*",             false],
                [2,     "assiez",       ":Sq:2p/*",             false],
                [2,     "assent",       ":Sq:3p/*",             false],
                [4,     "ète",          ":E:2s/*",              false],
                [2,     "ons",          ":E:1p/*",              false],
                [2,     "ez",           ":E:2p/*",              false]
            ],

            "étrer": [
                [2,     "er",           ":Y/*",                 false],
                [2,     "ant",          ":P/*",                 false],
                [5,     "ètre",         ":Ip:Sp:1s:3s/*",       false],
                [2,     "è",            ":Ip:1ś/R",             false],
                [5,     "ètres",        ":Ip:Sp:2s/*",          false],
                [2,     "ons",          ":Ip:1p/*",             false],
                [2,     "ez",           ":Ip:2p/*",             false],
                [5,     "ètrent",       ":Ip:Sp:3p/*",          false],
                [2,     "ais",          ":Iq:1s:2s/*",          false],
                [2,     "ait",          ":Iq:3s/*",             false],
                [2,     "ions",         ":Iq:Sp:1p/*",          false],
                [2,     "iez",          ":Iq:Sp:2p/*",          false],
                [2,     "aient",        ":Iq:3p/*",             false],
                [2,     "ai",           ":Is:1s/*",             false],
                [2,     "as",           ":Is:2s/*",             false],
                [2,     "a",            ":Is:3s/*",             false],
                [2,     "âmes",         ":Is:1p/*",             false],
                [2,     "âtes",         ":Is:2p/*",             false],
                [2,     "èrent",        ":Is:3p!/*",            false],
                [2,     "erai",         ":If:1s/M",             false],
                [5,     "ètrerai",      ":If:1s/R",             false],
                [2,     "eras",         ":If:2s/M",             false],
                [5,     "ètreras",      ":If:2s/R",             false],
                [2,     "era",          ":If:3s/M",             false],
                [5,     "ètrera",       ":If:3s/R",             false],
                [2,     "erons",        ":If:1p/M",             false],
                [5,     "ètrerons",     ":If:1p/R",             false],
                [2,     "erez",         ":If:2p/M",             false],
                [5,     "ètrerez",      ":If:2p/R",             false],
                [2,     "eront",        ":If:3p!/M",            false],
                [5,     "ètreront",     ":If:3p!/R",            false],
                [2,     "erais",        ":K:1s:2s/M",           false],
                [5,     "ètrerais",     ":K:1s:2s/R",           false],
                [2,     "erait",        ":K:3s/M",              false],
                [5,     "ètrerait",     ":K:3s/R",              false],
                [2,     "erions",       ":K:1p/M",              false],
                [5,     "ètrerions",    ":K:1p/R",              false],
                [2,     "eriez",        ":K:2p/M",              false],
                [5,     "ètreriez",     ":K:2p/R",              false],
                [2,     "eraient",      ":K:3p/M",              false],
                [5,     "ètreraient",   ":K:3p/R",              false],
                [2,     "asse",         ":Sq:1s/*",             false],
                [2,     "asses",        ":Sq:2s/*",             false],
                [2,     "ât",           ":Sq:3s/*",             false],
                [2,     "assions",      ":Sq:1p/*",             false],
                [2,     "assiez",       ":Sq:2p/*",             false],
                [2,     "assent",       ":Sq:3p/*",             false],
                [5,     "ètre",         ":E:2s/*",              false],
                [2,     "ons",          ":E:1p/*",              false],
                [2,     "ez",           ":E:2p/*",              false]
            ],

            "évrer": [
                [2,     "er",           ":Y/*",                 false],
                [2,     "ant",          ":P/*",                 false],
                [5,     "èvre",         ":Ip:Sp:1s:3s/*",       false],
                [2,     "è",            ":Ip:1ś/R",             false],
                [5,     "èvres",        ":Ip:Sp:2s/*",          false],
                [2,     "ons",          ":Ip:1p/*",             false],
                [2,     "ez",           ":Ip:2p/*",             false],
                [5,     "èvrent",       ":Ip:Sp:3p/*",          false],
                [2,     "ais",          ":Iq:1s:2s/*",          false],
                [2,     "ait",          ":Iq:3s/*",             false],
                [2,     "ions",         ":Iq:Sp:1p/*",          false],
                [2,     "iez",          ":Iq:Sp:2p/*",          false],
                [2,     "aient",        ":Iq:3p/*",             false],
                [2,     "ai",           ":Is:1s/*",             false],
                [2,     "as",           ":Is:2s/*",             false],
                [2,     "a",            ":Is:3s/*",             false],
                [2,     "âmes",         ":Is:1p/*",             false],
                [2,     "âtes",         ":Is:2p/*",             false],
                [2,     "èrent",        ":Is:3p!/*",            false],
                [2,     "erai",         ":If:1s/M",             false],
                [5,     "èvrerai",      ":If:1s/R",             false],
                [2,     "eras",         ":If:2s/M",             false],
                [5,     "èvreras",      ":If:2s/R",             false],
                [2,     "era",          ":If:3s/M",             false],
                [5,     "èvrera",       ":If:3s/R",             false],
                [2,     "erons",        ":If:1p/M",             false],
                [5,     "èvrerons",     ":If:1p/R",             false],
                [2,     "erez",         ":If:2p/M",             false],
                [5,     "èvrerez",      ":If:2p/R",             false],
                [2,     "eront",        ":If:3p!/M",            false],
                [5,     "èvreront",     ":If:3p!/R",            false],
                [2,     "erais",        ":K:1s:2s/M",           false],
                [5,     "èvrerais",     ":K:1s:2s/R",           false],
                [2,     "erait",        ":K:3s/M",              false],
                [5,     "èvrerait",     ":K:3s/R",              false],
                [2,     "erions",       ":K:1p/M",              false],
                [5,     "èvrerions",    ":K:1p/R",              false],
                [2,     "eriez",        ":K:2p/M",              false],
                [5,     "èvreriez",     ":K:2p/R",              false],
                [2,     "eraient",      ":K:3p/M",              false],
                [5,     "èvreraient",   ":K:3p/R",              false],
                [2,     "asse",         ":Sq:1s/*",             false],
                [2,     "asses",        ":Sq:2s/*",             false],
                [2,     "ât",           ":Sq:3s/*",             false],
                [2,     "assions",      ":Sq:1p/*",             false],
                [2,     "assiez",       ":Sq:2p/*",             false],
                [2,     "assent",       ":Sq:3p/*",             false],
                [5,     "èvre",         ":E:2s/*",              false],
                [2,     "ons",          ":E:1p/*",              false],
                [2,     "ez",           ":E:2p/*",              false]
            ],

            "éyer": [
                [2,     "er",           ":Y/*",                 false],
                [2,     "ant",          ":P/*",                 false],
                [4,     "èye",          ":Ip:Sp:1s:3s/*",       false],
                [2,     "è",            ":Ip:1ś/R",             false],
                [4,     "èyes",         ":Ip:Sp:2s/*",          false],
                [2,     "ons",          ":Ip:1p/*",             false],
                [2,     "ez",           ":Ip:2p/*",             false],
                [4,     "èyent",        ":Ip:Sp:3p/*",          false],
                [2,     "ais",          ":Iq:1s:2s/*",          false],
                [2,     "ait",          ":Iq:3s/*",             false],
                [2,     "ions",         ":Iq:Sp:1p/*",          false],
                [2,     "iez",          ":Iq:Sp:2p/*",          false],
                [2,     "aient",        ":Iq:3p/*",             false],
                [2,     "ai",           ":Is:1s/*",             false],
                [2,     "as",           ":Is:2s/*",             false],
                [2,     "a",            ":Is:3s/*",             false],
                [2,     "âmes",         ":Is:1p/*",             false],
                [2,     "âtes",         ":Is:2p/*",             false],
                [2,     "èrent",        ":Is:3p!/*",            false],
                [2,     "erai",         ":If:1s/M",             false],
                [4,     "èyerai",       ":If:1s/R",             false],
                [2,     "eras",         ":If:2s/M",             false],
                [4,     "èyeras",       ":If:2s/R",             false],
                [2,     "era",          ":If:3s/M",             false],
                [4,     "èyera",        ":If:3s/R",             false],
                [2,     "erons",        ":If:1p/M",             false],
                [4,     "èyerons",      ":If:1p/R",             false],
                [2,     "erez",         ":If:2p/M",             false],
                [4,     "èyerez",       ":If:2p/R",             false],
                [2,     "eront",        ":If:3p!/M",            false],
                [4,     "èyeront",      ":If:3p!/R",            false],
                [2,     "erais",        ":K:1s:2s/M",           false],
                [4,     "èyerais",      ":K:1s:2s/R",           false],
                [2,     "erait",        ":K:3s/M",              false],
                [4,     "èyerait",      ":K:3s/R",              false],
                [2,     "erions",       ":K:1p/M",              false],
                [4,     "èyerions",     ":K:1p/R",              false],
                [2,     "eriez",        ":K:2p/M",              false],
                [4,     "èyeriez",      ":K:2p/R",              false],
                [2,     "eraient",      ":K:3p/M",              false],
                [4,     "èyeraient",    ":K:3p/R",              false],
                [2,     "asse",         ":Sq:1s/*",             false],
                [2,     "asses",        ":Sq:2s/*",             false],
                [2,     "ât",           ":Sq:3s/*",             false],
                [2,     "assions",      ":Sq:1p/*",             false],
                [2,     "assiez",       ":Sq:2p/*",             false],
                [2,     "assent",       ":Sq:3p/*",             false],
                [4,     "èye",          ":E:2s/*",              false],
                [2,     "ons",          ":E:1p/*",              false],
                [2,     "ez",           ":E:2p/*",              false]
            ]
        }
    }
};

Added gc_lang/fr/modules/conj_generator.py version [908448219c].














































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
# Conjugation generator
# beta stage, unfinished, the root for a new way to generate flexions…

import re


def conjugate (sVerb, sVerbTag="i_____a", bVarPpas=True):
    lConj = []
    cGroup = getVerbGroupChar(sVerb)
    for nCut, sAdd, sFlexTags, sPattern in getConjRules(sVerb):
        if not sPattern or re.search(sPattern, sVerb):
            lConj.append((sVerb[0:-nCut]+sAdd, ":V" + cGroup + "_" + sVerbTag + sFlexTags))
    return lConj


def getVerbGroupChar (sVerb, ):
    sVerb = sVerb.lower()
    if sVerb.endswith("er"):
        return "1"
    if sVerb.endswith("ir"):
        return "2"
    if sVerb == "être" or sVerb == "avoir":
        return "0"
    if sVerb.endswith("re"):
        return "3"
    return "4"


def getConjRules (sVerb, bVarPpas=True, nGroup=2):
    if sVerb.endswith("er"):
        # premier groupe, conjugaison en fonction de la terminaison du lemme
        # 5 lettres
        if sVerb[-5:] in oConj["V1"]:
            lConj = oConj["V1"][sVerb[-5:]]
        # 4 lettres
        elif sVerb[-4:] in oConj["V1"]:
            if sVerb.endswith(("eler", "eter")):
                lConj = oConj["V1"][sVerb[-4:]]["1"]
            lConj = oConj["V1"][sVerb[-4:]]
        # 3 lettres
        elif sVerb[-3:] in oConj["V1"]:
            lConj = oConj["V1"][sVerb[-3:]]
        else:
            lConj = oConj["V1"]["er"]
        lConj.extend(oConj["V1_ppas"][bVarPpas])
    elif sVerb.endswith("ir") and nGroup <= 2:
        # deuxième groupe
        lConj = oConj["V2"]
        lConj.extend(oConj["V2_ppas"][bVarPpas])
    else:
        # TODO: troisième groupe
        lConj = [ [0, "", ":Y/*", false] ]
    return lConj


oConj = {
    "V1_ppas": {
        True: [
            [2,     "é",           ":Q:A:1ŝ:m:s/*",     False],
            [2,     "és",          ":Q:A:m:p/*",        False],
            [2,     "ée",          ":Q:A:f:s/*",        False],
            [2,     "ées",         ":Q:A:f:p/*",        False],
        ],
        False: [
            [2,     "é",           ":Q:e:i/*",          False],
        ]
    },

    "V2_ppas": {
        True: [
            [2,     "i",           ":Q:A:m:s/*",        False],
            [2,     "is",          ":Q:A:m:p/*",        False],
            [2,     "ie",          ":Q:A:f:s/*",        False],
            [2,     "ies",         ":Q:A:f:p/*",        False],
        ],
        False: [
            [2,     "i",           ":Q:e:i/*",          False],
        ]
    },

    # deuxième groupe (le seul groupe régulier)
    "V2": [
        [2,     "ir",           ":Y/*",             False],
        [2,     "issant",       ":P/*",             False],
        [2,     "is",           ":Ip:Is:1s:2s/*",   False],
        [2,     "it",           ":Ip:Is:3s/*",      False],
        [2,     "issons",       ":Ip:1p/*",         False],
        [2,     "issez",        ":Ip:2p/*",         False],
        [2,     "issent",       ":Ip:Sp:Sq:3p/*",   False],
        [2,     "issais",       ":Iq:1s:2s/*",      False],
        [2,     "issait",       ":Iq:3s/*",         False],
        [2,     "issions",      ":Iq:Sp:Sq:1p/*",   False],
        [2,     "issiez",       ":Iq:Sp:Sq:2p/*",   False],
        [2,     "issaient",     ":Iq:3p/*",         False],
        [2,     "îmes",         ":Is:1p/*",         False],
        [2,     "îtes",         ":Is:2p/*",         False],
        [2,     "irent",        ":Is:3p!/*",        False],
        [2,     "irai",         ":If:1s/*",         False],
        [2,     "iras",         ":If:2s/*",         False],
        [2,     "ira",          ":If:3s/*",         False],
        [2,     "irons",        ":If:1p/*",         False],
        [2,     "irez",         ":If:2p/*",         False],
        [2,     "iront",        ":If:3p!/*",        False],
        [2,     "irais",        ":K:1s:2s/*",       False],
        [2,     "irait",        ":K:3s/*",          False],
        [2,     "irions",       ":K:1p/*",          False],
        [2,     "iriez",        ":K:2p/*",          False],
        [2,     "iraient",      ":K:3p/*",          False],
        [2,     "isse",         ":Sp:Sq:1s/*",      False],
        [2,     "isses",        ":Sp:Sq:2s/*",      False],
        [2,     "isse",         ":Sp:3s/*",         False],
        [2,     "ît",           ":Sq:3s/*",         False],
        [2,     "is",           ":E:2s/*",          False],
        [2,     "issons",       ":E:1p/*",          False],
        [2,     "issez",        ":E:2p/*",          False]
    ],
    
    # premier groupe (bien plus irrégulier que prétendu)
    "V1": {
        # a
        # verbes en -er, -ger, -yer, -cer
        "er": [
            [2,      "er",        ":Y/*",               False],
            [2,      "ant",       ":P/*",               False],
            [2,      "e",         ":Ip:Sp:1s:3s/*",     False],
            [2,      "è",         ":Ip:1ś/*",           False],
            [2,      "es",        ":Ip:Sp:2s/*",        False],
            [2,      "ons",       ":Ip:1p/*",           False],
            [2,      "ez",        ":Ip:2p/*",           False],
            [2,      "ent",       ":Ip:Sp:3p/*",        False],
            [2,      "ais",       ":Iq:1s:2s/*",        False],
            [2,      "ait",       ":Iq:3s/*",           False],
            [2,      "ions",      ":Iq:Sp:1p/*",        False],
            [2,      "iez",       ":Iq:Sp:2p/*",        False],
            [2,      "aient",     ":Iq:3p/*",           False],
            [2,      "ai",        ":Is:1s/*",           False],
            [2,      "as",        ":Is:2s/*",           False],
            [2,      "a",         ":Is:3s/*",           False],
            [2,      "âmes",      ":Is:1p/*",           False],
            [2,      "âtes",      ":Is:2p/*",           False],
            [2,      "èrent",     ":Is:3p!/*",          False],
            [2,      "erai",      ":If:1s/*",           False],
            [2,      "eras",      ":If:2s/*",           False],
            [2,      "era",       ":If:3s/*",           False],
            [2,      "erons",     ":If:1p/*",           False],
            [2,      "erez",      ":If:2p/*",           False],
            [2,      "eront",     ":If:3p!/*",          False],
            [2,      "erais",     ":K:1s:2s/*",         False],
            [2,      "erait",     ":K:3s/*",            False],
            [2,      "erions",    ":K:1p/*",            False],
            [2,      "eriez",     ":K:2p/*",            False],
            [2,      "eraient",   ":K:3p/*",            False],
            [2,      "asse",      ":Sq:1s/*",           False],
            [2,      "asses",     ":Sq:2s/*",           False],
            [2,      "ât",        ":Sq:3s/*",           False],
            [2,      "assions",   ":Sq:1p/*",           False],
            [2,      "assiez",    ":Sq:2p/*",           False],
            [2,      "assent",    ":Sq:3p/*",           False],
            [2,      "e",         ":E:2s/*",            False],
            [2,      "ons",       ":E:1p/*",            False],
            [2,      "ez",        ":E:2p/*",            False]
        ],

        "ger": [
            [2,      "er",        ":Y/*",               False],
            [2,      "eant",      ":P/*",               False],
            [2,      "e",         ":Ip:Sp:1s:3s/*",     False],
            [2,      "è",         ":Ip:1ś/*",           False],
            [2,      "es",        ":Ip:Sp:2s/*",        False],
            [2,      "eons",      ":Ip:1p/*",           False],
            [2,      "ez",        ":Ip:2p/*",           False],
            [2,      "ent",       ":Ip:Sp:3p/*",        False],
            [2,      "eais",      ":Iq:1s:2s/*",        False],
            [2,      "eait",      ":Iq:3s/*",           False],
            [2,      "ions",      ":Iq:Sp:1p/*",        False],
            [2,      "iez",       ":Iq:Sp:2p/*",        False],
            [2,      "eaient",    ":Iq:3p/*",           False],
            [2,      "eai",       ":Is:1s/*",           False],
            [2,      "eas",       ":Is:2s/*",           False],
            [2,      "ea",        ":Is:3s/*",           False],
            [2,      "eâmes",     ":Is:1p/*",           False],
            [2,      "eâtes",     ":Is:2p/*",           False],
            [2,      "èrent",     ":Is:3p!/*",          False],
            [2,      "erai",      ":If:1s/*",           False],
            [2,      "eras",      ":If:2s/*",           False],
            [2,      "era",       ":If:3s/*",           False],
            [2,      "erons",     ":If:1p/*",           False],
            [2,      "erez",      ":If:2p/*",           False],
            [2,      "eront",     ":If:3p!/*",          False],
            [2,      "erais",     ":K:1s:2s/*",         False],
            [2,      "erait",     ":K:3s/*",            False],
            [2,      "erions",    ":K:1p/*",            False],
            [2,      "eriez",     ":K:2p/*",            False],
            [2,      "eraient",   ":K:3p/*",            False],
            [2,      "easse",     ":Sq:1s/*",           False],
            [2,      "easses",    ":Sq:2s/*",           False],
            [2,      "eât",       ":Sq:3s/*",           False],
            [2,      "eassions",  ":Sq:1p/*",           False],
            [2,      "eassiez",   ":Sq:2p/*",           False],
            [2,      "eassent",   ":Sq:3p/*",           False],
            [2,      "e",         ":E:2s/*",            False],
            [2,      "eons",      ":E:1p/*",            False],
            [2,      "ez",        ":E:2p/*",            False]
        ],

        "cer": [
            [2,      "er",        ":Y/*",               False],
            [3,      "çant",      ":P/*",               False],
            [2,      "e",         ":Ip:Sp:1s:3s/*",     False],
            [2,      "è",         ":Ip:1ś/*",           False],
            [2,      "es",        ":Ip:Sp:2s/*",        False],
            [3,      "çons",      ":Ip:1p/*",           False],
            [2,      "ez",        ":Ip:2p/*",           False],
            [2,      "ent",       ":Ip:Sp:3p/*",        False],
            [3,      "çais",      ":Iq:1s:2s/*",        False],
            [3,      "çait",      ":Iq:3s/*",           False],
            [2,      "ions",      ":Iq:Sp:1p/*",        False],
            [2,      "iez",       ":Iq:Sp:2p/*",        False],
            [3,      "çaient",    ":Iq:3p/*",           False],
            [3,      "çai",       ":Is:1s/*",           False],
            [3,      "ças",       ":Is:2s/*",           False],
            [3,      "ça",        ":Is:3s/*",           False],
            [3,      "çâmes",     ":Is:1p/*",           False],
            [3,      "çâtes",     ":Is:2p/*",           False],
            [2,      "èrent",     ":Is:3p!/*",          False],
            [2,      "erai",      ":If:1s/*",           False],
            [2,      "eras",      ":If:2s/*",           False],
            [2,      "era",       ":If:3s/*",           False],
            [2,      "erons",     ":If:1p/*",           False],
            [2,      "erez",      ":If:2p/*",           False],
            [2,      "eront",     ":If:3p!/*",          False],
            [2,      "erais",     ":K:1s:2s/*",         False],
            [2,      "erait",     ":K:3s/*",            False],
            [2,      "erions",    ":K:1p/*",            False],
            [2,      "eriez",     ":K:2p/*",            False],
            [2,      "eraient",   ":K:3p/*",            False],
            [3,      "çasse",     ":Sq:1s/*",           False],
            [3,      "çasses",    ":Sq:2s/*",           False],
            [3,      "çât",       ":Sq:3s/*",           False],
            [3,      "çassions",  ":Sq:1p/*",           False],
            [3,      "çassiez",   ":Sq:2p/*",           False],
            [3,      "çassent",   ":Sq:3p/*",           False],
            [2,      "e",         ":E:2s/*",            False],
            [3,      "çons",      ":E:1p/*",            False],
            [2,      "ez",        ":E:2p/*",            False]
        ],

        "yer": [
            [2,     "er",         ":Y/*",               False],
            [2,     "ant",        ":P/*",               False],
            [3,     "ye",         ":Ip:Sp:1s:3s/*",     "[^ou]yer$"],
            [3,     "ie",         ":Ip:Sp:1s:3s/*",     "[aou]yer$"],
            [2,     "è",          ":Ip:1ś/*",           False],
            [3,     "yes",        ":Ip:Sp:2s/*",        "[^ou]yer$"],
            [3,     "ies",        ":Ip:Sp:2s/*",        "[aou]yer$"],
            [2,     "ons",        ":Ip:1p/*",           False],
            [2,     "ez",         ":Ip:2p/*",           False],
            [3,     "yent",       ":Ip:Sp:3p/*",        "[^ou]yer$"],
            [3,     "ient",       ":Ip:Sp:3p/*",        "[aou]yer$"],
            [2,     "ais",        ":Iq:1s:2s/*",        False],
            [2,     "ait",        ":Iq:3s/*",           False],
            [2,     "ions",       ":Iq:Sp:1p/*",        False],
            [2,     "iez",        ":Iq:Sp:2p/*",        False],
            [2,     "aient",      ":Iq:3p/*",           False],
            [2,     "ai",         ":Is:1s/*",           False],
            [2,     "as",         ":Is:2s/*",           False],
            [2,     "a",          ":Is:3s/*",           False],
            [2,     "âmes",       ":Is:1p/*",           False],
            [2,     "âtes",       ":Is:2p/*",           False],
            [2,     "èrent",      ":Is:3p!/*",          False],
            [3,     "yerai",      ":If:1s/*",           "[^ou]yer$"],
            [3,     "ierai",      ":If:1s/*",           "[aou]yer$"],
            [3,     "yeras",      ":If:2s/*",           "[^ou]yer$"],
            [3,     "ieras",      ":If:2s/*",           "[aou]yer$"],
            [3,     "yera",       ":If:3s/*",           "[^ou]yer$"],
            [3,     "iera",       ":If:3s/*",           "[aou]yer$"],
            [3,     "yerons",     ":If:1p/*",           "[^ou]yer$"],
            [3,     "ierons",     ":If:1p/*",           "[aou]yer$"],
            [3,     "yerez",      ":If:2p/*",           "[^ou]yer$"],
            [3,     "ierez",      ":If:2p/*",           "[aou]yer$"],
            [3,     "yeront",     ":If:3p!/*",          "[^ou]yer$"],
            [3,     "ieront",     ":If:3p!/*",          "[aou]yer$"],
            [3,     "yerais",     ":K:1s:2s/*",         "[^ou]yer$"],
            [3,     "ierais",     ":K:1s:2s/*",         "[aou]yer$"],
            [3,     "yerait",     ":K:3s/*",            "[^ou]yer$"],
            [3,     "ierait",     ":K:3s/*",            "[aou]yer$"],
            [3,     "yerions",    ":K:1p/*",            "[^ou]yer$"],
            [3,     "ierions",    ":K:1p/*",            "[aou]yer$"],
            [3,     "yeriez",     ":K:2p/*",            "[^ou]yer$"],
            [3,     "ieriez",     ":K:2p/*",            "[aou]yer$"],
            [3,     "yeraient",   ":K:3p/*",            "[^ou]yer$"],
            [3,     "ieraient",   ":K:3p/*",            "[aou]yer$"],
            [2,     "asse",       ":Sq:1s/*",           False],
            [2,     "asses",      ":Sq:2s/*",           False],
            [2,     "ât",         ":Sq:3s/*",           False],
            [2,     "assions",    ":Sq:1p/*",           False],
            [2,     "assiez",     ":Sq:2p/*",           False],
            [2,     "assent",     ":Sq:3p/*",           False],
            [3,     "ye",         ":E:2s/*",            "[^ou]yer$"],
            [3,     "ie",         ":E:2s/*",            "[aou]yer$"],
            [2,     "ons",        ":E:1p/*",            False],
            [2,     "ez",         ":E:2p/*",            False]
        ],

        # b
        # verbes en -ecer, -emer, -ener, -eper, -erer, -eser, -ever, -evrer
        # verbes en -eler, -eter (pas de doublement de la consonne: acheter, celer, déceler, receler, ciseler, démanteler,
        # écarteler, encasteler, geler, dégeler, congeler, surgeler, marteler, modeler, peler, acheter, racheter,
        # bégueter, corseter, crocheter, fileter, fureter, haleter)
        # changement du e en è avant syllabe muette
        "ecer": [
            [2,     "er",           ":Y/*",                 False],
            [3,     "çant",         ":P/*",                 False],
            [4,     "èce",          ":Ip:Sp:1s:3s/*",       False],
            [2,     "è",            ":Ip:1ś/R",             False],
            [4,     "èces",         ":Ip:Sp:2s/*",          False],
            [3,     "çons",         ":Ip:1p/*",             False],
            [2,     "ez",           ":Ip:2p/*",             False],
            [4,     "ècent",        ":Ip:Sp:3p/*",          False],
            [3,     "çais",         ":Iq:1s:2s/*",          False],
            [3,     "çait",         ":Iq:3s/*",             False],
            [2,     "ions",         ":Iq:Sp:1p/*",          False],
            [2,     "iez",          ":Iq:Sp:2p/*",          False],
            [3,     "çaient",       ":Iq:3p/*",             False],
            [3,     "çai",          ":Is:1s/*",             False],
            [3,     "ças",          ":Is:2s/*",             False],
            [3,     "ça",           ":Is:3s/*",             False],
            [3,     "çâmes",        ":Is:1p/*",             False],
            [3,     "çâtes",        ":Is:2p/*",             False],
            [2,     "èrent",        ":Is:3p!/*",            False],
            [4,     "ècerai",       ":If:1s/*",             False],
            [4,     "èceras",       ":If:2s/*",             False],
            [4,     "ècera",        ":If:3s/*",             False],
            [4,     "ècerons",      ":If:1p/*",             False],
            [4,     "ècerez",       ":If:2p/*",             False],
            [4,     "èceront",      ":If:3p!/*",            False],
            [4,     "ècerais",      ":K:1s:2s/*",           False],
            [4,     "ècerait",      ":K:3s/*",              False],
            [4,     "ècerions",     ":K:1p/*",              False],
            [4,     "èceriez",      ":K:2p/*",              False],
            [4,     "èceraient",    ":K:3p/*",              False],
            [3,     "çasse",        ":Sq:1s/*",             False],
            [3,     "çasses",       ":Sq:2s/*",             False],
            [3,     "çât",          ":Sq:3s/*",             False],
            [3,     "çassions",     ":Sq:1p/*",             False],
            [3,     "çassiez",      ":Sq:2p/*",             False],
            [3,     "çassent",      ":Sq:3p/*",             False],
            [4,     "èce",          ":E:2s/*",              False],
            [3,     "çons",         ":E:1p/*",              False],
            [2,     "ez",           ":E:2p/*",              False]
        ],

        "eler": {
            "1": [
                [2,     "er",           ":Y/*",             False],
                [2,     "ant",          ":P/*",             False],
                [4,     "èle",          ":Ip:Sp:1s:3s/*",   False],
                [2,     "è",            ":Ip:1ś/R",         False],
                [4,     "èles",         ":Ip:Sp:2s/*",      False],
                [2,     "ons",          ":Ip:1p/*",         False],
                [2,     "ez",           ":Ip:2p/*",         False],
                [4,     "èlent",        ":Ip:Sp:3p/*",      False],
                [2,     "ais",          ":Iq:1s:2s/*",      False],
                [2,     "ait",          ":Iq:3s/*",         False],
                [2,     "ions",         ":Iq:Sp:1p/*",      False],
                [2,     "iez",          ":Iq:Sp:2p/*",      False],
                [2,     "aient",        ":Iq:3p/*",         False],
                [2,     "ai",           ":Is:1s/*",         False],
                [2,     "as",           ":Is:2s/*",         False],
                [2,     "a",            ":Is:3s/*",         False],
                [2,     "âmes",         ":Is:1p/*",         False],
                [2,     "âtes",         ":Is:2p/*",         False],
                [2,     "èrent",        ":Is:3p!/*",        False],
                [4,     "èlerai",       ":If:1s/*",         False],
                [4,     "èleras",       ":If:2s/*",         False],
                [4,     "èlera",        ":If:3s/*",         False],
                [4,     "èlerons",      ":If:1p/*",         False],
                [4,     "èlerez",       ":If:2p/*",         False],
                [4,     "èleront",      ":If:3p!/*",        False],
                [4,     "èlerais",      ":K:1s:2s/*",       False],
                [4,     "èlerait",      ":K:3s/*",          False],
                [4,     "èlerions",     ":K:1p/*",          False],
                [4,     "èleriez",      ":K:2p/*",          False],
                [4,     "èleraient",    ":K:3p/*",          False],
                [2,     "asse",         ":Sq:1s/*",         False],
                [2,     "asses",        ":Sq:2s/*",         False],
                [2,     "ât",           ":Sq:3s/*",         False],
                [2,     "assions",      ":Sq:1p/*",         False],
                [2,     "assiez",       ":Sq:2p/*",         False],
                [2,     "assent",       ":Sq:3p/*",         False],
                [4,     "èle",          ":E:2s/*",          False],
                [2,     "ons",          ":E:1p/*",          False],
                [2,     "ez",           ":E:2p/*",          False]
            ],
            "2": [
                # d. verbes en -eler : doublement de la consonne l.
                [2,     "er",           ":Y/*",             False],
                [2,     "ant",          ":P/*",             False],
                [4,     "elle",         ":Ip:Sp:1s:3s/*",   "ppeler$"],
                [4,     "elle",         ":Ip:Sp:1s:3s/M",   "[^p].eler$"],
                [4,     "èle",          ":Ip:Sp:1s:3s/R",   "[^p].eler$"],
                [2,     "è",            ":Ip:1ś/R",         False],
                [4,     "elles",        ":Ip:Sp:2s/*",      "ppeler$"],
                [4,     "elles",        ":Ip:Sp:2s/M",      "[^p].eler$"],
                [4,     "èles",         ":Ip:Sp:2s/R",      "[^p].eler$"],
                [2,     "ons",          ":Ip:1p/*",         False],
                [2,     "ez",           ":Ip:2p/*",         False],
                [4,     "ellent",       ":Ip:Sp:3p/*",      "ppeler$"],
                [4,     "ellent",       ":Ip:Sp:3p/M",      "[^p].eler$"],
                [4,     "èlent",        ":Ip:Sp:3p/R",      "[^p].eler$"],
                [2,     "ais",          ":Iq:1s:2s/*",      False],
                [2,     "ait",          ":Iq:3s/*",         False],
                [2,     "ions",         ":Iq:Sp:1p/*",      False],
                [2,     "iez",          ":Iq:Sp:2p/*",      False],
                [2,     "aient",        ":Iq:3p/*",         False],
                [2,     "ai",           ":Is:1s/*",         False],
                [2,     "as",           ":Is:2s/*",         False],
                [2,     "a",            ":Is:3s/*",         False],
                [2,     "âmes",         ":Is:1p/*",         False],
                [2,     "âtes",         ":Is:2p/*",         False],
                [2,     "èrent",        ":Is:3p!/*",        False],
                [4,     "ellerai",      ":If:1s/*",         "ppeler$"],
                [4,     "ellerai",      ":If:1s/M",         "[^p].eler$"],
                [4,     "èlerai",       ":If:1s/R",         "[^p].eler$"],
                [4,     "elleras",      ":If:2s/*",         "ppeler$"],
                [4,     "elleras",      ":If:2s/M",         "[^p].eler$"],
                [4,     "èleras",       ":If:2s/R",         "[^p].eler$"],
                [4,     "ellera",       ":If:3s/*",         "ppeler$"],
                [4,     "ellera",       ":If:3s/M",         "[^p].eler$"],
                [4,     "èlera",        ":If:3s/R",         "[^p].eler$"],
                [4,     "ellerons",     ":If:1p/*",         "ppeler$"],
                [4,     "ellerons",     ":If:1p/M",         "[^p].eler$"],
                [4,     "èlerons",      ":If:1p/R",         "[^p].eler$"],
                [4,     "ellerez",      ":If:2p/*",         "ppeler$"],
                [4,     "ellerez",      ":If:2p/M",         "[^p].eler$"],
                [4,     "èlerez",       ":If:2p/R",         "[^p].eler$"],
                [4,     "elleront",     ":If:3p!/*",        "ppeler$"],
                [4,     "elleront",     ":If:3p!/M",        "[^p].eler$"],
                [4,     "èleront",      ":If:3p!/R",        "[^p].eler$"],
                [4,     "ellerais",     ":K:1s:2s/*",       "ppeler$"],
                [4,     "ellerais",     ":K:1s:2s/M",       "[^p].eler$"],
                [4,     "èlerais",      ":K:1s:2s/R",       "[^p].eler$"],
                [4,     "ellerait",     ":K:3s/*",          "ppeler$"],
                [4,     "ellerait",     ":K:3s/M",          "[^p].eler$"],
                [4,     "èlerait",      ":K:3s/R",          "[^p].eler$"],
                [4,     "ellerions",    ":K:1p/*",          "ppeler$"],
                [4,     "ellerions",    ":K:1p/M",          "[^p].eler$"],
                [4,     "èlerions",     ":K:1p/R",          "[^p].eler$"],
                [4,     "elleriez",     ":K:2p/*",          "ppeler$"],
                [4,     "elleriez",     ":K:2p/M",          "[^p].eler$"],
                [4,     "èleriez",      ":K:2p/R",          "[^p].eler$"],
                [4,     "elleraient",   ":K:3p/*",          "ppeler$"],
                [4,     "elleraient",   ":K:3p/M",          "[^p].eler$"],
                [4,     "èleraient",    ":K:3p/R",          "[^p].eler$"],
                [2,     "asse",         ":Sq:1s/*",         False],
                [2,     "asses",        ":Sq:2s/*",         False],
                [2,     "ât",           ":Sq:3s/*",         False],
                [2,     "assions",      ":Sq:1p/*",         False],
                [2,     "assiez",       ":Sq:2p/*",         False],
                [2,     "assent",       ":Sq:3p/*",         False],
                [4,     "elle",         ":E:2s/*",          "ppeler$"],
                [4,     "elle",         ":E:2s/M",          "[^p].eler$"],
                [4,     "èle",          ":E:2s/R",          "[^p].eler$"],
                [2,     "ons",          ":E:1p/*",          False],
                [2,     "ez",           ":E:2p/*",          False]
            ],
        },

        "emer": [
            [2,     "er",           ":Y/*",                 False],
            [2,     "ant",          ":P/*",                 False],
            [4,     "ème",          ":Ip:Sp:1s:3s/*",       False],
            [2,     "è",            ":Ip:1ś/R",             False],
            [4,     "èmes",         ":Ip:Sp:2s/*",          False],
            [2,     "ons",          ":Ip:1p/*",             False],
            [2,     "ez",           ":Ip:2p/*",             False],
            [4,     "èment",        ":Ip:Sp:3p/*",          False],
            [2,     "ais",          ":Iq:1s:2s/*",          False],
            [2,     "ait",          ":Iq:3s/*",             False],
            [2,     "ions",         ":Iq:Sp:1p/*",          False],
            [2,     "iez",          ":Iq:Sp:2p/*",          False],
            [2,     "aient",        ":Iq:3p/*",             False],
            [2,     "ai",           ":Is:1s/*",             False],
            [2,     "as",           ":Is:2s/*",             False],
            [2,     "a",            ":Is:3s/*",             False],
            [2,     "âmes",         ":Is:1p/*",             False],
            [2,     "âtes",         ":Is:2p/*",             False],
            [2,     "èrent",        ":Is:3p!/*",            False],
            [4,     "èmerai",       ":If:1s/*",             False],
            [4,     "èmeras",       ":If:2s/*",             False],
            [4,     "èmera",        ":If:3s/*",             False],
            [4,     "èmerons",      ":If:1p/*",             False],
            [4,     "èmerez",       ":If:2p/*",             False],
            [4,     "èmeront",      ":If:3p!/*",            False],
            [4,     "èmerais",      ":K:1s:2s/*",           False],
            [4,     "èmerait",      ":K:3s/*",              False],
            [4,     "èmerions",     ":K:1p/*",              False],
            [4,     "èmeriez",      ":K:2p/*",              False],
            [4,     "èmeraient",    ":K:3p/*",              False],
            [2,     "asse",         ":Sq:1s/*",             False],
            [2,     "asses",        ":Sq:2s/*",             False],
            [2,     "ât",           ":Sq:3s/*",             False],
            [2,     "assions",      ":Sq:1p/*",             False],
            [2,     "assiez",       ":Sq:2p/*",             False],
            [2,     "assent",       ":Sq:3p/*",             False],
            [4,     "ème",          ":E:2s/*",              False],
            [2,     "ons",          ":E:1p/*",              False],
            [2,     "ez",           ":E:2p/*",              False]
        ],

        "ener": [
            [2,     "er",           ":Y/*",                 False],
            [2,     "ant",          ":P/*",                 False],
            [4,     "ène",          ":Ip:Sp:1s:3s/*",       False],
            [2,     "è",            ":Ip:1ś/R",             False],
            [4,     "ènes",         ":Ip:Sp:2s/*",          False],
            [2,     "ons",          ":Ip:1p/*",             False],
            [2,     "ez",           ":Ip:2p/*",             False],
            [4,     "ènent",        ":Ip:Sp:3p/*",          False],
            [2,     "ais",          ":Iq:1s:2s/*",          False],
            [2,     "ait",          ":Iq:3s/*",             False],
            [2,     "ions",         ":Iq:Sp:1p/*",          False],
            [2,     "iez",          ":Iq:Sp:2p/*",          False],
            [2,     "aient",        ":Iq:3p/*",             False],
            [2,     "ai",           ":Is:1s/*",             False],
            [2,     "as",           ":Is:2s/*",             False],
            [2,     "a",            ":Is:3s/*",             False],
            [2,     "âmes",         ":Is:1p/*",             False],
            [2,     "âtes",         ":Is:2p/*",             False],
            [2,     "èrent",        ":Is:3p!/*",            False],
            [4,     "ènerai",       ":If:1s/*",             False],
            [4,     "èneras",       ":If:2s/*",             False],
            [4,     "ènera",        ":If:3s/*",             False],
            [4,     "ènerons",      ":If:1p/*",             False],
            [4,     "ènerez",       ":If:2p/*",             False],
            [4,     "èneront",      ":If:3p!/*",            False],
            [4,     "ènerais",      ":K:1s:2s/*",           False],
            [4,     "ènerait",      ":K:3s/*",              False],
            [4,     "ènerions",     ":K:1p/*",              False],
            [4,     "èneriez",      ":K:2p/*",              False],
            [4,     "èneraient",    ":K:3p/*",              False],
            [2,     "asse",         ":Sq:1s/*",             False],
            [2,     "asses",        ":Sq:2s/*",             False],
            [2,     "ât",           ":Sq:3s/*",             False],
            [2,     "assions",      ":Sq:1p/*",             False],
            [2,     "assiez",       ":Sq:2p/*",             False],
            [2,     "assent",       ":Sq:3p/*",             False],
            [4,     "ène",          ":E:2s/*",              False],
            [2,     "ons",          ":E:1p/*",              False],
            [2,     "ez",           ":E:2p/*",              False]
        ],

        "eper": [
            [2,     "er",           ":Y/*",                 False],
            [2,     "ant",          ":P/*",                 False],
            [4,     "èpe",          ":Ip:Sp:1s:3s/*",       False],
            [2,     "è",            ":Ip:1ś/R",             False],
            [4,     "èpes",         ":Ip:Sp:2s/*",          False],
            [2,     "ons",          ":Ip:1p/*",             False],
            [2,     "ez",           ":Ip:2p/*",             False],
            [4,     "èpent",        ":Ip:Sp:3p/*",          False],
            [2,     "ais",          ":Iq:1s:2s/*",          False],
            [2,     "ait",          ":Iq:3s/*",             False],
            [2,     "ions",         ":Iq:Sp:1p/*",          False],
            [2,     "iez",          ":Iq:Sp:2p/*",          False],
            [2,     "aient",        ":Iq:3p/*",             False],
            [2,     "ai",           ":Is:1s/*",             False],
            [2,     "as",           ":Is:2s/*",             False],
            [2,     "a",            ":Is:3s/*",             False],
            [2,     "âmes",         ":Is:1p/*",             False],
            [2,     "âtes",         ":Is:2p/*",             False],
            [2,     "èrent",        ":Is:3p!/*",            False],
            [4,     "èperai",       ":If:1s/*",             False],
            [4,     "èperas",       ":If:2s/*",             False],
            [4,     "èpera",        ":If:3s/*",             False],
            [4,     "èperons",      ":If:1p/*",             False],
            [4,     "èperez",       ":If:2p/*",             False],
            [4,     "èperont",      ":If:3p!/*",            False],
            [4,     "èperais",      ":K:1s:2s/*",           False],
            [4,     "èperait",      ":K:3s/*",              False],
            [4,     "èperions",     ":K:1p/*",              False],
            [4,     "èperiez",      ":K:2p/*",              False],
            [4,     "èperaient",    ":K:3p/*",              False],
            [2,     "asse",         ":Sq:1s/*",             False],
            [2,     "asses",        ":Sq:2s/*",             False],
            [2,     "ât",           ":Sq:3s/*",             False],
            [2,     "assions",      ":Sq:1p/*",             False],
            [2,     "assiez",       ":Sq:2p/*",             False],
            [2,     "assent",       ":Sq:3p/*",             False],
            [4,     "èpe",          ":E:2s/*",              False],
            [2,     "ons",          ":E:1p/*",              False],
            [2,     "ez",           ":E:2p/*",              False]
        ],

        "erer": [
            [2,     "er",           ":Y/*",                 False],
            [2,     "ant",          ":P/*",                 False],
            [4,     "ère",          ":Ip:Sp:1s:3s/*",       False],
            [2,     "è",            ":Ip:1ś/R",             False],
            [4,     "ères",         ":Ip:Sp:2s/*",          False],
            [2,     "ons",          ":Ip:1p/*",             False],
            [2,     "ez",           ":Ip:2p/*",             False],
            [4,     "èrent",        ":Ip:Sp:3p/*",          False],
            [2,     "ais",          ":Iq:1s:2s/*",          False],
            [2,     "ait",          ":Iq:3s/*",             False],
            [2,     "ions",         ":Iq:Sp:1p/*",          False],
            [2,     "iez",          ":Iq:Sp:2p/*",          False],
            [2,     "aient",        ":Iq:3p/*",             False],
            [2,     "ai",           ":Is:1s/*",             False],
            [2,     "as",           ":Is:2s/*",             False],
            [2,     "a",            ":Is:3s/*",             False],
            [2,     "âmes",         ":Is:1p/*",             False],
            [2,     "âtes",         ":Is:2p/*",             False],
            [2,     "èrent",        ":Is:3p!/*",            False],
            [4,     "èrerai",       ":If:1s/*",             False],
            [4,     "èreras",       ":If:2s/*",             False],
            [4,     "èrera",        ":If:3s/*",             False],
            [4,     "èrerons",      ":If:1p/*",             False],
            [4,     "èrerez",       ":If:2p/*",             False],
            [4,     "èreront",      ":If:3p!/*",            False],
            [4,     "èrerais",      ":K:1s:2s/*",           False],
            [4,     "èrerait",      ":K:3s/*",              False],
            [4,     "èrerions",     ":K:1p/*",              False],
            [4,     "èreriez",      ":K:2p/*",              False],
            [4,     "èreraient",    ":K:3p/*",              False],
            [2,     "asse",         ":Sq:1s/*",             False],
            [2,     "asses",        ":Sq:2s/*",             False],
            [2,     "ât",           ":Sq:3s/*",             False],
            [2,     "assions",      ":Sq:1p/*",             False],
            [2,     "assiez",       ":Sq:2p/*",             False],
            [2,     "assent",       ":Sq:3p/*",             False],
            [4,     "ère",          ":E:2s/*",              False],
            [2,     "ons",          ":E:1p/*",              False],
            [2,     "ez",           ":E:2p/*",              False]
        ],

        "eser": [
            [2,     "er",           ":Y/*",                 False],
            [2,     "ant",          ":P/*",                 False],
            [4,     "èse",          ":Ip:Sp:1s:3s/*",       False],
            [2,     "è",            ":Ip:1ś/R",             False],
            [4,     "èses",         ":Ip:Sp:2s/*",          False],
            [2,     "ons",          ":Ip:1p/*",             False],
            [2,     "ez",           ":Ip:2p/*",             False],
            [4,     "èsent",        ":Ip:Sp:3p/*",          False],
            [2,     "ais",          ":Iq:1s:2s/*",          False],
            [2,     "ait",          ":Iq:3s/*",             False],
            [2,     "ions",         ":Iq:Sp:1p/*",          False],
            [2,     "iez",          ":Iq:Sp:2p/*",          False],
            [2,     "aient",        ":Iq:3p/*",             False],
            [2,     "ai",           ":Is:1s/*",             False],
            [2,     "as",           ":Is:2s/*",             False],
            [2,     "a",            ":Is:3s/*",             False],
            [2,     "âmes",         ":Is:1p/*",             False],
            [2,     "âtes",         ":Is:2p/*",             False],
            [2,     "èrent",        ":Is:3p!/*",            False],
            [4,     "èserai",       ":If:1s/*",             False],
            [4,     "èseras",       ":If:2s/*",             False],
            [4,     "èsera",        ":If:3s/*",             False],
            [4,     "èserons",      ":If:1p/*",             False],
            [4,     "èserez",       ":If:2p/*",             False],
            [4,     "èseront",      ":If:3p!/*",            False],
            [4,     "èserais",      ":K:1s:2s/*",           False],
            [4,     "èserait",      ":K:3s/*",              False],
            [4,     "èserions",     ":K:1p/*",              False],
            [4,     "èseriez",      ":K:2p/*",              False],
            [4,     "èseraient",    ":K:3p/*",              False],
            [2,     "asse",         ":Sq:1s/*",             False],
            [2,     "asses",        ":Sq:2s/*",             False],
            [2,     "ât",           ":Sq:3s/*",             False],
            [2,     "assions",      ":Sq:1p/*",             False],
            [2,     "assiez",       ":Sq:2p/*",             False],
            [2,     "assent",       ":Sq:3p/*",             False],
            [4,     "èse",          ":E:2s/*",              False],
            [2,     "ons",          ":E:1p/*",              False],
            [2,     "ez",           ":E:2p/*",              False]
        ],

        "eter": {
            "1": [
                [2,     "er",           ":Y/*",                 False],
                [2,     "ant",          ":P/*",                 False],
                [4,     "ète",          ":Ip:Sp:1s:3s/*",       False],
                [2,     "è",            ":Ip:1ś/R",             False],
                [4,     "ètes",         ":Ip:Sp:2s/*",          False],
                [2,     "ons",          ":Ip:1p/*",             False],
                [2,     "ez",           ":Ip:2p/*",             False],
                [4,     "ètent",        ":Ip:Sp:3p/*",          False],
                [2,     "ais",          ":Iq:1s:2s/*",          False],
                [2,     "ait",          ":Iq:3s/*",             False],
                [2,     "ions",         ":Iq:Sp:1p/*",          False],
                [2,     "iez",          ":Iq:Sp:2p/*",          False],
                [2,     "aient",        ":Iq:3p/*",             False],
                [2,     "ai",           ":Is:1s/*",             False],
                [2,     "as",           ":Is:2s/*",             False],
                [2,     "a",            ":Is:3s/*",             False],
                [2,     "âmes",         ":Is:1p/*",             False],
                [2,     "âtes",         ":Is:2p/*",             False],
                [2,     "èrent",        ":Is:3p!/*",            False],
                [4,     "èterai",       ":If:1s/*",             False],
                [4,     "èteras",       ":If:2s/*",             False],
                [4,     "ètera",        ":If:3s/*",             False],
                [4,     "èterons",      ":If:1p/*",             False],
                [4,     "èterez",       ":If:2p/*",             False],
                [4,     "èteront",      ":If:3p!/*",            False],
                [4,     "èterais",      ":K:1s:2s/*",           False],
                [4,     "èterait",      ":K:3s/*",              False],
                [4,     "èterions",     ":K:1p/*",              False],
                [4,     "èteriez",      ":K:2p/*",              False],
                [4,     "èteraient",    ":K:3p/*",              False],
                [2,     "asse",         ":Sq:1s/*",             False],
                [2,     "asses",        ":Sq:2s/*",             False],
                [2,     "ât",           ":Sq:3s/*",             False],
                [2,     "assions",      ":Sq:1p/*",             False],
                [2,     "assiez",       ":Sq:2p/*",             False],
                [2,     "assent",       ":Sq:3p/*",             False],
                [4,     "ète",          ":E:2s/*",              False],
                [2,     "ons",          ":E:1p/*",              False],
                [2,     "ez",           ":E:2p/*",              False]
            ],
            "2": [
                # d. verbes en -eter : doublement de la consonne t
                [2,     "er",           ":Y/*",                 False],
                [2,     "ant",          ":P/*",                 False],
                [4,     "ette",         ":Ip:Sp:1s:3s/*",       "jeter$"],
                [4,     "ette",         ":Ip:Sp:1s:3s/M",       "[^j]eter$"],
                [4,     "ète",          ":Ip:Sp:1s:3s/R",       "[^j]eter$"],
                [2,     "è",            ":Ip:1ś/R",             False],
                [4,     "ettes",        ":Ip:Sp:2s/*",          "jeter$"],
                [4,     "ettes",        ":Ip:Sp:2s/M",          "[^j]eter$"],
                [4,     "ètes",         ":Ip:Sp:2s/R",          "[^j]eter$"],
                [2,     "ons",          ":Ip:1p/*",             False],
                [2,     "ez",           ":Ip:2p/*",             False],
                [4,     "ettent",       ":Ip:Sp:3p/*",          "jeter$"],
                [4,     "ettent",       ":Ip:Sp:3p/M",          "[^j]eter$"],
                [4,     "ètent",        ":Ip:Sp:3p/R",          "[^j]eter$"],
                [2,     "ais",          ":Iq:1s:2s/*",          False],
                [2,     "ait",          ":Iq:3s/*",             False],
                [2,     "ions",         ":Iq:Sp:1p/*",          False],
                [2,     "iez",          ":Iq:Sp:2p/*",          False],
                [2,     "aient",        ":Iq:3p/*",             False],
                [2,     "ai",           ":Is:1s/*",             False],
                [2,     "as",           ":Is:2s/*",             False],
                [2,     "a",            ":Is:3s/*",             False],
                [2,     "âmes",         ":Is:1p/*",             False],
                [2,     "âtes",         ":Is:2p/*",             False],
                [2,     "èrent",        ":Is:3p!/*",            False],
                [4,     "etterai",      ":If:1s/*",             "jeter$"],
                [4,     "etterai",      ":If:1s/M",             "[^j]eter$"],
                [4,     "èterai",       ":If:1s/R",             "[^j]eter$"],
                [4,     "etteras",      ":If:2s/*",             "jeter$"],
                [4,     "etteras",      ":If:2s/M",             "[^j]eter$"],
                [4,     "èteras",       ":If:2s/R",             "[^j]eter$"],
                [4,     "ettera",       ":If:3s/*",             "jeter$"],
                [4,     "ettera",       ":If:3s/M",             "[^j]eter$"],
                [4,     "ètera",        ":If:3s/R",             "[^j]eter$"],
                [4,     "etterons",     ":If:1p/*",             "jeter$"],
                [4,     "etterons",     ":If:1p/M",             "[^j]eter$"],
                [4,     "èterons",      ":If:1p/R",             "[^j]eter$"],
                [4,     "etterez",      ":If:2p/*",             "jeter$"],
                [4,     "etterez",      ":If:2p/M",             "[^j]eter$"],
                [4,     "èterez",       ":If:2p/R",             "[^j]eter$"],
                [4,     "etteront",     ":If:3p!/*",            "jeter$"],
                [4,     "etteront",     ":If:3p!/M",            "[^j]eter$"],
                [4,     "èteront",      ":If:3p!/R",            "[^j]eter$"],
                [4,     "etterais",     ":K:1s:2s/*",           "jeter$"],
                [4,     "etterais",     ":K:1s:2s/M",           "[^j]eter$"],
                [4,     "èterais",      ":K:1s:2s/R",           "[^j]eter$"],
                [4,     "etterait",     ":K:3s/*",              "jeter$"],
                [4,     "etterait",     ":K:3s/M",              "[^j]eter$"],
                [4,     "èterait",      ":K:3s/R",              "[^j]eter$"],
                [4,     "etterions",    ":K:1p/*",              "jeter$"],
                [4,     "etterions",    ":K:1p/M",              "[^j]eter$"],
                [4,     "èterions",     ":K:1p/R",              "[^j]eter$"],
                [4,     "etteriez",     ":K:2p/*",              "jeter$"],
                [4,     "etteriez",     ":K:2p/M",              "[^j]eter$"],
                [4,     "èteriez",      ":K:2p/R",              "[^j]eter$"],
                [4,     "etteraient",   ":K:3p/*",              "jeter$"],
                [4,     "etteraient",   ":K:3p/M",              "[^j]eter$"],
                [4,     "èteraient",    ":K:3p/R",              "[^j]eter$"],
                [2,     "asse",         ":Sq:1s/*",             False],
                [2,     "asses",        ":Sq:2s/*",             False],
                [2,     "ât",           ":Sq:3s/*",             False],
                [2,     "assions",      ":Sq:1p/*",             False],
                [2,     "assiez",       ":Sq:2p/*",             False],
                [2,     "assent",       ":Sq:3p/*",             False],
                [4,     "ette",         ":E:2s/*",              "jeter$"],
                [4,     "ette",         ":E:2s/M",              "[^j]eter$"],
                [4,     "ète",          ":E:2s/R",              "[^j]eter$"],
                [2,     "ons",          ":E:1p/*",              False],
                [2,     "ez",           ":E:2p/*",              False]
            ]
        },

        "ever": [
            [2,     "er",           ":Y/*",                 False],
            [2,     "ant",          ":P/*",                 False],
            [4,     "ève",          ":Ip:Sp:1s:3s/*",       False],
            [2,     "è",            ":Ip:1ś/R",             False],
            [4,     "èves",         ":Ip:Sp:2s/*",          False],
            [2,     "ons",          ":Ip:1p/*",             False],
            [2,     "ez",           ":Ip:2p/*",             False],
            [4,     "èvent",        ":Ip:Sp:3p/*",          False],
            [2,     "ais",          ":Iq:1s:2s/*",          False],
            [2,     "ait",          ":Iq:3s/*",             False],
            [2,     "ions",         ":Iq:Sp:1p/*",          False],
            [2,     "iez",          ":Iq:Sp:2p/*",          False],
            [2,     "aient",        ":Iq:3p/*",             False],
            [2,     "ai",           ":Is:1s/*",             False],
            [2,     "as",           ":Is:2s/*",             False],
            [2,     "a",            ":Is:3s/*",             False],
            [2,     "âmes",         ":Is:1p/*",             False],
            [2,     "âtes",         ":Is:2p/*",             False],
            [2,     "èrent",        ":Is:3p!/*",            False],
            [4,     "èverai",       ":If:1s/*",             False],
            [4,     "èveras",       ":If:2s/*",             False],
            [4,     "èvera",        ":If:3s/*",             False],
            [4,     "èverons",      ":If:1p/*",             False],
            [4,     "èverez",       ":If:2p/*",             False],
            [4,     "èveront",      ":If:3p!/*",            False],
            [4,     "èverais",      ":K:1s:2s/*",           False],
            [4,     "èverait",      ":K:3s/*",              False],
            [4,     "èverions",     ":K:1p/*",              False],
            [4,     "èveriez",      ":K:2p/*",              False],
            [4,     "èveraient",    ":K:3p/*",              False],
            [2,     "asse",         ":Sq:1s/*",             False],
            [2,     "asses",        ":Sq:2s/*",             False],
            [2,     "ât",           ":Sq:3s/*",             False],
            [2,     "assions",      ":Sq:1p/*",             False],
            [2,     "assiez",       ":Sq:2p/*",             False],
            [2,     "assent",       ":Sq:3p/*",             False],
            [4,     "ève",          ":E:2s/*",              False],
            [2,     "ons",          ":E:1p/*",              False],
            [2,     "ez",           ":E:2p/*",              False]
        ],

        "evrer": [
            [2,     "er",           ":Y/*",                 False],
            [2,     "ant",          ":P/*",                 False],
            [5,     "èvre",         ":Ip:Sp:1s:3s/*",       False],
            [2,     "è",            ":Ip:1ś/R",             False],
            [5,     "èvres",        ":Ip:Sp:2s/*",          False],
            [2,     "ons",          ":Ip:1p/*",             False],
            [2,     "ez",           ":Ip:2p/*",             False],
            [5,     "èvrent",       ":Ip:Sp:3p/*",          False],
            [2,     "ais",          ":Iq:1s:2s/*",          False],
            [2,     "ait",          ":Iq:3s/*",             False],
            [2,     "ions",         ":Iq:Sp:1p/*",          False],
            [2,     "iez",          ":Iq:Sp:2p/*",          False],
            [2,     "aient",        ":Iq:3p/*",             False],
            [2,     "ai",           ":Is:1s/*",             False],
            [2,     "as",           ":Is:2s/*",             False],
            [2,     "a",            ":Is:3s/*",             False],
            [2,     "âmes",         ":Is:1p/*",             False],
            [2,     "âtes",         ":Is:2p/*",             False],
            [2,     "èrent",        ":Is:3p!/*",            False],
            [5,     "èvrerai",      ":If:1s/*",             False],
            [5,     "èvreras",      ":If:2s/*",             False],
            [5,     "èvrera",       ":If:3s/*",             False],
            [5,     "èvrerons",     ":If:1p/*",             False],
            [5,     "èvrerez",      ":If:2p/*",             False],
            [5,     "èvreront",     ":If:3p!/*",            False],
            [5,     "èvrerais",     ":K:1s:2s/*",           False],
            [5,     "èvrerait",     ":K:3s/*",              False],
            [5,     "èvrerions",    ":K:1p/*",              False],
            [5,     "èvreriez",     ":K:2p/*",              False],
            [5,     "èvreraient",   ":K:3p/*",              False],
            [2,     "asse",         ":Sq:1s/*",             False],
            [2,     "asses",        ":Sq:2s/*",             False],
            [2,     "ât",           ":Sq:3s/*",             False],
            [2,     "assions",      ":Sq:1p/*",             False],
            [2,     "assiez",       ":Sq:2p/*",             False],
            [2,     "assent",       ":Sq:3p/*",             False],
            [5,     "èvre",         ":E:2s/*",              False],
            [2,     "ons",          ":E:1p/*",              False],
            [2,     "ez",           ":E:2p/*",              False]
        ],

        # c
        # verbes en -ébrer, -écer, -écher, -écrer, -éder, -éger, -égler, -égner, -égrer, -éguer,
        #           -éler, -émer, -éner, -éper, -équer, -érer, -éser, -éter, -étrer, -évrer, -éyer
        # changement du é en è

        "écer": [
            [2,     "er",           ":Y/*",                 False],
            [4,     "éçant",        ":P/*",                 False],
            [4,     "èce",          ":Ip:Sp:1s:3s/*",       False],
            [2,     "è",            ":Ip:1ś/R",             False],
            [4,     "èces",         ":Ip:Sp:2s/*",          False],
            [4,     "éçons",        ":Ip:1p/*",             False],
            [2,     "ez",           ":Ip:2p/*",             False],
            [4,     "ècent",        ":Ip:Sp:3p/*",          False],
            [4,     "éçais",        ":Iq:1s:2s/*",          False],
            [4,     "éçait",        ":Iq:3s/*",             False],
            [2,     "ions",         ":Iq:Sp:1p/*",          False],
            [2,     "iez",          ":Iq:Sp:2p/*",          False],
            [4,     "éçaient",      ":Iq:3p/*",             False],
            [4,     "éçai",         ":Is:1s/*",             False],
            [4,     "éças",         ":Is:2s/*",             False],
            [4,     "éça",          ":Is:3s/*",             False],
            [4,     "éçâmes",       ":Is:1p/*",             False],
            [4,     "éçâtes",       ":Is:2p/*",             False],
            [2,     "èrent",        ":Is:3p!/*",            False],
            [2,     "erai",         ":If:1s/M",             False],
            [4,     "ècerai",       ":If:1s/R",             False],
            [2,     "eras",         ":If:2s/M",             False],
            [4,     "èceras",       ":If:2s/R",             False],
            [2,     "era",          ":If:3s/M",             False],
            [4,     "ècera",        ":If:3s/R",             False],
            [2,     "erons",        ":If:1p/M",             False],
            [4,     "ècerons",      ":If:1p/R",             False],
            [2,     "erez",         ":If:2p/M",             False],
            [4,     "ècerez",       ":If:2p/R",             False],
            [2,     "eront",        ":If:3p!/M",            False],
            [4,     "èceront",      ":If:3p!/R",            False],
            [2,     "erais",        ":K:1s:2s/M",           False],
            [4,     "ècerais",      ":K:1s:2s/R",           False],
            [2,     "erait",        ":K:3s/M",              False],
            [4,     "ècerait",      ":K:3s/R",              False],
            [2,     "erions",       ":K:1p/M",              False],
            [4,     "ècerions",     ":K:1p/R",              False],
            [2,     "eriez",        ":K:2p/M",              False],
            [4,     "èceriez",      ":K:2p/R",              False],
            [2,     "eraient",      ":K:3p/M",              False],
            [4,     "èceraient",    ":K:3p/R",              False],
            [4,     "éçasse",       ":Sq:1s/*",             False],
            [4,     "éçasses",      ":Sq:2s/*",             False],
            [4,     "éçât",         ":Sq:3s/*",             False],
            [4,     "éçassions",    ":Sq:1p/*",             False],
            [4,     "éçassiez",     ":Sq:2p/*",             False],
            [4,     "éçassent",     ":Sq:3p/*",             False],
            [4,     "èce",          ":E:2s/*",              False],
            [4,     "éçons",        ":E:1p/*",              False],
            [2,     "ez",           ":E:2p/*",              False]
        ],

        "éger": [
            [2,     "er",           ":Y/*",                 False],
            [4,     "égeant",       ":P/*",                 False],
            [4,     "ège",          ":Ip:Sp:1s:3s/*",       False],
            [2,     "è",            ":Ip:1ś/R",             False],
            [4,     "èges",         ":Ip:Sp:2s/*",          False],
            [4,     "égeons",       ":Ip:1p/*",             False],
            [2,     "ez",           ":Ip:2p/*",             False],
            [4,     "ègent",        ":Ip:Sp:3p/*",          False],
            [4,     "égeais",       ":Iq:1s:2s/*",          False],
            [4,     "égeait",       ":Iq:3s/*",             False],
            [2,     "ions",         ":Iq:Sp:1p/*",          False],
            [2,     "iez",          ":Iq:Sp:2p/*",          False],
            [4,     "égeaient",     ":Iq:3p/*",             False],
            [4,     "égeai",        ":Is:1s/*",             False],
            [4,     "égeas",        ":Is:2s/*",             False],
            [4,     "égea",         ":Is:3s/*",             False],
            [4,     "égeâmes",      ":Is:1p/*",             False],
            [4,     "égeâtes",      ":Is:2p/*",             False],
            [2,     "èrent",        ":Is:3p!/*",            False],
            [2,     "erai",         ":If:1s/M",             False],
            [4,     "ègerai",       ":If:1s/R",             False],
            [2,     "eras",         ":If:2s/M",             False],
            [4,     "ègeras",       ":If:2s/R",             False],
            [2,     "era",          ":If:3s/M",             False],
            [4,     "ègera",        ":If:3s/R",             False],
            [2,     "erons",        ":If:1p/M",             False],
            [4,     "ègerons",      ":If:1p/R",             False],
            [2,     "erez",         ":If:2p/M",             False],
            [4,     "ègerez",       ":If:2p/R",             False],
            [2,     "eront",        ":If:3p!/M",            False],
            [4,     "ègeront",      ":If:3p!/R",            False],
            [2,     "erais",        ":K:1s:2s/M",           False],
            [4,     "ègerais",      ":K:1s:2s/R",           False],
            [2,     "erait",        ":K:3s/M",              False],
            [4,     "ègerait",      ":K:3s/R",              False],
            [2,     "erions",       ":K:1p/M",              False],
            [4,     "ègerions",     ":K:1p/R",              False],
            [2,     "eriez",        ":K:2p/M",              False],
            [4,     "ègeriez",      ":K:2p/R",              False],
            [2,     "eraient",      ":K:3p/M",              False],
            [4,     "ègeraient",    ":K:3p/R",              False],
            [4,     "égeasse",      ":Sq:1s/*",             False],
            [4,     "égeasses",     ":Sq:2s/*",             False],
            [4,     "égeât",        ":Sq:3s/*",             False],
            [4,     "égeassions",   ":Sq:1p/*",             False],
            [4,     "égeassiez",    ":Sq:2p/*",             False],
            [4,     "égeassent",    ":Sq:3p/*",             False],
            [4,     "ège",          ":E:2s/*",              False],
            [4,     "égeons",       ":E:1p/*",              False],
            [2,     "ez",           ":E:2p/*",              False]
        ],

        "ébrer": [
            [2,     "er",           ":Y/*",                 False],
            [2,     "ant",          ":P/*",                 False],
            [5,     "èbre",         ":Ip:Sp:1s:3s/*",       False],
            [2,     "è",            ":Ip:1ś/R",             False],
            [5,     "èbres",        ":Ip:Sp:2s/*",          False],
            [2,     "ons",          ":Ip:1p/*",             False],
            [2,     "ez",           ":Ip:2p/*",             False],
            [5,     "èbrent",       ":Ip:Sp:3p/*",          False],
            [2,     "ais",          ":Iq:1s:2s/*",          False],
            [2,     "ait",          ":Iq:3s/*",             False],
            [2,     "ions",         ":Iq:Sp:1p/*",          False],
            [2,     "iez",          ":Iq:Sp:2p/*",          False],
            [2,     "aient",        ":Iq:3p/*",             False],
            [2,     "ai",           ":Is:1s/*",             False],
            [2,     "as",           ":Is:2s/*",             False],
            [2,     "a",            ":Is:3s/*",             False],
            [2,     "âmes",         ":Is:1p/*",             False],
            [2,     "âtes",         ":Is:2p/*",             False],
            [2,     "èrent",        ":Is:3p!/*",            False],
            [2,     "erai",         ":If:1s/M",             False],
            [5,     "èbrerai",      ":If:1s/R",             False],
            [2,     "eras",         ":If:2s/M",             False],
            [5,     "èbreras",      ":If:2s/R",             False],
            [2,     "era",          ":If:3s/M",             False],
            [5,     "èbrera",       ":If:3s/R",             False],
            [2,     "erons",        ":If:1p/M",             False],
            [5,     "èbrerons",     ":If:1p/R",             False],
            [2,     "erez",         ":If:2p/M",             False],
            [5,     "èbrerez",      ":If:2p/R",             False],
            [2,     "eront",        ":If:3p!/M",            False],
            [5,     "èbreront",     ":If:3p!/R",            False],
            [2,     "erais",        ":K:1s:2s/M",           False],
            [5,     "èbrerais",     ":K:1s:2s/R",           False],
            [2,     "erait",        ":K:3s/M",              False],
            [5,     "èbrerait",     ":K:3s/R",              False],
            [2,     "erions",       ":K:1p/M",              False],
            [5,     "èbrerions",    ":K:1p/R",              False],
            [2,     "eriez",        ":K:2p/M",              False],
            [5,     "èbreriez",     ":K:2p/R",              False],
            [2,     "eraient",      ":K:3p/M",              False],
            [5,     "èbreraient",   ":K:3p/R",              False],
            [2,     "asse",         ":Sq:1s/*",             False],
            [2,     "asses",        ":Sq:2s/*",             False],
            [2,     "ât",           ":Sq:3s/*",             False],
            [2,     "assions",      ":Sq:1p/*",             False],
            [2,     "assiez",       ":Sq:2p/*",             False],
            [2,     "assent",       ":Sq:3p/*",             False],
            [5,     "èbre",         ":E:2s/*",              False],
            [2,     "ons",          ":E:1p/*",              False],
            [2,     "ez",           ":E:2p/*",              False]
        ],

        "écher": [
            [2,     "er",           ":Y/*",                 False],
            [2,     "ant",          ":P/*",                 False],
            [5,     "èche",         ":Ip:Sp:1s:3s/*",       False],
            [2,     "è",            ":Ip:1ś/R",             False],
            [5,     "èches",        ":Ip:Sp:2s/*",          False],
            [2,     "ons",          ":Ip:1p/*",             False],
            [2,     "ez",           ":Ip:2p/*",             False],
            [5,     "èchent",       ":Ip:Sp:3p/*",          False],
            [2,     "ais",          ":Iq:1s:2s/*",          False],
            [2,     "ait",          ":Iq:3s/*",             False],
            [2,     "ions",         ":Iq:Sp:1p/*",          False],
            [2,     "iez",          ":Iq:Sp:2p/*",          False],
            [2,     "aient",        ":Iq:3p/*",             False],
            [2,     "ai",           ":Is:1s/*",             False],
            [2,     "as",           ":Is:2s/*",             False],
            [2,     "a",            ":Is:3s/*",             False],
            [2,     "âmes",         ":Is:1p/*",             False],
            [2,     "âtes",         ":Is:2p/*",             False],
            [2,     "èrent",        ":Is:3p!/*",            False],
            [2,     "erai",         ":If:1s/M",             False],
            [5,     "ècherai",      ":If:1s/R",             False],
            [2,     "eras",         ":If:2s/M",             False],
            [5,     "ècheras",      ":If:2s/R",             False],
            [2,     "era",          ":If:3s/M",             False],
            [5,     "èchera",       ":If:3s/R",             False],
            [2,     "erons",        ":If:1p/M",             False],
            [5,     "ècherons",     ":If:1p/R",             False],
            [2,     "erez",         ":If:2p/M",             False],
            [5,     "ècherez",      ":If:2p/R",             False],
            [2,     "eront",        ":If:3p!/M",            False],
            [5,     "ècheront",     ":If:3p!/R",            False],
            [2,     "erais",        ":K:1s:2s/M",           False],
            [5,     "ècherais",     ":K:1s:2s/R",           False],
            [2,     "erait",        ":K:3s/M",              False],
            [5,     "ècherait",     ":K:3s/R",              False],
            [2,     "erions",       ":K:1p/M",              False],
            [5,     "ècherions",    ":K:1p/R",              False],
            [2,     "eriez",        ":K:2p/M",              False],
            [5,     "ècheriez",     ":K:2p/R",              False],
            [2,     "eraient",      ":K:3p/M",              False],
            [5,     "ècheraient",   ":K:3p/R",              False],
            [2,     "asse",         ":Sq:1s/*",             False],
            [2,     "asses",        ":Sq:2s/*",             False],
            [2,     "ât",           ":Sq:3s/*",             False],
            [2,     "assions",      ":Sq:1p/*",             False],
            [2,     "assiez",       ":Sq:2p/*",             False],
            [2,     "assent",       ":Sq:3p/*",             False],
            [5,     "èche",         ":E:2s/*",              False],
            [2,     "ons",          ":E:1p/*",              False],
            [2,     "ez",           ":E:2p/*",              False]
        ],

        "écrer": [
            [2,     "er",           ":Y/*",                 False],
            [2,     "ant",          ":P/*",                 False],
            [5,     "ècre",         ":Ip:Sp:1s:3s/*",       False],
            [2,     "è",            ":Ip:1ś/R",             False],
            [5,     "ècres",        ":Ip:Sp:2s/*",          False],
            [2,     "ons",          ":Ip:1p/*",             False],
            [2,     "ez",           ":Ip:2p/*",             False],
            [5,     "ècrent",       ":Ip:Sp:3p/*",          False],
            [2,     "ais",          ":Iq:1s:2s/*",          False],
            [2,     "ait",          ":Iq:3s/*",             False],
            [2,     "ions",         ":Iq:Sp:1p/*",          False],
            [2,     "iez",          ":Iq:Sp:2p/*",          False],
            [2,     "aient",        ":Iq:3p/*",             False],
            [2,     "ai",           ":Is:1s/*",             False],
            [2,     "as",           ":Is:2s/*",             False],
            [2,     "a",            ":Is:3s/*",             False],
            [2,     "âmes",         ":Is:1p/*",             False],
            [2,     "âtes",         ":Is:2p/*",             False],
            [2,     "èrent",        ":Is:3p!/*",            False],
            [2,     "erai",         ":If:1s/M",             False],
            [5,     "ècrerai",      ":If:1s/R",             False],
            [2,     "eras",         ":If:2s/M",             False],
            [5,     "ècreras",      ":If:2s/R",             False],
            [2,     "era",          ":If:3s/M",             False],
            [5,     "ècrera",       ":If:3s/R",             False],
            [2,     "erons",        ":If:1p/M",             False],
            [5,     "ècrerons",     ":If:1p/R",             False],
            [2,     "erez",         ":If:2p/M",             False],
            [5,     "ècrerez",      ":If:2p/R",             False],
            [2,     "eront",        ":If:3p!/M",            False],
            [5,     "ècreront",     ":If:3p!/R",            False],
            [2,     "erais",        ":K:1s:2s/M",           False],
            [5,     "ècrerais",     ":K:1s:2s/R",           False],
            [2,     "erait",        ":K:3s/M",              False],
            [5,     "ècrerait",     ":K:3s/R",              False],
            [2,     "erions",       ":K:1p/M",              False],
            [5,     "ècrerions",    ":K:1p/R",              False],
            [2,     "eriez",        ":K:2p/M",              False],
            [5,     "ècreriez",     ":K:2p/R",              False],
            [2,     "eraient",      ":K:3p/M",              False],
            [5,     "ècreraient",   ":K:3p/R",              False],
            [2,     "asse",         ":Sq:1s/*",             False],
            [2,     "asses",        ":Sq:2s/*",             False],
            [2,     "ât",           ":Sq:3s/*",             False],
            [2,     "assions",      ":Sq:1p/*",             False],
            [2,     "assiez",       ":Sq:2p/*",             False],
            [2,     "assent",       ":Sq:3p/*",             False],
            [5,     "ècre",         ":E:2s/*",              False],
            [2,     "ons",          ":E:1p/*",              False],
            [2,     "ez",           ":E:2p/*",              False]
        ],

        "éder": [
            [2,     "er",           ":Y/*",                 False],
            [2,     "ant",          ":P/*",                 False],
            [4,     "ède",          ":Ip:Sp:1s:3s/*",       False],
            [2,     "è",            ":Ip:1ś/R",             False],
            [4,     "èdes",         ":Ip:Sp:2s/*",          False],
            [2,     "ons",          ":Ip:1p/*",             False],
            [2,     "ez",           ":Ip:2p/*",             False],
            [4,     "èdent",        ":Ip:Sp:3p/*",          False],
            [2,     "ais",          ":Iq:1s:2s/*",          False],
            [2,     "ait",          ":Iq:3s/*",             False],
            [2,     "ions",         ":Iq:Sp:1p/*",          False],
            [2,     "iez",          ":Iq:Sp:2p/*",          False],
            [2,     "aient",        ":Iq:3p/*",             False],
            [2,     "ai",           ":Is:1s/*",             False],
            [2,     "as",           ":Is:2s/*",             False],
            [2,     "a",            ":Is:3s/*",             False],
            [2,     "âmes",         ":Is:1p/*",             False],
            [2,     "âtes",         ":Is:2p/*",             False],
            [2,     "èrent",        ":Is:3p!/*",            False],
            [2,     "erai",         ":If:1s/M",             False],
            [4,     "èderai",       ":If:1s/R",             False],
            [2,     "eras",         ":If:2s/M",             False],
            [4,     "èderas",       ":If:2s/R",             False],
            [2,     "era",          ":If:3s/M",             False],
            [4,     "èdera",        ":If:3s/R",             False],
            [2,     "erons",        ":If:1p/M",             False],
            [4,     "èderons",      ":If:1p/R",             False],
            [2,     "erez",         ":If:2p/M",             False],
            [4,     "èderez",       ":If:2p/R",             False],
            [2,     "eront",        ":If:3p!/M",            False],
            [4,     "èderont",      ":If:3p!/R",            False],
            [2,     "erais",        ":K:1s:2s/M",           False],
            [4,     "èderais",      ":K:1s:2s/R",           False],
            [2,     "erait",        ":K:3s/M",              False],
            [4,     "èderait",      ":K:3s/R",              False],
            [2,     "erions",       ":K:1p/M",              False],
            [4,     "èderions",     ":K:1p/R",              False],
            [2,     "eriez",        ":K:2p/M",              False],
            [4,     "èderiez",      ":K:2p/R",              False],
            [2,     "eraient",      ":K:3p/M",              False],
            [4,     "èderaient",    ":K:3p/R",              False],
            [2,     "asse",         ":Sq:1s/*",             False],
            [2,     "asses",        ":Sq:2s/*",             False],
            [2,     "ât",           ":Sq:3s/*",             False],
            [2,     "assions",      ":Sq:1p/*",             False],
            [2,     "assiez",       ":Sq:2p/*",             False],
            [2,     "assent",       ":Sq:3p/*",             False],
            [4,     "ède",          ":E:2s/*",              False],
            [2,     "ons",          ":E:1p/*",              False],
            [2,     "ez",           ":E:2p/*",              False]
        ],

        "égler": [
            [2,     "er",           ":Y/*",                 False],
            [2,     "ant",          ":P/*",                 False],
            [5,     "ègle",         ":Ip:Sp:1s:3s/*",       False],
            [2,     "è",            ":Ip:1ś/R",             False],
            [5,     "ègles",        ":Ip:Sp:2s/*",          False],
            [2,     "ons",          ":Ip:1p/*",             False],
            [2,     "ez",           ":Ip:2p/*",             False],
            [5,     "èglent",       ":Ip:Sp:3p/*",          False],
            [2,     "ais",          ":Iq:1s:2s/*",          False],
            [2,     "ait",          ":Iq:3s/*",             False],
            [2,     "ions",         ":Iq:Sp:1p/*",          False],
            [2,     "iez",          ":Iq:Sp:2p/*",          False],
            [2,     "aient",        ":Iq:3p/*",             False],
            [2,     "ai",           ":Is:1s/*",             False],
            [2,     "as",           ":Is:2s/*",             False],
            [2,     "a",            ":Is:3s/*",             False],
            [2,     "âmes",         ":Is:1p/*",             False],
            [2,     "âtes",         ":Is:2p/*",             False],
            [2,     "èrent",        ":Is:3p!/*",            False],
            [2,     "erai",         ":If:1s/M",             False],
            [5,     "èglerai",      ":If:1s/R",             False],
            [2,     "eras",         ":If:2s/M",             False],
            [5,     "ègleras",      ":If:2s/R",             False],
            [2,     "era",          ":If:3s/M",             False],
            [5,     "èglera",       ":If:3s/R",             False],
            [2,     "erons",        ":If:1p/M",             False],
            [5,     "èglerons",     ":If:1p/R",             False],
            [2,     "erez",         ":If:2p/M",             False],
            [5,     "èglerez",      ":If:2p/R",             False],
            [2,     "eront",        ":If:3p!/M",            False],
            [5,     "ègleront",     ":If:3p!/R",            False],
            [2,     "erais",        ":K:1s:2s/M",           False],
            [5,     "èglerais",     ":K:1s:2s/R",           False],
            [2,     "erait",        ":K:3s/M",              False],
            [5,     "èglerait",     ":K:3s/R",              False],
            [2,     "erions",       ":K:1p/M",              False],
            [5,     "èglerions",    ":K:1p/R",              False],
            [2,     "eriez",        ":K:2p/M",              False],
            [5,     "ègleriez",     ":K:2p/R",              False],
            [2,     "eraient",      ":K:3p/M",              False],
            [5,     "ègleraient",   ":K:3p/R",              False],
            [2,     "asse",         ":Sq:1s/*",             False],
            [2,     "asses",        ":Sq:2s/*",             False],
            [2,     "ât",           ":Sq:3s/*",             False],
            [2,     "assions",      ":Sq:1p/*",             False],
            [2,     "assiez",       ":Sq:2p/*",             False],
            [2,     "assent",       ":Sq:3p/*",             False],
            [5,     "ègle",         ":E:2s/*",              False],
            [2,     "ons",          ":E:1p/*",              False],
            [2,     "ez",           ":E:2p/*",              False]
        ],

        "égner": [
            [2,     "er",           ":Y/*",                 False],
            [2,     "ant",          ":P/*",                 False],
            [5,     "ègne",         ":Ip:Sp:1s:3s/*",       False],
            [2,     "è",            ":Ip:1ś/R",             False],
            [5,     "ègnes",        ":Ip:Sp:2s/*",          False],
            [2,     "ons",          ":Ip:1p/*",             False],
            [2,     "ez",           ":Ip:2p/*",             False],
            [5,     "ègnent",       ":Ip:Sp:3p/*",          False],
            [2,     "ais",          ":Iq:1s:2s/*",          False],
            [2,     "ait",          ":Iq:3s/*",             False],
            [2,     "ions",         ":Iq:Sp:1p/*",          False],
            [2,     "iez",          ":Iq:Sp:2p/*",          False],
            [2,     "aient",        ":Iq:3p/*",             False],
            [2,     "ai",           ":Is:1s/*",             False],
            [2,     "as",           ":Is:2s/*",             False],
            [2,     "a",            ":Is:3s/*",             False],
            [2,     "âmes",         ":Is:1p/*",             False],
            [2,     "âtes",         ":Is:2p/*",             False],
            [2,     "èrent",        ":Is:3p!/*",            False],
            [2,     "erai",         ":If:1s/M",             False],
            [5,     "ègnerai",      ":If:1s/R",             False],
            [2,     "eras",         ":If:2s/M",             False],
            [5,     "ègneras",      ":If:2s/R",             False],
            [2,     "era",          ":If:3s/M",             False],
            [5,     "ègnera",       ":If:3s/R",             False],
            [2,     "erons",        ":If:1p/M",             False],
            [5,     "ègnerons",     ":If:1p/R",             False],
            [2,     "erez",         ":If:2p/M",             False],
            [5,     "ègnerez",      ":If:2p/R",             False],
            [2,     "eront",        ":If:3p!/M",            False],
            [5,     "ègneront",     ":If:3p!/R",            False],
            [2,     "erais",        ":K:1s:2s/M",           False],
            [5,     "ègnerais",     ":K:1s:2s/R",           False],
            [2,     "erait",        ":K:3s/M",              False],
            [5,     "ègnerait",     ":K:3s/R",              False],
            [2,     "erions",       ":K:1p/M",              False],
            [5,     "ègnerions",    ":K:1p/R",              False],
            [2,     "eriez",        ":K:2p/M",              False],
            [5,     "ègneriez",     ":K:2p/R",              False],
            [2,     "eraient",      ":K:3p/M",              False],
            [5,     "ègneraient",   ":K:3p/R",              False],
            [2,     "asse",         ":Sq:1s/*",             False],
            [2,     "asses",        ":Sq:2s/*",             False],
            [2,     "ât",           ":Sq:3s/*",             False],
            [2,     "assions",      ":Sq:1p/*",             False],
            [2,     "assiez",       ":Sq:2p/*",             False],
            [2,     "assent",       ":Sq:3p/*",             False],
            [5,     "ègne",         ":E:2s/*",              False],
            [2,     "ons",          ":E:1p/*",              False],
            [2,     "ez",           ":E:2p/*",              False]
        ],

        "égrer": [
            [2,     "er",           ":Y/*",                 False],
            [2,     "ant",          ":P/*",                 False],
            [5,     "ègre",         ":Ip:Sp:1s:3s/*",       False],
            [2,     "è",            ":Ip:1ś/R",             False],
            [5,     "ègres",        ":Ip:Sp:2s/*",          False],
            [2,     "ons",          ":Ip:1p/*",             False],
            [2,     "ez",           ":Ip:2p/*",             False],
            [5,     "ègrent",       ":Ip:Sp:3p/*",          False],
            [2,     "ais",          ":Iq:1s:2s/*",          False],
            [2,     "ait",          ":Iq:3s/*",             False],
            [2,     "ions",         ":Iq:Sp:1p/*",          False],
            [2,     "iez",          ":Iq:Sp:2p/*",          False],
            [2,     "aient",        ":Iq:3p/*",             False],
            [2,     "ai",           ":Is:1s/*",             False],
            [2,     "as",           ":Is:2s/*",             False],
            [2,     "a",            ":Is:3s/*",             False],
            [2,     "âmes",         ":Is:1p/*",             False],
            [2,     "âtes",         ":Is:2p/*",             False],
            [2,     "èrent",        ":Is:3p!/*",            False],
            [2,     "erai",         ":If:1s/M",             False],
            [5,     "ègrerai",      ":If:1s/R",             False],
            [2,     "eras",         ":If:2s/M",             False],
            [5,     "ègreras",      ":If:2s/R",             False],
            [2,     "era",          ":If:3s/M",             False],
            [5,     "ègrera",       ":If:3s/R",             False],
            [2,     "erons",        ":If:1p/M",             False],
            [5,     "ègrerons",     ":If:1p/R",             False],
            [2,     "erez",         ":If:2p/M",             False],
            [5,     "ègrerez",      ":If:2p/R",             False],
            [2,     "eront",        ":If:3p!/M",            False],
            [5,     "ègreront",     ":If:3p!/R",            False],
            [2,     "erais",        ":K:1s:2s/M",           False],
            [5,     "ègrerais",     ":K:1s:2s/R",           False],
            [2,     "erait",        ":K:3s/M",              False],
            [5,     "ègrerait",     ":K:3s/R",              False],
            [2,     "erions",       ":K:1p/M",              False],
            [5,     "ègrerions",    ":K:1p/R",              False],
            [2,     "eriez",        ":K:2p/M",              False],
            [5,     "ègreriez",     ":K:2p/R",              False],
            [2,     "eraient",      ":K:3p/M",              False],
            [5,     "ègreraient",   ":K:3p/R",              False],
            [2,     "asse",         ":Sq:1s/*",             False],
            [2,     "asses",        ":Sq:2s/*",             False],
            [2,     "ât",           ":Sq:3s/*",             False],
            [2,     "assions",      ":Sq:1p/*",             False],
            [2,     "assiez",       ":Sq:2p/*",             False],
            [2,     "assent",       ":Sq:3p/*",             False],
            [5,     "ègre",         ":E:2s/*",              False],
            [2,     "ons",          ":E:1p/*",              False],
            [2,     "ez",           ":E:2p/*",              False]
        ],

        "éguer": [
            [2,     "er",           ":Y/*",                 False],
            [2,     "ant",          ":P/*",                 False],
            [5,     "ègue",         ":Ip:Sp:1s:3s/*",       False],
            [2,     "è",            ":Ip:1ś/R",             False],
            [5,     "ègues",        ":Ip:Sp:2s/*",          False],
            [2,     "ons",          ":Ip:1p/*",             False],
            [2,     "ez",           ":Ip:2p/*",             False],
            [5,     "èguent",       ":Ip:Sp:3p/*",          False],
            [2,     "ais",          ":Iq:1s:2s/*",          False],
            [2,     "ait",          ":Iq:3s/*",             False],
            [2,     "ions",         ":Iq:Sp:1p/*",          False],
            [2,     "iez",          ":Iq:Sp:2p/*",          False],
            [2,     "aient",        ":Iq:3p/*",             False],
            [2,     "ai",           ":Is:1s/*",             False],
            [2,     "as",           ":Is:2s/*",             False],
            [2,     "a",            ":Is:3s/*",             False],
            [2,     "âmes",         ":Is:1p/*",             False],
            [2,     "âtes",         ":Is:2p/*",             False],
            [2,     "èrent",        ":Is:3p!/*",            False],
            [2,     "erai",         ":If:1s/M",             False],
            [5,     "èguerai",      ":If:1s/R",             False],
            [2,     "eras",         ":If:2s/M",             False],
            [5,     "ègueras",      ":If:2s/R",             False],
            [2,     "era",          ":If:3s/M",             False],
            [5,     "èguera",       ":If:3s/R",             False],
            [2,     "erons",        ":If:1p/M",             False],
            [5,     "èguerons",     ":If:1p/R",             False],
            [2,     "erez",         ":If:2p/M",             False],
            [5,     "èguerez",      ":If:2p/R",             False],
            [2,     "eront",        ":If:3p!/M",            False],
            [5,     "ègueront",     ":If:3p!/R",            False],
            [2,     "erais",        ":K:1s:2s/M",           False],
            [5,     "èguerais",     ":K:1s:2s/R",           False],
            [2,     "erait",        ":K:3s/M",              False],
            [5,     "èguerait",     ":K:3s/R",              False],
            [2,     "erions",       ":K:1p/M",              False],
            [5,     "èguerions",    ":K:1p/R",              False],
            [2,     "eriez",        ":K:2p/M",              False],
            [5,     "ègueriez",     ":K:2p/R",              False],
            [2,     "eraient",      ":K:3p/M",              False],
            [5,     "ègueraient",   ":K:3p/R",              False],
            [2,     "asse",         ":Sq:1s/*",             False],
            [2,     "asses",        ":Sq:2s/*",             False],
            [2,     "ât",           ":Sq:3s/*",             False],
            [2,     "assions",      ":Sq:1p/*",             False],
            [2,     "assiez",       ":Sq:2p/*",             False],
            [2,     "assent",       ":Sq:3p/*",             False],
            [5,     "ègue",         ":E:2s/*",              False],
            [2,     "ons",          ":E:1p/*",              False],
            [2,     "ez",           ":E:2p/*",              False]
        ],

        "éler": [
            [2,     "er",           ":Y/*",                 False],
            [2,     "ant",          ":P/*",                 False],
            [4,     "èle",          ":Ip:Sp:1s:3s/*",       False],
            [2,     "è",            ":Ip:1ś/R",             False],
            [4,     "èles",         ":Ip:Sp:2s/*",          False],
            [2,     "ons",          ":Ip:1p/*",             False],
            [2,     "ez",           ":Ip:2p/*",             False],
            [4,     "èlent",        ":Ip:Sp:3p/*",          False],
            [2,     "ais",          ":Iq:1s:2s/*",          False],
            [2,     "ait",          ":Iq:3s/*",             False],
            [2,     "ions",         ":Iq:Sp:1p/*",          False],
            [2,     "iez",          ":Iq:Sp:2p/*",          False],
            [2,     "aient",        ":Iq:3p/*",             False],
            [2,     "ai",           ":Is:1s/*",             False],
            [2,     "as",           ":Is:2s/*",             False],
            [2,     "a",            ":Is:3s/*",             False],
            [2,     "âmes",         ":Is:1p/*",             False],
            [2,     "âtes",         ":Is:2p/*",             False],
            [2,     "èrent",        ":Is:3p!/*",            False],
            [2,     "erai",         ":If:1s/M",             False],
            [4,     "èlerai",       ":If:1s/R",             False],
            [2,     "eras",         ":If:2s/M",             False],
            [4,     "èleras",       ":If:2s/R",             False],
            [2,     "era",          ":If:3s/M",             False],
            [4,     "èlera",        ":If:3s/R",             False],
            [2,     "erons",        ":If:1p/M",             False],
            [4,     "èlerons",      ":If:1p/R",             False],
            [2,     "erez",         ":If:2p/M",             False],
            [4,     "èlerez",       ":If:2p/R",             False],
            [2,     "eront",        ":If:3p!/M",            False],
            [4,     "èleront",      ":If:3p!/R",            False],
            [2,     "erais",        ":K:1s:2s/M",           False],
            [4,     "èlerais",      ":K:1s:2s/R",           False],
            [2,     "erait",        ":K:3s/M",              False],
            [4,     "èlerait",      ":K:3s/R",              False],
            [2,     "erions",       ":K:1p/M",              False],
            [4,     "èlerions",     ":K:1p/R",              False],
            [2,     "eriez",        ":K:2p/M",              False],
            [4,     "èleriez",      ":K:2p/R",              False],
            [2,     "eraient",      ":K:3p/M",              False],
            [4,     "èleraient",    ":K:3p/R",              False],
            [2,     "asse",         ":Sq:1s/*",             False],
            [2,     "asses",        ":Sq:2s/*",             False],
            [2,     "ât",           ":Sq:3s/*",             False],
            [2,     "assions",      ":Sq:1p/*",             False],
            [2,     "assiez",       ":Sq:2p/*",             False],
            [2,     "assent",       ":Sq:3p/*",             False],
            [4,     "èle",          ":E:2s/*",              False],
            [2,     "ons",          ":E:1p/*",              False],
            [2,     "ez",           ":E:2p/*",              False]
        ],

        "émer": [
            [2,     "er",           ":Y/*",                 False],
            [2,     "ant",          ":P/*",                 False],
            [4,     "ème",          ":Ip:Sp:1s:3s/*",       False],
            [2,     "è",            ":Ip:1ś/R",             False],
            [4,     "èmes",         ":Ip:Sp:2s/*",          False],
            [2,     "ons",          ":Ip:1p/*",             False],
            [2,     "ez",           ":Ip:2p/*",             False],
            [4,     "èment",        ":Ip:Sp:3p/*",          False],
            [2,     "ais",          ":Iq:1s:2s/*",          False],
            [2,     "ait",          ":Iq:3s/*",             False],
            [2,     "ions",         ":Iq:Sp:1p/*",          False],
            [2,     "iez",          ":Iq:Sp:2p/*",          False],
            [2,     "aient",        ":Iq:3p/*",             False],
            [2,     "ai",           ":Is:1s/*",             False],
            [2,     "as",           ":Is:2s/*",             False],
            [2,     "a",            ":Is:3s/*",             False],
            [2,     "âmes",         ":Is:1p/*",             False],
            [2,     "âtes",         ":Is:2p/*",             False],
            [2,     "èrent",        ":Is:3p!/*",            False],
            [2,     "erai",         ":If:1s/M",             False],
            [4,     "èmerai",       ":If:1s/R",             False],
            [2,     "eras",         ":If:2s/M",             False],
            [4,     "èmeras",       ":If:2s/R",             False],
            [2,     "era",          ":If:3s/M",             False],
            [4,     "èmera",        ":If:3s/R",             False],
            [2,     "erons",        ":If:1p/M",             False],
            [4,     "èmerons",      ":If:1p/R",             False],
            [2,     "erez",         ":If:2p/M",             False],
            [4,     "èmerez",       ":If:2p/R",             False],
            [2,     "eront",        ":If:3p!/M",            False],
            [4,     "èmeront",      ":If:3p!/R",            False],
            [2,     "erais",        ":K:1s:2s/M",           False],
            [4,     "èmerais",      ":K:1s:2s/R",           False],
            [2,     "erait",        ":K:3s/M",              False],
            [4,     "èmerait",      ":K:3s/R",              False],
            [2,     "erions",       ":K:1p/M",              False],
            [4,     "èmerions",     ":K:1p/R",              False],
            [2,     "eriez",        ":K:2p/M",              False],
            [4,     "èmeriez",      ":K:2p/R",              False],
            [2,     "eraient",      ":K:3p/M",              False],
            [4,     "èmeraient",    ":K:3p/R",              False],
            [2,     "asse",         ":Sq:1s/*",             False],
            [2,     "asses",        ":Sq:2s/*",             False],
            [2,     "ât",           ":Sq:3s/*",             False],
            [2,     "assions",      ":Sq:1p/*",             False],
            [2,     "assiez",       ":Sq:2p/*",             False],
            [2,     "assent",       ":Sq:3p/*",             False],
            [4,     "ème",          ":E:2s/*",              False],
            [2,     "ons",          ":E:1p/*",              False],
            [2,     "ez",           ":E:2p/*",              False]
        ],

        "éner": [
            [2,     "er",           ":Y/*",                 False],
            [2,     "ant",          ":P/*",                 False],
            [4,     "ène",          ":Ip:Sp:1s:3s/*",       False],
            [2,     "è",            ":Ip:1ś/R",             False],
            [4,     "ènes",         ":Ip:Sp:2s/*",          False],
            [2,     "ons",          ":Ip:1p/*",             False],
            [2,     "ez",           ":Ip:2p/*",             False],
            [4,     "ènent",        ":Ip:Sp:3p/*",          False],
            [2,     "ais",          ":Iq:1s:2s/*",          False],
            [2,     "ait",          ":Iq:3s/*",             False],
            [2,     "ions",         ":Iq:Sp:1p/*",          False],
            [2,     "iez",          ":Iq:Sp:2p/*",          False],
            [2,     "aient",        ":Iq:3p/*",             False],
            [2,     "ai",           ":Is:1s/*",             False],
            [2,     "as",           ":Is:2s/*",             False],
            [2,     "a",            ":Is:3s/*",             False],
            [2,     "âmes",         ":Is:1p/*",             False],
            [2,     "âtes",         ":Is:2p/*",             False],
            [2,     "èrent",        ":Is:3p!/*",            False],
            [2,     "erai",         ":If:1s/M",             False],
            [4,     "ènerai",       ":If:1s/R",             False],
            [2,     "eras",         ":If:2s/M",             False],
            [4,     "èneras",       ":If:2s/R",             False],
            [2,     "era",          ":If:3s/M",             False],
            [4,     "ènera",        ":If:3s/R",             False],
            [2,     "erons",        ":If:1p/M",             False],
            [4,     "ènerons",      ":If:1p/R",             False],
            [2,     "erez",         ":If:2p/M",             False],
            [4,     "ènerez",       ":If:2p/R",             False],
            [2,     "eront",        ":If:3p!/M",            False],
            [4,     "èneront",      ":If:3p!/R",            False],
            [2,     "erais",        ":K:1s:2s/M",           False],
            [4,     "ènerais",      ":K:1s:2s/R",           False],
            [2,     "erait",        ":K:3s/M",              False],
            [4,     "ènerait",      ":K:3s/R",              False],
            [2,     "erions",       ":K:1p/M",              False],
            [4,     "ènerions",     ":K:1p/R",              False],
            [2,     "eriez",        ":K:2p/M",              False],
            [4,     "èneriez",      ":K:2p/R",              False],
            [2,     "eraient",      ":K:3p/M",              False],
            [4,     "èneraient",    ":K:3p/R",              False],
            [2,     "asse",         ":Sq:1s/*",             False],
            [2,     "asses",        ":Sq:2s/*",             False],
            [2,     "ât",           ":Sq:3s/*",             False],
            [2,     "assions",      ":Sq:1p/*",             False],
            [2,     "assiez",       ":Sq:2p/*",             False],
            [2,     "assent",       ":Sq:3p/*",             False],
            [4,     "ène",          ":E:2s/*",              False],
            [2,     "ons",          ":E:1p/*",              False],
            [2,     "ez",           ":E:2p/*",              False]
        ],

        "éper": [
            [2,     "er",           ":Y/*",                 False],
            [2,     "ant",          ":P/*",                 False],
            [4,     "èpe",          ":Ip:Sp:1s:3s/*",       False],
            [2,     "è",            ":Ip:1ś/R",             False],
            [4,     "èpes",         ":Ip:Sp:2s/*",          False],
            [2,     "ons",          ":Ip:1p/*",             False],
            [2,     "ez",           ":Ip:2p/*",             False],
            [4,     "èpent",        ":Ip:Sp:3p/*",          False],
            [2,     "ais",          ":Iq:1s:2s/*",          False],
            [2,     "ait",          ":Iq:3s/*",             False],
            [2,     "ions",         ":Iq:Sp:1p/*",          False],
            [2,     "iez",          ":Iq:Sp:2p/*",          False],
            [2,     "aient",        ":Iq:3p/*",             False],
            [2,     "ai",           ":Is:1s/*",             False],
            [2,     "as",           ":Is:2s/*",             False],
            [2,     "a",            ":Is:3s/*",             False],
            [2,     "âmes",         ":Is:1p/*",             False],
            [2,     "âtes",         ":Is:2p/*",             False],
            [2,     "èrent",        ":Is:3p!/*",            False],
            [2,     "erai",         ":If:1s/M",             False],
            [4,     "èperai",       ":If:1s/R",             False],
            [2,     "eras",         ":If:2s/M",             False],
            [4,     "èperas",       ":If:2s/R",             False],
            [2,     "era",          ":If:3s/M",             False],
            [4,     "èpera",        ":If:3s/R",             False],
            [2,     "erons",        ":If:1p/M",             False],
            [4,     "èperons",      ":If:1p/R",             False],
            [2,     "erez",         ":If:2p/M",             False],
            [4,     "èperez",       ":If:2p/R",             False],
            [2,     "eront",        ":If:3p!/M",            False],
            [4,     "èperont",      ":If:3p!/R",            False],
            [2,     "erais",        ":K:1s:2s/M",           False],
            [4,     "èperais",      ":K:1s:2s/R",           False],
            [2,     "erait",        ":K:3s/M",              False],
            [4,     "èperait",      ":K:3s/R",              False],
            [2,     "erions",       ":K:1p/M",              False],
            [4,     "èperions",     ":K:1p/R",              False],
            [2,     "eriez",        ":K:2p/M",              False],
            [4,     "èperiez",      ":K:2p/R",              False],
            [2,     "eraient",      ":K:3p/M",              False],
            [4,     "èperaient",    ":K:3p/R",              False],
            [2,     "asse",         ":Sq:1s/*",             False],
            [2,     "asses",        ":Sq:2s/*",             False],
            [2,     "ât",           ":Sq:3s/*",             False],
            [2,     "assions",      ":Sq:1p/*",             False],
            [2,     "assiez",       ":Sq:2p/*",             False],
            [2,     "assent",       ":Sq:3p/*",             False],
            [4,     "èpe",          ":E:2s/*",              False],
            [2,     "ons",          ":E:1p/*",              False],
            [2,     "ez",           ":E:2p/*",              False]
        ],

        "équer": [
            [2,     "er",           ":Y/*",                 False],
            [2,     "ant",          ":P/*",                 False],
            [5,     "èque",         ":Ip:Sp:1s:3s/*",       False],
            [2,     "è",            ":Ip:1ś/R",             False],
            [5,     "èques",        ":Ip:Sp:2s/*",          False],
            [2,     "ons",          ":Ip:1p/*",             False],
            [2,     "ez",           ":Ip:2p/*",             False],
            [5,     "èquent",       ":Ip:Sp:3p/*",          False],
            [2,     "ais",          ":Iq:1s:2s/*",          False],
            [2,     "ait",          ":Iq:3s/*",             False],
            [2,     "ions",         ":Iq:Sp:1p/*",          False],
            [2,     "iez",          ":Iq:Sp:2p/*",          False],
            [2,     "aient",        ":Iq:3p/*",             False],
            [2,     "ai",           ":Is:1s/*",             False],
            [2,     "as",           ":Is:2s/*",             False],
            [2,     "a",            ":Is:3s/*",             False],
            [2,     "âmes",         ":Is:1p/*",             False],
            [2,     "âtes",         ":Is:2p/*",             False],
            [2,     "èrent",        ":Is:3p!/*",            False],
            [2,     "erai",         ":If:1s/M",             False],
            [5,     "èquerai",      ":If:1s/R",             False],
            [2,     "eras",         ":If:2s/M",             False],
            [5,     "èqueras",      ":If:2s/R",             False],
            [2,     "era",          ":If:3s/M",             False],
            [5,     "èquera",       ":If:3s/R",             False],
            [2,     "erons",        ":If:1p/M",             False],
            [5,     "èquerons",     ":If:1p/R",             False],
            [2,     "erez",         ":If:2p/M",             False],
            [5,     "èquerez",      ":If:2p/R",             False],
            [2,     "eront",        ":If:3p!/M",            False],
            [5,     "èqueront",     ":If:3p!/R",            False],
            [2,     "erais",        ":K:1s:2s/M",           False],
            [5,     "èquerais",     ":K:1s:2s/R",           False],
            [2,     "erait",        ":K:3s/M",              False],
            [5,     "èquerait",     ":K:3s/R",              False],
            [2,     "erions",       ":K:1p/M",              False],
            [5,     "èquerions",    ":K:1p/R",              False],
            [2,     "eriez",        ":K:2p/M",              False],
            [5,     "èqueriez",     ":K:2p/R",              False],
            [2,     "eraient",      ":K:3p/M",              False],
            [5,     "èqueraient",   ":K:3p/R",              False],
            [2,     "asse",         ":Sq:1s/*",             False],
            [2,     "asses",        ":Sq:2s/*",             False],
            [2,     "ât",           ":Sq:3s/*",             False],
            [2,     "assions",      ":Sq:1p/*",             False],
            [2,     "assiez",       ":Sq:2p/*",             False],
            [2,     "assent",       ":Sq:3p/*",             False],
            [5,     "èque",         ":E:2s/*",              False],
            [2,     "ons",          ":E:1p/*",              False],
            [2,     "ez",           ":E:2p/*",              False]
        ],

        "érer": [
            [2,     "er",           ":Y/*",                 False],
            [2,     "ant",          ":P/*",                 False],
            [4,     "ère",          ":Ip:Sp:1s:3s/*",       False],
            [2,     "è",            ":Ip:1ś/R",             False],
            [4,     "ères",         ":Ip:Sp:2s/*",          False],
            [2,     "ons",          ":Ip:1p/*",             False],
            [2,     "ez",           ":Ip:2p/*",             False],
            [4,     "èrent",        ":Ip:Sp:3p/*",          False],
            [2,     "ais",          ":Iq:1s:2s/*",          False],
            [2,     "ait",          ":Iq:3s/*",             False],
            [2,     "ions",         ":Iq:Sp:1p/*",          False],
            [2,     "iez",          ":Iq:Sp:2p/*",          False],
            [2,     "aient",        ":Iq:3p/*",             False],
            [2,     "ai",           ":Is:1s/*",             False],
            [2,     "as",           ":Is:2s/*",             False],
            [2,     "a",            ":Is:3s/*",             False],
            [2,     "âmes",         ":Is:1p/*",             False],
            [2,     "âtes",         ":Is:2p/*",             False],
            [2,     "èrent",        ":Is:3p!/*",            False],
            [2,     "erai",         ":If:1s/M",             False],
            [4,     "èrerai",       ":If:1s/R",             False],
            [2,     "eras",         ":If:2s/M",             False],
            [4,     "èreras",       ":If:2s/R",             False],
            [2,     "era",          ":If:3s/M",             False],
            [4,     "èrera",        ":If:3s/R",             False],
            [2,     "erons",        ":If:1p/M",             False],
            [4,     "èrerons",      ":If:1p/R",             False],
            [2,     "erez",         ":If:2p/M",             False],
            [4,     "èrerez",       ":If:2p/R",             False],
            [2,     "eront",        ":If:3p!/M",            False],
            [4,     "èreront",      ":If:3p!/R",            False],
            [2,     "erais",        ":K:1s:2s/M",           False],
            [4,     "èrerais",      ":K:1s:2s/R",           False],
            [2,     "erait",        ":K:3s/M",              False],
            [4,     "èrerait",      ":K:3s/R",              False],
            [2,     "erions",       ":K:1p/M",              False],
            [4,     "èrerions",     ":K:1p/R",              False],
            [2,     "eriez",        ":K:2p/M",              False],
            [4,     "èreriez",      ":K:2p/R",              False],
            [2,     "eraient",      ":K:3p/M",              False],
            [4,     "èreraient",    ":K:3p/R",              False],
            [2,     "asse",         ":Sq:1s/*",             False],
            [2,     "asses",        ":Sq:2s/*",             False],
            [2,     "ât",           ":Sq:3s/*",             False],
            [2,     "assions",      ":Sq:1p/*",             False],
            [2,     "assiez",       ":Sq:2p/*",             False],
            [2,     "assent",       ":Sq:3p/*",             False],
            [4,     "ère",          ":E:2s/*",              False],
            [2,     "ons",          ":E:1p/*",              False],
            [2,     "ez",           ":E:2p/*",              False]
        ],

        "éser": [
            [2,     "er",           ":Y/*",                 False],
            [2,     "ant",          ":P/*",                 False],
            [4,     "èse",          ":Ip:Sp:1s:3s/*",       False],
            [2,     "è",            ":Ip:1ś/R",             False],
            [4,     "èses",         ":Ip:Sp:2s/*",          False],
            [2,     "ons",          ":Ip:1p/*",             False],
            [2,     "ez",           ":Ip:2p/*",             False],
            [4,     "èsent",        ":Ip:Sp:3p/*",          False],
            [2,     "ais",          ":Iq:1s:2s/*",          False],
            [2,     "ait",          ":Iq:3s/*",             False],
            [2,     "ions",         ":Iq:Sp:1p/*",          False],
            [2,     "iez",          ":Iq:Sp:2p/*",          False],
            [2,     "aient",        ":Iq:3p/*",             False],
            [2,     "ai",           ":Is:1s/*",             False],
            [2,     "as",           ":Is:2s/*",             False],
            [2,     "a",            ":Is:3s/*",             False],
            [2,     "âmes",         ":Is:1p/*",             False],
            [2,     "âtes",         ":Is:2p/*",             False],
            [2,     "èrent",        ":Is:3p!/*",            False],
            [2,     "erai",         ":If:1s/M",             False],
            [4,     "èserai",       ":If:1s/R",             False],
            [2,     "eras",         ":If:2s/M",             False],
            [4,     "èseras",       ":If:2s/R",             False],
            [2,     "era",          ":If:3s/M",             False],
            [4,     "èsera",        ":If:3s/R",             False],
            [2,     "erons",        ":If:1p/M",             False],
            [4,     "èserons",      ":If:1p/R",             False],
            [2,     "erez",         ":If:2p/M",             False],
            [4,     "èserez",       ":If:2p/R",             False],
            [2,     "eront",        ":If:3p!/M",            False],
            [4,     "èseront",      ":If:3p!/R",            False],
            [2,     "erais",        ":K:1s:2s/M",           False],
            [4,     "èserais",      ":K:1s:2s/R",           False],
            [2,     "erait",        ":K:3s/M",              False],
            [4,     "èserait",      ":K:3s/R",              False],
            [2,     "erions",       ":K:1p/M",              False],
            [4,     "èserions",     ":K:1p/R",              False],
            [2,     "eriez",        ":K:2p/M",              False],
            [4,     "èseriez",      ":K:2p/R",              False],
            [2,     "eraient",      ":K:3p/M",              False],
            [4,     "èseraient",    ":K:3p/R",              False],
            [2,     "asse",         ":Sq:1s/*",             False],
            [2,     "asses",        ":Sq:2s/*",             False],
            [2,     "ât",           ":Sq:3s/*",             False],
            [2,     "assions",      ":Sq:1p/*",             False],
            [2,     "assiez",       ":Sq:2p/*",             False],
            [2,     "assent",       ":Sq:3p/*",             False],
            [4,     "èse",          ":E:2s/*",              False],
            [2,     "ons",          ":E:1p/*",              False],
            [2,     "ez",           ":E:2p/*",              False]
        ],

        "éter": [
            [2,     "er",           ":Y/*",                 False],
            [2,     "ant",          ":P/*",                 False],
            [4,     "ète",          ":Ip:Sp:1s:3s/*",       False],
            [2,     "è",            ":Ip:1ś/R",             False],
            [4,     "ètes",         ":Ip:Sp:2s/*",          False],
            [2,     "ons",          ":Ip:1p/*",             False],
            [2,     "ez",           ":Ip:2p/*",             False],
            [4,     "ètent",        ":Ip:Sp:3p/*",          False],
            [2,     "ais",          ":Iq:1s:2s/*",          False],
            [2,     "ait",          ":Iq:3s/*",             False],
            [2,     "ions",         ":Iq:Sp:1p/*",          False],
            [2,     "iez",          ":Iq:Sp:2p/*",          False],
            [2,     "aient",        ":Iq:3p/*",             False],
            [2,     "ai",           ":Is:1s/*",             False],
            [2,     "as",           ":Is:2s/*",             False],
            [2,     "a",            ":Is:3s/*",             False],
            [2,     "âmes",         ":Is:1p/*",             False],
            [2,     "âtes",         ":Is:2p/*",             False],
            [2,     "èrent",        ":Is:3p!/*",            False],
            [2,     "erai",         ":If:1s/M",             False],
            [4,     "èterai",       ":If:1s/R",             False],
            [2,     "eras",         ":If:2s/M",             False],
            [4,     "èteras",       ":If:2s/R",             False],
            [2,     "era",          ":If:3s/M",             False],
            [4,     "ètera",        ":If:3s/R",             False],
            [2,     "erons",        ":If:1p/M",             False],
            [4,     "èterons",      ":If:1p/R",             False],
            [2,     "erez",         ":If:2p/M",             False],
            [4,     "èterez",       ":If:2p/R",             False],
            [2,     "eront",        ":If:3p!/M",            False],
            [4,     "èteront",      ":If:3p!/R",            False],
            [2,     "erais",        ":K:1s:2s/M",           False],
            [4,     "èterais",      ":K:1s:2s/R",           False],
            [2,     "erait",        ":K:3s/M",              False],
            [4,     "èterait",      ":K:3s/R",              False],
            [2,     "erions",       ":K:1p/M",              False],
            [4,     "èterions",     ":K:1p/R",              False],
            [2,     "eriez",        ":K:2p/M",              False],
            [4,     "èteriez",      ":K:2p/R",              False],
            [2,     "eraient",      ":K:3p/M",              False],
            [4,     "èteraient",    ":K:3p/R",              False],
            [2,     "asse",         ":Sq:1s/*",             False],
            [2,     "asses",        ":Sq:2s/*",             False],
            [2,     "ât",           ":Sq:3s/*",             False],
            [2,     "assions",      ":Sq:1p/*",             False],
            [2,     "assiez",       ":Sq:2p/*",             False],
            [2,     "assent",       ":Sq:3p/*",             False],
            [4,     "ète",          ":E:2s/*",              False],
            [2,     "ons",          ":E:1p/*",              False],
            [2,     "ez",           ":E:2p/*",              False]
        ],

        "étrer": [
            [2,     "er",           ":Y/*",                 False],
            [2,     "ant",          ":P/*",                 False],
            [5,     "ètre",         ":Ip:Sp:1s:3s/*",       False],
            [2,     "è",            ":Ip:1ś/R",             False],
            [5,     "ètres",        ":Ip:Sp:2s/*",          False],
            [2,     "ons",          ":Ip:1p/*",             False],
            [2,     "ez",           ":Ip:2p/*",             False],
            [5,     "ètrent",       ":Ip:Sp:3p/*",          False],
            [2,     "ais",          ":Iq:1s:2s/*",          False],
            [2,     "ait",          ":Iq:3s/*",             False],
            [2,     "ions",         ":Iq:Sp:1p/*",          False],
            [2,     "iez",          ":Iq:Sp:2p/*",          False],
            [2,     "aient",        ":Iq:3p/*",             False],
            [2,     "ai",           ":Is:1s/*",             False],
            [2,     "as",           ":Is:2s/*",             False],
            [2,     "a",            ":Is:3s/*",             False],
            [2,     "âmes",         ":Is:1p/*",             False],
            [2,     "âtes",         ":Is:2p/*",             False],
            [2,     "èrent",        ":Is:3p!/*",            False],
            [2,     "erai",         ":If:1s/M",             False],
            [5,     "ètrerai",      ":If:1s/R",             False],
            [2,     "eras",         ":If:2s/M",             False],
            [5,     "ètreras",      ":If:2s/R",             False],
            [2,     "era",          ":If:3s/M",             False],
            [5,     "ètrera",       ":If:3s/R",             False],
            [2,     "erons",        ":If:1p/M",             False],
            [5,     "ètrerons",     ":If:1p/R",             False],
            [2,     "erez",         ":If:2p/M",             False],
            [5,     "ètrerez",      ":If:2p/R",             False],
            [2,     "eront",        ":If:3p!/M",            False],
            [5,     "ètreront",     ":If:3p!/R",            False],
            [2,     "erais",        ":K:1s:2s/M",           False],
            [5,     "ètrerais",     ":K:1s:2s/R",           False],
            [2,     "erait",        ":K:3s/M",              False],
            [5,     "ètrerait",     ":K:3s/R",              False],
            [2,     "erions",       ":K:1p/M",              False],
            [5,     "ètrerions",    ":K:1p/R",              False],
            [2,     "eriez",        ":K:2p/M",              False],
            [5,     "ètreriez",     ":K:2p/R",              False],
            [2,     "eraient",      ":K:3p/M",              False],
            [5,     "ètreraient",   ":K:3p/R",              False],
            [2,     "asse",         ":Sq:1s/*",             False],
            [2,     "asses",        ":Sq:2s/*",             False],
            [2,     "ât",           ":Sq:3s/*",             False],
            [2,     "assions",      ":Sq:1p/*",             False],
            [2,     "assiez",       ":Sq:2p/*",             False],
            [2,     "assent",       ":Sq:3p/*",             False],
            [5,     "ètre",         ":E:2s/*",              False],
            [2,     "ons",          ":E:1p/*",              False],
            [2,     "ez",           ":E:2p/*",              False]
        ],

        "évrer": [
            [2,     "er",           ":Y/*",                 False],
            [2,     "ant",          ":P/*",                 False],
            [5,     "èvre",         ":Ip:Sp:1s:3s/*",       False],
            [2,     "è",            ":Ip:1ś/R",             False],
            [5,     "èvres",        ":Ip:Sp:2s/*",          False],
            [2,     "ons",          ":Ip:1p/*",             False],
            [2,     "ez",           ":Ip:2p/*",             False],
            [5,     "èvrent",       ":Ip:Sp:3p/*",          False],
            [2,     "ais",          ":Iq:1s:2s/*",          False],
            [2,     "ait",          ":Iq:3s/*",             False],
            [2,     "ions",         ":Iq:Sp:1p/*",          False],
            [2,     "iez",          ":Iq:Sp:2p/*",          False],
            [2,     "aient",        ":Iq:3p/*",             False],
            [2,     "ai",           ":Is:1s/*",             False],
            [2,     "as",           ":Is:2s/*",             False],
            [2,     "a",            ":Is:3s/*",             False],
            [2,     "âmes",         ":Is:1p/*",             False],
            [2,     "âtes",         ":Is:2p/*",             False],
            [2,     "èrent",        ":Is:3p!/*",            False],
            [2,     "erai",         ":If:1s/M",             False],
            [5,     "èvrerai",      ":If:1s/R",             False],
            [2,     "eras",         ":If:2s/M",             False],
            [5,     "èvreras",      ":If:2s/R",             False],
            [2,     "era",          ":If:3s/M",             False],
            [5,     "èvrera",       ":If:3s/R",             False],
            [2,     "erons",        ":If:1p/M",             False],
            [5,     "èvrerons",     ":If:1p/R",             False],
            [2,     "erez",         ":If:2p/M",             False],
            [5,     "èvrerez",      ":If:2p/R",             False],
            [2,     "eront",        ":If:3p!/M",            False],
            [5,     "èvreront",     ":If:3p!/R",            False],
            [2,     "erais",        ":K:1s:2s/M",           False],
            [5,     "èvrerais",     ":K:1s:2s/R",           False],
            [2,     "erait",        ":K:3s/M",              False],
            [5,     "èvrerait",     ":K:3s/R",              False],
            [2,     "erions",       ":K:1p/M",              False],
            [5,     "èvrerions",    ":K:1p/R",              False],
            [2,     "eriez",        ":K:2p/M",              False],
            [5,     "èvreriez",     ":K:2p/R",              False],
            [2,     "eraient",      ":K:3p/M",              False],
            [5,     "èvreraient",   ":K:3p/R",              False],
            [2,     "asse",         ":Sq:1s/*",             False],
            [2,     "asses",        ":Sq:2s/*",             False],
            [2,     "ât",           ":Sq:3s/*",             False],
            [2,     "assions",      ":Sq:1p/*",             False],
            [2,     "assiez",       ":Sq:2p/*",             False],
            [2,     "assent",       ":Sq:3p/*",             False],
            [5,     "èvre",         ":E:2s/*",              False],
            [2,     "ons",          ":E:1p/*",              False],
            [2,     "ez",           ":E:2p/*",              False]
        ],

        "éyer": [
            [2,     "er",           ":Y/*",                 False],
            [2,     "ant",          ":P/*",                 False],
            [4,     "èye",          ":Ip:Sp:1s:3s/*",       False],
            [2,     "è",            ":Ip:1ś/R",             False],
            [4,     "èyes",         ":Ip:Sp:2s/*",          False],
            [2,     "ons",          ":Ip:1p/*",             False],
            [2,     "ez",           ":Ip:2p/*",             False],
            [4,     "èyent",        ":Ip:Sp:3p/*",          False],
            [2,     "ais",          ":Iq:1s:2s/*",          False],
            [2,     "ait",          ":Iq:3s/*",             False],
            [2,     "ions",         ":Iq:Sp:1p/*",          False],
            [2,     "iez",          ":Iq:Sp:2p/*",          False],
            [2,     "aient",        ":Iq:3p/*",             False],
            [2,     "ai",           ":Is:1s/*",             False],
            [2,     "as",           ":Is:2s/*",             False],
            [2,     "a",            ":Is:3s/*",             False],
            [2,     "âmes",         ":Is:1p/*",             False],
            [2,     "âtes",         ":Is:2p/*",             False],
            [2,     "èrent",        ":Is:3p!/*",            False],
            [2,     "erai",         ":If:1s/M",             False],
            [4,     "èyerai",       ":If:1s/R",             False],
            [2,     "eras",         ":If:2s/M",             False],
            [4,     "èyeras",       ":If:2s/R",             False],
            [2,     "era",          ":If:3s/M",             False],
            [4,     "èyera",        ":If:3s/R",             False],
            [2,     "erons",        ":If:1p/M",             False],
            [4,     "èyerons",      ":If:1p/R",             False],
            [2,     "erez",         ":If:2p/M",             False],
            [4,     "èyerez",       ":If:2p/R",             False],
            [2,     "eront",        ":If:3p!/M",            False],
            [4,     "èyeront",      ":If:3p!/R",            False],
            [2,     "erais",        ":K:1s:2s/M",           False],
            [4,     "èyerais",      ":K:1s:2s/R",           False],
            [2,     "erait",        ":K:3s/M",              False],
            [4,     "èyerait",      ":K:3s/R",              False],
            [2,     "erions",       ":K:1p/M",              False],
            [4,     "èyerions",     ":K:1p/R",              False],
            [2,     "eriez",        ":K:2p/M",              False],
            [4,     "èyeriez",      ":K:2p/R",              False],
            [2,     "eraient",      ":K:3p/M",              False],
            [4,     "èyeraient",    ":K:3p/R",              False],
            [2,     "asse",         ":Sq:1s/*",             False],
            [2,     "asses",        ":Sq:2s/*",             False],
            [2,     "ât",           ":Sq:3s/*",             False],
            [2,     "assions",      ":Sq:1p/*",             False],
            [2,     "assiez",       ":Sq:2p/*",             False],
            [2,     "assent",       ":Sq:3p/*",             False],
            [4,     "èye",          ":E:2s/*",              False],
            [2,     "ons",          ":E:1p/*",              False],
            [2,     "ez",           ":E:2p/*",              False]
        ]
    }
}

Modified gc_lang/fr/oxt/AppLauncher.py from [f6fd0dec5a] to [ed57ba0db8].

38
39
40
41
42
43
44








45
46
47
48
49
50
51
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59







+
+
+
+
+
+
+
+







                    xDialog.run(sCmd[3:])
                else:
                    xDialog.run()
            elif sCmd == "TF":
                import TextFormatter
                xDialog = TextFormatter.TextFormatter(self.ctx)
                xDialog.run(self.sLang)
            elif sCmd == "DI":
                import DictOptions
                xDialog = DictOptions.DictOptions(self.ctx)
                xDialog.run(self.sLang)
            elif sCmd == "LE":
                import LexiconEditor
                xDialog = LexiconEditor.LexiconEditor(self.ctx)
                xDialog.run(self.sLang)
            elif sCmd == "DS":
                import DictionarySwitcher
                xDialog = DictionarySwitcher.FrenchDictionarySwitcher(self.ctx)
                xDialog.run(self.sLang)
            elif sCmd == "MA":
                import Author
                xDialog = Author.Author(self.ctx)

Added gc_lang/fr/oxt/DictOptions/DictOptions.py version [3451cecc0b].














































































































































1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
# Dictionary Options
# by Olivier R.
# License: MPL 2

import unohelper
import uno
import traceback
import time

import helpers
import do_strings

from com.sun.star.task import XJobExecutor
from com.sun.star.awt import XActionListener
from com.sun.star.beans import PropertyValue


class DictOptions (unohelper.Base, XActionListener, XJobExecutor):

    def __init__ (self, ctx):
        self.ctx = ctx
        self.xSvMgr = self.ctx.ServiceManager
        self.xContainer = None
        self.xDialog = None
        
    def _addWidget (self, name, wtype, x, y, w, h, **kwargs):
        xWidget = self.xDialog.createInstance('com.sun.star.awt.UnoControl%sModel' % wtype)
        xWidget.Name = name
        xWidget.PositionX = x
        xWidget.PositionY = y
        xWidget.Width = w
        xWidget.Height = h
        for k, w in kwargs.items():
            setattr(xWidget, k, w)
        self.xDialog.insertByName(name, xWidget)
        return xWidget

    def run (self, sLang):
        dUI = do_strings.getUI(sLang)

        self.xSettingNode = helpers.getConfigSetting("/org.openoffice.Lightproof_grammalecte/Other/", True)

        # dialog
        self.xDialog = self.xSvMgr.createInstanceWithContext('com.sun.star.awt.UnoControlDialogModel', self.ctx)
        self.xDialog.Width = 200
        self.xDialog.Height = 210
        self.xDialog.Title = dUI.get('title', "#title#")
        xWindowSize = helpers.getWindowSize()
        self.xDialog.PositionX = int((xWindowSize.Width / 2) - (self.xDialog.Width / 2))
        self.xDialog.PositionY = int((xWindowSize.Height / 2) - (self.xDialog.Height / 2))

        # fonts
        xFDTitle = uno.createUnoStruct("com.sun.star.awt.FontDescriptor")
        xFDTitle.Height = 9
        xFDTitle.Weight = uno.getConstantByName("com.sun.star.awt.FontWeight.BOLD")
        xFDTitle.Name = "Verdana"
        
        xFDSubTitle = uno.createUnoStruct("com.sun.star.awt.FontDescriptor")
        xFDSubTitle.Height = 8
        xFDSubTitle.Weight = uno.getConstantByName("com.sun.star.awt.FontWeight.BOLD")
        xFDSubTitle.Name = "Verdana"

        # widget
        nX = 10
        nY1 = 10
        nY2 = nY1 + 50
        nY3 = nY2 + 70

        nWidth = self.xDialog.Width - 20
        nHeight = 10

        # Spell checker section
        self._addWidget("spelling_section", 'FixedLine', nX, nY1, nWidth, nHeight, Label = dUI.get("spelling_section", "#err"), FontDescriptor = xFDTitle)
        self.xGraphspell = self._addWidget('activate_main', 'CheckBox', nX, nY1+15, nWidth, nHeight, Label = dUI.get('activate_main', "#err"))
        self._addWidget('activate_main_descr', 'FixedText', nX, nY1+25, nWidth, nHeight*2, Label = dUI.get('activate_main_descr', "#err"), MultiLine = True)

        # Spell suggestion engine section
        self._addWidget("suggestion_section", 'FixedLine', nX, nY2, nWidth, nHeight, Label = dUI.get("suggestion_section", "#err"), FontDescriptor = xFDTitle)
        self.xGraphspellSugg = self._addWidget('activate_spell_sugg', 'CheckBox', nX, nY2+15, nWidth, nHeight, Label = dUI.get('activate_spell_sugg', "#err"))
        self._addWidget('activate_spell_sugg_descr', 'FixedText', nX, nY2+25, nWidth, nHeight*4, Label = dUI.get('activate_spell_sugg_descr', "#err"), MultiLine = True)

        # Personal dictionary section
        self._addWidget("personal_section", 'FixedLine', nX, nY3, nWidth, nHeight, Label = dUI.get("personal_section", "#err"), FontDescriptor = xFDTitle)
        self.xPersonalDic = self._addWidget('activate_personal', 'CheckBox', nX, nY3+15, nWidth, nHeight, Label = dUI.get('activate_personal', "#err"))
        self._addWidget('activate_personnal_descr', 'FixedText', nX, nY3+25, nWidth, nHeight*3, Label = dUI.get('activate_personal_descr', "#err"), MultiLine = True)
        
        # Button
        self._addWidget('apply_button', 'Button', self.xDialog.Width-115, self.xDialog.Height-25, 50, 14, Label = dUI.get('apply_button', "#err"), FontDescriptor = xFDTitle, TextColor = 0x005500)
        self._addWidget('cancel_button', 'Button', self.xDialog.Width-60, self.xDialog.Height-25, 50, 14, Label = dUI.get('cancel_button', "#err"), FontDescriptor = xFDTitle, TextColor = 0x550000)

        self._loadOptions()

        # container
        self.xContainer = self.xSvMgr.createInstanceWithContext('com.sun.star.awt.UnoControlDialog', self.ctx)
        self.xContainer.setModel(self.xDialog)
        self.xContainer.getControl('apply_button').addActionListener(self)
        self.xContainer.getControl('apply_button').setActionCommand('Apply')
        self.xContainer.getControl('cancel_button').addActionListener(self)
        self.xContainer.getControl('cancel_button').setActionCommand('Cancel')
        self.xContainer.setVisible(False)
        toolkit = self.xSvMgr.createInstanceWithContext('com.sun.star.awt.ExtToolkit', self.ctx)
        self.xContainer.createPeer(toolkit, None)
        self.xContainer.execute()

    # XActionListener
    def actionPerformed (self, xActionEvent):
        try:
            if xActionEvent.ActionCommand == 'Apply':
                xChild = self.xSettingNode.getByName("o_fr")
                xChild.setPropertyValue("use_graphspell", self.xGraphspell.State)
                xChild.setPropertyValue("use_graphspell_sugg", self.xGraphspellSugg.State)
                #xChild.setPropertyValue("extended_dic", self.xExtendedDic.State)
                xChild.setPropertyValue("use_personal_dic", self.xPersonalDic.State)
                self.xSettingNode.commitChanges()
            else:
                pass
            self.xContainer.endExecute()
        except:
            traceback.print_exc()
    
    # XJobExecutor
    def trigger (self, args):
        try:
            dialog = DictOptions(self.ctx)
            dialog.run()
        except:
            traceback.print_exc()

    def _loadOptions (self):
        try:
            xChild = self.xSettingNode.getByName("o_fr")
            self.xGraphspell.State = xChild.getPropertyValue("use_graphspell")
            self.xGraphspellSugg.State = xChild.getPropertyValue("use_graphspell_sugg")
            #self.xExtendedDic.State = xChild.getPropertyValue("extended_dic")
            self.xPersonalDic.State = xChild.getPropertyValue("use_personal_dic")
        except:
            traceback.print_exc()


#g_ImplementationHelper = unohelper.ImplementationHelper()
#g_ImplementationHelper.addImplementation(DictOptions, 'net.grammalecte.graphspell.DictOptions', ('com.sun.star.task.Job',))

Added gc_lang/fr/oxt/DictOptions/LexiconEditor.py version [c2a8dfc686].
































































































































































































































































































































































































































































































































































1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
# Lexicon Editor
# by Olivier R.
# License: GPL 3

import unohelper
import uno
import json
import re
import traceback

import helpers
import lxe_strings
import grammalecte.graphspell as sc
import grammalecte.graphspell.dawg as dawg
import grammalecte.graphspell.ibdawg as ibdawg
import grammalecte.fr.conj as conj
import grammalecte.fr.conj_generator as conjgen

from com.sun.star.task import XJobExecutor
from com.sun.star.awt import XActionListener
from com.sun.star.awt import XKeyListener


def _waitPointer (funcDecorated):
    def wrapper (*args, **kwargs):
        # self is the first parameter if the decorator is applied on a object
        self = args[0]
        # before
        xPointer = self.xSvMgr.createInstanceWithContext("com.sun.star.awt.Pointer", self.ctx)
        xPointer.setType(uno.getConstantByName("com.sun.star.awt.SystemPointer.WAIT"))
        xWindowPeer = self.xContainer.getPeer()
        xWindowPeer.setPointer(xPointer)
        for x in xWindowPeer.Windows:
            x.setPointer(xPointer)
        # processing
        result = funcDecorated(*args, **kwargs)
        # after
        xPointer.setType(uno.getConstantByName("com.sun.star.awt.SystemPointer.ARROW"))
        xWindowPeer.setPointer(xPointer)
        for x in xWindowPeer.Windows:
            x.setPointer(xPointer)
        self.xContainer.setVisible(True) # seems necessary to refresh the dialog box and text widgets (why?)
        # return
        return result
    return wrapper


class LexiconEditor (unohelper.Base, XActionListener, XKeyListener, XJobExecutor):

    def __init__ (self, ctx):
        self.ctx = ctx
        self.xSvMgr = self.ctx.ServiceManager
        self.xDesktop = self.xSvMgr.createInstanceWithContext("com.sun.star.frame.Desktop", self.ctx)
        self.xDocument = self.xDesktop.getCurrentComponent()
        self.xContainer = None
        self.xDialog = None
        self.oSpellChecker = None
        # data
        self.lGeneratedFlex = []
        # options node
        self.xSettingNode = helpers.getConfigSetting("/org.openoffice.Lightproof_grammalecte/Other/", True)

    def _addWidget (self, name, wtype, x, y, w, h, **kwargs):
        xWidget = self.xDialog.createInstance('com.sun.star.awt.UnoControl%sModel' % wtype)
        xWidget.Name = name
        xWidget.PositionX = x
        xWidget.PositionY = y
        xWidget.Width = w
        xWidget.Height = h
        for k, w in kwargs.items():
            setattr(xWidget, k, w)
        self.xDialog.insertByName(name, xWidget)
        return xWidget

    def _addGrid (self, name, x, y, w, h, columns, **kwargs):
        xGridModel = self.xDialog.createInstance('com.sun.star.awt.grid.UnoControlGridModel')
        xGridModel.Name = name
        xGridModel.PositionX = x
        xGridModel.PositionY = y
        xGridModel.Width = w
        xGridModel.Height = h
        xColumnModel = xGridModel.ColumnModel
        for e in columns:
            xCol = xColumnModel.createColumn()
            for k, w in e.items():
                setattr(xCol, k, w)
            xColumnModel.addColumn(xCol)
        for k, w in kwargs.items():
            setattr(xGridModel, k, w)
        self.xDialog.insertByName(name, xGridModel)
        return xGridModel

    def run (self, sLang):
        # ui lang
        self.dUI = lxe_strings.getUI(sLang)

        # dialog
        self.xDialog = self.xSvMgr.createInstanceWithContext('com.sun.star.awt.UnoControlDialogModel', self.ctx)
        self.xDialog.Width = 570
        self.xDialog.Height = 292
        self.xDialog.Title = self.dUI.get('title', "#title#")
        xWindowSize = helpers.getWindowSize()
        self.xDialog.PositionX = int((xWindowSize.Width / 2) - (self.xDialog.Width / 2))
        self.xDialog.PositionY = int((xWindowSize.Height / 2) - (self.xDialog.Height / 2))

        # fonts
        xFDTitle = uno.createUnoStruct("com.sun.star.awt.FontDescriptor")
        xFDTitle.Height = 9
        xFDTitle.Weight = uno.getConstantByName("com.sun.star.awt.FontWeight.BOLD")
        xFDTitle.Name = "Verdana"
        
        xFDSubTitle = uno.createUnoStruct("com.sun.star.awt.FontDescriptor")
        xFDSubTitle.Height = 8
        xFDSubTitle.Weight = uno.getConstantByName("com.sun.star.awt.FontWeight.BOLD")
        xFDSubTitle.Name = "Verdana"

        # widget
        nX1 = 10
        nX2 = 20

        nY1 = 5
        nY2 = nY1 + 25 # nom commun
        nY3 = nY2 + 95 # nom propre
        nY4 = nY3 + 45 # verbe
        nY5 = nY4 + 68 # adverbe
        nY6 = nY5 + 13 # autre

        nXB = nX1 + 185
        nXC = nXB + 165

        nHeight = 10

        #### Add word
        self._addWidget("add_section", 'FixedLine', nX1, nY1, 180, nHeight, Label = self.dUI.get("add_section", "#err"), FontDescriptor = xFDTitle)
        self.xLemma = self._addWidget('lemma', 'Edit', nX1, nY1+10, 120, 14, FontDescriptor = xFDTitle)
        self._addWidget('close_button', 'Button', nX1+130, nY1+10, 50, 14, Label = self.dUI.get('close_button', "#err"), FontDescriptor = xFDTitle, TextColor = 0x550000)

        # Radio buttons: main POS tag
        # Note: the only way to group RadioButtons is to create them successively
        self.xNA = self._addWidget('nom_adj', 'RadioButton', nX1, nY2+12, 60, nHeight, Label = self.dUI.get("nom_adj", "#err"), HelpText = ":N:A")
        self.xN = self._addWidget('nom', 'RadioButton', nX1, nY2+22, 60, nHeight, Label = self.dUI.get("nom", "#err"), HelpText = ":N")
        self.xA = self._addWidget('adj', 'RadioButton', nX1, nY2+32, 60, nHeight, Label = self.dUI.get("adj", "#err"), HelpText = ":A")
        self.xM1 = self._addWidget('M1', 'RadioButton', nX1, nY3+12, 60, nHeight, Label = self.dUI.get("M1", "#err"), HelpText = ":M1")
        self.xM2 = self._addWidget('M2', 'RadioButton', nX1, nY3+22, 60, nHeight, Label = self.dUI.get("M2", "#err"), HelpText = ":M2")
        self.xMP = self._addWidget('MP', 'RadioButton', nX1, nY3+32, 60, nHeight, Label = self.dUI.get("MP", "#err"), HelpText = ":MP")
        self.xV = self._addWidget('verb', 'RadioButton', nX1, nY4+2, 35, nHeight, Label = self.dUI.get("verb", "#err"), FontDescriptor = xFDSubTitle, HelpText = ":V")
        self.xW = self._addWidget('adv', 'RadioButton', nX1, nY5+2, 35, nHeight, Label = self.dUI.get("adverb", "#err"), FontDescriptor = xFDSubTitle, HelpText = ":W")
        self.xX = self._addWidget('other', 'RadioButton', nX1, nY6+2, 35, nHeight, Label = self.dUI.get("other", "#err"), FontDescriptor = xFDSubTitle, HelpText = ":X")
        
        # Nom, adjectif
        self._addWidget("fl_nom_adj", 'FixedLine', nX1, nY2, 180, nHeight, Label = self.dUI.get("common_name", "#err"), FontDescriptor = xFDSubTitle)
        self.xSepi = self._addWidget('Sepi', 'RadioButton', nX1+65, nY2+12, 50, nHeight, Label = self.dUI.get("epi", "#err"), HelpText = ":e")
        self.xSmas = self._addWidget('Smas', 'RadioButton', nX1+65, nY2+22, 50, nHeight, Label = self.dUI.get("mas", "#err"), HelpText = ":m")
        self.xSfem = self._addWidget('Sfem', 'RadioButton', nX1+65, nY2+32, 50, nHeight, Label = self.dUI.get("fem", "#err"), HelpText = ":f")
        self._addWidget("fl_sep1", 'FixedLine', nX1, nY2, 1, nHeight)
        self.xSs = self._addWidget('Ss', 'RadioButton', nX1+120, nY2+12, 50, nHeight, Label = self.dUI.get("-s", "#err"), HelpText = "·s")
        self.xSx = self._addWidget('Sx', 'RadioButton', nX1+120, nY2+22, 50, nHeight, Label = self.dUI.get("-x", "#err"), HelpText = "·x")
        self.xSinv = self._addWidget('Sinv', 'RadioButton', nX1+120, nY2+32, 50, nHeight, Label = self.dUI.get("inv", "#err"), HelpText = ":i")

        self._addWidget("alt_lemma_label", 'FixedLine', nX1+10, nY2+42, 170, nHeight, Label = self.dUI.get("alt_lemma", "#err"))
        self.xAltLemma = self._addWidget('alt_lemma', 'Edit', nX1+10, nY2+52, 120, nHeight)
        self.xNA2 = self._addWidget('nom_adj2', 'RadioButton', nX1+10, nY2+65, 60, nHeight, Label = self.dUI.get("nom_adj", "#err"), HelpText = ":N:A")
        self.xN2 = self._addWidget('nom2', 'RadioButton', nX1+10, nY2+75, 60, nHeight, Label = self.dUI.get("nom", "#err"), HelpText = ":N")
        self.xA2 = self._addWidget('adj2', 'RadioButton', nX1+10, nY2+85, 60, nHeight, Label = self.dUI.get("adj", "#err"), HelpText = ":A")
        self._addWidget("fl_sep2", 'FixedLine', nX1, nY2, 1, nHeight)
        self.xSepi2 = self._addWidget('Sepi2', 'RadioButton', nX1+75, nY2+65, 50, nHeight, Label = self.dUI.get("epi", "#err"), HelpText = ":e")
        self.xSmas2 = self._addWidget('Smas2', 'RadioButton', nX1+75, nY2+75, 50, nHeight, Label = self.dUI.get("mas", "#err"), HelpText = ":m")
        self.xSfem2 = self._addWidget('Sfem2', 'RadioButton', nX1+75, nY2+85, 50, nHeight, Label = self.dUI.get("fem", "#err"), HelpText = ":f")
        self._addWidget("fl_sep3", 'FixedLine', nX1, nY2, 1, nHeight)
        self.xSs2 = self._addWidget('Ss2', 'RadioButton', nX1+130, nY2+65, 50, nHeight, Label = self.dUI.get("-s", "#err"), HelpText = "·s")
        self.xSx2 = self._addWidget('Sx2', 'RadioButton', nX1+130, nY2+75, 50, nHeight, Label = self.dUI.get("-x", "#err"), HelpText = "·x")
        self.xSinv2 = self._addWidget('Sinv2', 'RadioButton', nX1+130, nY2+85, 50, nHeight, Label = self.dUI.get("inv", "#err"), HelpText = ":i")

        # Nom propre
        self._addWidget("fl_M", 'FixedLine', nX1, nY3, 180, nHeight, Label = self.dUI.get("proper_name", "#err"), FontDescriptor = xFDSubTitle)
        self.xMepi = self._addWidget('Mepi', 'RadioButton', nX1+65, nY3+12, 50, nHeight, Label = self.dUI.get("epi", "#err"), HelpText = ":e")
        self.xMmas = self._addWidget('Mmas', 'RadioButton', nX1+65, nY3+22, 50, nHeight, Label = self.dUI.get("mas", "#err"), HelpText = ":m")
        self.xMfem = self._addWidget('Mfem', 'RadioButton', nX1+65, nY3+32, 50, nHeight, Label = self.dUI.get("fem", "#err"), HelpText = ":f")

        # Verbe
        self._addWidget("fl_verb", 'FixedLine', nX2+30, nY4, 140, nHeight, FontDescriptor = xFDSubTitle)
        self.xV_i = self._addWidget('v_i', 'CheckBox', nX2, nY4+12, 60, nHeight, Label = self.dUI.get("v_i", "#err"))
        self.xV_t = self._addWidget('v_t', 'CheckBox', nX2, nY4+20, 60, nHeight, Label = self.dUI.get("v_t", "#err"))
        self.xV_n = self._addWidget('v_n', 'CheckBox', nX2, nY4+28, 60, nHeight, Label = self.dUI.get("v_n", "#err"))
        self.xV_p = self._addWidget('v_p', 'CheckBox', nX2, nY4+36, 60, nHeight, Label = self.dUI.get("v_p", "#err"))
        self.xV_m = self._addWidget('v_m', 'CheckBox', nX2, nY4+44, 60, nHeight, Label = self.dUI.get("v_m", "#err"))

        self._addWidget('aux', 'FixedText', nX2+75, nY4+10, 90, nHeight, Label = self.dUI.get("aux", "#err"))
        self.xV_ae = self._addWidget('v_ae', 'CheckBox', nX2+75, nY4+20, 90, nHeight, Label = self.dUI.get("v_ae", "#err"))
        self.xV_aa = self._addWidget('v_aa', 'CheckBox', nX2+75, nY4+28, 90, nHeight, Label = self.dUI.get("v_aa", "#err"))

        self.xV_pp = self._addWidget('v_pp', 'CheckBox', nX2+75, nY4+44, 90, nHeight, Label = self.dUI.get("v_pp", "#err"))

        self._addWidget('v_pattern_label', 'FixedText', nX2+10, nY4+56, 70, nHeight, Label = self.dUI.get('v_pattern', "#err"), Align = 2)
        self.xVpattern = self._addWidget('v_pattern', 'Edit', nX2+85, nY4+56, 80, nHeight)

        # Adverbe
        self._addWidget("fl_adv", 'FixedLine', nX2+30, nY5, 140, nHeight, FontDescriptor = xFDSubTitle)

        # Autre
        self._addWidget("fl_other", 'FixedLine', nX2+30, nY6, 140, nHeight, FontDescriptor = xFDSubTitle)
        self._addWidget('flexion_label', 'FixedText', nX2, nY6+11, 35, nHeight, Label = self.dUI.get('flexion', "#err"))
        self.xFlexion = self._addWidget('flexion', 'Edit', nX2+40, nY6+10, 100, nHeight)
        self._addWidget('tags_label', 'FixedText', nX2, nY6+23, 35, nHeight, Label = self.dUI.get('tags', "#err"))
        self.xTags = self._addWidget('tags', 'Edit', nX2+40, nY6+22, 100, nHeight)

        #### Generated words
        self._addWidget("gwords_section", 'FixedLine', nXB, nY1, 160, nHeight, Label = self.dUI.get("new_section", "#err"), FontDescriptor = xFDTitle)
        self.xGridModelNew = self._addGrid("list_grid_gwords", nXB, nY1+10, 160, 175, [
            {"Title": self.dUI.get("lex_flex", "#err"), "ColumnWidth": 80},
            {"Title": self.dUI.get("lex_tags", "#err"), "ColumnWidth": 80}
        ], SelectionModel = uno.Enum("com.sun.star.view.SelectionType", "MULTI"))
        self.xAdd = self._addWidget('add_button', 'Button', nXB, nY1+190, 75, 12, Label = self.dUI.get('add_button', "#err"), FontDescriptor = xFDSubTitle, TextColor = 0x005500, Enabled = False)
        self.xDelete = self._addWidget('delete_button', 'Button', nXB+80, nY1+190, 80, 12, Label = self.dUI.get('delete_button', "#err"), FontDescriptor = xFDSubTitle, TextColor = 0x550000)

        nY2b = nY1 + 205
        # lexicon info section
        self._addWidget("lexicon_info_section", 'FixedLine', nXB, nY2b, 160, nHeight, Label = self.dUI.get("lexicon_info_section", "#err"), FontDescriptor = xFDTitle)
        self._addWidget("added_entries_label", 'FixedText', nXB, nY2b+10, 65, nHeight, Label = self.dUI.get("added_entries_label", "#err"))
        self._addWidget("deleted_entries_label", 'FixedText', nXB, nY2b+20, 65, nHeight, Label = self.dUI.get("deleted_entries_label", "#err"))
        self._addWidget("num_of_entries_label1", 'FixedText', nXB, nY2b+30, 65, nHeight, Label = self.dUI.get("num_of_entries_label", "#err"))
        self.xNumAdded = self._addWidget("added_entries", 'FixedText', nXB+70, nY2b+10, 45, nHeight, Label = "0")
        self.xNumDeleted = self._addWidget("deleted_entries", 'FixedText', nXB+70, nY2b+20, 45, nHeight, Label = "0")
        self.xNumLex = self._addWidget("num_of_entries1", 'FixedText', nXB+70, nY2b+30, 45, nHeight, Label = "0")
        self.xSave = self._addWidget('save_button', 'Button', nXC-50, nY2b+30, 45, 12, Label = self.dUI.get('save_button', "#err"), FontDescriptor = xFDSubTitle, TextColor = 0x005500)
        # dictionary section
        self._addWidget("dictionary_section", 'FixedLine', nXB, nY2b+45, 160, nHeight, Label = self.dUI.get("dictionary_section", "#err"), FontDescriptor = xFDTitle)
        self._addWidget("save_date_label", 'FixedText', nXB, nY2b+55, 65, nHeight, Label = self.dUI.get("save_date_label", "#err"))
        self._addWidget("num_of_entries_label2", 'FixedText', nXB, nY2b+65, 65, nHeight, Label = self.dUI.get("num_of_entries_label", "#err"))
        self.xDateDic = self._addWidget("save_date", 'FixedText', nXB+70, nY2b+55, 90, nHeight, Label = "-")
        self.xNumDic = self._addWidget("num_of_entries2", 'FixedText', nXB+70, nY2b+65, 45, nHeight, Label = "0")
        self.xExport = self._addWidget('export_button', 'Button', nXC-50, nY2b+65, 45, 12, Label = self.dUI.get('export_button', "#err"), FontDescriptor = xFDSubTitle, TextColor = 0x005500)

        #### Lexicon section
        self._addWidget("lexicon_section", 'FixedLine', nXC, nY1, 200, nHeight, Label = self.dUI.get("lexicon_section", "#err"), FontDescriptor = xFDTitle)
        self.xGridModelLex = self._addGrid("list_grid_lexicon", nXC, nY1+10, 200, 270, [
            {"Title": self.dUI.get("lex_flex", "#err"), "ColumnWidth": 65},
            {"Title": self.dUI.get("lex_lemma", "#err"), "ColumnWidth": 50},
            {"Title": self.dUI.get("lex_tags", "#err"), "ColumnWidth": 65}
        ], SelectionModel = uno.Enum("com.sun.star.view.SelectionType", "MULTI"))

        self.loadLexicon()

        # container
        self.xContainer = self.xSvMgr.createInstanceWithContext('com.sun.star.awt.UnoControlDialog', self.ctx)
        self.xContainer.setModel(self.xDialog)
        self.xGridControlNew = self.xContainer.getControl('list_grid_gwords')
        self.xGridControlLex = self.xContainer.getControl('list_grid_lexicon')
        #helpers.xray(self.xContainer.getControl('lemma'))
        self._createKeyListeners(['lemma', 'alt_lemma', "v_pattern", 'flexion', 'tags'], "Update")
        self._createActionListeners(['nom_adj', 'nom', 'adj', 'M1', 'M2', 'MP', 'verb', 'adv', 'other', \
                                     'Sepi', 'Smas', 'Sfem', 'Ss', 'Sx', 'Sinv', 'nom_adj2', 'nom2', 'adj2', \
                                     'Sepi2', 'Smas2', 'Sfem2', 'Ss2', 'Sx2', 'Sinv2', 'Mepi', 'Mmas', 'Mfem', \
                                     'v_i', 'v_t', 'v_n', 'v_p', 'v_m', 'v_ae', 'v_aa', 'v_pp'], "Update")
        self.xContainer.getControl('add_button').addActionListener(self)
        self.xContainer.getControl('add_button').setActionCommand('Add')
        self.xContainer.getControl('delete_button').addActionListener(self)
        self.xContainer.getControl('delete_button').setActionCommand('Delete')
        self.xContainer.getControl('save_button').addActionListener(self)
        self.xContainer.getControl('save_button').setActionCommand('Save')
        self.xContainer.getControl('close_button').addActionListener(self)
        self.xContainer.getControl('close_button').setActionCommand('Close')
        self.xContainer.setVisible(False)
        xToolkit = self.xSvMgr.createInstanceWithContext('com.sun.star.awt.ExtToolkit', self.ctx)
        self.xContainer.createPeer(xToolkit, None)
        self.xContainer.execute()

    def _createKeyListeners (self, lNames, sAction):
        for sName in lNames:
            self.xContainer.getControl(sName).addKeyListener(self)

    def _createActionListeners (self, lNames, sAction):
        for sName in lNames:
            self.xContainer.getControl(sName).addActionListener(self)
            self.xContainer.getControl(sName).setActionCommand(sAction)

    # XActionListener
    def actionPerformed (self, xActionEvent):
        try:
            if xActionEvent.ActionCommand == "Update":
                self.updateGenWords()
            elif xActionEvent.ActionCommand == "Add":
                self.addToLexicon()
            elif xActionEvent.ActionCommand == "Delete":
                self.deleteSelectedEntries()
            elif xActionEvent.ActionCommand == "Save":
                self.saveLexicon()
            elif xActionEvent.ActionCommand == "Import":
                self.importDictionary()
            elif xActionEvent.ActionCommand == "Export":
                self.exportDictionary()
            elif xActionEvent.ActionCommand == "Close":
                self.xContainer.endExecute()
        except:
            traceback.print_exc()
    
    # XKeyListener
    def keyPressed (self, xKeyEvent):
        pass

    def keyReleased (self, xKeyEvent):
        self.updateGenWords()

    # XJobExecutor
    def trigger (self, args):
        try:
            xDialog = LexiconEditor(self.ctx)
            xDialog.run()
        except:
            traceback.print_exc()

    # Code
    #@_waitPointer (don’t: strange behavior)
    def loadLexicon (self):
        xChild = self.xSettingNode.getByName("o_fr")
        sJSON = xChild.getPropertyValue("personal_dic")
        if sJSON != "":
            oIBDAWG = ibdawg.IBDAWG(json.loads(sJSON))
            xGridDataModel = self.xGridModelLex.GridDataModel
            for i, sLine in enumerate(oIBDAWG.select()):
                sFlexion, sLemma, sTag = sLine.split("\t")
                xGridDataModel.addRow(i, (sFlexion, sLemma, sTag))
            self.xNumAdded.Label = "0"
            self.xNumDeleted.Label = "0"
            self.xNumLex.Label = str(i)
            self.xNumDic.Label = str(i)
            self.xDateDic.Label = oIBDAWG.sDate

    @_waitPointer
    def saveLexicon (self):
        xGridDataModel = self.xGridModelLex.GridDataModel
        lEntry = []
        for i in range(xGridDataModel.RowCount):
            lEntry.append(xGridDataModel.getRowData(i))
        oDAWG = dawg.DAWG(lEntry, "S", "fr", "Français", "Dictionnaire personnel")
        oJSON = oDAWG.getBinaryAsJSON()
        xChild = self.xSettingNode.getByName("o_fr")
        xChild.setPropertyValue("personal_dic", json.dumps(oJSON, ensure_ascii=False))
        self.xSettingNode.commitChanges()
        self.xNumAdded.Label = "0"
        self.xNumDeleted.Label = "0"
        self.xNumLex.Label = str(oJSON["nEntry"])
        self.xNumDic.Label = str(oJSON["nEntry"])
        self.xDateDic.Label = oJSON["sDate"]

    def _getRadioValue (self, *args):
        for x in args:
            if x.State:
                return x.HelpText
        return None

    @_waitPointer
    def updateGenWords (self):
        self.lGeneratedFlex = []
        sLemma = self.xLemma.Text.strip()
        if sLemma:
            if self._getRadioValue(self.xNA, self.xN, self.xA):
                # Substantif
                sPOS = self._getRadioValue(self.xNA, self.xN, self.xA)
                sGenderTag = self._getRadioValue(self.xSepi, self.xSmas, self.xSfem)
                if sGenderTag:
                    if self.xSs.State:
                        self.lGeneratedFlex.append((sLemma, sLemma, sPOS+sGenderTag+":s/*"))
                        self.lGeneratedFlex.append((sLemma+"s", sLemma, sPOS+sGenderTag+":p/*"))
                    elif self.xSx.State:
                        self.lGeneratedFlex.append((sLemma, sLemma, sPOS+sGenderTag+":s/*"))
                        self.lGeneratedFlex.append((sLemma+"x", sLemma, sPOS+sGenderTag+":p/*"))
                    elif self.xSinv.State:
                        self.lGeneratedFlex.append((sLemma, sLemma, sPOS+sGenderTag+":i/*"))
                    sLemma2 = self.xAltLemma.Text.strip()
                    if sLemma2 and self._getRadioValue(self.xNA2, self.xN2, self.xA2) and self._getRadioValue(self.xSepi2, self.xSmas2, self.xSfem2):
                        sTag2 = self._getRadioValue(self.xNA2, self.xN2, self.xA2) + self._getRadioValue(self.xSepi2, self.xSmas2, self.xSfem2)
                        if self.xSs2.State:
                            self.lGeneratedFlex.append((sLemma2, sLemma, sTag2+":s/*"))
                            self.lGeneratedFlex.append((sLemma2+"s", sLemma, sTag2+":p/*"))
                        elif self.xSx2.State:
                            self.lGeneratedFlex.append((sLemma2, sLemma, sTag2+":s/*"))
                            self.lGeneratedFlex.append((sLemma2+"x", sLemma, sTag2+":p/*"))
                        elif self.xSinv2.State:
                            self.lGeneratedFlex.append((sLemma2, sLemma, sTag2+":i/*"))
            elif self._getRadioValue(self.xM1, self.xM2, self.xMP):
                # Nom propre
                sPOS = self._getRadioValue(self.xM1, self.xM2, self.xMP)
                sLemma = sLemma[0:1].upper() + sLemma[1:];
                sGenderTag = self._getRadioValue(self.xMepi, self.xMmas, self.xMfem)
                if sGenderTag:
                    self.lGeneratedFlex.append((sLemma, sLemma, sPOS+sGenderTag+":i/*"))
            elif self.xV.State:
                # Verbe
                if sLemma.endswith(("er", "ir", "re")):
                    sLemma = sLemma.lower()
                    c_i = "i"  if self.xV_i.State  else "_"
                    c_t = "t"  if self.xV_t.State  else "_"
                    c_n = "n"  if self.xV_n.State  else "_"
                    c_p = "p"  if self.xV_p.State  else "_"
                    c_m = "m"  if self.xV_m.State  else "_"
                    c_ae = "e"  if self.xV_ae.State  else "_"
                    c_aa = "a"  if self.xV_aa.State  else "_"
                    sVerbTag = c_i + c_t + c_n + c_p + c_m + c_ae + c_aa
                    if not sVerbTag.endswith("__") and not sVerbTag.startswith("____"):
                        sVerbPattern = self.xVpattern.Text.strip()
                        if not sVerbPattern:
                            # Utilisation du générateur de conjugaison
                            for sFlexion, sFlexTags in conjgen.conjugate(sLemma, sVerbTag, bool(self.xV_pp.State)):
                                self.lGeneratedFlex.append((sFlexion, sLemma, sFlexTags))
                        else:
                            # copie du motif d’un autre verbe : utilisation du conjugueur
                            if conj.isVerb(sVerbPattern):
                                oVerb = conj.Verb(sLemma, sVerbPattern)
                                for sTag1, dFlex in oVerb.dConj.items():
                                    if sTag1 != ":Q":
                                        for sTag2, sConj in dFlex.items():
                                            if sTag2.startswith(":") and sConj:
                                                self.lGeneratedFlex.append((sConj, sLemma, ":V" + oVerb.cGroup + "_" + sVerbTag + sTag1 + sTag2))
                                    else:
                                        # participes passés
                                        if dFlex[":Q3"]:
                                            if dFlex[":Q2"]:
                                                self.lGeneratedFlex.append((dFlex[":Q1"], sLemma, ":V" + oVerb.cGroup + "_" + sVerbTag + ":Q:A:m:s/*"))
                                                self.lGeneratedFlex.append((dFlex[":Q2"], sLemma, ":V" + oVerb.cGroup + "_" + sVerbTag + ":Q:A:m:p/*"))
                                            else:
                                                self.lGeneratedFlex.append((dFlex[":Q1"], sLemma, ":V" + oVerb.cGroup + "_" + sVerbTag + ":Q:A:m:i/*"))
                                            self.lGeneratedFlex.append((dFlex[":Q3"], sLemma, ":V" + oVerb.cGroup + "_" + sVerbTag + ":Q:A:f:s/*"))
                                            self.lGeneratedFlex.append((dFlex[":Q4"], sLemma, ":V" + oVerb.cGroup + "_" + sVerbTag + ":Q:A:f:p/*"))
                                        else:
                                            self.lGeneratedFlex.append((dFlex[":Q1"], sLemma, ":V" + oVerb.cGroup + "_" + sVerbTag + ":Q:e:i/*"))
            elif self.xW.State:
                # Adverbe
                sLemma = sLemma.lower();
                self.lGeneratedFlex.append((sLemma, sLemma, ":W/*"))
            elif self.xX.State:
                # Autre
                sFlexion = self.xFlexion.Text.strip()
                sTags = self.xTags.Text.strip()
                if sFlexion and sTags.startswith(":"):
                    self.lGeneratedFlex.append((sFlexion, sLemma, sTags))
        self._showGenWords()

    def _showGenWords (self):
        xGridDataModel = self.xGridModelNew.GridDataModel
        xGridDataModel.removeAllRows()
        if not self.lGeneratedFlex:
            self.xAdd.Enabled = False
            return
        for i, (sFlexion, sLemma, sTag) in enumerate(self.lGeneratedFlex):
            xGridDataModel.addRow(i, (sFlexion, sLemma, sTag))
        self.xAdd.Enabled = True

    def _resetWidgets (self):
        self.xLemma.Text = ""
        self.xNA.State = False
        self.xN.State = False
        self.xA.State = False
        self.xM1.State = False
        self.xM2.State = False
        self.xMP.State = False
        self.xV.State = False
        self.xW.State = False
        self.xX.State = False
        self.xSepi.State = False
        self.xSmas.State = False
        self.xSfem.State = False
        self.xSs.State = False
        self.xSx.State = False
        self.xSinv.State = False
        self.xAltLemma.Text = ""
        self.xNA2.State = False
        self.xN2.State = False
        self.xA2.State = False
        self.xSepi2.State = False
        self.xSmas2.State = False
        self.xSfem2.State = False
        self.xSs2.State = False
        self.xSx2.State = False
        self.xSinv2.State = False
        self.xMepi.State = False
        self.xMmas.State = False
        self.xMfem.State = False
        self.xV_i.State = False
        self.xV_t.State = False
        self.xV_n.State = False
        self.xV_p.State = False
        self.xV_m.State = False
        self.xV_ae.State = False
        self.xV_aa.State = False
        self.xV_pp.State = False
        self.xVpattern.Text = ""
        self.xFlexion.Text = ""
        self.xTags.Text = ""
        self.xGridModelNew.GridDataModel.removeAllRows()

    @_waitPointer
    def addToLexicon (self):
        self.xAdd.Enabled = False
        xGridDataModelNew = self.xGridModelNew.GridDataModel
        xGridDataModelLex = self.xGridModelLex.GridDataModel
        nStart = xGridDataModelLex.RowCount
        for i in range(xGridDataModelNew.RowCount):
            sFlexion, sLemma, sTag = xGridDataModelNew.getRowData(i)
            xGridDataModelLex.addRow(nStart + i, (sFlexion, sLemma, sTag))
        self.xSave.Enabled = True
        self.xNumAdded.Label = str(int(self.xNumAdded.Label) + xGridDataModelNew.RowCount)
        self.xNumLex.Label = str(int(self.xNumLex.Label) + xGridDataModelNew.RowCount)
        self._resetWidgets()

    @_waitPointer
    def deleteSelectedEntries (self):
        # generated entries
        xGridDataModel = self.xGridModelNew.GridDataModel
        #helpers.xray(xGridDataModel)
        for i in self.xGridControlNew.getSelectedRows():
            if i < xGridDataModel.RowCount:
                xGridDataModel.removeRow(i)
        self.xGridControlNew.deselectAllRows()
        # lexicon
        xGridDataModel = self.xGridModelLex.GridDataModel
        nSelectedEntries = len(self.xGridControlLex.getSelectedRows())
        for i in self.xGridControlLex.getSelectedRows():
            if i < xGridDataModel.RowCount:
                xGridDataModel.removeRow(i)
        self.xGridControlLex.deselectAllRows()
        self.xNumDeleted.Label = str(int(self.xNumDeleted.Label) + nSelectedEntries)
        self.xNumLex.Label = str(xGridDataModel.RowCount)

    @_waitPointer
    def importDictionary (self):
        pass

    @_waitPointer
    def exportDictionary (self):
        xFilePicker = self.xSvMgr.createInstanceWithContext('com.sun.star.ui.dialogs.SystemFilePicker', self.ctx)
        xFilePicker.appendFilter("Supported files", "*.json; *.bdic")
        #xFilePicker.setDisplayDirectory("")
        #xFilePicker.setMultiSelectionMode(True)
        nResult = xFilePicker.execute()
        if nResult == 1:
            pass
            #lFile = xFilePicker.getSelectedFiles()
            #lFile = xFilePicker.getFiles()


#g_ImplementationHelper = unohelper.ImplementationHelper()
#g_ImplementationHelper.addImplementation(LexiconEditor, 'net.grammalecte.LexiconEditor', ('com.sun.star.task.Job',))

Added gc_lang/fr/oxt/DictOptions/do_strings.py version [894505c8e0].












































1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
def getUI (sLang):
    if sLang in dStrings:
        return dStrings[sLang]
    return dStrings["fr"]

dStrings = {
    "fr": {
        "title": "Grammalecte · Options des dictionnaires",
        
        "spelling_section": "Correcteur orthographique",
        "activate_main": "Activer le correcteur orthographique de Grammalecte",
        "activate_main_descr": "Supplante le correcteur orthographique inclus dans LibreOffice (Hunspell).",

        "suggestion_section": "Moteur de suggestion orthographique",
        "activate_spell_sugg": "Activer le moteur de suggestion de Grammalecte",
        "activate_spell_sugg_descr": "Désactivée, cette option remplace la suggestion orthographique de Grammalecte par celle fournie par LibreOffice (Hunspell). Les mots inclus dans le dictionnaire personnalisé ne seront plus inclus aux suggestions.",

        "personal_section": "Dictionnaire personnel",
        "activate_personal": "Utiliser",
        "activate_personal_descr": "Le dictionnaire personnel est une commodité pour ajouter le vocabulaire qui vous est utile. Il ne supplante pas le dictionnaire commun ; il ne fait qu’ajouter de nouveaux mots.",

        "apply_button": "Appliquer",
        "cancel_button": "Annuler",
    },
    "en": {
        "title": "Grammalecte · Options for dictionaries",
        
        "spelling_section": "Spell checker",
        "activate_main": "Activate the spell checker from Grammalecte",
        "activate_main_descr": "Overrides the spell checker included in LibreOffice (Hunspell)",

        "suggestion_section": "Spell suggestion engine",
        "activate_spell_sugg": "Activate the suggestion engine of Grammalecte",
        "activate_spell_sugg_descr": "Disactivated, this option replace the spell suggestion engine of Grammalecte by the one of LibreOffice (Hunspell). Words included in the personal dictionary won’t be included among suggestions.",

        "personal_section": "Personal dictionary",
        "activate_personal": "Use",
        "activate_personal_descr": "The personal dictionary is a commodity to add the vocabulary you want. It doesn’t override the common dictionary ; it only adds new words.",

        "apply_button": "Apply",
        "cancel_button": "Cancel",
    },
}

Added gc_lang/fr/oxt/DictOptions/lxe_strings.py version [6f908f209a].





















































































1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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
74
75
76
77
78
79
80
81
82
83
84
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
def getUI (sLang):
    if sLang in dStrings:
        return dStrings[sLang]
    return dStrings["fr"]

dStrings = {
    "fr": {
        "title": "Grammalecte · Éditeur lexical",

        # Ajout
        "add_section": "Nouveau mot (lemme)",
        "lemma": "Lemme",

        # catégories
        "common_name": "Nom commun",
        "nom_adj": "Nom et adjectif",
        "nom": "Nom",
        "adj": "Adjectif",
        "alt_lemma": "[optionnel] Autre forme (masculine, féminine, variante, etc.)",

        "proper_name": "Nom propre",
        "M1": "Prénom",
        "M2": "Patronyme",
        "MP": "Autre",

        "gender": "Genre",
        "epi": "épicène",
        "mas": "masculin",
        "fem": "féminin",
        "plural": "Pluriel",
        "-s": "pluriel en ·s",
        "-x": "pluriel en ·x",
        "inv": "invariable",

        "verb": "Verbe",
        "v_i": "intransitif",
        "v_t": "transitif",
        "v_n": "transitif indirect",
        "v_p": "pronominal",
        "v_m": "impersonnel",
        "aux": "Auxiliaire au passé composé",
        "v_ae": "être",
        "v_aa": "avoir",
        "v_pp": "Participes passés variables",
        "v_pattern": "Verbe modèle [optionnel]",

        "adverb": "Adverbe",

        "other": "Autre",
        "flexion": "Flexion",
        "tags": "Étiquettes",

        # Lexicon
        "new_section": "Mots générés",
        "lexicon_section": "Votre lexique",
        "lex_#": "#",
        "lex_flex": "Flexions",
        "lex_lemma": "Lemmes",
        "lex_tags": "Étiquettes",

        "add_button": "Ajouter au lexique",
        "delete_button": "Supprimer la sélection",

        # Informations
        "lexicon_info_section": "Lexique",
        "added_entries_label": "Entrées ajoutées",
        "deleted_entries_label": "Entrées effacées",
        "num_of_entries_label": "Nombre d’entrées",
        "save_button": "Enregistrer",

        "dictionary_section": "Dictionnaire enregistré",
        "save_date_label": "Date d’enregistrement",
        "export_button": "Exporter",

        #
        "close_button": "Fermer",
    },
    # Traduction délibérément limitée
    "en": {
        "title": "Grammalecte · Lexical editor",
        
        "close_button": "Close",
    },
}

Modified gc_lang/fr/oxt/TextFormatter/TextFormatter.py from [430dd5922f] to [31cae4e817].

381
382
383
384
385
386
387
388
389
390
391
392
393
394

395
396
397
398
399
400
401
381
382
383
384
385
386
387






388
389
390
391
392
393
394
395
396







-
-
-
-
-
-

+







            # create options dictionary
            dOpt = {}
            for key, lWidget in self.dCheckboxWidgets.items():
                w = getattr(self, key)
                dOpt[w.Name] = w.State
                for w in lWidget:
                    dOpt[w.Name] = w.State
            # get extension path
            xDefaultContext = self.ctx.ServiceManager.DefaultContext
            xPackageInfoProvider = xDefaultContext.getValueByName("/singletons/com.sun.star.deployment.PackageInformationProvider")
            sExtPath = xPackageInfoProvider.getPackageLocation("French.linguistic.resources.from.Dicollecte.by.OlivierR")
            sExtPath = sExtPath[8:] + "/pythonpath/tf_options.py"  # remove "file:///"
            sExtPath = os.path.abspath(sExtPath)
            # write file
            sExtPath = helpers.getAbsolutePathOf("/pythonpath/tf_options.py")
            if os.path.isfile(sExtPath):
                hOpt = open(sExtPath, "w")
                hOpt.write("dDefaultOpt = " + str(tf_options.dDefaultOpt) + "\n")
                hOpt.write("dOpt = " + str(dOpt))
                hOpt.close()
        except:
            traceback.print_exc()

Modified gc_lang/fr/oxt/addons.xcu from [2546b2bd54] to [71d0cd13a5].

73
74
75
76
77
78
79
80

81
82
83
84
85
86
87
73
74
75
76
77
78
79

80
81
82
83
84
85
86
87







-
+







                <node oor:name="m3" oor:op="replace">
                    <prop oor:name="URL" oor:type="xs:string">
                        <value>service:net.grammalecte.AppLauncher?EN</value>
                    </prop>
                    <prop oor:name="Title" oor:type="xs:string">
                        <value/>
                        <value xml:lang="fr">~Recenseur de mots…</value>
                        <value xml:lang="en-US">~Enumerator of words…</value>
                        <value xml:lang="en-US">Enumerato~r of words…</value>
                    </prop>
                    <prop oor:name="Target" oor:type="xs:string">
                        <value>_self</value>
                    </prop>
                    <prop oor:name="Context" oor:type="xs:string">
                        <value>com.sun.star.text.TextDocument,com.sun.star.text.GlobalDocument,com.sun.star.text.WebDocument,com.sun.star.presentation.PresentationDocument</value>
                    </prop>
132
133
134
135
136
137
138






































139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157

158
159
160
161
162
163
164
165

166
167
168
169
170
171
172
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194

195
196
197
198
199
200
201
202

203
204
205
206
207
208
209
210







+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+


















-
+







-
+







                        <value>com.sun.star.text.TextDocument,com.sun.star.text.GlobalDocument,com.sun.star.text.WebDocument</value>
                    </prop>
                    <prop oor:name="ImageIdentifier" oor:type="xs:string">
                        <value>org.dicollecte.images:Grammalecte</value>
                    </prop>
                </node>
                <node oor:name="m7" oor:op="replace">
                    <prop oor:name="URL" oor:type="xs:string">
                        <value>service:net.grammalecte.AppLauncher?DI</value>
                    </prop>
                    <prop oor:name="Title" oor:type="xs:string">
                        <value/>
                        <value xml:lang="fr">~Options des dictionnaires…</value>
                        <value xml:lang="en-US">Dictionaries ~options…</value>
                    </prop>
                    <prop oor:name="Target" oor:type="xs:string">
                        <value>_self</value>
                    </prop>
                    <prop oor:name="Context" oor:type="xs:string">
                        <value>com.sun.star.text.TextDocument,com.sun.star.text.GlobalDocument,com.sun.star.text.WebDocument,com.sun.star.presentation.PresentationDocument</value>
                    </prop>
                    <prop oor:name="ImageIdentifier" oor:type="xs:string">
                        <value>org.dicollecte.images:Frenchflag</value>
                    </prop>
                </node>
                <node oor:name="m8" oor:op="replace">
                    <prop oor:name="URL" oor:type="xs:string">
                        <value>service:net.grammalecte.AppLauncher?LE</value>
                    </prop>
                    <prop oor:name="Title" oor:type="xs:string">
                        <value/>
                        <value xml:lang="fr">Éditeur ~lexical…</value>
                        <value xml:lang="en-US">~Lexicon editor…</value>
                    </prop>
                    <prop oor:name="Target" oor:type="xs:string">
                        <value>_self</value>
                    </prop>
                    <prop oor:name="Context" oor:type="xs:string">
                        <value>com.sun.star.text.TextDocument,com.sun.star.text.GlobalDocument,com.sun.star.text.WebDocument,com.sun.star.presentation.PresentationDocument</value>
                    </prop>
                    <prop oor:name="ImageIdentifier" oor:type="xs:string">
                        <value>org.dicollecte.images:Frenchflag</value>
                    </prop>
                </node>
                <node oor:name="m9" oor:op="replace">
                    <prop oor:name="URL" oor:type="xs:string">
                        <value>service:net.grammalecte.AppLauncher?DS</value>
                    </prop>
                    <prop oor:name="Title" oor:type="xs:string">
                        <value/>
                        <value xml:lang="fr">~Options orthographiques…</value>
                        <value xml:lang="en-US">Spelling ~options…</value>
                    </prop>
                    <prop oor:name="Target" oor:type="xs:string">
                        <value>_self</value>
                    </prop>
                    <prop oor:name="Context" oor:type="xs:string">
                        <value>com.sun.star.text.TextDocument,com.sun.star.text.GlobalDocument,com.sun.star.text.WebDocument,com.sun.star.presentation.PresentationDocument</value>
                    </prop>
                    <prop oor:name="ImageIdentifier" oor:type="xs:string">
                        <value>org.dicollecte.images:Frenchflag</value>
                    </prop>
                </node>
                <node oor:name="m8" oor:op="replace">
                <node oor:name="m10" oor:op="replace">
                    <prop oor:name="URL" oor:type="xs:string">
                        <value>private:separator</value>
                    </prop>
                    <prop oor:name="Context" oor:type="xs:string">
                        <value>com.sun.star.text.TextDocument,com.sun.star.text.GlobalDocument,com.sun.star.text.WebDocument,com.sun.star.presentation.PresentationDocument</value>
                    </prop>
                </node>
                <node oor:name="m9" oor:op="replace">
                <node oor:name="m11" oor:op="replace">
                    <prop oor:name="URL" oor:type="xs:string">
                        <value>service:net.grammalecte.AppLauncher?About</value>
                    </prop>
                    <prop oor:name="Title" oor:type="xs:string">
                        <value/>
                        <value xml:lang="fr">À ~propos de Grammalecte…</value>
                        <value xml:lang="en-US">~About Grammalecte…</value>

Deleted gc_lang/fr/oxt/helpers.py version [3ebcc78813].

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62






























































-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
# -*- coding: utf8 -*-

import uno
import traceback

from com.sun.star.beans import PropertyValue


# XRay - API explorer
from com.sun.star.uno import RuntimeException as _rtex
def xray (myObject):
    try:
        sm = uno.getComponentContext().ServiceManager
        mspf = sm.createInstanceWithContext("com.sun.star.script.provider.MasterScriptProviderFactory", uno.getComponentContext())
        scriptPro = mspf.createScriptProvider("")
        xScript = scriptPro.getScript("vnd.sun.star.script:XrayTool._Main.Xray?language=Basic&location=application")
        xScript.invoke((myObject,), (), ())
        return
    except:
        raise _rtex("\nBasic library Xray is not installed", uno.getComponentContext())


# MRI - API Explorer
def mri (ctx, xTarget):
    try:
        xMri = ctx.ServiceManager.createInstanceWithContext("mytools.Mri", ctx)
        xMri.inspect(xTarget)
    except:
        raise _rtex("\Python extension MRI is not installed", uno.getComponentContext())


def getConfigSetting (sNodeConfig, bUpdate):
    "get a configuration node"
    # example: xNode = getConfigSetting("/org.openoffice.Office.Common/Path/Current", False)
    xSvMgr = uno.getComponentContext().ServiceManager
    xConfigProvider = xSvMgr.createInstanceWithContext("com.sun.star.configuration.ConfigurationProvider", uno.getComponentContext())
    xPropertyValue = uno.createUnoStruct("com.sun.star.beans.PropertyValue")
    xPropertyValue.Name = "nodepath"
    xPropertyValue.Value = sNodeConfig
    if bUpdate:
        sService = "com.sun.star.configuration.ConfigurationUpdateAccess"
    else:
        sService = "com.sun.star.configuration.ConfigurationAccess"
    return xConfigProvider.createInstanceWithArguments(sService, (xPropertyValue,)) # return xNode


def printServices (o):
    for s in o.getAvailableServiceNames():
        print(' > '+s)


def getWindowSize ():
    "return main window size"
    xCurCtx = uno.getComponentContext()
    xDesktop = xCurCtx.getServiceManager().createInstanceWithContext('com.sun.star.frame.Desktop', xCurCtx)
    xContainerWindow = xDesktop.getCurrentComponent().CurrentController.Frame.ContainerWindow
    xWindowSize = xContainerWindow.convertSizeToLogic(xContainerWindow.Size, uno.getConstantByName("com.sun.star.util.MeasureUnit.POINT"))
    #print(xContainerWindow.Size.Width, ">", xWindowSize.Width)
    #print(xContainerWindow.Size.Height, ">", xWindowSize.Height)
    xWindowSize.Width = xWindowSize.Width * 0.666
    xWindowSize.Height = xWindowSize.Height * 0.666
    return xWindowSize

Added gc_lang/fr/tb/content/lex_editor.css version [3d4857dad8].






























































1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
/* CSS */

.section {
    font-size: 16px;
    font-weight: bold;
    color: hsl(210, 50%, 50%);
}

.subsection {
    font-size: 14px;
    font-weight: bold;
    color: hsl(210, 50%, 50%);
}

.option {
    width: 120px;
    font-size: 12px;
}

.m_left {
    margin-left: 20px;
}

.m_left2 {
    margin-left: 40px;
}

.v_usage {
    width: 150px;
}
.v_textbox {
    width: 200px;
}

.other_label {
    width: 80px;
}
.other_textbox {
    width: 250px;
}

#generated_words {
    width: 400px;
    height: 620px;
}

/*
    Lexicon tab
*/

#lexicon {
    width: 600px;
    height: 650px;
}

.info_label {
    width: 120px;
}
.data {
    width: 100px;
}

Added gc_lang/fr/tb/content/lex_editor.js version [0a699fc4f2].





1
2
3
4
+
+
+
+
// JavaScript

"use strict";

Added gc_lang/fr/tb/content/lex_editor.xul version [ea57ce501b].

































































































































































































































1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<?xml-stylesheet href="chrome://grammarchecker/content/lex_editor.css" type="text/css"?>

<!DOCTYPE dialog SYSTEM "chrome://grammarchecker/locale/lex_editor.dtd">

<dialog
  id="grammalecte-lexicon-editor-window"
  title="&window.title;"
  orient="vertical"
  buttons="accept, cancel, extra1"
  ondialogaccept="oOptControl.save();"
  ondialogcancel="return;"
  buttonlabelextra1="&button.export.label;"
  ondialogextra1="oOptControl.reset();"
  defaultButton="accept"
  width="500"
  onload="document.getElementById('grammalecte-lexicon-editor-window').centerWindowOnScreen();"
  xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">

  <!-- Other elements go here -->
  
  <tabbox id="tabs" selectedIndex="0">
    <tabs>
      <tab label="&tab.editor.label;"/>
      <tab label="&tab.lexicon.label;"/>
    </tabs>

    <tabpanels>

      <!-- NEW WORD -->
      <tabpanel orient="vertical">
        
        <hbox>
          
          <vbox>
            <dialogheader title="Nouveau mot (lemme)" description="Générateur" />
            <textbox id="lemma" value="" />

            <checkbox class="subsection" label="Nom et adjectif" />
            <hbox class="m_left">
              <radiogroup orient="vertical">
                <radio id="o_pos_nom_adj" class="option" label="Nom et adjectif" />
                <radio id="o_pos_nom" class="option" label="Nom" />
                <radio id="o_pos_adj" class="option" label="Adjectif" />
              </radiogroup>
              <radiogroup orient="vertical">
                <radio id="o_pos_epi" class="option" label="épicène" />
                <radio id="o_pos_mas" class="option" label="masculin" />
                <radio id="o_pos_fem" class="option" label="féminin" />
              </radiogroup>
              <radiogroup orient="vertical">
                <radio id="o_pos_s" class="option" label="pluriel en ·s" />
                <radio id="o_pos_x" class="option" label="pluriel en ·x" />
                <radio id="o_pos_inv" class="option" label="invariable" />
              </radiogroup>

            </hbox>
            <vbox class="m_left2">
              <label class="subsection" value="[optionnel] Autre forme (masculine, féminine, variante…)" />
              <textbox id="lemma2" value="" />
              <hbox>
                <radiogroup orient="vertical">
                  <radio id="o_pos_nom_adj2" class="option" label="Nom et adjectif" />
                  <radio id="o_pos_nom2" class="option" label="Nom" />
                  <radio id="o_pos_adj2" class="option" label="Adjectif" />
                </radiogroup>
                <radiogroup orient="vertical">
                  <radio id="o_pos_epi2" class="option" label="épicène" />
                  <radio id="o_pos_mas2" class="option" label="masculin" />
                  <radio id="o_pos_fem2" class="option" label="féminin" />
                </radiogroup>
                <radiogroup orient="vertical">
                  <radio id="o_pos_s2" class="option" label="pluriel en ·s" />
                  <radio id="o_pos_x2" class="option" label="pluriel en ·x" />
                  <radio id="o_pos_inv2" class="option" label="invariable" />
                </radiogroup>
              </hbox>
            </vbox>

            <checkbox class="subsection" label="Nom propre" />
            <hbox class="m_left">
              <radiogroup orient="vertical">
                <radio id="o_pos_M1" class="option" label="Prénom" />
                <radio id="o_pos_M2" class="option" label="Patronyme" />
                <radio id="o_pos_MP" class="option" label="Autre" />
              </radiogroup>
              <radiogroup orient="vertical">
                <radio id="o_pos_epi" class="option" label="épicène" />
                <radio id="o_pos_mas" class="option" label="masculin" />
                <radio id="o_pos_fem" class="option" label="féminin" />
              </radiogroup>
            </hbox>              

            <checkbox class="subsection" label="Verbe" />
            <hbox class="m_left">
              <vbox>
                <checkbox id="o_v_i" class="v_usage" label="intransitif" />
                <checkbox id="o_v_t" class="v_usage" label="transitif" />
                <checkbox id="o_v_n" class="v_usage" label="transitif indirect" />
                <checkbox id="o_v_p" class="v_usage" label="pronominal" />
                <checkbox id="o_v_m" class="v_usage" label="impersonnel" />
              </vbox>
              <vbox>
                <label value="Auxilaire avec le passé composé" />
                <checkbox id="o_v_ae" class="v_usage" label="être" />
                <checkbox id="o_v_aa" class="v_usage" label="avoir" />
                <label value="" />
                <checkbox id="o_ppas" class="v_usage" label="Participes passés variables" />
              </vbox>
            </hbox>
            <hbox class="m_left">
              <label class="subsection" value="Verbe modèle [optionnel]" />
              <textbox id="v_pattern" class="v_textbox" value="" />
            </hbox>

            <checkbox class="subsection" label="Adverbe" />

            <checkbox class="subsection" label="Autre" />
            <vbox class="m_left">
              <hbox>
                <label class="subsection other_label" value="Flexion" />
                <textbox id="flexion" class="other_textbox" value="" />
              </hbox>
              <hbox>
                <label class="subsection other_label" value="Étiquettes" />
                <textbox id="tags" class="other_textbox" value="" />
              </hbox>
            </vbox>
          </vbox>

          <vbox>
            <dialogheader title="Mots générés" description="" />
            <listbox id="generated_words">
              <listhead>
                <listheader label="Flexions"/>
                <listheader label="Étiquettes"/>
              </listhead>

              <listcols>
                <listcol flex="1"/>
                <listcol flex="1"/>
              </listcols>

              <!--<listitem>
                <listcell label="George"/>
                <listcell label="House"/>
              </listitem>-->
              
            </listbox>
            <hbox>
              <button id="add_to_lexicon" label="Ajouter au lexique" />
              <button id="delete_selection" label="Effacer la sélection" />
            </hbox>
          </vbox>
        </hbox>
      </tabpanel>

      <!-- LEXICON -->
      <tabpanel orient="vertical">
        <dialogheader title="&dialogheader.lexicon.label;" description="" />
        <hbox>
          <vbox>
            <label class="section" value="Lexique" />
            <hbox>
              <label class="info_label" value="Entrées ajoutées" />
              <label class="data" value="0" />
            </hbox>
            <hbox>
              <label class="info_label" value="Entrées supprimées" />
              <label class="data" value="0" />
            </hbox>
            <hbox>
              <label class="info_label" value="Nombre d’entrées" />
              <label class="data" value="0" />
            </hbox>
            <button id="save" label="Enregistrer" />

            <label class="" value="" />

            <label class="section" value="Dictionnaire enregistré" />
            <hbox>
              <label class="info_label" value="Date d’enregistrement" />
              <label class="data" value="·" />
            </hbox>
            <hbox>
              <label class="info_label" value="Nombre d’entrées" />
              <label class="data" value="0" />
            </hbox>
            <button id="save" label="Exporter" />
          </vbox>

          <vbox>
            <listbox id="lexicon">
              <listhead>
                <listheader label="Flexions"/>
                <listheader label="Lemmes"/>
                <listheader label="Étiquettes"/>
              </listhead>

              <listcols>
                <listcol flex="4"/>
                <listcol flex="3"/>
                <listcol flex="4"/>
              </listcols>

              <!--<listitem>
                <listcell label="George"/>
                <listcell label="House Painter"/>
                <listcell label="House"/>
              </listitem>-->

            </listbox>
          </vbox>
        </hbox>
      </tabpanel>

    </tabpanels>

  </tabbox>

  <script type="application/x-javascript" src="lex_editor.js" />

</dialog>

Modified gc_lang/fr/tb/content/overlay.js from [0f3db968a0] to [94ffc58fa0].

498
499
500
501
502
503
504



505
506
507
508
509
510
511
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514







+
+
+







    },
    onOpenTextFormatter: function (e) {
        oTextFormatter.openPanel();
    },
    onOpenConjugueur: function (e) {
        this.openDialog("chrome://grammarchecker/content/conjugueur.xul", "", "chrome, resizable=no");
    },
    onOpenLexiconEditor: function (e) {
        this.openDialog("chrome://grammarchecker/content/lex_editor.xul", "", "chrome, resizable=no");
    },
    onAbout: function (e) {
        this.openDialog("chrome://grammarchecker/content/about.xul", "", "chrome, dialog, modal, resizable=no");
    }
};


var oDictIgniter = {

Modified gc_lang/fr/tb/content/overlay.xul from [f4f8642995] to [991053c2ea].

42
43
44
45
46
47
48

49
50
51
52
53
54
55
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56







+







      <menupopup id="gl-toolbar-popup">
        <menuitem id="gl-item-conj" class="menuitem-iconic" label="&grammalectemenu.textformatter;" oncommand="oTextFormatter.onOpenPanel(event);"/>
        <menuitem id="gl-item-conj" class="menuitem-iconic" label="&grammalectemenu.conjugueur;" oncommand="oGrammarChecker.onOpenConjugueur(event);"/>
        <menuseparator/>
        <menuitem id="gl-item-analyze" class="menuitem-iconic" label="&grammalectemenu.start;" oncommand="oGrammarChecker.onParseText(event);"/>
        <menuitem id="gl-item-options" class="menuitem-iconic" label="&grammalectemenu.gc_options;" onclick="oGrammarChecker.onOpenGCOptions(event);"/>
        <menuitem id="gl-item-options" class="menuitem-iconic" label="&grammalectemenu.spell_options;" onclick="oGrammarChecker.onOpenSpellOptions(event);"/>
        <menuitem id="gl-item-options" class="menuitem-iconic" label="&grammalectemenu.lexicon_editor;" onclick="oGrammarChecker.onOpenLexiconEditor(event);"/>
        <menuitem id="gl-item-options" class="menuitem-iconic" label="&grammalectemenu.other_options;" onclick="oGrammarChecker.onOpenOptions(event);"/>
        <menuseparator/>
        <menuitem id="gl-item-about" class="menuitem-iconic" label="&grammalectemenu.about;" oncommand="oGrammarChecker.onAbout(event);"/>
      </menupopup>
    </toolbarbutton>
  </toolbarpalette>

Added gc_lang/fr/tb/locale/en/lex_editor.dtd version [424843c364].










1
2
3
4
5
6
7
8
9
+
+
+
+
+
+
+
+
+
<!ENTITY window.title "Grammalecte · Éditeur lexical">

<!ENTITY dialogheader.newword.label "Nouveau mot">
<!ENTITY dialogheader.lexicon.label "Votre lexique">

<!ENTITY button.export.label "DDDD">

<!ENTITY tab.editor.label "Ajout">
<!ENTITY tab.lexicon.label "Lexique">

Modified gc_lang/fr/tb/locale/en/overlay.dtd from [4ffe30eb77] to [c3723dc977].

1
2
3
4
5
6
7
8
9

10
11
12
13
14
15
16
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17









+







<!ENTITY grammarchecker.button.label "Grammar">
<!ENTITY grammarchecker.accesskey "G">
<!ENTITY grammarchecker.tooltip "Grammar checking">

<!ENTITY grammalectemenu.textformatter "Text formatter…">
<!ENTITY grammalectemenu.conjugueur "Conjugation tool…">
<!ENTITY grammalectemenu.start "Proofread the text…">
<!ENTITY grammalectemenu.spell_options "Spelling options…">
<!ENTITY grammalectemenu.gc_options "Grammar options…">
<!ENTITY grammalectemenu.lexicon_editor "Lexical editor…">
<!ENTITY grammalectemenu.other_options "Other options…">
<!ENTITY grammalectemenu.about "About Grammalecte…">

<!ENTITY detected_mistakes "Detected mistakes">

<!ENTITY textformatter "Text Formatter">
<!ENTITY automated_replacements "Automated replacements">

Added gc_lang/fr/tb/locale/fr/lex_editor.dtd version [424843c364].










1
2
3
4
5
6
7
8
9
+
+
+
+
+
+
+
+
+
<!ENTITY window.title "Grammalecte · Éditeur lexical">

<!ENTITY dialogheader.newword.label "Nouveau mot">
<!ENTITY dialogheader.lexicon.label "Votre lexique">

<!ENTITY button.export.label "DDDD">

<!ENTITY tab.editor.label "Ajout">
<!ENTITY tab.lexicon.label "Lexique">

Modified gc_lang/fr/tb/locale/fr/overlay.dtd from [7124c1cfff] to [816cf299c9].

1
2
3
4
5
6
7
8
9

10
11
12
13
14
15
16
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17









+







<!ENTITY grammarchecker.button.label "Grammaire">
<!ENTITY grammarchecker.accesskey "G">
<!ENTITY grammarchecker.tooltip "Correction grammaticale">

<!ENTITY grammalectemenu.textformatter "Formateur de texte…">
<!ENTITY grammalectemenu.conjugueur "Conjugueur…">
<!ENTITY grammalectemenu.start "Analyser le texte…">
<!ENTITY grammalectemenu.spell_options "Options orthographiques…">
<!ENTITY grammalectemenu.gc_options "Options grammaticales…">
<!ENTITY grammalectemenu.lexicon_editor "Éditeur lexical…">
<!ENTITY grammalectemenu.other_options "Autres options…">
<!ENTITY grammalectemenu.about "À propos de Grammalecte…">

<!ENTITY detected_mistakes "Erreurs détectées">

<!ENTITY textformatter "Formateur de texte">
<!ENTITY automated_replacements "Remplacements automatisés">

Deleted gc_lang/fr/webext/panel/lex_conj_data.js version [465cbcd5b7].

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
//  JavaScript

"use strict";

// beta stage, unfinished, may be useless or the root for a new way to generate flexions…

/*
    Règles de conjugaison
*/

const oConj = {
    "V1_ppas": {
        "var": [
            [2,     "é",           ":Q:A:1ŝ:m:s/*",     false],
            [2,     "és",          ":Q:A:m:p/*",        false],
            [2,     "ée",          ":Q:A:f:s/*",        false],
            [2,     "ées",         ":Q:A:f:p/*",        false],
        ],
        "invar": [
            [2,     "é",           ":Q:e:i/*",          false],
        ]
    },

    "V2_ppas": {
        "var": [
            [2,     "i",           ":Q:A:m:s/*",        false],
            [2,     "is",          ":Q:A:m:p/*",        false],
            [2,     "ie",          ":Q:A:f:s/*",        false],
            [2,     "ies",         ":Q:A:f:p/*",        false],
        ],
        "invar": [
            [2,     "i",           ":Q:e:i/*",          false],
        ]
    },

    // deuxième groupe (le seul groupe régulier)
    "V2": [
        [2,     "ir",           ":Y/*",             false],
        [2,     "issant",       ":P/*",             false],
        [2,     "is",           ":Ip:Is:1s:2s/*",   false],
        [2,     "it",           ":Ip:Is:3s/*",      false],
        [2,     "issons",       ":Ip:1p/*",         false],
        [2,     "issez",        ":Ip:2p/*",         false],
        [2,     "issent",       ":Ip:Sp:Sq:3p/*",   false],
        [2,     "issais",       ":Iq:1s:2s/*",      false],
        [2,     "issait",       ":Iq:3s/*",         false],
        [2,     "issions",      ":Iq:Sp:Sq:1p/*",   false],
        [2,     "issiez",       ":Iq:Sp:Sq:2p/*",   false],
        [2,     "issaient",     ":Iq:3p/*",         false],
        [2,     "îmes",         ":Is:1p/*",         false],
        [2,     "îtes",         ":Is:2p/*",         false],
        [2,     "irent",        ":Is:3p!/*",        false],
        [2,     "irai",         ":If:1s/*",         false],
        [2,     "iras",         ":If:2s/*",         false],
        [2,     "ira",          ":If:3s/*",         false],
        [2,     "irons",        ":If:1p/*",         false],
        [2,     "irez",         ":If:2p/*",         false],
        [2,     "iront",        ":If:3p!/*",        false],
        [2,     "irais",        ":K:1s:2s/*",       false],
        [2,     "irait",        ":K:3s/*",          false],
        [2,     "irions",       ":K:1p/*",          false],
        [2,     "iriez",        ":K:2p/*",          false],
        [2,     "iraient",      ":K:3p/*",          false],
        [2,     "isse",         ":Sp:Sq:1s/*",      false],
        [2,     "isses",        ":Sp:Sq:2s/*",      false],
        [2,     "isse",         ":Sp:3s/*",         false],
        [2,     "ît",           ":Sq:3s/*",         false],
        [2,     "is",           ":E:2s/*",          false],
        [2,     "issons",       ":E:1p/*",          false],
        [2,     "issez",        ":E:2p/*",          false]
    ],
    
    // premier groupe (bien plus irrégulier que prétendu)
    "V1": {
        // a
        // verbes en -er, -ger, -yer, -cer
        "er": [
            [2,      "er",        ":Y/*",               false],
            [2,      "ant",       ":P/*",               false],
            [2,      "e",         ":Ip:Sp:1s:3s/*",     false],
            [2,      "è",         ":Ip:1ś/*",           false],
            [2,      "es",        ":Ip:Sp:2s/*",        false],
            [2,      "ons",       ":Ip:1p/*",           false],
            [2,      "ez",        ":Ip:2p/*",           false],
            [2,      "ent",       ":Ip:Sp:3p/*",        false],
            [2,      "ais",       ":Iq:1s:2s/*",        false],
            [2,      "ait",       ":Iq:3s/*",           false],
            [2,      "ions",      ":Iq:Sp:1p/*",        false],
            [2,      "iez",       ":Iq:Sp:2p/*",        false],
            [2,      "aient",     ":Iq:3p/*",           false],
            [2,      "ai",        ":Is:1s/*",           false],
            [2,      "as",        ":Is:2s/*",           false],
            [2,      "a",         ":Is:3s/*",           false],
            [2,      "âmes",      ":Is:1p/*",           false],
            [2,      "âtes",      ":Is:2p/*",           false],
            [2,      "èrent",     ":Is:3p!/*",          false],
            [2,      "erai",      ":If:1s/*",           false],
            [2,      "eras",      ":If:2s/*",           false],
            [2,      "era",       ":If:3s/*",           false],
            [2,      "erons",     ":If:1p/*",           false],
            [2,      "erez",      ":If:2p/*",           false],
            [2,      "eront",     ":If:3p!/*",          false],
            [2,      "erais",     ":K:1s:2s/*",         false],
            [2,      "erait",     ":K:3s/*",            false],
            [2,      "erions",    ":K:1p/*",            false],
            [2,      "eriez",     ":K:2p/*",            false],
            [2,      "eraient",   ":K:3p/*",            false],
            [2,      "asse",      ":Sq:1s/*",           false],
            [2,      "asses",     ":Sq:2s/*",           false],
            [2,      "ât",        ":Sq:3s/*",           false],
            [2,      "assions",   ":Sq:1p/*",           false],
            [2,      "assiez",    ":Sq:2p/*",           false],
            [2,      "assent",    ":Sq:3p/*",           false],
            [2,      "e",         ":E:2s/*",            false],
            [2,      "ons",       ":E:1p/*",            false],
            [2,      "ez",        ":E:2p/*",            false]
        ],

        "ger": [
            [2,      "er",        ":Y/*",               false],
            [2,      "eant",      ":P/*",               false],
            [2,      "e",         ":Ip:Sp:1s:3s/*",     false],
            [2,      "è",         ":Ip:1ś/*",           false],
            [2,      "es",        ":Ip:Sp:2s/*",        false],
            [2,      "eons",      ":Ip:1p/*",           false],
            [2,      "ez",        ":Ip:2p/*",           false],
            [2,      "ent",       ":Ip:Sp:3p/*",        false],
            [2,      "eais",      ":Iq:1s:2s/*",        false],
            [2,      "eait",      ":Iq:3s/*",           false],
            [2,      "ions",      ":Iq:Sp:1p/*",        false],
            [2,      "iez",       ":Iq:Sp:2p/*",        false],
            [2,      "eaient",    ":Iq:3p/*",           false],
            [2,      "eai",       ":Is:1s/*",           false],
            [2,      "eas",       ":Is:2s/*",           false],
            [2,      "ea",        ":Is:3s/*",           false],
            [2,      "eâmes",     ":Is:1p/*",           false],
            [2,      "eâtes",     ":Is:2p/*",           false],
            [2,      "èrent",     ":Is:3p!/*",          false],
            [2,      "erai",      ":If:1s/*",           false],
            [2,      "eras",      ":If:2s/*",           false],
            [2,      "era",       ":If:3s/*",           false],
            [2,      "erons",     ":If:1p/*",           false],
            [2,      "erez",      ":If:2p/*",           false],
            [2,      "eront",     ":If:3p!/*",          false],
            [2,      "erais",     ":K:1s:2s/*",         false],
            [2,      "erait",     ":K:3s/*",            false],
            [2,      "erions",    ":K:1p/*",            false],
            [2,      "eriez",     ":K:2p/*",            false],
            [2,      "eraient",   ":K:3p/*",            false],
            [2,      "easse",     ":Sq:1s/*",           false],
            [2,      "easses",    ":Sq:2s/*",           false],
            [2,      "eât",       ":Sq:3s/*",           false],
            [2,      "eassions",  ":Sq:1p/*",           false],
            [2,      "eassiez",   ":Sq:2p/*",           false],
            [2,      "eassent",   ":Sq:3p/*",           false],
            [2,      "e",         ":E:2s/*",            false],
            [2,      "eons",      ":E:1p/*",            false],
            [2,      "ez",        ":E:2p/*",            false]
        ],

        "cer": [
            [2,      "er",        ":Y/*",               false],
            [3,      "çant",      ":P/*",               false],
            [2,      "e",         ":Ip:Sp:1s:3s/*",     false],
            [2,      "è",         ":Ip:1ś/*",           false],
            [2,      "es",        ":Ip:Sp:2s/*",        false],
            [3,      "çons",      ":Ip:1p/*",           false],
            [2,      "ez",        ":Ip:2p/*",           false],
            [2,      "ent",       ":Ip:Sp:3p/*",        false],
            [3,      "çais",      ":Iq:1s:2s/*",        false],
            [3,      "çait",      ":Iq:3s/*",           false],
            [2,      "ions",      ":Iq:Sp:1p/*",        false],
            [2,      "iez",       ":Iq:Sp:2p/*",        false],
            [3,      "çaient",    ":Iq:3p/*",           false],
            [3,      "çai",       ":Is:1s/*",           false],
            [3,      "ças",       ":Is:2s/*",           false],
            [3,      "ça",        ":Is:3s/*",           false],
            [3,      "çâmes",     ":Is:1p/*",           false],
            [3,      "çâtes",     ":Is:2p/*",           false],
            [2,      "èrent",     ":Is:3p!/*",          false],
            [2,      "erai",      ":If:1s/*",           false],
            [2,      "eras",      ":If:2s/*",           false],
            [2,      "era",       ":If:3s/*",           false],
            [2,      "erons",     ":If:1p/*",           false],
            [2,      "erez",      ":If:2p/*",           false],
            [2,      "eront",     ":If:3p!/*",          false],
            [2,      "erais",     ":K:1s:2s/*",         false],
            [2,      "erait",     ":K:3s/*",            false],
            [2,      "erions",    ":K:1p/*",            false],
            [2,      "eriez",     ":K:2p/*",            false],
            [2,      "eraient",   ":K:3p/*",            false],
            [3,      "çasse",     ":Sq:1s/*",           false],
            [3,      "çasses",    ":Sq:2s/*",           false],
            [3,      "çât",       ":Sq:3s/*",           false],
            [3,      "çassions",  ":Sq:1p/*",           false],
            [3,      "çassiez",   ":Sq:2p/*",           false],
            [3,      "çassent",   ":Sq:3p/*",           false],
            [2,      "e",         ":E:2s/*",            false],
            [3,      "çons",      ":E:1p/*",            false],
            [2,      "ez",        ":E:2p/*",            false]
        ],

        "yer": [
            [2,     "er",         ":Y/*",               false],
            [2,     "ant",        ":P/*",               false],
            [3,     "ye",         ":Ip:Sp:1s:3s/*",     "[^ou]yer$"],
            [3,     "ie",         ":Ip:Sp:1s:3s/*",     "[aou]yer$"],
            [2,     "è",          ":Ip:1ś/*",           false],
            [3,     "yes",        ":Ip:Sp:2s/*",        "[^ou]yer$"],
            [3,     "ies",        ":Ip:Sp:2s/*",        "[aou]yer$"],
            [2,     "ons",        ":Ip:1p/*",           false],
            [2,     "ez",         ":Ip:2p/*",           false],
            [3,     "yent",       ":Ip:Sp:3p/*",        "[^ou]yer$"],
            [3,     "ient",       ":Ip:Sp:3p/*",        "[aou]yer$"],
            [2,     "ais",        ":Iq:1s:2s/*",        false],
            [2,     "ait",        ":Iq:3s/*",           false],
            [2,     "ions",       ":Iq:Sp:1p/*",        false],
            [2,     "iez",        ":Iq:Sp:2p/*",        false],
            [2,     "aient",      ":Iq:3p/*",           false],
            [2,     "ai",         ":Is:1s/*",           false],
            [2,     "as",         ":Is:2s/*",           false],
            [2,     "a",          ":Is:3s/*",           false],
            [2,     "âmes",       ":Is:1p/*",           false],
            [2,     "âtes",       ":Is:2p/*",           false],
            [2,     "èrent",      ":Is:3p!/*",          false],
            [3,     "yerai",      ":If:1s/*",           "[^ou]yer$"],
            [3,     "ierai",      ":If:1s/*",           "[aou]yer$"],
            [3,     "yeras",      ":If:2s/*",           "[^ou]yer$"],
            [3,     "ieras",      ":If:2s/*",           "[aou]yer$"],
            [3,     "yera",       ":If:3s/*",           "[^ou]yer$"],
            [3,     "iera",       ":If:3s/*",           "[aou]yer$"],
            [3,     "yerons",     ":If:1p/*",           "[^ou]yer$"],
            [3,     "ierons",     ":If:1p/*",           "[aou]yer$"],
            [3,     "yerez",      ":If:2p/*",           "[^ou]yer$"],
            [3,     "ierez",      ":If:2p/*",           "[aou]yer$"],
            [3,     "yeront",     ":If:3p!/*",          "[^ou]yer$"],
            [3,     "ieront",     ":If:3p!/*",          "[aou]yer$"],
            [3,     "yerais",     ":K:1s:2s/*",         "[^ou]yer$"],
            [3,     "ierais",     ":K:1s:2s/*",         "[aou]yer$"],
            [3,     "yerait",     ":K:3s/*",            "[^ou]yer$"],
            [3,     "ierait",     ":K:3s/*",            "[aou]yer$"],
            [3,     "yerions",    ":K:1p/*",            "[^ou]yer$"],
            [3,     "ierions",    ":K:1p/*",            "[aou]yer$"],
            [3,     "yeriez",     ":K:2p/*",            "[^ou]yer$"],
            [3,     "ieriez",     ":K:2p/*",            "[aou]yer$"],
            [3,     "yeraient",   ":K:3p/*",            "[^ou]yer$"],
            [3,     "ieraient",   ":K:3p/*",            "[aou]yer$"],
            [2,     "asse",       ":Sq:1s/*",           false],
            [2,     "asses",      ":Sq:2s/*",           false],
            [2,     "ât",         ":Sq:3s/*",           false],
            [2,     "assions",    ":Sq:1p/*",           false],
            [2,     "assiez",     ":Sq:2p/*",           false],
            [2,     "assent",     ":Sq:3p/*",           false],
            [3,     "ye",         ":E:2s/*",            "[^ou]yer$"],
            [3,     "ie",         ":E:2s/*",            "[aou]yer$"],
            [2,     "ons",        ":E:1p/*",            false],
            [2,     "ez",         ":E:2p/*",            false]
        ],

        // b
        // verbes en -ecer, -emer, -ener, -eper, -erer, -eser, -ever, -evrer
        // verbes en -eler, -eter (pas de doublement de la consonne: acheter, celer, déceler, receler, ciseler, démanteler,
        // écarteler, encasteler, geler, dégeler, congeler, surgeler, marteler, modeler, peler, acheter, racheter,
        // bégueter, corseter, crocheter, fileter, fureter, haleter)
        // changement du e en è avant syllabe muette
        "ecer": [
            [2,     "er",           ":Y/*",                 false],
            [3,     "çant",         ":P/*",                 false],
            [4,     "èce",          ":Ip:Sp:1s:3s/*",       false],
            [2,     "è",            ":Ip:1ś/R",             false],
            [4,     "èces",         ":Ip:Sp:2s/*",          false],
            [3,     "çons",         ":Ip:1p/*",             false],
            [2,     "ez",           ":Ip:2p/*",             false],
            [4,     "ècent",        ":Ip:Sp:3p/*",          false],
            [3,     "çais",         ":Iq:1s:2s/*",          false],
            [3,     "çait",         ":Iq:3s/*",             false],
            [2,     "ions",         ":Iq:Sp:1p/*",          false],
            [2,     "iez",          ":Iq:Sp:2p/*",          false],
            [3,     "çaient",       ":Iq:3p/*",             false],
            [3,     "çai",          ":Is:1s/*",             false],
            [3,     "ças",          ":Is:2s/*",             false],
            [3,     "ça",           ":Is:3s/*",             false],
            [3,     "çâmes",        ":Is:1p/*",             false],
            [3,     "çâtes",        ":Is:2p/*",             false],
            [2,     "èrent",        ":Is:3p!/*",            false],
            [4,     "ècerai",       ":If:1s/*",             false],
            [4,     "èceras",       ":If:2s/*",             false],
            [4,     "ècera",        ":If:3s/*",             false],
            [4,     "ècerons",      ":If:1p/*",             false],
            [4,     "ècerez",       ":If:2p/*",             false],
            [4,     "èceront",      ":If:3p!/*",            false],
            [4,     "ècerais",      ":K:1s:2s/*",           false],
            [4,     "ècerait",      ":K:3s/*",              false],
            [4,     "ècerions",     ":K:1p/*",              false],
            [4,     "èceriez",      ":K:2p/*",              false],
            [4,     "èceraient",    ":K:3p/*",              false],
            [3,     "çasse",        ":Sq:1s/*",             false],
            [3,     "çasses",       ":Sq:2s/*",             false],
            [3,     "çât",          ":Sq:3s/*",             false],
            [3,     "çassions",     ":Sq:1p/*",             false],
            [3,     "çassiez",      ":Sq:2p/*",             false],
            [3,     "çassent",      ":Sq:3p/*",             false],
            [4,     "èce",          ":E:2s/*",              false],
            [3,     "çons",         ":E:1p/*",              false],
            [2,     "ez",           ":E:2p/*",              false]
        ],

        "eler": {
            "1": [
                [2,     "er",           ":Y/*",             false],
                [2,     "ant",          ":P/*",             false],
                [4,     "èle",          ":Ip:Sp:1s:3s/*",   false],
                [2,     "è",            ":Ip:1ś/R",         false],
                [4,     "èles",         ":Ip:Sp:2s/*",      false],
                [2,     "ons",          ":Ip:1p/*",         false],
                [2,     "ez",           ":Ip:2p/*",         false],
                [4,     "èlent",        ":Ip:Sp:3p/*",      false],
                [2,     "ais",          ":Iq:1s:2s/*",      false],
                [2,     "ait",          ":Iq:3s/*",         false],
                [2,     "ions",         ":Iq:Sp:1p/*",      false],
                [2,     "iez",          ":Iq:Sp:2p/*",      false],
                [2,     "aient",        ":Iq:3p/*",         false],
                [2,     "ai",           ":Is:1s/*",         false],
                [2,     "as",           ":Is:2s/*",         false],
                [2,     "a",            ":Is:3s/*",         false],
                [2,     "âmes",         ":Is:1p/*",         false],
                [2,     "âtes",         ":Is:2p/*",         false],
                [2,     "èrent",        ":Is:3p!/*",        false],
                [4,     "èlerai",       ":If:1s/*",         false],
                [4,     "èleras",       ":If:2s/*",         false],
                [4,     "èlera",        ":If:3s/*",         false],
                [4,     "èlerons",      ":If:1p/*",         false],
                [4,     "èlerez",       ":If:2p/*",         false],
                [4,     "èleront",      ":If:3p!/*",        false],
                [4,     "èlerais",      ":K:1s:2s/*",       false],
                [4,     "èlerait",      ":K:3s/*",          false],
                [4,     "èlerions",     ":K:1p/*",          false],
                [4,     "èleriez",      ":K:2p/*",          false],
                [4,     "èleraient",    ":K:3p/*",          false],
                [2,     "asse",         ":Sq:1s/*",         false],
                [2,     "asses",        ":Sq:2s/*",         false],
                [2,     "ât",           ":Sq:3s/*",         false],
                [2,     "assions",      ":Sq:1p/*",         false],
                [2,     "assiez",       ":Sq:2p/*",         false],
                [2,     "assent",       ":Sq:3p/*",         false],
                [4,     "èle",          ":E:2s/*",          false],
                [2,     "ons",          ":E:1p/*",          false],
                [2,     "ez",           ":E:2p/*",          false]
            ],
            "2": [
                // d. verbes en -eler : doublement de la consonne l.
                [2,     "er",           ":Y/*",             false],
                [2,     "ant",          ":P/*",             false],
                [4,     "elle",         ":Ip:Sp:1s:3s/*",   "ppeler$"],
                [4,     "elle",         ":Ip:Sp:1s:3s/M",   "[^p].eler$"],
                [4,     "èle",          ":Ip:Sp:1s:3s/R",   "[^p].eler$"],
                [2,     "è",            ":Ip:1ś/R",         false],
                [4,     "elles",        ":Ip:Sp:2s/*",      "ppeler$"],
                [4,     "elles",        ":Ip:Sp:2s/M",      "[^p].eler$"],
                [4,     "èles",         ":Ip:Sp:2s/R",      "[^p].eler$"],
                [2,     "ons",          ":Ip:1p/*",         false],
                [2,     "ez",           ":Ip:2p/*",         false],
                [4,     "ellent",       ":Ip:Sp:3p/*",      "ppeler$"],
                [4,     "ellent",       ":Ip:Sp:3p/M",      "[^p].eler$"],
                [4,     "èlent",        ":Ip:Sp:3p/R",      "[^p].eler$"],
                [2,     "ais",          ":Iq:1s:2s/*",      false],
                [2,     "ait",          ":Iq:3s/*",         false],
                [2,     "ions",         ":Iq:Sp:1p/*",      false],
                [2,     "iez",          ":Iq:Sp:2p/*",      false],
                [2,     "aient",        ":Iq:3p/*",         false],
                [2,     "ai",           ":Is:1s/*",         false],
                [2,     "as",           ":Is:2s/*",         false],
                [2,     "a",            ":Is:3s/*",         false],
                [2,     "âmes",         ":Is:1p/*",         false],
                [2,     "âtes",         ":Is:2p/*",         false],
                [2,     "èrent",        ":Is:3p!/*",        false],
                [4,     "ellerai",      ":If:1s/*",         "ppeler$"],
                [4,     "ellerai",      ":If:1s/M",         "[^p].eler$"],
                [4,     "èlerai",       ":If:1s/R",         "[^p].eler$"],
                [4,     "elleras",      ":If:2s/*",         "ppeler$"],
                [4,     "elleras",      ":If:2s/M",         "[^p].eler$"],
                [4,     "èleras",       ":If:2s/R",         "[^p].eler$"],
                [4,     "ellera",       ":If:3s/*",         "ppeler$"],
                [4,     "ellera",       ":If:3s/M",         "[^p].eler$"],
                [4,     "èlera",        ":If:3s/R",         "[^p].eler$"],
                [4,     "ellerons",     ":If:1p/*",         "ppeler$"],
                [4,     "ellerons",     ":If:1p/M",         "[^p].eler$"],
                [4,     "èlerons",      ":If:1p/R",         "[^p].eler$"],
                [4,     "ellerez",      ":If:2p/*",         "ppeler$"],
                [4,     "ellerez",      ":If:2p/M",         "[^p].eler$"],
                [4,     "èlerez",       ":If:2p/R",         "[^p].eler$"],
                [4,     "elleront",     ":If:3p!/*",        "ppeler$"],
                [4,     "elleront",     ":If:3p!/M",        "[^p].eler$"],
                [4,     "èleront",      ":If:3p!/R",        "[^p].eler$"],
                [4,     "ellerais",     ":K:1s:2s/*",       "ppeler$"],
                [4,     "ellerais",     ":K:1s:2s/M",       "[^p].eler$"],
                [4,     "èlerais",      ":K:1s:2s/R",       "[^p].eler$"],
                [4,     "ellerait",     ":K:3s/*",          "ppeler$"],
                [4,     "ellerait",     ":K:3s/M",          "[^p].eler$"],
                [4,     "èlerait",      ":K:3s/R",          "[^p].eler$"],
                [4,     "ellerions",    ":K:1p/*",          "ppeler$"],
                [4,     "ellerions",    ":K:1p/M",          "[^p].eler$"],
                [4,     "èlerions",     ":K:1p/R",          "[^p].eler$"],
                [4,     "elleriez",     ":K:2p/*",          "ppeler$"],
                [4,     "elleriez",     ":K:2p/M",          "[^p].eler$"],
                [4,     "èleriez",      ":K:2p/R",          "[^p].eler$"],
                [4,     "elleraient",   ":K:3p/*",          "ppeler$"],
                [4,     "elleraient",   ":K:3p/M",          "[^p].eler$"],
                [4,     "èleraient",    ":K:3p/R",          "[^p].eler$"],
                [2,     "asse",         ":Sq:1s/*",         false],
                [2,     "asses",        ":Sq:2s/*",         false],
                [2,     "ât",           ":Sq:3s/*",         false],
                [2,     "assions",      ":Sq:1p/*",         false],
                [2,     "assiez",       ":Sq:2p/*",         false],
                [2,     "assent",       ":Sq:3p/*",         false],
                [4,     "elle",         ":E:2s/*",          "ppeler$"],
                [4,     "elle",         ":E:2s/M",          "[^p].eler$"],
                [4,     "èle",          ":E:2s/R",          "[^p].eler$"],
                [2,     "ons",          ":E:1p/*",          false],
                [2,     "ez",           ":E:2p/*",          false]
            ],
        },

        "emer": [
            [2,     "er",           ":Y/*",                 false],
            [2,     "ant",          ":P/*",                 false],
            [4,     "ème",          ":Ip:Sp:1s:3s/*",       false],
            [2,     "è",            ":Ip:1ś/R",             false],
            [4,     "èmes",         ":Ip:Sp:2s/*",          false],
            [2,     "ons",          ":Ip:1p/*",             false],
            [2,     "ez",           ":Ip:2p/*",             false],
            [4,     "èment",        ":Ip:Sp:3p/*",          false],
            [2,     "ais",          ":Iq:1s:2s/*",          false],
            [2,     "ait",          ":Iq:3s/*",             false],
            [2,     "ions",         ":Iq:Sp:1p/*",          false],
            [2,     "iez",          ":Iq:Sp:2p/*",          false],
            [2,     "aient",        ":Iq:3p/*",             false],
            [2,     "ai",           ":Is:1s/*",             false],
            [2,     "as",           ":Is:2s/*",             false],
            [2,     "a",            ":Is:3s/*",             false],
            [2,     "âmes",         ":Is:1p/*",             false],
            [2,     "âtes",         ":Is:2p/*",             false],
            [2,     "èrent",        ":Is:3p!/*",            false],
            [4,     "èmerai",       ":If:1s/*",             false],
            [4,     "èmeras",       ":If:2s/*",             false],
            [4,     "èmera",        ":If:3s/*",             false],
            [4,     "èmerons",      ":If:1p/*",             false],
            [4,     "èmerez",       ":If:2p/*",             false],
            [4,     "èmeront",      ":If:3p!/*",            false],
            [4,     "èmerais",      ":K:1s:2s/*",           false],
            [4,     "èmerait",      ":K:3s/*",              false],
            [4,     "èmerions",     ":K:1p/*",              false],
            [4,     "èmeriez",      ":K:2p/*",              false],
            [4,     "èmeraient",    ":K:3p/*",              false],
            [2,     "asse",         ":Sq:1s/*",             false],
            [2,     "asses",        ":Sq:2s/*",             false],
            [2,     "ât",           ":Sq:3s/*",             false],
            [2,     "assions",      ":Sq:1p/*",             false],
            [2,     "assiez",       ":Sq:2p/*",             false],
            [2,     "assent",       ":Sq:3p/*",             false],
            [4,     "ème",          ":E:2s/*",              false],
            [2,     "ons",          ":E:1p/*",              false],
            [2,     "ez",           ":E:2p/*",              false]
        ],

        "ener": [
            [2,     "er",           ":Y/*",                 false],
            [2,     "ant",          ":P/*",                 false],
            [4,     "ène",          ":Ip:Sp:1s:3s/*",       false],
            [2,     "è",            ":Ip:1ś/R",             false],
            [4,     "ènes",         ":Ip:Sp:2s/*",          false],
            [2,     "ons",          ":Ip:1p/*",             false],
            [2,     "ez",           ":Ip:2p/*",             false],
            [4,     "ènent",        ":Ip:Sp:3p/*",          false],
            [2,     "ais",          ":Iq:1s:2s/*",          false],
            [2,     "ait",          ":Iq:3s/*",             false],
            [2,     "ions",         ":Iq:Sp:1p/*",          false],
            [2,     "iez",          ":Iq:Sp:2p/*",          false],
            [2,     "aient",        ":Iq:3p/*",             false],
            [2,     "ai",           ":Is:1s/*",             false],
            [2,     "as",           ":Is:2s/*",             false],
            [2,     "a",            ":Is:3s/*",             false],
            [2,     "âmes",         ":Is:1p/*",             false],
            [2,     "âtes",         ":Is:2p/*",             false],
            [2,     "èrent",        ":Is:3p!/*",            false],
            [4,     "ènerai",       ":If:1s/*",             false],
            [4,     "èneras",       ":If:2s/*",             false],
            [4,     "ènera",        ":If:3s/*",             false],
            [4,     "ènerons",      ":If:1p/*",             false],
            [4,     "ènerez",       ":If:2p/*",             false],
            [4,     "èneront",      ":If:3p!/*",            false],
            [4,     "ènerais",      ":K:1s:2s/*",           false],
            [4,     "ènerait",      ":K:3s/*",              false],
            [4,     "ènerions",     ":K:1p/*",              false],
            [4,     "èneriez",      ":K:2p/*",              false],
            [4,     "èneraient",    ":K:3p/*",              false],
            [2,     "asse",         ":Sq:1s/*",             false],
            [2,     "asses",        ":Sq:2s/*",             false],
            [2,     "ât",           ":Sq:3s/*",             false],
            [2,     "assions",      ":Sq:1p/*",             false],
            [2,     "assiez",       ":Sq:2p/*",             false],
            [2,     "assent",       ":Sq:3p/*",             false],
            [4,     "ène",          ":E:2s/*",              false],
            [2,     "ons",          ":E:1p/*",              false],
            [2,     "ez",           ":E:2p/*",              false]
        ],

        "eper": [
            [2,     "er",           ":Y/*",                 false],
            [2,     "ant",          ":P/*",                 false],
            [4,     "èpe",          ":Ip:Sp:1s:3s/*",       false],
            [2,     "è",            ":Ip:1ś/R",             false],
            [4,     "èpes",         ":Ip:Sp:2s/*",          false],
            [2,     "ons",          ":Ip:1p/*",             false],
            [2,     "ez",           ":Ip:2p/*",             false],
            [4,     "èpent",        ":Ip:Sp:3p/*",          false],
            [2,     "ais",          ":Iq:1s:2s/*",          false],
            [2,     "ait",          ":Iq:3s/*",             false],
            [2,     "ions",         ":Iq:Sp:1p/*",          false],
            [2,     "iez",          ":Iq:Sp:2p/*",          false],
            [2,     "aient",        ":Iq:3p/*",             false],
            [2,     "ai",           ":Is:1s/*",             false],
            [2,     "as",           ":Is:2s/*",             false],
            [2,     "a",            ":Is:3s/*",             false],
            [2,     "âmes",         ":Is:1p/*",             false],
            [2,     "âtes",         ":Is:2p/*",             false],
            [2,     "èrent",        ":Is:3p!/*",            false],
            [4,     "èperai",       ":If:1s/*",             false],
            [4,     "èperas",       ":If:2s/*",             false],
            [4,     "èpera",        ":If:3s/*",             false],
            [4,     "èperons",      ":If:1p/*",             false],
            [4,     "èperez",       ":If:2p/*",             false],
            [4,     "èperont",      ":If:3p!/*",            false],
            [4,     "èperais",      ":K:1s:2s/*",           false],
            [4,     "èperait",      ":K:3s/*",              false],
            [4,     "èperions",     ":K:1p/*",              false],
            [4,     "èperiez",      ":K:2p/*",              false],
            [4,     "èperaient",    ":K:3p/*",              false],
            [2,     "asse",         ":Sq:1s/*",             false],
            [2,     "asses",        ":Sq:2s/*",             false],
            [2,     "ât",           ":Sq:3s/*",             false],
            [2,     "assions",      ":Sq:1p/*",             false],
            [2,     "assiez",       ":Sq:2p/*",             false],
            [2,     "assent",       ":Sq:3p/*",             false],
            [4,     "èpe",          ":E:2s/*",              false],
            [2,     "ons",          ":E:1p/*",              false],
            [2,     "ez",           ":E:2p/*",              false]
        ],

        "erer": [
            [2,     "er",           ":Y/*",                 false],
            [2,     "ant",          ":P/*",                 false],
            [4,     "ère",          ":Ip:Sp:1s:3s/*",       false],
            [2,     "è",            ":Ip:1ś/R",             false],
            [4,     "ères",         ":Ip:Sp:2s/*",          false],
            [2,     "ons",          ":Ip:1p/*",             false],
            [2,     "ez",           ":Ip:2p/*",             false],
            [4,     "èrent",        ":Ip:Sp:3p/*",          false],
            [2,     "ais",          ":Iq:1s:2s/*",          false],
            [2,     "ait",          ":Iq:3s/*",             false],
            [2,     "ions",         ":Iq:Sp:1p/*",          false],
            [2,     "iez",          ":Iq:Sp:2p/*",          false],
            [2,     "aient",        ":Iq:3p/*",             false],
            [2,     "ai",           ":Is:1s/*",             false],
            [2,     "as",           ":Is:2s/*",             false],
            [2,     "a",            ":Is:3s/*",             false],
            [2,     "âmes",         ":Is:1p/*",             false],
            [2,     "âtes",         ":Is:2p/*",             false],
            [2,     "èrent",        ":Is:3p!/*",            false],
            [4,     "èrerai",       ":If:1s/*",             false],
            [4,     "èreras",       ":If:2s/*",             false],
            [4,     "èrera",        ":If:3s/*",             false],
            [4,     "èrerons",      ":If:1p/*",             false],
            [4,     "èrerez",       ":If:2p/*",             false],
            [4,     "èreront",      ":If:3p!/*",            false],
            [4,     "èrerais",      ":K:1s:2s/*",           false],
            [4,     "èrerait",      ":K:3s/*",              false],
            [4,     "èrerions",     ":K:1p/*",              false],
            [4,     "èreriez",      ":K:2p/*",              false],
            [4,     "èreraient",    ":K:3p/*",              false],
            [2,     "asse",         ":Sq:1s/*",             false],
            [2,     "asses",        ":Sq:2s/*",             false],
            [2,     "ât",           ":Sq:3s/*",             false],
            [2,     "assions",      ":Sq:1p/*",             false],
            [2,     "assiez",       ":Sq:2p/*",             false],
            [2,     "assent",       ":Sq:3p/*",             false],
            [4,     "ère",          ":E:2s/*",              false],
            [2,     "ons",          ":E:1p/*",              false],
            [2,     "ez",           ":E:2p/*",              false]
        ],

        "eser": [
            [2,     "er",           ":Y/*",                 false],
            [2,     "ant",          ":P/*",                 false],
            [4,     "èse",          ":Ip:Sp:1s:3s/*",       false],
            [2,     "è",            ":Ip:1ś/R",             false],
            [4,     "èses",         ":Ip:Sp:2s/*",          false],
            [2,     "ons",          ":Ip:1p/*",             false],
            [2,     "ez",           ":Ip:2p/*",             false],
            [4,     "èsent",        ":Ip:Sp:3p/*",          false],
            [2,     "ais",          ":Iq:1s:2s/*",          false],
            [2,     "ait",          ":Iq:3s/*",             false],
            [2,     "ions",         ":Iq:Sp:1p/*",          false],
            [2,     "iez",          ":Iq:Sp:2p/*",          false],
            [2,     "aient",        ":Iq:3p/*",             false],
            [2,     "ai",           ":Is:1s/*",             false],
            [2,     "as",           ":Is:2s/*",             false],
            [2,     "a",            ":Is:3s/*",             false],
            [2,     "âmes",         ":Is:1p/*",             false],
            [2,     "âtes",         ":Is:2p/*",             false],
            [2,     "èrent",        ":Is:3p!/*",            false],
            [4,     "èserai",       ":If:1s/*",             false],
            [4,     "èseras",       ":If:2s/*",             false],
            [4,     "èsera",        ":If:3s/*",             false],
            [4,     "èserons",      ":If:1p/*",             false],
            [4,     "èserez",       ":If:2p/*",             false],
            [4,     "èseront",      ":If:3p!/*",            false],
            [4,     "èserais",      ":K:1s:2s/*",           false],
            [4,     "èserait",      ":K:3s/*",              false],
            [4,     "èserions",     ":K:1p/*",              false],
            [4,     "èseriez",      ":K:2p/*",              false],
            [4,     "èseraient",    ":K:3p/*",              false],
            [2,     "asse",         ":Sq:1s/*",             false],
            [2,     "asses",        ":Sq:2s/*",             false],
            [2,     "ât",           ":Sq:3s/*",             false],
            [2,     "assions",      ":Sq:1p/*",             false],
            [2,     "assiez",       ":Sq:2p/*",             false],
            [2,     "assent",       ":Sq:3p/*",             false],
            [4,     "èse",          ":E:2s/*",              false],
            [2,     "ons",          ":E:1p/*",              false],
            [2,     "ez",           ":E:2p/*",              false]
        ],

        "eter": {
            "1": [
                [2,     "er",           ":Y/*",                 false],
                [2,     "ant",          ":P/*",                 false],
                [4,     "ète",          ":Ip:Sp:1s:3s/*",       false],
                [2,     "è",            ":Ip:1ś/R",             false],
                [4,     "ètes",         ":Ip:Sp:2s/*",          false],
                [2,     "ons",          ":Ip:1p/*",             false],
                [2,     "ez",           ":Ip:2p/*",             false],
                [4,     "ètent",        ":Ip:Sp:3p/*",          false],
                [2,     "ais",          ":Iq:1s:2s/*",          false],
                [2,     "ait",          ":Iq:3s/*",             false],
                [2,     "ions",         ":Iq:Sp:1p/*",          false],
                [2,     "iez",          ":Iq:Sp:2p/*",          false],
                [2,     "aient",        ":Iq:3p/*",             false],
                [2,     "ai",           ":Is:1s/*",             false],
                [2,     "as",           ":Is:2s/*",             false],
                [2,     "a",            ":Is:3s/*",             false],
                [2,     "âmes",         ":Is:1p/*",             false],
                [2,     "âtes",         ":Is:2p/*",             false],
                [2,     "èrent",        ":Is:3p!/*",            false],
                [4,     "èterai",       ":If:1s/*",             false],
                [4,     "èteras",       ":If:2s/*",             false],
                [4,     "ètera",        ":If:3s/*",             false],
                [4,     "èterons",      ":If:1p/*",             false],
                [4,     "èterez",       ":If:2p/*",             false],
                [4,     "èteront",      ":If:3p!/*",            false],
                [4,     "èterais",      ":K:1s:2s/*",           false],
                [4,     "èterait",      ":K:3s/*",              false],
                [4,     "èterions",     ":K:1p/*",              false],
                [4,     "èteriez",      ":K:2p/*",              false],
                [4,     "èteraient",    ":K:3p/*",              false],
                [2,     "asse",         ":Sq:1s/*",             false],
                [2,     "asses",        ":Sq:2s/*",             false],
                [2,     "ât",           ":Sq:3s/*",             false],
                [2,     "assions",      ":Sq:1p/*",             false],
                [2,     "assiez",       ":Sq:2p/*",             false],
                [2,     "assent",       ":Sq:3p/*",             false],
                [4,     "ète",          ":E:2s/*",              false],
                [2,     "ons",          ":E:1p/*",              false],
                [2,     "ez",           ":E:2p/*",              false]
            ],
            "2": [
                // d. verbes en -eter : doublement de la consonne t
                [2,     "er",           ":Y/*",                 false],
                [2,     "ant",          ":P/*",                 false],
                [4,     "ette",         ":Ip:Sp:1s:3s/*",       "jeter$"],
                [4,     "ette",         ":Ip:Sp:1s:3s/M",       "[^j]eter$"],
                [4,     "ète",          ":Ip:Sp:1s:3s/R",       "[^j]eter$"],
                [2,     "è",            ":Ip:1ś/R",             false],
                [4,     "ettes",        ":Ip:Sp:2s/*",          "jeter$"],
                [4,     "ettes",        ":Ip:Sp:2s/M",          "[^j]eter$"],
                [4,     "ètes",         ":Ip:Sp:2s/R",          "[^j]eter$"],
                [2,     "ons",          ":Ip:1p/*",             false],
                [2,     "ez",           ":Ip:2p/*",             false],
                [4,     "ettent",       ":Ip:Sp:3p/*",          "jeter$"],
                [4,     "ettent",       ":Ip:Sp:3p/M",          "[^j]eter$"],
                [4,     "ètent",        ":Ip:Sp:3p/R",          "[^j]eter$"],
                [2,     "ais",          ":Iq:1s:2s/*",          false],
                [2,     "ait",          ":Iq:3s/*",             false],
                [2,     "ions",         ":Iq:Sp:1p/*",          false],
                [2,     "iez",          ":Iq:Sp:2p/*",          false],
                [2,     "aient",        ":Iq:3p/*",             false],
                [2,     "ai",           ":Is:1s/*",             false],
                [2,     "as",           ":Is:2s/*",             false],
                [2,     "a",            ":Is:3s/*",             false],
                [2,     "âmes",         ":Is:1p/*",             false],
                [2,     "âtes",         ":Is:2p/*",             false],
                [2,     "èrent",        ":Is:3p!/*",            false],
                [4,     "etterai",      ":If:1s/*",             "jeter$"],
                [4,     "etterai",      ":If:1s/M",             "[^j]eter$"],
                [4,     "èterai",       ":If:1s/R",             "[^j]eter$"],
                [4,     "etteras",      ":If:2s/*",             "jeter$"],
                [4,     "etteras",      ":If:2s/M",             "[^j]eter$"],
                [4,     "èteras",       ":If:2s/R",             "[^j]eter$"],
                [4,     "ettera",       ":If:3s/*",             "jeter$"],
                [4,     "ettera",       ":If:3s/M",             "[^j]eter$"],
                [4,     "ètera",        ":If:3s/R",             "[^j]eter$"],
                [4,     "etterons",     ":If:1p/*",             "jeter$"],
                [4,     "etterons",     ":If:1p/M",             "[^j]eter$"],
                [4,     "èterons",      ":If:1p/R",             "[^j]eter$"],
                [4,     "etterez",      ":If:2p/*",             "jeter$"],
                [4,     "etterez",      ":If:2p/M",             "[^j]eter$"],
                [4,     "èterez",       ":If:2p/R",             "[^j]eter$"],
                [4,     "etteront",     ":If:3p!/*",            "jeter$"],
                [4,     "etteront",     ":If:3p!/M",            "[^j]eter$"],
                [4,     "èteront",      ":If:3p!/R",            "[^j]eter$"],
                [4,     "etterais",     ":K:1s:2s/*",           "jeter$"],
                [4,     "etterais",     ":K:1s:2s/M",           "[^j]eter$"],
                [4,     "èterais",      ":K:1s:2s/R",           "[^j]eter$"],
                [4,     "etterait",     ":K:3s/*",              "jeter$"],
                [4,     "etterait",     ":K:3s/M",              "[^j]eter$"],
                [4,     "èterait",      ":K:3s/R",              "[^j]eter$"],
                [4,     "etterions",    ":K:1p/*",              "jeter$"],
                [4,     "etterions",    ":K:1p/M",              "[^j]eter$"],
                [4,     "èterions",     ":K:1p/R",              "[^j]eter$"],
                [4,     "etteriez",     ":K:2p/*",              "jeter$"],
                [4,     "etteriez",     ":K:2p/M",              "[^j]eter$"],
                [4,     "èteriez",      ":K:2p/R",              "[^j]eter$"],
                [4,     "etteraient",   ":K:3p/*",              "jeter$"],
                [4,     "etteraient",   ":K:3p/M",              "[^j]eter$"],
                [4,     "èteraient",    ":K:3p/R",              "[^j]eter$"],
                [2,     "asse",         ":Sq:1s/*",             false],
                [2,     "asses",        ":Sq:2s/*",             false],
                [2,     "ât",           ":Sq:3s/*",             false],
                [2,     "assions",      ":Sq:1p/*",             false],
                [2,     "assiez",       ":Sq:2p/*",             false],
                [2,     "assent",       ":Sq:3p/*",             false],
                [4,     "ette",         ":E:2s/*",              "jeter$"],
                [4,     "ette",         ":E:2s/M",              "[^j]eter$"],
                [4,     "ète",          ":E:2s/R",              "[^j]eter$"],
                [2,     "ons",          ":E:1p/*",              false],
                [2,     "ez",           ":E:2p/*",              false]
            ]
        },

        "ever": [
            [2,     "er",           ":Y/*",                 false],
            [2,     "ant",          ":P/*",                 false],
            [4,     "ève",          ":Ip:Sp:1s:3s/*",       false],
            [2,     "è",            ":Ip:1ś/R",             false],
            [4,     "èves",         ":Ip:Sp:2s/*",          false],
            [2,     "ons",          ":Ip:1p/*",             false],
            [2,     "ez",           ":Ip:2p/*",             false],
            [4,     "èvent",        ":Ip:Sp:3p/*",          false],
            [2,     "ais",          ":Iq:1s:2s/*",          false],
            [2,     "ait",          ":Iq:3s/*",             false],
            [2,     "ions",         ":Iq:Sp:1p/*",          false],
            [2,     "iez",          ":Iq:Sp:2p/*",          false],
            [2,     "aient",        ":Iq:3p/*",             false],
            [2,     "ai",           ":Is:1s/*",             false],
            [2,     "as",           ":Is:2s/*",             false],
            [2,     "a",            ":Is:3s/*",             false],
            [2,     "âmes",         ":Is:1p/*",             false],
            [2,     "âtes",         ":Is:2p/*",             false],
            [2,     "èrent",        ":Is:3p!/*",            false],
            [4,     "èverai",       ":If:1s/*",             false],
            [4,     "èveras",       ":If:2s/*",             false],
            [4,     "èvera",        ":If:3s/*",             false],
            [4,     "èverons",      ":If:1p/*",             false],
            [4,     "èverez",       ":If:2p/*",             false],
            [4,     "èveront",      ":If:3p!/*",            false],
            [4,     "èverais",      ":K:1s:2s/*",           false],
            [4,     "èverait",      ":K:3s/*",              false],
            [4,     "èverions",     ":K:1p/*",              false],
            [4,     "èveriez",      ":K:2p/*",              false],
            [4,     "èveraient",    ":K:3p/*",              false],
            [2,     "asse",         ":Sq:1s/*",             false],
            [2,     "asses",        ":Sq:2s/*",             false],
            [2,     "ât",           ":Sq:3s/*",             false],
            [2,     "assions",      ":Sq:1p/*",             false],
            [2,     "assiez",       ":Sq:2p/*",             false],
            [2,     "assent",       ":Sq:3p/*",             false],
            [4,     "ève",          ":E:2s/*",              false],
            [2,     "ons",          ":E:1p/*",              false],
            [2,     "ez",           ":E:2p/*",              false]
        ],

        "evrer": [
            [2,     "er",           ":Y/*",                 false],
            [2,     "ant",          ":P/*",                 false],
            [5,     "èvre",         ":Ip:Sp:1s:3s/*",       false],
            [2,     "è",            ":Ip:1ś/R",             false],
            [5,     "èvres",        ":Ip:Sp:2s/*",          false],
            [2,     "ons",          ":Ip:1p/*",             false],
            [2,     "ez",           ":Ip:2p/*",             false],
            [5,     "èvrent",       ":Ip:Sp:3p/*",          false],
            [2,     "ais",          ":Iq:1s:2s/*",          false],
            [2,     "ait",          ":Iq:3s/*",             false],
            [2,     "ions",         ":Iq:Sp:1p/*",          false],
            [2,     "iez",          ":Iq:Sp:2p/*",          false],
            [2,     "aient",        ":Iq:3p/*",             false],
            [2,     "ai",           ":Is:1s/*",             false],
            [2,     "as",           ":Is:2s/*",             false],
            [2,     "a",            ":Is:3s/*",             false],
            [2,     "âmes",         ":Is:1p/*",             false],
            [2,     "âtes",         ":Is:2p/*",             false],
            [2,     "èrent",        ":Is:3p!/*",            false],
            [5,     "èvrerai",      ":If:1s/*",             false],
            [5,     "èvreras",      ":If:2s/*",             false],
            [5,     "èvrera",       ":If:3s/*",             false],
            [5,     "èvrerons",     ":If:1p/*",             false],
            [5,     "èvrerez",      ":If:2p/*",             false],
            [5,     "èvreront",     ":If:3p!/*",            false],
            [5,     "èvrerais",     ":K:1s:2s/*",           false],
            [5,     "èvrerait",     ":K:3s/*",              false],
            [5,     "èvrerions",    ":K:1p/*",              false],
            [5,     "èvreriez",     ":K:2p/*",              false],
            [5,     "èvreraient",   ":K:3p/*",              false],
            [2,     "asse",         ":Sq:1s/*",             false],
            [2,     "asses",        ":Sq:2s/*",             false],
            [2,     "ât",           ":Sq:3s/*",             false],
            [2,     "assions",      ":Sq:1p/*",             false],
            [2,     "assiez",       ":Sq:2p/*",             false],
            [2,     "assent",       ":Sq:3p/*",             false],
            [5,     "èvre",         ":E:2s/*",              false],
            [2,     "ons",          ":E:1p/*",              false],
            [2,     "ez",           ":E:2p/*",              false]
        ],

        // c
        // verbes en -ébrer, -écer, -écher, -écrer, -éder, -éger, -égler, -égner, -égrer, -éguer,
        //           -éler, -émer, -éner, -éper, -équer, -érer, -éser, -éter, -étrer, -évrer, -éyer
        // changement du é en è

        "écer": [
            [2,     "er",           ":Y/*",                 false],
            [4,     "éçant",        ":P/*",                 false],
            [4,     "èce",          ":Ip:Sp:1s:3s/*",       false],
            [2,     "è",            ":Ip:1ś/R",             false],
            [4,     "èces",         ":Ip:Sp:2s/*",          false],
            [4,     "éçons",        ":Ip:1p/*",             false],
            [2,     "ez",           ":Ip:2p/*",             false],
            [4,     "ècent",        ":Ip:Sp:3p/*",          false],
            [4,     "éçais",        ":Iq:1s:2s/*",          false],
            [4,     "éçait",        ":Iq:3s/*",             false],
            [2,     "ions",         ":Iq:Sp:1p/*",          false],
            [2,     "iez",          ":Iq:Sp:2p/*",          false],
            [4,     "éçaient",      ":Iq:3p/*",             false],
            [4,     "éçai",         ":Is:1s/*",             false],
            [4,     "éças",         ":Is:2s/*",             false],
            [4,     "éça",          ":Is:3s/*",             false],
            [4,     "éçâmes",       ":Is:1p/*",             false],
            [4,     "éçâtes",       ":Is:2p/*",             false],
            [2,     "èrent",        ":Is:3p!/*",            false],
            [2,     "erai",         ":If:1s/M",             false],
            [4,     "ècerai",       ":If:1s/R",             false],
            [2,     "eras",         ":If:2s/M",             false],
            [4,     "èceras",       ":If:2s/R",             false],
            [2,     "era",          ":If:3s/M",             false],
            [4,     "ècera",        ":If:3s/R",             false],
            [2,     "erons",        ":If:1p/M",             false],
            [4,     "ècerons",      ":If:1p/R",             false],
            [2,     "erez",         ":If:2p/M",             false],
            [4,     "ècerez",       ":If:2p/R",             false],
            [2,     "eront",        ":If:3p!/M",            false],
            [4,     "èceront",      ":If:3p!/R",            false],
            [2,     "erais",        ":K:1s:2s/M",           false],
            [4,     "ècerais",      ":K:1s:2s/R",           false],
            [2,     "erait",        ":K:3s/M",              false],
            [4,     "ècerait",      ":K:3s/R",              false],
            [2,     "erions",       ":K:1p/M",              false],
            [4,     "ècerions",     ":K:1p/R",              false],
            [2,     "eriez",        ":K:2p/M",              false],
            [4,     "èceriez",      ":K:2p/R",              false],
            [2,     "eraient",      ":K:3p/M",              false],
            [4,     "èceraient",    ":K:3p/R",              false],
            [4,     "éçasse",       ":Sq:1s/*",             false],
            [4,     "éçasses",      ":Sq:2s/*",             false],
            [4,     "éçât",         ":Sq:3s/*",             false],
            [4,     "éçassions",    ":Sq:1p/*",             false],
            [4,     "éçassiez",     ":Sq:2p/*",             false],
            [4,     "éçassent",     ":Sq:3p/*",             false],
            [4,     "èce",          ":E:2s/*",              false],
            [4,     "éçons",        ":E:1p/*",              false],
            [2,     "ez",           ":E:2p/*",              false]
        ],

        "éger": [
            [2,     "er",           ":Y/*",                 false],
            [4,     "égeant",       ":P/*",                 false],
            [4,     "ège",          ":Ip:Sp:1s:3s/*",       false],
            [2,     "è",            ":Ip:1ś/R",             false],
            [4,     "èges",         ":Ip:Sp:2s/*",          false],
            [4,     "égeons",       ":Ip:1p/*",             false],
            [2,     "ez",           ":Ip:2p/*",             false],
            [4,     "ègent",        ":Ip:Sp:3p/*",          false],
            [4,     "égeais",       ":Iq:1s:2s/*",          false],
            [4,     "égeait",       ":Iq:3s/*",             false],
            [2,     "ions",         ":Iq:Sp:1p/*",          false],
            [2,     "iez",          ":Iq:Sp:2p/*",          false],
            [4,     "égeaient",     ":Iq:3p/*",             false],
            [4,     "égeai",        ":Is:1s/*",             false],
            [4,     "égeas",        ":Is:2s/*",             false],
            [4,     "égea",         ":Is:3s/*",             false],
            [4,     "égeâmes",      ":Is:1p/*",             false],
            [4,     "égeâtes",      ":Is:2p/*",             false],
            [2,     "èrent",        ":Is:3p!/*",            false],
            [2,     "erai",         ":If:1s/M",             false],
            [4,     "ègerai",       ":If:1s/R",             false],
            [2,     "eras",         ":If:2s/M",             false],
            [4,     "ègeras",       ":If:2s/R",             false],
            [2,     "era",          ":If:3s/M",             false],
            [4,     "ègera",        ":If:3s/R",             false],
            [2,     "erons",        ":If:1p/M",             false],
            [4,     "ègerons",      ":If:1p/R",             false],
            [2,     "erez",         ":If:2p/M",             false],
            [4,     "ègerez",       ":If:2p/R",             false],
            [2,     "eront",        ":If:3p!/M",            false],
            [4,     "ègeront",      ":If:3p!/R",            false],
            [2,     "erais",        ":K:1s:2s/M",           false],
            [4,     "ègerais",      ":K:1s:2s/R",           false],
            [2,     "erait",        ":K:3s/M",              false],
            [4,     "ègerait",      ":K:3s/R",              false],
            [2,     "erions",       ":K:1p/M",              false],
            [4,     "ègerions",     ":K:1p/R",              false],
            [2,     "eriez",        ":K:2p/M",              false],
            [4,     "ègeriez",      ":K:2p/R",              false],
            [2,     "eraient",      ":K:3p/M",              false],
            [4,     "ègeraient",    ":K:3p/R",              false],
            [4,     "égeasse",      ":Sq:1s/*",             false],
            [4,     "égeasses",     ":Sq:2s/*",             false],
            [4,     "égeât",        ":Sq:3s/*",             false],
            [4,     "égeassions",   ":Sq:1p/*",             false],
            [4,     "égeassiez",    ":Sq:2p/*",             false],
            [4,     "égeassent",    ":Sq:3p/*",             false],
            [4,     "ège",          ":E:2s/*",              false],
            [4,     "égeons",       ":E:1p/*",              false],
            [2,     "ez",           ":E:2p/*",              false]
        ],

        "ébrer": [
            [2,     "er",           ":Y/*",                 false],
            [2,     "ant",          ":P/*",                 false],
            [5,     "èbre",         ":Ip:Sp:1s:3s/*",       false],
            [2,     "è",            ":Ip:1ś/R",             false],
            [5,     "èbres",        ":Ip:Sp:2s/*",          false],
            [2,     "ons",          ":Ip:1p/*",             false],
            [2,     "ez",           ":Ip:2p/*",             false],
            [5,     "èbrent",       ":Ip:Sp:3p/*",          false],
            [2,     "ais",          ":Iq:1s:2s/*",          false],
            [2,     "ait",          ":Iq:3s/*",             false],
            [2,     "ions",         ":Iq:Sp:1p/*",          false],
            [2,     "iez",          ":Iq:Sp:2p/*",          false],
            [2,     "aient",        ":Iq:3p/*",             false],
            [2,     "ai",           ":Is:1s/*",             false],
            [2,     "as",           ":Is:2s/*",             false],
            [2,     "a",            ":Is:3s/*",             false],
            [2,     "âmes",         ":Is:1p/*",             false],
            [2,     "âtes",         ":Is:2p/*",             false],
            [2,     "èrent",        ":Is:3p!/*",            false],
            [2,     "erai",         ":If:1s/M",             false],
            [5,     "èbrerai",      ":If:1s/R",             false],
            [2,     "eras",         ":If:2s/M",             false],
            [5,     "èbreras",      ":If:2s/R",             false],
            [2,     "era",          ":If:3s/M",             false],
            [5,     "èbrera",       ":If:3s/R",             false],
            [2,     "erons",        ":If:1p/M",             false],
            [5,     "èbrerons",     ":If:1p/R",             false],
            [2,     "erez",         ":If:2p/M",             false],
            [5,     "èbrerez",      ":If:2p/R",             false],
            [2,     "eront",        ":If:3p!/M",            false],
            [5,     "èbreront",     ":If:3p!/R",            false],
            [2,     "erais",        ":K:1s:2s/M",           false],
            [5,     "èbrerais",     ":K:1s:2s/R",           false],
            [2,     "erait",        ":K:3s/M",              false],
            [5,     "èbrerait",     ":K:3s/R",              false],
            [2,     "erions",       ":K:1p/M",              false],
            [5,     "èbrerions",    ":K:1p/R",              false],
            [2,     "eriez",        ":K:2p/M",              false],
            [5,     "èbreriez",     ":K:2p/R",              false],
            [2,     "eraient",      ":K:3p/M",              false],
            [5,     "èbreraient",   ":K:3p/R",              false],
            [2,     "asse",         ":Sq:1s/*",             false],
            [2,     "asses",        ":Sq:2s/*",             false],
            [2,     "ât",           ":Sq:3s/*",             false],
            [2,     "assions",      ":Sq:1p/*",             false],
            [2,     "assiez",       ":Sq:2p/*",             false],
            [2,     "assent",       ":Sq:3p/*",             false],
            [5,     "èbre",         ":E:2s/*",              false],
            [2,     "ons",          ":E:1p/*",              false],
            [2,     "ez",           ":E:2p/*",              false]
        ],

        "écher": [
            [2,     "er",           ":Y/*",                 false],
            [2,     "ant",          ":P/*",                 false],
            [5,     "èche",         ":Ip:Sp:1s:3s/*",       false],
            [2,     "è",            ":Ip:1ś/R",             false],
            [5,     "èches",        ":Ip:Sp:2s/*",          false],
            [2,     "ons",          ":Ip:1p/*",             false],
            [2,     "ez",           ":Ip:2p/*",             false],
            [5,     "èchent",       ":Ip:Sp:3p/*",          false],
            [2,     "ais",          ":Iq:1s:2s/*",          false],
            [2,     "ait",          ":Iq:3s/*",             false],
            [2,     "ions",         ":Iq:Sp:1p/*",          false],
            [2,     "iez",          ":Iq:Sp:2p/*",          false],
            [2,     "aient",        ":Iq:3p/*",             false],
            [2,     "ai",           ":Is:1s/*",             false],
            [2,     "as",           ":Is:2s/*",             false],
            [2,     "a",            ":Is:3s/*",             false],
            [2,     "âmes",         ":Is:1p/*",             false],
            [2,     "âtes",         ":Is:2p/*",             false],
            [2,     "èrent",        ":Is:3p!/*",            false],
            [2,     "erai",         ":If:1s/M",             false],
            [5,     "ècherai",      ":If:1s/R",             false],
            [2,     "eras",         ":If:2s/M",             false],
            [5,     "ècheras",      ":If:2s/R",             false],
            [2,     "era",          ":If:3s/M",             false],
            [5,     "èchera",       ":If:3s/R",             false],
            [2,     "erons",        ":If:1p/M",             false],
            [5,     "ècherons",     ":If:1p/R",             false],
            [2,     "erez",         ":If:2p/M",             false],
            [5,     "ècherez",      ":If:2p/R",             false],
            [2,     "eront",        ":If:3p!/M",            false],
            [5,     "ècheront",     ":If:3p!/R",            false],
            [2,     "erais",        ":K:1s:2s/M",           false],
            [5,     "ècherais",     ":K:1s:2s/R",           false],
            [2,     "erait",        ":K:3s/M",              false],
            [5,     "ècherait",     ":K:3s/R",              false],
            [2,     "erions",       ":K:1p/M",              false],
            [5,     "ècherions",    ":K:1p/R",              false],
            [2,     "eriez",        ":K:2p/M",              false],
            [5,     "ècheriez",     ":K:2p/R",              false],
            [2,     "eraient",      ":K:3p/M",              false],
            [5,     "ècheraient",   ":K:3p/R",              false],
            [2,     "asse",         ":Sq:1s/*",             false],
            [2,     "asses",        ":Sq:2s/*",             false],
            [2,     "ât",           ":Sq:3s/*",             false],
            [2,     "assions",      ":Sq:1p/*",             false],
            [2,     "assiez",       ":Sq:2p/*",             false],
            [2,     "assent",       ":Sq:3p/*",             false],
            [5,     "èche",         ":E:2s/*",              false],
            [2,     "ons",          ":E:1p/*",              false],
            [2,     "ez",           ":E:2p/*",              false]
        ],

        "écrer": [
            [2,     "er",           ":Y/*",                 false],
            [2,     "ant",          ":P/*",                 false],
            [5,     "ècre",         ":Ip:Sp:1s:3s/*",       false],
            [2,     "è",            ":Ip:1ś/R",             false],
            [5,     "ècres",        ":Ip:Sp:2s/*",          false],
            [2,     "ons",          ":Ip:1p/*",             false],
            [2,     "ez",           ":Ip:2p/*",             false],
            [5,     "ècrent",       ":Ip:Sp:3p/*",          false],
            [2,     "ais",          ":Iq:1s:2s/*",          false],
            [2,     "ait",          ":Iq:3s/*",             false],
            [2,     "ions",         ":Iq:Sp:1p/*",          false],
            [2,     "iez",          ":Iq:Sp:2p/*",          false],
            [2,     "aient",        ":Iq:3p/*",             false],
            [2,     "ai",           ":Is:1s/*",             false],
            [2,     "as",           ":Is:2s/*",             false],
            [2,     "a",            ":Is:3s/*",             false],
            [2,     "âmes",         ":Is:1p/*",             false],
            [2,     "âtes",         ":Is:2p/*",             false],
            [2,     "èrent",        ":Is:3p!/*",            false],
            [2,     "erai",         ":If:1s/M",             false],
            [5,     "ècrerai",      ":If:1s/R",             false],
            [2,     "eras",         ":If:2s/M",             false],
            [5,     "ècreras",      ":If:2s/R",             false],
            [2,     "era",          ":If:3s/M",             false],
            [5,     "ècrera",       ":If:3s/R",             false],
            [2,     "erons",        ":If:1p/M",             false],
            [5,     "ècrerons",     ":If:1p/R",             false],
            [2,     "erez",         ":If:2p/M",             false],
            [5,     "ècrerez",      ":If:2p/R",             false],
            [2,     "eront",        ":If:3p!/M",            false],
            [5,     "ècreront",     ":If:3p!/R",            false],
            [2,     "erais",        ":K:1s:2s/M",           false],
            [5,     "ècrerais",     ":K:1s:2s/R",           false],
            [2,     "erait",        ":K:3s/M",              false],
            [5,     "ècrerait",     ":K:3s/R",              false],
            [2,     "erions",       ":K:1p/M",              false],
            [5,     "ècrerions",    ":K:1p/R",              false],
            [2,     "eriez",        ":K:2p/M",              false],
            [5,     "ècreriez",     ":K:2p/R",              false],
            [2,     "eraient",      ":K:3p/M",              false],
            [5,     "ècreraient",   ":K:3p/R",              false],
            [2,     "asse",         ":Sq:1s/*",             false],
            [2,     "asses",        ":Sq:2s/*",             false],
            [2,     "ât",           ":Sq:3s/*",             false],
            [2,     "assions",      ":Sq:1p/*",             false],
            [2,     "assiez",       ":Sq:2p/*",             false],
            [2,     "assent",       ":Sq:3p/*",             false],
            [5,     "ècre",         ":E:2s/*",              false],
            [2,     "ons",          ":E:1p/*",              false],
            [2,     "ez",           ":E:2p/*",              false]
        ],

        "éder": [
            [2,     "er",           ":Y/*",                 false],
            [2,     "ant",          ":P/*",                 false],
            [4,     "ède",          ":Ip:Sp:1s:3s/*",       false],
            [2,     "è",            ":Ip:1ś/R",             false],
            [4,     "èdes",         ":Ip:Sp:2s/*",          false],
            [2,     "ons",          ":Ip:1p/*",             false],
            [2,     "ez",           ":Ip:2p/*",             false],
            [4,     "èdent",        ":Ip:Sp:3p/*",          false],
            [2,     "ais",          ":Iq:1s:2s/*",          false],
            [2,     "ait",          ":Iq:3s/*",             false],
            [2,     "ions",         ":Iq:Sp:1p/*",          false],
            [2,     "iez",          ":Iq:Sp:2p/*",          false],
            [2,     "aient",        ":Iq:3p/*",             false],
            [2,     "ai",           ":Is:1s/*",             false],
            [2,     "as",           ":Is:2s/*",             false],
            [2,     "a",            ":Is:3s/*",             false],
            [2,     "âmes",         ":Is:1p/*",             false],
            [2,     "âtes",         ":Is:2p/*",             false],
            [2,     "èrent",        ":Is:3p!/*",            false],
            [2,     "erai",         ":If:1s/M",             false],
            [4,     "èderai",       ":If:1s/R",             false],
            [2,     "eras",         ":If:2s/M",             false],
            [4,     "èderas",       ":If:2s/R",             false],
            [2,     "era",          ":If:3s/M",             false],
            [4,     "èdera",        ":If:3s/R",             false],
            [2,     "erons",        ":If:1p/M",             false],
            [4,     "èderons",      ":If:1p/R",             false],
            [2,     "erez",         ":If:2p/M",             false],
            [4,     "èderez",       ":If:2p/R",             false],
            [2,     "eront",        ":If:3p!/M",            false],
            [4,     "èderont",      ":If:3p!/R",            false],
            [2,     "erais",        ":K:1s:2s/M",           false],
            [4,     "èderais",      ":K:1s:2s/R",           false],
            [2,     "erait",        ":K:3s/M",              false],
            [4,     "èderait",      ":K:3s/R",              false],
            [2,     "erions",       ":K:1p/M",              false],
            [4,     "èderions",     ":K:1p/R",              false],
            [2,     "eriez",        ":K:2p/M",              false],
            [4,     "èderiez",      ":K:2p/R",              false],
            [2,     "eraient",      ":K:3p/M",              false],
            [4,     "èderaient",    ":K:3p/R",              false],
            [2,     "asse",         ":Sq:1s/*",             false],
            [2,     "asses",        ":Sq:2s/*",             false],
            [2,     "ât",           ":Sq:3s/*",             false],
            [2,     "assions",      ":Sq:1p/*",             false],
            [2,     "assiez",       ":Sq:2p/*",             false],
            [2,     "assent",       ":Sq:3p/*",             false],
            [4,     "ède",          ":E:2s/*",              false],
            [2,     "ons",          ":E:1p/*",              false],
            [2,     "ez",           ":E:2p/*",              false]
        ],

        "égler": [
            [2,     "er",           ":Y/*",                 false],
            [2,     "ant",          ":P/*",                 false],
            [5,     "ègle",         ":Ip:Sp:1s:3s/*",       false],
            [2,     "è",            ":Ip:1ś/R",             false],
            [5,     "ègles",        ":Ip:Sp:2s/*",          false],
            [2,     "ons",          ":Ip:1p/*",             false],
            [2,     "ez",           ":Ip:2p/*",             false],
            [5,     "èglent",       ":Ip:Sp:3p/*",          false],
            [2,     "ais",          ":Iq:1s:2s/*",          false],
            [2,     "ait",          ":Iq:3s/*",             false],
            [2,     "ions",         ":Iq:Sp:1p/*",          false],
            [2,     "iez",          ":Iq:Sp:2p/*",          false],
            [2,     "aient",        ":Iq:3p/*",             false],
            [2,     "ai",           ":Is:1s/*",             false],
            [2,     "as",           ":Is:2s/*",             false],
            [2,     "a",            ":Is:3s/*",             false],
            [2,     "âmes",         ":Is:1p/*",             false],
            [2,     "âtes",         ":Is:2p/*",             false],
            [2,     "èrent",        ":Is:3p!/*",            false],
            [2,     "erai",         ":If:1s/M",             false],
            [5,     "èglerai",      ":If:1s/R",             false],
            [2,     "eras",         ":If:2s/M",             false],
            [5,     "ègleras",      ":If:2s/R",             false],
            [2,     "era",          ":If:3s/M",             false],
            [5,     "èglera",       ":If:3s/R",             false],
            [2,     "erons",        ":If:1p/M",             false],
            [5,     "èglerons",     ":If:1p/R",             false],
            [2,     "erez",         ":If:2p/M",             false],
            [5,     "èglerez",      ":If:2p/R",             false],
            [2,     "eront",        ":If:3p!/M",            false],
            [5,     "ègleront",     ":If:3p!/R",            false],
            [2,     "erais",        ":K:1s:2s/M",           false],
            [5,     "èglerais",     ":K:1s:2s/R",           false],
            [2,     "erait",        ":K:3s/M",              false],
            [5,     "èglerait",     ":K:3s/R",              false],
            [2,     "erions",       ":K:1p/M",              false],
            [5,     "èglerions",    ":K:1p/R",              false],
            [2,     "eriez",        ":K:2p/M",              false],
            [5,     "ègleriez",     ":K:2p/R",              false],
            [2,     "eraient",      ":K:3p/M",              false],
            [5,     "ègleraient",   ":K:3p/R",              false],
            [2,     "asse",         ":Sq:1s/*",             false],
            [2,     "asses",        ":Sq:2s/*",             false],
            [2,     "ât",           ":Sq:3s/*",             false],
            [2,     "assions",      ":Sq:1p/*",             false],
            [2,     "assiez",       ":Sq:2p/*",             false],
            [2,     "assent",       ":Sq:3p/*",             false],
            [5,     "ègle",         ":E:2s/*",              false],
            [2,     "ons",          ":E:1p/*",              false],
            [2,     "ez",           ":E:2p/*",              false]
        ],

        "égner": [
            [2,     "er",           ":Y/*",                 false],
            [2,     "ant",          ":P/*",                 false],
            [5,     "ègne",         ":Ip:Sp:1s:3s/*",       false],
            [2,     "è",            ":Ip:1ś/R",             false],
            [5,     "ègnes",        ":Ip:Sp:2s/*",          false],
            [2,     "ons",          ":Ip:1p/*",             false],
            [2,     "ez",           ":Ip:2p/*",             false],
            [5,     "ègnent",       ":Ip:Sp:3p/*",          false],
            [2,     "ais",          ":Iq:1s:2s/*",          false],
            [2,     "ait",          ":Iq:3s/*",             false],
            [2,     "ions",         ":Iq:Sp:1p/*",          false],
            [2,     "iez",          ":Iq:Sp:2p/*",          false],
            [2,     "aient",        ":Iq:3p/*",             false],
            [2,     "ai",           ":Is:1s/*",             false],
            [2,     "as",           ":Is:2s/*",             false],
            [2,     "a",            ":Is:3s/*",             false],
            [2,     "âmes",         ":Is:1p/*",             false],
            [2,     "âtes",         ":Is:2p/*",             false],
            [2,     "èrent",        ":Is:3p!/*",            false],
            [2,     "erai",         ":If:1s/M",             false],
            [5,     "ègnerai",      ":If:1s/R",             false],
            [2,     "eras",         ":If:2s/M",             false],
            [5,     "ègneras",      ":If:2s/R",             false],
            [2,     "era",          ":If:3s/M",             false],
            [5,     "ègnera",       ":If:3s/R",             false],
            [2,     "erons",        ":If:1p/M",             false],
            [5,     "ègnerons",     ":If:1p/R",             false],
            [2,     "erez",         ":If:2p/M",             false],
            [5,     "ègnerez",      ":If:2p/R",             false],
            [2,     "eront",        ":If:3p!/M",            false],
            [5,     "ègneront",     ":If:3p!/R",            false],
            [2,     "erais",        ":K:1s:2s/M",           false],
            [5,     "ègnerais",     ":K:1s:2s/R",           false],
            [2,     "erait",        ":K:3s/M",              false],
            [5,     "ègnerait",     ":K:3s/R",              false],
            [2,     "erions",       ":K:1p/M",              false],
            [5,     "ègnerions",    ":K:1p/R",              false],
            [2,     "eriez",        ":K:2p/M",              false],
            [5,     "ègneriez",     ":K:2p/R",              false],
            [2,     "eraient",      ":K:3p/M",              false],
            [5,     "ègneraient",   ":K:3p/R",              false],
            [2,     "asse",         ":Sq:1s/*",             false],
            [2,     "asses",        ":Sq:2s/*",             false],
            [2,     "ât",           ":Sq:3s/*",             false],
            [2,     "assions",      ":Sq:1p/*",             false],
            [2,     "assiez",       ":Sq:2p/*",             false],
            [2,     "assent",       ":Sq:3p/*",             false],
            [5,     "ègne",         ":E:2s/*",              false],
            [2,     "ons",          ":E:1p/*",              false],
            [2,     "ez",           ":E:2p/*",              false]
        ],

        "égrer": [
            [2,     "er",           ":Y/*",                 false],
            [2,     "ant",          ":P/*",                 false],
            [5,     "ègre",         ":Ip:Sp:1s:3s/*",       false],
            [2,     "è",            ":Ip:1ś/R",             false],
            [5,     "ègres",        ":Ip:Sp:2s/*",          false],
            [2,     "ons",          ":Ip:1p/*",             false],
            [2,     "ez",           ":Ip:2p/*",             false],
            [5,     "ègrent",       ":Ip:Sp:3p/*",          false],
            [2,     "ais",          ":Iq:1s:2s/*",          false],
            [2,     "ait",          ":Iq:3s/*",             false],
            [2,     "ions",         ":Iq:Sp:1p/*",          false],
            [2,     "iez",          ":Iq:Sp:2p/*",          false],
            [2,     "aient",        ":Iq:3p/*",             false],
            [2,     "ai",           ":Is:1s/*",             false],
            [2,     "as",           ":Is:2s/*",             false],
            [2,     "a",            ":Is:3s/*",             false],
            [2,     "âmes",         ":Is:1p/*",             false],
            [2,     "âtes",         ":Is:2p/*",             false],
            [2,     "èrent",        ":Is:3p!/*",            false],
            [2,     "erai",         ":If:1s/M",             false],
            [5,     "ègrerai",      ":If:1s/R",             false],
            [2,     "eras",         ":If:2s/M",             false],
            [5,     "ègreras",      ":If:2s/R",             false],
            [2,     "era",          ":If:3s/M",             false],
            [5,     "ègrera",       ":If:3s/R",             false],
            [2,     "erons",        ":If:1p/M",             false],
            [5,     "ègrerons",     ":If:1p/R",             false],
            [2,     "erez",         ":If:2p/M",             false],
            [5,     "ègrerez",      ":If:2p/R",             false],
            [2,     "eront",        ":If:3p!/M",            false],
            [5,     "ègreront",     ":If:3p!/R",            false],
            [2,     "erais",        ":K:1s:2s/M",           false],
            [5,     "ègrerais",     ":K:1s:2s/R",           false],
            [2,     "erait",        ":K:3s/M",              false],
            [5,     "ègrerait",     ":K:3s/R",              false],
            [2,     "erions",       ":K:1p/M",              false],
            [5,     "ègrerions",    ":K:1p/R",              false],
            [2,     "eriez",        ":K:2p/M",              false],
            [5,     "ègreriez",     ":K:2p/R",              false],
            [2,     "eraient",      ":K:3p/M",              false],
            [5,     "ègreraient",   ":K:3p/R",              false],
            [2,     "asse",         ":Sq:1s/*",             false],
            [2,     "asses",        ":Sq:2s/*",             false],
            [2,     "ât",           ":Sq:3s/*",             false],
            [2,     "assions",      ":Sq:1p/*",             false],
            [2,     "assiez",       ":Sq:2p/*",             false],
            [2,     "assent",       ":Sq:3p/*",             false],
            [5,     "ègre",         ":E:2s/*",              false],
            [2,     "ons",          ":E:1p/*",              false],
            [2,     "ez",           ":E:2p/*",              false]
        ],

        "éguer": [
            [2,     "er",           ":Y/*",                 false],
            [2,     "ant",          ":P/*",                 false],
            [5,     "ègue",         ":Ip:Sp:1s:3s/*",       false],
            [2,     "è",            ":Ip:1ś/R",             false],
            [5,     "ègues",        ":Ip:Sp:2s/*",          false],
            [2,     "ons",          ":Ip:1p/*",             false],
            [2,     "ez",           ":Ip:2p/*",             false],
            [5,     "èguent",       ":Ip:Sp:3p/*",          false],
            [2,     "ais",          ":Iq:1s:2s/*",          false],
            [2,     "ait",          ":Iq:3s/*",             false],
            [2,     "ions",         ":Iq:Sp:1p/*",          false],
            [2,     "iez",          ":Iq:Sp:2p/*",          false],
            [2,     "aient",        ":Iq:3p/*",             false],
            [2,     "ai",           ":Is:1s/*",             false],
            [2,     "as",           ":Is:2s/*",             false],
            [2,     "a",            ":Is:3s/*",             false],
            [2,     "âmes",         ":Is:1p/*",             false],
            [2,     "âtes",         ":Is:2p/*",             false],
            [2,     "èrent",        ":Is:3p!/*",            false],
            [2,     "erai",         ":If:1s/M",             false],
            [5,     "èguerai",      ":If:1s/R",             false],
            [2,     "eras",         ":If:2s/M",             false],
            [5,     "ègueras",      ":If:2s/R",             false],
            [2,     "era",          ":If:3s/M",             false],
            [5,     "èguera",       ":If:3s/R",             false],
            [2,     "erons",        ":If:1p/M",             false],
            [5,     "èguerons",     ":If:1p/R",             false],
            [2,     "erez",         ":If:2p/M",             false],
            [5,     "èguerez",      ":If:2p/R",             false],
            [2,     "eront",        ":If:3p!/M",            false],
            [5,     "ègueront",     ":If:3p!/R",            false],
            [2,     "erais",        ":K:1s:2s/M",           false],
            [5,     "èguerais",     ":K:1s:2s/R",           false],
            [2,     "erait",        ":K:3s/M",              false],
            [5,     "èguerait",     ":K:3s/R",              false],
            [2,     "erions",       ":K:1p/M",              false],
            [5,     "èguerions",    ":K:1p/R",              false],
            [2,     "eriez",        ":K:2p/M",              false],
            [5,     "ègueriez",     ":K:2p/R",              false],
            [2,     "eraient",      ":K:3p/M",              false],
            [5,     "ègueraient",   ":K:3p/R",              false],
            [2,     "asse",         ":Sq:1s/*",             false],
            [2,     "asses",        ":Sq:2s/*",             false],
            [2,     "ât",           ":Sq:3s/*",             false],
            [2,     "assions",      ":Sq:1p/*",             false],
            [2,     "assiez",       ":Sq:2p/*",             false],
            [2,     "assent",       ":Sq:3p/*",             false],
            [5,     "ègue",         ":E:2s/*",              false],
            [2,     "ons",          ":E:1p/*",              false],
            [2,     "ez",           ":E:2p/*",              false]
        ],

        "éler": [
            [2,     "er",           ":Y/*",                 false],
            [2,     "ant",          ":P/*",                 false],
            [4,     "èle",          ":Ip:Sp:1s:3s/*",       false],
            [2,     "è",            ":Ip:1ś/R",             false],
            [4,     "èles",         ":Ip:Sp:2s/*",          false],
            [2,     "ons",          ":Ip:1p/*",             false],
            [2,     "ez",           ":Ip:2p/*",             false],
            [4,     "èlent",        ":Ip:Sp:3p/*",          false],
            [2,     "ais",          ":Iq:1s:2s/*",          false],
            [2,     "ait",          ":Iq:3s/*",             false],
            [2,     "ions",         ":Iq:Sp:1p/*",          false],
            [2,     "iez",          ":Iq:Sp:2p/*",          false],
            [2,     "aient",        ":Iq:3p/*",             false],
            [2,     "ai",           ":Is:1s/*",             false],
            [2,     "as",           ":Is:2s/*",             false],
            [2,     "a",            ":Is:3s/*",             false],
            [2,     "âmes",         ":Is:1p/*",             false],
            [2,     "âtes",         ":Is:2p/*",             false],
            [2,     "èrent",        ":Is:3p!/*",            false],
            [2,     "erai",         ":If:1s/M",             false],
            [4,     "èlerai",       ":If:1s/R",             false],
            [2,     "eras",         ":If:2s/M",             false],
            [4,     "èleras",       ":If:2s/R",             false],
            [2,     "era",          ":If:3s/M",             false],
            [4,     "èlera",        ":If:3s/R",             false],
            [2,     "erons",        ":If:1p/M",             false],
            [4,     "èlerons",      ":If:1p/R",             false],
            [2,     "erez",         ":If:2p/M",             false],
            [4,     "èlerez",       ":If:2p/R",             false],
            [2,     "eront",        ":If:3p!/M",            false],
            [4,     "èleront",      ":If:3p!/R",            false],
            [2,     "erais",        ":K:1s:2s/M",           false],
            [4,     "èlerais",      ":K:1s:2s/R",           false],
            [2,     "erait",        ":K:3s/M",              false],
            [4,     "èlerait",      ":K:3s/R",              false],
            [2,     "erions",       ":K:1p/M",              false],
            [4,     "èlerions",     ":K:1p/R",              false],
            [2,     "eriez",        ":K:2p/M",              false],
            [4,     "èleriez",      ":K:2p/R",              false],
            [2,     "eraient",      ":K:3p/M",              false],
            [4,     "èleraient",    ":K:3p/R",              false],
            [2,     "asse",         ":Sq:1s/*",             false],
            [2,     "asses",        ":Sq:2s/*",             false],
            [2,     "ât",           ":Sq:3s/*",             false],
            [2,     "assions",      ":Sq:1p/*",             false],
            [2,     "assiez",       ":Sq:2p/*",             false],
            [2,     "assent",       ":Sq:3p/*",             false],
            [4,     "èle",          ":E:2s/*",              false],
            [2,     "ons",          ":E:1p/*",              false],
            [2,     "ez",           ":E:2p/*",              false]
        ],

        "émer": [
            [2,     "er",           ":Y/*",                 false],
            [2,     "ant",          ":P/*",                 false],
            [4,     "ème",          ":Ip:Sp:1s:3s/*",       false],
            [2,     "è",            ":Ip:1ś/R",             false],
            [4,     "èmes",         ":Ip:Sp:2s/*",          false],
            [2,     "ons",          ":Ip:1p/*",             false],
            [2,     "ez",           ":Ip:2p/*",             false],
            [4,     "èment",        ":Ip:Sp:3p/*",          false],
            [2,     "ais",          ":Iq:1s:2s/*",          false],
            [2,     "ait",          ":Iq:3s/*",             false],
            [2,     "ions",         ":Iq:Sp:1p/*",          false],
            [2,     "iez",          ":Iq:Sp:2p/*",          false],
            [2,     "aient",        ":Iq:3p/*",             false],
            [2,     "ai",           ":Is:1s/*",             false],
            [2,     "as",           ":Is:2s/*",             false],
            [2,     "a",            ":Is:3s/*",             false],
            [2,     "âmes",         ":Is:1p/*",             false],
            [2,     "âtes",         ":Is:2p/*",             false],
            [2,     "èrent",        ":Is:3p!/*",            false],
            [2,     "erai",         ":If:1s/M",             false],
            [4,     "èmerai",       ":If:1s/R",             false],
            [2,     "eras",         ":If:2s/M",             false],
            [4,     "èmeras",       ":If:2s/R",             false],
            [2,     "era",          ":If:3s/M",             false],
            [4,     "èmera",        ":If:3s/R",             false],
            [2,     "erons",        ":If:1p/M",             false],
            [4,     "èmerons",      ":If:1p/R",             false],
            [2,     "erez",         ":If:2p/M",             false],
            [4,     "èmerez",       ":If:2p/R",             false],
            [2,     "eront",        ":If:3p!/M",            false],
            [4,     "èmeront",      ":If:3p!/R",            false],
            [2,     "erais",        ":K:1s:2s/M",           false],
            [4,     "èmerais",      ":K:1s:2s/R",           false],
            [2,     "erait",        ":K:3s/M",              false],
            [4,     "èmerait",      ":K:3s/R",              false],
            [2,     "erions",       ":K:1p/M",              false],
            [4,     "èmerions",     ":K:1p/R",              false],
            [2,     "eriez",        ":K:2p/M",              false],
            [4,     "èmeriez",      ":K:2p/R",              false],
            [2,     "eraient",      ":K:3p/M",              false],
            [4,     "èmeraient",    ":K:3p/R",              false],
            [2,     "asse",         ":Sq:1s/*",             false],
            [2,     "asses",        ":Sq:2s/*",             false],
            [2,     "ât",           ":Sq:3s/*",             false],
            [2,     "assions",      ":Sq:1p/*",             false],
            [2,     "assiez",       ":Sq:2p/*",             false],
            [2,     "assent",       ":Sq:3p/*",             false],
            [4,     "ème",          ":E:2s/*",              false],
            [2,     "ons",          ":E:1p/*",              false],
            [2,     "ez",           ":E:2p/*",              false]
        ],

        "éner": [
            [2,     "er",           ":Y/*",                 false],
            [2,     "ant",          ":P/*",                 false],
            [4,     "ène",          ":Ip:Sp:1s:3s/*",       false],
            [2,     "è",            ":Ip:1ś/R",             false],
            [4,     "ènes",         ":Ip:Sp:2s/*",          false],
            [2,     "ons",          ":Ip:1p/*",             false],
            [2,     "ez",           ":Ip:2p/*",             false],
            [4,     "ènent",        ":Ip:Sp:3p/*",          false],
            [2,     "ais",          ":Iq:1s:2s/*",          false],
            [2,     "ait",          ":Iq:3s/*",             false],
            [2,     "ions",         ":Iq:Sp:1p/*",          false],
            [2,     "iez",          ":Iq:Sp:2p/*",          false],
            [2,     "aient",        ":Iq:3p/*",             false],
            [2,     "ai",           ":Is:1s/*",             false],
            [2,     "as",           ":Is:2s/*",             false],
            [2,     "a",            ":Is:3s/*",             false],
            [2,     "âmes",         ":Is:1p/*",             false],
            [2,     "âtes",         ":Is:2p/*",             false],
            [2,     "èrent",        ":Is:3p!/*",            false],
            [2,     "erai",         ":If:1s/M",             false],
            [4,     "ènerai",       ":If:1s/R",             false],
            [2,     "eras",         ":If:2s/M",             false],
            [4,     "èneras",       ":If:2s/R",             false],
            [2,     "era",          ":If:3s/M",             false],
            [4,     "ènera",        ":If:3s/R",             false],
            [2,     "erons",        ":If:1p/M",             false],
            [4,     "ènerons",      ":If:1p/R",             false],
            [2,     "erez",         ":If:2p/M",             false],
            [4,     "ènerez",       ":If:2p/R",             false],
            [2,     "eront",        ":If:3p!/M",            false],
            [4,     "èneront",      ":If:3p!/R",            false],
            [2,     "erais",        ":K:1s:2s/M",           false],
            [4,     "ènerais",      ":K:1s:2s/R",           false],
            [2,     "erait",        ":K:3s/M",              false],
            [4,     "ènerait",      ":K:3s/R",              false],
            [2,     "erions",       ":K:1p/M",              false],
            [4,     "ènerions",     ":K:1p/R",              false],
            [2,     "eriez",        ":K:2p/M",              false],
            [4,     "èneriez",      ":K:2p/R",              false],
            [2,     "eraient",      ":K:3p/M",              false],
            [4,     "èneraient",    ":K:3p/R",              false],
            [2,     "asse",         ":Sq:1s/*",             false],
            [2,     "asses",        ":Sq:2s/*",             false],
            [2,     "ât",           ":Sq:3s/*",             false],
            [2,     "assions",      ":Sq:1p/*",             false],
            [2,     "assiez",       ":Sq:2p/*",             false],
            [2,     "assent",       ":Sq:3p/*",             false],
            [4,     "ène",          ":E:2s/*",              false],
            [2,     "ons",          ":E:1p/*",              false],
            [2,     "ez",           ":E:2p/*",              false]
        ],

        "éper": [
            [2,     "er",           ":Y/*",                 false],
            [2,     "ant",          ":P/*",                 false],
            [4,     "èpe",          ":Ip:Sp:1s:3s/*",       false],
            [2,     "è",            ":Ip:1ś/R",             false],
            [4,     "èpes",         ":Ip:Sp:2s/*",          false],
            [2,     "ons",          ":Ip:1p/*",             false],
            [2,     "ez",           ":Ip:2p/*",             false],
            [4,     "èpent",        ":Ip:Sp:3p/*",          false],
            [2,     "ais",          ":Iq:1s:2s/*",          false],
            [2,     "ait",          ":Iq:3s/*",             false],
            [2,     "ions",         ":Iq:Sp:1p/*",          false],
            [2,     "iez",          ":Iq:Sp:2p/*",          false],
            [2,     "aient",        ":Iq:3p/*",             false],
            [2,     "ai",           ":Is:1s/*",             false],
            [2,     "as",           ":Is:2s/*",             false],
            [2,     "a",            ":Is:3s/*",             false],
            [2,     "âmes",         ":Is:1p/*",             false],
            [2,     "âtes",         ":Is:2p/*",             false],
            [2,     "èrent",        ":Is:3p!/*",            false],
            [2,     "erai",         ":If:1s/M",             false],
            [4,     "èperai",       ":If:1s/R",             false],
            [2,     "eras",         ":If:2s/M",             false],
            [4,     "èperas",       ":If:2s/R",             false],
            [2,     "era",          ":If:3s/M",             false],
            [4,     "èpera",        ":If:3s/R",             false],
            [2,     "erons",        ":If:1p/M",             false],
            [4,     "èperons",      ":If:1p/R",             false],
            [2,     "erez",         ":If:2p/M",             false],
            [4,     "èperez",       ":If:2p/R",             false],
            [2,     "eront",        ":If:3p!/M",            false],
            [4,     "èperont",      ":If:3p!/R",            false],
            [2,     "erais",        ":K:1s:2s/M",           false],
            [4,     "èperais",      ":K:1s:2s/R",           false],
            [2,     "erait",        ":K:3s/M",              false],
            [4,     "èperait",      ":K:3s/R",              false],
            [2,     "erions",       ":K:1p/M",              false],
            [4,     "èperions",     ":K:1p/R",              false],
            [2,     "eriez",        ":K:2p/M",              false],
            [4,     "èperiez",      ":K:2p/R",              false],
            [2,     "eraient",      ":K:3p/M",              false],
            [4,     "èperaient",    ":K:3p/R",              false],
            [2,     "asse",         ":Sq:1s/*",             false],
            [2,     "asses",        ":Sq:2s/*",             false],
            [2,     "ât",           ":Sq:3s/*",             false],
            [2,     "assions",      ":Sq:1p/*",             false],
            [2,     "assiez",       ":Sq:2p/*",             false],
            [2,     "assent",       ":Sq:3p/*",             false],
            [4,     "èpe",          ":E:2s/*",              false],
            [2,     "ons",          ":E:1p/*",              false],
            [2,     "ez",           ":E:2p/*",              false]
        ],

        "équer": [
            [2,     "er",           ":Y/*",                 false],
            [2,     "ant",          ":P/*",                 false],
            [5,     "èque",         ":Ip:Sp:1s:3s/*",       false],
            [2,     "è",            ":Ip:1ś/R",             false],
            [5,     "èques",        ":Ip:Sp:2s/*",          false],
            [2,     "ons",          ":Ip:1p/*",             false],
            [2,     "ez",           ":Ip:2p/*",             false],
            [5,     "èquent",       ":Ip:Sp:3p/*",          false],
            [2,     "ais",          ":Iq:1s:2s/*",          false],
            [2,     "ait",          ":Iq:3s/*",             false],
            [2,     "ions",         ":Iq:Sp:1p/*",          false],
            [2,     "iez",          ":Iq:Sp:2p/*",          false],
            [2,     "aient",        ":Iq:3p/*",             false],
            [2,     "ai",           ":Is:1s/*",             false],
            [2,     "as",           ":Is:2s/*",             false],
            [2,     "a",            ":Is:3s/*",             false],
            [2,     "âmes",         ":Is:1p/*",             false],
            [2,     "âtes",         ":Is:2p/*",             false],
            [2,     "èrent",        ":Is:3p!/*",            false],
            [2,     "erai",         ":If:1s/M",             false],
            [5,     "èquerai",      ":If:1s/R",             false],
            [2,     "eras",         ":If:2s/M",             false],
            [5,     "èqueras",      ":If:2s/R",             false],
            [2,     "era",          ":If:3s/M",             false],
            [5,     "èquera",       ":If:3s/R",             false],
            [2,     "erons",        ":If:1p/M",             false],
            [5,     "èquerons",     ":If:1p/R",             false],
            [2,     "erez",         ":If:2p/M",             false],
            [5,     "èquerez",      ":If:2p/R",             false],
            [2,     "eront",        ":If:3p!/M",            false],
            [5,     "èqueront",     ":If:3p!/R",            false],
            [2,     "erais",        ":K:1s:2s/M",           false],
            [5,     "èquerais",     ":K:1s:2s/R",           false],
            [2,     "erait",        ":K:3s/M",              false],
            [5,     "èquerait",     ":K:3s/R",              false],
            [2,     "erions",       ":K:1p/M",              false],
            [5,     "èquerions",    ":K:1p/R",              false],
            [2,     "eriez",        ":K:2p/M",              false],
            [5,     "èqueriez",     ":K:2p/R",              false],
            [2,     "eraient",      ":K:3p/M",              false],
            [5,     "èqueraient",   ":K:3p/R",              false],
            [2,     "asse",         ":Sq:1s/*",             false],
            [2,     "asses",        ":Sq:2s/*",             false],
            [2,     "ât",           ":Sq:3s/*",             false],
            [2,     "assions",      ":Sq:1p/*",             false],
            [2,     "assiez",       ":Sq:2p/*",             false],
            [2,     "assent",       ":Sq:3p/*",             false],
            [5,     "èque",         ":E:2s/*",              false],
            [2,     "ons",          ":E:1p/*",              false],
            [2,     "ez",           ":E:2p/*",              false]
        ],

        "érer": [
            [2,     "er",           ":Y/*",                 false],
            [2,     "ant",          ":P/*",                 false],
            [4,     "ère",          ":Ip:Sp:1s:3s/*",       false],
            [2,     "è",            ":Ip:1ś/R",             false],
            [4,     "ères",         ":Ip:Sp:2s/*",          false],
            [2,     "ons",          ":Ip:1p/*",             false],
            [2,     "ez",           ":Ip:2p/*",             false],
            [4,     "èrent",        ":Ip:Sp:3p/*",          false],
            [2,     "ais",          ":Iq:1s:2s/*",          false],
            [2,     "ait",          ":Iq:3s/*",             false],
            [2,     "ions",         ":Iq:Sp:1p/*",          false],
            [2,     "iez",          ":Iq:Sp:2p/*",          false],
            [2,     "aient",        ":Iq:3p/*",             false],
            [2,     "ai",           ":Is:1s/*",             false],
            [2,     "as",           ":Is:2s/*",             false],
            [2,     "a",            ":Is:3s/*",             false],
            [2,     "âmes",         ":Is:1p/*",             false],
            [2,     "âtes",         ":Is:2p/*",             false],
            [2,     "èrent",        ":Is:3p!/*",            false],
            [2,     "erai",         ":If:1s/M",             false],
            [4,     "èrerai",       ":If:1s/R",             false],
            [2,     "eras",         ":If:2s/M",             false],
            [4,     "èreras",       ":If:2s/R",             false],
            [2,     "era",          ":If:3s/M",             false],
            [4,     "èrera",        ":If:3s/R",             false],
            [2,     "erons",        ":If:1p/M",             false],
            [4,     "èrerons",      ":If:1p/R",             false],
            [2,     "erez",         ":If:2p/M",             false],
            [4,     "èrerez",       ":If:2p/R",             false],
            [2,     "eront",        ":If:3p!/M",            false],
            [4,     "èreront",      ":If:3p!/R",            false],
            [2,     "erais",        ":K:1s:2s/M",           false],
            [4,     "èrerais",      ":K:1s:2s/R",           false],
            [2,     "erait",        ":K:3s/M",              false],
            [4,     "èrerait",      ":K:3s/R",              false],
            [2,     "erions",       ":K:1p/M",              false],
            [4,     "èrerions",     ":K:1p/R",              false],
            [2,     "eriez",        ":K:2p/M",              false],
            [4,     "èreriez",      ":K:2p/R",              false],
            [2,     "eraient",      ":K:3p/M",              false],
            [4,     "èreraient",    ":K:3p/R",              false],
            [2,     "asse",         ":Sq:1s/*",             false],
            [2,     "asses",        ":Sq:2s/*",             false],
            [2,     "ât",           ":Sq:3s/*",             false],
            [2,     "assions",      ":Sq:1p/*",             false],
            [2,     "assiez",       ":Sq:2p/*",             false],
            [2,     "assent",       ":Sq:3p/*",             false],
            [4,     "ère",          ":E:2s/*",              false],
            [2,     "ons",          ":E:1p/*",              false],
            [2,     "ez",           ":E:2p/*",              false]
        ],

        "éser": [
            [2,     "er",           ":Y/*",                 false],
            [2,     "ant",          ":P/*",                 false],
            [4,     "èse",          ":Ip:Sp:1s:3s/*",       false],
            [2,     "è",            ":Ip:1ś/R",             false],
            [4,     "èses",         ":Ip:Sp:2s/*",          false],
            [2,     "ons",          ":Ip:1p/*",             false],
            [2,     "ez",           ":Ip:2p/*",             false],
            [4,     "èsent",        ":Ip:Sp:3p/*",          false],
            [2,     "ais",          ":Iq:1s:2s/*",          false],
            [2,     "ait",          ":Iq:3s/*",             false],
            [2,     "ions",         ":Iq:Sp:1p/*",          false],
            [2,     "iez",          ":Iq:Sp:2p/*",          false],
            [2,     "aient",        ":Iq:3p/*",             false],
            [2,     "ai",           ":Is:1s/*",             false],
            [2,     "as",           ":Is:2s/*",             false],
            [2,     "a",            ":Is:3s/*",             false],
            [2,     "âmes",         ":Is:1p/*",             false],
            [2,     "âtes",         ":Is:2p/*",             false],
            [2,     "èrent",        ":Is:3p!/*",            false],
            [2,     "erai",         ":If:1s/M",             false],
            [4,     "èserai",       ":If:1s/R",             false],
            [2,     "eras",         ":If:2s/M",             false],
            [4,     "èseras",       ":If:2s/R",             false],
            [2,     "era",          ":If:3s/M",             false],
            [4,     "èsera",        ":If:3s/R",             false],
            [2,     "erons",        ":If:1p/M",             false],
            [4,     "èserons",      ":If:1p/R",             false],
            [2,     "erez",         ":If:2p/M",             false],
            [4,     "èserez",       ":If:2p/R",             false],
            [2,     "eront",        ":If:3p!/M",            false],
            [4,     "èseront",      ":If:3p!/R",            false],
            [2,     "erais",        ":K:1s:2s/M",           false],
            [4,     "èserais",      ":K:1s:2s/R",           false],
            [2,     "erait",        ":K:3s/M",              false],
            [4,     "èserait",      ":K:3s/R",              false],
            [2,     "erions",       ":K:1p/M",              false],
            [4,     "èserions",     ":K:1p/R",              false],
            [2,     "eriez",        ":K:2p/M",              false],
            [4,     "èseriez",      ":K:2p/R",              false],
            [2,     "eraient",      ":K:3p/M",              false],
            [4,     "èseraient",    ":K:3p/R",              false],
            [2,     "asse",         ":Sq:1s/*",             false],
            [2,     "asses",        ":Sq:2s/*",             false],
            [2,     "ât",           ":Sq:3s/*",             false],
            [2,     "assions",      ":Sq:1p/*",             false],
            [2,     "assiez",       ":Sq:2p/*",             false],
            [2,     "assent",       ":Sq:3p/*",             false],
            [4,     "èse",          ":E:2s/*",              false],
            [2,     "ons",          ":E:1p/*",              false],
            [2,     "ez",           ":E:2p/*",              false]
        ],

        "éter": [
            [2,     "er",           ":Y/*",                 false],
            [2,     "ant",          ":P/*",                 false],
            [4,     "ète",          ":Ip:Sp:1s:3s/*",       false],
            [2,     "è",            ":Ip:1ś/R",             false],
            [4,     "ètes",         ":Ip:Sp:2s/*",          false],
            [2,     "ons",          ":Ip:1p/*",             false],
            [2,     "ez",           ":Ip:2p/*",             false],
            [4,     "ètent",        ":Ip:Sp:3p/*",          false],
            [2,     "ais",          ":Iq:1s:2s/*",          false],
            [2,     "ait",          ":Iq:3s/*",             false],
            [2,     "ions",         ":Iq:Sp:1p/*",          false],
            [2,     "iez",          ":Iq:Sp:2p/*",          false],
            [2,     "aient",        ":Iq:3p/*",             false],
            [2,     "ai",           ":Is:1s/*",             false],
            [2,     "as",           ":Is:2s/*",             false],
            [2,     "a",            ":Is:3s/*",             false],
            [2,     "âmes",         ":Is:1p/*",             false],
            [2,     "âtes",         ":Is:2p/*",             false],
            [2,     "èrent",        ":Is:3p!/*",            false],
            [2,     "erai",         ":If:1s/M",             false],
            [4,     "èterai",       ":If:1s/R",             false],
            [2,     "eras",         ":If:2s/M",             false],
            [4,     "èteras",       ":If:2s/R",             false],
            [2,     "era",          ":If:3s/M",             false],
            [4,     "ètera",        ":If:3s/R",             false],
            [2,     "erons",        ":If:1p/M",             false],
            [4,     "èterons",      ":If:1p/R",             false],
            [2,     "erez",         ":If:2p/M",             false],
            [4,     "èterez",       ":If:2p/R",             false],
            [2,     "eront",        ":If:3p!/M",            false],
            [4,     "èteront",      ":If:3p!/R",            false],
            [2,     "erais",        ":K:1s:2s/M",           false],
            [4,     "èterais",      ":K:1s:2s/R",           false],
            [2,     "erait",        ":K:3s/M",              false],
            [4,     "èterait",      ":K:3s/R",              false],
            [2,     "erions",       ":K:1p/M",              false],
            [4,     "èterions",     ":K:1p/R",              false],
            [2,     "eriez",        ":K:2p/M",              false],
            [4,     "èteriez",      ":K:2p/R",              false],
            [2,     "eraient",      ":K:3p/M",              false],
            [4,     "èteraient",    ":K:3p/R",              false],
            [2,     "asse",         ":Sq:1s/*",             false],
            [2,     "asses",        ":Sq:2s/*",             false],
            [2,     "ât",           ":Sq:3s/*",             false],
            [2,     "assions",      ":Sq:1p/*",             false],
            [2,     "assiez",       ":Sq:2p/*",             false],
            [2,     "assent",       ":Sq:3p/*",             false],
            [4,     "ète",          ":E:2s/*",              false],
            [2,     "ons",          ":E:1p/*",              false],
            [2,     "ez",           ":E:2p/*",              false]
        ],

        "étrer": [
            [2,     "er",           ":Y/*",                 false],
            [2,     "ant",          ":P/*",                 false],
            [5,     "ètre",         ":Ip:Sp:1s:3s/*",       false],
            [2,     "è",            ":Ip:1ś/R",             false],
            [5,     "ètres",        ":Ip:Sp:2s/*",          false],
            [2,     "ons",          ":Ip:1p/*",             false],
            [2,     "ez",           ":Ip:2p/*",             false],
            [5,     "ètrent",       ":Ip:Sp:3p/*",          false],
            [2,     "ais",          ":Iq:1s:2s/*",          false],
            [2,     "ait",          ":Iq:3s/*",             false],
            [2,     "ions",         ":Iq:Sp:1p/*",          false],
            [2,     "iez",          ":Iq:Sp:2p/*",          false],
            [2,     "aient",        ":Iq:3p/*",             false],
            [2,     "ai",           ":Is:1s/*",             false],
            [2,     "as",           ":Is:2s/*",             false],
            [2,     "a",            ":Is:3s/*",             false],
            [2,     "âmes",         ":Is:1p/*",             false],
            [2,     "âtes",         ":Is:2p/*",             false],
            [2,     "èrent",        ":Is:3p!/*",            false],
            [2,     "erai",         ":If:1s/M",             false],
            [5,     "ètrerai",      ":If:1s/R",             false],
            [2,     "eras",         ":If:2s/M",             false],
            [5,     "ètreras",      ":If:2s/R",             false],
            [2,     "era",          ":If:3s/M",             false],
            [5,     "ètrera",       ":If:3s/R",             false],
            [2,     "erons",        ":If:1p/M",             false],
            [5,     "ètrerons",     ":If:1p/R",             false],
            [2,     "erez",         ":If:2p/M",             false],
            [5,     "ètrerez",      ":If:2p/R",             false],
            [2,     "eront",        ":If:3p!/M",            false],
            [5,     "ètreront",     ":If:3p!/R",            false],
            [2,     "erais",        ":K:1s:2s/M",           false],
            [5,     "ètrerais",     ":K:1s:2s/R",           false],
            [2,     "erait",        ":K:3s/M",              false],
            [5,     "ètrerait",     ":K:3s/R",              false],
            [2,     "erions",       ":K:1p/M",              false],
            [5,     "ètrerions",    ":K:1p/R",              false],
            [2,     "eriez",        ":K:2p/M",              false],
            [5,     "ètreriez",     ":K:2p/R",              false],
            [2,     "eraient",      ":K:3p/M",              false],
            [5,     "ètreraient",   ":K:3p/R",              false],
            [2,     "asse",         ":Sq:1s/*",             false],
            [2,     "asses",        ":Sq:2s/*",             false],
            [2,     "ât",           ":Sq:3s/*",             false],
            [2,     "assions",      ":Sq:1p/*",             false],
            [2,     "assiez",       ":Sq:2p/*",             false],
            [2,     "assent",       ":Sq:3p/*",             false],
            [5,     "ètre",         ":E:2s/*",              false],
            [2,     "ons",          ":E:1p/*",              false],
            [2,     "ez",           ":E:2p/*",              false]
        ],

        "évrer": [
            [2,     "er",           ":Y/*",                 false],
            [2,     "ant",          ":P/*",                 false],
            [5,     "èvre",         ":Ip:Sp:1s:3s/*",       false],
            [2,     "è",            ":Ip:1ś/R",             false],
            [5,     "èvres",        ":Ip:Sp:2s/*",          false],
            [2,     "ons",          ":Ip:1p/*",             false],
            [2,     "ez",           ":Ip:2p/*",             false],
            [5,     "èvrent",       ":Ip:Sp:3p/*",          false],
            [2,     "ais",          ":Iq:1s:2s/*",          false],
            [2,     "ait",          ":Iq:3s/*",             false],
            [2,     "ions",         ":Iq:Sp:1p/*",          false],
            [2,     "iez",          ":Iq:Sp:2p/*",          false],
            [2,     "aient",        ":Iq:3p/*",             false],
            [2,     "ai",           ":Is:1s/*",             false],
            [2,     "as",           ":Is:2s/*",             false],
            [2,     "a",            ":Is:3s/*",             false],
            [2,     "âmes",         ":Is:1p/*",             false],
            [2,     "âtes",         ":Is:2p/*",             false],
            [2,     "èrent",        ":Is:3p!/*",            false],
            [2,     "erai",         ":If:1s/M",             false],
            [5,     "èvrerai",      ":If:1s/R",             false],
            [2,     "eras",         ":If:2s/M",             false],
            [5,     "èvreras",      ":If:2s/R",             false],
            [2,     "era",          ":If:3s/M",             false],
            [5,     "èvrera",       ":If:3s/R",             false],
            [2,     "erons",        ":If:1p/M",             false],
            [5,     "èvrerons",     ":If:1p/R",             false],
            [2,     "erez",         ":If:2p/M",             false],
            [5,     "èvrerez",      ":If:2p/R",             false],
            [2,     "eront",        ":If:3p!/M",            false],
            [5,     "èvreront",     ":If:3p!/R",            false],
            [2,     "erais",        ":K:1s:2s/M",           false],
            [5,     "èvrerais",     ":K:1s:2s/R",           false],
            [2,     "erait",        ":K:3s/M",              false],
            [5,     "èvrerait",     ":K:3s/R",              false],
            [2,     "erions",       ":K:1p/M",              false],
            [5,     "èvrerions",    ":K:1p/R",              false],
            [2,     "eriez",        ":K:2p/M",              false],
            [5,     "èvreriez",     ":K:2p/R",              false],
            [2,     "eraient",      ":K:3p/M",              false],
            [5,     "èvreraient",   ":K:3p/R",              false],
            [2,     "asse",         ":Sq:1s/*",             false],
            [2,     "asses",        ":Sq:2s/*",             false],
            [2,     "ât",           ":Sq:3s/*",             false],
            [2,     "assions",      ":Sq:1p/*",             false],
            [2,     "assiez",       ":Sq:2p/*",             false],
            [2,     "assent",       ":Sq:3p/*",             false],
            [5,     "èvre",         ":E:2s/*",              false],
            [2,     "ons",          ":E:1p/*",              false],
            [2,     "ez",           ":E:2p/*",              false]
        ],

        "éyer": [
            [2,     "er",           ":Y/*",                 false],
            [2,     "ant",          ":P/*",                 false],
            [4,     "èye",          ":Ip:Sp:1s:3s/*",       false],
            [2,     "è",            ":Ip:1ś/R",             false],
            [4,     "èyes",         ":Ip:Sp:2s/*",          false],
            [2,     "ons",          ":Ip:1p/*",             false],
            [2,     "ez",           ":Ip:2p/*",             false],
            [4,     "èyent",        ":Ip:Sp:3p/*",          false],
            [2,     "ais",          ":Iq:1s:2s/*",          false],
            [2,     "ait",          ":Iq:3s/*",             false],
            [2,     "ions",         ":Iq:Sp:1p/*",          false],
            [2,     "iez",          ":Iq:Sp:2p/*",          false],
            [2,     "aient",        ":Iq:3p/*",             false],
            [2,     "ai",           ":Is:1s/*",             false],
            [2,     "as",           ":Is:2s/*",             false],
            [2,     "a",            ":Is:3s/*",             false],
            [2,     "âmes",         ":Is:1p/*",             false],
            [2,     "âtes",         ":Is:2p/*",             false],
            [2,     "èrent",        ":Is:3p!/*",            false],
            [2,     "erai",         ":If:1s/M",             false],
            [4,     "èyerai",       ":If:1s/R",             false],
            [2,     "eras",         ":If:2s/M",             false],
            [4,     "èyeras",       ":If:2s/R",             false],
            [2,     "era",          ":If:3s/M",             false],
            [4,     "èyera",        ":If:3s/R",             false],
            [2,     "erons",        ":If:1p/M",             false],
            [4,     "èyerons",      ":If:1p/R",             false],
            [2,     "erez",         ":If:2p/M",             false],
            [4,     "èyerez",       ":If:2p/R",             false],
            [2,     "eront",        ":If:3p!/M",            false],
            [4,     "èyeront",      ":If:3p!/R",            false],
            [2,     "erais",        ":K:1s:2s/M",           false],
            [4,     "èyerais",      ":K:1s:2s/R",           false],
            [2,     "erait",        ":K:3s/M",              false],
            [4,     "èyerait",      ":K:3s/R",              false],
            [2,     "erions",       ":K:1p/M",              false],
            [4,     "èyerions",     ":K:1p/R",              false],
            [2,     "eriez",        ":K:2p/M",              false],
            [4,     "èyeriez",      ":K:2p/R",              false],
            [2,     "eraient",      ":K:3p/M",              false],
            [4,     "èyeraient",    ":K:3p/R",              false],
            [2,     "asse",         ":Sq:1s/*",             false],
            [2,     "asses",        ":Sq:2s/*",             false],
            [2,     "ât",           ":Sq:3s/*",             false],
            [2,     "assions",      ":Sq:1p/*",             false],
            [2,     "assiez",       ":Sq:2p/*",             false],
            [2,     "assent",       ":Sq:3p/*",             false],
            [4,     "èye",          ":E:2s/*",              false],
            [2,     "ons",          ":E:1p/*",              false],
            [2,     "ez",           ":E:2p/*",              false]
        ]
    }
};

Modified gc_lang/fr/webext/panel/lex_editor.html from [78fc49cfbe] to [81ed66a201].

302
303
304
305
306
307
308
309

310
311
312
313
302
303
304
305
306
307
308

309
310
311
312
313







-
+






        <script src="../grammalecte/graphspell/helpers.js"></script>
        <script src="../grammalecte/graphspell/str_transform.js"></script>
        <script src="../grammalecte/graphspell/dawg.js"></script>
        <script src="../grammalecte/graphspell/ibdawg.js"></script>
        <script src="../grammalecte/fr/conj.js"></script>
        <script src="lex_conj_data.js"></script>
        <script src="../grammalecte/fr/conj_generator.js"></script>
        <script src="lex_editor.js"></script>
    </body>
    
</html>

Modified gc_lang/fr/webext/panel/lex_editor.js from [7139f8d80b] to [acda1aa76b].

352
353
354
355
356
357
358
359
360
361
362

363
364
365
366
367
368
369
370

371
372

373
374

375
376
377
378
379
380
381
382
352
353
354
355
356
357
358




359








360


361


362

363
364
365
366
367
368
369







-
-
-
-
+
-
-
-
-
-
-
-
-
+
-
-
+
-
-
+
-







                        let c_m = (document.getElementById("up_v_m").checked) ? "m" : "_";
                        let c_ae = (document.getElementById("up_v_ae").checked) ? "e" : "_";
                        let c_aa = (document.getElementById("up_v_aa").checked) ? "a" : "_";
                        let sVerbTag = c_i + c_t + c_n + c_p + c_m + c_ae + c_aa;
                        if (!sVerbTag.endsWith("__") && !sVerbTag.startsWith("____")) {
                            let sVerbPattern = document.getElementById("verb_pattern").value.trim();
                            if (sVerbPattern.length == 0) {
                                if (!sLemma.endsWith("er") && !sLemma.endsWith("ir")) {
                                    break;
                                }
                                // tables de conjugaison du 1er et du 2e groupe
                                // utilisation du générateur de conjugaison
                                let cGroup = (sLemma.endsWith("er")) ? "1" : "2";
                                for (let [nCut, sAdd, sFlexTags, sPattern] of this._getConjRules(sLemma)) {
                                    if (!sPattern || RegExp(sPattern).test(sLemma)) {
                                        this.addFlexion(sLemma.slice(0,-nCut)+sAdd, sLemma, ":V" + cGroup + "_" + sVerbTag + sFlexTags);
                                    }
                                }
                                // participes passés
                                let bPpasVar = (document.getElementById("up_partpas").checked) ? "var" : "invar";
                                let bVarPpas = document.getElementById("up_partpas").checked;
                                let lPpasRules = (sLemma.endsWith("er")) ? oConj["V1_ppas"][bPpasVar] : oConj["V2_ppas"][bPpasVar];
                                for (let [nCut, sAdd, sFlexTags, sPattern] of lPpasRules) {
                                for (let [sFlexion, sFlexTags] of conj_generator.conjugate(sLemma, sVerbTag, bVarPpas)) {
                                    if (!sPattern || RegExp(sPattern).test(sLemma)) {
                                        this.addFlexion(sLemma.slice(0,-nCut)+sAdd, sLemma, ":V" + cGroup + "_" + sVerbTag + sFlexTags);
                                    this.addFlexion(sFlexion, sLemma, sFlexTags);
                                    }
                                }
                            } else {
                                // copie du motif d’un autre verbe : utilisation du conjugueur
                                if (conj.isVerb(sVerbPattern)) {
                                    let oVerb = new Verb(sLemma, sVerbPattern);
                                    for (let [sTag1, dFlex] of oVerb.dConj.entries()) {
                                        if (sTag1 !== ":Q") {
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
429
430
431
432
433
434
435




























436
437
438
439
440
441
442







-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-







            this.show();
        }
        catch (e) {
            showError(e);
        }
    },

    _getConjRules: function (sVerb) {
        if (sVerb.endsWith("ir")) {
            // deuxième groupe
            return oConj["V2"];
        } else if (sVerb.endsWith("er")) {
            // premier groupe, conjugaison en fonction de la terminaison du lemme
            // 5 lettres
            if (sVerb.slice(-5) in oConj["V1"]) {
                return oConj["V1"][sVerb.slice(-5)];
            }
            // 4 lettres
            if (sVerb.slice(-4) in oConj["V1"]) {
                if (sVerb.endsWith("eler") || sVerb.endsWith("eter")) {
                    return oConj["V1"][sVerb.slice(-4)]["1"];
                }
                return oConj["V1"][sVerb.slice(-4)];
            }
            // 3 lettres
            if (sVerb.slice(-3) in oConj["V1"]) {
                return oConj["V1"][sVerb.slice(-3)];
            }
            return oConj["V1"]["er"];
        } else {
            // troisième groupe
            return [ [0, "", ":Y/*", false] ];
        }
    },

    getRadioValue: function (sName) {
        if (document.querySelector('input[name="' + sName + '"]:checked')) {
            return document.querySelector('input[name="' + sName + '"]:checked').value;
        }
        return null;
    },

Modified gc_lang/fr/webext/panel/main.js from [82866d8fd8] to [67d345836f].

140
141
142
143
144
145
146













147
148
149
150
151
152
153
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166







+
+
+
+
+
+
+
+
+
+
+
+
+







    }
}


function showTestResult (sText) {
    document.getElementById("tests_result").textContent = sText;
}

function openConjugueurTab () {
    if (bChrome) {
        browser.tabs.create({
            url: browser.extension.getURL("panel/conjugueur.html")
        });
        return;
    }
    let xConjTab = browser.tabs.create({
        url: browser.extension.getURL("panel/conjugueur.html")
    });
    xConjTab.then(onCreated, onError);
}

function openConjugueurTab () {
    if (bChrome) {
        browser.tabs.create({
            url: browser.extension.getURL("panel/conjugueur.html")
        });
        return;

Modified graphspell/dawg.py from [96443fe4a2] to [5d3489a731].

23
24
25
26
27
28
29
30

31
32
33
34
35
36
37
38
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
23
24
25
26
27
28
29

30
31
32
33
34
35
36
37
38
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
74







-
+













-
+
















-
+

+
-
-
+
+
+
+







def readFile (spf):
    print(" < Read lexicon: " + spf)
    if os.path.isfile(spf):
        with open(spf, "r", encoding="utf-8") as hSrc:
            for sLine in hSrc:
                sLine = sLine.strip()
                if sLine and not sLine.startswith("#"):
                    yield sLine
                    yield sLine.split("\t")
    else:
        raise OSError("# Error. File not found or not loadable: " + spf)



class DAWG:
    """DIRECT ACYCLIC WORD GRAPH"""
    # This code is inspired from Steve Hanov’s DAWG, 2011. (http://stevehanov.ca/blog/index.php?id=115)
    # We store suffix/affix codes and tags within the graph after the “real” word.
    # A word is a list of numbers [ c1, c2, c3 . . . cN, iAffix, iTags]
    # Each arc is an index in self.lArcVal, where are stored characters, suffix/affix codes for stemming and tags.
    # Important: As usual, the last node (after ‘iTags’) is tagged final, AND the node after ‘cN’ is ALSO tagged final.

    def __init__ (self, spfSrc, cStemming, sLangCode, sLangName="", sDicName=""):
    def __init__ (self, src, cStemming, sLangCode, sLangName="", sDicName=""):
        print("===== Direct Acyclic Word Graph - Minimal Acyclic Finite State Automaton =====")
        cStemming = cStemming.upper()
        if cStemming == "A":
            funcStemmingGen = st.defineAffixCode
        elif cStemming == "S":
            funcStemmingGen = st.defineSuffixCode
        elif cStemming == "N":
            funcStemmingGen = st.noStemming
        else:
            raise ValueError("# Error. Unknown stemming code: {}".format(cStemming))

        lEntry = []
        lChar = ['']; dChar = {}; nChar = 1; dCharOccur = {}
        lAff  = [];   dAff  = {}; nAff  = 0; dAffOccur = {}
        lTag  = [];   dTag  = {}; nTag  = 0; dTagOccur = {}
        nErr = 0
        

        # read lexicon
        if type(src) is str:
        for sLine in readFile(spfSrc):
            sFlex, sStem, sTag = sLine.split("\t")
            iterable = readFile(src)
        else:
            iterable = src
        for sFlex, sStem, sTag in iterable:
            addWordToCharDict(sFlex)
            # chars
            for c in sFlex:
                if c not in dChar:
                    dChar[c] = nChar
                    lChar.append(c)
                    nChar += 1
93
94
95
96
97
98
99
100
101
102
103
104
105

106
107
108
109
110
111
112
96
97
98
99
100
101
102




103

104
105
106
107
108
109
110
111







-
-
-
-

-
+







        lWord = [ [dChar[c] for c in sFlex] + [iAff+nChar] + [iTag+nChar+nAff]  for sFlex, iAff, iTag in lEntry ]
        lEntry = None
        
        # Dictionary of arc values occurrency, to sort arcs of each node
        dValOccur = dict( [ (dChar[c], dCharOccur[c])  for c in dChar ] \
                        + [ (dAff[aff]+nChar, dAffOccur[aff]) for aff in dAff ] \
                        + [ (dTag[tag]+nChar+nAff, dTagOccur[tag]) for tag in dTag ] )
        #with open(spfSrc[:-8]+".valuesfreq.txt", 'w', encoding='utf-8') as hFreqDst:  # DEBUG
        #    for iKey, nOcc in sorted(dValOccur.items(), key=lambda t: t[1], reverse=True):
        #        hFreqDst.write("{}: {}\n".format(lVal[iKey], nOcc))
        #    hFreqDst.close()
        
        self.sFileName = spfSrc
        self.sFileName = src  if type(src) is str  else "[None]"
        self.sLangCode = sLangCode
        self.sLangName = sLangName
        self.sDicName = sDicName
        self.nEntry = len(lWord)
        self.aPreviousEntry = []
        DawgNode.resetNextId()
        self.oRoot = DawgNode()
306
307
308
309
310
311
312
313

314
315
316
317
318
319
320
305
306
307
308
309
310
311

312
313
314
315
316
317
318
319







-
+







                sEntry = sWord + "\t" + self.funcStemming(sWord, self.lArcVal[nVal])
                for nMorphVal, _ in oNextNode.arcs.items():
                    if not zPattern or zPattern.search(self.lArcVal[nMorphVal]):
                        yield sEntry + "\t" + self.lArcVal[nMorphVal]


    # BINARY CONVERSION
    def createBinary (self, sPathFile, nCompressionMethod, bDebug=False):
    def _calculateBinary (self, nCompressionMethod):
        print(" > Write DAWG as an indexable binary dictionary [method: %d]" % nCompressionMethod)
        if nCompressionMethod == 1:
            self.nBytesArc = ( (self.nArcVal.bit_length() + 2) // 8 ) + 1   # We add 2 bits. See DawgNode.convToBytes1()
            self.nBytesOffset = 0
            self._calcNumBytesNodeAddress()
            self._calcNodesAddress1()
        elif nCompressionMethod == 2:
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
329
330
331
332
333
334
335




336
337
338
339
340
341
342







-
-
-
-







            self._calcNodesAddress3()
        else:
            print(" # Error: unknown compression method")
        print("   Arc values (chars, affixes and tags): {}  ->  {} bytes".format( self.nArcVal, len("\t".join(self.lArcVal).encode("utf-8")) ))
        print("   Arc size: {} bytes, Address size: {} bytes   ->   {} * {} = {} bytes".format( self.nBytesArc, self.nBytesNodeAddress, \
                                                                                                self.nBytesArc+self.nBytesNodeAddress, self.nArc, \
                                                                                                (self.nBytesArc+self.nBytesNodeAddress)*self.nArc ))
        self._writeBinary(sPathFile, nCompressionMethod)
        self._writeAsJSObject(sPathFile, nCompressionMethod)
        if bDebug:
            self._writeNodes(sPathFile, nCompressionMethod)

    def _calcNumBytesNodeAddress (self):
        "how many bytes needed to store all nodes/arcs in the binary dictionary"
        self.nBytesNodeAddress = 1
        while ((self.nBytesArc + self.nBytesNodeAddress) * self.nArc) > (2 ** (self.nBytesNodeAddress * 8)):
            self.nBytesNodeAddress += 1

385
386
387
388
389
390
391
392

393
394

395
396
397
398
399
400
401
402
403
404
405
406
407
408

409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437

































438
439
440
441

442
443
444
445
446
447
448
380
381
382
383
384
385
386

387


388
389
390
391
392
393
394
395
396
397
398
399
400
401

402





























403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438

439
440
441
442
443
444
445
446







-
+
-
-
+













-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+



-
+







                for oNextNode in self.lSortedNodes[i].arcs.values():
                    if 1 < (oNextNode.addr - self.lSortedNodes[i].addr) < self.nMaxOffset:
                        nSize -= nDiff
                if self.lSortedNodes[i].size != nSize:
                    self.lSortedNodes[i].size = nSize
                    bEnd = False

    def _writeAsJSObject (self, spfDst, nCompressionMethod, bInJSModule=False, bBinaryDictAsHexString=True):
    def getBinaryAsJSON (self, nCompressionMethod=1, bBinaryDictAsHexString=True):
        if not spfDst.endswith(".json"):
            spfDst += "."+str(nCompressionMethod)+".json"
        self._calculateBinary(nCompressionMethod)
        byDic = b""
        if nCompressionMethod == 1:
            byDic = self.oRoot.convToBytes1(self.nBytesArc, self.nBytesNodeAddress)
            for oNode in self.lMinimizedNodes:
                byDic += oNode.convToBytes1(self.nBytesArc, self.nBytesNodeAddress)
        elif nCompressionMethod == 2:
            byDic = self.oRoot.convToBytes2(self.nBytesArc, self.nBytesNodeAddress)
            for oNode in self.lSortedNodes:
                byDic += oNode.convToBytes2(self.nBytesArc, self.nBytesNodeAddress)
        elif nCompressionMethod == 3:
            byDic = self.oRoot.convToBytes3(self.nBytesArc, self.nBytesNodeAddress, self.nBytesOffset)
            for oNode in self.lSortedNodes:
                byDic += oNode.convToBytes3(self.nBytesArc, self.nBytesNodeAddress, self.nBytesOffset)

        return {
        with open(spfDst, "w", encoding="utf-8", newline="\n") as hDst:
            if bInJSModule:
                hDst.write('// JavaScript\n// Generated data (do not edit)\n\n"use strict";\n\nconst dictionary = ')
            hDst.write(json.dumps({
                            "sHeader": "/pyfsa/",
                            "sLangCode": self.sLangCode,
                            "sLangName": self.sLangName,
                            "sDicName": self.sDicName,
                            "sFileName": self.sFileName,
                            "sDate": self._getDate(),
                            "nEntry": self.nEntry,
                            "nChar": self.nChar,
                            "nAff": self.nAff,
                            "nTag": self.nTag,
                            "cStemming": self.cStemming,
                            "dChar": self.dChar,
                            "nNode": self.nNode,
                            "nArc": self.nArc,
                            "nArcVal": self.nArcVal,
                            "lArcVal": self.lArcVal,
                            "nCompressionMethod": nCompressionMethod,
                            "nBytesArc": self.nBytesArc,
                            "nBytesNodeAddress": self.nBytesNodeAddress,
                            "nBytesOffset": self.nBytesOffset,
                            # JavaScript is a pile of shit, so Mozilla’s JS parser don’t like file bigger than 4 Mb!
                            # So, if necessary, we use an hexadecimal string, that we will convert later in Firefox’s extension.
                            # https://github.com/mozilla/addons-linter/issues/1361
                            "sByDic": byDic.hex()  if bBinaryDictAsHexString  else [ e  for e in byDic ]
                        }, ensure_ascii=False))
            "sHeader": "/pyfsa/",
            "sLangCode": self.sLangCode,
            "sLangName": self.sLangName,
            "sDicName": self.sDicName,
            "sFileName": self.sFileName,
            "sDate": self._getDate(),
            "nEntry": self.nEntry,
            "nChar": self.nChar,
            "nAff": self.nAff,
            "nTag": self.nTag,
            "cStemming": self.cStemming,
            "dChar": self.dChar,
            "nNode": self.nNode,
            "nArc": self.nArc,
            "nArcVal": self.nArcVal,
            "lArcVal": self.lArcVal,
            "nCompressionMethod": nCompressionMethod,
            "nBytesArc": self.nBytesArc,
            "nBytesNodeAddress": self.nBytesNodeAddress,
            "nBytesOffset": self.nBytesOffset,
            # Mozilla’s JS parser don’t like file bigger than 4 Mb!
            # So, if necessary, we use an hexadecimal string, that we will convert later in Firefox’s extension.
            # https://github.com/mozilla/addons-linter/issues/1361
            "sByDic": byDic.hex()  if bBinaryDictAsHexString  else [ e  for e in byDic ]
        }

    def writeAsJSObject (self, spfDst, nCompressionMethod, bInJSModule=False, bBinaryDictAsHexString=True):
        if not spfDst.endswith(".json"):
            spfDst += "."+str(nCompressionMethod)+".json"
        with open(spfDst, "w", encoding="utf-8", newline="\n") as hDst:
            if bInJSModule:
                hDst.write('// JavaScript\n// Generated data (do not edit)\n\n"use strict";\n\nconst dictionary = ')
            hDst.write( json.dumps(self.getBinaryAsJSON(nCompressionMethod, bBinaryDictAsHexString), ensure_ascii=False) )
            if bInJSModule:
                hDst.write(";\n\nexports.dictionary = dictionary;\n")

    def _writeBinary (self, sPathFile, nCompressionMethod):
    def writeBinary (self, sPathFile, nCompressionMethod, bDebug=False):
        """
        Format of the binary indexable dictionary:
        Each section is separated with 4 bytes of \0
        
        - Section Header:
            /pyfsa/[compression method]
                * compression method is an ASCII string
469
470
471
472
473
474
475

476
477
478
479
480
481
482
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481







+







        - Section Values:
                * a list of strings encoded in binary from utf-8, each value separated with a tabulation
        
        - Section Word Graph (nodes / arcs)
                * A list of nodes which are a list of arcs with an address of the next node.
                  See DawgNode.convToBytes() for details.
        """
        self._calculateBinary(nCompressionMethod)
        if not sPathFile.endswith(".bdic"):
            sPathFile += "."+str(nCompressionMethod)+".bdic"
        with open(sPathFile, 'wb') as hDst:
            # header
            hDst.write("/pyfsa/{}/".format(nCompressionMethod).encode("utf-8"))
            hDst.write(b"\0\0\0\0")
            # infos
497
498
499
500
501
502
503
504


505
506
507
508
509
510
511
496
497
498
499
500
501
502

503
504
505
506
507
508
509
510
511







-
+
+







                hDst.write(self.oRoot.convToBytes2(self.nBytesArc, self.nBytesNodeAddress))
                for oNode in self.lSortedNodes:
                    hDst.write(oNode.convToBytes2(self.nBytesArc, self.nBytesNodeAddress))
            elif nCompressionMethod == 3:
                hDst.write(self.oRoot.convToBytes3(self.nBytesArc, self.nBytesNodeAddress, self.nBytesOffset))
                for oNode in self.lSortedNodes:
                    hDst.write(oNode.convToBytes3(self.nBytesArc, self.nBytesNodeAddress, self.nBytesOffset))
            hDst.close()
        if bDebug:
            self._writeNodes(sPathFile, nCompressionMethod)

    def _getDate (self):
        return time.strftime("%Y.%m.%d, %H:%M")

    def _writeNodes (self, sPathFile, nCompressionMethod):
        "for debugging only"
        print(" > Write nodes")
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
520
521
522
523
524
525
526













527
528
529
530
531
532
533







-
-
-
-
-
-
-
-
-
-
-
-
-







                for oNode in self.lSortedNodes:
                    hDst.write(oNode.getTxtRepr2(self.nBytesArc, self.nBytesNodeAddress, self.lArcVal)+"\n")
            if nCompressionMethod == 3:
                hDst.write(self.oRoot.getTxtRepr3(self.nBytesArc, self.nBytesNodeAddress, self.nBytesOffset, self.lArcVal)+"\n")
                #hDst.write( ''.join( [ "%02X " %  z  for z in self.oRoot.convToBytes3(self.nBytesArc, self.nBytesNodeAddress, self.nBytesOffset) ] ).strip() )
                for oNode in self.lSortedNodes:
                    hDst.write(oNode.getTxtRepr3(self.nBytesArc, self.nBytesNodeAddress, self.nBytesOffset, self.lArcVal)+"\n")
            hDst.close()
    
    def writeResults (self, sPathFile):
        bFileExits = os.path.isfile("_lexicons.res.txt")
        with open("_lexicons.res.txt", "a", encoding='utf-8', newline="\n") as hDst:
            sFormat1 = "{:<12} {:>12} {:>5} {:>8} {:>8} {:>6} {:>8} {:>9} {:>9} {:>15} {:>12} {:>12}\n"
            sFormat2 = "{:<12} {:>12,} {:>5,} {:>8,} {:>8} {:>6,} {:>8,} {:>9,} {:>9,} {:>15,} {:>12,} {:>12,}\n"
            if not bFileExits:
                hDst.write(sFormat1.format("Lexicon", "Entries", "Chars", "Affixes", "Stemming", "Tags", "Values", "Nodes", "Arcs", "Lexicon (Kb)", "Dict (Kb)", "LT Dict (Kb)"))
            hDst.write(sFormat2.format(self.sLangName, self.nEntry, self.nChar, self.nAff, self.cStemming + "FX", self.nTag, self.nArcVal, \
                                       self.nNode, self.nArc, os.path.getsize(self.sFileName), os.path.getsize(sPathFile), \
                                       os.path.getsize("cfsa/dict/{}.dict".format(self.sLangName)) if os.path.isfile("cfsa/dict/{}.dict".format(self.sLangName)) else 0))
            hDst.close()



class DawgNode:
    NextId = 0
    NextPos = 1 # (version 2)
    

Modified graphspell/ibdawg.py from [c41b426a86] to [145a26a0d0].

75
76
77
78
79
80
81
82
83
84
85





86
87
88
89
90
91
92








93
94

95
96
97
98
99
100
101
75
76
77
78
79
80
81




82
83
84
85
86
87






88
89
90
91
92
93
94
95
96

97
98
99
100
101
102
103
104







-
-
-
-
+
+
+
+
+

-
-
-
-
-
-
+
+
+
+
+
+
+
+

-
+







        self.aSugg.clear()
        self.dSugg.clear()


class IBDAWG:
    """INDEXABLE BINARY DIRECT ACYCLIC WORD GRAPH"""

    def __init__ (self, sfDict):
        self.by = pkgutil.get_data(__package__, "_dictionaries/" + sfDict)
        if not self.by:
            raise OSError("# Error. File not found or not loadable: "+sfDict)
    def __init__ (self, source):
        if type(source) is str:
            self.by = pkgutil.get_data(__package__, "_dictionaries/" + source)
            if not self.by:
                raise OSError("# Error. File not found or not loadable: "+source)

        if sfDict.endswith(".bdic"):
            self._initBinary()
        elif sfDict.endswith(".json"):
            self._initJSON()
        else:
            raise OSError("# Error. Unknown file type: "+sfDict)
            if source.endswith(".bdic"):
                self._initBinary()
            elif source.endswith(".json"):
                self._initJSON(json.loads(self.by.decode("utf-8")))     #json.loads(self.by)    # In Python 3.6, can read directly binary strings
            else:
                raise OSError("# Error. Unknown file type: "+source)
        else:
            self._initJSON(source)

        self.sFileName = sfDict
        self.sFileName = source  if type(source) is str  else "[None]"

        self._arcMask = (2 ** ((self.nBytesArc * 8) - 3)) - 1
        self._finalNodeMask = 1 << ((self.nBytesArc * 8) - 1)
        self._lastArcMask = 1 << ((self.nBytesArc * 8) - 2)
        self._addrBitMask = 1 << ((self.nBytesArc * 8) - 3)  # version 2

        # function to decode the affix/suffix code
165
166
167
168
169
170
171
172

173
174

175
176
177
178
179
180
181
182
168
169
170
171
172
173
174

175
176

177

178
179
180
181
182
183
184







-
+

-
+
-







        # <dChar> to get the value of an arc, <dCharVal> to get the char of an arc with its value
        self.dChar = {}
        for i in range(1, self.nChar+1):
            self.dChar[self.lArcVal[i]] = i
        self.dCharVal = { v: k  for k, v in self.dChar.items() }
        self.nBytesOffset = 1 # version 3

    def _initJSON (self):
    def _initJSON (self, oJSON):
        "initialize with a JSON text file"
        self.__dict__.update(json.loads(self.by.decode("utf-8")))
        self.__dict__.update(oJSON)
        #self.__dict__.update(json.loads(self.by))                  # In Python 3.6, can read directly binary strings
        self.byDic = binascii.unhexlify(self.sByDic)

    def getInfo (self):
        return  "  Language: {0.sLangName}   Lang code: {0.sLangCode}   Dictionary name: {0.sDicName}" \
                "  Compression method: {0.nCompressionMethod:>2}   Date: {0.sDate}   Stemming: {0.cStemming}FX\n" \
                "  Arcs values:  {0.nArcVal:>10,} = {0.nChar:>5,} characters,  {0.nAff:>6,} affixes,  {0.nTag:>6,} tags\n" \
                "  Dictionary: {0.nEntry:>12,} entries,    {0.nNode:>11,} nodes,   {0.nArc:>11,} arcs\n" \

Modified graphspell/spellchecker.py from [4787045da6] to [aaa0229431].

28
29
30
31
32
33
34
35

36
37

38
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
74
75
28
29
30
31
32
33
34

35
36

37
38
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
74
75







-
+

-
+


-
+


-
-
+
+











-
+

-
+


-
+

-
+


-
+

-
+







        if not sfMainDic:
            sfMainDic = dDefaultDictionaries.get(sLangCode, "")
        self.oMainDic = self._loadDictionary(sfMainDic, True)
        self.oExtendedDic = self._loadDictionary(sfExtendedDic)
        self.oPersonalDic = self._loadDictionary(sfPersonalDic)
        self.oTokenizer = None

    def _loadDictionary (self, sfDictionary, bNecessary=False):
    def _loadDictionary (self, source, bNecessary=False):
        "returns an IBDAWG object"
        if not sfDictionary:
        if not source:
            return None
        try:
            return ibdawg.IBDAWG(sfDictionary)
            return ibdawg.IBDAWG(source)
        except Exception as e:
            if bNecessary:
                raise Exception(str(e), "Error: <" + sfDictionary + "> not loaded.")
            print("Error: <" + sfDictionary + "> not loaded.")
                raise Exception(str(e), "Error: <" + str(source) + "> not loaded.")
            print("Error: <" + str(source) + "> not loaded.")
            traceback.print_exc()
            return None

    def loadTokenizer (self):
        self.oTokenizer = tokenizer.Tokenizer(self.sLangCode)

    def getTokenizer (self):
        if not self.oTokenizer:
            self.loadTokenizer()
        return self.oTokenizer

    def setMainDictionary (self, sfDictionary):
    def setMainDictionary (self, source):
        "returns True if the dictionary is loaded"
        self.oMainDic = self._loadDictionary(sfDictionary)
        self.oMainDic = self._loadDictionary(source)
        return bool(self.oMainDic)
            
    def setExtendedDictionary (self, sfDictionary):
    def setExtendedDictionary (self, source):
        "returns True if the dictionary is loaded"
        self.oExtendedDic = self._loadDictionary(sfDictionary)
        self.oExtendedDic = self._loadDictionary(source)
        return bool(self.oExtendedDic)

    def setPersonalDictionary (self, sfDictionary):
    def setPersonalDictionary (self, source):
        "returns True if the dictionary is loaded"
        self.oPersonalDic = self._loadDictionary(sfDictionary)
        self.oPersonalDic = self._loadDictionary(source)
        return bool(self.oPersonalDic)

    # parse text functions

    def parseParagraph (self, sText, bSpellSugg=False):
        if not self.oTokenizer:
            self.loadTokenizer()

Modified lex_build.py from [41cc230f34] to [2d1c4b9aa4].

10
11
12
13
14
15
16
17

18
19
20
21
22
23
24
10
11
12
13
14
15
16

17
18
19
20
21
22
23
24







-
+









def build (spfSrc, sLangCode, sLangName, sfDict, bJSON=False, sDicName="", cStemmingMethod="S", nCompressMethod=1):
    "transform a text lexicon as a binary indexable dictionary"
    oDAWG = fsa.DAWG(spfSrc, cStemmingMethod, sLangCode, sLangName, sDicName)
    dir_util.mkpath("graphspell/_dictionaries")
    oDAWG.writeInfo("graphspell/_dictionaries/" + sfDict + ".info.txt")
    oDAWG.createBinary("graphspell/_dictionaries/" + sfDict + ".bdic", int(nCompressMethod))
    oDAWG.writeBinary("graphspell/_dictionaries/" + sfDict + ".bdic", int(nCompressMethod))
    if bJSON:
        dir_util.mkpath("graphspell-js/_dictionaries")
        oDic = IBDAWG(sfDict + ".bdic")
        oDic.writeAsJSObject("graphspell-js/_dictionaries/" + sfDict + ".json", bBinaryDictAsHexString=True)


def main ():

Modified make.py from [dbe9299caf] to [b9941a6809].

82
83
84
85
86
87
88

89
90
91
92
93
94
95
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96







+







    hZip.write("grammalecte-cli.py", "pythonpath/grammalecte-cli.py")

    # Extension files
    hZip.writestr("META-INF/manifest.xml", helpers.fileFile("gc_core/py/oxt/manifest.xml", dVars))
    hZip.writestr("description.xml", helpers.fileFile("gc_core/py/oxt/description.xml", dVars))
    hZip.writestr("Linguistic.xcu", helpers.fileFile("gc_core/py/oxt/Linguistic.xcu", dVars))
    hZip.writestr("Grammalecte.py", helpers.fileFile("gc_core/py/oxt/Grammalecte.py", dVars))
    hZip.writestr("pythonpath/helpers.py", helpers.fileFile("gc_core/py/oxt/helpers.py", dVars))

    for sf in dVars["extras"].split(","):
        hZip.writestr(sf.strip(), helpers.fileFile(spLang + '/' + sf.strip(), dVars))

    if "logo" in dVars.keys() and dVars["logo"].strip():
        hZip.write(spLang + '/' + dVars["logo"].strip(), dVars["logo"].strip())