@coinflowlabs/angular 1.0.0 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/README.md +28 -2
  2. package/fesm2022/coinflowlabs-angular.mjs +84 -51
  3. package/fesm2022/coinflowlabs-angular.mjs.map +1 -1
  4. package/lib/common/CoinflowTypes.d.ts +44 -5
  5. package/lib/common/CoinflowUtils.d.ts +7 -2
  6. package/lib/common/card-form/tokenexHelpers.d.ts +2 -2
  7. package/package.json +1 -3
  8. package/esm2022/coinflowlabs-angular.mjs +0 -5
  9. package/esm2022/lib/card-form/CardFormService.mjs +0 -64
  10. package/esm2022/lib/card-form/coinflow-card-number-input.component.mjs +0 -53
  11. package/esm2022/lib/card-form/coinflow-card-number-only-input.component.mjs +0 -53
  12. package/esm2022/lib/card-form/coinflow-cvv-input.component.mjs +0 -20
  13. package/esm2022/lib/card-form/coinflow-cvv-only-input.component.mjs +0 -70
  14. package/esm2022/lib/coinflow-iframe.component.mjs +0 -73
  15. package/esm2022/lib/coinflow-purchase-history.component.mjs +0 -16
  16. package/esm2022/lib/coinflow-purchase-protection.component.mjs +0 -16
  17. package/esm2022/lib/coinflow-purchase.component.mjs +0 -32
  18. package/esm2022/lib/coinflow-withdraw-history.component.mjs +0 -16
  19. package/esm2022/lib/coinflow-withdraw.component.mjs +0 -32
  20. package/esm2022/lib/common/CoinflowLibMessageHandlers.mjs +0 -207
  21. package/esm2022/lib/common/CoinflowTypes.mjs +0 -26
  22. package/esm2022/lib/common/CoinflowUtils.mjs +0 -219
  23. package/esm2022/lib/common/SolanaPeerDeps.mjs +0 -17
  24. package/esm2022/lib/common/Subtotal.mjs +0 -8
  25. package/esm2022/lib/common/card-form/TokenEx.mjs +0 -11
  26. package/esm2022/lib/common/card-form/tokenexHelpers.mjs +0 -157
  27. package/esm2022/lib/common/index.mjs +0 -7
  28. package/esm2022/lib/mobile-wallet/apple-pay-overlay.component.mjs +0 -93
  29. package/esm2022/lib/mobile-wallet/coinflow-apple-pay-button.component.mjs +0 -106
  30. package/esm2022/lib/mobile-wallet/coinflow-google-pay-button.component.mjs +0 -43
  31. package/esm2022/lib/mobile-wallet/coinflow-mobile-wallet-button.component.mjs +0 -96
  32. package/esm2022/lib/mobile-wallet/google-pay-overlay.component.mjs +0 -124
  33. package/esm2022/public-api.mjs +0 -16
@@ -1,32 +0,0 @@
1
- import { Component, Input } from '@angular/core';
2
- import { getHandlers, getWalletPubkey, } from './common';
3
- import { CoinflowIFrameComponent } from './coinflow-iframe.component';
4
- import * as i0 from "@angular/core";
5
- export class CoinflowWithdrawComponent {
6
- ngOnInit() {
7
- const walletPubkey = getWalletPubkey(this.withdrawProps);
8
- this.messageHandlers = getHandlers(this.withdrawProps);
9
- this.messageHandlers.handleHeightChange =
10
- this.withdrawProps.handleHeightChange;
11
- this.iframeProps = {
12
- ...this.withdrawProps,
13
- walletPubkey,
14
- route: `/withdraw/${this.withdrawProps?.merchantId}`,
15
- transaction: undefined,
16
- };
17
- }
18
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: CoinflowWithdrawComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
19
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.10", type: CoinflowWithdrawComponent, isStandalone: true, selector: "lib-coinflow-withdraw", inputs: { withdrawProps: "withdrawProps" }, ngImport: i0, template: ' <lib-coinflow-iframe ng-if="iframeProps && messageHandlers" [iframeProps]="iframeProps!" [messageHandlers]="messageHandlers!"></lib-coinflow-iframe> ', isInline: true, dependencies: [{ kind: "component", type: CoinflowIFrameComponent, selector: "lib-coinflow-iframe", inputs: ["iframeProps", "messageHandlers"], outputs: ["messageEvent"] }] }); }
20
- }
21
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: CoinflowWithdrawComponent, decorators: [{
22
- type: Component,
23
- args: [{
24
- selector: 'lib-coinflow-withdraw',
25
- standalone: true,
26
- imports: [CoinflowIFrameComponent],
27
- template: ' <lib-coinflow-iframe ng-if="iframeProps && messageHandlers" [iframeProps]="iframeProps!" [messageHandlers]="messageHandlers!"></lib-coinflow-iframe> ',
28
- }]
29
- }], propDecorators: { withdrawProps: [{
30
- type: Input
31
- }] } });
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29pbmZsb3ctd2l0aGRyYXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29pbmZsb3dsYWJzL3NyYy9saWIvY29pbmZsb3ctd2l0aGRyYXcuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFJTCxXQUFXLEVBQ1gsZUFBZSxHQUNoQixNQUFNLFVBQVUsQ0FBQztBQUNsQixPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQzs7QUFTcEUsTUFBTSxPQUFPLHlCQUF5QjtJQUtwQyxRQUFRO1FBQ04sTUFBTSxZQUFZLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsZUFBZSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxrQkFBa0I7WUFDckMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQztRQUV4QyxJQUFJLENBQUMsV0FBVyxHQUFHO1lBQ2pCLEdBQUcsSUFBSSxDQUFDLGFBQWE7WUFDckIsWUFBWTtZQUNaLEtBQUssRUFBRSxhQUFhLElBQUksQ0FBQyxhQUFhLEVBQUUsVUFBVSxFQUFFO1lBQ3BELFdBQVcsRUFBRSxTQUFTO1NBQ3ZCLENBQUM7SUFDSixDQUFDOytHQWpCVSx5QkFBeUI7bUdBQXpCLHlCQUF5Qiw2SEFGbEMseUpBQXlKLDREQUZqSix1QkFBdUI7OzRGQUl0Qix5QkFBeUI7a0JBUHJDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHVCQUF1QjtvQkFDakMsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLE9BQU8sRUFBRSxDQUFDLHVCQUF1QixDQUFDO29CQUNsQyxRQUFRLEVBQ04seUpBQXlKO2lCQUM1Sjs4QkFFVSxhQUFhO3NCQUFyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIElucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIENvaW5mbG93SUZyYW1lUHJvcHMsXG4gIENvaW5mbG93V2l0aGRyYXdQcm9wcyxcbiAgSUZyYW1lTWVzc2FnZUhhbmRsZXJzLFxuICBnZXRIYW5kbGVycyxcbiAgZ2V0V2FsbGV0UHVia2V5LFxufSBmcm9tICcuL2NvbW1vbic7XG5pbXBvcnQge0NvaW5mbG93SUZyYW1lQ29tcG9uZW50fSBmcm9tICcuL2NvaW5mbG93LWlmcmFtZS5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItY29pbmZsb3ctd2l0aGRyYXcnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29pbmZsb3dJRnJhbWVDb21wb25lbnRdLFxuICB0ZW1wbGF0ZTpcbiAgICAnICA8bGliLWNvaW5mbG93LWlmcmFtZSBuZy1pZj1cImlmcmFtZVByb3BzICYmIG1lc3NhZ2VIYW5kbGVyc1wiIFtpZnJhbWVQcm9wc109XCJpZnJhbWVQcm9wcyFcIiBbbWVzc2FnZUhhbmRsZXJzXT1cIm1lc3NhZ2VIYW5kbGVycyFcIj48L2xpYi1jb2luZmxvdy1pZnJhbWU+ICcsXG59KVxuZXhwb3J0IGNsYXNzIENvaW5mbG93V2l0aGRyYXdDb21wb25lbnQge1xuICBASW5wdXQoKSB3aXRoZHJhd1Byb3BzITogQ29pbmZsb3dXaXRoZHJhd1Byb3BzO1xuICBpZnJhbWVQcm9wcz86IENvaW5mbG93SUZyYW1lUHJvcHM7XG4gIG1lc3NhZ2VIYW5kbGVycz86IElGcmFtZU1lc3NhZ2VIYW5kbGVycztcblxuICBuZ09uSW5pdCgpIHtcbiAgICBjb25zdCB3YWxsZXRQdWJrZXkgPSBnZXRXYWxsZXRQdWJrZXkodGhpcy53aXRoZHJhd1Byb3BzKTtcbiAgICB0aGlzLm1lc3NhZ2VIYW5kbGVycyA9IGdldEhhbmRsZXJzKHRoaXMud2l0aGRyYXdQcm9wcyk7XG4gICAgdGhpcy5tZXNzYWdlSGFuZGxlcnMuaGFuZGxlSGVpZ2h0Q2hhbmdlID1cbiAgICAgIHRoaXMud2l0aGRyYXdQcm9wcy5oYW5kbGVIZWlnaHRDaGFuZ2U7XG5cbiAgICB0aGlzLmlmcmFtZVByb3BzID0ge1xuICAgICAgLi4udGhpcy53aXRoZHJhd1Byb3BzLFxuICAgICAgd2FsbGV0UHVia2V5LFxuICAgICAgcm91dGU6IGAvd2l0aGRyYXcvJHt0aGlzLndpdGhkcmF3UHJvcHM/Lm1lcmNoYW50SWR9YCxcbiAgICAgIHRyYW5zYWN0aW9uOiB1bmRlZmluZWQsXG4gICAgfTtcbiAgfVxufVxuIl19
@@ -1,207 +0,0 @@
1
- import { CoinflowUtils } from './CoinflowUtils';
2
- import { web3, base58 } from './SolanaPeerDeps';
3
- var IFrameMessageMethods;
4
- (function (IFrameMessageMethods) {
5
- IFrameMessageMethods["SignMessage"] = "signMessage";
6
- IFrameMessageMethods["SignTransaction"] = "signTransaction";
7
- IFrameMessageMethods["SendTransaction"] = "sendTransaction";
8
- IFrameMessageMethods["HeightChange"] = "heightChange";
9
- IFrameMessageMethods["Success"] = "success";
10
- IFrameMessageMethods["Loaded"] = "loaded";
11
- })(IFrameMessageMethods || (IFrameMessageMethods = {}));
12
- export function getWalletPubkey(input) {
13
- let wallet;
14
- if ('signer' in input &&
15
- typeof input.signer === 'object' &&
16
- input.signer &&
17
- 'wallet' in input.signer)
18
- wallet = input.signer.wallet;
19
- else if ('wallet' in input && input.wallet)
20
- wallet = input.wallet;
21
- if (!wallet)
22
- return;
23
- if (typeof wallet === 'string')
24
- return wallet;
25
- if (typeof wallet === 'object') {
26
- if ('publicKey' in wallet)
27
- return wallet.publicKey ? wallet.publicKey.toString() : undefined;
28
- if ('address' in wallet)
29
- return wallet.address ? wallet.address : undefined;
30
- if ('accountId' in wallet)
31
- return wallet.accountId ? wallet.accountId : undefined;
32
- }
33
- return null;
34
- }
35
- export function handleIFrameMessage(rawMessage, handlers) {
36
- let walletCall;
37
- try {
38
- walletCall = JSON.parse(rawMessage);
39
- if (!('method' in walletCall) || !('data' in walletCall))
40
- return;
41
- }
42
- catch (e) {
43
- console.error('handleIFrameMessage JSON parse', e);
44
- return;
45
- }
46
- const { data, method } = walletCall;
47
- switch (method) {
48
- case IFrameMessageMethods.SignMessage:
49
- if (!handlers.handleSignMessage)
50
- return;
51
- return handlers.handleSignMessage(data);
52
- case IFrameMessageMethods.SignTransaction:
53
- if (!handlers.handleSignTransaction)
54
- return;
55
- return handlers.handleSignTransaction(data);
56
- case IFrameMessageMethods.SendTransaction:
57
- return handlers.handleSendTransaction(data);
58
- case IFrameMessageMethods.HeightChange:
59
- if (!handlers.handleHeightChange)
60
- return;
61
- return handlers.handleHeightChange(data);
62
- case IFrameMessageMethods.Success:
63
- if (!handlers.onSuccess)
64
- return;
65
- handlers.onSuccess(walletCall.info);
66
- return;
67
- case IFrameMessageMethods.Loaded:
68
- return;
69
- }
70
- console.warn(`Didn't expect to get here, handleIFrameMessage method:${method} is not one of ${Object.values(IFrameMessageMethods)}`);
71
- }
72
- export function getHandlers(props) {
73
- let chain;
74
- let wallet;
75
- if ('signer' in props &&
76
- typeof props.signer === 'object' &&
77
- props.signer &&
78
- 'blockchain' in props.signer &&
79
- 'wallet' in props.signer) {
80
- chain = props.signer.blockchain;
81
- wallet = props.signer.wallet;
82
- }
83
- else if ('blockchain' in props && props.blockchain) {
84
- chain = props.blockchain;
85
- wallet = props.wallet;
86
- }
87
- if (!chain) {
88
- return {
89
- handleSendTransaction: () => {
90
- throw new Error('handleSendTransaction Not Implemented');
91
- },
92
- handleSignMessage: () => {
93
- throw new Error('handleSendTransaction Not Implemented');
94
- },
95
- handleSignTransaction: () => {
96
- throw new Error('handleSendTransaction Not Implemented');
97
- },
98
- onSuccess: props.onSuccess,
99
- };
100
- }
101
- return CoinflowUtils.byBlockchain(chain, {
102
- solana: () => getSolanaWalletHandlers({
103
- wallet: wallet,
104
- onSuccess: props.onSuccess,
105
- }),
106
- near: () => getNearWalletHandlers({
107
- wallet: wallet,
108
- onSuccess: props.onSuccess,
109
- }),
110
- eth: () => getEvmWalletHandlers({
111
- wallet: wallet,
112
- onSuccess: props.onSuccess,
113
- }),
114
- polygon: () => getEvmWalletHandlers({
115
- wallet: wallet,
116
- onSuccess: props.onSuccess,
117
- }),
118
- base: () => getEvmWalletHandlers({
119
- wallet: wallet,
120
- onSuccess: props.onSuccess,
121
- }),
122
- arbitrum: () => getEvmWalletHandlers({
123
- wallet: wallet,
124
- onSuccess: props.onSuccess,
125
- }),
126
- user: () => getSessionKeyHandlers(props),
127
- })();
128
- }
129
- function getSolanaWalletHandlers({ wallet, onSuccess, }) {
130
- return {
131
- handleSendTransaction: async (transaction) => {
132
- const tx = getSolanaTransaction(transaction);
133
- return await wallet.sendTransaction(tx);
134
- },
135
- handleSignMessage: async (message) => {
136
- const signMessage = wallet.signMessage;
137
- if (!signMessage) {
138
- throw new Error('signMessage is not supported by this wallet');
139
- }
140
- const signedMessage = await signMessage(new TextEncoder().encode(message));
141
- if (!base58)
142
- throw new Error('bs58 dependency is required');
143
- return base58.encode(signedMessage);
144
- },
145
- handleSignTransaction: async (transaction) => {
146
- const signTransaction = wallet.signTransaction;
147
- if (!signTransaction) {
148
- throw new Error('signTransaction is not supported by this wallet');
149
- }
150
- const tx = getSolanaTransaction(transaction);
151
- const signedTransaction = await signTransaction(tx);
152
- if (!base58)
153
- throw new Error('bs58 dependency is required');
154
- return base58.encode(signedTransaction.serialize({
155
- requireAllSignatures: false,
156
- verifySignatures: false,
157
- }));
158
- },
159
- onSuccess,
160
- };
161
- }
162
- function getSolanaTransaction(data) {
163
- if (!web3)
164
- throw new Error('@solana/web3.js is not defined. Please install @solana/web3.js into your project');
165
- if (!base58)
166
- throw new Error('bs58 is not defined. Please install bs58 into your project');
167
- const parsedUInt8Array = base58.decode(data);
168
- const vtx = web3.VersionedTransaction.deserialize(parsedUInt8Array);
169
- if (vtx.version === 'legacy')
170
- return web3.Transaction.from(parsedUInt8Array);
171
- return vtx;
172
- }
173
- function getNearWalletHandlers({ wallet, onSuccess, }) {
174
- return {
175
- handleSendTransaction: async (transaction) => {
176
- const action = JSON.parse(Buffer.from(transaction, 'base64').toString());
177
- const executionOutcome = await wallet.signAndSendTransaction(action);
178
- if (!executionOutcome)
179
- throw new Error('Transaction did not send');
180
- const { transaction: transactionResult } = executionOutcome;
181
- return transactionResult.hash;
182
- },
183
- onSuccess,
184
- };
185
- }
186
- function getEvmWalletHandlers({ wallet, onSuccess, }) {
187
- return {
188
- handleSendTransaction: async (transaction) => {
189
- const tx = JSON.parse(Buffer.from(transaction, 'base64').toString());
190
- const { hash } = await wallet.sendTransaction(tx);
191
- return hash;
192
- },
193
- handleSignMessage: async (message) => {
194
- return wallet.signMessage(message);
195
- },
196
- onSuccess,
197
- };
198
- }
199
- function getSessionKeyHandlers({ onSuccess, }) {
200
- return {
201
- handleSendTransaction: async () => {
202
- return Promise.resolve('');
203
- },
204
- onSuccess,
205
- };
206
- }
207
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29pbmZsb3dMaWJNZXNzYWdlSGFuZGxlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb2luZmxvd2xhYnMvc3JjL2xpYi9jb21tb24vQ29pbmZsb3dMaWJNZXNzYWdlSGFuZGxlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBU0EsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRTlDLE9BQU8sRUFBQyxJQUFJLEVBQUUsTUFBTSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFvQjlDLElBQUssb0JBT0o7QUFQRCxXQUFLLG9CQUFvQjtJQUN2QixtREFBMkIsQ0FBQTtJQUMzQiwyREFBbUMsQ0FBQTtJQUNuQywyREFBbUMsQ0FBQTtJQUNuQyxxREFBNkIsQ0FBQTtJQUM3QiwyQ0FBbUIsQ0FBQTtJQUNuQix5Q0FBaUIsQ0FBQTtBQUNuQixDQUFDLEVBUEksb0JBQW9CLEtBQXBCLG9CQUFvQixRQU94QjtBQUVELE1BQU0sVUFBVSxlQUFlLENBQzdCLEtBQTJEO0lBRTNELElBQUksTUFBK0IsQ0FBQztJQUNwQyxJQUNFLFFBQVEsSUFBSSxLQUFLO1FBQ2pCLE9BQU8sS0FBSyxDQUFDLE1BQU0sS0FBSyxRQUFRO1FBQ2hDLEtBQUssQ0FBQyxNQUFNO1FBQ1osUUFBUSxJQUFJLEtBQUssQ0FBQyxNQUFNO1FBRXhCLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQXFCLENBQUM7U0FDekMsSUFBSSxRQUFRLElBQUksS0FBSyxJQUFJLEtBQUssQ0FBQyxNQUFNO1FBQUUsTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7SUFFbEUsSUFBSSxDQUFDLE1BQU07UUFBRSxPQUFPO0lBRXBCLElBQUksT0FBTyxNQUFNLEtBQUssUUFBUTtRQUFFLE9BQU8sTUFBTSxDQUFDO0lBRTlDLElBQUksT0FBTyxNQUFNLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDL0IsSUFBSSxXQUFX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Q0FBQyxDQUFDO1FBQ3JDLENBQUM7UUFDRCxTQUFTO0tBQ1YsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLHFCQUFxQixDQUFDLEVBQzdCLFNBQVMsR0FDZ0M7SUFJekMsT0FBTztRQUNMLHFCQUFxQixFQUFFLEtBQUssSUFBSSxFQUFFO1lBQ2hDLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM3QixDQUFDO1FBQ0QsU0FBUztLQUNWLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29pbmZsb3dCbG9ja2NoYWluLFxuICBDb2luZmxvd1B1cmNoYXNlUHJvcHMsXG4gIEV0aFdhbGxldCxcbiAgTmVhcldhbGxldCxcbiAgT25TdWNjZXNzTWV0aG9kLFxuICBTb2xhbmFXYWxsZXQsXG4gIFdhbGxldFR5cGVzLFxufSBmcm9tICcuL0NvaW5mbG93VHlwZXMnO1xuaW1wb3J0IHtDb2luZmxvd1V0aWxzfSBmcm9tICcuL0NvaW5mbG93VXRpbHMnO1xuaW1wb3J0IHR5cGUge1RyYW5zYWN0aW9uLCBWZXJzaW9uZWRUcmFuc2FjdGlvbn0gZnJvbSAnQHNvbGFuYS93ZWIzLmpzJztcbmltcG9ydCB7d2ViMywgYmFzZTU4fSBmcm9tICcuL1NvbGFuYVBlZXJEZXBzJztcblxuZXhwb3J0IHR5cGUgV2FsbGV0Q2FsbCA9XG4gIHwge21ldGhvZDogSUZyYW1lTWVzc2FnZU1ldGhvZHM7IGRhdGE6IHN0cmluZ31cbiAgfCBTdWNjZXNzV2FsbGV0Q2FsbDtcblxudHlwZSBTdWNjZXNzV2FsbGV0Q2FsbCA9IHtcbiAgbWV0aG9kOiBJRnJhbWVNZXNzYWdlTWV0aG9kcy5TdWNjZXNzO1xuICBkYXRhOiBzdHJpbmc7XG4gIGluZm86IHtwYXltZW50SWQ6IHN0cmluZzsgaGFzaD86IHN0cmluZ307XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIElGcmFtZU1lc3NhZ2VIYW5kbGVycyB7XG4gIGhhbmRsZVNlbmRUcmFuc2FjdGlvbjogKHRyYW5zYWN0aW9uOiBzdHJpbmcpID0+IFByb21pc2U8c3RyaW5nPjtcbiAgaGFuZGxlU2lnbk1lc3NhZ2U/OiAobWVzc2FnZTogc3RyaW5nKSA9PiBQcm9taXNlPHN0cmluZz47XG4gIGhhbmRsZVNpZ25UcmFuc2FjdGlvbj86ICh0cmFuc2FjdGlvbjogc3RyaW5nKSA9PiBQcm9taXNlPHN0cmluZz47XG4gIGhhbmRsZUhlaWdodENoYW5nZT86IChoZWlnaHQ6IHN0cmluZykgPT4gdm9pZDtcbiAgb25TdWNjZXNzOiBPblN1Y2Nlc3NNZXRob2QgfCB1bmRlZmluZWQ7XG59XG5cbmVudW0gSUZyYW1lTWVzc2FnZU1ldGhvZHMge1xuICBTaWduTWVzc2FnZSA9ICdzaWduTWVzc2FnZScsXG4gIFNpZ25UcmFuc2FjdGlvbiA9ICdzaWduVHJhbnNhY3Rpb24nLFxuICBTZW5kVHJhbnNhY3Rpb24gPSAnc2VuZFRyYW5zYWN0aW9uJyxcbiAgSGVpZ2h0Q2hhbmdlID0gJ2hlaWdodENoYW5nZScsXG4gIFN1Y2Nlc3MgPSAnc3VjY2VzcycsXG4gIExvYWRlZCA9ICdsb2FkZWQnLFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0V2FsbGV0UHVia2V5KFxuICBpbnB1dDogUGljazxDb2luZmxvd1B1cmNoYXNlUHJvcHMsICd3YWxsZXQnIHwgJ2Jsb2NrY2hhaW4nPlxuKTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gIGxldCB3YWxsZXQ6IFdhbGxldFR5cGVzIHwgdW5kZWZpbmVkO1xuICBpZiAoXG4gICAgJ3NpZ25lcicgaW4gaW5wdXQgJiZcbiAgICB0eXBlb2YgaW5wdXQuc2lnbmVyID09PSAnb2JqZWN0JyAmJlxuICAgIGlucHV0LnNpZ25lciAmJlxuICAgICd3YWxsZXQnIGluIGlucHV0LnNpZ25lclxuICApXG4gICAgd2FsbGV0ID0gaW5wdXQuc2lnbmVyLndhbGxldCBhcyBXYWxsZXRUeXBlcztcbiAgZWxzZSBpZiAoJ3dhbGxldCcgaW4gaW5wdXQgJiYgaW5wdXQud2FsbGV0KSB3YWxsZXQgPSBpbnB1dC53YWxsZXQ7XG5cbiAgaWYgKCF3YWxsZXQpIHJldHVybjtcblxuICBpZiAodHlwZW9mIHdhbGxldCA9PT0gJ3N0cmluZycpIHJldHVybiB3YWxsZXQ7XG5cbiAgaWYgKHR5cGVvZiB3YWxsZXQgPT09ICdvYmplY3QnKSB7XG4gICAgaWYgKCdwdWJsaWNLZXknIGluIHdhbGxldClcbiAgICAgIHJldHVybiB3YWxsZXQucHVibGljS2V5ID8gd2FsbGV0LnB1YmxpY0tleS50b1N0cmluZygpIDogdW5kZWZpbmVkO1xuXG4gICAgaWYgKCdhZGRyZXNzJyBpbiB3YWxsZXQpXG4gICAgICByZXR1cm4gd2FsbGV0LmFkZHJlc3MgPyAod2FsbGV0LmFkZHJlc3MgYXMgc3RyaW5nKSA6IHVuZGVmaW5lZDtcblxuICAgIGlmICgnYWNjb3VudElkJyBpbiB3YWxsZXQpXG4gICAgICByZXR1cm4gd2FsbGV0LmFjY291bnRJZCA/ICh3YWxsZXQuYWNjb3VudElkIGFzIHN0cmluZykgOiB1bmRlZmluZWQ7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhhbmRsZUlGcmFtZU1lc3NhZ2UoXG4gIHJhd01lc3NhZ2U6IHN0cmluZyxcbiAgaGFuZGxlcnM6IElGcmFtZU1lc3NhZ2VIYW5kbGVyc1xuKTogUHJvbWlzZTxzdHJpbmc+IHwgdm9pZCB7XG4gIGxldCB3YWxsZXRDYWxsOiBXYWxsZXRDYWxsO1xuICB0cnkge1xuICAgIHdhbGxldENhbGwgPSBKU09OLnBhcnNlKHJhd01lc3NhZ2UpO1xuICAgIGlmICghKCdtZXRob2QnIGluIHdhbGxldENhbGwpIHx8ICEoJ2RhdGEnIGluIHdhbGxldENhbGwpKSByZXR1cm47XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25zb2xlLmVycm9yKCdoYW5kbGVJRnJhbWVNZXNzYWdlIEpTT04gcGFyc2UnLCBlKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB7ZGF0YSwgbWV0aG9kfSA9IHdhbGxldENhbGw7XG4gIHN3aXRjaCAobWV0aG9kKSB7XG4gICAgY2FzZSBJRnJhbWVNZXNzYWdlTWV0aG9kcy5TaWduTWVzc2FnZTpcbiAgICAgIGlmICghaGFuZGxlcnMuaGFuZGxlU2lnbk1lc3NhZ2UpIHJldHVybjtcbiAgICAgIHJldHVybiBoYW5kbGVycy5oYW5kbGVTaWduTWVzc2FnZShkYXRhKTtcbiAgICBjYXNlIElGcmFtZU1lc3NhZ2VNZXRob2RzLlNpZ25UcmFuc2FjdGlvbjpcbiAgICAgIGlmICghaGFuZGxlcnMuaGFuZGxlU2lnblRyYW5zYWN0aW9uKSByZXR1cm47XG4gICAgICByZXR1cm4gaGFuZGxlcnMuaGFuZGxlU2lnblRyYW5zYWN0aW9uKGRhdGEpO1xuICAgIGNhc2UgSUZyYW1lTWVzc2FnZU1ldGhvZHMuU2VuZFRyYW5zYWN0aW9uOlxuICAgICAgcmV0dXJuIGhhbmRsZXJzLmhhbmRsZVNlbmRUcmFuc2FjdGlvbihkYXRhKTtcbiAgICBjYXNlIElGcmFtZU1lc3NhZ2VNZXRob2RzLkhlaWdodENoYW5nZTpcbiAgICAgIGlmICghaGFuZGxlcnMuaGFuZGxlSGVpZ2h0Q2hhbmdlKSByZXR1cm47XG4gICAgICByZXR1cm4gaGFuZGxlcnMuaGFuZGxlSGVpZ2h0Q2hhbmdlKGRhdGEpO1xuICAgIGNhc2UgSUZyYW1lTWVzc2FnZU1ldGhvZHMuU3VjY2VzczpcbiAgICAgIGlmICghaGFuZGxlcnMub25TdWNjZXNzKSByZXR1cm47XG4gICAgICBoYW5kbGVycy5vblN1Y2Nlc3MoKHdhbGxldENhbGwgYXMgU3VjY2Vzc1dhbGxldENhbGwpLmluZm8pO1xuICAgICAgcmV0dXJuO1xuICAgIGNhc2UgSUZyYW1lTWVzc2FnZU1ldGhvZHMuTG9hZGVkOlxuICAgICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc29sZS53YXJuKFxuICAgIGBEaWRuJ3QgZXhwZWN0IHRvIGdldCBoZXJlLCBoYW5kbGVJRnJhbWVNZXNzYWdlIG1ldGhvZDoke21ldGhvZH0gaXMgbm90IG9uZSBvZiAke09iamVjdC52YWx1ZXMoSUZyYW1lTWVzc2FnZU1ldGhvZHMpfWBcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEhhbmRsZXJzKFxuICBwcm9wczogUGljazxDb2luZmxvd1B1cmNoYXNlUHJvcHMsICd3YWxsZXQnIHwgJ2Jsb2NrY2hhaW4nIHwgJ29uU3VjY2Vzcyc+XG4pOiBPbWl0PElGcmFtZU1lc3NhZ2VIYW5kbGVycywgJ2hhbmRsZUhlaWdodENoYW5nZSc+IHtcbiAgbGV0IGNoYWluOiBDb2luZmxvd0Jsb2NrY2hhaW4gfCB1bmRlZmluZWQ7XG4gIGxldCB3YWxsZXQ6IFdhbGxldFR5cGVzIHwgdW5kZWZpbmVkO1xuICBpZiAoXG4gICAgJ3NpZ25lcicgaW4gcHJvcHMgJiZcbiAgICB0eXBlb2YgcHJvcHMuc2lnbmVyID09PSAnb2JqZWN0JyAmJlxuICAgIHByb3BzLnNpZ25lciAmJlxuICAgICdibG9ja2NoYWluJyBpbiBwcm9wcy5zaWduZXIgJiZcbiAgICAnd2FsbGV0JyBpbiBwcm9wcy5zaWduZXJcbiAgKSB7XG4gICAgY2hhaW4gPSBwcm9wcy5zaWduZXIuYmxvY2tjaGFpbiBhcyBDb2luZmxvd0Jsb2NrY2hhaW47XG4gICAgd2FsbGV0ID0gcHJvcHMuc2lnbmVyLndhbGxldCBhcyBXYWxsZXRUeXBlcztcbiAgfSBlbHNlIGlmICgnYmxvY2tjaGFpbicgaW4gcHJvcHMgJiYgcHJvcHMuYmxvY2tjaGFpbikge1xuICAgIGNoYWluID0gcHJvcHMuYmxvY2tjaGFpbjtcbiAgICB3YWxsZXQgPSBwcm9wcy53YWxsZXQ7XG4gIH1cblxuICBpZiAoIWNoYWluKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGhhbmRsZVNlbmRUcmFuc2FjdGlvbjogKCkgPT4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2hhbmRsZVNlbmRUcmFuc2FjdGlvbiBOb3QgSW1wbGVtZW50ZWQnKTtcbiAgICAgIH0sXG4gICAgICBoYW5kbGVTaWduTWVzc2FnZTogKCkgPT4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2hhbmRsZVNlbmRUcmFuc2FjdGlvbiBOb3QgSW1wbGVtZW50ZWQnKTtcbiAgICAgIH0sXG4gICAgICBoYW5kbGVTaWduVHJhbnNhY3Rpb246ICgpID0+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdoYW5kbGVTZW5kVHJhbnNhY3Rpb24gTm90IEltcGxlbWVudGVkJyk7XG4gICAgICB9LFxuICAgICAgb25TdWNjZXNzOiBwcm9wcy5vblN1Y2Nlc3MsXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBDb2luZmxvd1V0aWxzLmJ5QmxvY2tjaGFpbihjaGFpbiwge1xuICAgIHNvbGFuYTogKCkgPT5cbiAgICAgIGdldFNvbGFuYVdhbGxldEhhbmRsZXJzKHtcbiAgICAgICAgd2FsbGV0OiB3YWxsZXQgYXMgU29sYW5hV2FsbGV0LFxuICAgICAgICBvblN1Y2Nlc3M6IHByb3BzLm9uU3VjY2VzcyxcbiAgICAgIH0pLFxuICAgIG5lYXI6ICgpID0+XG4gICAgICBnZXROZWFyV2FsbGV0SGFuZGxlcnMoe1xuICAgICAgICB3YWxsZXQ6IHdhbGxldCBhcyBOZWFyV2FsbGV0LFxuICAgICAgICBvblN1Y2Nlc3M6IHByb3BzLm9uU3VjY2VzcyxcbiAgICAgIH0pLFxuICAgIGV0aDogKCkgPT5cbiAgICAgIGdldEV2bVdhbGxldEhhbmRsZXJzKHtcbiAgICAgICAgd2FsbGV0OiB3YWxsZXQgYXMgRXRoV2FsbGV0LFxuICAgICAgICBvblN1Y2Nlc3M6IHByb3BzLm9uU3VjY2VzcyxcbiAgICAgIH0pLFxuICAgIHBvbHlnb246ICgpID0+XG4gICAgICBnZXRFdm1XYWxsZXRIYW5kbGVycyh7XG4gICAgICAgIHdhbGxldDogd2FsbGV0IGFzIEV0aFdhbGxldCxcbiAgICAgICAgb25TdWNjZXNzOiBwcm9wcy5vblN1Y2Nlc3MsXG4gICAgICB9KSxcbiAgICBiYXNlOiAoKSA9PlxuICAgICAgZ2V0RXZtV2FsbGV0SGFuZGxlcnMoe1xuICAgICAgICB3YWxsZXQ6IHdhbGxldCBhcyBFdGhXYWxsZXQsXG4gICAgICAgIG9uU3VjY2VzczogcHJvcHMub25TdWNjZXNzLFxuICAgICAgfSksXG4gICAgYXJiaXRydW06ICgpID0+XG4gICAgICBnZXRFdm1XYWxsZXRIYW5kbGVycyh7XG4gICAgICAgIHdhbGxldDogd2FsbGV0IGFzIEV0aFdhbGxldCxcbiAgICAgICAgb25TdWNjZXNzOiBwcm9wcy5vblN1Y2Nlc3MsXG4gICAgICB9KSxcbiAgICB1c2VyOiAoKSA9PiBnZXRTZXNzaW9uS2V5SGFuZGxlcnMocHJvcHMpLFxuICB9KSgpO1xufVxuXG5mdW5jdGlvbiBnZXRTb2xhbmFXYWxsZXRIYW5kbGVycyh7XG4gIHdhbGxldCxcbiAgb25TdWNjZXNzLFxufToge1xuICB3YWxsZXQ6IFNvbGFuYVdhbGxldDtcbiAgb25TdWNjZXNzPzogT25TdWNjZXNzTWV0aG9kO1xufSk6IE9taXQ8SUZyYW1lTWVzc2FnZUhhbmRsZXJzLCAnaGFuZGxlSGVpZ2h0Q2hhbmdlJz4ge1xuICByZXR1cm4ge1xuICAgIGhhbmRsZVNlbmRUcmFuc2FjdGlvbjogYXN5bmMgKHRyYW5zYWN0aW9uOiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IHR4ID0gZ2V0U29sYW5hVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pO1xuICAgICAgcmV0dXJuIGF3YWl0IHdhbGxldC5zZW5kVHJhbnNhY3Rpb24odHgpO1xuICAgIH0sXG4gICAgaGFuZGxlU2lnbk1lc3NhZ2U6IGFzeW5jIChtZXNzYWdlOiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IHNpZ25NZXNzYWdlID0gd2FsbGV0LnNpZ25NZXNzYWdlO1xuICAgICAgaWYgKCFzaWduTWVzc2FnZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3NpZ25NZXNzYWdlIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyB3YWxsZXQnKTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgc2lnbmVkTWVzc2FnZSA9IGF3YWl0IHNpZ25NZXNzYWdlKFxuICAgICAgICBuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUobWVzc2FnZSlcbiAgICAgICk7XG4gICAgICBpZiAoIWJhc2U1OCkgdGhyb3cgbmV3IEVycm9yKCdiczU4IGRlcGVuZGVuY3kgaXMgcmVxdWlyZWQnKTtcbiAgICAgIHJldHVybiBiYXNlNTguZW5jb2RlKHNpZ25lZE1lc3NhZ2UpO1xuICAgIH0sXG4gICAgaGFuZGxlU2lnblRyYW5zYWN0aW9uOiBhc3luYyAodHJhbnNhY3Rpb246IHN0cmluZykgPT4ge1xuICAgICAgY29uc3Qgc2lnblRyYW5zYWN0aW9uID0gd2FsbGV0LnNpZ25UcmFuc2FjdGlvbjtcbiAgICAgIGlmICghc2lnblRyYW5zYWN0aW9uKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignc2lnblRyYW5zYWN0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyB3YWxsZXQnKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHR4ID0gZ2V0U29sYW5hVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pO1xuICAgICAgY29uc3Qgc2lnbmVkVHJhbnNhY3Rpb24gPSBhd2FpdCBzaWduVHJhbnNhY3Rpb24odHgpO1xuICAgICAgaWYgKCFiYXNlNTgpIHRocm93IG5ldyBFcnJvcignYnM1OCBkZXBlbmRlbmN5IGlzIHJlcXVpcmVkJyk7XG4gICAgICByZXR1cm4gYmFzZTU4LmVuY29kZShcbiAgICAgICAgc2lnbmVkVHJhbnNhY3Rpb24uc2VyaWFsaXplKHtcbiAgICAgICAgICByZXF1aXJlQWxsU2lnbmF0dXJlczogZmFsc2UsXG4gICAgICAgICAgdmVyaWZ5U2lnbmF0dXJlczogZmFsc2UsXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH0sXG4gICAgb25TdWNjZXNzLFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRTb2xhbmFUcmFuc2FjdGlvbihcbiAgZGF0YTogc3RyaW5nXG4pOiBUcmFuc2FjdGlvbiB8IFZlcnNpb25lZFRyYW5zYWN0aW9uIHtcbiAgaWYgKCF3ZWIzKVxuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdAc29sYW5hL3dlYjMuanMgaXMgbm90IGRlZmluZWQuIFBsZWFzZSBpbnN0YWxsIEBzb2xhbmEvd2ViMy5qcyBpbnRvIHlvdXIgcHJvamVjdCdcbiAgICApO1xuXG4gIGlmICghYmFzZTU4KVxuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdiczU4IGlzIG5vdCBkZWZpbmVkLiBQbGVhc2UgaW5zdGFsbCBiczU4IGludG8geW91ciBwcm9qZWN0J1xuICAgICk7XG5cbiAgY29uc3QgcGFyc2VkVUludDhBcnJheSA9IGJhc2U1OC5kZWNvZGUoZGF0YSk7XG4gIGNvbnN0IHZ0eCA9IHdlYjMuVmVyc2lvbmVkVHJhbnNhY3Rpb24uZGVzZXJpYWxpemUocGFyc2VkVUludDhBcnJheSk7XG4gIGlmICh2dHgudmVyc2lvbiA9PT0gJ2xlZ2FjeScpIHJldHVybiB3ZWIzLlRyYW5zYWN0aW9uLmZyb20ocGFyc2VkVUludDhBcnJheSk7XG4gIHJldHVybiB2dHg7XG59XG5cbmZ1bmN0aW9uIGdldE5lYXJXYWxsZXRIYW5kbGVycyh7XG4gIHdhbGxldCxcbiAgb25TdWNjZXNzLFxufToge1xuICB3YWxsZXQ6IE5lYXJXYWxsZXQ7XG4gIG9uU3VjY2Vzcz86IE9uU3VjY2Vzc01ldGhvZDtcbn0pOiBPbWl0PElGcmFtZU1lc3NhZ2VIYW5kbGVycywgJ2hhbmRsZUhlaWdodENoYW5nZSc+IHtcbiAgcmV0dXJuIHtcbiAgICBoYW5kbGVTZW5kVHJhbnNhY3Rpb246IGFzeW5jICh0cmFuc2FjdGlvbjogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCBhY3Rpb24gPSBKU09OLnBhcnNlKEJ1ZmZlci5mcm9tKHRyYW5zYWN0aW9uLCAnYmFzZTY0JykudG9TdHJpbmcoKSk7XG4gICAgICBjb25zdCBleGVjdXRpb25PdXRjb21lID0gYXdhaXQgd2FsbGV0LnNpZ25BbmRTZW5kVHJhbnNhY3Rpb24oYWN0aW9uKTtcbiAgICAgIGlmICghZXhlY3V0aW9uT3V0Y29tZSkgdGhyb3cgbmV3IEVycm9yKCdUcmFuc2FjdGlvbiBkaWQgbm90IHNlbmQnKTtcbiAgICAgIGNvbnN0IHt0cmFuc2FjdGlvbjogdHJhbnNhY3Rpb25SZXN1bHR9ID0gZXhlY3V0aW9uT3V0Y29tZTtcbiAgICAgIHJldHVybiB0cmFuc2FjdGlvblJlc3VsdC5oYXNoO1xuICAgIH0sXG4gICAgb25TdWNjZXNzLFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRFdm1XYWxsZXRIYW5kbGVycyh7XG4gIHdhbGxldCxcbiAgb25TdWNjZXNzLFxufToge1xuICB3YWxsZXQ6IEV0aFdhbGxldDtcbiAgb25TdWNjZXNzPzogT25TdWNjZXNzTWV0aG9kO1xufSk6IE9taXQ8SUZyYW1lTWVzc2FnZUhhbmRsZXJzLCAnaGFuZGxlSGVpZ2h0Q2hhbmdlJz4ge1xuICByZXR1cm4ge1xuICAgIGhhbmRsZVNlbmRUcmFuc2FjdGlvbjogYXN5bmMgKHRyYW5zYWN0aW9uOiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IHR4ID0gSlNPTi5wYXJzZShCdWZmZXIuZnJvbSh0cmFuc2FjdGlvbiwgJ2Jhc2U2NCcpLnRvU3RyaW5nKCkpO1xuICAgICAgY29uc3Qge2hhc2h9ID0gYXdhaXQgd2FsbGV0LnNlbmRUcmFuc2FjdGlvbih0eCk7XG4gICAgICByZXR1cm4gaGFzaDtcbiAgICB9LFxuICAgIGhhbmRsZVNpZ25NZXNzYWdlOiBhc3luYyAobWVzc2FnZTogc3RyaW5nKSA9PiB7XG4gICAgICByZXR1cm4gd2FsbGV0LnNpZ25NZXNzYWdlKG1lc3NhZ2UpO1xuICAgIH0sXG4gICAgb25TdWNjZXNzLFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRTZXNzaW9uS2V5SGFuZGxlcnMoe1xuICBvblN1Y2Nlc3MsXG59OiBQaWNrPENvaW5mbG93UHVyY2hhc2VQcm9wcywgJ29uU3VjY2Vzcyc+KTogT21pdDxcbiAgSUZyYW1lTWVzc2FnZUhhbmRsZXJzLFxuICAnaGFuZGxlSGVpZ2h0Q2hhbmdlJ1xuPiB7XG4gIHJldHVybiB7XG4gICAgaGFuZGxlU2VuZFRyYW5zYWN0aW9uOiBhc3luYyAoKSA9PiB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCcnKTtcbiAgICB9LFxuICAgIG9uU3VjY2VzcyxcbiAgfTtcbn1cbiJdfQ==
@@ -1,26 +0,0 @@
1
- export var SettlementType;
2
- (function (SettlementType) {
3
- SettlementType["Credits"] = "Credits";
4
- SettlementType["USDC"] = "USDC";
5
- SettlementType["Bank"] = "Bank";
6
- })(SettlementType || (SettlementType = {}));
7
- export var MerchantStyle;
8
- (function (MerchantStyle) {
9
- MerchantStyle["Rounded"] = "rounded";
10
- MerchantStyle["Sharp"] = "sharp";
11
- MerchantStyle["Pill"] = "pill";
12
- })(MerchantStyle || (MerchantStyle = {}));
13
- export var ThreeDsChallengePreference;
14
- (function (ThreeDsChallengePreference) {
15
- ThreeDsChallengePreference["NoPreference"] = "NoPreference";
16
- ThreeDsChallengePreference["Frictionless"] = "Frictionless";
17
- ThreeDsChallengePreference["Challenge"] = "Challenge";
18
- })(ThreeDsChallengePreference || (ThreeDsChallengePreference = {}));
19
- export var CardType;
20
- (function (CardType) {
21
- CardType["VISA"] = "VISA";
22
- CardType["MASTERCARD"] = "MSTR";
23
- CardType["AMEX"] = "AMEX";
24
- CardType["DISCOVER"] = "DISC";
25
- })(CardType || (CardType = {}));
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29pbmZsb3dUeXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvaW5mbG93bGFicy9zcmMvbGliL2NvbW1vbi9Db2luZmxvd1R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVNBLE1BQU0sQ0FBTixJQUFZLGNBSVg7QUFKRCxXQUFZLGNBQWM7SUFDeEIscUNBQW1CLENBQUE7SUFDbkIsK0JBQWEsQ0FBQTtJQUNiLCtCQUFhLENBQUE7QUFDZixDQUFDLEVBSlcsY0FBYyxLQUFkLGNBQWMsUUFJekI7QUFFRCxNQUFNLENBQU4sSUFBWSxhQUlYO0FBSkQsV0FBWSxhQUFhO0lBQ3ZCLG9DQUFtQixDQUFBO0lBQ25CLGdDQUFlLENBQUE7SUFDZiw4QkFBYSxDQUFBO0FBQ2YsQ0FBQyxFQUpXLGFBQWEsS0FBYixhQUFhLFFBSXhCO0FBK05ELE1BQU0sQ0FBTixJQUFZLDBCQUlYO0FBSkQsV0FBWSwwQkFBMEI7SUFDcEMsMkRBQTZCLENBQUE7SUFDN0IsMkRBQTZCLENBQUE7SUFDN0IscURBQXVCLENBQUE7QUFDekIsQ0FBQyxFQUpXLDBCQUEwQixLQUExQiwwQkFBMEIsUUFJckM7QUF1U0QsTUFBTSxDQUFOLElBQVksUUFLWDtBQUxELFdBQVksUUFBUTtJQUNsQix5QkFBYSxDQUFBO0lBQ2IsK0JBQW1CLENBQUE7SUFDbkIseUJBQWEsQ0FBQTtJQUNiLDZCQUFpQixDQUFBO0FBQ25CLENBQUMsRUFMVyxRQUFRLEtBQVIsUUFBUSxRQUtuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtcbiAgQ29ubmVjdGlvbixcbiAgVmVyc2lvbmVkVHJhbnNhY3Rpb24sXG4gIFB1YmxpY0tleSxcbiAgU2lnbmVyLFxuICBUcmFuc2FjdGlvbixcbn0gZnJvbSAnQHNvbGFuYS93ZWIzLmpzJztcbmltcG9ydCB7U3VidG90YWx9IGZyb20gJy4vU3VidG90YWwnO1xuXG5leHBvcnQgZW51bSBTZXR0bGVtZW50VHlwZSB7XG4gIENyZWRpdHMgPSAnQ3JlZGl0cycsXG4gIFVTREMgPSAnVVNEQycsXG4gIEJhbmsgPSAnQmFuaycsXG59XG5cbmV4cG9ydCBlbnVtIE1lcmNoYW50U3R5bGUge1xuICBSb3VuZGVkID0gJ3JvdW5kZWQnLFxuICBTaGFycCA9ICdzaGFycCcsXG4gIFBpbGwgPSAncGlsbCcsXG59XG5cbmV4cG9ydCB0eXBlIE1lcmNoYW50VGhlbWUgPSB7XG4gIHByaW1hcnk/OiBzdHJpbmc7XG4gIGJhY2tncm91bmQ/OiBzdHJpbmc7XG4gIGJhY2tncm91bmRBY2NlbnQ/OiBzdHJpbmc7XG4gIGJhY2tncm91bmRBY2NlbnQyPzogc3RyaW5nO1xuICB0ZXh0Q29sb3I/OiBzdHJpbmc7XG4gIHRleHRDb2xvckFjY2VudD86IHN0cmluZztcbiAgdGV4dENvbG9yQWN0aW9uPzogc3RyaW5nO1xuICBmb250Pzogc3RyaW5nO1xuICBzdHlsZT86IE1lcmNoYW50U3R5bGU7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIEN1c3RvbWVySW5mbyB7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIHZlcmlmaWNhdGlvbklkPzogc3RyaW5nO1xuICBkaXNwbGF5TmFtZT86IHN0cmluZztcbiAgYWRkcmVzcz86IHN0cmluZztcbiAgY2l0eT86IHN0cmluZztcbiAgc3RhdGU/OiBzdHJpbmc7XG4gIHppcD86IHN0cmluZztcbiAgY291bnRyeT86IHN0cmluZztcbiAgaXA/OiBzdHJpbmc7XG4gIGxhdD86IHN0cmluZztcbiAgbG5nPzogc3RyaW5nO1xufVxuXG4vKiogQ29pbmZsb3cgVHlwZXMgKiovXG5leHBvcnQgdHlwZSBDb2luZmxvd0Jsb2NrY2hhaW4gPVxuICB8ICdzb2xhbmEnXG4gIHwgJ25lYXInXG4gIHwgJ2V0aCdcbiAgfCAncG9seWdvbidcbiAgfCAnYmFzZSdcbiAgfCAnYXJiaXRydW0nXG4gIHwgJ3VzZXInO1xuZXhwb3J0IHR5cGUgQ29pbmZsb3dFbnZzID1cbiAgfCAncHJvZCdcbiAgfCAnc3RhZ2luZydcbiAgfCAnc3RhZ2luZy1saXZlJ1xuICB8ICdzYW5kYm94J1xuICB8ICdsb2NhbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29pbmZsb3dUeXBlcyB7XG4gIG1lcmNoYW50SWQ6IHN0cmluZztcbiAgZW52PzogQ29pbmZsb3dFbnZzO1xuICBsb2FkZXJCYWNrZ3JvdW5kPzogc3RyaW5nO1xuICBibG9ja2NoYWluPzogQ29pbmZsb3dCbG9ja2NoYWluIHwgdW5kZWZpbmVkO1xuICBoYW5kbGVIZWlnaHRDaGFuZ2U/OiAoaGVpZ2h0OiBzdHJpbmcpID0+IHZvaWQ7XG4gIHRoZW1lPzogTWVyY2hhbnRUaGVtZTtcbn1cblxuZXhwb3J0IHR5cGUgUGFydGlhbEJ5PFQsIEsgZXh0ZW5kcyBrZXlvZiBUPiA9IE9taXQ8VCwgSz4gJiBQYXJ0aWFsPFBpY2s8VCwgSz4+O1xuXG5leHBvcnQgdHlwZSBPblN1Y2Nlc3NNZXRob2QgPSAoXG4gIGFyZ3M6XG4gICAgfCB7XG4gICAgICAgIHBheW1lbnRJZDogc3RyaW5nO1xuICAgICAgICBoYXNoPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgfVxuICAgIHwgc3RyaW5nXG4pID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+O1xuXG4vKiogV2FsbGV0cyAqKi9cbmV4cG9ydCBpbnRlcmZhY2UgU29sYW5hV2FsbGV0IHtcbiAgcHVibGljS2V5OiBQdWJsaWNLZXkgfCBudWxsO1xuICBzaWduVHJhbnNhY3Rpb24/OiA8VCBleHRlbmRzIFRyYW5zYWN0aW9uIHwgVmVyc2lvbmVkVHJhbnNhY3Rpb24+KFxuICAgIHRyYW5zYWN0aW9uOiBUXG4gICkgPT4gUHJvbWlzZTxUPjtcbiAgc2VuZFRyYW5zYWN0aW9uOiA8VCBleHRlbmRzIFRyYW5zYWN0aW9uIHwgVmVyc2lvbmVkVHJhbnNhY3Rpb24+KFxuICAgIHRyYW5zYWN0aW9uOiBUXG4gICkgPT4gUHJvbWlzZTxzdHJpbmc+O1xuICBzaWduTWVzc2FnZT86IChtZXNzYWdlOiBVaW50OEFycmF5KSA9PiBQcm9taXNlPFVpbnQ4QXJyYXk+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5lYXJXYWxsZXQge1xuICBhY2NvdW50SWQ6IHN0cmluZztcbiAgc2lnbkFuZFNlbmRUcmFuc2FjdGlvbjogKHRyYW5zYWN0aW9uOiB1bmtub3duKSA9PiBQcm9taXNlPHtcbiAgICB0cmFuc2FjdGlvbjoge2hhc2g6IHN0cmluZ307XG4gIH0+O1xufVxuXG50eXBlIEFjY2Vzc0xpc3QgPSBBcnJheTx7YWRkcmVzczogc3RyaW5nOyBzdG9yYWdlS2V5czogQXJyYXk8c3RyaW5nPn0+O1xudHlwZSBBY2Nlc3NMaXN0aXNoID1cbiAgfCBBY2Nlc3NMaXN0XG4gIHwgQXJyYXk8W3N0cmluZywgQXJyYXk8c3RyaW5nPl0+XG4gIHwgUmVjb3JkPHN0cmluZywgQXJyYXk8c3RyaW5nPj47XG5cbmV4cG9ydCB0eXBlIEV0aFdhbGxldCA9IHtcbiAgYWRkcmVzczogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgc2VuZFRyYW5zYWN0aW9uOiAodHJhbnNhY3Rpb246IHtcbiAgICB0bzogc3RyaW5nO1xuICAgIGZyb20/OiBzdHJpbmc7XG4gICAgbm9uY2U/OiBCeXRlcyB8IGJpZ2ludCB8IHN0cmluZyB8IG51bWJlcjtcblxuICAgIGdhc0xpbWl0PzogQnl0ZXMgfCBiaWdpbnQgfCBzdHJpbmcgfCBudW1iZXI7XG4gICAgZ2FzUHJpY2U/OiBCeXRlcyB8IGJpZ2ludCB8IHN0cmluZyB8IG51bWJlcjtcblxuICAgIGRhdGE/OiBCeXRlc0xpa2U7XG4gICAgdmFsdWU/OiBCeXRlcyB8IGJpZ2ludCB8IHN0cmluZyB8IG51bWJlcjtcbiAgICBjaGFpbklkPzogbnVtYmVyO1xuXG4gICAgdHlwZT86IG51bWJlcjtcbiAgICBhY2Nlc3NMaXN0PzogQWNjZXNzTGlzdGlzaDtcblxuICAgIG1heFByaW9yaXR5RmVlUGVyR2FzPzogQnl0ZXMgfCBiaWdpbnQgfCBzdHJpbmcgfCBudW1iZXI7XG4gICAgbWF4RmVlUGVyR2FzPzogQnl0ZXMgfCBiaWdpbnQgfCBzdHJpbmcgfCBudW1iZXI7XG5cbiAgICBjdXN0b21EYXRhPzogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgICBjY2lwUmVhZEVuYWJsZWQ/OiBib29sZWFuO1xuICB9KSA9PiBQcm9taXNlPHtoYXNoOiBzdHJpbmd9PjtcbiAgc2lnbk1lc3NhZ2U6IChtZXNzYWdlOiBzdHJpbmcpID0+IFByb21pc2U8c3RyaW5nPjtcbn07XG5cbi8qKiBIaXN0b3J5ICoqL1xuZXhwb3J0IGludGVyZmFjZSBDb2luZmxvd1NvbGFuYUhpc3RvcnlQcm9wcyBleHRlbmRzIENvaW5mbG93VHlwZXMge1xuICB3YWxsZXQ6IFNvbGFuYVdhbGxldDtcbiAgY29ubmVjdGlvbjogQ29ubmVjdGlvbjtcbiAgYmxvY2tjaGFpbjogJ3NvbGFuYSc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29pbmZsb3dTZXNzaW9uS2V5SGlzdG9yeVByb3BzIGV4dGVuZHMgQ29pbmZsb3dUeXBlcyB7XG4gIHNlc3Npb25LZXk6IHN0cmluZztcbiAgYmxvY2tjaGFpbj86IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb2luZmxvd05lYXJIaXN0b3J5UHJvcHMgZXh0ZW5kcyBDb2luZmxvd1R5cGVzIHtcbiAgd2FsbGV0OiBOZWFyV2FsbGV0O1xuICBibG9ja2NoYWluOiAnbmVhcic7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29pbmZsb3dFdm1IaXN0b3J5UHJvcHMgZXh0ZW5kcyBDb2luZmxvd1R5cGVzIHtcbiAgd2FsbGV0OiBFdGhXYWxsZXQ7XG4gIGJsb2NrY2hhaW46ICdldGgnIHwgJ3BvbHlnb24nIHwgJ2Jhc2UnIHwgJ2FyYml0cnVtJztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb2luZmxvd0V0aEhpc3RvcnlQcm9wcyBleHRlbmRzIENvaW5mbG93RXZtSGlzdG9yeVByb3BzIHtcbiAgYmxvY2tjaGFpbjogJ2V0aCc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29pbmZsb3dQb2x5Z29uSGlzdG9yeVByb3BzIGV4dGVuZHMgQ29pbmZsb3dFdm1IaXN0b3J5UHJvcHMge1xuICBibG9ja2NoYWluOiAncG9seWdvbic7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29pbmZsb3dCYXNlSGlzdG9yeVByb3BzIGV4dGVuZHMgQ29pbmZsb3dFdm1IaXN0b3J5UHJvcHMge1xuICBibG9ja2NoYWluOiAnYmFzZSc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29pbmZsb3dBcmJpdHJ1bUhpc3RvcnlQcm9wcyBleHRlbmRzIENvaW5mbG93RXZtSGlzdG9yeVByb3BzIHtcbiAgYmxvY2tjaGFpbjogJ2FyYml0cnVtJztcbn1cblxuZXhwb3J0IHR5cGUgQ29pbmZsb3dIaXN0b3J5UHJvcHMgPVxuICB8IENvaW5mbG93U29sYW5hSGlzdG9yeVByb3BzXG4gIHwgQ29pbmZsb3dOZWFySGlzdG9yeVByb3BzXG4gIHwgQ29pbmZsb3dQb2x5Z29uSGlzdG9yeVByb3BzXG4gIHwgQ29pbmZsb3dFdGhIaXN0b3J5UHJvcHNcbiAgfCBDb2luZmxvd0Jhc2VIaXN0b3J5UHJvcHNcbiAgfCBDb2luZmxvd0FyYml0cnVtSGlzdG9yeVByb3BzXG4gIHwgQ29pbmZsb3dTZXNzaW9uS2V5SGlzdG9yeVByb3BzO1xuXG4vKiogVHJhbnNhY3Rpb25zICoqL1xuXG5leHBvcnQgdHlwZSBOZWFyRnRUcmFuc2ZlckNhbGxBY3Rpb24gPSB7XG4gIG1ldGhvZE5hbWU6ICdmdF90cmFuc2Zlcl9jYWxsJztcbiAgYXJnczogb2JqZWN0O1xuICBnYXM6IHN0cmluZztcbiAgZGVwb3NpdDogc3RyaW5nO1xufTtcblxudHlwZSBCeXRlcyA9IEFycmF5TGlrZTxudW1iZXI+O1xudHlwZSBCeXRlc0xpa2UgPSBCeXRlcyB8IHN0cmluZztcblxudHlwZSBSYXdQcm9kdWN0RGF0YSA9IGFueTtcblxuLyoqIFB1cmNoYXNlICoqL1xuXG5leHBvcnQgdHlwZSBDaGFyZ2ViYWNrUHJvdGVjdGlvbkRhdGEgPSBDaGFyZ2ViYWNrUHJvdGVjdGlvbkl0ZW1bXTtcblxuZXhwb3J0IGludGVyZmFjZSBDaGFyZ2ViYWNrUHJvdGVjdGlvbkl0ZW0ge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHByb2R1Y3RcbiAgICovXG4gIHByb2R1Y3ROYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgcHJvZHVjdCB0eXBlLiBQb3NzaWJsZSB2YWx1ZXMgaW5jbHVkZTogaW5HYW1lUHJvZHVjdCwgZ2FtZU9mU2tpbGwsIGRhdGFTdG9yYWdlLCBjb21wdXRpbmdSZXNvdXJjZXMsIHNwb3J0c1RpY2tldCwgZVNwb3J0c1RpY2tldCwgbXVzaWNUaWNrZXQsIGNvbmZlcmVuY2VUaWNrZXQsIHZpcnR1YWxTcG9ydHNUaWNrZXQsIHZpcnR1YWxFU3BvcnRzVGlja2V0LCB2aXJ0dWFsTXVzaWNUaWNrZXQsIHZpcnR1YWxDb25mZXJlbmNlVGlja2V0LCBhbGNvaG9sLCBETEMsIHN1YnNjcmlwdGlvbiwgZnVuZEFDYXVzZSwgcmVhbEVzdGF0ZSwgY29tcHV0aW5nQ29udHJhY3QsIGRpZ2l0YWxBcnQsIHRvcFVwXG4gICAqL1xuICBwcm9kdWN0VHlwZTpcbiAgICB8ICdpbkdhbWVQcm9kdWN0J1xuICAgIHwgJ2dhbWVPZlNraWxsJ1xuICAgIHwgJ2RhdGFTdG9yYWdlJ1xuICAgIHwgJ2NvbXB1dGluZ1Jlc291cmNlcydcbiAgICB8ICdzcG9ydHNUaWNrZXQnXG4gICAgfCAnZVNwb3J0c1RpY2tldCdcbiAgICB8ICdtdXNpY1RpY2tldCdcbiAgICB8ICdjb25mZXJlbmNlVGlja2V0J1xuICAgIHwgJ3ZpcnR1YWxTcG9ydHNUaWNrZXQnXG4gICAgfCAndmlydHVhbEVTcG9ydHNUaWNrZXQnXG4gICAgfCAndmlydHVhbE11c2ljVGlja2V0J1xuICAgIHwgJ3ZpcnR1YWxDb25mZXJlbmNlVGlja2V0J1xuICAgIHwgJ2FsY29ob2wnXG4gICAgfCAnRExDJ1xuICAgIHwgJ3N1YnNjcmlwdGlvbidcbiAgICB8ICdmdW5kQUNhdXNlJ1xuICAgIHwgJ3JlYWxFc3RhdGUnXG4gICAgfCAnY29tcHV0aW5nQ29udHJhY3QnXG4gICAgfCAnZGlnaXRhbEFydCdcbiAgICB8ICd0b3BVcCdcbiAgICB8ICdvd25lcnNoaXBDb250cmFjdCc7XG4gIC8qKlxuICAgKiBUaGUgaXRlbSdzIGxpc3QgcHJpY2VcbiAgICovXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIHVuaXRzIHNvbGRcbiAgICovXG4gIHF1YW50aXR5OiBudW1iZXI7XG4gIC8qKlxuICAgKiBBbnkgYWRkaXRpb25hbCBkYXRhIHRoYXQgdGhlIHN0b3JlIGNhbiBwcm92aWRlIG9uIHRoZSBwcm9kdWN0LCBlLmcuIGRlc2NyaXB0aW9uLCBsaW5rIHRvIGltYWdlLCBldGMuXG4gICAqL1xuICByYXdQcm9kdWN0RGF0YT86IFJhd1Byb2R1Y3REYXRhO1xufVxuXG5leHBvcnQgZW51bSBUaHJlZURzQ2hhbGxlbmdlUHJlZmVyZW5jZSB7XG4gIE5vUHJlZmVyZW5jZSA9ICdOb1ByZWZlcmVuY2UnLFxuICBGcmljdGlvbmxlc3MgPSAnRnJpY3Rpb25sZXNzJyxcbiAgQ2hhbGxlbmdlID0gJ0NoYWxsZW5nZScsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29pbmZsb3dDb21tb25QdXJjaGFzZVByb3BzIGV4dGVuZHMgQ29pbmZsb3dUeXBlcyB7XG4gIHN1YnRvdGFsPzogU3VidG90YWw7XG4gIG9uU3VjY2Vzcz86IE9uU3VjY2Vzc01ldGhvZDtcbiAgd2ViaG9va0luZm8/OiB7XG4gICAgW2tleTogc3RyaW5nXTogYW55O1xuICB9O1xuICBlbWFpbD86IHN0cmluZztcbiAgY2hhcmdlYmFja1Byb3RlY3Rpb25EYXRhPzogQ2hhcmdlYmFja1Byb3RlY3Rpb25EYXRhO1xuICBwbGFuQ29kZT86IHN0cmluZztcbiAgZGlzYWJsZUFwcGxlUGF5PzogYm9vbGVhbjtcbiAgZGlzYWJsZUdvb2dsZVBheT86IGJvb2xlYW47XG4gIGN1c3RvbWVySW5mbz86IEN1c3RvbWVySW5mbztcbiAgc2V0dGxlbWVudFR5cGU/OiBTZXR0bGVtZW50VHlwZTtcbiAgYXV0aE9ubHk/OiBib29sZWFuO1xuICAvKipcbiAgICogVGhlIERldmljZUlEIGdvdHRlbiBmcm9tIHRoZSBDb2luZmxvdyBTREs6XG4gICAqICBodHRwczovL2RvY3MuY29pbmZsb3cuY2FzaC9kb2NzL2ltcGxlbWVudC1jaGFyZ2ViYWNrLXByb3RlY3Rpb24jaG93LXRvLWFkZC1jaGFyZ2ViYWNrLXByb3RlY3Rpb25cbiAgICpcbiAgICogd2luZG93Py5uU3VyZVNESz8uZ2V0RGV2aWNlSWQoKVxuICAgKi9cbiAgZGV2aWNlSWQ/OiBzdHJpbmc7XG4gIGp3dFRva2VuPzogc3RyaW5nO1xuICAvKipcbiAgICogWW91ciBjb21wYW55IGVtYWlsIGFkZHJlc3MgdGhhdCB0aGUgY3VzdG9tZXIgY2FuIGNvbnRhY3QuXG4gICAqL1xuICBzdXBwb3J0RW1haWw/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBJZiByZW5kZXJpbmcgdGhlIENvaW5mbG93IGNvbXBvbmVudCB3aXRoaW4gbXVsdGlwbGUgbmVzdGVkIGlmcmFtZXMsIGFsbCBhbmNlc3RvcnMgaW4gdGhlIGNoYWluIG11c3QgYmUgcHJvdmlkZWQgYXMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdC5cbiAgICpcbiAgICogRXhhbXBsZTpcbiAgICogUHJpbWFyeSBvcmlnaW4gdGhhdCB3aWxsIGJlIGludGVyYWN0aW5nIHdpdGggdGhlIENvaW5mbG93IGlGcmFtZTogZm9vLmNvbVxuICAgKiBTdWJzZXF1ZW50IG9yaWdpbnMgdGhhdCB3aWxsIHJlbmRlciBmb28uY29tOiBiYXIuY29tXG4gICAqIFRoZSBvcmlnaW4gYXJyYXkgd291bGQgdGhlbiBiZTogW2h0dHBzOi8vZm9vLmNvbSxodHRwczovL2Jhci5jb21dXG4gICAqL1xuICBvcmlnaW5zPzogc3RyaW5nW107XG4gIHRocmVlRHNDaGFsbGVuZ2VQcmVmZXJlbmNlPzogVGhyZWVEc0NoYWxsZW5nZVByZWZlcmVuY2U7XG4gIGRlc3RpbmF0aW9uQXV0aEtleT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb2luZmxvd1NvbGFuYVB1cmNoYXNlUHJvcHNcbiAgZXh0ZW5kcyBDb2luZmxvd0NvbW1vblB1cmNoYXNlUHJvcHMge1xuICB3YWxsZXQ6IFNvbGFuYVdhbGxldDtcbiAgdHJhbnNhY3Rpb24/OiBUcmFuc2FjdGlvbiB8IFZlcnNpb25lZFRyYW5zYWN0aW9uO1xuICBwYXJ0aWFsU2lnbmVycz86IFNpZ25lcltdO1xuICBkZWJ1Z1R4PzogYm9vbGVhbjtcbiAgY29ubmVjdGlvbjogQ29ubmVjdGlvbjtcbiAgYmxvY2tjaGFpbjogJ3NvbGFuYSc7XG4gIHJlbnQ/OiB7bGFtcG9ydHM6IHN0cmluZyB8IG51bWJlcn07XG4gIG5hdGl2ZVNvbFRvQ29udmVydD86IHtsYW1wb3J0czogc3RyaW5nIHwgbnVtYmVyfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb2luZmxvd1Nlc3Npb25LZXlQdXJjaGFzZVByb3BzXG4gIGV4dGVuZHMgQ29pbmZsb3dDb21tb25QdXJjaGFzZVByb3BzIHtcbiAgc2Vzc2lvbktleTogc3RyaW5nO1xuICB3YWxsZXQ/OiB1bmRlZmluZWQ7XG4gIGJsb2NrY2hhaW4/OiBDb2luZmxvd0Jsb2NrY2hhaW4gfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29pbmZsb3dOZWFyUHVyY2hhc2VQcm9wcyBleHRlbmRzIENvaW5mbG93Q29tbW9uUHVyY2hhc2VQcm9wcyB7XG4gIHdhbGxldDogTmVhcldhbGxldDtcbiAgYmxvY2tjaGFpbjogJ25lYXInO1xuICBhY3Rpb24/OiBOZWFyRnRUcmFuc2ZlckNhbGxBY3Rpb247XG4gIG5lYXJEZXBvc2l0Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvaW5mbG93RXZtUHVyY2hhc2VQcm9wcyBleHRlbmRzIENvaW5mbG93Q29tbW9uUHVyY2hhc2VQcm9wcyB7XG4gIHRyYW5zYWN0aW9uPzogRXZtVHJhbnNhY3Rpb25EYXRhO1xuICB3YWxsZXQ6IEV0aFdhbGxldDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb2luZmxvd1BvbHlnb25QdXJjaGFzZVByb3BzIGV4dGVuZHMgQ29pbmZsb3dFdm1QdXJjaGFzZVByb3BzIHtcbiAgYmxvY2tjaGFpbjogJ3BvbHlnb24nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvaW5mbG93RXRoUHVyY2hhc2VQcm9wcyBleHRlbmRzIENvaW5mbG93RXZtUHVyY2hhc2VQcm9wcyB7XG4gIGJsb2NrY2hhaW46ICdldGgnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvaW5mbG93QmFzZVB1cmNoYXNlUHJvcHMgZXh0ZW5kcyBDb2luZmxvd0V2bVB1cmNoYXNlUHJvcHMge1xuICBibG9ja2NoYWluOiAnYmFzZSc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29pbmZsb3dBcmJpdHJ1bVB1cmNoYXNlUHJvcHNcbiAgZXh0ZW5kcyBDb2luZmxvd0V2bVB1cmNoYXNlUHJvcHMge1xuICBibG9ja2NoYWluOiAnYXJiaXRydW0nO1xufVxuXG5leHBvcnQgdHlwZSBDb2luZmxvd1B1cmNoYXNlUHJvcHMgPVxuICB8IENvaW5mbG93U29sYW5hUHVyY2hhc2VQcm9wc1xuICB8IENvaW5mbG93U2Vzc2lvbktleVB1cmNoYXNlUHJvcHNcbiAgfCBDb2luZmxvd05lYXJQdXJjaGFzZVByb3BzXG4gIHwgQ29pbmZsb3dQb2x5Z29uUHVyY2hhc2VQcm9wc1xuICB8IENvaW5mbG93RXRoUHVyY2hhc2VQcm9wc1xuICB8IENvaW5mbG93QmFzZVB1cmNoYXNlUHJvcHNcbiAgfCBDb2luZmxvd0FyYml0cnVtUHVyY2hhc2VQcm9wcztcblxuLyoqIFdpdGhkcmF3ICoqL1xuXG5leHBvcnQgaW50ZXJmYWNlIENvaW5mbG93Q29tbW9uV2l0aGRyYXdQcm9wcyBleHRlbmRzIENvaW5mbG93VHlwZXMge1xuICBvblN1Y2Nlc3M/OiBPblN1Y2Nlc3NNZXRob2Q7XG4gIHRva2Vucz86IHN0cmluZ1tdO1xuICBsb2NrRGVmYXVsdFRva2VuPzogYm9vbGVhbjtcbiAgYW1vdW50PzogbnVtYmVyO1xuICBlbWFpbD86IHN0cmluZztcbiAgYmFua0FjY291bnRMaW5rUmVkaXJlY3Q/OiBzdHJpbmc7XG4gIGFkZGl0aW9uYWxXYWxsZXRzPzoge1xuICAgIHdhbGxldDogc3RyaW5nO1xuICAgIGJsb2NrY2hhaW46ICdzb2xhbmEnIHwgJ2V0aCcgfCAnbmVhcicgfCAncG9seWdvbicgfCAnYmFzZScgfCAnYXJiaXRydW0nO1xuICB9W107XG4gIGxvY2tBbW91bnQ/OiBib29sZWFuO1xuICB0cmFuc2FjdGlvblNpZ25lcj86IHN0cmluZztcbiAgLyoqXG4gICAqIElmIHJlbmRlcmluZyB0aGUgQ29pbmZsb3cgY29tcG9uZW50IHdpdGhpbiBtdWx0aXBsZSBuZXN0ZWQgaWZyYW1lcywgYWxsIGFuY2VzdG9ycyBpbiB0aGUgY2hhaW4gbXVzdCBiZSBwcm92aWRlZCBhcyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0LlxuICAgKlxuICAgKiBFeGFtcGxlOlxuICAgKiBQcmltYXJ5IG9yaWdpbiB0aGF0IHdpbGwgYmUgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgQ29pbmZsb3cgaUZyYW1lOiBmb28uY29tXG4gICAqIFN1YnNlcXVlbnQgb3JpZ2lucyB0aGF0IHdpbGwgcmVuZGVyIGZvby5jb206IGJhci5jb21cbiAgICogVGhlIG9yaWdpbiBhcnJheSB3b3VsZCB0aGVuIGJlOiBbaHR0cHM6Ly9mb28uY29tLGh0dHBzOi8vYmFyLmNvbV1cbiAgICovXG4gIG9yaWdpbnM/OiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IHR5cGUgV2FsbGV0VHlwZXMgPSBTb2xhbmFXYWxsZXQgfCBOZWFyV2FsbGV0IHwgRXRoV2FsbGV0O1xuXG5leHBvcnQgaW50ZXJmYWNlIFNvbGFuYVdhbGxldFByb3BzIHtcbiAgd2FsbGV0OiBTb2xhbmFXYWxsZXQ7XG4gIGNvbm5lY3Rpb246IENvbm5lY3Rpb247XG4gIGJsb2NrY2hhaW46ICdzb2xhbmEnO1xufVxuXG5leHBvcnQgdHlwZSBDb2luZmxvd1NvbGFuYVdpdGhkcmF3UHJvcHMgPSBDb2luZmxvd0NvbW1vbldpdGhkcmF3UHJvcHMgJlxuICBTb2xhbmFXYWxsZXRQcm9wcztcblxuZXhwb3J0IGludGVyZmFjZSBOZWFyV2FsbGV0UHJvcHMge1xuICB3YWxsZXQ6IE5lYXJXYWxsZXQ7XG4gIGJsb2NrY2hhaW46ICduZWFyJztcbn1cblxuZXhwb3J0IHR5cGUgQ29pbmZsb3dOZWFyV2l0aGRyYXdQcm9wcyA9IENvaW5mbG93Q29tbW9uV2l0aGRyYXdQcm9wcyAmXG4gIE5lYXJXYWxsZXRQcm9wcztcblxuaW50ZXJmYWNlIEV2bVdhbGxldFByb3BzIHtcbiAgd2FsbGV0OiBFdGhXYWxsZXQ7XG4gIHVzZVBlcm1pdD86IGJvb2xlYW47XG59XG5cbnR5cGUgQ29pbmZsb3dFdm1XaXRoZHJhd1Byb3BzID0gQ29pbmZsb3dDb21tb25XaXRoZHJhd1Byb3BzICYgRXZtV2FsbGV0UHJvcHM7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXRoV2FsbGV0UHJvcHMge1xuICBibG9ja2NoYWluOiAnZXRoJztcbn1cblxuZXhwb3J0IHR5cGUgQ29pbmZsb3dFdGhXaXRoZHJhd1Byb3BzID0gQ29pbmZsb3dFdm1XaXRoZHJhd1Byb3BzICZcbiAgRXRoV2FsbGV0UHJvcHM7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUG9seWdvbldhbGxldFByb3BzIHtcbiAgYmxvY2tjaGFpbjogJ3BvbHlnb24nO1xufVxuXG5leHBvcnQgdHlwZSBDb2luZmxvd1BvbHlnb25XaXRoZHJhd1Byb3BzID0gQ29pbmZsb3dFdm1XaXRoZHJhd1Byb3BzICZcbiAgUG9seWdvbldhbGxldFByb3BzO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VXYWxsZXRQcm9wcyB7XG4gIGJsb2NrY2hhaW46ICdiYXNlJztcbn1cblxuZXhwb3J0IHR5cGUgQ29pbmZsb3dCYXNlV2l0aGRyYXdQcm9wcyA9IENvaW5mbG93RXZtV2l0aGRyYXdQcm9wcyAmXG4gIEJhc2VXYWxsZXRQcm9wcztcblxuZXhwb3J0IGludGVyZmFjZSBBcmJpdHJ1bVdhbGxldFByb3BzIHtcbiAgYmxvY2tjaGFpbjogJ2FyYml0cnVtJztcbn1cblxuZXhwb3J0IHR5cGUgQ29pbmZsb3dBcmJpdHJ1bVdpdGhkcmF3UHJvcHMgPSBDb2luZmxvd0V2bVdpdGhkcmF3UHJvcHMgJlxuICBBcmJpdHJ1bVdhbGxldFByb3BzO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvaW5mbG93U2Vzc2lvbktleVdpdGhkcmF3UHJvcHNcbiAgZXh0ZW5kcyBDb2luZmxvd0NvbW1vbldpdGhkcmF3UHJvcHMge1xuICBzZXNzaW9uS2V5OiBzdHJpbmc7XG4gIHNpZ25lcjpcbiAgICB8IFNvbGFuYVdhbGxldFByb3BzXG4gICAgfCBOZWFyV2FsbGV0UHJvcHNcbiAgICB8IEV0aFdhbGxldFByb3BzXG4gICAgfCBQb2x5Z29uV2FsbGV0UHJvcHNcbiAgICB8IEJhc2VXYWxsZXRQcm9wc1xuICAgIHwgQXJiaXRydW1XYWxsZXRQcm9wcztcbiAgYmxvY2tjaGFpbj86IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IHR5cGUgQ29pbmZsb3dXaXRoZHJhd1Byb3BzID1cbiAgfCBDb2luZmxvd1NvbGFuYVdpdGhkcmF3UHJvcHNcbiAgfCBDb2luZmxvd05lYXJXaXRoZHJhd1Byb3BzXG4gIHwgQ29pbmZsb3dFdGhXaXRoZHJhd1Byb3BzXG4gIHwgQ29pbmZsb3dQb2x5Z29uV2l0aGRyYXdQcm9wc1xuICB8IENvaW5mbG93QmFzZVdpdGhkcmF3UHJvcHNcbiAgfCBDb2luZmxvd0FyYml0cnVtV2l0aGRyYXdQcm9wc1xuICB8IENvaW5mbG93U2Vzc2lvbktleVdpdGhkcmF3UHJvcHM7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tbW9uRXZtUmVkZWVtIHtcbiAgd2FpdEZvckhhc2g/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5vcm1hbFJlZGVlbSBleHRlbmRzIENvbW1vbkV2bVJlZGVlbSB7XG4gIHRyYW5zYWN0aW9uOiB7dG86IHN0cmluZzsgZGF0YTogc3RyaW5nfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBLbm93blRva2VuSWRSZWRlZW0gZXh0ZW5kcyBOb3JtYWxSZWRlZW0ge1xuICBuZnRDb250cmFjdDogc3RyaW5nO1xuICBuZnRJZDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNhZmVNaW50UmVkZWVtIGV4dGVuZHMgTm9ybWFsUmVkZWVtIHtcbiAgdHlwZTogJ3NhZmVNaW50JztcbiAgbmZ0Q29udHJhY3Q/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmV0dXJuZWRUb2tlbklkUmVkZWVtIGV4dGVuZHMgTm9ybWFsUmVkZWVtIHtcbiAgdHlwZTogJ3JldHVybmVkJztcbiAgbmZ0Q29udHJhY3Q/OiBzdHJpbmc7XG59XG5cbnR5cGUgUmVzZXJ2b2lyTmZ0SWRJdGVtID0gT21pdDxLbm93blRva2VuSWRSZWRlZW0sIGtleW9mIE5vcm1hbFJlZGVlbT47XG5pbnRlcmZhY2UgUmVzZXJ2b2lyT3JkZXJJZEl0ZW0ge1xuICBvcmRlcklkOiBzdHJpbmc7XG59XG50eXBlIFJlc2Vydm9pckl0ZW0gPSBSZXNlcnZvaXJOZnRJZEl0ZW0gfCBSZXNlcnZvaXJPcmRlcklkSXRlbTtcbnR5cGUgUmVzZXJ2b2lySXRlbXMgPSBSZXNlcnZvaXJJdGVtIHwgUmVzZXJ2b2lySXRlbVtdO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlc2Vydm9pclJlZGVlbSBleHRlbmRzIENvbW1vbkV2bVJlZGVlbSB7XG4gIHR5cGU6ICdyZXNlcnZvaXInO1xuICBpdGVtczogUmVzZXJ2b2lySXRlbXM7XG4gIHRha2VyPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRva2VuUmVkZWVtIGV4dGVuZHMgQ29tbW9uRXZtUmVkZWVtIHtcbiAgdHlwZTogJ3Rva2VuJztcbiAgZGVzdGluYXRpb246IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgRXZtVHJhbnNhY3Rpb25EYXRhID1cbiAgfCBTYWZlTWludFJlZGVlbVxuICB8IFJldHVybmVkVG9rZW5JZFJlZGVlbVxuICB8IFJlc2Vydm9pclJlZGVlbVxuICB8IEtub3duVG9rZW5JZFJlZGVlbVxuICB8IE5vcm1hbFJlZGVlbVxuICB8IFRva2VuUmVkZWVtO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvaW5mbG93SUZyYW1lUHJvcHNcbiAgZXh0ZW5kcyBPbWl0PENvaW5mbG93VHlwZXMsICdtZXJjaGFudElkJz4sXG4gICAgUGljazxcbiAgICAgIENvaW5mbG93Q29tbW9uUHVyY2hhc2VQcm9wcyxcbiAgICAgIHwgJ2NoYXJnZWJhY2tQcm90ZWN0aW9uRGF0YSdcbiAgICAgIHwgJ3dlYmhvb2tJbmZvJ1xuICAgICAgfCAnc3VidG90YWwnXG4gICAgICB8ICdjdXN0b21lckluZm8nXG4gICAgICB8ICdzZXR0bGVtZW50VHlwZSdcbiAgICAgIHwgJ2VtYWlsJ1xuICAgICAgfCAncGxhbkNvZGUnXG4gICAgICB8ICdkZXZpY2VJZCdcbiAgICAgIHwgJ2p3dFRva2VuJ1xuICAgICAgfCAnb3JpZ2lucydcbiAgICAgIHwgJ3RocmVlRHNDaGFsbGVuZ2VQcmVmZXJlbmNlJ1xuICAgICAgfCAnc3VwcG9ydEVtYWlsJ1xuICAgID4sXG4gICAgUGljazxcbiAgICAgIENvaW5mbG93Q29tbW9uV2l0aGRyYXdQcm9wcyxcbiAgICAgIHwgJ2JhbmtBY2NvdW50TGlua1JlZGlyZWN0J1xuICAgICAgfCAnYWRkaXRpb25hbFdhbGxldHMnXG4gICAgICB8ICd0cmFuc2FjdGlvblNpZ25lcidcbiAgICAgIHwgJ2xvY2tBbW91bnQnXG4gICAgICB8ICdsb2NrRGVmYXVsdFRva2VuJ1xuICAgICAgfCAnb3JpZ2lucydcbiAgICA+LFxuICAgIFBpY2s8Q29pbmZsb3dFdm1QdXJjaGFzZVByb3BzLCAnYXV0aE9ubHknPixcbiAgICBQaWNrPFxuICAgICAgQ29pbmZsb3dTb2xhbmFQdXJjaGFzZVByb3BzLFxuICAgICAgJ3JlbnQnIHwgJ25hdGl2ZVNvbFRvQ29udmVydCcgfCAnZGVzdGluYXRpb25BdXRoS2V5J1xuICAgID4ge1xuICB3YWxsZXRQdWJrZXk6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIHNlc3Npb25LZXk/OiBzdHJpbmc7XG4gIHJvdXRlOiBzdHJpbmc7XG4gIHJvdXRlUHJlZml4Pzogc3RyaW5nO1xuICB0cmFuc2FjdGlvbj86IHN0cmluZztcbiAgdG9rZW5zPzogc3RyaW5nW10gfCBQdWJsaWNLZXlbXTtcbiAgbmVhckRlcG9zaXQ/OiBzdHJpbmc7XG4gIG1lcmNoYW50Q3NzPzogc3RyaW5nO1xuICBjb2xvcj86ICd3aGl0ZScgfCAnYmxhY2snO1xuICBkaXNhYmxlQXBwbGVQYXk/OiBib29sZWFuO1xuICBkaXNhYmxlR29vZ2xlUGF5PzogYm9vbGVhbjtcbiAgdGhlbWU/OiBNZXJjaGFudFRoZW1lO1xuICB1c2VQZXJtaXQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgZW51bSBDYXJkVHlwZSB7XG4gIFZJU0EgPSAnVklTQScsXG4gIE1BU1RFUkNBUkQgPSAnTVNUUicsXG4gIEFNRVggPSAnQU1FWCcsXG4gIERJU0NPVkVSID0gJ0RJU0MnLFxufVxuIl19
@@ -1,219 +0,0 @@
1
- import { web3, base58 } from './SolanaPeerDeps';
2
- import LZString from 'lz-string';
3
- import { Currency } from './Subtotal';
4
- export class CoinflowUtils {
5
- constructor(env) {
6
- this.env = env ?? 'prod';
7
- if (this.env === 'prod')
8
- this.url = 'https://api.coinflow.cash';
9
- else if (this.env === 'local')
10
- this.url = 'http://localhost:5000';
11
- else
12
- this.url = `https://api-${this.env}.coinflow.cash`;
13
- }
14
- async getNSurePartnerId(merchantId) {
15
- return fetch(this.url + `/merchant/view/${merchantId}`)
16
- .then(response => response.json())
17
- .then((json) => json.nSureSettings?.nSurePartnerId || json.nSurePartnerId)
18
- .catch(e => {
19
- console.error(e);
20
- return undefined;
21
- });
22
- }
23
- static getCoinflowBaseUrl(env) {
24
- if (!env || env === 'prod')
25
- return 'https://coinflow.cash';
26
- if (env === 'local')
27
- return 'http://localhost:3000';
28
- return `https://${env}.coinflow.cash`;
29
- }
30
- static getCoinflowApiUrl(env) {
31
- if (!env || env === 'prod')
32
- return 'https://api.coinflow.cash';
33
- if (env === 'local')
34
- return 'http://localhost:5000';
35
- return `https://api-${env}.coinflow.cash`;
36
- }
37
- static getCoinflowUrl({ walletPubkey, sessionKey, route, routePrefix, env, subtotal, transaction, blockchain = 'solana', webhookInfo, email, loaderBackground, handleHeightChange, bankAccountLinkRedirect, additionalWallets, nearDeposit, chargebackProtectionData, merchantCss, color, rent, lockDefaultToken, tokens, planCode, disableApplePay, disableGooglePay, customerInfo, settlementType, lockAmount, nativeSolToConvert, theme, usePermit, transactionSigner, authOnly, deviceId, jwtToken, origins, threeDsChallengePreference, supportEmail, destinationAuthKey, }) {
38
- const prefix = routePrefix
39
- ? `/${routePrefix}/${blockchain}`
40
- : `/${blockchain}`;
41
- const url = new URL(prefix + route, CoinflowUtils.getCoinflowBaseUrl(env));
42
- if (walletPubkey)
43
- url.searchParams.append('pubkey', walletPubkey);
44
- if (sessionKey)
45
- url.searchParams.append('sessionKey', sessionKey);
46
- if (transaction) {
47
- url.searchParams.append('transaction', transaction);
48
- }
49
- if (subtotal) {
50
- if ('cents' in subtotal) {
51
- url.searchParams.append('cents', subtotal.cents.toString());
52
- if ('currency' in subtotal) {
53
- url.searchParams.append('currency', subtotal.currency.toString());
54
- }
55
- else {
56
- url.searchParams.append('currency', Currency.USD);
57
- }
58
- }
59
- else {
60
- url.searchParams.append('token', subtotal.address.toString());
61
- url.searchParams.append('amount', subtotal.amount.toString());
62
- }
63
- }
64
- if (webhookInfo) {
65
- url.searchParams.append('webhookInfo', LZString.compressToEncodedURIComponent(JSON.stringify(webhookInfo)));
66
- }
67
- if (theme) {
68
- url.searchParams.append('theme', LZString.compressToEncodedURIComponent(JSON.stringify(theme)));
69
- }
70
- if (customerInfo) {
71
- url.searchParams.append('customerInfo', LZString.compressToEncodedURIComponent(JSON.stringify(customerInfo)));
72
- }
73
- if (email) {
74
- url.searchParams.append('email', email);
75
- }
76
- if (supportEmail)
77
- url.searchParams.append('supportEmail', supportEmail);
78
- if (tokens) {
79
- url.searchParams.append('tokens', tokens.toString());
80
- }
81
- if (loaderBackground) {
82
- url.searchParams.append('loaderBackground', loaderBackground);
83
- }
84
- if (handleHeightChange) {
85
- url.searchParams.append('useHeightChange', 'true');
86
- }
87
- if (bankAccountLinkRedirect) {
88
- url.searchParams.append('bankAccountLinkRedirect', bankAccountLinkRedirect);
89
- }
90
- if (additionalWallets)
91
- url.searchParams.append('additionalWallets', LZString.compressToEncodedURIComponent(JSON.stringify(additionalWallets)));
92
- if (nearDeposit)
93
- url.searchParams.append('nearDeposit', nearDeposit);
94
- if (chargebackProtectionData)
95
- url.searchParams.append('chargebackProtectionData', LZString.compressToEncodedURIComponent(JSON.stringify(chargebackProtectionData)));
96
- if (deviceId) {
97
- url.searchParams.append('deviceId', deviceId);
98
- }
99
- else {
100
- if (typeof window !== 'undefined') {
101
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
102
- // @ts-ignore
103
- const deviceId = window?.nSureSDK?.getDeviceId();
104
- if (deviceId)
105
- url.searchParams.append('deviceId', deviceId);
106
- }
107
- }
108
- if (merchantCss)
109
- url.searchParams.append('merchantCss', merchantCss);
110
- if (color)
111
- url.searchParams.append('color', color);
112
- if (rent)
113
- url.searchParams.append('rent', rent.lamports.toString());
114
- if (nativeSolToConvert)
115
- url.searchParams.append('nativeSolToConvert', nativeSolToConvert.lamports.toString());
116
- if (lockDefaultToken)
117
- url.searchParams.append('lockDefaultToken', 'true');
118
- if (planCode)
119
- url.searchParams.append('planCode', planCode);
120
- if (disableApplePay)
121
- url.searchParams.append('disableApplePay', 'true');
122
- if (disableGooglePay)
123
- url.searchParams.append('disableGooglePay', 'true');
124
- if (settlementType)
125
- url.searchParams.append('settlementType', settlementType);
126
- if (lockAmount)
127
- url.searchParams.append('lockAmount', 'true');
128
- if (usePermit === false)
129
- url.searchParams.append('usePermit', 'false');
130
- if (transactionSigner)
131
- url.searchParams.append('transactionSigner', transactionSigner);
132
- if (authOnly === true)
133
- url.searchParams.append('authOnly', 'true');
134
- if (jwtToken)
135
- url.searchParams.append('jwtToken', jwtToken);
136
- if (origins)
137
- url.searchParams.append('origins', LZString.compressToEncodedURIComponent(JSON.stringify(origins)));
138
- if (threeDsChallengePreference)
139
- url.searchParams.append('threeDsChallengePreference', threeDsChallengePreference);
140
- if (destinationAuthKey)
141
- url.searchParams.append('destinationAuthKey', destinationAuthKey);
142
- return url.toString();
143
- }
144
- static getTransaction(props) {
145
- if (!props.blockchain)
146
- return undefined;
147
- return this.byBlockchain(props.blockchain, {
148
- solana: () => {
149
- if (!('transaction' in props))
150
- return undefined;
151
- const { transaction } = props;
152
- if (!web3)
153
- throw new Error('@solana/web3.js dependency is required for Solana');
154
- if (!base58)
155
- throw new Error('bs58 dependency is required for Solana');
156
- if (!transaction)
157
- return undefined;
158
- return base58.encode(transaction.serialize({
159
- requireAllSignatures: false,
160
- verifySignatures: false,
161
- }));
162
- },
163
- polygon: () => {
164
- if (!('transaction' in props))
165
- return undefined;
166
- const { transaction } = props;
167
- return LZString.compressToEncodedURIComponent(JSON.stringify(transaction));
168
- },
169
- eth: () => {
170
- if (!('transaction' in props))
171
- return undefined;
172
- const { transaction } = props;
173
- return LZString.compressToEncodedURIComponent(JSON.stringify(transaction));
174
- },
175
- base: () => {
176
- if (!('transaction' in props))
177
- return undefined;
178
- const { transaction } = props;
179
- return LZString.compressToEncodedURIComponent(JSON.stringify(transaction));
180
- },
181
- arbitrum: () => {
182
- if (!('transaction' in props))
183
- return undefined;
184
- const { transaction } = props;
185
- return LZString.compressToEncodedURIComponent(JSON.stringify(transaction));
186
- },
187
- near: () => {
188
- if (!('action' in props))
189
- return undefined;
190
- const { action } = props;
191
- return LZString.compressToEncodedURIComponent(JSON.stringify(action));
192
- },
193
- user: () => {
194
- return undefined;
195
- },
196
- })();
197
- }
198
- static byBlockchain(blockchain, args) {
199
- switch (blockchain) {
200
- case 'solana':
201
- return args.solana;
202
- case 'near':
203
- return args.near;
204
- case 'polygon':
205
- return args.polygon;
206
- case 'eth':
207
- return args.eth;
208
- case 'base':
209
- return args.base;
210
- case 'arbitrum':
211
- return args.arbitrum;
212
- case 'user':
213
- return args.user;
214
- default:
215
- throw new Error('blockchain not supported!');
216
- }
217
- }
218
- }
219
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29pbmZsb3dVdGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvaW5mbG93bGFicy9zcmMvbGliL2NvbW1vbi9Db2luZmxvd1V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLE9BQU8sRUFBQyxJQUFJLEVBQUUsTUFBTSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDOUMsT0FBTyxRQUFRLE1BQU0sV0FBVyxDQUFDO0FBRWpDLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxZQUFZLENBQUM7QUFFcEMsTUFBTSxPQUFPLGFBQWE7SUFJeEIsWUFBWSxHQUFrQjtRQUM1QixJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxNQUFNLENBQUM7UUFDekIsSUFBSSxJQUFJLENBQUMsR0FBRyxLQUFLLE1BQU07WUFBRSxJQUFJLENBQUMsR0FBRyxHQUFHLDJCQUEyQixDQUFDO2FBQzNELElBQUksSUFBSSxDQUFDLEdBQUcsS0FBSyxPQUFPO1lBQUUsSUFBSSxDQUFDLEdBQUcsR0FBRyx1QkFBdUIsQ0FBQzs7WUFDN0QsSUFBSSxDQUFDLEdBQUcsR0FBRyxlQUFlLElBQUksQ0FBQyxHQUFHLGdCQUFnQixDQUFDO0lBQzFELENBQUM7SUFFRCxLQUFLLENBQUMsaUJBQWlCLENBQUMsVUFBa0I7UUFDeEMsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxrQkFBa0IsVUFBVSxFQUFFLENBQUM7YUFDcEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO2FBQ2pDLElBQUksQ0FDSCxDQUFDLElBR0EsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxjQUFjLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FDaEU7YUFDQSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDVCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pCLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxHQUFrQjtRQUMxQyxJQUFJLENBQUMsR0FBRyxJQUFJLEdBQUcsS0FBSyxNQUFNO1lBQUUsT0FBTyx1QkFBdUIsQ0FBQztRQUMzRCxJQUFJLEdBQUcsS0FBSyxPQUFPO1lBQUUsT0FBTyx1QkFBdUIsQ0FBQztRQUVwRCxPQUFPLFdBQVcsR0FBRyxnQkFBZ0IsQ0FBQztJQUN4QyxDQUFDO0lBRUQsTUFBTSxDQUFDLGlCQUFpQixDQUFDLEdBQWtCO1FBQ3pDLElBQUksQ0FBQyxHQUFHLElBQUksR0FBRyxLQUFLLE1BQU07WUFBRSxPQUFPLDJCQUEyQixDQUFDO1FBQy9ELElBQUksR0FBRyxLQUFLLE9BQU87WUFBRSxPQUFPLHVCQUF1QixDQUFDO1FBRXBELE9BQU8sZUFBZSxHQUFHLGdCQUFnQixDQUFDO0lBQzVDLENBQUM7SUFFRCxNQUFNLENBQUMsY0FBYyxDQUFDLEVBQ3BCLFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUNMLFdBQVcsRUFDWCxHQUFHLEVBQ0gsUUFBUSxFQUNSLFdBQVcsRUFDWCxVQUFVLEdBQUcsUUFBUSxFQUNyQixXQUFXLEVBQ1gsS0FBSyxFQUNMLGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixXQUFXLEVBQ1gsd0JBQXdCLEVBQ3hCLFdBQVcsRUFDWCxLQUFLLEVBQ0wsSUFBSSxFQUNKLGdCQUFnQixFQUNoQixNQUFNLEVBQ04sUUFBUSxFQUNSLGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIsWUFBWSxFQUNaLGNBQWMsRUFDZCxVQUFVLEVBQ1Ysa0JBQWtCLEVBQ2xCLEtBQUssRUFDTCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxFQUNSLE9BQU8sRUFDUCwwQkFBMEIsRUFDMUIsWUFBWSxFQUNaLGtCQUFrQixHQUNFO1FBQ3BCLE1BQU0sTUFBTSxHQUFHLFdBQVc7WUFDeEIsQ0FBQyxDQUFDLElBQUksV0FBVyxJQUFJLFVBQVUsRUFBRTtZQUNqQyxDQUFDLENBQUMsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUNyQixNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEdBQUcsS0FBSyxFQUFFLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRTNFLElBQUksWUFBWTtZQUFFLEdBQUcsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUNsRSxJQUFJLFVBQVU7WUFBRSxHQUFHLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFbEUsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNoQixHQUFHLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDdEQsQ0FBQztRQUVELElBQUksUUFBUSxFQUFFLENBQUM7WUFDYixJQUFJLE9BQU8sSUFBSSxRQUFRLEVBQUUsQ0FBQztnQkFDeEIsR0FBRyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztnQkFDNUQsSUFBSSxVQUFVLElBQUksUUFBUSxFQUFFLENBQUM7b0JBQzNCLEdBQUcsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7Z0JBQ3BFLENBQUM7cUJBQU0sQ0FBQztvQkFDTixHQUFHLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNwRCxDQUFDO1lBQ0gsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLEdBQUcsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7Z0JBQzlELEdBQUcsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDaEUsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQ2hCLEdBQUcsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUNyQixhQUFhLEVBQ2IsUUFBUSxDQUFDLDZCQUE2QixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FDcEUsQ0FBQztRQUNKLENBQUM7UUFFRCxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1YsR0FBRyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQ3JCLE9BQU8sRUFDUCxRQUFRLENBQUMsNkJBQTZCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUM5RCxDQUFDO1FBQ0osQ0FBQztRQUVELElBQUksWUFBWSxFQUFFLENBQUM7WUFDakIsR0FBRyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQ3JCLGNBQWMsRUFDZCxRQUFRLENBQUMsNkJBQTZCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUNyRSxDQUFDO1FBQ0osQ0FBQztRQUVELElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixHQUFHLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDMUMsQ0FBQztRQUNELElBQUksWUFBWTtZQUFFLEdBQUcsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUV4RSxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsR0FBRyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZELENBQUM7UUFFRCxJQUFJLGdCQUFnQixFQUFFLENBQUM7WUFDckIsR0FBRyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUNoRSxDQUFDO1FBRUQsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO1lBQ3ZCLEdBQUcsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLGlCQUFpQixFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3JELENBQUM7UUFFRCxJQUFJLHVCQUF1QixFQUFFLENBQUM7WUFDNUIsR0FBRyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQ3JCLHlCQUF5QixFQUN6Qix1QkFBdUIsQ0FDeEIsQ0FBQztRQUNKLENBQUM7UUFFRCxJQUFJLGlCQUFpQjtZQUNuQixHQUFHLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FDckIsbUJBQW1CLEVBQ25CLFFBQVEsQ0FBQyw2QkFBNkIsQ0FDcEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUNsQyxDQUNGLENBQUM7UUFFSixJQUFJLFdBQVc7WUFBRSxHQUFHLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFFckUsSUFBSSx3QkFBd0I7WUFDMUIsR0FBRyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQ3JCLDBCQUEwQixFQUMxQixRQUFRLENBQUMsNkJBQTZCLENBQ3BDLElBQUksQ0FBQyxTQUFTLENBQUMsd0JBQXdCLENBQUMsQ0FDekMsQ0FDRixDQUFDO1FBQ0osSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLEdBQUcsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNoRCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksT0FBTyxNQUFNLEtBQUssV0FBVyxFQUFFLENBQUM7Z0JBQ2xDLDZEQUE2RDtnQkFDN0QsYUFBYTtnQkFDYixNQUFNLFFBQVEsR0FBRyxNQUFNLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxDQUFDO2dCQUNqRCxJQUFJLFFBQVE7b0JBQUUsR0FBRyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQzlELENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxXQUFXO1lBQUUsR0FBRyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ3JFLElBQUksS0FBSztZQUFFLEdBQUcsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNuRCxJQUFJLElBQUk7WUFBRSxHQUFHLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ3BFLElBQUksa0JBQWtCO1lBQ3BCLEdBQUcsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUNyQixvQkFBb0IsRUFDcEIsa0JBQWtCLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUN2QyxDQUFDO1FBQ0osSUFBSSxnQkFBZ0I7WUFBRSxHQUFHLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUMxRSxJQUFJLFFBQVE7WUFBRSxHQUFHLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFFNUQsSUFBSSxlQUFlO1lBQUUsR0FBRyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDeEUsSUFBSSxnQkFBZ0I7WUFBRSxHQUFHLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUMxRSxJQUFJLGNBQWM7WUFDaEIsR0FBRyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFFNUQsSUFBSSxVQUFVO1lBQUUsR0FBRyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRTlELElBQUksU0FBUyxLQUFLLEtBQUs7WUFBRSxHQUFHLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDdkUsSUFBSSxpQkFBaUI7WUFDbkIsR0FBRyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsbUJBQW1CLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztRQUNsRSxJQUFJLFFBQVEsS0FBSyxJQUFJO1lBQUUsR0FBRyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ25FLElBQUksUUFBUTtZQUFFLEdBQUcsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUM1RCxJQUFJLE9BQU87WUFDVCxHQUFHLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FDckIsU0FBUyxFQUNULFFBQVEsQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQ2hFLENBQUM7UUFFSixJQUFJLDBCQUEwQjtZQUM1QixHQUFHLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FDckIsNEJBQTRCLEVBQzVCLDBCQUEwQixDQUMzQixDQUFDO1FBRUosSUFBSSxrQkFBa0I7WUFDcEIsR0FBRyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsb0JBQW9CLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztRQUVwRSxPQUFPLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUE0QjtRQUNoRCxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVU7WUFBRSxPQUFPLFNBQVMsQ0FBQztRQUV4QyxPQUFPLElBQUksQ0FBQyxZQUFZLENBQTJCLEtBQUssQ0FBQyxVQUFVLEVBQUU7WUFDbkUsTUFBTSxFQUFFLEdBQUcsRUFBRTtnQkFDWCxJQUFJLENBQUMsQ0FBQyxhQUFhLElBQUksS0FBSyxDQUFDO29CQUFFLE9BQU8sU0FBUyxDQUFDO2dCQUNoRCxNQUFNLEVBQUMsV0FBVyxFQUFDLEdBQUcsS0FBSyxDQUFDO2dCQUM1QixJQUFJLENBQUMsSUFBSTtvQkFDUCxNQUFNLElBQUksS0FBSyxDQUFDLG1EQUFtRCxDQUFDLENBQUM7Z0JBQ3ZFLElBQUksQ0FBQyxNQUFNO29CQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsd0NBQXdDLENBQUMsQ0FBQztnQkFDdkUsSUFBSSxDQUFDLFdBQVc7b0JBQUUsT0FBTyxTQUFTLENBQUM7Z0JBQ25DLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FDakIsV0FBa0QsQ0FBQyxTQUFTLENBQUM7b0JBQzVELG9CQUFvQixFQUFFLEtBQUs7b0JBQzNCLGdCQUFnQixFQUFFLEtBQUs7aUJBQ3hCLENBQUMsQ0FDSCxDQUFDO1lBQ0osQ0FBQztZQUNELE9BQU8sRUFBRSxHQUFHLEVBQUU7Z0JBQ1osSUFBSSxDQUFDLENBQUMsYUFBYSxJQUFJLEtBQUssQ0FBQztvQkFBRSxPQUFPLFNBQVMsQ0FBQztnQkFDaEQsTUFBTSxFQUFDLFdBQVcsRUFBQyxHQUFHLEtBQUssQ0FBQztnQkFDNUIsT0FBTyxRQUFRLENBQUMsNkJBQTZCLENBQzNDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQzVCLENBQUM7WUFDSixDQUFDO1lBQ0QsR0FBRyxFQUFFLEdBQUcsRUFBRTtnQkFDUixJQUFJLENBQUMsQ0FBQyxhQUFhLElBQUksS0FBSyxDQUFDO29CQUFFLE9BQU8sU0FBUyxDQUFDO2dCQUNoRCxNQUFNLEVBQUMsV0FBVyxFQUFDLEdBQUcsS0FBSyxDQUFDO2dCQUM1QixPQUFPLFFBQVEsQ0FBQyw2QkFBNkIsQ0FDM0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FDNUIsQ0FBQztZQUNKLENBQUM7WUFDRCxJQUFJLEVBQUUsR0FBRyxFQUFFO2dCQUNULElBQUksQ0FBQyxDQUFDLGFBQWEsSUFBSSxLQUFLLENBQUM7b0JBQUUsT0FBTyxTQUFTLENBQUM7Z0JBQ2hELE1BQU0sRUFBQyxXQUFXLEVBQUMsR0FBRyxLQUFLLENBQUM7Z0JBQzVCLE9BQU8sUUFBUSxDQUFDLDZCQUE2QixDQUMzQyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUM1QixDQUFDO1lBQ0osQ0FBQztZQUNELFFBQVEsRUFBRSxHQUFHLEVBQUU7Z0JBQ2IsSUFBSSxDQUFDLENBQUMsYUFBYSxJQUFJLEtBQUssQ0FBQztvQkFBRSxPQUFPLFNBQVMsQ0FBQztnQkFDaEQsTUFBTSxFQUFDLFdBQVcsRUFBQyxHQUFHLEtBQUssQ0FBQztnQkFDNUIsT0FBTyxRQUFRLENBQUMsNkJBQTZCLENBQzNDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQzVCLENBQUM7WUFDSixDQUFDO1lBQ0QsSUFBSSxFQUFFLEdBQUcsRUFBRTtnQkFDVCxJQUFJLENBQUMsQ0FBQyxRQUFRLElBQUksS0FBSyxDQUFDO29CQUFFLE9BQU8sU0FBUyxDQUFDO2dCQUMzQyxNQUFNLEVBQUMsTUFBTSxFQUFDLEdBQUcsS0FBSyxDQUFDO2dCQUN2QixPQUFPLFFBQVEsQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDeEUsQ0FBQztZQUNELElBQUksRUFBRSxHQUFHLEVBQUU7Z0JBQ1QsT0FBTyxTQUFTLENBQUM7WUFDbkIsQ0FBQztTQUNGLENBQUMsRUFBRSxDQUFDO0lBQ1AsQ0FBQztJQUVELE1BQU0sQ0FBQyxZQUFZLENBQ2pCLFVBQThCLEVBQzlCLElBUUM7UUFFRCxRQUFRLFVBQVUsRUFBRSxDQUFDO1lBQ25CLEtBQUssUUFBUTtnQkFDWCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDckIsS0FBSyxNQUFNO2dCQUNULE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztZQUNuQixLQUFLLFNBQVM7Z0JBQ1osT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO1lBQ3RCLEtBQUssS0FBSztnQkFDUixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUM7WUFDbEIsS0FBSyxNQUFNO2dCQUNULE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztZQUNuQixLQUFLLFVBQVU7Z0JBQ2IsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQ3ZCLEtBQUssTUFBTTtnQkFDVCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDbkI7Z0JBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1FBQ2pELENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb2luZmxvd0Jsb2NrY2hhaW4sXG4gIENvaW5mbG93RW52cyxcbiAgQ29pbmZsb3dJRnJhbWVQcm9wcyxcbiAgQ29pbmZsb3dQdXJjaGFzZVByb3BzLFxufSBmcm9tICcuL0NvaW5mbG93VHlwZXMnO1xuaW1wb3J0IHt3ZWIzLCBiYXNlNTh9IGZyb20gJy4vU29sYW5hUGVlckRlcHMnO1xuaW1wb3J0IExaU3RyaW5nIGZyb20gJ2x6LXN0cmluZyc7XG5pbXBvcnQgdHlwZSB7VHJhbnNhY3Rpb24sIFZlcnNpb25lZFRyYW5zYWN0aW9ufSBmcm9tICdAc29sYW5hL3dlYjMuanMnO1xuaW1wb3J0IHtDdXJyZW5jeX0gZnJvbSAnLi9TdWJ0b3RhbCc7XG5cbmV4cG9ydCBjbGFzcyBDb2luZmxvd1V0aWxzIHtcbiAgZW52OiBDb2luZmxvd0VudnM7XG4gIHVybDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKGVudj86IENvaW5mbG93RW52cykge1xuICAgIHRoaXMuZW52ID0gZW52ID8/ICdwcm9kJztcbiAgICBpZiAodGhpcy5lbnYgPT09ICdwcm9kJykgdGhpcy51cmwgPSAnaHR0cHM6Ly9hcGkuY29pbmZsb3cuY2FzaCc7XG4gICAgZWxzZSBpZiAodGhpcy5lbnYgPT09ICdsb2NhbCcpIHRoaXMudXJsID0gJ2h0dHA6Ly9sb2NhbGhvc3Q6NTAwMCc7XG4gICAgZWxzZSB0aGlzLnVybCA9IGBodHRwczovL2FwaS0ke3RoaXMuZW52fS5jb2luZmxvdy5jYXNoYDtcbiAgfVxuXG4gIGFzeW5jIGdldE5TdXJlUGFydG5lcklkKG1lcmNoYW50SWQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIGZldGNoKHRoaXMudXJsICsgYC9tZXJjaGFudC92aWV3LyR7bWVyY2hhbnRJZH1gKVxuICAgICAgLnRoZW4ocmVzcG9uc2UgPT4gcmVzcG9uc2UuanNvbigpKVxuICAgICAgLnRoZW4oXG4gICAgICAgIChqc29uOiB7XG4gICAgICAgICAgblN1cmVQYXJ0bmVySWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgICBuU3VyZVNldHRpbmdzOiB7blN1cmVQYXJ0bmVySWQ6IHN0cmluZyB8IHVuZGVmaW5lZH07XG4gICAgICAgIH0pID0+IGpzb24ublN1cmVTZXR0aW5ncz8ublN1cmVQYXJ0bmVySWQgfHwganNvbi5uU3VyZVBhcnRuZXJJZFxuICAgICAgKVxuICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfSk7XG4gIH1cblxuICBzdGF0aWMgZ2V0Q29pbmZsb3dCYXNlVXJsKGVudj86IENvaW5mbG93RW52cyk6IHN0cmluZyB7XG4gICAgaWYgKCFlbnYgfHwgZW52ID09PSAncHJvZCcpIHJldHVybiAnaHR0cHM6Ly9jb2luZmxvdy5jYXNoJztcbiAgICBpZiAoZW52ID09PSAnbG9jYWwnKSByZXR1cm4gJ2h0dHA6Ly9sb2NhbGhvc3Q6MzAwMCc7XG5cbiAgICByZXR1cm4gYGh0dHBzOi8vJHtlbnZ9LmNvaW5mbG93LmNhc2hgO1xuICB9XG5cbiAgc3RhdGljIGdldENvaW5mbG93QXBpVXJsKGVudj86IENvaW5mbG93RW52cyk6IHN0cmluZyB7XG4gICAgaWYgKCFlbnYgfHwgZW52ID09PSAncHJvZCcpIHJldHVybiAnaHR0cHM6Ly9hcGkuY29pbmZsb3cuY2FzaCc7XG4gICAgaWYgKGVudiA9PT0gJ2xvY2FsJykgcmV0dXJuICdodHRwOi8vbG9jYWxob3N0OjUwMDAnO1xuXG4gICAgcmV0dXJuIGBodHRwczovL2FwaS0ke2Vudn0uY29pbmZsb3cuY2FzaGA7XG4gIH1cblxuICBzdGF0aWMgZ2V0Q29pbmZsb3dVcmwoe1xuICAgIHdhbGxldFB1YmtleSxcbiAgICBzZXNzaW9uS2V5LFxuICAgIHJvdXRlLFxuICAgIHJvdXRlUHJlZml4LFxuICAgIGVudixcbiAgICBzdWJ0b3RhbCxcbiAgICB0cmFuc2FjdGlvbixcbiAgICBibG9ja2NoYWluID0gJ3NvbGFuYScsXG4gICAgd2ViaG9va0luZm8sXG4gICAgZW1haWwsXG4gICAgbG9hZGVyQmFja2dyb3VuZCxcbiAgICBoYW5kbGVIZWlnaHRDaGFuZ2UsXG4gICAgYmFua0FjY291bnRMaW5rUmVkaXJlY3QsXG4gICAgYWRkaXRpb25hbFdhbGxldHMsXG4gICAgbmVhckRlcG9zaXQsXG4gICAgY2hhcmdlYmFja1Byb3RlY3Rpb25EYXRhLFxuICAgIG1lcmNoYW50Q3NzLFxuICAgIGNvbG9yLFxuICAgIHJlbnQsXG4gICAgbG9ja0RlZmF1bHRUb2tlbixcbiAgICB0b2tlbnMsXG4gICAgcGxhbkNvZGUsXG4gICAgZGlzYWJsZUFwcGxlUGF5LFxuICAgIGRpc2FibGVHb29nbGVQYXksXG4gICAgY3VzdG9tZXJJbmZvLFxuICAgIHNldHRsZW1lbnRUeXBlLFxuICAgIGxvY2tBbW91bnQsXG4gICAgbmF0aXZlU29sVG9Db252ZXJ0LFxuICAgIHRoZW1lLFxuICAgIHVzZVBlcm1pdCxcbiAgICB0cmFuc2FjdGlvblNpZ25lcixcbiAgICBhdXRoT25seSxcbiAgICBkZXZpY2VJZCxcbiAgICBqd3RUb2tlbixcbiAgICBvcmlnaW5zLFxuICAgIHRocmVlRHNDaGFsbGVuZ2VQcmVmZXJlbmNlLFxuICAgIHN1cHBvcnRFbWFpbCxcbiAgICBkZXN0aW5hdGlvbkF1dGhLZXksXG4gIH06IENvaW5mbG93SUZyYW1lUHJvcHMpOiBzdHJpbmcge1xuICAgIGNvbnN0IHByZWZpeCA9IHJvdXRlUHJlZml4XG4gICAgICA/IGAvJHtyb3V0ZVByZWZpeH0vJHtibG9ja2NoYWlufWBcbiAgICAgIDogYC8ke2Jsb2NrY2hhaW59YDtcbiAgICBjb25zdCB1cmwgPSBuZXcgVVJMKHByZWZpeCArIHJvdXRlLCBDb2luZmxvd1V0aWxzLmdldENvaW5mbG93QmFzZVVybChlbnYpKTtcblxuICAgIGlmICh3YWxsZXRQdWJrZXkpIHVybC5zZWFyY2hQYXJhbXMuYXBwZW5kKCdwdWJrZXknLCB3YWxsZXRQdWJrZXkpO1xuICAgIGlmIChzZXNzaW9uS2V5KSB1cmwuc2VhcmNoUGFyYW1zLmFwcGVuZCgnc2Vzc2lvbktleScsIHNlc3Npb25LZXkpO1xuXG4gICAgaWYgKHRyYW5zYWN0aW9uKSB7XG4gICAgICB1cmwuc2VhcmNoUGFyYW1zLmFwcGVuZCgndHJhbnNhY3Rpb24nLCB0cmFuc2FjdGlvbik7XG4gICAgfVxuXG4gICAgaWYgKHN1YnRvdGFsKSB7XG4gICAgICBpZiAoJ2NlbnRzJyBpbiBzdWJ0b3RhbCkge1xuICAgICAgICB1cmwuc2VhcmNoUGFyYW1zLmFwcGVuZCgnY2VudHMnLCBzdWJ0b3RhbC5jZW50cy50b1N0cmluZygpKTtcbiAgICAgICAgaWYgKCdjdXJyZW5jeScgaW4gc3VidG90YWwpIHtcbiAgICAgICAgICB1cmwuc2VhcmNoUGFyYW1zLmFwcGVuZCgnY3VycmVuY3knLCBzdWJ0b3RhbC5jdXJyZW5jeS50b1N0cmluZygpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB1cmwuc2VhcmNoUGFyYW1zLmFwcGVuZCgnY3VycmVuY3knLCBDdXJyZW5jeS5VU0QpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB1cmwuc2VhcmNoUGFyYW1zLmFwcGVuZCgndG9rZW4nLCBzdWJ0b3RhbC5hZGRyZXNzLnRvU3RyaW5nKCkpO1xuICAgICAgICB1cmwuc2VhcmNoUGFyYW1zLmFwcGVuZCgnYW1vdW50Jywgc3VidG90YWwuYW1vdW50LnRvU3RyaW5nKCkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh3ZWJob29rSW5mbykge1xuICAgICAgdXJsLnNlYXJjaFBhcmFtcy5hcHBlbmQoXG4gICAgICAgICd3ZWJob29rSW5mbycsXG4gICAgICAgIExaU3RyaW5nLmNvbXByZXNzVG9FbmNvZGVkVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KHdlYmhvb2tJbmZvKSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHRoZW1lKSB7XG4gICAgICB1cmwuc2VhcmNoUGFyYW1zLmFwcGVuZChcbiAgICAgICAgJ3RoZW1lJyxcbiAgICAgICAgTFpTdHJpbmcuY29tcHJlc3NUb0VuY29kZWRVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkodGhlbWUpKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoY3VzdG9tZXJJbmZvKSB7XG4gICAgICB1cmwuc2VhcmNoUGFyYW1zLmFwcGVuZChcbiAgICAgICAgJ2N1c3RvbWVySW5mbycsXG4gICAgICAgIExaU3RyaW5nLmNvbXByZXNzVG9FbmNvZGVkVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KGN1c3RvbWVySW5mbykpXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChlbWFpbCkge1xuICAgICAgdXJsLnNlYXJjaFBhcmFtcy5hcHBlbmQoJ2VtYWlsJywgZW1haWwpO1xuICAgIH1cbiAgICBpZiAoc3VwcG9ydEVtYWlsKSB1cmwuc2VhcmNoUGFyYW1zLmFwcGVuZCgnc3VwcG9ydEVtYWlsJywgc3VwcG9ydEVtYWlsKTtcblxuICAgIGlmICh0b2tlbnMpIHtcbiAgICAgIHVybC5zZWFyY2hQYXJhbXMuYXBwZW5kKCd0b2tlbnMnLCB0b2tlbnMudG9TdHJpbmcoKSk7XG4gICAgfVxuXG4gICAgaWYgKGxvYWRlckJhY2tncm91bmQpIHtcbiAgICAgIHVybC5zZWFyY2hQYXJhbXMuYXBwZW5kKCdsb2FkZXJCYWNrZ3JvdW5kJywgbG9hZGVyQmFja2dyb3VuZCk7XG4gICAgfVxuXG4gICAgaWYgKGhhbmRsZUhlaWdodENoYW5nZSkge1xuICAgICAgdXJsLnNlYXJjaFBhcmFtcy5hcHBlbmQoJ3VzZUhlaWdodENoYW5nZScsICd0cnVlJyk7XG4gICAgfVxuXG4gICAgaWYgKGJhbmtBY2NvdW50TGlua1JlZGlyZWN0KSB7XG4gICAgICB1cmwuc2VhcmNoUGFyYW1zLmFwcGVuZChcbiAgICAgICAgJ2JhbmtBY2NvdW50TGlua1JlZGlyZWN0JyxcbiAgICAgICAgYmFua0FjY291bnRMaW5rUmVkaXJlY3RcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKGFkZGl0aW9uYWxXYWxsZXRzKVxuICAgICAgdXJsLnNlYXJjaFBhcmFtcy5hcHBlbmQoXG4gICAgICAgICdhZGRpdGlvbmFsV2FsbGV0cycsXG4gICAgICAgIExaU3RyaW5nLmNvbXByZXNzVG9FbmNvZGVkVVJJQ29tcG9uZW50KFxuICAgICAgICAgIEpTT04uc3RyaW5naWZ5KGFkZGl0aW9uYWxXYWxsZXRzKVxuICAgICAgICApXG4gICAgICApO1xuXG4gICAgaWYgKG5lYXJEZXBvc2l0KSB1cmwuc2VhcmNoUGFyYW1zLmFwcGVuZCgnbmVhckRlcG9zaXQnLCBuZWFyRGVwb3NpdCk7XG5cbiAgICBpZiAoY2hhcmdlYmFja1Byb3RlY3Rpb25EYXRhKVxuICAgICAgdXJsLnNlYXJjaFBhcmFtcy5hcHBlbmQoXG4gICAgICAgICdjaGFyZ2ViYWNrUHJvdGVjdGlvbkRhdGEnLFxuICAgICAgICBMWlN0cmluZy5jb21wcmVzc1RvRW5jb2RlZFVSSUNvbXBvbmVudChcbiAgICAgICAgICBKU09OLnN0cmluZ2lmeShjaGFyZ2ViYWNrUHJvdGVjdGlvbkRhdGEpXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgaWYgKGRldmljZUlkKSB7XG4gICAgICB1cmwuc2VhcmNoUGFyYW1zLmFwcGVuZCgnZGV2aWNlSWQnLCBkZXZpY2VJZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgZGV2aWNlSWQgPSB3aW5kb3c/Lm5TdXJlU0RLPy5nZXREZXZpY2VJZCgpO1xuICAgICAgICBpZiAoZGV2aWNlSWQpIHVybC5zZWFyY2hQYXJhbXMuYXBwZW5kKCdkZXZpY2VJZCcsIGRldmljZUlkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobWVyY2hhbnRDc3MpIHVybC5zZWFyY2hQYXJhbXMuYXBwZW5kKCdtZXJjaGFudENzcycsIG1lcmNoYW50Q3NzKTtcbiAgICBpZiAoY29sb3IpIHVybC5zZWFyY2hQYXJhbXMuYXBwZW5kKCdjb2xvcicsIGNvbG9yKTtcbiAgICBpZiAocmVudCkgdXJsLnNlYXJjaFBhcmFtcy5hcHBlbmQoJ3JlbnQnLCByZW50LmxhbXBvcnRzLnRvU3RyaW5nKCkpO1xuICAgIGlmIChuYXRpdmVTb2xUb0NvbnZlcnQpXG4gICAgICB1cmwuc2VhcmNoUGFyYW1zLmFwcGVuZChcbiAgICAgICAgJ25hdGl2ZVNvbFRvQ29udmVydCcsXG4gICAgICAgIG5hdGl2ZVNvbFRvQ29udmVydC5sYW1wb3J0cy50b1N0cmluZygpXG4gICAgICApO1xuICAgIGlmIChsb2NrRGVmYXVsdFRva2VuKSB1cmwuc2VhcmNoUGFyYW1zLmFwcGVuZCgnbG9ja0RlZmF1bHRUb2tlbicsICd0cnVlJyk7XG4gICAgaWYgKHBsYW5Db2RlKSB1cmwuc2VhcmNoUGFyYW1zLmFwcGVuZCgncGxhbkNvZGUnLCBwbGFuQ29kZSk7XG5cbiAgICBpZiAoZGlzYWJsZUFwcGxlUGF5KSB1cmwuc2VhcmNoUGFyYW1zLmFwcGVuZCgnZGlzYWJsZUFwcGxlUGF5JywgJ3RydWUnKTtcbiAgICBpZiAoZGlzYWJsZUdvb2dsZVBheSkgdXJsLnNlYXJjaFBhcmFtcy5hcHBlbmQoJ2Rpc2FibGVHb29nbGVQYXknLCAndHJ1ZScpO1xuICAgIGlmIChzZXR0bGVtZW50VHlwZSlcbiAgICAgIHVybC5zZWFyY2hQYXJhbXMuYXBwZW5kKCdzZXR0bGVtZW50VHlwZScsIHNldHRsZW1lbnRUeXBlKTtcblxuICAgIGlmIChsb2NrQW1vdW50KSB1cmwuc2VhcmNoUGFyYW1zLmFwcGVuZCgnbG9ja0Ftb3VudCcsICd0cnVlJyk7XG5cbiAgICBpZiAodXNlUGVybWl0ID09PSBmYWxzZSkgdXJsLnNlYXJjaFBhcmFtcy5hcHBlbmQoJ3VzZVBlcm1pdCcsICdmYWxzZScpO1xuICAgIGlmICh0cmFuc2FjdGlvblNpZ25lcilcbiAgICAgIHVybC5zZWFyY2hQYXJhbXMuYXBwZW5kKCd0cmFuc2FjdGlvblNpZ25lcicsIHRyYW5zYWN0aW9uU2lnbmVyKTtcbiAgICBpZiAoYXV0aE9ubHkgPT09IHRydWUpIHVybC5zZWFyY2hQYXJhbXMuYXBwZW5kKCdhdXRoT25seScsICd0cnVlJyk7XG4gICAgaWYgKGp3dFRva2VuKSB1cmwuc2VhcmNoUGFyYW1zLmFwcGVuZCgnand0VG9rZW4nLCBqd3RUb2tlbik7XG4gICAgaWYgKG9yaWdpbnMpXG4gICAgICB1cmwuc2VhcmNoUGFyYW1zLmFwcGVuZChcbiAgICAgICAgJ29yaWdpbnMnLFxuICAgICAgICBMWlN0cmluZy5jb21wcmVzc1RvRW5jb2RlZFVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShvcmlnaW5zKSlcbiAgICAgICk7XG5cbiAgICBpZiAodGhyZWVEc0NoYWxsZW5nZVByZWZlcmVuY2UpXG4gICAgICB1cmwuc2VhcmNoUGFyYW1zLmFwcGVuZChcbiAgICAgICAgJ3RocmVlRHNDaGFsbGVuZ2VQcmVmZXJlbmNlJyxcbiAgICAgICAgdGhyZWVEc0NoYWxsZW5nZVByZWZlcmVuY2VcbiAgICAgICk7XG5cbiAgICBpZiAoZGVzdGluYXRpb25BdXRoS2V5KVxuICAgICAgdXJsLnNlYXJjaFBhcmFtcy5hcHBlbmQoJ2Rlc3RpbmF0aW9uQXV0aEtleScsIGRlc3RpbmF0aW9uQXV0aEtleSk7XG5cbiAgICByZXR1cm4gdXJsLnRvU3RyaW5nKCk7XG4gIH1cblxuICBzdGF0aWMgZ2V0VHJhbnNhY3Rpb24ocHJvcHM6IENvaW5mbG93UHVyY2hhc2VQcm9wcyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCFwcm9wcy5ibG9ja2NoYWluKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgcmV0dXJuIHRoaXMuYnlCbG9ja2NoYWluPCgpID0+IHN0cmluZyB8IHVuZGVmaW5lZD4ocHJvcHMuYmxvY2tjaGFpbiwge1xuICAgICAgc29sYW5hOiAoKSA9PiB7XG4gICAgICAgIGlmICghKCd0cmFuc2FjdGlvbicgaW4gcHJvcHMpKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCB7dHJhbnNhY3Rpb259ID0gcHJvcHM7XG4gICAgICAgIGlmICghd2ViMylcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Bzb2xhbmEvd2ViMy5qcyBkZXBlbmRlbmN5IGlzIHJlcXVpcmVkIGZvciBTb2xhbmEnKTtcbiAgICAgICAgaWYgKCFiYXNlNTgpIHRocm93IG5ldyBFcnJvcignYnM1OCBkZXBlbmRlbmN5IGlzIHJlcXVpcmVkIGZvciBTb2xhbmEnKTtcbiAgICAgICAgaWYgKCF0cmFuc2FjdGlvbikgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgcmV0dXJuIGJhc2U1OC5lbmNvZGUoXG4gICAgICAgICAgKHRyYW5zYWN0aW9uIGFzIFZlcnNpb25lZFRyYW5zYWN0aW9uIHwgVHJhbnNhY3Rpb24pLnNlcmlhbGl6ZSh7XG4gICAgICAgICAgICByZXF1aXJlQWxsU2lnbmF0dXJlczogZmFsc2UsXG4gICAgICAgICAgICB2ZXJpZnlTaWduYXR1cmVzOiBmYWxzZSxcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfSxcbiAgICAgIHBvbHlnb246ICgpID0+IHtcbiAgICAgICAgaWYgKCEoJ3RyYW5zYWN0aW9uJyBpbiBwcm9wcykpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IHt0cmFuc2FjdGlvbn0gPSBwcm9wcztcbiAgICAgICAgcmV0dXJuIExaU3RyaW5nLmNvbXByZXNzVG9FbmNvZGVkVVJJQ29tcG9uZW50KFxuICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHRyYW5zYWN0aW9uKVxuICAgICAgICApO1xuICAgICAgfSxcbiAgICAgIGV0aDogKCkgPT4ge1xuICAgICAgICBpZiAoISgndHJhbnNhY3Rpb24nIGluIHByb3BzKSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgY29uc3Qge3RyYW5zYWN0aW9ufSA9IHByb3BzO1xuICAgICAgICByZXR1cm4gTFpTdHJpbmcuY29tcHJlc3NUb0VuY29kZWRVUklDb21wb25lbnQoXG4gICAgICAgICAgSlNPTi5zdHJpbmdpZnkodHJhbnNhY3Rpb24pXG4gICAgICAgICk7XG4gICAgICB9LFxuICAgICAgYmFzZTogKCkgPT4ge1xuICAgICAgICBpZiAoISgndHJhbnNhY3Rpb24nIGluIHByb3BzKSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgY29uc3Qge3RyYW5zYWN0aW9ufSA9IHByb3BzO1xuICAgICAgICByZXR1cm4gTFpTdHJpbmcuY29tcHJlc3NUb0VuY29kZWRVUklDb21wb25lbnQoXG4gICAgICAgICAgSlNPTi5zdHJpbmdpZnkodHJhbnNhY3Rpb24pXG4gICAgICAgICk7XG4gICAgICB9LFxuICAgICAgYXJiaXRydW06ICgpID0+IHtcbiAgICAgICAgaWYgKCEoJ3RyYW5zYWN0aW9uJyBpbiBwcm9wcykpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IHt0cmFuc2FjdGlvbn0gPSBwcm9wcztcbiAgICAgICAgcmV0dXJuIExaU3RyaW5nLmNvbXByZXNzVG9FbmNvZGVkVVJJQ29tcG9uZW50KFxuICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHRyYW5zYWN0aW9uKVxuICAgICAgICApO1xuICAgICAgfSxcbiAgICAgIG5lYXI6ICgpID0+IHtcbiAgICAgICAgaWYgKCEoJ2FjdGlvbicgaW4gcHJvcHMpKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCB7YWN0aW9ufSA9IHByb3BzO1xuICAgICAgICByZXR1cm4gTFpTdHJpbmcuY29tcHJlc3NUb0VuY29kZWRVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoYWN0aW9uKSk7XG4gICAgICB9LFxuICAgICAgdXNlcjogKCkgPT4ge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfSxcbiAgICB9KSgpO1xuICB9XG5cbiAgc3RhdGljIGJ5QmxvY2tjaGFpbjxUPihcbiAgICBibG9ja2NoYWluOiBDb2luZmxvd0Jsb2NrY2hhaW4sXG4gICAgYXJnczoge1xuICAgICAgc29sYW5hOiBUO1xuICAgICAgbmVhcjogVDtcbiAgICAgIGV0aDogVDtcbiAgICAgIHBvbHlnb246IFQ7XG4gICAgICBiYXNlOiBUO1xuICAgICAgYXJiaXRydW06IFQ7XG4gICAgICB1c2VyOiBUO1xuICAgIH1cbiAgKTogVCB7XG4gICAgc3dpdGNoIChibG9ja2NoYWluKSB7XG4gICAgICBjYXNlICdzb2xhbmEnOlxuICAgICAgICByZXR1cm4gYXJncy5zb2xhbmE7XG4gICAgICBjYXNlICduZWFyJzpcbiAgICAgICAgcmV0dXJuIGFyZ3MubmVhcjtcbiAgICAgIGNhc2UgJ3BvbHlnb24nOlxuICAgICAgICByZXR1cm4gYXJncy5wb2x5Z29uO1xuICAgICAgY2FzZSAnZXRoJzpcbiAgICAgICAgcmV0dXJuIGFyZ3MuZXRoO1xuICAgICAgY2FzZSAnYmFzZSc6XG4gICAgICAgIHJldHVybiBhcmdzLmJhc2U7XG4gICAgICBjYXNlICdhcmJpdHJ1bSc6XG4gICAgICAgIHJldHVybiBhcmdzLmFyYml0cnVtO1xuICAgICAgY2FzZSAndXNlcic6XG4gICAgICAgIHJldHVybiBhcmdzLnVzZXI7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Jsb2NrY2hhaW4gbm90IHN1cHBvcnRlZCEnKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -1,17 +0,0 @@
1
- // This works in angular, but not react
2
- // let web3: typeof import('@solana/web3.js') | undefined;
3
- // let base58: typeof import('bs58') | undefined;
4
- //
5
- // try {
6
- // web3 = require('@solana/web3.js');
7
- // base58 = require('bs58');
8
- // } catch (e) {}
9
- //
10
- // export {web3, base58};
11
- // This works in react, but not angular
12
- import * as SolanaWeb3Js from '@solana/web3.js';
13
- import base58Imported from 'bs58';
14
- const web3 = SolanaWeb3Js;
15
- const base58 = base58Imported;
16
- export { web3, base58 };
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU29sYW5hUGVlckRlcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb2luZmxvd2xhYnMvc3JjL2xpYi9jb21tb24vU29sYW5hUGVlckRlcHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdUNBQXVDO0FBQ3ZDLDBEQUEwRDtBQUMxRCxpREFBaUQ7QUFDakQsRUFBRTtBQUNGLFFBQVE7QUFDUix1Q0FBdUM7QUFDdkMsOEJBQThCO0FBQzlCLGlCQUFpQjtBQUNqQixFQUFFO0FBQ0YseUJBQXlCO0FBRXpCLHVDQUF1QztBQUN2QyxPQUFPLEtBQUssWUFBWSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sY0FBYyxNQUFNLE1BQU0sQ0FBQztBQUVsQyxNQUFNLElBQUksR0FBb0MsWUFBWSxDQUFDO0FBQzNELE1BQU0sTUFBTSxHQUFzQyxjQUFjLENBQUM7QUFDakUsT0FBTyxFQUFDLElBQUksRUFBRSxNQUFNLEVBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIFRoaXMgd29ya3MgaW4gYW5ndWxhciwgYnV0IG5vdCByZWFjdFxuLy8gbGV0IHdlYjM6IHR5cGVvZiBpbXBvcnQoJ0Bzb2xhbmEvd2ViMy5qcycpIHwgdW5kZWZpbmVkO1xuLy8gbGV0IGJhc2U1ODogdHlwZW9mIGltcG9ydCgnYnM1OCcpIHwgdW5kZWZpbmVkO1xuLy9cbi8vIHRyeSB7XG4vLyAgIHdlYjMgPSByZXF1aXJlKCdAc29sYW5hL3dlYjMuanMnKTtcbi8vICAgYmFzZTU4ID0gcmVxdWlyZSgnYnM1OCcpO1xuLy8gfSBjYXRjaCAoZSkge31cbi8vXG4vLyBleHBvcnQge3dlYjMsIGJhc2U1OH07XG5cbi8vIFRoaXMgd29ya3MgaW4gcmVhY3QsIGJ1dCBub3QgYW5ndWxhclxuaW1wb3J0ICogYXMgU29sYW5hV2ViM0pzIGZyb20gJ0Bzb2xhbmEvd2ViMy5qcyc7XG5pbXBvcnQgYmFzZTU4SW1wb3J0ZWQgZnJvbSAnYnM1OCc7XG5cbmNvbnN0IHdlYjM6IHR5cGVvZiBTb2xhbmFXZWIzSnMgfCB1bmRlZmluZWQgPSBTb2xhbmFXZWIzSnM7XG5jb25zdCBiYXNlNTg6IHR5cGVvZiBiYXNlNThJbXBvcnRlZCB8IHVuZGVmaW5lZCA9IGJhc2U1OEltcG9ydGVkO1xuZXhwb3J0IHt3ZWIzLCBiYXNlNTh9O1xuIl19