@1upmonster/duel 0.1.7 → 0.2.1

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 (181) hide show
  1. package/dist/admin.d.ts +20 -42
  2. package/dist/admin.js +82 -118
  3. package/dist/encryption.js +1 -2
  4. package/dist/generated/duel/accounts/index.d.ts +10 -0
  5. package/dist/generated/duel/accounts/index.js +11 -0
  6. package/dist/generated/duel/accounts/matchTicket.d.ts +38 -0
  7. package/dist/generated/duel/accounts/matchTicket.js +45 -0
  8. package/dist/generated/duel/accounts/queue.d.ts +42 -0
  9. package/dist/generated/duel/accounts/queue.js +45 -0
  10. package/dist/generated/duel/accounts/tenant.d.ts +41 -0
  11. package/dist/generated/duel/accounts/tenant.js +44 -0
  12. package/dist/generated/duel/errors/duel.d.ts +33 -0
  13. package/dist/generated/duel/errors/duel.js +37 -0
  14. package/dist/generated/duel/errors/index.d.ts +8 -0
  15. package/dist/generated/duel/errors/index.js +9 -0
  16. package/dist/generated/duel/index.d.ts +12 -0
  17. package/dist/generated/duel/index.js +13 -0
  18. package/dist/generated/duel/instructions/cancelTicket.d.ts +45 -0
  19. package/dist/generated/duel/instructions/cancelTicket.js +56 -0
  20. package/dist/generated/duel/instructions/closeTicket.d.ts +45 -0
  21. package/dist/generated/duel/instructions/closeTicket.js +56 -0
  22. package/dist/generated/duel/instructions/commitTickets.d.ts +39 -0
  23. package/dist/generated/duel/instructions/commitTickets.js +50 -0
  24. package/dist/generated/duel/instructions/createTicket.d.ts +48 -0
  25. package/dist/generated/duel/instructions/createTicket.js +63 -0
  26. package/dist/generated/duel/instructions/delegateQueue.d.ts +69 -0
  27. package/dist/generated/duel/instructions/delegateQueue.js +90 -0
  28. package/dist/generated/duel/instructions/delegateTicket.d.ts +69 -0
  29. package/dist/generated/duel/instructions/delegateTicket.js +90 -0
  30. package/dist/generated/duel/instructions/flushMatches.d.ts +37 -0
  31. package/dist/generated/duel/instructions/flushMatches.js +43 -0
  32. package/dist/generated/duel/instructions/index.d.ts +18 -0
  33. package/dist/generated/duel/instructions/index.js +19 -0
  34. package/dist/generated/duel/instructions/initializeQueue.d.ts +48 -0
  35. package/dist/generated/duel/instructions/initializeQueue.js +63 -0
  36. package/dist/generated/duel/instructions/initializeTenant.d.ts +70 -0
  37. package/dist/generated/duel/instructions/initializeTenant.js +67 -0
  38. package/dist/generated/duel/instructions/joinQueue.d.ts +51 -0
  39. package/dist/generated/duel/instructions/joinQueue.js +56 -0
  40. package/dist/generated/duel/instructions/processUndelegation.d.ts +43 -0
  41. package/dist/generated/duel/instructions/processUndelegation.js +49 -0
  42. package/dist/generated/duel/programs/duel.d.ts +88 -0
  43. package/dist/generated/duel/programs/duel.js +138 -0
  44. package/dist/generated/duel/programs/index.d.ts +8 -0
  45. package/dist/generated/duel/programs/index.js +9 -0
  46. package/dist/generated/duel/types/accountType.d.ts +25 -0
  47. package/dist/generated/duel/types/accountType.js +25 -0
  48. package/dist/generated/duel/types/index.d.ts +13 -0
  49. package/dist/generated/duel/types/index.js +14 -0
  50. package/dist/generated/duel/types/matchEntry.d.ts +23 -0
  51. package/dist/generated/duel/types/matchEntry.js +18 -0
  52. package/dist/generated/duel/types/matchFound.d.ts +23 -0
  53. package/dist/generated/duel/types/matchFound.js +18 -0
  54. package/dist/generated/duel/types/pendingMatch.d.ts +21 -0
  55. package/dist/generated/duel/types/pendingMatch.js +18 -0
  56. package/dist/generated/duel/types/queueEntry.d.ts +19 -0
  57. package/dist/generated/duel/types/queueEntry.js +18 -0
  58. package/dist/generated/duel/types/ticketStatus.d.ts +40 -0
  59. package/dist/generated/duel/types/ticketStatus.js +25 -0
  60. package/dist/generated/rps-game/accounts/gameSession.d.ts +40 -0
  61. package/dist/generated/rps-game/accounts/gameSession.js +45 -0
  62. package/dist/generated/rps-game/accounts/index.d.ts +9 -0
  63. package/dist/generated/rps-game/accounts/index.js +10 -0
  64. package/dist/generated/rps-game/accounts/playerProfile.d.ts +36 -0
  65. package/dist/generated/rps-game/accounts/playerProfile.js +47 -0
  66. package/dist/generated/rps-game/errors/index.d.ts +8 -0
  67. package/dist/generated/rps-game/errors/index.js +9 -0
  68. package/dist/generated/rps-game/errors/rpsGame.d.ts +25 -0
  69. package/dist/generated/rps-game/errors/rpsGame.js +29 -0
  70. package/dist/generated/rps-game/index.d.ts +12 -0
  71. package/dist/generated/rps-game/index.js +13 -0
  72. package/dist/generated/rps-game/instructions/closePlayer.d.ts +45 -0
  73. package/dist/generated/rps-game/instructions/closePlayer.js +56 -0
  74. package/dist/generated/rps-game/instructions/delegatePda.d.ts +69 -0
  75. package/dist/generated/rps-game/instructions/delegatePda.js +90 -0
  76. package/dist/generated/rps-game/instructions/index.d.ts +16 -0
  77. package/dist/generated/rps-game/instructions/index.js +17 -0
  78. package/dist/generated/rps-game/instructions/initializePlayer.d.ts +48 -0
  79. package/dist/generated/rps-game/instructions/initializePlayer.js +63 -0
  80. package/dist/generated/rps-game/instructions/makeChoice.d.ts +44 -0
  81. package/dist/generated/rps-game/instructions/makeChoice.js +46 -0
  82. package/dist/generated/rps-game/instructions/onMatchFound.d.ts +43 -0
  83. package/dist/generated/rps-game/instructions/onMatchFound.js +45 -0
  84. package/dist/generated/rps-game/instructions/persistResults.d.ts +43 -0
  85. package/dist/generated/rps-game/instructions/persistResults.js +50 -0
  86. package/dist/generated/rps-game/instructions/processUndelegation.d.ts +43 -0
  87. package/dist/generated/rps-game/instructions/processUndelegation.js +49 -0
  88. package/dist/generated/rps-game/instructions/startGame.d.ts +54 -0
  89. package/dist/generated/rps-game/instructions/startGame.js +67 -0
  90. package/dist/generated/rps-game/instructions/startGameWithTicket.d.ts +57 -0
  91. package/dist/generated/rps-game/instructions/startGameWithTicket.js +67 -0
  92. package/dist/generated/rps-game/programs/index.d.ts +8 -0
  93. package/dist/generated/rps-game/programs/index.js +9 -0
  94. package/dist/generated/rps-game/programs/rpsGame.d.ts +78 -0
  95. package/dist/generated/rps-game/programs/rpsGame.js +118 -0
  96. package/dist/generated/rps-game/types/accountType.d.ts +34 -0
  97. package/dist/generated/rps-game/types/accountType.js +25 -0
  98. package/dist/generated/rps-game/types/choice.d.ts +17 -0
  99. package/dist/generated/rps-game/types/choice.js +25 -0
  100. package/dist/generated/rps-game/types/gameResult.d.ts +26 -0
  101. package/dist/generated/rps-game/types/gameResult.js +25 -0
  102. package/dist/generated/rps-game/types/index.d.ts +10 -0
  103. package/dist/generated/rps-game/types/index.js +11 -0
  104. package/dist/index.d.ts +2 -1
  105. package/dist/index.js +3 -2
  106. package/dist/player.d.ts +21 -49
  107. package/dist/player.js +61 -141
  108. package/dist/tee.d.ts +14 -0
  109. package/dist/tee.js +62 -0
  110. package/dist/transaction.d.ts +11 -0
  111. package/dist/transaction.js +50 -0
  112. package/dist/utils.d.ts +4 -4
  113. package/dist/utils.js +23 -8
  114. package/package.json +4 -7
  115. package/src/admin.ts +129 -164
  116. package/src/duel.json +66 -2
  117. package/src/encryption.ts +0 -3
  118. package/src/generated/duel/accounts/index.ts +11 -0
  119. package/src/generated/duel/accounts/matchTicket.ts +77 -0
  120. package/src/generated/duel/accounts/queue.ts +77 -0
  121. package/src/generated/duel/accounts/tenant.ts +76 -0
  122. package/src/generated/duel/errors/duel.ts +48 -0
  123. package/src/generated/duel/errors/index.ts +9 -0
  124. package/src/generated/duel/index.ts +13 -0
  125. package/src/generated/duel/instructions/cancelTicket.ts +100 -0
  126. package/src/generated/duel/instructions/closeTicket.ts +100 -0
  127. package/src/generated/duel/instructions/commitTickets.ts +84 -0
  128. package/src/generated/duel/instructions/createTicket.ts +109 -0
  129. package/src/generated/duel/instructions/delegateQueue.ts +157 -0
  130. package/src/generated/duel/instructions/delegateTicket.ts +157 -0
  131. package/src/generated/duel/instructions/flushMatches.ts +76 -0
  132. package/src/generated/duel/instructions/index.ts +19 -0
  133. package/src/generated/duel/instructions/initializeQueue.ts +109 -0
  134. package/src/generated/duel/instructions/initializeTenant.ts +126 -0
  135. package/src/generated/duel/instructions/joinQueue.ts +106 -0
  136. package/src/generated/duel/instructions/processUndelegation.ts +86 -0
  137. package/src/generated/duel/programs/duel.ts +104 -0
  138. package/src/generated/duel/programs/index.ts +9 -0
  139. package/src/generated/duel/types/accountType.ts +36 -0
  140. package/src/generated/duel/types/index.ts +14 -0
  141. package/src/generated/duel/types/matchEntry.ts +25 -0
  142. package/src/generated/duel/types/matchFound.ts +25 -0
  143. package/src/generated/duel/types/pendingMatch.ts +25 -0
  144. package/src/generated/duel/types/queueEntry.ts +25 -0
  145. package/src/generated/duel/types/ticketStatus.ts +38 -0
  146. package/src/generated/rps-game/accounts/gameSession.ts +77 -0
  147. package/src/generated/rps-game/accounts/index.ts +10 -0
  148. package/src/generated/rps-game/accounts/playerProfile.ts +80 -0
  149. package/src/generated/rps-game/errors/index.ts +9 -0
  150. package/src/generated/rps-game/errors/rpsGame.ts +40 -0
  151. package/src/generated/rps-game/index.ts +13 -0
  152. package/src/generated/rps-game/instructions/closePlayer.ts +100 -0
  153. package/src/generated/rps-game/instructions/delegatePda.ts +157 -0
  154. package/src/generated/rps-game/instructions/index.ts +17 -0
  155. package/src/generated/rps-game/instructions/initializePlayer.ts +109 -0
  156. package/src/generated/rps-game/instructions/makeChoice.ts +84 -0
  157. package/src/generated/rps-game/instructions/onMatchFound.ts +79 -0
  158. package/src/generated/rps-game/instructions/persistResults.ts +88 -0
  159. package/src/generated/rps-game/instructions/processUndelegation.ts +86 -0
  160. package/src/generated/rps-game/instructions/startGame.ts +118 -0
  161. package/src/generated/rps-game/instructions/startGameWithTicket.ts +121 -0
  162. package/src/generated/rps-game/programs/index.ts +9 -0
  163. package/src/generated/rps-game/programs/rpsGame.ts +95 -0
  164. package/src/generated/rps-game/types/accountType.ts +36 -0
  165. package/src/generated/rps-game/types/choice.ts +25 -0
  166. package/src/generated/rps-game/types/gameResult.ts +37 -0
  167. package/src/generated/rps-game/types/index.ts +11 -0
  168. package/src/index.ts +2 -1
  169. package/src/player.ts +96 -193
  170. package/src/rps_game.json +991 -0
  171. package/src/tee.ts +79 -0
  172. package/src/transaction.ts +90 -0
  173. package/src/utils.ts +35 -20
  174. package/tsconfig.json +2 -2
  175. package/dist/client.d.ts +0 -54
  176. package/dist/client.js +0 -265
  177. package/dist/duel.json +0 -517
  178. package/dist/private_matchmaking.json +0 -534
  179. package/dist/types.d.ts +0 -635
  180. package/dist/types.js +0 -2
  181. package/src/types.ts +0 -300
@@ -0,0 +1,90 @@
1
+ /**
2
+ * This code was AUTOGENERATED using the Codama library.
3
+ * Please DO NOT EDIT THIS FILE, instead use visitors
4
+ * to add features, then rerun Codama to update it.
5
+ *
6
+ * @see https://github.com/codama-idl/codama
7
+ */
8
+ import { combineCodec, fixDecoderSize, fixEncoderSize, getAddressEncoder, getBytesDecoder, getBytesEncoder, getProgramDerivedAddress, getStructDecoder, getStructEncoder, SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS, SolanaError, transformEncoder } from '@solana/kit';
9
+ import { getAccountMetaFactory, getAddressFromResolvedInstructionAccount } from '@solana/program-client-core';
10
+ import { RPS_GAME_PROGRAM_ADDRESS } from '../programs';
11
+ import { getAccountTypeDecoder, getAccountTypeEncoder } from '../types';
12
+ export const DELEGATE_PDA_DISCRIMINATOR = new Uint8Array([248, 217, 193, 46, 124, 191, 64, 135]);
13
+ export function getDelegatePdaDiscriminatorBytes() { return fixEncoderSize(getBytesEncoder(), 8).encode(DELEGATE_PDA_DISCRIMINATOR); }
14
+ export function getDelegatePdaInstructionDataEncoder() {
15
+ return transformEncoder(getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)], ['accountType', getAccountTypeEncoder()]]), (value) => ({ ...value, discriminator: DELEGATE_PDA_DISCRIMINATOR }));
16
+ }
17
+ export function getDelegatePdaInstructionDataDecoder() {
18
+ return getStructDecoder([['discriminator', fixDecoderSize(getBytesDecoder(), 8)], ['accountType', getAccountTypeDecoder()]]);
19
+ }
20
+ export function getDelegatePdaInstructionDataCodec() {
21
+ return combineCodec(getDelegatePdaInstructionDataEncoder(), getDelegatePdaInstructionDataDecoder());
22
+ }
23
+ export async function getDelegatePdaInstructionAsync(input, config) {
24
+ // Program address.
25
+ const programAddress = config?.programAddress ?? RPS_GAME_PROGRAM_ADDRESS;
26
+ // Original accounts.
27
+ const originalAccounts = { bufferPda: { value: input.bufferPda ?? null, isWritable: true }, delegationRecordPda: { value: input.delegationRecordPda ?? null, isWritable: true }, delegationMetadataPda: { value: input.delegationMetadataPda ?? null, isWritable: true }, pda: { value: input.pda ?? null, isWritable: true }, payer: { value: input.payer ?? null, isWritable: true }, validator: { value: input.validator ?? null, isWritable: false }, ownerProgram: { value: input.ownerProgram ?? null, isWritable: false }, delegationProgram: { value: input.delegationProgram ?? null, isWritable: false }, systemProgram: { value: input.systemProgram ?? null, isWritable: false } };
28
+ const accounts = originalAccounts;
29
+ // Original args.
30
+ const args = { ...input, };
31
+ // Resolve default values.
32
+ if (!accounts.bufferPda.value) {
33
+ accounts.bufferPda.value = await getProgramDerivedAddress({ programAddress: '8ohu3RobXyZ2DebyJjbs2co9YCG275FUsVckEcmDbCos', seeds: [getBytesEncoder().encode(new Uint8Array([98, 117, 102, 102, 101, 114])), getAddressEncoder().encode(getAddressFromResolvedInstructionAccount("pda", accounts.pda.value))] });
34
+ }
35
+ if (!accounts.delegationRecordPda.value) {
36
+ accounts.delegationRecordPda.value = await getProgramDerivedAddress({ programAddress: 'DELeGGvXpWV2fqJUhqcF5ZSYMS4JTLjteaAMARRSaeSh', seeds: [getBytesEncoder().encode(new Uint8Array([100, 101, 108, 101, 103, 97, 116, 105, 111, 110])), getAddressEncoder().encode(getAddressFromResolvedInstructionAccount("pda", accounts.pda.value))] });
37
+ }
38
+ if (!accounts.delegationMetadataPda.value) {
39
+ accounts.delegationMetadataPda.value = await getProgramDerivedAddress({ programAddress: 'DELeGGvXpWV2fqJUhqcF5ZSYMS4JTLjteaAMARRSaeSh', seeds: [getBytesEncoder().encode(new Uint8Array([100, 101, 108, 101, 103, 97, 116, 105, 111, 110, 45, 109, 101, 116, 97, 100, 97, 116, 97])), getAddressEncoder().encode(getAddressFromResolvedInstructionAccount("pda", accounts.pda.value))] });
40
+ }
41
+ if (!accounts.ownerProgram.value) {
42
+ accounts.ownerProgram.value = '8ohu3RobXyZ2DebyJjbs2co9YCG275FUsVckEcmDbCos';
43
+ }
44
+ if (!accounts.delegationProgram.value) {
45
+ accounts.delegationProgram.value = 'DELeGGvXpWV2fqJUhqcF5ZSYMS4JTLjteaAMARRSaeSh';
46
+ }
47
+ if (!accounts.systemProgram.value) {
48
+ accounts.systemProgram.value = '11111111111111111111111111111111';
49
+ }
50
+ const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');
51
+ return Object.freeze({ accounts: [getAccountMeta("bufferPda", accounts.bufferPda), getAccountMeta("delegationRecordPda", accounts.delegationRecordPda), getAccountMeta("delegationMetadataPda", accounts.delegationMetadataPda), getAccountMeta("pda", accounts.pda), getAccountMeta("payer", accounts.payer), getAccountMeta("validator", accounts.validator), getAccountMeta("ownerProgram", accounts.ownerProgram), getAccountMeta("delegationProgram", accounts.delegationProgram), getAccountMeta("systemProgram", accounts.systemProgram)], data: getDelegatePdaInstructionDataEncoder().encode(args), programAddress });
52
+ }
53
+ export function getDelegatePdaInstruction(input, config) {
54
+ // Program address.
55
+ const programAddress = config?.programAddress ?? RPS_GAME_PROGRAM_ADDRESS;
56
+ // Original accounts.
57
+ const originalAccounts = { bufferPda: { value: input.bufferPda ?? null, isWritable: true }, delegationRecordPda: { value: input.delegationRecordPda ?? null, isWritable: true }, delegationMetadataPda: { value: input.delegationMetadataPda ?? null, isWritable: true }, pda: { value: input.pda ?? null, isWritable: true }, payer: { value: input.payer ?? null, isWritable: true }, validator: { value: input.validator ?? null, isWritable: false }, ownerProgram: { value: input.ownerProgram ?? null, isWritable: false }, delegationProgram: { value: input.delegationProgram ?? null, isWritable: false }, systemProgram: { value: input.systemProgram ?? null, isWritable: false } };
58
+ const accounts = originalAccounts;
59
+ // Original args.
60
+ const args = { ...input, };
61
+ // Resolve default values.
62
+ if (!accounts.ownerProgram.value) {
63
+ accounts.ownerProgram.value = '8ohu3RobXyZ2DebyJjbs2co9YCG275FUsVckEcmDbCos';
64
+ }
65
+ if (!accounts.delegationProgram.value) {
66
+ accounts.delegationProgram.value = 'DELeGGvXpWV2fqJUhqcF5ZSYMS4JTLjteaAMARRSaeSh';
67
+ }
68
+ if (!accounts.systemProgram.value) {
69
+ accounts.systemProgram.value = '11111111111111111111111111111111';
70
+ }
71
+ const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');
72
+ return Object.freeze({ accounts: [getAccountMeta("bufferPda", accounts.bufferPda), getAccountMeta("delegationRecordPda", accounts.delegationRecordPda), getAccountMeta("delegationMetadataPda", accounts.delegationMetadataPda), getAccountMeta("pda", accounts.pda), getAccountMeta("payer", accounts.payer), getAccountMeta("validator", accounts.validator), getAccountMeta("ownerProgram", accounts.ownerProgram), getAccountMeta("delegationProgram", accounts.delegationProgram), getAccountMeta("systemProgram", accounts.systemProgram)], data: getDelegatePdaInstructionDataEncoder().encode(args), programAddress });
73
+ }
74
+ export function parseDelegatePdaInstruction(instruction) {
75
+ if (instruction.accounts.length < 9) {
76
+ throw new SolanaError(SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS, { actualAccountMetas: instruction.accounts.length, expectedAccountMetas: 9 });
77
+ }
78
+ let accountIndex = 0;
79
+ const getNextAccount = () => {
80
+ const accountMeta = instruction.accounts[accountIndex];
81
+ accountIndex += 1;
82
+ return accountMeta;
83
+ };
84
+ const getNextOptionalAccount = () => {
85
+ const accountMeta = getNextAccount();
86
+ return accountMeta.address === RPS_GAME_PROGRAM_ADDRESS ? undefined : accountMeta;
87
+ };
88
+ return { programAddress: instruction.programAddress, accounts: { bufferPda: getNextAccount(), delegationRecordPda: getNextAccount(), delegationMetadataPda: getNextAccount(), pda: getNextAccount(), payer: getNextAccount(), validator: getNextOptionalAccount(), ownerProgram: getNextAccount(), delegationProgram: getNextAccount(), systemProgram: getNextAccount() }, data: getDelegatePdaInstructionDataDecoder().decode(instruction.data) };
89
+ }
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZWdhdGVQZGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZ2VuZXJhdGVkL3Jwcy1nYW1lL2luc3RydWN0aW9ucy9kZWxlZ2F0ZVBkYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSx3QkFBd0IsRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSx5REFBeUQsRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQXFTLE1BQU0sYUFBYSxDQUFDO0FBQzNqQixPQUFPLEVBQUUscUJBQXFCLEVBQUUsd0NBQXdDLEVBQW1DLE1BQU0sNkJBQTZCLENBQUM7QUFDL0ksT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxxQkFBcUIsRUFBMEMsTUFBTSxVQUFVLENBQUM7QUFFaEgsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsSUFBSSxVQUFVLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUVqRyxNQUFNLFVBQVUsZ0NBQWdDLEtBQUssT0FBTyxjQUFjLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLDBCQUEwQixDQUFDLENBQUMsQ0FBQyxDQUFDO0FBU3RJLE1BQU0sVUFBVSxvQ0FBb0M7SUFDaEQsT0FBTyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsZUFBZSxFQUFFLGNBQWMsQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLHFCQUFxQixFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEtBQUssRUFBRSxhQUFhLEVBQUUsMEJBQTBCLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDek4sQ0FBQztBQUVELE1BQU0sVUFBVSxvQ0FBb0M7SUFDaEQsT0FBTyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsZUFBZSxFQUFFLGNBQWMsQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLHFCQUFxQixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakksQ0FBQztBQUVELE1BQU0sVUFBVSxrQ0FBa0M7SUFDOUMsT0FBTyxZQUFZLENBQUMsb0NBQW9DLEVBQUUsRUFBRSxvQ0FBb0MsRUFBRSxDQUFDLENBQUM7QUFDeEcsQ0FBQztBQWVELE1BQU0sQ0FBQyxLQUFLLFVBQVUsOEJBQThCLENBQWlaLEtBQWtPLEVBQUUsTUFBNkM7SUFDcHRCLG1CQUFtQjtJQUNyQixNQUFNLGNBQWMsR0FBRyxNQUFNLEVBQUUsY0FBYyxJQUFJLHdCQUF3QixDQUFDO0lBRXpFLHFCQUFxQjtJQUN0QixNQUFNLGdCQUFnQixHQUFHLEVBQUUsU0FBUyxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxTQUFTLElBQUksSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsRUFBRSxtQkFBbUIsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsbUJBQW1CLElBQUksSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsRUFBRSxxQkFBcUIsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMscUJBQXFCLElBQUksSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLEdBQUcsSUFBSSxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSyxJQUFJLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxTQUFTLElBQUksSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsRUFBRSxZQUFZLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLFlBQVksSUFBSSxJQUFJLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxFQUFFLGlCQUFpQixFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxpQkFBaUIsSUFBSSxJQUFJLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxFQUFFLGFBQWEsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsYUFBYSxJQUFJLElBQUksRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQTtJQUM5cEIsTUFBTSxRQUFRLEdBQUcsZ0JBQXFGLENBQUM7SUFHdkcsaUJBQWlCO0lBQ2pCLE1BQU0sSUFBSSxHQUFHLEVBQUUsR0FBRyxLQUFLLEdBQUksQ0FBQztJQUc1QiwwQkFBMEI7SUFDMUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDaEMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsTUFBTSx3QkFBd0IsQ0FBQyxFQUFFLGNBQWMsRUFBRSw4Q0FBeUcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxVQUFVLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxpQkFBaUIsRUFBRSxDQUFDLE1BQU0sQ0FBQyx3Q0FBd0MsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzVXLENBQUM7SUFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLEdBQUcsTUFBTSx3QkFBd0IsQ0FBQyxFQUFFLGNBQWMsRUFBRSw4Q0FBeUcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxVQUFVLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxNQUFNLENBQUMsd0NBQXdDLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMxWSxDQUFDO0lBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM1QyxRQUFRLENBQUMscUJBQXFCLENBQUMsS0FBSyxHQUFHLE1BQU0sd0JBQXdCLENBQUMsRUFBRSxjQUFjLEVBQUUsOENBQXlHLEVBQUUsS0FBSyxFQUFFLENBQUMsZUFBZSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksVUFBVSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLGlCQUFpQixFQUFFLENBQUMsTUFBTSxDQUFDLHdDQUF3QyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDcmIsQ0FBQztJQUNELElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ25DLFFBQVEsQ0FBQyxZQUFZLENBQUMsS0FBSyxHQUFHLDhDQUF5RyxDQUFDO0lBQ3hJLENBQUM7SUFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3hDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEdBQUcsOENBQXlHLENBQUM7SUFDN0ksQ0FBQztJQUNELElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3BDLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLGtDQUFpRixDQUFDO0lBQ2pILENBQUM7SUFFRCxNQUFNLGNBQWMsR0FBRyxxQkFBcUIsQ0FBQyxjQUFjLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDMUUsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQUUsY0FBYyxDQUFDLHFCQUFxQixFQUFFLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLGNBQWMsQ0FBQyx1QkFBdUIsRUFBRSxRQUFRLENBQUMscUJBQXFCLENBQUMsRUFBRSxjQUFjLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxjQUFjLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxjQUFjLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFBRSxjQUFjLENBQUMsY0FBYyxFQUFFLFFBQVEsQ0FBQyxZQUFZLENBQUMsRUFBRSxjQUFjLENBQUMsbUJBQW1CLEVBQUUsUUFBUSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsY0FBYyxDQUFDLGVBQWUsRUFBRSxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsb0NBQW9DLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBc0MsQ0FBQyxFQUFFLGNBQWMsRUFBbVAsQ0FBQyxDQUFDO0FBQ2wzQixDQUFDO0FBZUQsTUFBTSxVQUFVLHlCQUF5QixDQUFpWixLQUE2TixFQUFFLE1BQTZDO0lBQ3BzQixtQkFBbUI7SUFDckIsTUFBTSxjQUFjLEdBQUcsTUFBTSxFQUFFLGNBQWMsSUFBSSx3QkFBd0IsQ0FBQztJQUV6RSxxQkFBcUI7SUFDdEIsTUFBTSxnQkFBZ0IsR0FBRyxFQUFFLFNBQVMsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsU0FBUyxJQUFJLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLEVBQUUsbUJBQW1CLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLG1CQUFtQixJQUFJLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLEVBQUUscUJBQXFCLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLHFCQUFxQixJQUFJLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxHQUFHLElBQUksSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUssSUFBSSxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsU0FBUyxJQUFJLElBQUksRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLEVBQUUsWUFBWSxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxZQUFZLElBQUksSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsaUJBQWlCLElBQUksSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsRUFBRSxhQUFhLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLGFBQWEsSUFBSSxJQUFJLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUE7SUFDOXBCLE1BQU0sUUFBUSxHQUFHLGdCQUFxRixDQUFDO0lBR3ZHLGlCQUFpQjtJQUNqQixNQUFNLElBQUksR0FBRyxFQUFFLEdBQUcsS0FBSyxHQUFJLENBQUM7SUFHNUIsMEJBQTBCO0lBQzFCLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ25DLFFBQVEsQ0FBQyxZQUFZLENBQUMsS0FBSyxHQUFHLDhDQUF5RyxDQUFDO0lBQ3hJLENBQUM7SUFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3hDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEdBQUcsOENBQXlHLENBQUM7SUFDN0ksQ0FBQztJQUNELElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3BDLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLGtDQUFpRixDQUFDO0lBQ2pILENBQUM7SUFFRCxNQUFNLGNBQWMsR0FBRyxxQkFBcUIsQ0FBQyxjQUFjLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDMUUsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQUUsY0FBYyxDQUFDLHFCQUFxQixFQUFFLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLGNBQWMsQ0FBQyx1QkFBdUIsRUFBRSxRQUFRLENBQUMscUJBQXFCLENBQUMsRUFBRSxjQUFjLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxjQUFjLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxjQUFjLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFBRSxjQUFjLENBQUMsY0FBYyxFQUFFLFFBQVEsQ0FBQyxZQUFZLENBQUMsRUFBRSxjQUFjLENBQUMsbUJBQW1CLEVBQUUsUUFBUSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsY0FBYyxDQUFDLGVBQWUsRUFBRSxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsb0NBQW9DLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBc0MsQ0FBQyxFQUFFLGNBQWMsRUFBbVAsQ0FBQyxDQUFDO0FBQ2wzQixDQUFDO0FBZ0JELE1BQU0sVUFBVSwyQkFBMkIsQ0FBd0UsV0FBcUg7SUFDdE8sSUFBSSxXQUFXLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUN0QyxNQUFNLElBQUksV0FBVyxDQUFDLHlEQUF5RCxFQUFFLEVBQUUsa0JBQWtCLEVBQUUsV0FBVyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqSyxDQUFDO0lBQ0QsSUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFDO0lBQ3JCLE1BQU0sY0FBYyxHQUFHLEdBQUcsRUFBRTtRQUMxQixNQUFNLFdBQVcsR0FBSSxXQUFXLENBQUMsUUFBMEIsQ0FBQyxZQUFZLENBQUUsQ0FBQztRQUMzRSxZQUFZLElBQUksQ0FBQyxDQUFDO1FBQ2xCLE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUMsQ0FBQTtJQUNELE1BQU0sc0JBQXNCLEdBQUcsR0FBRyxFQUFFO1FBQ2xDLE1BQU0sV0FBVyxHQUFHLGNBQWMsRUFBRSxDQUFDO1FBQ3JDLE9BQU8sV0FBVyxDQUFDLE9BQU8sS0FBSyx3QkFBd0IsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUM7SUFDcEYsQ0FBQyxDQUFDO0lBQ0EsT0FBTyxFQUFFLGNBQWMsRUFBRSxXQUFXLENBQUMsY0FBYyxFQUFFLFFBQVEsRUFBRSxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsRUFBRSxtQkFBbUIsRUFBRSxjQUFjLEVBQUUsRUFBRSxxQkFBcUIsRUFBRSxjQUFjLEVBQUUsRUFBRSxHQUFHLEVBQUUsY0FBYyxFQUFFLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxFQUFFLFNBQVMsRUFBRSxzQkFBc0IsRUFBRSxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSxjQUFjLEVBQUUsRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsb0NBQW9DLEVBQUUsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7QUFDcmIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhpcyBjb2RlIHdhcyBBVVRPR0VORVJBVEVEIHVzaW5nIHRoZSBDb2RhbWEgbGlicmFyeS5cbiAqIFBsZWFzZSBETyBOT1QgRURJVCBUSElTIEZJTEUsIGluc3RlYWQgdXNlIHZpc2l0b3JzXG4gKiB0byBhZGQgZmVhdHVyZXMsIHRoZW4gcmVydW4gQ29kYW1hIHRvIHVwZGF0ZSBpdC5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9jb2RhbWEtaWRsL2NvZGFtYVxuICovXG5cbmltcG9ydCB7IGNvbWJpbmVDb2RlYywgZml4RGVjb2RlclNpemUsIGZpeEVuY29kZXJTaXplLCBnZXRBZGRyZXNzRW5jb2RlciwgZ2V0Qnl0ZXNEZWNvZGVyLCBnZXRCeXRlc0VuY29kZXIsIGdldFByb2dyYW1EZXJpdmVkQWRkcmVzcywgZ2V0U3RydWN0RGVjb2RlciwgZ2V0U3RydWN0RW5jb2RlciwgU09MQU5BX0VSUk9SX19QUk9HUkFNX0NMSUVOVFNfX0lOU1VGRklDSUVOVF9BQ0NPVU5UX01FVEFTLCBTb2xhbmFFcnJvciwgdHJhbnNmb3JtRW5jb2RlciwgdHlwZSBBY2NvdW50TWV0YSwgdHlwZSBBY2NvdW50U2lnbmVyTWV0YSwgdHlwZSBBZGRyZXNzLCB0eXBlIENvZGVjLCB0eXBlIERlY29kZXIsIHR5cGUgRW5jb2RlciwgdHlwZSBJbnN0cnVjdGlvbiwgdHlwZSBJbnN0cnVjdGlvbldpdGhBY2NvdW50cywgdHlwZSBJbnN0cnVjdGlvbldpdGhEYXRhLCB0eXBlIFJlYWRvbmx5QWNjb3VudCwgdHlwZSBSZWFkb25seVVpbnQ4QXJyYXksIHR5cGUgVHJhbnNhY3Rpb25TaWduZXIsIHR5cGUgV3JpdGFibGVBY2NvdW50LCB0eXBlIFdyaXRhYmxlU2lnbmVyQWNjb3VudCB9IGZyb20gJ0Bzb2xhbmEva2l0JztcbmltcG9ydCB7IGdldEFjY291bnRNZXRhRmFjdG9yeSwgZ2V0QWRkcmVzc0Zyb21SZXNvbHZlZEluc3RydWN0aW9uQWNjb3VudCwgdHlwZSBSZXNvbHZlZEluc3RydWN0aW9uQWNjb3VudCB9IGZyb20gJ0Bzb2xhbmEvcHJvZ3JhbS1jbGllbnQtY29yZSc7XG5pbXBvcnQgeyBSUFNfR0FNRV9QUk9HUkFNX0FERFJFU1MgfSBmcm9tICcuLi9wcm9ncmFtcyc7XG5pbXBvcnQgeyBnZXRBY2NvdW50VHlwZURlY29kZXIsIGdldEFjY291bnRUeXBlRW5jb2RlciwgdHlwZSBBY2NvdW50VHlwZSwgdHlwZSBBY2NvdW50VHlwZUFyZ3MgfSBmcm9tICcuLi90eXBlcyc7XG5cbmV4cG9ydCBjb25zdCBERUxFR0FURV9QREFfRElTQ1JJTUlOQVRPUiA9IG5ldyBVaW50OEFycmF5KFsyNDgsIDIxNywgMTkzLCA0NiwgMTI0LCAxOTEsIDY0LCAxMzVdKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldERlbGVnYXRlUGRhRGlzY3JpbWluYXRvckJ5dGVzKCkgeyByZXR1cm4gZml4RW5jb2RlclNpemUoZ2V0Qnl0ZXNFbmNvZGVyKCksIDgpLmVuY29kZShERUxFR0FURV9QREFfRElTQ1JJTUlOQVRPUik7IH1cblxuZXhwb3J0IHR5cGUgRGVsZWdhdGVQZGFJbnN0cnVjdGlvbjxUUHJvZ3JhbSBleHRlbmRzIHN0cmluZyA9IHR5cGVvZiBSUFNfR0FNRV9QUk9HUkFNX0FERFJFU1MsIFRBY2NvdW50QnVmZmVyUGRhIGV4dGVuZHMgc3RyaW5nIHwgQWNjb3VudE1ldGE8c3RyaW5nPiA9IHN0cmluZywgVEFjY291bnREZWxlZ2F0aW9uUmVjb3JkUGRhIGV4dGVuZHMgc3RyaW5nIHwgQWNjb3VudE1ldGE8c3RyaW5nPiA9IHN0cmluZywgVEFjY291bnREZWxlZ2F0aW9uTWV0YWRhdGFQZGEgZXh0ZW5kcyBzdHJpbmcgfCBBY2NvdW50TWV0YTxzdHJpbmc+ID0gc3RyaW5nLCBUQWNjb3VudFBkYSBleHRlbmRzIHN0cmluZyB8IEFjY291bnRNZXRhPHN0cmluZz4gPSBzdHJpbmcsIFRBY2NvdW50UGF5ZXIgZXh0ZW5kcyBzdHJpbmcgfCBBY2NvdW50TWV0YTxzdHJpbmc+ID0gc3RyaW5nLCBUQWNjb3VudFZhbGlkYXRvciBleHRlbmRzIHN0cmluZyB8IEFjY291bnRNZXRhPHN0cmluZz4gPSBzdHJpbmcsIFRBY2NvdW50T3duZXJQcm9ncmFtIGV4dGVuZHMgc3RyaW5nIHwgQWNjb3VudE1ldGE8c3RyaW5nPiA9IFwiOG9odTNSb2JYeVoyRGVieUpqYnMyY285WUNHMjc1RlVzVmNrRWNtRGJDb3NcIiwgVEFjY291bnREZWxlZ2F0aW9uUHJvZ3JhbSBleHRlbmRzIHN0cmluZyB8IEFjY291bnRNZXRhPHN0cmluZz4gPSBcIkRFTGVHR3ZYcFdWMmZxSlVocWNGNVpTWU1TNEpUTGp0ZWFBTUFSUlNhZVNoXCIsIFRBY2NvdW50U3lzdGVtUHJvZ3JhbSBleHRlbmRzIHN0cmluZyB8IEFjY291bnRNZXRhPHN0cmluZz4gPSBcIjExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExXCIsIFRSZW1haW5pbmdBY2NvdW50cyBleHRlbmRzIHJlYWRvbmx5IEFjY291bnRNZXRhPHN0cmluZz5bXSA9IFtdPiA9XG5JbnN0cnVjdGlvbjxUUHJvZ3JhbT4gJiBJbnN0cnVjdGlvbldpdGhEYXRhPFJlYWRvbmx5VWludDhBcnJheT4gJiBJbnN0cnVjdGlvbldpdGhBY2NvdW50czxbVEFjY291bnRCdWZmZXJQZGEgZXh0ZW5kcyBzdHJpbmcgPyBXcml0YWJsZUFjY291bnQ8VEFjY291bnRCdWZmZXJQZGE+IDogVEFjY291bnRCdWZmZXJQZGEsIFRBY2NvdW50RGVsZWdhdGlvblJlY29yZFBkYSBleHRlbmRzIHN0cmluZyA/IFdyaXRhYmxlQWNjb3VudDxUQWNjb3VudERlbGVnYXRpb25SZWNvcmRQZGE+IDogVEFjY291bnREZWxlZ2F0aW9uUmVjb3JkUGRhLCBUQWNjb3VudERlbGVnYXRpb25NZXRhZGF0YVBkYSBleHRlbmRzIHN0cmluZyA/IFdyaXRhYmxlQWNjb3VudDxUQWNjb3VudERlbGVnYXRpb25NZXRhZGF0YVBkYT4gOiBUQWNjb3VudERlbGVnYXRpb25NZXRhZGF0YVBkYSwgVEFjY291bnRQZGEgZXh0ZW5kcyBzdHJpbmcgPyBXcml0YWJsZUFjY291bnQ8VEFjY291bnRQZGE+IDogVEFjY291bnRQZGEsIFRBY2NvdW50UGF5ZXIgZXh0ZW5kcyBzdHJpbmcgPyBXcml0YWJsZVNpZ25lckFjY291bnQ8VEFjY291bnRQYXllcj4gJiBBY2NvdW50U2lnbmVyTWV0YTxUQWNjb3VudFBheWVyPiA6IFRBY2NvdW50UGF5ZXIsIFRBY2NvdW50VmFsaWRhdG9yIGV4dGVuZHMgc3RyaW5nID8gUmVhZG9ubHlBY2NvdW50PFRBY2NvdW50VmFsaWRhdG9yPiA6IFRBY2NvdW50VmFsaWRhdG9yLCBUQWNjb3VudE93bmVyUHJvZ3JhbSBleHRlbmRzIHN0cmluZyA/IFJlYWRvbmx5QWNjb3VudDxUQWNjb3VudE93bmVyUHJvZ3JhbT4gOiBUQWNjb3VudE93bmVyUHJvZ3JhbSwgVEFjY291bnREZWxlZ2F0aW9uUHJvZ3JhbSBleHRlbmRzIHN0cmluZyA/IFJlYWRvbmx5QWNjb3VudDxUQWNjb3VudERlbGVnYXRpb25Qcm9ncmFtPiA6IFRBY2NvdW50RGVsZWdhdGlvblByb2dyYW0sIFRBY2NvdW50U3lzdGVtUHJvZ3JhbSBleHRlbmRzIHN0cmluZyA/IFJlYWRvbmx5QWNjb3VudDxUQWNjb3VudFN5c3RlbVByb2dyYW0+IDogVEFjY291bnRTeXN0ZW1Qcm9ncmFtLCAuLi5UUmVtYWluaW5nQWNjb3VudHNdPjtcblxuZXhwb3J0IHR5cGUgRGVsZWdhdGVQZGFJbnN0cnVjdGlvbkRhdGEgPSB7IGRpc2NyaW1pbmF0b3I6IFJlYWRvbmx5VWludDhBcnJheTsgYWNjb3VudFR5cGU6IEFjY291bnRUeXBlOyAgfTtcblxuZXhwb3J0IHR5cGUgRGVsZWdhdGVQZGFJbnN0cnVjdGlvbkRhdGFBcmdzID0geyBhY2NvdW50VHlwZTogQWNjb3VudFR5cGVBcmdzOyAgfTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldERlbGVnYXRlUGRhSW5zdHJ1Y3Rpb25EYXRhRW5jb2RlcigpOiBFbmNvZGVyPERlbGVnYXRlUGRhSW5zdHJ1Y3Rpb25EYXRhQXJncz4ge1xuICAgIHJldHVybiB0cmFuc2Zvcm1FbmNvZGVyKGdldFN0cnVjdEVuY29kZXIoW1snZGlzY3JpbWluYXRvcicsIGZpeEVuY29kZXJTaXplKGdldEJ5dGVzRW5jb2RlcigpLCA4KV0sIFsnYWNjb3VudFR5cGUnLCBnZXRBY2NvdW50VHlwZUVuY29kZXIoKV1dKSwgKHZhbHVlKSA9PiAoeyAuLi52YWx1ZSwgZGlzY3JpbWluYXRvcjogREVMRUdBVEVfUERBX0RJU0NSSU1JTkFUT1IgfSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVsZWdhdGVQZGFJbnN0cnVjdGlvbkRhdGFEZWNvZGVyKCk6IERlY29kZXI8RGVsZWdhdGVQZGFJbnN0cnVjdGlvbkRhdGE+IHtcbiAgICByZXR1cm4gZ2V0U3RydWN0RGVjb2RlcihbWydkaXNjcmltaW5hdG9yJywgZml4RGVjb2RlclNpemUoZ2V0Qnl0ZXNEZWNvZGVyKCksIDgpXSwgWydhY2NvdW50VHlwZScsIGdldEFjY291bnRUeXBlRGVjb2RlcigpXV0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVsZWdhdGVQZGFJbnN0cnVjdGlvbkRhdGFDb2RlYygpOiBDb2RlYzxEZWxlZ2F0ZVBkYUluc3RydWN0aW9uRGF0YUFyZ3MsIERlbGVnYXRlUGRhSW5zdHJ1Y3Rpb25EYXRhPiB7XG4gICAgcmV0dXJuIGNvbWJpbmVDb2RlYyhnZXREZWxlZ2F0ZVBkYUluc3RydWN0aW9uRGF0YUVuY29kZXIoKSwgZ2V0RGVsZWdhdGVQZGFJbnN0cnVjdGlvbkRhdGFEZWNvZGVyKCkpO1xufVxuXG5leHBvcnQgdHlwZSBEZWxlZ2F0ZVBkYUFzeW5jSW5wdXQ8VEFjY291bnRCdWZmZXJQZGEgZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmcsIFRBY2NvdW50RGVsZWdhdGlvblJlY29yZFBkYSBleHRlbmRzIHN0cmluZyA9IHN0cmluZywgVEFjY291bnREZWxlZ2F0aW9uTWV0YWRhdGFQZGEgZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmcsIFRBY2NvdW50UGRhIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nLCBUQWNjb3VudFBheWVyIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nLCBUQWNjb3VudFZhbGlkYXRvciBleHRlbmRzIHN0cmluZyA9IHN0cmluZywgVEFjY291bnRPd25lclByb2dyYW0gZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmcsIFRBY2NvdW50RGVsZWdhdGlvblByb2dyYW0gZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmcsIFRBY2NvdW50U3lzdGVtUHJvZ3JhbSBleHRlbmRzIHN0cmluZyA9IHN0cmluZz4gPSAge1xuICBidWZmZXJQZGE/OiBBZGRyZXNzPFRBY2NvdW50QnVmZmVyUGRhPjtcbmRlbGVnYXRpb25SZWNvcmRQZGE/OiBBZGRyZXNzPFRBY2NvdW50RGVsZWdhdGlvblJlY29yZFBkYT47XG5kZWxlZ2F0aW9uTWV0YWRhdGFQZGE/OiBBZGRyZXNzPFRBY2NvdW50RGVsZWdhdGlvbk1ldGFkYXRhUGRhPjtcbnBkYTogQWRkcmVzczxUQWNjb3VudFBkYT47XG5wYXllcjogVHJhbnNhY3Rpb25TaWduZXI8VEFjY291bnRQYXllcj47XG52YWxpZGF0b3I/OiBBZGRyZXNzPFRBY2NvdW50VmFsaWRhdG9yPjtcbm93bmVyUHJvZ3JhbT86IEFkZHJlc3M8VEFjY291bnRPd25lclByb2dyYW0+O1xuZGVsZWdhdGlvblByb2dyYW0/OiBBZGRyZXNzPFRBY2NvdW50RGVsZWdhdGlvblByb2dyYW0+O1xuc3lzdGVtUHJvZ3JhbT86IEFkZHJlc3M8VEFjY291bnRTeXN0ZW1Qcm9ncmFtPjtcbmFjY291bnRUeXBlOiBEZWxlZ2F0ZVBkYUluc3RydWN0aW9uRGF0YUFyZ3NbXCJhY2NvdW50VHlwZVwiXTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldERlbGVnYXRlUGRhSW5zdHJ1Y3Rpb25Bc3luYzxUQWNjb3VudEJ1ZmZlclBkYSBleHRlbmRzIHN0cmluZywgVEFjY291bnREZWxlZ2F0aW9uUmVjb3JkUGRhIGV4dGVuZHMgc3RyaW5nLCBUQWNjb3VudERlbGVnYXRpb25NZXRhZGF0YVBkYSBleHRlbmRzIHN0cmluZywgVEFjY291bnRQZGEgZXh0ZW5kcyBzdHJpbmcsIFRBY2NvdW50UGF5ZXIgZXh0ZW5kcyBzdHJpbmcsIFRBY2NvdW50VmFsaWRhdG9yIGV4dGVuZHMgc3RyaW5nLCBUQWNjb3VudE93bmVyUHJvZ3JhbSBleHRlbmRzIHN0cmluZywgVEFjY291bnREZWxlZ2F0aW9uUHJvZ3JhbSBleHRlbmRzIHN0cmluZywgVEFjY291bnRTeXN0ZW1Qcm9ncmFtIGV4dGVuZHMgc3RyaW5nLCBUUHJvZ3JhbUFkZHJlc3MgZXh0ZW5kcyBBZGRyZXNzID0gdHlwZW9mIFJQU19HQU1FX1BST0dSQU1fQUREUkVTUz4oaW5wdXQ6IERlbGVnYXRlUGRhQXN5bmNJbnB1dDxUQWNjb3VudEJ1ZmZlclBkYSwgVEFjY291bnREZWxlZ2F0aW9uUmVjb3JkUGRhLCBUQWNjb3VudERlbGVnYXRpb25NZXRhZGF0YVBkYSwgVEFjY291bnRQZGEsIFRBY2NvdW50UGF5ZXIsIFRBY2NvdW50VmFsaWRhdG9yLCBUQWNjb3VudE93bmVyUHJvZ3JhbSwgVEFjY291bnREZWxlZ2F0aW9uUHJvZ3JhbSwgVEFjY291bnRTeXN0ZW1Qcm9ncmFtPiwgY29uZmlnPzogeyBwcm9ncmFtQWRkcmVzcz86IFRQcm9ncmFtQWRkcmVzcyB9ICk6IFByb21pc2U8RGVsZWdhdGVQZGFJbnN0cnVjdGlvbjxUUHJvZ3JhbUFkZHJlc3MsIFRBY2NvdW50QnVmZmVyUGRhLCBUQWNjb3VudERlbGVnYXRpb25SZWNvcmRQZGEsIFRBY2NvdW50RGVsZWdhdGlvbk1ldGFkYXRhUGRhLCBUQWNjb3VudFBkYSwgVEFjY291bnRQYXllciwgVEFjY291bnRWYWxpZGF0b3IsIFRBY2NvdW50T3duZXJQcm9ncmFtLCBUQWNjb3VudERlbGVnYXRpb25Qcm9ncmFtLCBUQWNjb3VudFN5c3RlbVByb2dyYW0+PiB7XG4gIC8vIFByb2dyYW0gYWRkcmVzcy5cbmNvbnN0IHByb2dyYW1BZGRyZXNzID0gY29uZmlnPy5wcm9ncmFtQWRkcmVzcyA/PyBSUFNfR0FNRV9QUk9HUkFNX0FERFJFU1M7XG5cbiAvLyBPcmlnaW5hbCBhY2NvdW50cy5cbmNvbnN0IG9yaWdpbmFsQWNjb3VudHMgPSB7IGJ1ZmZlclBkYTogeyB2YWx1ZTogaW5wdXQuYnVmZmVyUGRhID8/IG51bGwsIGlzV3JpdGFibGU6IHRydWUgfSwgZGVsZWdhdGlvblJlY29yZFBkYTogeyB2YWx1ZTogaW5wdXQuZGVsZWdhdGlvblJlY29yZFBkYSA/PyBudWxsLCBpc1dyaXRhYmxlOiB0cnVlIH0sIGRlbGVnYXRpb25NZXRhZGF0YVBkYTogeyB2YWx1ZTogaW5wdXQuZGVsZWdhdGlvbk1ldGFkYXRhUGRhID8/IG51bGwsIGlzV3JpdGFibGU6IHRydWUgfSwgcGRhOiB7IHZhbHVlOiBpbnB1dC5wZGEgPz8gbnVsbCwgaXNXcml0YWJsZTogdHJ1ZSB9LCBwYXllcjogeyB2YWx1ZTogaW5wdXQucGF5ZXIgPz8gbnVsbCwgaXNXcml0YWJsZTogdHJ1ZSB9LCB2YWxpZGF0b3I6IHsgdmFsdWU6IGlucHV0LnZhbGlkYXRvciA/PyBudWxsLCBpc1dyaXRhYmxlOiBmYWxzZSB9LCBvd25lclByb2dyYW06IHsgdmFsdWU6IGlucHV0Lm93bmVyUHJvZ3JhbSA/PyBudWxsLCBpc1dyaXRhYmxlOiBmYWxzZSB9LCBkZWxlZ2F0aW9uUHJvZ3JhbTogeyB2YWx1ZTogaW5wdXQuZGVsZWdhdGlvblByb2dyYW0gPz8gbnVsbCwgaXNXcml0YWJsZTogZmFsc2UgfSwgc3lzdGVtUHJvZ3JhbTogeyB2YWx1ZTogaW5wdXQuc3lzdGVtUHJvZ3JhbSA/PyBudWxsLCBpc1dyaXRhYmxlOiBmYWxzZSB9IH1cbmNvbnN0IGFjY291bnRzID0gb3JpZ2luYWxBY2NvdW50cyBhcyBSZWNvcmQ8a2V5b2YgdHlwZW9mIG9yaWdpbmFsQWNjb3VudHMsIFJlc29sdmVkSW5zdHJ1Y3Rpb25BY2NvdW50PjtcblxuXG4vLyBPcmlnaW5hbCBhcmdzLlxuY29uc3QgYXJncyA9IHsgLi4uaW5wdXQsICB9O1xuXG5cbi8vIFJlc29sdmUgZGVmYXVsdCB2YWx1ZXMuXG5pZiAoIWFjY291bnRzLmJ1ZmZlclBkYS52YWx1ZSkge1xuYWNjb3VudHMuYnVmZmVyUGRhLnZhbHVlID0gYXdhaXQgZ2V0UHJvZ3JhbURlcml2ZWRBZGRyZXNzKHsgcHJvZ3JhbUFkZHJlc3M6ICc4b2h1M1JvYlh5WjJEZWJ5SmpiczJjbzlZQ0cyNzVGVXNWY2tFY21EYkNvcycgYXMgQWRkcmVzczwnOG9odTNSb2JYeVoyRGVieUpqYnMyY285WUNHMjc1RlVzVmNrRWNtRGJDb3MnPiwgc2VlZHM6IFtnZXRCeXRlc0VuY29kZXIoKS5lbmNvZGUobmV3IFVpbnQ4QXJyYXkoWzk4LCAxMTcsIDEwMiwgMTAyLCAxMDEsIDExNF0pKSwgZ2V0QWRkcmVzc0VuY29kZXIoKS5lbmNvZGUoZ2V0QWRkcmVzc0Zyb21SZXNvbHZlZEluc3RydWN0aW9uQWNjb3VudChcInBkYVwiLCBhY2NvdW50cy5wZGEudmFsdWUpKV0gfSk7XG59XG5pZiAoIWFjY291bnRzLmRlbGVnYXRpb25SZWNvcmRQZGEudmFsdWUpIHtcbmFjY291bnRzLmRlbGVnYXRpb25SZWNvcmRQZGEudmFsdWUgPSBhd2FpdCBnZXRQcm9ncmFtRGVyaXZlZEFkZHJlc3MoeyBwcm9ncmFtQWRkcmVzczogJ0RFTGVHR3ZYcFdWMmZxSlVocWNGNVpTWU1TNEpUTGp0ZWFBTUFSUlNhZVNoJyBhcyBBZGRyZXNzPCdERUxlR0d2WHBXVjJmcUpVaHFjRjVaU1lNUzRKVExqdGVhQU1BUlJTYWVTaCc+LCBzZWVkczogW2dldEJ5dGVzRW5jb2RlcigpLmVuY29kZShuZXcgVWludDhBcnJheShbMTAwLCAxMDEsIDEwOCwgMTAxLCAxMDMsIDk3LCAxMTYsIDEwNSwgMTExLCAxMTBdKSksIGdldEFkZHJlc3NFbmNvZGVyKCkuZW5jb2RlKGdldEFkZHJlc3NGcm9tUmVzb2x2ZWRJbnN0cnVjdGlvbkFjY291bnQoXCJwZGFcIiwgYWNjb3VudHMucGRhLnZhbHVlKSldIH0pO1xufVxuaWYgKCFhY2NvdW50cy5kZWxlZ2F0aW9uTWV0YWRhdGFQZGEudmFsdWUpIHtcbmFjY291bnRzLmRlbGVnYXRpb25NZXRhZGF0YVBkYS52YWx1ZSA9IGF3YWl0IGdldFByb2dyYW1EZXJpdmVkQWRkcmVzcyh7IHByb2dyYW1BZGRyZXNzOiAnREVMZUdHdlhwV1YyZnFKVWhxY0Y1WlNZTVM0SlRManRlYUFNQVJSU2FlU2gnIGFzIEFkZHJlc3M8J0RFTGVHR3ZYcFdWMmZxSlVocWNGNVpTWU1TNEpUTGp0ZWFBTUFSUlNhZVNoJz4sIHNlZWRzOiBbZ2V0Qnl0ZXNFbmNvZGVyKCkuZW5jb2RlKG5ldyBVaW50OEFycmF5KFsxMDAsIDEwMSwgMTA4LCAxMDEsIDEwMywgOTcsIDExNiwgMTA1LCAxMTEsIDExMCwgNDUsIDEwOSwgMTAxLCAxMTYsIDk3LCAxMDAsIDk3LCAxMTYsIDk3XSkpLCBnZXRBZGRyZXNzRW5jb2RlcigpLmVuY29kZShnZXRBZGRyZXNzRnJvbVJlc29sdmVkSW5zdHJ1Y3Rpb25BY2NvdW50KFwicGRhXCIsIGFjY291bnRzLnBkYS52YWx1ZSkpXSB9KTtcbn1cbmlmICghYWNjb3VudHMub3duZXJQcm9ncmFtLnZhbHVlKSB7XG5hY2NvdW50cy5vd25lclByb2dyYW0udmFsdWUgPSAnOG9odTNSb2JYeVoyRGVieUpqYnMyY285WUNHMjc1RlVzVmNrRWNtRGJDb3MnIGFzIEFkZHJlc3M8JzhvaHUzUm9iWHlaMkRlYnlKamJzMmNvOVlDRzI3NUZVc1Zja0VjbURiQ29zJz47XG59XG5pZiAoIWFjY291bnRzLmRlbGVnYXRpb25Qcm9ncmFtLnZhbHVlKSB7XG5hY2NvdW50cy5kZWxlZ2F0aW9uUHJvZ3JhbS52YWx1ZSA9ICdERUxlR0d2WHBXVjJmcUpVaHFjRjVaU1lNUzRKVExqdGVhQU1BUlJTYWVTaCcgYXMgQWRkcmVzczwnREVMZUdHdlhwV1YyZnFKVWhxY0Y1WlNZTVM0SlRManRlYUFNQVJSU2FlU2gnPjtcbn1cbmlmICghYWNjb3VudHMuc3lzdGVtUHJvZ3JhbS52YWx1ZSkge1xuYWNjb3VudHMuc3lzdGVtUHJvZ3JhbS52YWx1ZSA9ICcxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMScgYXMgQWRkcmVzczwnMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEnPjtcbn1cblxuY29uc3QgZ2V0QWNjb3VudE1ldGEgPSBnZXRBY2NvdW50TWV0YUZhY3RvcnkocHJvZ3JhbUFkZHJlc3MsICdwcm9ncmFtSWQnKTtcbnJldHVybiBPYmplY3QuZnJlZXplKHsgYWNjb3VudHM6IFtnZXRBY2NvdW50TWV0YShcImJ1ZmZlclBkYVwiLCBhY2NvdW50cy5idWZmZXJQZGEpLCBnZXRBY2NvdW50TWV0YShcImRlbGVnYXRpb25SZWNvcmRQZGFcIiwgYWNjb3VudHMuZGVsZWdhdGlvblJlY29yZFBkYSksIGdldEFjY291bnRNZXRhKFwiZGVsZWdhdGlvbk1ldGFkYXRhUGRhXCIsIGFjY291bnRzLmRlbGVnYXRpb25NZXRhZGF0YVBkYSksIGdldEFjY291bnRNZXRhKFwicGRhXCIsIGFjY291bnRzLnBkYSksIGdldEFjY291bnRNZXRhKFwicGF5ZXJcIiwgYWNjb3VudHMucGF5ZXIpLCBnZXRBY2NvdW50TWV0YShcInZhbGlkYXRvclwiLCBhY2NvdW50cy52YWxpZGF0b3IpLCBnZXRBY2NvdW50TWV0YShcIm93bmVyUHJvZ3JhbVwiLCBhY2NvdW50cy5vd25lclByb2dyYW0pLCBnZXRBY2NvdW50TWV0YShcImRlbGVnYXRpb25Qcm9ncmFtXCIsIGFjY291bnRzLmRlbGVnYXRpb25Qcm9ncmFtKSwgZ2V0QWNjb3VudE1ldGEoXCJzeXN0ZW1Qcm9ncmFtXCIsIGFjY291bnRzLnN5c3RlbVByb2dyYW0pXSwgZGF0YTogZ2V0RGVsZWdhdGVQZGFJbnN0cnVjdGlvbkRhdGFFbmNvZGVyKCkuZW5jb2RlKGFyZ3MgYXMgRGVsZWdhdGVQZGFJbnN0cnVjdGlvbkRhdGFBcmdzKSwgcHJvZ3JhbUFkZHJlc3MgfSBhcyBEZWxlZ2F0ZVBkYUluc3RydWN0aW9uPFRQcm9ncmFtQWRkcmVzcywgVEFjY291bnRCdWZmZXJQZGEsIFRBY2NvdW50RGVsZWdhdGlvblJlY29yZFBkYSwgVEFjY291bnREZWxlZ2F0aW9uTWV0YWRhdGFQZGEsIFRBY2NvdW50UGRhLCBUQWNjb3VudFBheWVyLCBUQWNjb3VudFZhbGlkYXRvciwgVEFjY291bnRPd25lclByb2dyYW0sIFRBY2NvdW50RGVsZWdhdGlvblByb2dyYW0sIFRBY2NvdW50U3lzdGVtUHJvZ3JhbT4pO1xufVxuXG5leHBvcnQgdHlwZSBEZWxlZ2F0ZVBkYUlucHV0PFRBY2NvdW50QnVmZmVyUGRhIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nLCBUQWNjb3VudERlbGVnYXRpb25SZWNvcmRQZGEgZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmcsIFRBY2NvdW50RGVsZWdhdGlvbk1ldGFkYXRhUGRhIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nLCBUQWNjb3VudFBkYSBleHRlbmRzIHN0cmluZyA9IHN0cmluZywgVEFjY291bnRQYXllciBleHRlbmRzIHN0cmluZyA9IHN0cmluZywgVEFjY291bnRWYWxpZGF0b3IgZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmcsIFRBY2NvdW50T3duZXJQcm9ncmFtIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nLCBUQWNjb3VudERlbGVnYXRpb25Qcm9ncmFtIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nLCBUQWNjb3VudFN5c3RlbVByb2dyYW0gZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmc+ID0gIHtcbiAgYnVmZmVyUGRhOiBBZGRyZXNzPFRBY2NvdW50QnVmZmVyUGRhPjtcbmRlbGVnYXRpb25SZWNvcmRQZGE6IEFkZHJlc3M8VEFjY291bnREZWxlZ2F0aW9uUmVjb3JkUGRhPjtcbmRlbGVnYXRpb25NZXRhZGF0YVBkYTogQWRkcmVzczxUQWNjb3VudERlbGVnYXRpb25NZXRhZGF0YVBkYT47XG5wZGE6IEFkZHJlc3M8VEFjY291bnRQZGE+O1xucGF5ZXI6IFRyYW5zYWN0aW9uU2lnbmVyPFRBY2NvdW50UGF5ZXI+O1xudmFsaWRhdG9yPzogQWRkcmVzczxUQWNjb3VudFZhbGlkYXRvcj47XG5vd25lclByb2dyYW0/OiBBZGRyZXNzPFRBY2NvdW50T3duZXJQcm9ncmFtPjtcbmRlbGVnYXRpb25Qcm9ncmFtPzogQWRkcmVzczxUQWNjb3VudERlbGVnYXRpb25Qcm9ncmFtPjtcbnN5c3RlbVByb2dyYW0/OiBBZGRyZXNzPFRBY2NvdW50U3lzdGVtUHJvZ3JhbT47XG5hY2NvdW50VHlwZTogRGVsZWdhdGVQZGFJbnN0cnVjdGlvbkRhdGFBcmdzW1wiYWNjb3VudFR5cGVcIl07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWxlZ2F0ZVBkYUluc3RydWN0aW9uPFRBY2NvdW50QnVmZmVyUGRhIGV4dGVuZHMgc3RyaW5nLCBUQWNjb3VudERlbGVnYXRpb25SZWNvcmRQZGEgZXh0ZW5kcyBzdHJpbmcsIFRBY2NvdW50RGVsZWdhdGlvbk1ldGFkYXRhUGRhIGV4dGVuZHMgc3RyaW5nLCBUQWNjb3VudFBkYSBleHRlbmRzIHN0cmluZywgVEFjY291bnRQYXllciBleHRlbmRzIHN0cmluZywgVEFjY291bnRWYWxpZGF0b3IgZXh0ZW5kcyBzdHJpbmcsIFRBY2NvdW50T3duZXJQcm9ncmFtIGV4dGVuZHMgc3RyaW5nLCBUQWNjb3VudERlbGVnYXRpb25Qcm9ncmFtIGV4dGVuZHMgc3RyaW5nLCBUQWNjb3VudFN5c3RlbVByb2dyYW0gZXh0ZW5kcyBzdHJpbmcsIFRQcm9ncmFtQWRkcmVzcyBleHRlbmRzIEFkZHJlc3MgPSB0eXBlb2YgUlBTX0dBTUVfUFJPR1JBTV9BRERSRVNTPihpbnB1dDogRGVsZWdhdGVQZGFJbnB1dDxUQWNjb3VudEJ1ZmZlclBkYSwgVEFjY291bnREZWxlZ2F0aW9uUmVjb3JkUGRhLCBUQWNjb3VudERlbGVnYXRpb25NZXRhZGF0YVBkYSwgVEFjY291bnRQZGEsIFRBY2NvdW50UGF5ZXIsIFRBY2NvdW50VmFsaWRhdG9yLCBUQWNjb3VudE93bmVyUHJvZ3JhbSwgVEFjY291bnREZWxlZ2F0aW9uUHJvZ3JhbSwgVEFjY291bnRTeXN0ZW1Qcm9ncmFtPiwgY29uZmlnPzogeyBwcm9ncmFtQWRkcmVzcz86IFRQcm9ncmFtQWRkcmVzcyB9ICk6IERlbGVnYXRlUGRhSW5zdHJ1Y3Rpb248VFByb2dyYW1BZGRyZXNzLCBUQWNjb3VudEJ1ZmZlclBkYSwgVEFjY291bnREZWxlZ2F0aW9uUmVjb3JkUGRhLCBUQWNjb3VudERlbGVnYXRpb25NZXRhZGF0YVBkYSwgVEFjY291bnRQZGEsIFRBY2NvdW50UGF5ZXIsIFRBY2NvdW50VmFsaWRhdG9yLCBUQWNjb3VudE93bmVyUHJvZ3JhbSwgVEFjY291bnREZWxlZ2F0aW9uUHJvZ3JhbSwgVEFjY291bnRTeXN0ZW1Qcm9ncmFtPiB7XG4gIC8vIFByb2dyYW0gYWRkcmVzcy5cbmNvbnN0IHByb2dyYW1BZGRyZXNzID0gY29uZmlnPy5wcm9ncmFtQWRkcmVzcyA/PyBSUFNfR0FNRV9QUk9HUkFNX0FERFJFU1M7XG5cbiAvLyBPcmlnaW5hbCBhY2NvdW50cy5cbmNvbnN0IG9yaWdpbmFsQWNjb3VudHMgPSB7IGJ1ZmZlclBkYTogeyB2YWx1ZTogaW5wdXQuYnVmZmVyUGRhID8/IG51bGwsIGlzV3JpdGFibGU6IHRydWUgfSwgZGVsZWdhdGlvblJlY29yZFBkYTogeyB2YWx1ZTogaW5wdXQuZGVsZWdhdGlvblJlY29yZFBkYSA/PyBudWxsLCBpc1dyaXRhYmxlOiB0cnVlIH0sIGRlbGVnYXRpb25NZXRhZGF0YVBkYTogeyB2YWx1ZTogaW5wdXQuZGVsZWdhdGlvbk1ldGFkYXRhUGRhID8/IG51bGwsIGlzV3JpdGFibGU6IHRydWUgfSwgcGRhOiB7IHZhbHVlOiBpbnB1dC5wZGEgPz8gbnVsbCwgaXNXcml0YWJsZTogdHJ1ZSB9LCBwYXllcjogeyB2YWx1ZTogaW5wdXQucGF5ZXIgPz8gbnVsbCwgaXNXcml0YWJsZTogdHJ1ZSB9LCB2YWxpZGF0b3I6IHsgdmFsdWU6IGlucHV0LnZhbGlkYXRvciA/PyBudWxsLCBpc1dyaXRhYmxlOiBmYWxzZSB9LCBvd25lclByb2dyYW06IHsgdmFsdWU6IGlucHV0Lm93bmVyUHJvZ3JhbSA/PyBudWxsLCBpc1dyaXRhYmxlOiBmYWxzZSB9LCBkZWxlZ2F0aW9uUHJvZ3JhbTogeyB2YWx1ZTogaW5wdXQuZGVsZWdhdGlvblByb2dyYW0gPz8gbnVsbCwgaXNXcml0YWJsZTogZmFsc2UgfSwgc3lzdGVtUHJvZ3JhbTogeyB2YWx1ZTogaW5wdXQuc3lzdGVtUHJvZ3JhbSA/PyBudWxsLCBpc1dyaXRhYmxlOiBmYWxzZSB9IH1cbmNvbnN0IGFjY291bnRzID0gb3JpZ2luYWxBY2NvdW50cyBhcyBSZWNvcmQ8a2V5b2YgdHlwZW9mIG9yaWdpbmFsQWNjb3VudHMsIFJlc29sdmVkSW5zdHJ1Y3Rpb25BY2NvdW50PjtcblxuXG4vLyBPcmlnaW5hbCBhcmdzLlxuY29uc3QgYXJncyA9IHsgLi4uaW5wdXQsICB9O1xuXG5cbi8vIFJlc29sdmUgZGVmYXVsdCB2YWx1ZXMuXG5pZiAoIWFjY291bnRzLm93bmVyUHJvZ3JhbS52YWx1ZSkge1xuYWNjb3VudHMub3duZXJQcm9ncmFtLnZhbHVlID0gJzhvaHUzUm9iWHlaMkRlYnlKamJzMmNvOVlDRzI3NUZVc1Zja0VjbURiQ29zJyBhcyBBZGRyZXNzPCc4b2h1M1JvYlh5WjJEZWJ5SmpiczJjbzlZQ0cyNzVGVXNWY2tFY21EYkNvcyc+O1xufVxuaWYgKCFhY2NvdW50cy5kZWxlZ2F0aW9uUHJvZ3JhbS52YWx1ZSkge1xuYWNjb3VudHMuZGVsZWdhdGlvblByb2dyYW0udmFsdWUgPSAnREVMZUdHdlhwV1YyZnFKVWhxY0Y1WlNZTVM0SlRManRlYUFNQVJSU2FlU2gnIGFzIEFkZHJlc3M8J0RFTGVHR3ZYcFdWMmZxSlVocWNGNVpTWU1TNEpUTGp0ZWFBTUFSUlNhZVNoJz47XG59XG5pZiAoIWFjY291bnRzLnN5c3RlbVByb2dyYW0udmFsdWUpIHtcbmFjY291bnRzLnN5c3RlbVByb2dyYW0udmFsdWUgPSAnMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEnIGFzIEFkZHJlc3M8JzExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExJz47XG59XG5cbmNvbnN0IGdldEFjY291bnRNZXRhID0gZ2V0QWNjb3VudE1ldGFGYWN0b3J5KHByb2dyYW1BZGRyZXNzLCAncHJvZ3JhbUlkJyk7XG5yZXR1cm4gT2JqZWN0LmZyZWV6ZSh7IGFjY291bnRzOiBbZ2V0QWNjb3VudE1ldGEoXCJidWZmZXJQZGFcIiwgYWNjb3VudHMuYnVmZmVyUGRhKSwgZ2V0QWNjb3VudE1ldGEoXCJkZWxlZ2F0aW9uUmVjb3JkUGRhXCIsIGFjY291bnRzLmRlbGVnYXRpb25SZWNvcmRQZGEpLCBnZXRBY2NvdW50TWV0YShcImRlbGVnYXRpb25NZXRhZGF0YVBkYVwiLCBhY2NvdW50cy5kZWxlZ2F0aW9uTWV0YWRhdGFQZGEpLCBnZXRBY2NvdW50TWV0YShcInBkYVwiLCBhY2NvdW50cy5wZGEpLCBnZXRBY2NvdW50TWV0YShcInBheWVyXCIsIGFjY291bnRzLnBheWVyKSwgZ2V0QWNjb3VudE1ldGEoXCJ2YWxpZGF0b3JcIiwgYWNjb3VudHMudmFsaWRhdG9yKSwgZ2V0QWNjb3VudE1ldGEoXCJvd25lclByb2dyYW1cIiwgYWNjb3VudHMub3duZXJQcm9ncmFtKSwgZ2V0QWNjb3VudE1ldGEoXCJkZWxlZ2F0aW9uUHJvZ3JhbVwiLCBhY2NvdW50cy5kZWxlZ2F0aW9uUHJvZ3JhbSksIGdldEFjY291bnRNZXRhKFwic3lzdGVtUHJvZ3JhbVwiLCBhY2NvdW50cy5zeXN0ZW1Qcm9ncmFtKV0sIGRhdGE6IGdldERlbGVnYXRlUGRhSW5zdHJ1Y3Rpb25EYXRhRW5jb2RlcigpLmVuY29kZShhcmdzIGFzIERlbGVnYXRlUGRhSW5zdHJ1Y3Rpb25EYXRhQXJncyksIHByb2dyYW1BZGRyZXNzIH0gYXMgRGVsZWdhdGVQZGFJbnN0cnVjdGlvbjxUUHJvZ3JhbUFkZHJlc3MsIFRBY2NvdW50QnVmZmVyUGRhLCBUQWNjb3VudERlbGVnYXRpb25SZWNvcmRQZGEsIFRBY2NvdW50RGVsZWdhdGlvbk1ldGFkYXRhUGRhLCBUQWNjb3VudFBkYSwgVEFjY291bnRQYXllciwgVEFjY291bnRWYWxpZGF0b3IsIFRBY2NvdW50T3duZXJQcm9ncmFtLCBUQWNjb3VudERlbGVnYXRpb25Qcm9ncmFtLCBUQWNjb3VudFN5c3RlbVByb2dyYW0+KTtcbn1cblxuZXhwb3J0IHR5cGUgUGFyc2VkRGVsZWdhdGVQZGFJbnN0cnVjdGlvbjxUUHJvZ3JhbSBleHRlbmRzIHN0cmluZyA9IHR5cGVvZiBSUFNfR0FNRV9QUk9HUkFNX0FERFJFU1MsIFRBY2NvdW50TWV0YXMgZXh0ZW5kcyByZWFkb25seSBBY2NvdW50TWV0YVtdID0gcmVhZG9ubHkgQWNjb3VudE1ldGFbXT4gPSB7IHByb2dyYW1BZGRyZXNzOiBBZGRyZXNzPFRQcm9ncmFtPjtcbmFjY291bnRzOiB7XG5idWZmZXJQZGE6IFRBY2NvdW50TWV0YXNbMF07XG5kZWxlZ2F0aW9uUmVjb3JkUGRhOiBUQWNjb3VudE1ldGFzWzFdO1xuZGVsZWdhdGlvbk1ldGFkYXRhUGRhOiBUQWNjb3VudE1ldGFzWzJdO1xucGRhOiBUQWNjb3VudE1ldGFzWzNdO1xucGF5ZXI6IFRBY2NvdW50TWV0YXNbNF07XG52YWxpZGF0b3I/OiBUQWNjb3VudE1ldGFzWzVdIHwgdW5kZWZpbmVkO1xub3duZXJQcm9ncmFtOiBUQWNjb3VudE1ldGFzWzZdO1xuZGVsZWdhdGlvblByb2dyYW06IFRBY2NvdW50TWV0YXNbN107XG5zeXN0ZW1Qcm9ncmFtOiBUQWNjb3VudE1ldGFzWzhdO1xufTtcbmRhdGE6IERlbGVnYXRlUGRhSW5zdHJ1Y3Rpb25EYXRhOyB9O1xuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VEZWxlZ2F0ZVBkYUluc3RydWN0aW9uPFRQcm9ncmFtIGV4dGVuZHMgc3RyaW5nLCBUQWNjb3VudE1ldGFzIGV4dGVuZHMgcmVhZG9ubHkgQWNjb3VudE1ldGFbXT4oaW5zdHJ1Y3Rpb246IEluc3RydWN0aW9uPFRQcm9ncmFtPiAmIEluc3RydWN0aW9uV2l0aEFjY291bnRzPFRBY2NvdW50TWV0YXM+ICYgSW5zdHJ1Y3Rpb25XaXRoRGF0YTxSZWFkb25seVVpbnQ4QXJyYXk+KTogUGFyc2VkRGVsZWdhdGVQZGFJbnN0cnVjdGlvbjxUUHJvZ3JhbSwgVEFjY291bnRNZXRhcz4ge1xuICBpZiAoaW5zdHJ1Y3Rpb24uYWNjb3VudHMubGVuZ3RoIDwgOSkge1xuICB0aHJvdyBuZXcgU29sYW5hRXJyb3IoU09MQU5BX0VSUk9SX19QUk9HUkFNX0NMSUVOVFNfX0lOU1VGRklDSUVOVF9BQ0NPVU5UX01FVEFTLCB7IGFjdHVhbEFjY291bnRNZXRhczogaW5zdHJ1Y3Rpb24uYWNjb3VudHMubGVuZ3RoLCBleHBlY3RlZEFjY291bnRNZXRhczogOSB9KTtcbn1cbmxldCBhY2NvdW50SW5kZXggPSAwO1xuY29uc3QgZ2V0TmV4dEFjY291bnQgPSAoKSA9PiB7XG4gIGNvbnN0IGFjY291bnRNZXRhID0gKGluc3RydWN0aW9uLmFjY291bnRzIGFzIFRBY2NvdW50TWV0YXMpW2FjY291bnRJbmRleF0hO1xuICBhY2NvdW50SW5kZXggKz0gMTtcbiAgcmV0dXJuIGFjY291bnRNZXRhO1xufVxuY29uc3QgZ2V0TmV4dE9wdGlvbmFsQWNjb3VudCA9ICgpID0+IHtcbiAgY29uc3QgYWNjb3VudE1ldGEgPSBnZXROZXh0QWNjb3VudCgpO1xuICByZXR1cm4gYWNjb3VudE1ldGEuYWRkcmVzcyA9PT0gUlBTX0dBTUVfUFJPR1JBTV9BRERSRVNTID8gdW5kZWZpbmVkIDogYWNjb3VudE1ldGE7XG59O1xuICByZXR1cm4geyBwcm9ncmFtQWRkcmVzczogaW5zdHJ1Y3Rpb24ucHJvZ3JhbUFkZHJlc3MsIGFjY291bnRzOiB7IGJ1ZmZlclBkYTogZ2V0TmV4dEFjY291bnQoKSwgZGVsZWdhdGlvblJlY29yZFBkYTogZ2V0TmV4dEFjY291bnQoKSwgZGVsZWdhdGlvbk1ldGFkYXRhUGRhOiBnZXROZXh0QWNjb3VudCgpLCBwZGE6IGdldE5leHRBY2NvdW50KCksIHBheWVyOiBnZXROZXh0QWNjb3VudCgpLCB2YWxpZGF0b3I6IGdldE5leHRPcHRpb25hbEFjY291bnQoKSwgb3duZXJQcm9ncmFtOiBnZXROZXh0QWNjb3VudCgpLCBkZWxlZ2F0aW9uUHJvZ3JhbTogZ2V0TmV4dEFjY291bnQoKSwgc3lzdGVtUHJvZ3JhbTogZ2V0TmV4dEFjY291bnQoKSB9LCBkYXRhOiBnZXREZWxlZ2F0ZVBkYUluc3RydWN0aW9uRGF0YURlY29kZXIoKS5kZWNvZGUoaW5zdHJ1Y3Rpb24uZGF0YSkgfTtcbn0iXX0=
@@ -0,0 +1,16 @@
1
+ /**
2
+ * This code was AUTOGENERATED using the Codama library.
3
+ * Please DO NOT EDIT THIS FILE, instead use visitors
4
+ * to add features, then rerun Codama to update it.
5
+ *
6
+ * @see https://github.com/codama-idl/codama
7
+ */
8
+ export * from './closePlayer';
9
+ export * from './delegatePda';
10
+ export * from './initializePlayer';
11
+ export * from './makeChoice';
12
+ export * from './onMatchFound';
13
+ export * from './persistResults';
14
+ export * from './processUndelegation';
15
+ export * from './startGame';
16
+ export * from './startGameWithTicket';
@@ -0,0 +1,17 @@
1
+ /**
2
+ * This code was AUTOGENERATED using the Codama library.
3
+ * Please DO NOT EDIT THIS FILE, instead use visitors
4
+ * to add features, then rerun Codama to update it.
5
+ *
6
+ * @see https://github.com/codama-idl/codama
7
+ */
8
+ export * from './closePlayer';
9
+ export * from './delegatePda';
10
+ export * from './initializePlayer';
11
+ export * from './makeChoice';
12
+ export * from './onMatchFound';
13
+ export * from './persistResults';
14
+ export * from './processUndelegation';
15
+ export * from './startGame';
16
+ export * from './startGameWithTicket';
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZ2VuZXJhdGVkL3Jwcy1nYW1lL2luc3RydWN0aW9ucy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsdUJBQXVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoaXMgY29kZSB3YXMgQVVUT0dFTkVSQVRFRCB1c2luZyB0aGUgQ29kYW1hIGxpYnJhcnkuXG4gKiBQbGVhc2UgRE8gTk9UIEVESVQgVEhJUyBGSUxFLCBpbnN0ZWFkIHVzZSB2aXNpdG9yc1xuICogdG8gYWRkIGZlYXR1cmVzLCB0aGVuIHJlcnVuIENvZGFtYSB0byB1cGRhdGUgaXQuXG4gKlxuICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vY29kYW1hLWlkbC9jb2RhbWFcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2Nsb3NlUGxheWVyJztcbmV4cG9ydCAqIGZyb20gJy4vZGVsZWdhdGVQZGEnO1xuZXhwb3J0ICogZnJvbSAnLi9pbml0aWFsaXplUGxheWVyJztcbmV4cG9ydCAqIGZyb20gJy4vbWFrZUNob2ljZSc7XG5leHBvcnQgKiBmcm9tICcuL29uTWF0Y2hGb3VuZCc7XG5leHBvcnQgKiBmcm9tICcuL3BlcnNpc3RSZXN1bHRzJztcbmV4cG9ydCAqIGZyb20gJy4vcHJvY2Vzc1VuZGVsZWdhdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL3N0YXJ0R2FtZSc7XG5leHBvcnQgKiBmcm9tICcuL3N0YXJ0R2FtZVdpdGhUaWNrZXQnOyJdfQ==
@@ -0,0 +1,48 @@
1
+ /**
2
+ * This code was AUTOGENERATED using the Codama library.
3
+ * Please DO NOT EDIT THIS FILE, instead use visitors
4
+ * to add features, then rerun Codama to update it.
5
+ *
6
+ * @see https://github.com/codama-idl/codama
7
+ */
8
+ import { type AccountMeta, type AccountSignerMeta, type Address, type FixedSizeCodec, type FixedSizeDecoder, type FixedSizeEncoder, type Instruction, type InstructionWithAccounts, type InstructionWithData, type ReadonlyAccount, type ReadonlyUint8Array, type TransactionSigner, type WritableAccount, type WritableSignerAccount } from '@solana/kit';
9
+ import { RPS_GAME_PROGRAM_ADDRESS } from '../programs';
10
+ export declare const INITIALIZE_PLAYER_DISCRIMINATOR: Uint8Array<ArrayBuffer>;
11
+ export declare function getInitializePlayerDiscriminatorBytes(): ReadonlyUint8Array<ArrayBuffer>;
12
+ export type InitializePlayerInstruction<TProgram extends string = typeof RPS_GAME_PROGRAM_ADDRESS, TAccountProfile extends string | AccountMeta<string> = string, TAccountPlayer extends string | AccountMeta<string> = string, TAccountPayer extends string | AccountMeta<string> = string, TAccountSystemProgram extends string | AccountMeta<string> = "11111111111111111111111111111111", TRemainingAccounts extends readonly AccountMeta<string>[] = []> = Instruction<TProgram> & InstructionWithData<ReadonlyUint8Array> & InstructionWithAccounts<[TAccountProfile extends string ? WritableAccount<TAccountProfile> : TAccountProfile, TAccountPlayer extends string ? WritableSignerAccount<TAccountPlayer> & AccountSignerMeta<TAccountPlayer> : TAccountPlayer, TAccountPayer extends string ? WritableSignerAccount<TAccountPayer> & AccountSignerMeta<TAccountPayer> : TAccountPayer, TAccountSystemProgram extends string ? ReadonlyAccount<TAccountSystemProgram> : TAccountSystemProgram, ...TRemainingAccounts]>;
13
+ export type InitializePlayerInstructionData = {
14
+ discriminator: ReadonlyUint8Array;
15
+ };
16
+ export type InitializePlayerInstructionDataArgs = {};
17
+ export declare function getInitializePlayerInstructionDataEncoder(): FixedSizeEncoder<InitializePlayerInstructionDataArgs>;
18
+ export declare function getInitializePlayerInstructionDataDecoder(): FixedSizeDecoder<InitializePlayerInstructionData>;
19
+ export declare function getInitializePlayerInstructionDataCodec(): FixedSizeCodec<InitializePlayerInstructionDataArgs, InitializePlayerInstructionData>;
20
+ export type InitializePlayerAsyncInput<TAccountProfile extends string = string, TAccountPlayer extends string = string, TAccountPayer extends string = string, TAccountSystemProgram extends string = string> = {
21
+ profile?: Address<TAccountProfile>;
22
+ player: TransactionSigner<TAccountPlayer>;
23
+ payer: TransactionSigner<TAccountPayer>;
24
+ systemProgram?: Address<TAccountSystemProgram>;
25
+ };
26
+ export declare function getInitializePlayerInstructionAsync<TAccountProfile extends string, TAccountPlayer extends string, TAccountPayer extends string, TAccountSystemProgram extends string, TProgramAddress extends Address = typeof RPS_GAME_PROGRAM_ADDRESS>(input: InitializePlayerAsyncInput<TAccountProfile, TAccountPlayer, TAccountPayer, TAccountSystemProgram>, config?: {
27
+ programAddress?: TProgramAddress;
28
+ }): Promise<InitializePlayerInstruction<TProgramAddress, TAccountProfile, TAccountPlayer, TAccountPayer, TAccountSystemProgram>>;
29
+ export type InitializePlayerInput<TAccountProfile extends string = string, TAccountPlayer extends string = string, TAccountPayer extends string = string, TAccountSystemProgram extends string = string> = {
30
+ profile: Address<TAccountProfile>;
31
+ player: TransactionSigner<TAccountPlayer>;
32
+ payer: TransactionSigner<TAccountPayer>;
33
+ systemProgram?: Address<TAccountSystemProgram>;
34
+ };
35
+ export declare function getInitializePlayerInstruction<TAccountProfile extends string, TAccountPlayer extends string, TAccountPayer extends string, TAccountSystemProgram extends string, TProgramAddress extends Address = typeof RPS_GAME_PROGRAM_ADDRESS>(input: InitializePlayerInput<TAccountProfile, TAccountPlayer, TAccountPayer, TAccountSystemProgram>, config?: {
36
+ programAddress?: TProgramAddress;
37
+ }): InitializePlayerInstruction<TProgramAddress, TAccountProfile, TAccountPlayer, TAccountPayer, TAccountSystemProgram>;
38
+ export type ParsedInitializePlayerInstruction<TProgram extends string = typeof RPS_GAME_PROGRAM_ADDRESS, TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[]> = {
39
+ programAddress: Address<TProgram>;
40
+ accounts: {
41
+ profile: TAccountMetas[0];
42
+ player: TAccountMetas[1];
43
+ payer: TAccountMetas[2];
44
+ systemProgram: TAccountMetas[3];
45
+ };
46
+ data: InitializePlayerInstructionData;
47
+ };
48
+ export declare function parseInitializePlayerInstruction<TProgram extends string, TAccountMetas extends readonly AccountMeta[]>(instruction: Instruction<TProgram> & InstructionWithAccounts<TAccountMetas> & InstructionWithData<ReadonlyUint8Array>): ParsedInitializePlayerInstruction<TProgram, TAccountMetas>;
@@ -0,0 +1,63 @@
1
+ /**
2
+ * This code was AUTOGENERATED using the Codama library.
3
+ * Please DO NOT EDIT THIS FILE, instead use visitors
4
+ * to add features, then rerun Codama to update it.
5
+ *
6
+ * @see https://github.com/codama-idl/codama
7
+ */
8
+ import { combineCodec, fixDecoderSize, fixEncoderSize, getAddressEncoder, getBytesDecoder, getBytesEncoder, getProgramDerivedAddress, getStructDecoder, getStructEncoder, SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS, SolanaError, transformEncoder } from '@solana/kit';
9
+ import { getAccountMetaFactory, getAddressFromResolvedInstructionAccount } from '@solana/program-client-core';
10
+ import { RPS_GAME_PROGRAM_ADDRESS } from '../programs';
11
+ export const INITIALIZE_PLAYER_DISCRIMINATOR = new Uint8Array([79, 249, 88, 177, 220, 62, 56, 128]);
12
+ export function getInitializePlayerDiscriminatorBytes() { return fixEncoderSize(getBytesEncoder(), 8).encode(INITIALIZE_PLAYER_DISCRIMINATOR); }
13
+ export function getInitializePlayerInstructionDataEncoder() {
14
+ return transformEncoder(getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]), (value) => ({ ...value, discriminator: INITIALIZE_PLAYER_DISCRIMINATOR }));
15
+ }
16
+ export function getInitializePlayerInstructionDataDecoder() {
17
+ return getStructDecoder([['discriminator', fixDecoderSize(getBytesDecoder(), 8)]]);
18
+ }
19
+ export function getInitializePlayerInstructionDataCodec() {
20
+ return combineCodec(getInitializePlayerInstructionDataEncoder(), getInitializePlayerInstructionDataDecoder());
21
+ }
22
+ export async function getInitializePlayerInstructionAsync(input, config) {
23
+ // Program address.
24
+ const programAddress = config?.programAddress ?? RPS_GAME_PROGRAM_ADDRESS;
25
+ // Original accounts.
26
+ const originalAccounts = { profile: { value: input.profile ?? null, isWritable: true }, player: { value: input.player ?? null, isWritable: true }, payer: { value: input.payer ?? null, isWritable: true }, systemProgram: { value: input.systemProgram ?? null, isWritable: false } };
27
+ const accounts = originalAccounts;
28
+ // Resolve default values.
29
+ if (!accounts.profile.value) {
30
+ accounts.profile.value = await getProgramDerivedAddress({ programAddress, seeds: [getBytesEncoder().encode(new Uint8Array([112, 108, 97, 121, 101, 114, 95, 112, 114, 111, 102, 105, 108, 101, 95, 118, 51, 53])), getAddressEncoder().encode(getAddressFromResolvedInstructionAccount("player", accounts.player.value))] });
31
+ }
32
+ if (!accounts.systemProgram.value) {
33
+ accounts.systemProgram.value = '11111111111111111111111111111111';
34
+ }
35
+ const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');
36
+ return Object.freeze({ accounts: [getAccountMeta("profile", accounts.profile), getAccountMeta("player", accounts.player), getAccountMeta("payer", accounts.payer), getAccountMeta("systemProgram", accounts.systemProgram)], data: getInitializePlayerInstructionDataEncoder().encode({}), programAddress });
37
+ }
38
+ export function getInitializePlayerInstruction(input, config) {
39
+ // Program address.
40
+ const programAddress = config?.programAddress ?? RPS_GAME_PROGRAM_ADDRESS;
41
+ // Original accounts.
42
+ const originalAccounts = { profile: { value: input.profile ?? null, isWritable: true }, player: { value: input.player ?? null, isWritable: true }, payer: { value: input.payer ?? null, isWritable: true }, systemProgram: { value: input.systemProgram ?? null, isWritable: false } };
43
+ const accounts = originalAccounts;
44
+ // Resolve default values.
45
+ if (!accounts.systemProgram.value) {
46
+ accounts.systemProgram.value = '11111111111111111111111111111111';
47
+ }
48
+ const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');
49
+ return Object.freeze({ accounts: [getAccountMeta("profile", accounts.profile), getAccountMeta("player", accounts.player), getAccountMeta("payer", accounts.payer), getAccountMeta("systemProgram", accounts.systemProgram)], data: getInitializePlayerInstructionDataEncoder().encode({}), programAddress });
50
+ }
51
+ export function parseInitializePlayerInstruction(instruction) {
52
+ if (instruction.accounts.length < 4) {
53
+ throw new SolanaError(SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS, { actualAccountMetas: instruction.accounts.length, expectedAccountMetas: 4 });
54
+ }
55
+ let accountIndex = 0;
56
+ const getNextAccount = () => {
57
+ const accountMeta = instruction.accounts[accountIndex];
58
+ accountIndex += 1;
59
+ return accountMeta;
60
+ };
61
+ return { programAddress: instruction.programAddress, accounts: { profile: getNextAccount(), player: getNextAccount(), payer: getNextAccount(), systemProgram: getNextAccount() }, data: getInitializePlayerInstructionDataDecoder().decode(instruction.data) };
62
+ }
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdGlhbGl6ZVBsYXllci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9nZW5lcmF0ZWQvcnBzLWdhbWUvaW5zdHJ1Y3Rpb25zL2luaXRpYWxpemVQbGF5ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsd0JBQXdCLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUseURBQXlELEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFnVSxNQUFNLGFBQWEsQ0FBQztBQUN0bEIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLHdDQUF3QyxFQUFtQyxNQUFNLDZCQUE2QixDQUFDO0FBQy9JLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV2RCxNQUFNLENBQUMsTUFBTSwrQkFBK0IsR0FBRyxJQUFJLFVBQVUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBRXBHLE1BQU0sVUFBVSxxQ0FBcUMsS0FBSyxPQUFPLGNBQWMsQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsK0JBQStCLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFTaEosTUFBTSxVQUFVLHlDQUF5QztJQUNyRCxPQUFPLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxlQUFlLEVBQUUsY0FBYyxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxLQUFLLEVBQUUsYUFBYSxFQUFFLCtCQUErQixFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3BMLENBQUM7QUFFRCxNQUFNLFVBQVUseUNBQXlDO0lBQ3JELE9BQU8sZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLGVBQWUsRUFBRSxjQUFjLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdkYsQ0FBQztBQUVELE1BQU0sVUFBVSx1Q0FBdUM7SUFDbkQsT0FBTyxZQUFZLENBQUMseUNBQXlDLEVBQUUsRUFBRSx5Q0FBeUMsRUFBRSxDQUFDLENBQUM7QUFDbEgsQ0FBQztBQVNELE1BQU0sQ0FBQyxLQUFLLFVBQVUsbUNBQW1DLENBQXVNLEtBQXdHLEVBQUUsTUFBNkM7SUFDclosbUJBQW1CO0lBQ3JCLE1BQU0sY0FBYyxHQUFHLE1BQU0sRUFBRSxjQUFjLElBQUksd0JBQXdCLENBQUM7SUFFekUscUJBQXFCO0lBQ3RCLE1BQU0sZ0JBQWdCLEdBQUcsRUFBRSxPQUFPLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLE9BQU8sSUFBSSxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsTUFBTSxJQUFJLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLElBQUksSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsRUFBRSxhQUFhLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLGFBQWEsSUFBSSxJQUFJLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUE7SUFDdFIsTUFBTSxRQUFRLEdBQUcsZ0JBQXFGLENBQUM7SUFHdkcsMEJBQTBCO0lBQzFCLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzlCLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxHQUFHLE1BQU0sd0JBQXdCLENBQUMsRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLENBQUMsZUFBZSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksVUFBVSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxNQUFNLENBQUMsd0NBQXdDLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM3VCxDQUFDO0lBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDcEMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsa0NBQWlGLENBQUM7SUFDakgsQ0FBQztJQUVELE1BQU0sY0FBYyxHQUFHLHFCQUFxQixDQUFDLGNBQWMsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUMxRSxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxjQUFjLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxjQUFjLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxjQUFjLENBQUMsZUFBZSxFQUFFLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSx5Q0FBeUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxjQUFjLEVBQXlILENBQUMsQ0FBQztBQUNwYSxDQUFDO0FBU0QsTUFBTSxVQUFVLDhCQUE4QixDQUF1TSxLQUFtRyxFQUFFLE1BQTZDO0lBQ3JZLG1CQUFtQjtJQUNyQixNQUFNLGNBQWMsR0FBRyxNQUFNLEVBQUUsY0FBYyxJQUFJLHdCQUF3QixDQUFDO0lBRXpFLHFCQUFxQjtJQUN0QixNQUFNLGdCQUFnQixHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxPQUFPLElBQUksSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLE1BQU0sSUFBSSxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSyxJQUFJLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLEVBQUUsYUFBYSxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxhQUFhLElBQUksSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFBO0lBQ3RSLE1BQU0sUUFBUSxHQUFHLGdCQUFxRixDQUFDO0lBR3ZHLDBCQUEwQjtJQUMxQixJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNwQyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssR0FBRyxrQ0FBaUYsQ0FBQztJQUNqSCxDQUFDO0lBRUQsTUFBTSxjQUFjLEdBQUcscUJBQXFCLENBQUMsY0FBYyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQzFFLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLGNBQWMsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLGNBQWMsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLGNBQWMsQ0FBQyxlQUFlLEVBQUUsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLHlDQUF5QyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLGNBQWMsRUFBeUgsQ0FBQyxDQUFDO0FBQ3BhLENBQUM7QUFXRCxNQUFNLFVBQVUsZ0NBQWdDLENBQXdFLFdBQXFIO0lBQzNPLElBQUksV0FBVyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDdEMsTUFBTSxJQUFJLFdBQVcsQ0FBQyx5REFBeUQsRUFBRSxFQUFFLGtCQUFrQixFQUFFLFdBQVcsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLG9CQUFvQixFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakssQ0FBQztJQUNELElBQUksWUFBWSxHQUFHLENBQUMsQ0FBQztJQUNyQixNQUFNLGNBQWMsR0FBRyxHQUFHLEVBQUU7UUFDMUIsTUFBTSxXQUFXLEdBQUksV0FBVyxDQUFDLFFBQTBCLENBQUMsWUFBWSxDQUFFLENBQUM7UUFDM0UsWUFBWSxJQUFJLENBQUMsQ0FBQztRQUNsQixPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDLENBQUE7SUFDQyxPQUFPLEVBQUUsY0FBYyxFQUFFLFdBQVcsQ0FBQyxjQUFjLEVBQUUsUUFBUSxFQUFFLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLHlDQUF5QyxFQUFFLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO0FBQ2pRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoaXMgY29kZSB3YXMgQVVUT0dFTkVSQVRFRCB1c2luZyB0aGUgQ29kYW1hIGxpYnJhcnkuXG4gKiBQbGVhc2UgRE8gTk9UIEVESVQgVEhJUyBGSUxFLCBpbnN0ZWFkIHVzZSB2aXNpdG9yc1xuICogdG8gYWRkIGZlYXR1cmVzLCB0aGVuIHJlcnVuIENvZGFtYSB0byB1cGRhdGUgaXQuXG4gKlxuICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vY29kYW1hLWlkbC9jb2RhbWFcbiAqL1xuXG5pbXBvcnQgeyBjb21iaW5lQ29kZWMsIGZpeERlY29kZXJTaXplLCBmaXhFbmNvZGVyU2l6ZSwgZ2V0QWRkcmVzc0VuY29kZXIsIGdldEJ5dGVzRGVjb2RlciwgZ2V0Qnl0ZXNFbmNvZGVyLCBnZXRQcm9ncmFtRGVyaXZlZEFkZHJlc3MsIGdldFN0cnVjdERlY29kZXIsIGdldFN0cnVjdEVuY29kZXIsIFNPTEFOQV9FUlJPUl9fUFJPR1JBTV9DTElFTlRTX19JTlNVRkZJQ0lFTlRfQUNDT1VOVF9NRVRBUywgU29sYW5hRXJyb3IsIHRyYW5zZm9ybUVuY29kZXIsIHR5cGUgQWNjb3VudE1ldGEsIHR5cGUgQWNjb3VudFNpZ25lck1ldGEsIHR5cGUgQWRkcmVzcywgdHlwZSBGaXhlZFNpemVDb2RlYywgdHlwZSBGaXhlZFNpemVEZWNvZGVyLCB0eXBlIEZpeGVkU2l6ZUVuY29kZXIsIHR5cGUgSW5zdHJ1Y3Rpb24sIHR5cGUgSW5zdHJ1Y3Rpb25XaXRoQWNjb3VudHMsIHR5cGUgSW5zdHJ1Y3Rpb25XaXRoRGF0YSwgdHlwZSBSZWFkb25seUFjY291bnQsIHR5cGUgUmVhZG9ubHlVaW50OEFycmF5LCB0eXBlIFRyYW5zYWN0aW9uU2lnbmVyLCB0eXBlIFdyaXRhYmxlQWNjb3VudCwgdHlwZSBXcml0YWJsZVNpZ25lckFjY291bnQgfSBmcm9tICdAc29sYW5hL2tpdCc7XG5pbXBvcnQgeyBnZXRBY2NvdW50TWV0YUZhY3RvcnksIGdldEFkZHJlc3NGcm9tUmVzb2x2ZWRJbnN0cnVjdGlvbkFjY291bnQsIHR5cGUgUmVzb2x2ZWRJbnN0cnVjdGlvbkFjY291bnQgfSBmcm9tICdAc29sYW5hL3Byb2dyYW0tY2xpZW50LWNvcmUnO1xuaW1wb3J0IHsgUlBTX0dBTUVfUFJPR1JBTV9BRERSRVNTIH0gZnJvbSAnLi4vcHJvZ3JhbXMnO1xuXG5leHBvcnQgY29uc3QgSU5JVElBTElaRV9QTEFZRVJfRElTQ1JJTUlOQVRPUiA9IG5ldyBVaW50OEFycmF5KFs3OSwgMjQ5LCA4OCwgMTc3LCAyMjAsIDYyLCA1NiwgMTI4XSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbml0aWFsaXplUGxheWVyRGlzY3JpbWluYXRvckJ5dGVzKCkgeyByZXR1cm4gZml4RW5jb2RlclNpemUoZ2V0Qnl0ZXNFbmNvZGVyKCksIDgpLmVuY29kZShJTklUSUFMSVpFX1BMQVlFUl9ESVNDUklNSU5BVE9SKTsgfVxuXG5leHBvcnQgdHlwZSBJbml0aWFsaXplUGxheWVySW5zdHJ1Y3Rpb248VFByb2dyYW0gZXh0ZW5kcyBzdHJpbmcgPSB0eXBlb2YgUlBTX0dBTUVfUFJPR1JBTV9BRERSRVNTLCBUQWNjb3VudFByb2ZpbGUgZXh0ZW5kcyBzdHJpbmcgfCBBY2NvdW50TWV0YTxzdHJpbmc+ID0gc3RyaW5nLCBUQWNjb3VudFBsYXllciBleHRlbmRzIHN0cmluZyB8IEFjY291bnRNZXRhPHN0cmluZz4gPSBzdHJpbmcsIFRBY2NvdW50UGF5ZXIgZXh0ZW5kcyBzdHJpbmcgfCBBY2NvdW50TWV0YTxzdHJpbmc+ID0gc3RyaW5nLCBUQWNjb3VudFN5c3RlbVByb2dyYW0gZXh0ZW5kcyBzdHJpbmcgfCBBY2NvdW50TWV0YTxzdHJpbmc+ID0gXCIxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMVwiLCBUUmVtYWluaW5nQWNjb3VudHMgZXh0ZW5kcyByZWFkb25seSBBY2NvdW50TWV0YTxzdHJpbmc+W10gPSBbXT4gPVxuSW5zdHJ1Y3Rpb248VFByb2dyYW0+ICYgSW5zdHJ1Y3Rpb25XaXRoRGF0YTxSZWFkb25seVVpbnQ4QXJyYXk+ICYgSW5zdHJ1Y3Rpb25XaXRoQWNjb3VudHM8W1RBY2NvdW50UHJvZmlsZSBleHRlbmRzIHN0cmluZyA/IFdyaXRhYmxlQWNjb3VudDxUQWNjb3VudFByb2ZpbGU+IDogVEFjY291bnRQcm9maWxlLCBUQWNjb3VudFBsYXllciBleHRlbmRzIHN0cmluZyA/IFdyaXRhYmxlU2lnbmVyQWNjb3VudDxUQWNjb3VudFBsYXllcj4gJiBBY2NvdW50U2lnbmVyTWV0YTxUQWNjb3VudFBsYXllcj4gOiBUQWNjb3VudFBsYXllciwgVEFjY291bnRQYXllciBleHRlbmRzIHN0cmluZyA/IFdyaXRhYmxlU2lnbmVyQWNjb3VudDxUQWNjb3VudFBheWVyPiAmIEFjY291bnRTaWduZXJNZXRhPFRBY2NvdW50UGF5ZXI+IDogVEFjY291bnRQYXllciwgVEFjY291bnRTeXN0ZW1Qcm9ncmFtIGV4dGVuZHMgc3RyaW5nID8gUmVhZG9ubHlBY2NvdW50PFRBY2NvdW50U3lzdGVtUHJvZ3JhbT4gOiBUQWNjb3VudFN5c3RlbVByb2dyYW0sIC4uLlRSZW1haW5pbmdBY2NvdW50c10+O1xuXG5leHBvcnQgdHlwZSBJbml0aWFsaXplUGxheWVySW5zdHJ1Y3Rpb25EYXRhID0geyBkaXNjcmltaW5hdG9yOiBSZWFkb25seVVpbnQ4QXJyYXk7ICB9O1xuXG5leHBvcnQgdHlwZSBJbml0aWFsaXplUGxheWVySW5zdHJ1Y3Rpb25EYXRhQXJncyA9IHsgIH07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbml0aWFsaXplUGxheWVySW5zdHJ1Y3Rpb25EYXRhRW5jb2RlcigpOiBGaXhlZFNpemVFbmNvZGVyPEluaXRpYWxpemVQbGF5ZXJJbnN0cnVjdGlvbkRhdGFBcmdzPiB7XG4gICAgcmV0dXJuIHRyYW5zZm9ybUVuY29kZXIoZ2V0U3RydWN0RW5jb2RlcihbWydkaXNjcmltaW5hdG9yJywgZml4RW5jb2RlclNpemUoZ2V0Qnl0ZXNFbmNvZGVyKCksIDgpXV0pLCAodmFsdWUpID0+ICh7IC4uLnZhbHVlLCBkaXNjcmltaW5hdG9yOiBJTklUSUFMSVpFX1BMQVlFUl9ESVNDUklNSU5BVE9SIH0pKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEluaXRpYWxpemVQbGF5ZXJJbnN0cnVjdGlvbkRhdGFEZWNvZGVyKCk6IEZpeGVkU2l6ZURlY29kZXI8SW5pdGlhbGl6ZVBsYXllckluc3RydWN0aW9uRGF0YT4ge1xuICAgIHJldHVybiBnZXRTdHJ1Y3REZWNvZGVyKFtbJ2Rpc2NyaW1pbmF0b3InLCBmaXhEZWNvZGVyU2l6ZShnZXRCeXRlc0RlY29kZXIoKSwgOCldXSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbml0aWFsaXplUGxheWVySW5zdHJ1Y3Rpb25EYXRhQ29kZWMoKTogRml4ZWRTaXplQ29kZWM8SW5pdGlhbGl6ZVBsYXllckluc3RydWN0aW9uRGF0YUFyZ3MsIEluaXRpYWxpemVQbGF5ZXJJbnN0cnVjdGlvbkRhdGE+IHtcbiAgICByZXR1cm4gY29tYmluZUNvZGVjKGdldEluaXRpYWxpemVQbGF5ZXJJbnN0cnVjdGlvbkRhdGFFbmNvZGVyKCksIGdldEluaXRpYWxpemVQbGF5ZXJJbnN0cnVjdGlvbkRhdGFEZWNvZGVyKCkpO1xufVxuXG5leHBvcnQgdHlwZSBJbml0aWFsaXplUGxheWVyQXN5bmNJbnB1dDxUQWNjb3VudFByb2ZpbGUgZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmcsIFRBY2NvdW50UGxheWVyIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nLCBUQWNjb3VudFBheWVyIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nLCBUQWNjb3VudFN5c3RlbVByb2dyYW0gZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmc+ID0gIHtcbiAgcHJvZmlsZT86IEFkZHJlc3M8VEFjY291bnRQcm9maWxlPjtcbnBsYXllcjogVHJhbnNhY3Rpb25TaWduZXI8VEFjY291bnRQbGF5ZXI+O1xucGF5ZXI6IFRyYW5zYWN0aW9uU2lnbmVyPFRBY2NvdW50UGF5ZXI+O1xuc3lzdGVtUHJvZ3JhbT86IEFkZHJlc3M8VEFjY291bnRTeXN0ZW1Qcm9ncmFtPjtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEluaXRpYWxpemVQbGF5ZXJJbnN0cnVjdGlvbkFzeW5jPFRBY2NvdW50UHJvZmlsZSBleHRlbmRzIHN0cmluZywgVEFjY291bnRQbGF5ZXIgZXh0ZW5kcyBzdHJpbmcsIFRBY2NvdW50UGF5ZXIgZXh0ZW5kcyBzdHJpbmcsIFRBY2NvdW50U3lzdGVtUHJvZ3JhbSBleHRlbmRzIHN0cmluZywgVFByb2dyYW1BZGRyZXNzIGV4dGVuZHMgQWRkcmVzcyA9IHR5cGVvZiBSUFNfR0FNRV9QUk9HUkFNX0FERFJFU1M+KGlucHV0OiBJbml0aWFsaXplUGxheWVyQXN5bmNJbnB1dDxUQWNjb3VudFByb2ZpbGUsIFRBY2NvdW50UGxheWVyLCBUQWNjb3VudFBheWVyLCBUQWNjb3VudFN5c3RlbVByb2dyYW0+LCBjb25maWc/OiB7IHByb2dyYW1BZGRyZXNzPzogVFByb2dyYW1BZGRyZXNzIH0gKTogUHJvbWlzZTxJbml0aWFsaXplUGxheWVySW5zdHJ1Y3Rpb248VFByb2dyYW1BZGRyZXNzLCBUQWNjb3VudFByb2ZpbGUsIFRBY2NvdW50UGxheWVyLCBUQWNjb3VudFBheWVyLCBUQWNjb3VudFN5c3RlbVByb2dyYW0+PiB7XG4gIC8vIFByb2dyYW0gYWRkcmVzcy5cbmNvbnN0IHByb2dyYW1BZGRyZXNzID0gY29uZmlnPy5wcm9ncmFtQWRkcmVzcyA/PyBSUFNfR0FNRV9QUk9HUkFNX0FERFJFU1M7XG5cbiAvLyBPcmlnaW5hbCBhY2NvdW50cy5cbmNvbnN0IG9yaWdpbmFsQWNjb3VudHMgPSB7IHByb2ZpbGU6IHsgdmFsdWU6IGlucHV0LnByb2ZpbGUgPz8gbnVsbCwgaXNXcml0YWJsZTogdHJ1ZSB9LCBwbGF5ZXI6IHsgdmFsdWU6IGlucHV0LnBsYXllciA/PyBudWxsLCBpc1dyaXRhYmxlOiB0cnVlIH0sIHBheWVyOiB7IHZhbHVlOiBpbnB1dC5wYXllciA/PyBudWxsLCBpc1dyaXRhYmxlOiB0cnVlIH0sIHN5c3RlbVByb2dyYW06IHsgdmFsdWU6IGlucHV0LnN5c3RlbVByb2dyYW0gPz8gbnVsbCwgaXNXcml0YWJsZTogZmFsc2UgfSB9XG5jb25zdCBhY2NvdW50cyA9IG9yaWdpbmFsQWNjb3VudHMgYXMgUmVjb3JkPGtleW9mIHR5cGVvZiBvcmlnaW5hbEFjY291bnRzLCBSZXNvbHZlZEluc3RydWN0aW9uQWNjb3VudD47XG5cblxuLy8gUmVzb2x2ZSBkZWZhdWx0IHZhbHVlcy5cbmlmICghYWNjb3VudHMucHJvZmlsZS52YWx1ZSkge1xuYWNjb3VudHMucHJvZmlsZS52YWx1ZSA9IGF3YWl0IGdldFByb2dyYW1EZXJpdmVkQWRkcmVzcyh7IHByb2dyYW1BZGRyZXNzLCBzZWVkczogW2dldEJ5dGVzRW5jb2RlcigpLmVuY29kZShuZXcgVWludDhBcnJheShbMTEyLCAxMDgsIDk3LCAxMjEsIDEwMSwgMTE0LCA5NSwgMTEyLCAxMTQsIDExMSwgMTAyLCAxMDUsIDEwOCwgMTAxLCA5NSwgMTE4LCA1MSwgNTNdKSksIGdldEFkZHJlc3NFbmNvZGVyKCkuZW5jb2RlKGdldEFkZHJlc3NGcm9tUmVzb2x2ZWRJbnN0cnVjdGlvbkFjY291bnQoXCJwbGF5ZXJcIiwgYWNjb3VudHMucGxheWVyLnZhbHVlKSldIH0pO1xufVxuaWYgKCFhY2NvdW50cy5zeXN0ZW1Qcm9ncmFtLnZhbHVlKSB7XG5hY2NvdW50cy5zeXN0ZW1Qcm9ncmFtLnZhbHVlID0gJzExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExJyBhcyBBZGRyZXNzPCcxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMSc+O1xufVxuXG5jb25zdCBnZXRBY2NvdW50TWV0YSA9IGdldEFjY291bnRNZXRhRmFjdG9yeShwcm9ncmFtQWRkcmVzcywgJ3Byb2dyYW1JZCcpO1xucmV0dXJuIE9iamVjdC5mcmVlemUoeyBhY2NvdW50czogW2dldEFjY291bnRNZXRhKFwicHJvZmlsZVwiLCBhY2NvdW50cy5wcm9maWxlKSwgZ2V0QWNjb3VudE1ldGEoXCJwbGF5ZXJcIiwgYWNjb3VudHMucGxheWVyKSwgZ2V0QWNjb3VudE1ldGEoXCJwYXllclwiLCBhY2NvdW50cy5wYXllciksIGdldEFjY291bnRNZXRhKFwic3lzdGVtUHJvZ3JhbVwiLCBhY2NvdW50cy5zeXN0ZW1Qcm9ncmFtKV0sIGRhdGE6IGdldEluaXRpYWxpemVQbGF5ZXJJbnN0cnVjdGlvbkRhdGFFbmNvZGVyKCkuZW5jb2RlKHt9KSwgcHJvZ3JhbUFkZHJlc3MgfSBhcyBJbml0aWFsaXplUGxheWVySW5zdHJ1Y3Rpb248VFByb2dyYW1BZGRyZXNzLCBUQWNjb3VudFByb2ZpbGUsIFRBY2NvdW50UGxheWVyLCBUQWNjb3VudFBheWVyLCBUQWNjb3VudFN5c3RlbVByb2dyYW0+KTtcbn1cblxuZXhwb3J0IHR5cGUgSW5pdGlhbGl6ZVBsYXllcklucHV0PFRBY2NvdW50UHJvZmlsZSBleHRlbmRzIHN0cmluZyA9IHN0cmluZywgVEFjY291bnRQbGF5ZXIgZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmcsIFRBY2NvdW50UGF5ZXIgZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmcsIFRBY2NvdW50U3lzdGVtUHJvZ3JhbSBleHRlbmRzIHN0cmluZyA9IHN0cmluZz4gPSAge1xuICBwcm9maWxlOiBBZGRyZXNzPFRBY2NvdW50UHJvZmlsZT47XG5wbGF5ZXI6IFRyYW5zYWN0aW9uU2lnbmVyPFRBY2NvdW50UGxheWVyPjtcbnBheWVyOiBUcmFuc2FjdGlvblNpZ25lcjxUQWNjb3VudFBheWVyPjtcbnN5c3RlbVByb2dyYW0/OiBBZGRyZXNzPFRBY2NvdW50U3lzdGVtUHJvZ3JhbT47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbml0aWFsaXplUGxheWVySW5zdHJ1Y3Rpb248VEFjY291bnRQcm9maWxlIGV4dGVuZHMgc3RyaW5nLCBUQWNjb3VudFBsYXllciBleHRlbmRzIHN0cmluZywgVEFjY291bnRQYXllciBleHRlbmRzIHN0cmluZywgVEFjY291bnRTeXN0ZW1Qcm9ncmFtIGV4dGVuZHMgc3RyaW5nLCBUUHJvZ3JhbUFkZHJlc3MgZXh0ZW5kcyBBZGRyZXNzID0gdHlwZW9mIFJQU19HQU1FX1BST0dSQU1fQUREUkVTUz4oaW5wdXQ6IEluaXRpYWxpemVQbGF5ZXJJbnB1dDxUQWNjb3VudFByb2ZpbGUsIFRBY2NvdW50UGxheWVyLCBUQWNjb3VudFBheWVyLCBUQWNjb3VudFN5c3RlbVByb2dyYW0+LCBjb25maWc/OiB7IHByb2dyYW1BZGRyZXNzPzogVFByb2dyYW1BZGRyZXNzIH0gKTogSW5pdGlhbGl6ZVBsYXllckluc3RydWN0aW9uPFRQcm9ncmFtQWRkcmVzcywgVEFjY291bnRQcm9maWxlLCBUQWNjb3VudFBsYXllciwgVEFjY291bnRQYXllciwgVEFjY291bnRTeXN0ZW1Qcm9ncmFtPiB7XG4gIC8vIFByb2dyYW0gYWRkcmVzcy5cbmNvbnN0IHByb2dyYW1BZGRyZXNzID0gY29uZmlnPy5wcm9ncmFtQWRkcmVzcyA/PyBSUFNfR0FNRV9QUk9HUkFNX0FERFJFU1M7XG5cbiAvLyBPcmlnaW5hbCBhY2NvdW50cy5cbmNvbnN0IG9yaWdpbmFsQWNjb3VudHMgPSB7IHByb2ZpbGU6IHsgdmFsdWU6IGlucHV0LnByb2ZpbGUgPz8gbnVsbCwgaXNXcml0YWJsZTogdHJ1ZSB9LCBwbGF5ZXI6IHsgdmFsdWU6IGlucHV0LnBsYXllciA/PyBudWxsLCBpc1dyaXRhYmxlOiB0cnVlIH0sIHBheWVyOiB7IHZhbHVlOiBpbnB1dC5wYXllciA/PyBudWxsLCBpc1dyaXRhYmxlOiB0cnVlIH0sIHN5c3RlbVByb2dyYW06IHsgdmFsdWU6IGlucHV0LnN5c3RlbVByb2dyYW0gPz8gbnVsbCwgaXNXcml0YWJsZTogZmFsc2UgfSB9XG5jb25zdCBhY2NvdW50cyA9IG9yaWdpbmFsQWNjb3VudHMgYXMgUmVjb3JkPGtleW9mIHR5cGVvZiBvcmlnaW5hbEFjY291bnRzLCBSZXNvbHZlZEluc3RydWN0aW9uQWNjb3VudD47XG5cblxuLy8gUmVzb2x2ZSBkZWZhdWx0IHZhbHVlcy5cbmlmICghYWNjb3VudHMuc3lzdGVtUHJvZ3JhbS52YWx1ZSkge1xuYWNjb3VudHMuc3lzdGVtUHJvZ3JhbS52YWx1ZSA9ICcxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMScgYXMgQWRkcmVzczwnMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEnPjtcbn1cblxuY29uc3QgZ2V0QWNjb3VudE1ldGEgPSBnZXRBY2NvdW50TWV0YUZhY3RvcnkocHJvZ3JhbUFkZHJlc3MsICdwcm9ncmFtSWQnKTtcbnJldHVybiBPYmplY3QuZnJlZXplKHsgYWNjb3VudHM6IFtnZXRBY2NvdW50TWV0YShcInByb2ZpbGVcIiwgYWNjb3VudHMucHJvZmlsZSksIGdldEFjY291bnRNZXRhKFwicGxheWVyXCIsIGFjY291bnRzLnBsYXllciksIGdldEFjY291bnRNZXRhKFwicGF5ZXJcIiwgYWNjb3VudHMucGF5ZXIpLCBnZXRBY2NvdW50TWV0YShcInN5c3RlbVByb2dyYW1cIiwgYWNjb3VudHMuc3lzdGVtUHJvZ3JhbSldLCBkYXRhOiBnZXRJbml0aWFsaXplUGxheWVySW5zdHJ1Y3Rpb25EYXRhRW5jb2RlcigpLmVuY29kZSh7fSksIHByb2dyYW1BZGRyZXNzIH0gYXMgSW5pdGlhbGl6ZVBsYXllckluc3RydWN0aW9uPFRQcm9ncmFtQWRkcmVzcywgVEFjY291bnRQcm9maWxlLCBUQWNjb3VudFBsYXllciwgVEFjY291bnRQYXllciwgVEFjY291bnRTeXN0ZW1Qcm9ncmFtPik7XG59XG5cbmV4cG9ydCB0eXBlIFBhcnNlZEluaXRpYWxpemVQbGF5ZXJJbnN0cnVjdGlvbjxUUHJvZ3JhbSBleHRlbmRzIHN0cmluZyA9IHR5cGVvZiBSUFNfR0FNRV9QUk9HUkFNX0FERFJFU1MsIFRBY2NvdW50TWV0YXMgZXh0ZW5kcyByZWFkb25seSBBY2NvdW50TWV0YVtdID0gcmVhZG9ubHkgQWNjb3VudE1ldGFbXT4gPSB7IHByb2dyYW1BZGRyZXNzOiBBZGRyZXNzPFRQcm9ncmFtPjtcbmFjY291bnRzOiB7XG5wcm9maWxlOiBUQWNjb3VudE1ldGFzWzBdO1xucGxheWVyOiBUQWNjb3VudE1ldGFzWzFdO1xucGF5ZXI6IFRBY2NvdW50TWV0YXNbMl07XG5zeXN0ZW1Qcm9ncmFtOiBUQWNjb3VudE1ldGFzWzNdO1xufTtcbmRhdGE6IEluaXRpYWxpemVQbGF5ZXJJbnN0cnVjdGlvbkRhdGE7IH07XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUluaXRpYWxpemVQbGF5ZXJJbnN0cnVjdGlvbjxUUHJvZ3JhbSBleHRlbmRzIHN0cmluZywgVEFjY291bnRNZXRhcyBleHRlbmRzIHJlYWRvbmx5IEFjY291bnRNZXRhW10+KGluc3RydWN0aW9uOiBJbnN0cnVjdGlvbjxUUHJvZ3JhbT4gJiBJbnN0cnVjdGlvbldpdGhBY2NvdW50czxUQWNjb3VudE1ldGFzPiAmIEluc3RydWN0aW9uV2l0aERhdGE8UmVhZG9ubHlVaW50OEFycmF5Pik6IFBhcnNlZEluaXRpYWxpemVQbGF5ZXJJbnN0cnVjdGlvbjxUUHJvZ3JhbSwgVEFjY291bnRNZXRhcz4ge1xuICBpZiAoaW5zdHJ1Y3Rpb24uYWNjb3VudHMubGVuZ3RoIDwgNCkge1xuICB0aHJvdyBuZXcgU29sYW5hRXJyb3IoU09MQU5BX0VSUk9SX19QUk9HUkFNX0NMSUVOVFNfX0lOU1VGRklDSUVOVF9BQ0NPVU5UX01FVEFTLCB7IGFjdHVhbEFjY291bnRNZXRhczogaW5zdHJ1Y3Rpb24uYWNjb3VudHMubGVuZ3RoLCBleHBlY3RlZEFjY291bnRNZXRhczogNCB9KTtcbn1cbmxldCBhY2NvdW50SW5kZXggPSAwO1xuY29uc3QgZ2V0TmV4dEFjY291bnQgPSAoKSA9PiB7XG4gIGNvbnN0IGFjY291bnRNZXRhID0gKGluc3RydWN0aW9uLmFjY291bnRzIGFzIFRBY2NvdW50TWV0YXMpW2FjY291bnRJbmRleF0hO1xuICBhY2NvdW50SW5kZXggKz0gMTtcbiAgcmV0dXJuIGFjY291bnRNZXRhO1xufVxuICByZXR1cm4geyBwcm9ncmFtQWRkcmVzczogaW5zdHJ1Y3Rpb24ucHJvZ3JhbUFkZHJlc3MsIGFjY291bnRzOiB7IHByb2ZpbGU6IGdldE5leHRBY2NvdW50KCksIHBsYXllcjogZ2V0TmV4dEFjY291bnQoKSwgcGF5ZXI6IGdldE5leHRBY2NvdW50KCksIHN5c3RlbVByb2dyYW06IGdldE5leHRBY2NvdW50KCkgfSwgZGF0YTogZ2V0SW5pdGlhbGl6ZVBsYXllckluc3RydWN0aW9uRGF0YURlY29kZXIoKS5kZWNvZGUoaW5zdHJ1Y3Rpb24uZGF0YSkgfTtcbn0iXX0=
@@ -0,0 +1,44 @@
1
+ /**
2
+ * This code was AUTOGENERATED using the Codama library.
3
+ * Please DO NOT EDIT THIS FILE, instead use visitors
4
+ * to add features, then rerun Codama to update it.
5
+ *
6
+ * @see https://github.com/codama-idl/codama
7
+ */
8
+ import { type AccountMeta, type AccountSignerMeta, type Address, type FixedSizeCodec, type FixedSizeDecoder, type FixedSizeEncoder, type Instruction, type InstructionWithAccounts, type InstructionWithData, type ReadonlySignerAccount, type ReadonlyUint8Array, type TransactionSigner, type WritableAccount } from '@solana/kit';
9
+ import { RPS_GAME_PROGRAM_ADDRESS } from '../programs';
10
+ import { type Choice, type ChoiceArgs } from '../types';
11
+ export declare const MAKE_CHOICE_DISCRIMINATOR: Uint8Array<ArrayBuffer>;
12
+ export declare function getMakeChoiceDiscriminatorBytes(): ReadonlyUint8Array<ArrayBuffer>;
13
+ export type MakeChoiceInstruction<TProgram extends string = typeof RPS_GAME_PROGRAM_ADDRESS, TAccountGameSession extends string | AccountMeta<string> = string, TAccountPlayer1Profile extends string | AccountMeta<string> = string, TAccountPlayer2Profile extends string | AccountMeta<string> = string, TAccountPlayer extends string | AccountMeta<string> = string, TRemainingAccounts extends readonly AccountMeta<string>[] = []> = Instruction<TProgram> & InstructionWithData<ReadonlyUint8Array> & InstructionWithAccounts<[TAccountGameSession extends string ? WritableAccount<TAccountGameSession> : TAccountGameSession, TAccountPlayer1Profile extends string ? WritableAccount<TAccountPlayer1Profile> : TAccountPlayer1Profile, TAccountPlayer2Profile extends string ? WritableAccount<TAccountPlayer2Profile> : TAccountPlayer2Profile, TAccountPlayer extends string ? ReadonlySignerAccount<TAccountPlayer> & AccountSignerMeta<TAccountPlayer> : TAccountPlayer, ...TRemainingAccounts]>;
14
+ export type MakeChoiceInstructionData = {
15
+ discriminator: ReadonlyUint8Array;
16
+ choice: Choice;
17
+ };
18
+ export type MakeChoiceInstructionDataArgs = {
19
+ choice: ChoiceArgs;
20
+ };
21
+ export declare function getMakeChoiceInstructionDataEncoder(): FixedSizeEncoder<MakeChoiceInstructionDataArgs>;
22
+ export declare function getMakeChoiceInstructionDataDecoder(): FixedSizeDecoder<MakeChoiceInstructionData>;
23
+ export declare function getMakeChoiceInstructionDataCodec(): FixedSizeCodec<MakeChoiceInstructionDataArgs, MakeChoiceInstructionData>;
24
+ export type MakeChoiceInput<TAccountGameSession extends string = string, TAccountPlayer1Profile extends string = string, TAccountPlayer2Profile extends string = string, TAccountPlayer extends string = string> = {
25
+ gameSession: Address<TAccountGameSession>;
26
+ player1Profile: Address<TAccountPlayer1Profile>;
27
+ player2Profile: Address<TAccountPlayer2Profile>;
28
+ player: TransactionSigner<TAccountPlayer>;
29
+ choice: MakeChoiceInstructionDataArgs["choice"];
30
+ };
31
+ export declare function getMakeChoiceInstruction<TAccountGameSession extends string, TAccountPlayer1Profile extends string, TAccountPlayer2Profile extends string, TAccountPlayer extends string, TProgramAddress extends Address = typeof RPS_GAME_PROGRAM_ADDRESS>(input: MakeChoiceInput<TAccountGameSession, TAccountPlayer1Profile, TAccountPlayer2Profile, TAccountPlayer>, config?: {
32
+ programAddress?: TProgramAddress;
33
+ }): MakeChoiceInstruction<TProgramAddress, TAccountGameSession, TAccountPlayer1Profile, TAccountPlayer2Profile, TAccountPlayer>;
34
+ export type ParsedMakeChoiceInstruction<TProgram extends string = typeof RPS_GAME_PROGRAM_ADDRESS, TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[]> = {
35
+ programAddress: Address<TProgram>;
36
+ accounts: {
37
+ gameSession: TAccountMetas[0];
38
+ player1Profile: TAccountMetas[1];
39
+ player2Profile: TAccountMetas[2];
40
+ player: TAccountMetas[3];
41
+ };
42
+ data: MakeChoiceInstructionData;
43
+ };
44
+ export declare function parseMakeChoiceInstruction<TProgram extends string, TAccountMetas extends readonly AccountMeta[]>(instruction: Instruction<TProgram> & InstructionWithAccounts<TAccountMetas> & InstructionWithData<ReadonlyUint8Array>): ParsedMakeChoiceInstruction<TProgram, TAccountMetas>;
@@ -0,0 +1,46 @@
1
+ /**
2
+ * This code was AUTOGENERATED using the Codama library.
3
+ * Please DO NOT EDIT THIS FILE, instead use visitors
4
+ * to add features, then rerun Codama to update it.
5
+ *
6
+ * @see https://github.com/codama-idl/codama
7
+ */
8
+ import { combineCodec, fixDecoderSize, fixEncoderSize, getBytesDecoder, getBytesEncoder, getStructDecoder, getStructEncoder, SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS, SolanaError, transformEncoder } from '@solana/kit';
9
+ import { getAccountMetaFactory } from '@solana/program-client-core';
10
+ import { RPS_GAME_PROGRAM_ADDRESS } from '../programs';
11
+ import { getChoiceDecoder, getChoiceEncoder } from '../types';
12
+ export const MAKE_CHOICE_DISCRIMINATOR = new Uint8Array([207, 18, 251, 32, 135, 122, 160, 77]);
13
+ export function getMakeChoiceDiscriminatorBytes() { return fixEncoderSize(getBytesEncoder(), 8).encode(MAKE_CHOICE_DISCRIMINATOR); }
14
+ export function getMakeChoiceInstructionDataEncoder() {
15
+ return transformEncoder(getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)], ['choice', getChoiceEncoder()]]), (value) => ({ ...value, discriminator: MAKE_CHOICE_DISCRIMINATOR }));
16
+ }
17
+ export function getMakeChoiceInstructionDataDecoder() {
18
+ return getStructDecoder([['discriminator', fixDecoderSize(getBytesDecoder(), 8)], ['choice', getChoiceDecoder()]]);
19
+ }
20
+ export function getMakeChoiceInstructionDataCodec() {
21
+ return combineCodec(getMakeChoiceInstructionDataEncoder(), getMakeChoiceInstructionDataDecoder());
22
+ }
23
+ export function getMakeChoiceInstruction(input, config) {
24
+ // Program address.
25
+ const programAddress = config?.programAddress ?? RPS_GAME_PROGRAM_ADDRESS;
26
+ // Original accounts.
27
+ const originalAccounts = { gameSession: { value: input.gameSession ?? null, isWritable: true }, player1Profile: { value: input.player1Profile ?? null, isWritable: true }, player2Profile: { value: input.player2Profile ?? null, isWritable: true }, player: { value: input.player ?? null, isWritable: false } };
28
+ const accounts = originalAccounts;
29
+ // Original args.
30
+ const args = { ...input, };
31
+ const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');
32
+ return Object.freeze({ accounts: [getAccountMeta("gameSession", accounts.gameSession), getAccountMeta("player1Profile", accounts.player1Profile), getAccountMeta("player2Profile", accounts.player2Profile), getAccountMeta("player", accounts.player)], data: getMakeChoiceInstructionDataEncoder().encode(args), programAddress });
33
+ }
34
+ export function parseMakeChoiceInstruction(instruction) {
35
+ if (instruction.accounts.length < 4) {
36
+ throw new SolanaError(SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS, { actualAccountMetas: instruction.accounts.length, expectedAccountMetas: 4 });
37
+ }
38
+ let accountIndex = 0;
39
+ const getNextAccount = () => {
40
+ const accountMeta = instruction.accounts[accountIndex];
41
+ accountIndex += 1;
42
+ return accountMeta;
43
+ };
44
+ return { programAddress: instruction.programAddress, accounts: { gameSession: getNextAccount(), player1Profile: getNextAccount(), player2Profile: getNextAccount(), player: getNextAccount() }, data: getMakeChoiceInstructionDataDecoder().decode(instruction.data) };
45
+ }
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZUNob2ljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9nZW5lcmF0ZWQvcnBzLWdhbWUvaW5zdHJ1Y3Rpb25zL21ha2VDaG9pY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUseURBQXlELEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUEwUyxNQUFNLGFBQWEsQ0FBQztBQUNuaEIsT0FBTyxFQUFFLHFCQUFxQixFQUFtQyxNQUFNLDZCQUE2QixDQUFDO0FBQ3JHLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQWdDLE1BQU0sVUFBVSxDQUFDO0FBRTVGLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLElBQUksVUFBVSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFFL0YsTUFBTSxVQUFVLCtCQUErQixLQUFLLE9BQU8sY0FBYyxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQVNwSSxNQUFNLFVBQVUsbUNBQW1DO0lBQy9DLE9BQU8sZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLGVBQWUsRUFBRSxjQUFjLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxD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QUFFLGNBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxtQ0FBbUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztBQUN6USxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGlzIGNvZGUgd2FzIEFVVE9HRU5FUkFURUQgdXNpbmcgdGhlIENvZGFtYSBsaWJyYXJ5LlxuICogUGxlYXNlIERPIE5PVCBFRElUIFRISVMgRklMRSwgaW5zdGVhZCB1c2UgdmlzaXRvcnNcbiAqIHRvIGFkZCBmZWF0dXJlcywgdGhlbiByZXJ1biBDb2RhbWEgdG8gdXBkYXRlIGl0LlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2NvZGFtYS1pZGwvY29kYW1hXG4gKi9cblxuaW1wb3J0IHsgY29tYmluZUNvZGVjLCBmaXhEZWNvZGVyU2l6ZSwgZml4RW5jb2RlclNpemUsIGdldEJ5dGVzRGVjb2RlciwgZ2V0Qnl0ZXNFbmNvZGVyLCBnZXRTdHJ1Y3REZWNvZGVyLCBnZXRTdHJ1Y3RFbmNvZGVyLCBTT0xBTkFfRVJST1JfX1BST0dSQU1fQ0xJRU5UU19fSU5TVUZGSUNJRU5UX0FDQ09VTlRfTUVUQVMsIFNvbGFuYUVycm9yLCB0cmFuc2Zvcm1FbmNvZGVyLCB0eXBlIEFjY291bnRNZXRhLCB0eXBlIEFjY291bnRTaWduZXJNZXRhLCB0eXBlIEFkZHJlc3MsIHR5cGUgRml4ZWRTaXplQ29kZWMsIHR5cGUgRml4ZWRTaXplRGVjb2RlciwgdHlwZSBGaXhlZFNpemVFbmNvZGVyLCB0eXBlIEluc3RydWN0aW9uLCB0eXBlIEluc3RydWN0aW9uV2l0aEFjY291bnRzLCB0eXBlIEluc3RydWN0aW9uV2l0aERhdGEsIHR5cGUgUmVhZG9ubHlTaWduZXJBY2NvdW50LCB0eXBlIFJlYWRvbmx5VWludDhBcnJheSwgdHlwZSBUcmFuc2FjdGlvblNpZ25lciwgdHlwZSBXcml0YWJsZUFjY291bnQgfSBmcm9tICdAc29sYW5hL2tpdCc7XG5pbXBvcnQgeyBnZXRBY2NvdW50TWV0YUZhY3RvcnksIHR5cGUgUmVzb2x2ZWRJbnN0cnVjdGlvbkFjY291bnQgfSBmcm9tICdAc29sYW5hL3Byb2dyYW0tY2xpZW50LWNvcmUnO1xuaW1wb3J0IHsgUlBTX0dBTUVfUFJPR1JBTV9BRERSRVNTIH0gZnJvbSAnLi4vcHJvZ3JhbXMnO1xuaW1wb3J0IHsgZ2V0Q2hvaWNlRGVjb2RlciwgZ2V0Q2hvaWNlRW5jb2RlciwgdHlwZSBDaG9pY2UsIHR5cGUgQ2hvaWNlQXJncyB9IGZyb20gJy4uL3R5cGVzJztcblxuZXhwb3J0IGNvbnN0IE1BS0VfQ0hPSUNFX0RJU0NSSU1JTkFUT1IgPSBuZXcgVWludDhBcnJheShbMjA3LCAxOCwgMjUxLCAzMiwgMTM1LCAxMjIsIDE2MCwgNzddKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldE1ha2VDaG9pY2VEaXNjcmltaW5hdG9yQnl0ZXMoKSB7IHJldHVybiBmaXhFbmNvZGVyU2l6ZShnZXRCeXRlc0VuY29kZXIoKSwgOCkuZW5jb2RlKE1BS0VfQ0hPSUNFX0RJU0NSSU1JTkFUT1IpOyB9XG5cbmV4cG9ydCB0eXBlIE1ha2VDaG9pY2VJbnN0cnVjdGlvbjxUUHJvZ3JhbSBleHRlbmRzIHN0cmluZyA9IHR5cGVvZiBSUFNfR0FNRV9QUk9HUkFNX0FERFJFU1MsIFRBY2NvdW50R2FtZVNlc3Npb24gZXh0ZW5kcyBzdHJpbmcgfCBBY2NvdW50TWV0YTxzdHJpbmc+ID0gc3RyaW5nLCBUQWNjb3VudFBsYXllcjFQcm9maWxlIGV4dGVuZHMgc3RyaW5nIHwgQWNjb3VudE1ldGE8c3RyaW5nPiA9IHN0cmluZywgVEFjY291bnRQbGF5ZXIyUHJvZmlsZSBleHRlbmRzIHN0cmluZyB8IEFjY291bnRNZXRhPHN0cmluZz4gPSBzdHJpbmcsIFRBY2NvdW50UGxheWVyIGV4dGVuZHMgc3RyaW5nIHwgQWNjb3VudE1ldGE8c3RyaW5nPiA9IHN0cmluZywgVFJlbWFpbmluZ0FjY291bnRzIGV4dGVuZHMgcmVhZG9ubHkgQWNjb3VudE1ldGE8c3RyaW5nPltdID0gW10+ID1cbkluc3RydWN0aW9uPFRQcm9ncmFtPiAmIEluc3RydWN0aW9uV2l0aERhdGE8UmVhZG9ubHlVaW50OEFycmF5PiAmIEluc3RydWN0aW9uV2l0aEFjY291bnRzPFtUQWNjb3VudEdhbWVTZXNzaW9uIGV4dGVuZHMgc3RyaW5nID8gV3JpdGFibGVBY2NvdW50PFRBY2NvdW50R2FtZVNlc3Npb24+IDogVEFjY291bnRHYW1lU2Vzc2lvbiwgVEFjY291bnRQbGF5ZXIxUHJvZmlsZSBleHRlbmRzIHN0cmluZyA/IFdyaXRhYmxlQWNjb3VudDxUQWNjb3VudFBsYXllcjFQcm9maWxlPiA6IFRBY2NvdW50UGxheWVyMVByb2ZpbGUsIFRBY2NvdW50UGxheWVyMlByb2ZpbGUgZXh0ZW5kcyBzdHJpbmcgPyBXcml0YWJsZUFjY291bnQ8VEFjY291bnRQbGF5ZXIyUHJvZmlsZT4gOiBUQWNjb3VudFBsYXllcjJQcm9maWxlLCBUQWNjb3VudFBsYXllciBleHRlbmRzIHN0cmluZyA/IFJlYWRvbmx5U2lnbmVyQWNjb3VudDxUQWNjb3VudFBsYXllcj4gJiBBY2NvdW50U2lnbmVyTWV0YTxUQWNjb3VudFBsYXllcj4gOiBUQWNjb3VudFBsYXllciwgLi4uVFJlbWFpbmluZ0FjY291bnRzXT47XG5cbmV4cG9ydCB0eXBlIE1ha2VDaG9pY2VJbnN0cnVjdGlvbkRhdGEgPSB7IGRpc2NyaW1pbmF0b3I6IFJlYWRvbmx5VWludDhBcnJheTsgY2hvaWNlOiBDaG9pY2U7ICB9O1xuXG5leHBvcnQgdHlwZSBNYWtlQ2hvaWNlSW5zdHJ1Y3Rpb25EYXRhQXJncyA9IHsgY2hvaWNlOiBDaG9pY2VBcmdzOyAgfTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldE1ha2VDaG9pY2VJbnN0cnVjdGlvbkRhdGFFbmNvZGVyKCk6IEZpeGVkU2l6ZUVuY29kZXI8TWFrZUNob2ljZUluc3RydWN0aW9uRGF0YUFyZ3M+IHtcbiAgICByZXR1cm4gdHJhbnNmb3JtRW5jb2RlcihnZXRTdHJ1Y3RFbmNvZGVyKFtbJ2Rpc2NyaW1pbmF0b3InLCBmaXhFbmNvZGVyU2l6ZShnZXRCeXRlc0VuY29kZXIoKSwgOCldLCBbJ2Nob2ljZScsIGdldENob2ljZUVuY29kZXIoKV1dKSwgKHZhbHVlKSA9PiAoeyAuLi52YWx1ZSwgZGlzY3JpbWluYXRvcjogTUFLRV9DSE9JQ0VfRElTQ1JJTUlOQVRPUiB9KSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRNYWtlQ2hvaWNlSW5zdHJ1Y3Rpb25EYXRhRGVjb2RlcigpOiBGaXhlZFNpemVEZWNvZGVyPE1ha2VDaG9pY2VJbnN0cnVjdGlvbkRhdGE+IHtcbiAgICByZXR1cm4gZ2V0U3RydWN0RGVjb2RlcihbWydkaXNjcmltaW5hdG9yJywgZml4RGVjb2RlclNpemUoZ2V0Qnl0ZXNEZWNvZGVyKCksIDgpXSwgWydjaG9pY2UnLCBnZXRDaG9pY2VEZWNvZGVyKCldXSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRNYWtlQ2hvaWNlSW5zdHJ1Y3Rpb25EYXRhQ29kZWMoKTogRml4ZWRTaXplQ29kZWM8TWFrZUNob2ljZUluc3RydWN0aW9uRGF0YUFyZ3MsIE1ha2VDaG9pY2VJbnN0cnVjdGlvbkRhdGE+IHtcbiAgICByZXR1cm4gY29tYmluZUNvZGVjKGdldE1ha2VDaG9pY2VJbnN0cnVjdGlvbkRhdGFFbmNvZGVyKCksIGdldE1ha2VDaG9pY2VJbnN0cnVjdGlvbkRhdGFEZWNvZGVyKCkpO1xufVxuXG5leHBvcnQgdHlwZSBNYWtlQ2hvaWNlSW5wdXQ8VEFjY291bnRHYW1lU2Vzc2lvbiBleHRlbmRzIHN0cmluZyA9IHN0cmluZywgVEFjY291bnRQbGF5ZXIxUHJvZmlsZSBleHRlbmRzIHN0cmluZyA9IHN0cmluZywgVEFjY291bnRQbGF5ZXIyUHJvZmlsZSBleHRlbmRzIHN0cmluZyA9IHN0cmluZywgVEFjY291bnRQbGF5ZXIgZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmc+ID0gIHtcbiAgZ2FtZVNlc3Npb246IEFkZHJlc3M8VEFjY291bnRHYW1lU2Vzc2lvbj47XG5wbGF5ZXIxUHJvZmlsZTogQWRkcmVzczxUQWNjb3VudFBsYXllcjFQcm9maWxlPjtcbnBsYXllcjJQcm9maWxlOiBBZGRyZXNzPFRBY2NvdW50UGxheWVyMlByb2ZpbGU+O1xucGxheWVyOiBUcmFuc2FjdGlvblNpZ25lcjxUQWNjb3VudFBsYXllcj47XG5jaG9pY2U6IE1ha2VDaG9pY2VJbnN0cnVjdGlvbkRhdGFBcmdzW1wiY2hvaWNlXCJdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWFrZUNob2ljZUluc3RydWN0aW9uPFRBY2NvdW50R2FtZVNlc3Npb24gZXh0ZW5kcyBzdHJpbmcsIFRBY2NvdW50UGxheWVyMVByb2ZpbGUgZXh0ZW5kcyBzdHJpbmcsIFRBY2NvdW50UGxheWVyMlByb2ZpbGUgZXh0ZW5kcyBzdHJpbmcsIFRBY2NvdW50UGxheWVyIGV4dGVuZHMgc3RyaW5nLCBUUHJvZ3JhbUFkZHJlc3MgZXh0ZW5kcyBBZGRyZXNzID0gdHlwZW9mIFJQU19HQU1FX1BST0dSQU1fQUREUkVTUz4oaW5wdXQ6IE1ha2VDaG9pY2VJbnB1dDxUQWNjb3VudEdhbWVTZXNzaW9uLCBUQWNjb3VudFBsYXllcjFQcm9maWxlLCBUQWNjb3VudFBsYXllcjJQcm9maWxlLCBUQWNjb3VudFBsYXllcj4sIGNvbmZpZz86IHsgcHJvZ3JhbUFkZHJlc3M/OiBUUHJvZ3JhbUFkZHJlc3MgfSApOiBNYWtlQ2hvaWNlSW5zdHJ1Y3Rpb248VFByb2dyYW1BZGRyZXNzLCBUQWNjb3VudEdhbWVTZXNzaW9uLCBUQWNjb3VudFBsYXllcjFQcm9maWxlLCBUQWNjb3VudFBsYXllcjJQcm9maWxlLCBUQWNjb3VudFBsYXllcj4ge1xuICAvLyBQcm9ncmFtIGFkZHJlc3MuXG5jb25zdCBwcm9ncmFtQWRkcmVzcyA9IGNvbmZpZz8ucHJvZ3JhbUFkZHJlc3MgPz8gUlBTX0dBTUVfUFJPR1JBTV9BRERSRVNTO1xuXG4gLy8gT3JpZ2luYWwgYWNjb3VudHMuXG5jb25zdCBvcmlnaW5hbEFjY291bnRzID0geyBnYW1lU2Vzc2lvbjogeyB2YWx1ZTogaW5wdXQuZ2FtZVNlc3Npb24gPz8gbnVsbCwgaXNXcml0YWJsZTogdHJ1ZSB9LCBwbGF5ZXIxUHJvZmlsZTogeyB2YWx1ZTogaW5wdXQucGxheWVyMVByb2ZpbGUgPz8gbnVsbCwgaXNXcml0YWJsZTogdHJ1ZSB9LCBwbGF5ZXIyUHJvZmlsZTogeyB2YWx1ZTogaW5wdXQucGxheWVyMlByb2ZpbGUgPz8gbnVsbCwgaXNXcml0YWJsZTogdHJ1ZSB9LCBwbGF5ZXI6IHsgdmFsdWU6IGlucHV0LnBsYXllciA/PyBudWxsLCBpc1dyaXRhYmxlOiBmYWxzZSB9IH1cbmNvbnN0IGFjY291bnRzID0gb3JpZ2luYWxBY2NvdW50cyBhcyBSZWNvcmQ8a2V5b2YgdHlwZW9mIG9yaWdpbmFsQWNjb3VudHMsIFJlc29sdmVkSW5zdHJ1Y3Rpb25BY2NvdW50PjtcblxuXG4vLyBPcmlnaW5hbCBhcmdzLlxuY29uc3QgYXJncyA9IHsgLi4uaW5wdXQsICB9O1xuXG5cblxuXG5jb25zdCBnZXRBY2NvdW50TWV0YSA9IGdldEFjY291bnRNZXRhRmFjdG9yeShwcm9ncmFtQWRkcmVzcywgJ3Byb2dyYW1JZCcpO1xucmV0dXJuIE9iamVjdC5mcmVlemUoeyBhY2NvdW50czogW2dldEFjY291bnRNZXRhKFwiZ2FtZVNlc3Npb25cIiwgYWNjb3VudHMuZ2FtZVNlc3Npb24pLCBnZXRBY2NvdW50TWV0YShcInBsYXllcjFQcm9maWxlXCIsIGFjY291bnRzLnBsYXllcjFQcm9maWxlKSwgZ2V0QWNjb3VudE1ldGEoXCJwbGF5ZXIyUHJvZmlsZVwiLCBhY2NvdW50cy5wbGF5ZXIyUHJvZmlsZSksIGdldEFjY291bnRNZXRhKFwicGxheWVyXCIsIGFjY291bnRzLnBsYXllcildLCBkYXRhOiBnZXRNYWtlQ2hvaWNlSW5zdHJ1Y3Rpb25EYXRhRW5jb2RlcigpLmVuY29kZShhcmdzIGFzIE1ha2VDaG9pY2VJbnN0cnVjdGlvbkRhdGFBcmdzKSwgcHJvZ3JhbUFkZHJlc3MgfSBhcyBNYWtlQ2hvaWNlSW5zdHJ1Y3Rpb248VFByb2dyYW1BZGRyZXNzLCBUQWNjb3VudEdhbWVTZXNzaW9uLCBUQWNjb3VudFBsYXllcjFQcm9maWxlLCBUQWNjb3VudFBsYXllcjJQcm9maWxlLCBUQWNjb3VudFBsYXllcj4pO1xufVxuXG5leHBvcnQgdHlwZSBQYXJzZWRNYWtlQ2hvaWNlSW5zdHJ1Y3Rpb248VFByb2dyYW0gZXh0ZW5kcyBzdHJpbmcgPSB0eXBlb2YgUlBTX0dBTUVfUFJPR1JBTV9BRERSRVNTLCBUQWNjb3VudE1ldGFzIGV4dGVuZHMgcmVhZG9ubHkgQWNjb3VudE1ldGFbXSA9IHJlYWRvbmx5IEFjY291bnRNZXRhW10+ID0geyBwcm9ncmFtQWRkcmVzczogQWRkcmVzczxUUHJvZ3JhbT47XG5hY2NvdW50czoge1xuZ2FtZVNlc3Npb246IFRBY2NvdW50TWV0YXNbMF07XG5wbGF5ZXIxUHJvZmlsZTogVEFjY291bnRNZXRhc1sxXTtcbnBsYXllcjJQcm9maWxlOiBUQWNjb3VudE1ldGFzWzJdO1xucGxheWVyOiBUQWNjb3VudE1ldGFzWzNdO1xufTtcbmRhdGE6IE1ha2VDaG9pY2VJbnN0cnVjdGlvbkRhdGE7IH07XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZU1ha2VDaG9pY2VJbnN0cnVjdGlvbjxUUHJvZ3JhbSBleHRlbmRzIHN0cmluZywgVEFjY291bnRNZXRhcyBleHRlbmRzIHJlYWRvbmx5IEFjY291bnRNZXRhW10+KGluc3RydWN0aW9uOiBJbnN0cnVjdGlvbjxUUHJvZ3JhbT4gJiBJbnN0cnVjdGlvbldpdGhBY2NvdW50czxUQWNjb3VudE1ldGFzPiAmIEluc3RydWN0aW9uV2l0aERhdGE8UmVhZG9ubHlVaW50OEFycmF5Pik6IFBhcnNlZE1ha2VDaG9pY2VJbnN0cnVjdGlvbjxUUHJvZ3JhbSwgVEFjY291bnRNZXRhcz4ge1xuICBpZiAoaW5zdHJ1Y3Rpb24uYWNjb3VudHMubGVuZ3RoIDwgNCkge1xuICB0aHJvdyBuZXcgU29sYW5hRXJyb3IoU09MQU5BX0VSUk9SX19QUk9HUkFNX0NMSUVOVFNfX0lOU1VGRklDSUVOVF9BQ0NPVU5UX01FVEFTLCB7IGFjdHVhbEFjY291bnRNZXRhczogaW5zdHJ1Y3Rpb24uYWNjb3VudHMubGVuZ3RoLCBleHBlY3RlZEFjY291bnRNZXRhczogNCB9KTtcbn1cbmxldCBhY2NvdW50SW5kZXggPSAwO1xuY29uc3QgZ2V0TmV4dEFjY291bnQgPSAoKSA9PiB7XG4gIGNvbnN0IGFjY291bnRNZXRhID0gKGluc3RydWN0aW9uLmFjY291bnRzIGFzIFRBY2NvdW50TWV0YXMpW2FjY291bnRJbmRleF0hO1xuICBhY2NvdW50SW5kZXggKz0gMTtcbiAgcmV0dXJuIGFjY291bnRNZXRhO1xufVxuICByZXR1cm4geyBwcm9ncmFtQWRkcmVzczogaW5zdHJ1Y3Rpb24ucHJvZ3JhbUFkZHJlc3MsIGFjY291bnRzOiB7IGdhbWVTZXNzaW9uOiBnZXROZXh0QWNjb3VudCgpLCBwbGF5ZXIxUHJvZmlsZTogZ2V0TmV4dEFjY291bnQoKSwgcGxheWVyMlByb2ZpbGU6IGdldE5leHRBY2NvdW50KCksIHBsYXllcjogZ2V0TmV4dEFjY291bnQoKSB9LCBkYXRhOiBnZXRNYWtlQ2hvaWNlSW5zdHJ1Y3Rpb25EYXRhRGVjb2RlcigpLmRlY29kZShpbnN0cnVjdGlvbi5kYXRhKSB9O1xufSJdfQ==
@@ -0,0 +1,43 @@
1
+ /**
2
+ * This code was AUTOGENERATED using the Codama library.
3
+ * Please DO NOT EDIT THIS FILE, instead use visitors
4
+ * to add features, then rerun Codama to update it.
5
+ *
6
+ * @see https://github.com/codama-idl/codama
7
+ */
8
+ import { type AccountMeta, type AccountSignerMeta, type Address, type FixedSizeCodec, type FixedSizeDecoder, type FixedSizeEncoder, type Instruction, type InstructionWithAccounts, type InstructionWithData, type ReadonlySignerAccount, type ReadonlyUint8Array, type TransactionSigner } from '@solana/kit';
9
+ import { RPS_GAME_PROGRAM_ADDRESS } from '../programs';
10
+ export declare const ON_MATCH_FOUND_DISCRIMINATOR: Uint8Array<ArrayBuffer>;
11
+ export declare function getOnMatchFoundDiscriminatorBytes(): ReadonlyUint8Array<ArrayBuffer>;
12
+ export type OnMatchFoundInstruction<TProgram extends string = typeof RPS_GAME_PROGRAM_ADDRESS, TAccountSigner extends string | AccountMeta<string> = string, TRemainingAccounts extends readonly AccountMeta<string>[] = []> = Instruction<TProgram> & InstructionWithData<ReadonlyUint8Array> & InstructionWithAccounts<[TAccountSigner extends string ? ReadonlySignerAccount<TAccountSigner> & AccountSignerMeta<TAccountSigner> : TAccountSigner, ...TRemainingAccounts]>;
13
+ export type OnMatchFoundInstructionData = {
14
+ discriminator: ReadonlyUint8Array;
15
+ player1: Address;
16
+ player2: Address;
17
+ matchId: bigint;
18
+ };
19
+ export type OnMatchFoundInstructionDataArgs = {
20
+ player1: Address;
21
+ player2: Address;
22
+ matchId: number | bigint;
23
+ };
24
+ export declare function getOnMatchFoundInstructionDataEncoder(): FixedSizeEncoder<OnMatchFoundInstructionDataArgs>;
25
+ export declare function getOnMatchFoundInstructionDataDecoder(): FixedSizeDecoder<OnMatchFoundInstructionData>;
26
+ export declare function getOnMatchFoundInstructionDataCodec(): FixedSizeCodec<OnMatchFoundInstructionDataArgs, OnMatchFoundInstructionData>;
27
+ export type OnMatchFoundInput<TAccountSigner extends string = string> = {
28
+ signer: TransactionSigner<TAccountSigner>;
29
+ player1: OnMatchFoundInstructionDataArgs["player1"];
30
+ player2: OnMatchFoundInstructionDataArgs["player2"];
31
+ matchId: OnMatchFoundInstructionDataArgs["matchId"];
32
+ };
33
+ export declare function getOnMatchFoundInstruction<TAccountSigner extends string, TProgramAddress extends Address = typeof RPS_GAME_PROGRAM_ADDRESS>(input: OnMatchFoundInput<TAccountSigner>, config?: {
34
+ programAddress?: TProgramAddress;
35
+ }): OnMatchFoundInstruction<TProgramAddress, TAccountSigner>;
36
+ export type ParsedOnMatchFoundInstruction<TProgram extends string = typeof RPS_GAME_PROGRAM_ADDRESS, TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[]> = {
37
+ programAddress: Address<TProgram>;
38
+ accounts: {
39
+ signer: TAccountMetas[0];
40
+ };
41
+ data: OnMatchFoundInstructionData;
42
+ };
43
+ export declare function parseOnMatchFoundInstruction<TProgram extends string, TAccountMetas extends readonly AccountMeta[]>(instruction: Instruction<TProgram> & InstructionWithAccounts<TAccountMetas> & InstructionWithData<ReadonlyUint8Array>): ParsedOnMatchFoundInstruction<TProgram, TAccountMetas>;
@@ -0,0 +1,45 @@
1
+ /**
2
+ * This code was AUTOGENERATED using the Codama library.
3
+ * Please DO NOT EDIT THIS FILE, instead use visitors
4
+ * to add features, then rerun Codama to update it.
5
+ *
6
+ * @see https://github.com/codama-idl/codama
7
+ */
8
+ import { combineCodec, fixDecoderSize, fixEncoderSize, getAddressDecoder, getAddressEncoder, getBytesDecoder, getBytesEncoder, getStructDecoder, getStructEncoder, getU64Decoder, getU64Encoder, SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS, SolanaError, transformEncoder } from '@solana/kit';
9
+ import { getAccountMetaFactory } from '@solana/program-client-core';
10
+ import { RPS_GAME_PROGRAM_ADDRESS } from '../programs';
11
+ export const ON_MATCH_FOUND_DISCRIMINATOR = new Uint8Array([66, 209, 170, 159, 10, 195, 34, 214]);
12
+ export function getOnMatchFoundDiscriminatorBytes() { return fixEncoderSize(getBytesEncoder(), 8).encode(ON_MATCH_FOUND_DISCRIMINATOR); }
13
+ export function getOnMatchFoundInstructionDataEncoder() {
14
+ return transformEncoder(getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)], ['player1', getAddressEncoder()], ['player2', getAddressEncoder()], ['matchId', getU64Encoder()]]), (value) => ({ ...value, discriminator: ON_MATCH_FOUND_DISCRIMINATOR }));
15
+ }
16
+ export function getOnMatchFoundInstructionDataDecoder() {
17
+ return getStructDecoder([['discriminator', fixDecoderSize(getBytesDecoder(), 8)], ['player1', getAddressDecoder()], ['player2', getAddressDecoder()], ['matchId', getU64Decoder()]]);
18
+ }
19
+ export function getOnMatchFoundInstructionDataCodec() {
20
+ return combineCodec(getOnMatchFoundInstructionDataEncoder(), getOnMatchFoundInstructionDataDecoder());
21
+ }
22
+ export function getOnMatchFoundInstruction(input, config) {
23
+ // Program address.
24
+ const programAddress = config?.programAddress ?? RPS_GAME_PROGRAM_ADDRESS;
25
+ // Original accounts.
26
+ const originalAccounts = { signer: { value: input.signer ?? null, isWritable: false } };
27
+ const accounts = originalAccounts;
28
+ // Original args.
29
+ const args = { ...input, };
30
+ const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');
31
+ return Object.freeze({ accounts: [getAccountMeta("signer", accounts.signer)], data: getOnMatchFoundInstructionDataEncoder().encode(args), programAddress });
32
+ }
33
+ export function parseOnMatchFoundInstruction(instruction) {
34
+ if (instruction.accounts.length < 1) {
35
+ throw new SolanaError(SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS, { actualAccountMetas: instruction.accounts.length, expectedAccountMetas: 1 });
36
+ }
37
+ let accountIndex = 0;
38
+ const getNextAccount = () => {
39
+ const accountMeta = instruction.accounts[accountIndex];
40
+ accountIndex += 1;
41
+ return accountMeta;
42
+ };
43
+ return { programAddress: instruction.programAddress, accounts: { signer: getNextAccount() }, data: getOnMatchFoundInstructionDataDecoder().decode(instruction.data) };
44
+ }
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib25NYXRjaEZvdW5kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2dlbmVyYXRlZC9ycHMtZ2FtZS9pbnN0cnVjdGlvbnMvb25NYXRjaEZvdW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxpQkFBaUIsRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUseURBQXlELEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFvUixNQUFNLGFBQWEsQ0FBQztBQUNqa0IsT0FBTyxFQUFFLHFCQUFxQixFQUFtQyxNQUFNLDZCQUE2QixDQUFDO0FBQ3JHLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV2RCxNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBRyxJQUFJLFVBQVUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBRWxHLE1BQU0sVUFBVSxpQ0FBaUMsS0FBSyxPQUFPLGNBQWMsQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsNEJBQTRCLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFTekksTUFBTSxVQUFVLHFDQUFxQztJQUNqRCxPQUFPLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxlQUFlLEVBQUUsY0FBYyxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFLGlCQUFpQixFQUFFLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsS0FBSyxFQUFFLGFBQWEsRUFBRSw0QkFBNEIsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNuUixDQUFDO0FBRUQsTUFBTSxVQUFVLHFDQUFxQztJQUNqRCxPQUFPLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxlQUFlLEVBQUUsY0FBYyxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFLGlCQUFpQixFQUFFLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6TCxDQUFDO0FBRUQsTUFBTSxVQUFVLG1DQUFtQztJQUMvQyxPQUFPLFlBQVksQ0FBQyxxQ0FBcUMsRUFBRSxFQUFFLHFDQUFxQyxFQUFFLENBQUMsQ0FBQztBQUMxRyxDQUFDO0FBU0QsTUFBTSxVQUFVLDBCQUEwQixDQUFtRyxLQUF3QyxFQUFFLE1BQTZDO0lBQ2xPLG1CQUFtQjtJQUNyQixNQUFNLGNBQWMsR0FBRyxNQUFNLEVBQUUsY0FBYyxJQUFJLHdCQUF3QixDQUFDO0lBRXpFLHFCQUFxQjtJQUN0QixNQUFNLGdCQUFnQixHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxNQUFNLElBQUksSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFBO0lBQ3ZGLE1BQU0sUUFBUSxHQUFHLGdCQUFxRixDQUFDO0lBR3ZHLGlCQUFpQjtJQUNqQixNQUFNLElBQUksR0FBRyxFQUFFLEdBQUcsS0FBSyxHQUFJLENBQUM7SUFLNUIsTUFBTSxjQUFjLEdBQUcscUJBQXFCLENBQUMsY0FBYyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQzFFLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLHFDQUFxQyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQXVDLENBQUMsRUFBRSxjQUFjLEVBQThELENBQUMsQ0FBQztBQUMzUCxDQUFDO0FBUUQsTUFBTSxVQUFVLDRCQUE0QixDQUF3RSxXQUFxSDtJQUN2TyxJQUFJLFdBQVcsQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3RDLE1BQU0sSUFBSSxXQUFXLENBQUMseURBQXlELEVBQUUsRUFBRSxrQkFBa0IsRUFBRSxXQUFXLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxvQkFBb0IsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pLLENBQUM7SUFDRCxJQUFJLFlBQVksR0FBRyxDQUFDLENBQUM7SUFDckIsTUFBTSxjQUFjLEdBQUcsR0FBRyxFQUFFO1FBQzFCLE1BQU0sV0FBVyxHQUFJLFdBQVcsQ0FBQyxRQUEwQixDQUFDLFlBQVksQ0FBRSxDQUFDO1FBQzNFLFlBQVksSUFBSSxDQUFDLENBQUM7UUFDbEIsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQyxDQUFBO0lBQ0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxXQUFXLENBQUMsY0FBYyxFQUFFLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxxQ0FBcUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztBQUN4SyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGlzIGNvZGUgd2FzIEFVVE9HRU5FUkFURUQgdXNpbmcgdGhlIENvZGFtYSBsaWJyYXJ5LlxuICogUGxlYXNlIERPIE5PVCBFRElUIFRISVMgRklMRSwgaW5zdGVhZCB1c2UgdmlzaXRvcnNcbiAqIHRvIGFkZCBmZWF0dXJlcywgdGhlbiByZXJ1biBDb2RhbWEgdG8gdXBkYXRlIGl0LlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2NvZGFtYS1pZGwvY29kYW1hXG4gKi9cblxuaW1wb3J0IHsgY29tYmluZUNvZGVjLCBmaXhEZWNvZGVyU2l6ZSwgZml4RW5jb2RlclNpemUsIGdldEFkZHJlc3NEZWNvZGVyLCBnZXRBZGRyZXNzRW5jb2RlciwgZ2V0Qnl0ZXNEZWNvZGVyLCBnZXRCeXRlc0VuY29kZXIsIGdldFN0cnVjdERlY29kZXIsIGdldFN0cnVjdEVuY29kZXIsIGdldFU2NERlY29kZXIsIGdldFU2NEVuY29kZXIsIFNPTEFOQV9FUlJPUl9fUFJPR1JBTV9DTElFTlRTX19JTlNVRkZJQ0lFTlRfQUNDT1VOVF9NRVRBUywgU29sYW5hRXJyb3IsIHRyYW5zZm9ybUVuY29kZXIsIHR5cGUgQWNjb3VudE1ldGEsIHR5cGUgQWNjb3VudFNpZ25lck1ldGEsIHR5cGUgQWRkcmVzcywgdHlwZSBGaXhlZFNpemVDb2RlYywgdHlwZSBGaXhlZFNpemVEZWNvZGVyLCB0eXBlIEZpeGVkU2l6ZUVuY29kZXIsIHR5cGUgSW5zdHJ1Y3Rpb24sIHR5cGUgSW5zdHJ1Y3Rpb25XaXRoQWNjb3VudHMsIHR5cGUgSW5zdHJ1Y3Rpb25XaXRoRGF0YSwgdHlwZSBSZWFkb25seVNpZ25lckFjY291bnQsIHR5cGUgUmVhZG9ubHlVaW50OEFycmF5LCB0eXBlIFRyYW5zYWN0aW9uU2lnbmVyIH0gZnJvbSAnQHNvbGFuYS9raXQnO1xuaW1wb3J0IHsgZ2V0QWNjb3VudE1ldGFGYWN0b3J5LCB0eXBlIFJlc29sdmVkSW5zdHJ1Y3Rpb25BY2NvdW50IH0gZnJvbSAnQHNvbGFuYS9wcm9ncmFtLWNsaWVudC1jb3JlJztcbmltcG9ydCB7IFJQU19HQU1FX1BST0dSQU1fQUREUkVTUyB9IGZyb20gJy4uL3Byb2dyYW1zJztcblxuZXhwb3J0IGNvbnN0IE9OX01BVENIX0ZPVU5EX0RJU0NSSU1JTkFUT1IgPSBuZXcgVWludDhBcnJheShbNjYsIDIwOSwgMTcwLCAxNTksIDEwLCAxOTUsIDM0LCAyMTRdKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldE9uTWF0Y2hGb3VuZERpc2NyaW1pbmF0b3JCeXRlcygpIHsgcmV0dXJuIGZpeEVuY29kZXJTaXplKGdldEJ5dGVzRW5jb2RlcigpLCA4KS5lbmNvZGUoT05fTUFUQ0hfRk9VTkRfRElTQ1JJTUlOQVRPUik7IH1cblxuZXhwb3J0IHR5cGUgT25NYXRjaEZvdW5kSW5zdHJ1Y3Rpb248VFByb2dyYW0gZXh0ZW5kcyBzdHJpbmcgPSB0eXBlb2YgUlBTX0dBTUVfUFJPR1JBTV9BRERSRVNTLCBUQWNjb3VudFNpZ25lciBleHRlbmRzIHN0cmluZyB8IEFjY291bnRNZXRhPHN0cmluZz4gPSBzdHJpbmcsIFRSZW1haW5pbmdBY2NvdW50cyBleHRlbmRzIHJlYWRvbmx5IEFjY291bnRNZXRhPHN0cmluZz5bXSA9IFtdPiA9XG5JbnN0cnVjdGlvbjxUUHJvZ3JhbT4gJiBJbnN0cnVjdGlvbldpdGhEYXRhPFJlYWRvbmx5VWludDhBcnJheT4gJiBJbnN0cnVjdGlvbldpdGhBY2NvdW50czxbVEFjY291bnRTaWduZXIgZXh0ZW5kcyBzdHJpbmcgPyBSZWFkb25seVNpZ25lckFjY291bnQ8VEFjY291bnRTaWduZXI+ICYgQWNjb3VudFNpZ25lck1ldGE8VEFjY291bnRTaWduZXI+IDogVEFjY291bnRTaWduZXIsIC4uLlRSZW1haW5pbmdBY2NvdW50c10+O1xuXG5leHBvcnQgdHlwZSBPbk1hdGNoRm91bmRJbnN0cnVjdGlvbkRhdGEgPSB7IGRpc2NyaW1pbmF0b3I6IFJlYWRvbmx5VWludDhBcnJheTsgcGxheWVyMTogQWRkcmVzczsgcGxheWVyMjogQWRkcmVzczsgbWF0Y2hJZDogYmlnaW50OyAgfTtcblxuZXhwb3J0IHR5cGUgT25NYXRjaEZvdW5kSW5zdHJ1Y3Rpb25EYXRhQXJncyA9IHsgcGxheWVyMTogQWRkcmVzczsgcGxheWVyMjogQWRkcmVzczsgbWF0Y2hJZDogbnVtYmVyIHwgYmlnaW50OyAgfTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldE9uTWF0Y2hGb3VuZEluc3RydWN0aW9uRGF0YUVuY29kZXIoKTogRml4ZWRTaXplRW5jb2RlcjxPbk1hdGNoRm91bmRJbnN0cnVjdGlvbkRhdGFBcmdzPiB7XG4gICAgcmV0dXJuIHRyYW5zZm9ybUVuY29kZXIoZ2V0U3RydWN0RW5jb2RlcihbWydkaXNjcmltaW5hdG9yJywgZml4RW5jb2RlclNpemUoZ2V0Qnl0ZXNFbmNvZGVyKCksIDgpXSwgWydwbGF5ZXIxJywgZ2V0QWRkcmVzc0VuY29kZXIoKV0sIFsncGxheWVyMicsIGdldEFkZHJlc3NFbmNvZGVyKCldLCBbJ21hdGNoSWQnLCBnZXRVNjRFbmNvZGVyKCldXSksICh2YWx1ZSkgPT4gKHsgLi4udmFsdWUsIGRpc2NyaW1pbmF0b3I6IE9OX01BVENIX0ZPVU5EX0RJU0NSSU1JTkFUT1IgfSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0T25NYXRjaEZvdW5kSW5zdHJ1Y3Rpb25EYXRhRGVjb2RlcigpOiBGaXhlZFNpemVEZWNvZGVyPE9uTWF0Y2hGb3VuZEluc3RydWN0aW9uRGF0YT4ge1xuICAgIHJldHVybiBnZXRTdHJ1Y3REZWNvZGVyKFtbJ2Rpc2NyaW1pbmF0b3InLCBmaXhEZWNvZGVyU2l6ZShnZXRCeXRlc0RlY29kZXIoKSwgOCldLCBbJ3BsYXllcjEnLCBnZXRBZGRyZXNzRGVjb2RlcigpXSwgWydwbGF5ZXIyJywgZ2V0QWRkcmVzc0RlY29kZXIoKV0sIFsnbWF0Y2hJZCcsIGdldFU2NERlY29kZXIoKV1dKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE9uTWF0Y2hGb3VuZEluc3RydWN0aW9uRGF0YUNvZGVjKCk6IEZpeGVkU2l6ZUNvZGVjPE9uTWF0Y2hGb3VuZEluc3RydWN0aW9uRGF0YUFyZ3MsIE9uTWF0Y2hGb3VuZEluc3RydWN0aW9uRGF0YT4ge1xuICAgIHJldHVybiBjb21iaW5lQ29kZWMoZ2V0T25NYXRjaEZvdW5kSW5zdHJ1Y3Rpb25EYXRhRW5jb2RlcigpLCBnZXRPbk1hdGNoRm91bmRJbnN0cnVjdGlvbkRhdGFEZWNvZGVyKCkpO1xufVxuXG5leHBvcnQgdHlwZSBPbk1hdGNoRm91bmRJbnB1dDxUQWNjb3VudFNpZ25lciBleHRlbmRzIHN0cmluZyA9IHN0cmluZz4gPSAge1xuICBzaWduZXI6IFRyYW5zYWN0aW9uU2lnbmVyPFRBY2NvdW50U2lnbmVyPjtcbnBsYXllcjE6IE9uTWF0Y2hGb3VuZEluc3RydWN0aW9uRGF0YUFyZ3NbXCJwbGF5ZXIxXCJdO1xucGxheWVyMjogT25NYXRjaEZvdW5kSW5zdHJ1Y3Rpb25EYXRhQXJnc1tcInBsYXllcjJcIl07XG5tYXRjaElkOiBPbk1hdGNoRm91bmRJbnN0cnVjdGlvbkRhdGFBcmdzW1wibWF0Y2hJZFwiXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE9uTWF0Y2hGb3VuZEluc3RydWN0aW9uPFRBY2NvdW50U2lnbmVyIGV4dGVuZHMgc3RyaW5nLCBUUHJvZ3JhbUFkZHJlc3MgZXh0ZW5kcyBBZGRyZXNzID0gdHlwZW9mIFJQU19HQU1FX1BST0dSQU1fQUREUkVTUz4oaW5wdXQ6IE9uTWF0Y2hGb3VuZElucHV0PFRBY2NvdW50U2lnbmVyPiwgY29uZmlnPzogeyBwcm9ncmFtQWRkcmVzcz86IFRQcm9ncmFtQWRkcmVzcyB9ICk6IE9uTWF0Y2hGb3VuZEluc3RydWN0aW9uPFRQcm9ncmFtQWRkcmVzcywgVEFjY291bnRTaWduZXI+IHtcbiAgLy8gUHJvZ3JhbSBhZGRyZXNzLlxuY29uc3QgcHJvZ3JhbUFkZHJlc3MgPSBjb25maWc/LnByb2dyYW1BZGRyZXNzID8/IFJQU19HQU1FX1BST0dSQU1fQUREUkVTUztcblxuIC8vIE9yaWdpbmFsIGFjY291bnRzLlxuY29uc3Qgb3JpZ2luYWxBY2NvdW50cyA9IHsgc2lnbmVyOiB7IHZhbHVlOiBpbnB1dC5zaWduZXIgPz8gbnVsbCwgaXNXcml0YWJsZTogZmFsc2UgfSB9XG5jb25zdCBhY2NvdW50cyA9IG9yaWdpbmFsQWNjb3VudHMgYXMgUmVjb3JkPGtleW9mIHR5cGVvZiBvcmlnaW5hbEFjY291bnRzLCBSZXNvbHZlZEluc3RydWN0aW9uQWNjb3VudD47XG5cblxuLy8gT3JpZ2luYWwgYXJncy5cbmNvbnN0IGFyZ3MgPSB7IC4uLmlucHV0LCAgfTtcblxuXG5cblxuY29uc3QgZ2V0QWNjb3VudE1ldGEgPSBnZXRBY2NvdW50TWV0YUZhY3RvcnkocHJvZ3JhbUFkZHJlc3MsICdwcm9ncmFtSWQnKTtcbnJldHVybiBPYmplY3QuZnJlZXplKHsgYWNjb3VudHM6IFtnZXRBY2NvdW50TWV0YShcInNpZ25lclwiLCBhY2NvdW50cy5zaWduZXIpXSwgZGF0YTogZ2V0T25NYXRjaEZvdW5kSW5zdHJ1Y3Rpb25EYXRhRW5jb2RlcigpLmVuY29kZShhcmdzIGFzIE9uTWF0Y2hGb3VuZEluc3RydWN0aW9uRGF0YUFyZ3MpLCBwcm9ncmFtQWRkcmVzcyB9IGFzIE9uTWF0Y2hGb3VuZEluc3RydWN0aW9uPFRQcm9ncmFtQWRkcmVzcywgVEFjY291bnRTaWduZXI+KTtcbn1cblxuZXhwb3J0IHR5cGUgUGFyc2VkT25NYXRjaEZvdW5kSW5zdHJ1Y3Rpb248VFByb2dyYW0gZXh0ZW5kcyBzdHJpbmcgPSB0eXBlb2YgUlBTX0dBTUVfUFJPR1JBTV9BRERSRVNTLCBUQWNjb3VudE1ldGFzIGV4dGVuZHMgcmVhZG9ubHkgQWNjb3VudE1ldGFbXSA9IHJlYWRvbmx5IEFjY291bnRNZXRhW10+ID0geyBwcm9ncmFtQWRkcmVzczogQWRkcmVzczxUUHJvZ3JhbT47XG5hY2NvdW50czoge1xuc2lnbmVyOiBUQWNjb3VudE1ldGFzWzBdO1xufTtcbmRhdGE6IE9uTWF0Y2hGb3VuZEluc3RydWN0aW9uRGF0YTsgfTtcblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlT25NYXRjaEZvdW5kSW5zdHJ1Y3Rpb248VFByb2dyYW0gZXh0ZW5kcyBzdHJpbmcsIFRBY2NvdW50TWV0YXMgZXh0ZW5kcyByZWFkb25seSBBY2NvdW50TWV0YVtdPihpbnN0cnVjdGlvbjogSW5zdHJ1Y3Rpb248VFByb2dyYW0+ICYgSW5zdHJ1Y3Rpb25XaXRoQWNjb3VudHM8VEFjY291bnRNZXRhcz4gJiBJbnN0cnVjdGlvbldpdGhEYXRhPFJlYWRvbmx5VWludDhBcnJheT4pOiBQYXJzZWRPbk1hdGNoRm91bmRJbnN0cnVjdGlvbjxUUHJvZ3JhbSwgVEFjY291bnRNZXRhcz4ge1xuICBpZiAoaW5zdHJ1Y3Rpb24uYWNjb3VudHMubGVuZ3RoIDwgMSkge1xuICB0aHJvdyBuZXcgU29sYW5hRXJyb3IoU09MQU5BX0VSUk9SX19QUk9HUkFNX0NMSUVOVFNfX0lOU1VGRklDSUVOVF9BQ0NPVU5UX01FVEFTLCB7IGFjdHVhbEFjY291bnRNZXRhczogaW5zdHJ1Y3Rpb24uYWNjb3VudHMubGVuZ3RoLCBleHBlY3RlZEFjY291bnRNZXRhczogMSB9KTtcbn1cbmxldCBhY2NvdW50SW5kZXggPSAwO1xuY29uc3QgZ2V0TmV4dEFjY291bnQgPSAoKSA9PiB7XG4gIGNvbnN0IGFjY291bnRNZXRhID0gKGluc3RydWN0aW9uLmFjY291bnRzIGFzIFRBY2NvdW50TWV0YXMpW2FjY291bnRJbmRleF0hO1xuICBhY2NvdW50SW5kZXggKz0gMTtcbiAgcmV0dXJuIGFjY291bnRNZXRhO1xufVxuICByZXR1cm4geyBwcm9ncmFtQWRkcmVzczogaW5zdHJ1Y3Rpb24ucHJvZ3JhbUFkZHJlc3MsIGFjY291bnRzOiB7IHNpZ25lcjogZ2V0TmV4dEFjY291bnQoKSB9LCBkYXRhOiBnZXRPbk1hdGNoRm91bmRJbnN0cnVjdGlvbkRhdGFEZWNvZGVyKCkuZGVjb2RlKGluc3RydWN0aW9uLmRhdGEpIH07XG59Il19