@dstoken-solana/rwa-rbac 0.2.0 → 0.3.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.
package/dist/index.js CHANGED
@@ -55,98 +55,6 @@ var metadata$1 = {
55
55
  description: "Created with Anchor"
56
56
  };
57
57
  var instructions$1 = [
58
- {
59
- name: "add_level_to_identity_account",
60
- discriminator: [
61
- 102,
62
- 204,
63
- 64,
64
- 169,
65
- 252,
66
- 177,
67
- 192,
68
- 232
69
- ],
70
- accounts: [
71
- {
72
- name: "payer",
73
- writable: true,
74
- signer: true
75
- },
76
- {
77
- name: "user",
78
- signer: true
79
- },
80
- {
81
- name: "controller_authority",
82
- relations: [
83
- "asset_access_controller"
84
- ]
85
- },
86
- {
87
- name: "asset_access_controller",
88
- relations: [
89
- "authorized_user_role"
90
- ]
91
- },
92
- {
93
- name: "authorized_user_role",
94
- optional: true
95
- },
96
- {
97
- name: "identity_registry_program",
98
- address: "GZsnjqT3c5zbHqsctrJ4EG4rbEfo7ZXyyUG7aDJNmxfA"
99
- },
100
- {
101
- name: "identity_registry"
102
- },
103
- {
104
- name: "identity_account",
105
- writable: true
106
- },
107
- {
108
- name: "identity_account_owner",
109
- docs: [
110
- "to ensure that it is not an Investor account. If it is an Investor account,",
111
- "CPI to IdentityMetadataRegistry should be called."
112
- ]
113
- },
114
- {
115
- name: "system_program",
116
- address: "11111111111111111111111111111111"
117
- },
118
- {
119
- name: "policy_engine_program"
120
- },
121
- {
122
- name: "policy_engine",
123
- writable: true
124
- },
125
- {
126
- name: "tracker_account"
127
- },
128
- {
129
- name: "asset_mint"
130
- },
131
- {
132
- name: "event_authority"
133
- }
134
- ],
135
- args: [
136
- {
137
- name: "level",
138
- type: "u8"
139
- },
140
- {
141
- name: "expiry",
142
- type: "i64"
143
- },
144
- {
145
- name: "enforce_limits",
146
- type: "bool"
147
- }
148
- ]
149
- },
150
58
  {
151
59
  name: "add_levels",
152
60
  discriminator: [
@@ -1250,6 +1158,12 @@ var instructions$1 = [
1250
1158
  {
1251
1159
  name: "identity_registry"
1252
1160
  },
1161
+ {
1162
+ name: "token_account"
1163
+ },
1164
+ {
1165
+ name: "asset_mint"
1166
+ },
1253
1167
  {
1254
1168
  name: "event_authority"
1255
1169
  }
@@ -1471,63 +1385,6 @@ var instructions$1 = [
1471
1385
  }
1472
1386
  ]
1473
1387
  },
1474
- {
1475
- name: "refresh_level_to_identity_account",
1476
- discriminator: [
1477
- 23,
1478
- 68,
1479
- 237,
1480
- 111,
1481
- 144,
1482
- 169,
1483
- 239,
1484
- 91
1485
- ],
1486
- accounts: [
1487
- {
1488
- name: "payer",
1489
- writable: true,
1490
- signer: true
1491
- },
1492
- {
1493
- name: "user",
1494
- signer: true
1495
- },
1496
- {
1497
- name: "controller_authority",
1498
- relations: [
1499
- "asset_access_controller"
1500
- ]
1501
- },
1502
- {
1503
- name: "asset_access_controller",
1504
- relations: [
1505
- "authorized_user_role"
1506
- ]
1507
- },
1508
- {
1509
- name: "authorized_user_role",
1510
- optional: true
1511
- },
1512
- {
1513
- name: "identity_registry_program",
1514
- address: "GZsnjqT3c5zbHqsctrJ4EG4rbEfo7ZXyyUG7aDJNmxfA"
1515
- },
1516
- {
1517
- name: "identity_registry"
1518
- },
1519
- {
1520
- name: "identity_account",
1521
- writable: true
1522
- }
1523
- ],
1524
- args: [
1525
- {
1526
- name: "cpi_data",
1527
- type: "bytes"
1528
- }
1529
- ]
1530
- },
1531
1388
  {
1532
1389
  name: "register_investor",
1533
1390
  discriminator: [
@@ -1753,90 +1610,6 @@ var instructions$1 = [
1753
1610
  args: [
1754
1611
  ]
1755
1612
  },
1756
- {
1757
- name: "remove_level_from_identity_account",
1758
- discriminator: [
1759
- 194,
1760
- 231,
1761
- 187,
1762
- 54,
1763
- 197,
1764
- 136,
1765
- 170,
1766
- 55
1767
- ],
1768
- accounts: [
1769
- {
1770
- name: "payer",
1771
- writable: true,
1772
- signer: true
1773
- },
1774
- {
1775
- name: "user",
1776
- signer: true
1777
- },
1778
- {
1779
- name: "controller_authority",
1780
- relations: [
1781
- "asset_access_controller"
1782
- ]
1783
- },
1784
- {
1785
- name: "asset_access_controller",
1786
- relations: [
1787
- "authorized_user_role"
1788
- ]
1789
- },
1790
- {
1791
- name: "authorized_user_role",
1792
- optional: true
1793
- },
1794
- {
1795
- name: "identity_registry_program",
1796
- address: "GZsnjqT3c5zbHqsctrJ4EG4rbEfo7ZXyyUG7aDJNmxfA"
1797
- },
1798
- {
1799
- name: "identity_registry"
1800
- },
1801
- {
1802
- name: "identity_account",
1803
- writable: true
1804
- },
1805
- {
1806
- name: "identity_account_owner",
1807
- docs: [
1808
- "to ensure that it is not an Investor account. If it is an Investor account,",
1809
- "CPI to IdentityMetadataRegistry should be called."
1810
- ]
1811
- },
1812
- {
1813
- name: "system_program",
1814
- address: "11111111111111111111111111111111"
1815
- },
1816
- {
1817
- name: "policy_engine_program"
1818
- },
1819
- {
1820
- name: "policy_engine",
1821
- writable: true
1822
- },
1823
- {
1824
- name: "tracker_account"
1825
- },
1826
- {
1827
- name: "asset_mint"
1828
- },
1829
- {
1830
- name: "event_authority"
1831
- }
1832
- ],
1833
- args: [
1834
- {
1835
- name: "cpi_data",
1836
- type: "bytes"
1837
- }
1838
- ]
1839
- },
1840
1613
  {
1841
1614
  name: "remove_levels",
1842
1615
  discriminator: [
@@ -2286,6 +2059,41 @@ var instructions$1 = [
2286
2059
  }
2287
2060
  ]
2288
2061
  },
2062
+ {
2063
+ name: "set_lut_address",
2064
+ discriminator: [
2065
+ 254,
2066
+ 239,
2067
+ 106,
2068
+ 70,
2069
+ 17,
2070
+ 87,
2071
+ 57,
2072
+ 202
2073
+ ],
2074
+ accounts: [
2075
+ {
2076
+ name: "user",
2077
+ signer: true
2078
+ },
2079
+ {
2080
+ name: "asset_access_controller",
2081
+ writable: true,
2082
+ relations: [
2083
+ "authorized_user_role"
2084
+ ]
2085
+ },
2086
+ {
2087
+ name: "authorized_user_role",
2088
+ optional: true
2089
+ },
2090
+ {
2091
+ name: "lut_address"
2092
+ }
2093
+ ],
2094
+ args: [
2095
+ ]
2096
+ },
2289
2097
  {
2290
2098
  name: "thaw_token_account",
2291
2099
  discriminator: [
@@ -2691,6 +2499,13 @@ var types$1 = [
2691
2499
  "Number of UserRoles created since initialization. Used for deriving all created UserRole PDAs."
2692
2500
  ],
2693
2501
  type: "u64"
2502
+ },
2503
+ {
2504
+ name: "lut_address",
2505
+ docs: [
2506
+ "Address of the lookup table."
2507
+ ],
2508
+ type: "pubkey"
2694
2509
  }
2695
2510
  ]
2696
2511
  }
@@ -3723,7 +3538,8 @@ exports.AdminFlags = void 0;
3723
3538
  AdminFlags[AdminFlags["MODIFY_USER_ROLE"] = 2] = "MODIFY_USER_ROLE";
3724
3539
  AdminFlags[AdminFlags["ASSIGN_OR_REMOVE_ANY_USER_ROLE"] = 4] = "ASSIGN_OR_REMOVE_ANY_USER_ROLE";
3725
3540
  AdminFlags[AdminFlags["ASSIGN_OR_REMOVE_CURRENT_ROLE"] = 8] = "ASSIGN_OR_REMOVE_CURRENT_ROLE";
3726
- AdminFlags[AdminFlags["ALL"] = 15] = "ALL";
3541
+ AdminFlags[AdminFlags["SET_LUT_ADDRESS"] = 16] = "SET_LUT_ADDRESS";
3542
+ AdminFlags[AdminFlags["ALL"] = 31] = "ALL";
3727
3543
  })(exports.AdminFlags || (exports.AdminFlags = {}));
3728
3544
  exports.MediciFlags = void 0;
3729
3545
  (function (MediciFlags) {
@@ -3890,16 +3706,6 @@ class AssetController {
3890
3706
  .instruction();
3891
3707
  });
3892
3708
  }
3893
- /**
3894
- * Asynchronously generates instructions to revoke assets.
3895
- * @param args - {@link VoidTokensArgs}
3896
- * @returns A Promise that resolves to the instructions to revoke assets.
3897
- */
3898
- voidTokenIxns(args) {
3899
- return __awaiter(this, void 0, void 0, function* () {
3900
- return this.rwaClient.assetController.voidTokenIxns(args);
3901
- });
3902
- }
3903
3709
  /**
3904
3710
  * Executes a token transfer.
3905
3711
  * @param args - {@link TransferTokensArgs}
@@ -3970,13 +3776,13 @@ class AssetController {
3970
3776
  /**
3971
3777
  * Asynchronously generates instructions to revoke tokens from a user.
3972
3778
  * @param args - {@link RevokeTokensArgs}
3973
- * @param payer - Payer public key.
3974
3779
  * @param signer - User signer public key.
3975
3780
  * @param assetAccessController - RBAC AssetAccessController account.
3781
+ * @param investorId - Optional investorId. Required if user is not an investor.
3976
3782
  * @param authorizedUserRole - Optional UserRole account. Required if user is not an admin.
3977
3783
  * @returns A Promise that resolves to the instructions to revoke.
3978
3784
  */
3979
- revokeTokenIxn(args, investorId, signer, assetAccessController, authorizedUserRole) {
3785
+ revokeTokenIxn(args, signer, assetAccessController, investorId, authorizedUserRole) {
3980
3786
  return __awaiter(this, void 0, void 0, function* () {
3981
3787
  if (!args.wallet) {
3982
3788
  throw new Error("Use wallet arg for wallet to revoke tokens from.");
@@ -3985,7 +3791,7 @@ class AssetController {
3985
3791
  args.owner = args.wallet;
3986
3792
  const revokeIx = yield rwaTokenSdk.getRevokeTokensIx(args, this.rwaClient.provider);
3987
3793
  const identityRegistry = rwaTokenSdk.getIdentityRegistryPda(args.assetMint);
3988
- const investorPda = deriveInvestorPda(investorId, identityRegistry);
3794
+ const investorPda = investorId ? deriveInvestorPda(investorId, identityRegistry) : null;
3989
3795
  const ixData = revokeIx.data;
3990
3796
  const assetController = rwaTokenSdk.getAssetControllerPda(args.assetMint);
3991
3797
  const revokeTokenAccount = splToken.getAssociatedTokenAddressSync(new web3_js.PublicKey(args.assetMint), new web3_js.PublicKey(args.wallet), false, splToken.TOKEN_2022_PROGRAM_ID);
@@ -4001,8 +3807,8 @@ class AssetController {
4001
3807
  assetController,
4002
3808
  revokeTokenAccount,
4003
3809
  identityRegistry,
4004
- identityAccount: rwaTokenSdk.getIdentityAccountPda(args.assetMint, investorPda.toString()),
4005
- trackerAccount: rwaTokenSdk.getTrackerAccountPda(args.assetMint, investorPda.toString()),
3810
+ identityAccount: rwaTokenSdk.getIdentityAccountPda(args.assetMint, investorId ? investorPda.toString() : args.owner),
3811
+ trackerAccount: rwaTokenSdk.getTrackerAccountPda(args.assetMint, investorId ? investorPda.toString() : args.owner),
4006
3812
  policyEngineProgram: rwaTokenSdk.policyEngineProgramId,
4007
3813
  policyEngine: rwaTokenSdk.getPolicyEnginePda(args.assetMint),
4008
3814
  walletIdentityAccount: rwaTokenSdk.getWalletIdentityAccountPda(args.assetMint, args.wallet),
@@ -4490,112 +4296,6 @@ class IdentityRegistry {
4490
4296
  return returnIx;
4491
4297
  });
4492
4298
  }
4493
- /**
4494
- * Asynchronously update a non-investor user identity account level.
4495
- * @param args - {@link AddLevelToIdentityAccountArgs}
4496
- * @param assetAccessController - RBAC AssetAccessController account.
4497
- * @param authorizedUserRole - Optional UserRole account. Required if user is not an admin.
4498
- * @returns A Promise that resolves to the instructions to update user account identity.
4499
- * */
4500
- addIdentityLevelToUserAccount(args, assetAccessController, authorizedUserRole) {
4501
- return __awaiter(this, void 0, void 0, function* () {
4502
- var _a;
4503
- const identityAccount = rwaTokenSdk.getIdentityAccountPda(args.assetMint, args.owner);
4504
- const controllerAuthority = deriveControllerAuthorityPda(assetAccessController);
4505
- return this.rbacProgram.methods
4506
- .addLevelToIdentityAccount(args.levels[0], args.expiries[0], (_a = args.ignorePolicy) !== null && _a !== void 0 ? _a : false)
4507
- .accountsStrict({
4508
- payer: args.payer,
4509
- user: args.signer,
4510
- controllerAuthority,
4511
- assetAccessController,
4512
- authorizedUserRole: authorizedUserRole || null,
4513
- identityRegistryProgram: rwaTokenSdk.identityRegistryProgramId,
4514
- identityRegistry: rwaTokenSdk.getIdentityRegistryPda(args.assetMint),
4515
- identityAccount,
4516
- identityAccountOwner: args.owner,
4517
- systemProgram: web3_js.SystemProgram.programId,
4518
- policyEngineProgram: rwaTokenSdk.policyEngineProgramId,
4519
- policyEngine: rwaTokenSdk.getPolicyEnginePda(args.assetMint),
4520
- trackerAccount: rwaTokenSdk.getTrackerAccountPda(args.assetMint, args.owner),
4521
- assetMint: args.assetMint,
4522
- eventAuthority: rwaTokenSdk.getIdentityRegistryEventAuthority(),
4523
- })
4524
- .instruction();
4525
- });
4526
- }
4527
- /**
4528
- * Asynchronously reduces a non-Investor user identity account level.
4529
- * @param args - {@link RemoveLevelFromIdentityAccount}
4530
- * @param assetAccessController - RBAC AssetAccessController account.
4531
- * @param authorizedUserRole - Optional UserRole account. Required if user is not an admin.
4532
- * @returns A Promise that resolves to the instructions to reduce the level of a user identity account.
4533
- */
4534
- removeIdentityLevelFromUserAccount(args, assetAccessController, authorizedUserRole) {
4535
- return __awaiter(this, void 0, void 0, function* () {
4536
- const removeLevelIx = yield rwaTokenSdk.getRemoveLevelFromIdentityAccount(args, this.rwaClient.provider);
4537
- const ixData = removeLevelIx.data;
4538
- const controllerAuthority = deriveControllerAuthorityPda(assetAccessController);
4539
- const identityAccount = rwaTokenSdk.getIdentityAccountPda(args.assetMint, args.owner);
4540
- return this.rbacProgram.methods
4541
- .removeLevelFromIdentityAccount(ixData)
4542
- .accountsStrict({
4543
- payer: args.payer,
4544
- user: args.signer,
4545
- controllerAuthority,
4546
- assetAccessController,
4547
- authorizedUserRole: authorizedUserRole || null,
4548
- identityRegistryProgram: rwaTokenSdk.identityRegistryProgramId,
4549
- identityRegistry: rwaTokenSdk.getIdentityRegistryPda(args.assetMint),
4550
- identityAccount,
4551
- identityAccountOwner: args.owner,
4552
- systemProgram: web3_js.SystemProgram.programId,
4553
- policyEngineProgram: rwaTokenSdk.policyEngineProgramId,
4554
- policyEngine: rwaTokenSdk.getPolicyEnginePda(args.assetMint),
4555
- trackerAccount: rwaTokenSdk.getTrackerAccountPda(args.assetMint, args.owner),
4556
- assetMint: args.assetMint,
4557
- eventAuthority: rwaTokenSdk.getIdentityRegistryEventAuthority(),
4558
- })
4559
- .instruction();
4560
- });
4561
- }
4562
- /**
4563
- * Asynchronously generates instruction to refresh expiry on an Identity Account level.
4564
- * @param args - {@link RefreshLevelArgs}
4565
- * @param assetAccessController - RBAC AssetAccessController account.
4566
- * @param authorizedUserRole - Optional UserRole account. Required if user is not an admin.
4567
- * @returns A Promise that resolves to refresh expiry on an Identity Account level.
4568
- * */
4569
- refreshLevelToIdentityAccountIxn(args, assetAccessController, authorizedUserRole) {
4570
- return __awaiter(this, void 0, void 0, function* () {
4571
- const identityProgram = rwaTokenSdk.getIdentityRegistryProgram(this.rwaClient.provider);
4572
- const identityRegistry = rwaTokenSdk.getIdentityRegistryPda(args.assetMint);
4573
- const identityAccount = rwaTokenSdk.getIdentityAccountPda(args.assetMint, args.owner);
4574
- const controllerAuthority = deriveControllerAuthorityPda(assetAccessController);
4575
- const refreshIx = yield identityProgram.methods
4576
- .refreshLevelToIdentityAccount(args.level, args.expiry)
4577
- .accountsStrict({
4578
- payer: args.payer,
4579
- signer: controllerAuthority,
4580
- identityRegistry,
4581
- identityAccount,
4582
- })
4583
- .instruction();
4584
- return this.rbacProgram.methods
4585
- .refreshLevelToIdentityAccount(refreshIx.data)
4586
- .accountsStrict({
4587
- payer: args.payer,
4588
- user: args.signer,
4589
- controllerAuthority,
4590
- assetAccessController,
4591
- authorizedUserRole: authorizedUserRole || null,
4592
- identityRegistryProgram: rwaTokenSdk.identityRegistryProgramId,
4593
- identityRegistry,
4594
- identityAccount,
4595
- })
4596
- .instruction();
4597
- });
4598
- }
4599
4299
  /**
4600
4300
  * Asynchronously generates instruction to attach wallet to identity.
4601
4301
  * @param args - {@link AttachDetachWalletArgs}
@@ -4658,6 +4358,7 @@ class IdentityRegistry {
4658
4358
  const identityRegistry = rwaTokenSdk.getIdentityRegistryPda(args.assetMint);
4659
4359
  const identityAccount = rwaTokenSdk.getIdentityAccountPda(args.assetMint, args.owner);
4660
4360
  const walletIdentity = rwaTokenSdk.getWalletIdentityAccountPda(args.assetMint, args.wallet.toString());
4361
+ const tokenAccount = splToken.getAssociatedTokenAddressSync(new web3_js.PublicKey(args.assetMint), new web3_js.PublicKey(args.wallet), false, splToken.TOKEN_2022_PROGRAM_ID);
4661
4362
  const ix = yield identityProgram.methods
4662
4363
  .detachWalletFromIdentity()
4663
4364
  .accountsStrict({
@@ -4668,6 +4369,8 @@ class IdentityRegistry {
4668
4369
  identityRegistry,
4669
4370
  eventAuthority: rwaTokenSdk.getIdentityRegistryEventAuthority(),
4670
4371
  program: rwaTokenSdk.identityRegistryProgramId,
4372
+ tokenAccount: tokenAccount,
4373
+ assetMint: args.assetMint,
4671
4374
  })
4672
4375
  .instruction();
4673
4376
  return this.rbacProgram.methods
@@ -4683,6 +4386,8 @@ class IdentityRegistry {
4683
4386
  identityAccount,
4684
4387
  identityRegistry,
4685
4388
  eventAuthority: rwaTokenSdk.getIdentityRegistryEventAuthority(),
4389
+ tokenAccount: tokenAccount,
4390
+ assetMint: args.assetMint,
4686
4391
  })
4687
4392
  .instruction();
4688
4393
  });
@@ -5222,6 +4927,24 @@ class RwaRbacClient {
5222
4927
  .instruction();
5223
4928
  });
5224
4929
  }
4930
+ /**
4931
+ * Asynchronously generates instruction to set lookup table address field in the AssetAccessController.
4932
+ * @param args - {@link SetLookuptableAddressArgs}
4933
+ * @returns A Promise that resolves to the instruction to set lookup table address.
4934
+ */
4935
+ setLookuptableAddressIxn(args) {
4936
+ return __awaiter(this, void 0, void 0, function* () {
4937
+ return this.rbacProgram.methods
4938
+ .setLutAddress()
4939
+ .accountsStrict({
4940
+ user: args.signer,
4941
+ assetAccessController: args.assetAccessController,
4942
+ authorizedUserRole: args.authorizedUserRole || null,
4943
+ lutAddress: args.lutAddress,
4944
+ })
4945
+ .instruction();
4946
+ });
4947
+ }
5225
4948
  }
5226
4949
 
5227
4950
  /**
@@ -4,7 +4,8 @@ export declare enum AdminFlags {
4
4
  MODIFY_USER_ROLE = 2,
5
5
  ASSIGN_OR_REMOVE_ANY_USER_ROLE = 4,
6
6
  ASSIGN_OR_REMOVE_CURRENT_ROLE = 8,
7
- ALL = 15
7
+ SET_LUT_ADDRESS = 16,
8
+ ALL = 31
8
9
  }
9
10
  export declare enum MediciFlags {
10
11
  NONE = 0,
@@ -1 +1 @@
1
- {"version":3,"file":"flags.d.ts","sourceRoot":"","sources":["../../src/types/flags.ts"],"names":[],"mappings":"AAAA,oBAAY,UAAU;IACpB,IAAI,IAAI;IACR,0BAA0B,IAAS;IACnC,gBAAgB,IAAS;IACzB,8BAA8B,IAAS;IACvC,6BAA6B,IAAS;IACtC,GAAG,KAAe;CACnB;AAED,oBAAY,WAAW;IACrB,IAAI,IAAI;IACR,qBAAqB,IAAS;IAC9B,kBAAkB,IAAS;IAC3B,oBAAoB,IAAS;IAC7B,YAAY,IAAS;IACrB,aAAa,KAAS;IACtB,kBAAkB,KAAS;IAC3B,iCAAiC,KAAS;IAC1C,wBAAwB,MAAS;IACjC,qBAAqB,MAAS;IAC9B,0BAA0B,MAAS;IACnC,UAAU,OAAU;IACpB,6BAA6B,OAAU;IACvC,iBAAiB,OAAU;IAC3B,aAAa,OAAU;IACvB,eAAe,QAAU;IACzB,sBAAsB,QAAU;IAChC,iCAAiC,QAAU;IAC3C,yBAAyB,SAAU;IACnC,2BAA2B,SAAU;IACrC,YAAY,SAAU;IACtB,uBAAuB,UAAU;IACjC,qBAAqB,UAAU;IAC/B,oBAAoB,UAAU;IAC9B,cAAc,UAAU;IACxB,iBAAiB,WAAU;IAC3B,eAAe,WAAU;IACzB,qBAAqB,WAAU;IAC/B,cAAc,YAAU;IACxB,cAAc,YAAU;IACxB,wBAAwB,YAAU;IAClC,uBAAuB,aAAU;IACjC,GAAG,aAA4B;CAChC"}
1
+ {"version":3,"file":"flags.d.ts","sourceRoot":"","sources":["../../src/types/flags.ts"],"names":[],"mappings":"AAAA,oBAAY,UAAU;IACpB,IAAI,IAAI;IACR,0BAA0B,IAAS;IACnC,gBAAgB,IAAS;IACzB,8BAA8B,IAAS;IACvC,6BAA6B,IAAS;IACtC,eAAe,KAAS;IACxB,GAAG,KAAe;CACnB;AAED,oBAAY,WAAW;IACrB,IAAI,IAAI;IACR,qBAAqB,IAAS;IAC9B,kBAAkB,IAAS;IAC3B,oBAAoB,IAAS;IAC7B,YAAY,IAAS;IACrB,aAAa,KAAS;IACtB,kBAAkB,KAAS;IAC3B,iCAAiC,KAAS;IAC1C,wBAAwB,MAAS;IACjC,qBAAqB,MAAS;IAC9B,0BAA0B,MAAS;IACnC,UAAU,OAAU;IACpB,6BAA6B,OAAU;IACvC,iBAAiB,OAAU;IAC3B,aAAa,OAAU;IACvB,eAAe,QAAU;IACzB,sBAAsB,QAAU;IAChC,iCAAiC,QAAU;IAC3C,yBAAyB,SAAU;IACnC,2BAA2B,SAAU;IACrC,YAAY,SAAU;IACtB,uBAAuB,UAAU;IACjC,qBAAqB,UAAU;IAC/B,oBAAoB,UAAU;IAC9B,cAAc,UAAU;IACxB,iBAAiB,WAAU;IAC3B,eAAe,WAAU;IACzB,qBAAqB,WAAU;IAC/B,cAAc,YAAU;IACxB,cAAc,YAAU;IACxB,wBAAwB,YAAU;IAClC,uBAAuB,aAAU;IACjC,GAAG,aAA4B;CAChC"}