@kong-ui-public/forms 4.26.1 → 4.27.0

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.
Files changed (33) hide show
  1. package/dist/forms.es.js +3560 -2941
  2. package/dist/forms.umd.js +4 -4
  3. package/dist/style.css +1 -1
  4. package/dist/types/components/FormGenerator.vue.d.ts.map +1 -1
  5. package/dist/types/components/FormGroup.vue.d.ts.map +1 -1
  6. package/dist/types/components/FormRedis.vue.d.ts.map +1 -1
  7. package/dist/types/components/RedisConfigSelect.vue.d.ts.map +1 -1
  8. package/dist/types/components/fields/AutoSuggest.vue.d.ts.map +1 -1
  9. package/dist/types/components/fields/FieldAdvanced.vue.d.ts.map +1 -1
  10. package/dist/types/components/fields/FieldArray.vue.d.ts.map +1 -1
  11. package/dist/types/components/fields/FieldArrayCardContainer.vue.d.ts.map +1 -1
  12. package/dist/types/components/fields/FieldArrayItem.vue.d.ts.map +1 -1
  13. package/dist/types/components/fields/FieldArrayMultiItem.vue.d.ts.map +1 -1
  14. package/dist/types/components/fields/FieldAutoSuggest.vue.d.ts.map +1 -1
  15. package/dist/types/components/fields/FieldAutoSuggestLegacy.vue.d.ts.map +1 -1
  16. package/dist/types/components/fields/FieldInput.vue.d.ts.map +1 -1
  17. package/dist/types/components/fields/FieldKeyValuePairs.vue.d.ts.map +1 -1
  18. package/dist/types/components/fields/FieldMetric.vue.d.ts.map +1 -1
  19. package/dist/types/components/fields/FieldObject.vue.d.ts.map +1 -1
  20. package/dist/types/components/fields/FieldObjectAdvanced.vue.d.ts.map +1 -1
  21. package/dist/types/components/fields/FieldRadio.vue.d.ts.map +1 -1
  22. package/dist/types/components/fields/FieldScopedEntitySelect.vue.d.ts.map +1 -1
  23. package/dist/types/components/fields/FieldSelectionGroup.vue.d.ts.map +1 -1
  24. package/dist/types/components/fields/FieldStringArray.vue.d.ts.map +1 -1
  25. package/dist/types/components/forms/ACMEForm.vue.d.ts.map +1 -1
  26. package/dist/types/components/forms/ExitTransformer.vue.d.ts.map +1 -1
  27. package/dist/types/components/forms/OIDCForm.vue.d.ts +410 -4
  28. package/dist/types/components/forms/OIDCForm.vue.d.ts.map +1 -1
  29. package/dist/types/components/forms/OIDCPrincipals.vue.d.ts +400 -4
  30. package/dist/types/components/forms/OIDCPrincipals.vue.d.ts.map +1 -1
  31. package/dist/types/components/forms/PostFunction.vue.d.ts.map +1 -1
  32. package/dist/types/components/forms/RLAForm.vue.d.ts.map +1 -1
  33. package/package.json +4 -4
@@ -41,6 +41,7 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
41
41
  init: boolean;
42
42
  authMethods: never[];
43
43
  sessionManagement: boolean;
44
+ principalsMode: null;
44
45
  globalFields: null;
45
46
  commonFieldsSchema: null;
46
47
  authFieldsSchema: null;
@@ -61,10 +62,19 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
61
62
  displayForm(): any;
62
63
  hasPrincipalsFields(): any;
63
64
  isKonnect(): boolean;
65
+ useNewAuthMethodsField(): boolean;
66
+ authMethodItems(): {
67
+ label: any;
68
+ value: any;
69
+ }[];
70
+ selectedAuthMethods(): any[];
64
71
  }, {
65
72
  oidcSetup(): void;
66
73
  getAuthMethodsValue(prop: any, evt: any): any[];
67
74
  handleUpdate(evt: any, prop: any): void;
75
+ handleAuthMethodsSelect(selectedValues: any): void;
76
+ handleSessionChange(value: any): void;
77
+ handlePrincipalsModeChange(mode: any): void;
68
78
  }, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
69
79
  formModel: {
70
80
  type: ObjectConstructor;
@@ -659,15 +669,76 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
659
669
  type: ObjectConstructor;
660
670
  default: () => {};
661
671
  };
672
+ commonFieldsSchema: {
673
+ type: ObjectConstructor;
674
+ required: true;
675
+ };
662
676
  onModelUpdated: {
663
677
  type: FunctionConstructor;
664
678
  required: true;
665
679
  };
666
- }>, {}, {}, {
667
- principalsSchema(): {
680
+ isEditing: {
681
+ type: BooleanConstructor;
682
+ default: boolean;
683
+ };
684
+ }>, {}, {
685
+ MODE_KONG_IDENTITY: string;
686
+ MODE_EXTERNAL: string;
687
+ lookupMethodItems: {
688
+ label: string;
689
+ value: string;
690
+ description: string;
691
+ }[];
692
+ KUI_ICON_SIZE_20: "12px";
693
+ KUI_ICON_SIZE_30: "16px";
694
+ KUI_ICON_SIZE_40: "20px";
695
+ selectedMode: string;
696
+ selectedLookupMethod: string;
697
+ kongIdentityServers: never[];
698
+ kongIdentityServersLoading: boolean;
699
+ clients: never[];
700
+ clientsLoading: boolean;
701
+ selectedServer: null;
702
+ restoringServer: boolean;
703
+ leavePromptType: null;
704
+ }, {
705
+ issuerFieldsSchema(): {
668
706
  fields: any;
669
707
  };
670
- }, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
708
+ externalClientIdField(): any;
709
+ externalClientSecretField(): any;
710
+ kongIdentityServerItems(): {
711
+ label: any;
712
+ value: any;
713
+ }[];
714
+ clientItems(): {
715
+ label: any;
716
+ value: any;
717
+ }[];
718
+ clientIdArray(): any[];
719
+ clientSecretArray(): any[];
720
+ isRemoveClientDisabled(): true;
721
+ }, {
722
+ fetchKongIdentityServers(): Promise<void>;
723
+ fetchClients(serverId: any): Promise<void>;
724
+ handleServerChange(serverId: any): void;
725
+ handleClientChange(index: any, clientId: any): void;
726
+ addClientRow(): void;
727
+ removeClientRow(index: any): void;
728
+ handleClientSecretChange(index: any, value: any): void;
729
+ getClientItemsForRow(index: any): {
730
+ disabled: boolean;
731
+ label: any;
732
+ value: any;
733
+ }[];
734
+ getIdentifierClaimInputValue(): any;
735
+ handleIdentifierClaimChange(rawValue: any): void;
736
+ handleMatchConsumerChange(checked: any): void;
737
+ handleLookupMethodChange(value: any): void;
738
+ updateField(field: any, value: any): void;
739
+ handleLeaveConfirmed(): void;
740
+ handleModeChange(newMode: any): void;
741
+ }, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "mode-change"[], "mode-change", import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
671
742
  formModel: {
672
743
  type: ObjectConstructor;
673
744
  required: true;
@@ -680,12 +751,23 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
680
751
  type: ObjectConstructor;
681
752
  default: () => {};
682
753
  };
754
+ commonFieldsSchema: {
755
+ type: ObjectConstructor;
756
+ required: true;
757
+ };
683
758
  onModelUpdated: {
684
759
  type: FunctionConstructor;
685
760
  required: true;
686
761
  };
687
- }>> & Readonly<{}>, {
762
+ isEditing: {
763
+ type: BooleanConstructor;
764
+ default: boolean;
765
+ };
766
+ }>> & Readonly<{
767
+ "onMode-change"?: ((...args: any[]) => any) | undefined;
768
+ }>, {
688
769
  formOptions: Record<string, any>;
770
+ isEditing: boolean;
689
771
  }, {}, {
690
772
  VueFormGenerator: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
691
773
  schema: {
@@ -1225,6 +1307,330 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
1225
1307
  }, {}, string, () => {
1226
1308
  autofillSlot?: import("vue").Slot<any> | undefined;
1227
1309
  }, true, {}, any>;
1310
+ AddIcon: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
1311
+ title: {
1312
+ type: StringConstructor;
1313
+ required: false;
1314
+ default: string;
1315
+ };
1316
+ color: {
1317
+ type: StringConstructor;
1318
+ required: false;
1319
+ default: string;
1320
+ };
1321
+ display: {
1322
+ type: StringConstructor;
1323
+ required: false;
1324
+ default: string;
1325
+ };
1326
+ decorative: {
1327
+ type: BooleanConstructor;
1328
+ required: false;
1329
+ default: boolean;
1330
+ };
1331
+ size: {
1332
+ type: (StringConstructor | NumberConstructor)[];
1333
+ required: false;
1334
+ default: "24px";
1335
+ validator: (sizeValue: number | string) => boolean;
1336
+ };
1337
+ as: {
1338
+ type: StringConstructor;
1339
+ required: false;
1340
+ default: string;
1341
+ };
1342
+ staticIds: {
1343
+ type: BooleanConstructor;
1344
+ default: boolean;
1345
+ };
1346
+ }>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
1347
+ title: {
1348
+ type: StringConstructor;
1349
+ required: false;
1350
+ default: string;
1351
+ };
1352
+ color: {
1353
+ type: StringConstructor;
1354
+ required: false;
1355
+ default: string;
1356
+ };
1357
+ display: {
1358
+ type: StringConstructor;
1359
+ required: false;
1360
+ default: string;
1361
+ };
1362
+ decorative: {
1363
+ type: BooleanConstructor;
1364
+ required: false;
1365
+ default: boolean;
1366
+ };
1367
+ size: {
1368
+ type: (StringConstructor | NumberConstructor)[];
1369
+ required: false;
1370
+ default: "24px";
1371
+ validator: (sizeValue: number | string) => boolean;
1372
+ };
1373
+ as: {
1374
+ type: StringConstructor;
1375
+ required: false;
1376
+ default: string;
1377
+ };
1378
+ staticIds: {
1379
+ type: BooleanConstructor;
1380
+ default: boolean;
1381
+ };
1382
+ }>> & Readonly<{}>, {
1383
+ title: string;
1384
+ color: string;
1385
+ display: string;
1386
+ decorative: boolean;
1387
+ size: string | number;
1388
+ as: string;
1389
+ staticIds: boolean;
1390
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
1391
+ CloseIcon: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
1392
+ title: {
1393
+ type: StringConstructor;
1394
+ required: false;
1395
+ default: string;
1396
+ };
1397
+ color: {
1398
+ type: StringConstructor;
1399
+ required: false;
1400
+ default: string;
1401
+ };
1402
+ display: {
1403
+ type: StringConstructor;
1404
+ required: false;
1405
+ default: string;
1406
+ };
1407
+ decorative: {
1408
+ type: BooleanConstructor;
1409
+ required: false;
1410
+ default: boolean;
1411
+ };
1412
+ size: {
1413
+ type: (StringConstructor | NumberConstructor)[];
1414
+ required: false;
1415
+ default: "24px";
1416
+ validator: (sizeValue: number | string) => boolean;
1417
+ };
1418
+ as: {
1419
+ type: StringConstructor;
1420
+ required: false;
1421
+ default: string;
1422
+ };
1423
+ staticIds: {
1424
+ type: BooleanConstructor;
1425
+ default: boolean;
1426
+ };
1427
+ }>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
1428
+ title: {
1429
+ type: StringConstructor;
1430
+ required: false;
1431
+ default: string;
1432
+ };
1433
+ color: {
1434
+ type: StringConstructor;
1435
+ required: false;
1436
+ default: string;
1437
+ };
1438
+ display: {
1439
+ type: StringConstructor;
1440
+ required: false;
1441
+ default: string;
1442
+ };
1443
+ decorative: {
1444
+ type: BooleanConstructor;
1445
+ required: false;
1446
+ default: boolean;
1447
+ };
1448
+ size: {
1449
+ type: (StringConstructor | NumberConstructor)[];
1450
+ required: false;
1451
+ default: "24px";
1452
+ validator: (sizeValue: number | string) => boolean;
1453
+ };
1454
+ as: {
1455
+ type: StringConstructor;
1456
+ required: false;
1457
+ default: string;
1458
+ };
1459
+ staticIds: {
1460
+ type: BooleanConstructor;
1461
+ default: boolean;
1462
+ };
1463
+ }>> & Readonly<{}>, {
1464
+ title: string;
1465
+ color: string;
1466
+ display: string;
1467
+ decorative: boolean;
1468
+ size: string | number;
1469
+ as: string;
1470
+ staticIds: boolean;
1471
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
1472
+ KeyIcon: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
1473
+ title: {
1474
+ type: StringConstructor;
1475
+ required: false;
1476
+ default: string;
1477
+ };
1478
+ color: {
1479
+ type: StringConstructor;
1480
+ required: false;
1481
+ default: string;
1482
+ };
1483
+ display: {
1484
+ type: StringConstructor;
1485
+ required: false;
1486
+ default: string;
1487
+ };
1488
+ decorative: {
1489
+ type: BooleanConstructor;
1490
+ required: false;
1491
+ default: boolean;
1492
+ };
1493
+ size: {
1494
+ type: (StringConstructor | NumberConstructor)[];
1495
+ required: false;
1496
+ default: "24px";
1497
+ validator: (sizeValue: number | string) => boolean;
1498
+ };
1499
+ as: {
1500
+ type: StringConstructor;
1501
+ required: false;
1502
+ default: string;
1503
+ };
1504
+ staticIds: {
1505
+ type: BooleanConstructor;
1506
+ default: boolean;
1507
+ };
1508
+ }>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
1509
+ title: {
1510
+ type: StringConstructor;
1511
+ required: false;
1512
+ default: string;
1513
+ };
1514
+ color: {
1515
+ type: StringConstructor;
1516
+ required: false;
1517
+ default: string;
1518
+ };
1519
+ display: {
1520
+ type: StringConstructor;
1521
+ required: false;
1522
+ default: string;
1523
+ };
1524
+ decorative: {
1525
+ type: BooleanConstructor;
1526
+ required: false;
1527
+ default: boolean;
1528
+ };
1529
+ size: {
1530
+ type: (StringConstructor | NumberConstructor)[];
1531
+ required: false;
1532
+ default: "24px";
1533
+ validator: (sizeValue: number | string) => boolean;
1534
+ };
1535
+ as: {
1536
+ type: StringConstructor;
1537
+ required: false;
1538
+ default: string;
1539
+ };
1540
+ staticIds: {
1541
+ type: BooleanConstructor;
1542
+ default: boolean;
1543
+ };
1544
+ }>> & Readonly<{}>, {
1545
+ title: string;
1546
+ color: string;
1547
+ display: string;
1548
+ decorative: boolean;
1549
+ size: string | number;
1550
+ as: string;
1551
+ staticIds: boolean;
1552
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
1553
+ WorldIcon: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
1554
+ title: {
1555
+ type: StringConstructor;
1556
+ required: false;
1557
+ default: string;
1558
+ };
1559
+ color: {
1560
+ type: StringConstructor;
1561
+ required: false;
1562
+ default: string;
1563
+ };
1564
+ display: {
1565
+ type: StringConstructor;
1566
+ required: false;
1567
+ default: string;
1568
+ };
1569
+ decorative: {
1570
+ type: BooleanConstructor;
1571
+ required: false;
1572
+ default: boolean;
1573
+ };
1574
+ size: {
1575
+ type: (StringConstructor | NumberConstructor)[];
1576
+ required: false;
1577
+ default: "24px";
1578
+ validator: (sizeValue: number | string) => boolean;
1579
+ };
1580
+ as: {
1581
+ type: StringConstructor;
1582
+ required: false;
1583
+ default: string;
1584
+ };
1585
+ staticIds: {
1586
+ type: BooleanConstructor;
1587
+ default: boolean;
1588
+ };
1589
+ }>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
1590
+ title: {
1591
+ type: StringConstructor;
1592
+ required: false;
1593
+ default: string;
1594
+ };
1595
+ color: {
1596
+ type: StringConstructor;
1597
+ required: false;
1598
+ default: string;
1599
+ };
1600
+ display: {
1601
+ type: StringConstructor;
1602
+ required: false;
1603
+ default: string;
1604
+ };
1605
+ decorative: {
1606
+ type: BooleanConstructor;
1607
+ required: false;
1608
+ default: boolean;
1609
+ };
1610
+ size: {
1611
+ type: (StringConstructor | NumberConstructor)[];
1612
+ required: false;
1613
+ default: "24px";
1614
+ validator: (sizeValue: number | string) => boolean;
1615
+ };
1616
+ as: {
1617
+ type: StringConstructor;
1618
+ required: false;
1619
+ default: string;
1620
+ };
1621
+ staticIds: {
1622
+ type: BooleanConstructor;
1623
+ default: boolean;
1624
+ };
1625
+ }>> & Readonly<{}>, {
1626
+ title: string;
1627
+ color: string;
1628
+ display: string;
1629
+ decorative: boolean;
1630
+ size: string | number;
1631
+ as: string;
1632
+ staticIds: boolean;
1633
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
1228
1634
  }, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
1229
1635
  }, {}, string, () => {
1230
1636
  autofillSlot: import("vue").Slot<any> | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"OIDCForm.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/forms/OIDCForm.vue"],"names":[],"mappings":"wBAymBqB,OAAO,YAAY;;AAyWxC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA2UG"}
1
+ {"version":3,"file":"OIDCForm.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/forms/OIDCForm.vue"],"names":[],"mappings":"wBA2vBqB,OAAO,YAAY;;AAwgBxC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAyZG"}