@streamflow/staking 8.7.0 → 8.8.0-alpha.0-alpha.p305.df0bb0f
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.cjs +1830 -47
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/index.d.cts +991 -5
- package/dist/cjs/solana/descriptor/fee_manager.d.cts +1 -1
- package/dist/cjs/solana/descriptor/reward_pool.d.cts +296 -5
- package/dist/cjs/solana/descriptor/stake_pool.d.cts +497 -5
- package/dist/esm/index.d.ts +991 -5
- package/dist/esm/index.js +1829 -46
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/solana/descriptor/fee_manager.d.ts +1 -1
- package/dist/esm/solana/descriptor/idl/fee_manager.json +1 -1
- package/dist/esm/solana/descriptor/idl/governor.json +932 -0
- package/dist/esm/solana/descriptor/idl/reward_pool.json +296 -5
- package/dist/esm/solana/descriptor/idl/reward_pool_dynamic.json +46 -4
- package/dist/esm/solana/descriptor/idl/stake_pool.json +499 -7
- package/dist/esm/solana/descriptor/reward_pool.d.ts +296 -5
- package/dist/esm/solana/descriptor/stake_pool.d.ts +497 -5
- package/package.json +4 -4
|
@@ -8,7 +8,7 @@ type StakePool = {
|
|
|
8
8
|
"address": "STAKEvGqQTtzJZH6BWDcbpzXXn2BBerPAgQ3EGLN2GH";
|
|
9
9
|
"metadata": {
|
|
10
10
|
"name": "stakePool";
|
|
11
|
-
"version": "2.
|
|
11
|
+
"version": "2.3.0";
|
|
12
12
|
"spec": "0.1.0";
|
|
13
13
|
"description": "Program to manage Stake Pools and stake/unstake tokens";
|
|
14
14
|
};
|
|
@@ -363,6 +363,174 @@ type StakePool = {
|
|
|
363
363
|
}
|
|
364
364
|
];
|
|
365
365
|
},
|
|
366
|
+
{
|
|
367
|
+
"name": "createPoolV2";
|
|
368
|
+
"discriminator": [
|
|
369
|
+
133,
|
|
370
|
+
27,
|
|
371
|
+
21,
|
|
372
|
+
38,
|
|
373
|
+
67,
|
|
374
|
+
86,
|
|
375
|
+
91,
|
|
376
|
+
132
|
|
377
|
+
];
|
|
378
|
+
"accounts": [
|
|
379
|
+
{
|
|
380
|
+
"name": "stakePool";
|
|
381
|
+
"writable": true;
|
|
382
|
+
"pda": {
|
|
383
|
+
"seeds": [
|
|
384
|
+
{
|
|
385
|
+
"kind": "const";
|
|
386
|
+
"value": [
|
|
387
|
+
115,
|
|
388
|
+
116,
|
|
389
|
+
97,
|
|
390
|
+
107,
|
|
391
|
+
101,
|
|
392
|
+
45,
|
|
393
|
+
112,
|
|
394
|
+
111,
|
|
395
|
+
111,
|
|
396
|
+
108
|
|
397
|
+
];
|
|
398
|
+
},
|
|
399
|
+
{
|
|
400
|
+
"kind": "account";
|
|
401
|
+
"path": "mint";
|
|
402
|
+
},
|
|
403
|
+
{
|
|
404
|
+
"kind": "account";
|
|
405
|
+
"path": "creator";
|
|
406
|
+
},
|
|
407
|
+
{
|
|
408
|
+
"kind": "arg";
|
|
409
|
+
"path": "nonce";
|
|
410
|
+
}
|
|
411
|
+
];
|
|
412
|
+
};
|
|
413
|
+
},
|
|
414
|
+
{
|
|
415
|
+
"name": "mint";
|
|
416
|
+
"docs": [
|
|
417
|
+
"Mint used for staking"
|
|
418
|
+
];
|
|
419
|
+
},
|
|
420
|
+
{
|
|
421
|
+
"name": "vault";
|
|
422
|
+
"writable": true;
|
|
423
|
+
"pda": {
|
|
424
|
+
"seeds": [
|
|
425
|
+
{
|
|
426
|
+
"kind": "const";
|
|
427
|
+
"value": [
|
|
428
|
+
115,
|
|
429
|
+
116,
|
|
430
|
+
97,
|
|
431
|
+
107,
|
|
432
|
+
101,
|
|
433
|
+
45,
|
|
434
|
+
118,
|
|
435
|
+
97,
|
|
436
|
+
117,
|
|
437
|
+
108,
|
|
438
|
+
116
|
|
439
|
+
];
|
|
440
|
+
},
|
|
441
|
+
{
|
|
442
|
+
"kind": "account";
|
|
443
|
+
"path": "stakePool";
|
|
444
|
+
}
|
|
445
|
+
];
|
|
446
|
+
};
|
|
447
|
+
},
|
|
448
|
+
{
|
|
449
|
+
"name": "stakeMint";
|
|
450
|
+
"writable": true;
|
|
451
|
+
"pda": {
|
|
452
|
+
"seeds": [
|
|
453
|
+
{
|
|
454
|
+
"kind": "const";
|
|
455
|
+
"value": [
|
|
456
|
+
115,
|
|
457
|
+
116,
|
|
458
|
+
97,
|
|
459
|
+
107,
|
|
460
|
+
101,
|
|
461
|
+
45,
|
|
462
|
+
109,
|
|
463
|
+
105,
|
|
464
|
+
110,
|
|
465
|
+
116
|
|
466
|
+
];
|
|
467
|
+
},
|
|
468
|
+
{
|
|
469
|
+
"kind": "account";
|
|
470
|
+
"path": "stakePool";
|
|
471
|
+
}
|
|
472
|
+
];
|
|
473
|
+
};
|
|
474
|
+
},
|
|
475
|
+
{
|
|
476
|
+
"name": "creator";
|
|
477
|
+
"docs": [
|
|
478
|
+
"Stake Pool creator"
|
|
479
|
+
];
|
|
480
|
+
"writable": true;
|
|
481
|
+
"signer": true;
|
|
482
|
+
},
|
|
483
|
+
{
|
|
484
|
+
"name": "tokenProgram";
|
|
485
|
+
},
|
|
486
|
+
{
|
|
487
|
+
"name": "systemProgram";
|
|
488
|
+
"address": "11111111111111111111111111111111";
|
|
489
|
+
}
|
|
490
|
+
];
|
|
491
|
+
"args": [
|
|
492
|
+
{
|
|
493
|
+
"name": "nonce";
|
|
494
|
+
"type": "u8";
|
|
495
|
+
},
|
|
496
|
+
{
|
|
497
|
+
"name": "maxWeight";
|
|
498
|
+
"type": "u64";
|
|
499
|
+
},
|
|
500
|
+
{
|
|
501
|
+
"name": "minDuration";
|
|
502
|
+
"type": "u64";
|
|
503
|
+
},
|
|
504
|
+
{
|
|
505
|
+
"name": "maxDuration";
|
|
506
|
+
"type": "u64";
|
|
507
|
+
},
|
|
508
|
+
{
|
|
509
|
+
"name": "permissionless";
|
|
510
|
+
"type": "bool";
|
|
511
|
+
},
|
|
512
|
+
{
|
|
513
|
+
"name": "freezeStakeMint";
|
|
514
|
+
"type": "bool";
|
|
515
|
+
},
|
|
516
|
+
{
|
|
517
|
+
"name": "unstakePeriod";
|
|
518
|
+
"type": "u64";
|
|
519
|
+
},
|
|
520
|
+
{
|
|
521
|
+
"name": "maxTotalStakeCumulative";
|
|
522
|
+
"type": "u64";
|
|
523
|
+
},
|
|
524
|
+
{
|
|
525
|
+
"name": "expiryTs";
|
|
526
|
+
"type": "u64";
|
|
527
|
+
},
|
|
528
|
+
{
|
|
529
|
+
"name": "autoUnstake";
|
|
530
|
+
"type": "bool";
|
|
531
|
+
}
|
|
532
|
+
];
|
|
533
|
+
},
|
|
366
534
|
{
|
|
367
535
|
"name": "migrateEntry";
|
|
368
536
|
"discriminator": [
|
|
@@ -823,6 +991,59 @@ type StakePool = {
|
|
|
823
991
|
"Token Account to transfer Stake Mint tokens to"
|
|
824
992
|
];
|
|
825
993
|
"writable": true;
|
|
994
|
+
"pda": {
|
|
995
|
+
"seeds": [
|
|
996
|
+
{
|
|
997
|
+
"kind": "account";
|
|
998
|
+
"path": "authority";
|
|
999
|
+
},
|
|
1000
|
+
{
|
|
1001
|
+
"kind": "account";
|
|
1002
|
+
"path": "tokenProgram";
|
|
1003
|
+
},
|
|
1004
|
+
{
|
|
1005
|
+
"kind": "account";
|
|
1006
|
+
"path": "stakeMint";
|
|
1007
|
+
}
|
|
1008
|
+
];
|
|
1009
|
+
"program": {
|
|
1010
|
+
"kind": "const";
|
|
1011
|
+
"value": [
|
|
1012
|
+
140,
|
|
1013
|
+
151,
|
|
1014
|
+
37,
|
|
1015
|
+
143,
|
|
1016
|
+
78,
|
|
1017
|
+
36,
|
|
1018
|
+
137,
|
|
1019
|
+
241,
|
|
1020
|
+
187,
|
|
1021
|
+
61,
|
|
1022
|
+
16,
|
|
1023
|
+
41,
|
|
1024
|
+
20,
|
|
1025
|
+
142,
|
|
1026
|
+
13,
|
|
1027
|
+
131,
|
|
1028
|
+
11,
|
|
1029
|
+
90,
|
|
1030
|
+
19,
|
|
1031
|
+
153,
|
|
1032
|
+
218,
|
|
1033
|
+
255,
|
|
1034
|
+
16,
|
|
1035
|
+
132,
|
|
1036
|
+
4,
|
|
1037
|
+
142,
|
|
1038
|
+
123,
|
|
1039
|
+
216,
|
|
1040
|
+
219,
|
|
1041
|
+
233,
|
|
1042
|
+
248,
|
|
1043
|
+
89
|
|
1044
|
+
];
|
|
1045
|
+
};
|
|
1046
|
+
};
|
|
826
1047
|
},
|
|
827
1048
|
{
|
|
828
1049
|
"name": "payer";
|
|
@@ -936,6 +1157,59 @@ type StakePool = {
|
|
|
936
1157
|
"Stake Mint Token account"
|
|
937
1158
|
];
|
|
938
1159
|
"writable": true;
|
|
1160
|
+
"pda": {
|
|
1161
|
+
"seeds": [
|
|
1162
|
+
{
|
|
1163
|
+
"kind": "account";
|
|
1164
|
+
"path": "authority";
|
|
1165
|
+
},
|
|
1166
|
+
{
|
|
1167
|
+
"kind": "account";
|
|
1168
|
+
"path": "tokenProgram";
|
|
1169
|
+
},
|
|
1170
|
+
{
|
|
1171
|
+
"kind": "account";
|
|
1172
|
+
"path": "stakeMint";
|
|
1173
|
+
}
|
|
1174
|
+
];
|
|
1175
|
+
"program": {
|
|
1176
|
+
"kind": "const";
|
|
1177
|
+
"value": [
|
|
1178
|
+
140,
|
|
1179
|
+
151,
|
|
1180
|
+
37,
|
|
1181
|
+
143,
|
|
1182
|
+
78,
|
|
1183
|
+
36,
|
|
1184
|
+
137,
|
|
1185
|
+
241,
|
|
1186
|
+
187,
|
|
1187
|
+
61,
|
|
1188
|
+
16,
|
|
1189
|
+
41,
|
|
1190
|
+
20,
|
|
1191
|
+
142,
|
|
1192
|
+
13,
|
|
1193
|
+
131,
|
|
1194
|
+
11,
|
|
1195
|
+
90,
|
|
1196
|
+
19,
|
|
1197
|
+
153,
|
|
1198
|
+
218,
|
|
1199
|
+
255,
|
|
1200
|
+
16,
|
|
1201
|
+
132,
|
|
1202
|
+
4,
|
|
1203
|
+
142,
|
|
1204
|
+
123,
|
|
1205
|
+
216,
|
|
1206
|
+
219,
|
|
1207
|
+
233,
|
|
1208
|
+
248,
|
|
1209
|
+
89
|
|
1210
|
+
];
|
|
1211
|
+
};
|
|
1212
|
+
};
|
|
939
1213
|
},
|
|
940
1214
|
{
|
|
941
1215
|
"name": "vault";
|
|
@@ -1019,6 +1293,154 @@ type StakePool = {
|
|
|
1019
1293
|
};
|
|
1020
1294
|
}
|
|
1021
1295
|
];
|
|
1296
|
+
},
|
|
1297
|
+
{
|
|
1298
|
+
"name": "unstakeAsWorker";
|
|
1299
|
+
"discriminator": [
|
|
1300
|
+
18,
|
|
1301
|
+
36,
|
|
1302
|
+
224,
|
|
1303
|
+
241,
|
|
1304
|
+
46,
|
|
1305
|
+
185,
|
|
1306
|
+
228,
|
|
1307
|
+
142
|
|
1308
|
+
];
|
|
1309
|
+
"accounts": [
|
|
1310
|
+
{
|
|
1311
|
+
"name": "stakePool";
|
|
1312
|
+
"writable": true;
|
|
1313
|
+
"relations": [
|
|
1314
|
+
"stakeEntry"
|
|
1315
|
+
];
|
|
1316
|
+
},
|
|
1317
|
+
{
|
|
1318
|
+
"name": "stakeEntry";
|
|
1319
|
+
"docs": [
|
|
1320
|
+
"Entry that stores Stake Metadata"
|
|
1321
|
+
];
|
|
1322
|
+
"writable": true;
|
|
1323
|
+
},
|
|
1324
|
+
{
|
|
1325
|
+
"name": "from";
|
|
1326
|
+
"docs": [
|
|
1327
|
+
"Stake Mint Token account"
|
|
1328
|
+
];
|
|
1329
|
+
"writable": true;
|
|
1330
|
+
"pda": {
|
|
1331
|
+
"seeds": [
|
|
1332
|
+
{
|
|
1333
|
+
"kind": "account";
|
|
1334
|
+
"path": "authority";
|
|
1335
|
+
},
|
|
1336
|
+
{
|
|
1337
|
+
"kind": "account";
|
|
1338
|
+
"path": "tokenProgram";
|
|
1339
|
+
},
|
|
1340
|
+
{
|
|
1341
|
+
"kind": "account";
|
|
1342
|
+
"path": "stakeMint";
|
|
1343
|
+
}
|
|
1344
|
+
];
|
|
1345
|
+
"program": {
|
|
1346
|
+
"kind": "const";
|
|
1347
|
+
"value": [
|
|
1348
|
+
140,
|
|
1349
|
+
151,
|
|
1350
|
+
37,
|
|
1351
|
+
143,
|
|
1352
|
+
78,
|
|
1353
|
+
36,
|
|
1354
|
+
137,
|
|
1355
|
+
241,
|
|
1356
|
+
187,
|
|
1357
|
+
61,
|
|
1358
|
+
16,
|
|
1359
|
+
41,
|
|
1360
|
+
20,
|
|
1361
|
+
142,
|
|
1362
|
+
13,
|
|
1363
|
+
131,
|
|
1364
|
+
11,
|
|
1365
|
+
90,
|
|
1366
|
+
19,
|
|
1367
|
+
153,
|
|
1368
|
+
218,
|
|
1369
|
+
255,
|
|
1370
|
+
16,
|
|
1371
|
+
132,
|
|
1372
|
+
4,
|
|
1373
|
+
142,
|
|
1374
|
+
123,
|
|
1375
|
+
216,
|
|
1376
|
+
219,
|
|
1377
|
+
233,
|
|
1378
|
+
248,
|
|
1379
|
+
89
|
|
1380
|
+
];
|
|
1381
|
+
};
|
|
1382
|
+
};
|
|
1383
|
+
},
|
|
1384
|
+
{
|
|
1385
|
+
"name": "vault";
|
|
1386
|
+
"docs": [
|
|
1387
|
+
"Escrow Account that stores Staked tokens"
|
|
1388
|
+
];
|
|
1389
|
+
"writable": true;
|
|
1390
|
+
"relations": [
|
|
1391
|
+
"stakePool"
|
|
1392
|
+
];
|
|
1393
|
+
},
|
|
1394
|
+
{
|
|
1395
|
+
"name": "to";
|
|
1396
|
+
"writable": true;
|
|
1397
|
+
},
|
|
1398
|
+
{
|
|
1399
|
+
"name": "authority";
|
|
1400
|
+
"writable": true;
|
|
1401
|
+
},
|
|
1402
|
+
{
|
|
1403
|
+
"name": "worker";
|
|
1404
|
+
"docs": [
|
|
1405
|
+
"Auto unstake worker"
|
|
1406
|
+
];
|
|
1407
|
+
"writable": true;
|
|
1408
|
+
"signer": true;
|
|
1409
|
+
"address": "wdrwhnCv4pzW8beKsbPa4S2UDZrXenjg16KJdKSpb5u";
|
|
1410
|
+
},
|
|
1411
|
+
{
|
|
1412
|
+
"name": "mint";
|
|
1413
|
+
"docs": [
|
|
1414
|
+
"Original mint of staked tokens"
|
|
1415
|
+
];
|
|
1416
|
+
"writable": true;
|
|
1417
|
+
"relations": [
|
|
1418
|
+
"stakePool"
|
|
1419
|
+
];
|
|
1420
|
+
},
|
|
1421
|
+
{
|
|
1422
|
+
"name": "stakeMint";
|
|
1423
|
+
"docs": [
|
|
1424
|
+
"Stake Mint used to exchanged Staked tokens to"
|
|
1425
|
+
];
|
|
1426
|
+
"writable": true;
|
|
1427
|
+
"relations": [
|
|
1428
|
+
"stakePool"
|
|
1429
|
+
];
|
|
1430
|
+
},
|
|
1431
|
+
{
|
|
1432
|
+
"name": "associatedTokenProgram";
|
|
1433
|
+
"address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL";
|
|
1434
|
+
},
|
|
1435
|
+
{
|
|
1436
|
+
"name": "tokenProgram";
|
|
1437
|
+
},
|
|
1438
|
+
{
|
|
1439
|
+
"name": "systemProgram";
|
|
1440
|
+
"address": "11111111111111111111111111111111";
|
|
1441
|
+
}
|
|
1442
|
+
];
|
|
1443
|
+
"args": [];
|
|
1022
1444
|
}
|
|
1023
1445
|
];
|
|
1024
1446
|
"accounts": [
|
|
@@ -1066,7 +1488,7 @@ type StakePool = {
|
|
|
1066
1488
|
{
|
|
1067
1489
|
"code": 6000;
|
|
1068
1490
|
"name": "invalidDuration";
|
|
1069
|
-
"msg": "Minimum duration must be less than the maximum";
|
|
1491
|
+
"msg": "Minimum duration must be less than the maximum, maximum should be a realistic number of seconds";
|
|
1070
1492
|
},
|
|
1071
1493
|
{
|
|
1072
1494
|
"code": 6001;
|
|
@@ -1161,7 +1583,42 @@ type StakePool = {
|
|
|
1161
1583
|
{
|
|
1162
1584
|
"code": 6019;
|
|
1163
1585
|
"name": "invalidMinDuration";
|
|
1164
|
-
"msg": "Minimum duration should be at least 1";
|
|
1586
|
+
"msg": "Minimum duration should be at least 1, for auto-unstake 7 days at least";
|
|
1587
|
+
},
|
|
1588
|
+
{
|
|
1589
|
+
"code": 6020;
|
|
1590
|
+
"name": "autoUnstakeNotPossible";
|
|
1591
|
+
"msg": "Auto unstake is not possible with unstake period or with a permissionless pool";
|
|
1592
|
+
},
|
|
1593
|
+
{
|
|
1594
|
+
"code": 6021;
|
|
1595
|
+
"name": "invalidExpiry";
|
|
1596
|
+
"msg": "Expiry can not be less than max duration";
|
|
1597
|
+
},
|
|
1598
|
+
{
|
|
1599
|
+
"code": 6022;
|
|
1600
|
+
"name": "stakePayerNotSupported";
|
|
1601
|
+
"msg": "Separate payer account is not supported when staking in a pool with auto-unstake";
|
|
1602
|
+
},
|
|
1603
|
+
{
|
|
1604
|
+
"code": 6023;
|
|
1605
|
+
"name": "stakeAmountExceedsMax";
|
|
1606
|
+
"msg": "Stake amount exceeds max total stake";
|
|
1607
|
+
},
|
|
1608
|
+
{
|
|
1609
|
+
"code": 6024;
|
|
1610
|
+
"name": "stakeDurationExceedsExpiry";
|
|
1611
|
+
"msg": "Stake duration exceeds stake pool expiry";
|
|
1612
|
+
},
|
|
1613
|
+
{
|
|
1614
|
+
"code": 6025;
|
|
1615
|
+
"name": "accountDelegateRevoked";
|
|
1616
|
+
"msg": "Token account delegate has been revoked by staker, can't burn tokens";
|
|
1617
|
+
},
|
|
1618
|
+
{
|
|
1619
|
+
"code": 6026;
|
|
1620
|
+
"name": "refundNotPossible";
|
|
1621
|
+
"msg": "Refund not possible for this stake entry";
|
|
1165
1622
|
}
|
|
1166
1623
|
];
|
|
1167
1624
|
"types": [
|
|
@@ -1302,6 +1759,13 @@ type StakePool = {
|
|
|
1302
1759
|
];
|
|
1303
1760
|
"type": "bool";
|
|
1304
1761
|
},
|
|
1762
|
+
{
|
|
1763
|
+
"name": "autoUnstake";
|
|
1764
|
+
"docs": [
|
|
1765
|
+
"Whether auto unstaking is enabled, copied from the stake pool for use in instructions that don't require the stake pool account"
|
|
1766
|
+
];
|
|
1767
|
+
"type": "bool";
|
|
1768
|
+
},
|
|
1305
1769
|
{
|
|
1306
1770
|
"name": "buffer";
|
|
1307
1771
|
"docs": [
|
|
@@ -1310,7 +1774,7 @@ type StakePool = {
|
|
|
1310
1774
|
"type": {
|
|
1311
1775
|
"array": [
|
|
1312
1776
|
"u8",
|
|
1313
|
-
|
|
1777
|
+
38
|
|
1314
1778
|
];
|
|
1315
1779
|
};
|
|
1316
1780
|
}
|
|
@@ -1441,6 +1905,34 @@ type StakePool = {
|
|
|
1441
1905
|
];
|
|
1442
1906
|
"type": "u64";
|
|
1443
1907
|
},
|
|
1908
|
+
{
|
|
1909
|
+
"name": "totalStakeCapped";
|
|
1910
|
+
"docs": [
|
|
1911
|
+
"Whether amount of total staked tokens is limited by `remaining_total_stake` - stored as separate flag to not deal with `Option`"
|
|
1912
|
+
];
|
|
1913
|
+
"type": "bool";
|
|
1914
|
+
},
|
|
1915
|
+
{
|
|
1916
|
+
"name": "remainingTotalStake";
|
|
1917
|
+
"docs": [
|
|
1918
|
+
"Remaining total amount of staked tokens (cumulative)"
|
|
1919
|
+
];
|
|
1920
|
+
"type": "u64";
|
|
1921
|
+
},
|
|
1922
|
+
{
|
|
1923
|
+
"name": "expiryTs";
|
|
1924
|
+
"docs": [
|
|
1925
|
+
"Time when stake pool expires, staking is not possible after expiration"
|
|
1926
|
+
];
|
|
1927
|
+
"type": "u64";
|
|
1928
|
+
},
|
|
1929
|
+
{
|
|
1930
|
+
"name": "autoUnstake";
|
|
1931
|
+
"docs": [
|
|
1932
|
+
"Whether auto unstaking is enabled, stake entries will be unstaked after duration"
|
|
1933
|
+
];
|
|
1934
|
+
"type": "bool";
|
|
1935
|
+
},
|
|
1444
1936
|
{
|
|
1445
1937
|
"name": "buffer";
|
|
1446
1938
|
"docs": [
|
|
@@ -1449,7 +1941,7 @@ type StakePool = {
|
|
|
1449
1941
|
"type": {
|
|
1450
1942
|
"array": [
|
|
1451
1943
|
"u8",
|
|
1452
|
-
|
|
1944
|
+
37
|
|
1453
1945
|
];
|
|
1454
1946
|
};
|
|
1455
1947
|
}
|