@coinflowlabs/angular 0.3.0 → 0.3.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.
package/README.md CHANGED
@@ -4,6 +4,10 @@ This library was generated with [Angular CLI](https://github.com/angular/angular
4
4
 
5
5
  # Changelog
6
6
 
7
+ ## 0.3.1
8
+
9
+ - Added sessionKey authentication mechanism to `CoinflowWithdraw`
10
+
7
11
  ## 0.3.0
8
12
 
9
13
  - Added sessionKey authentication mechanism to `CoinflowPurchase`
@@ -7,20 +7,28 @@ var IFrameMessageMethods;
7
7
  IFrameMessageMethods["SendTransaction"] = "sendTransaction";
8
8
  IFrameMessageMethods["HeightChange"] = "heightChange";
9
9
  IFrameMessageMethods["Success"] = "success";
10
- IFrameMessageMethods["Load"] = "load";
10
+ IFrameMessageMethods["Loaded"] = "loaded";
11
11
  })(IFrameMessageMethods || (IFrameMessageMethods = {}));
12
12
  export function getWalletPubkey(input) {
13
- if ('wallet' in input && input.wallet) {
14
- const { wallet } = input;
15
- if ('publicKey' in wallet) {
16
- return wallet.publicKey.toString();
17
- }
18
- if ('address' in wallet) {
19
- return wallet.address;
20
- }
21
- if ('accountId' in wallet) {
22
- return wallet.accountId;
23
- }
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;
24
32
  }
25
33
  return null;
26
34
  }
@@ -56,32 +64,66 @@ export function handleIFrameMessage(rawMessage, handlers) {
56
64
  return;
57
65
  handlers.onSuccess(walletCall.info);
58
66
  return;
67
+ case IFrameMessageMethods.Loaded:
68
+ return;
59
69
  }
60
70
  console.warn(`Didn't expect to get here, handleIFrameMessage method:${method} is not one of ${Object.values(IFrameMessageMethods)}`);
61
71
  }
62
72
  export function getHandlers(props) {
63
- if (!props.blockchain) {
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) {
64
88
  return {
65
89
  handleSendTransaction: () => {
66
- throw new Error('handleSendTransaction Not Implemented for sessionKey');
90
+ throw new Error('handleSendTransaction Not Implemented');
67
91
  },
68
92
  handleSignMessage: () => {
69
- throw new Error('handleSendTransaction Not Implemented for sessionKey');
93
+ throw new Error('handleSendTransaction Not Implemented');
70
94
  },
71
95
  handleSignTransaction: () => {
72
- throw new Error('handleSendTransaction Not Implemented for sessionKey');
96
+ throw new Error('handleSendTransaction Not Implemented');
73
97
  },
74
98
  onSuccess: props.onSuccess,
75
99
  };
76
100
  }
77
- return CoinflowUtils.byBlockchain(props.blockchain, {
78
- solana: () => getSolanaWalletHandlers(props),
79
- near: () => getNearWalletHandlers(props),
80
- eth: () => getEvmWalletHandlers(props),
81
- polygon: () => getEvmWalletHandlers(props),
82
- base: () => getEvmWalletHandlers(props),
83
- arbitrum: () => getEvmWalletHandlers(props),
84
- user: () => getIdWalletHandlers(props),
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),
85
127
  })();
86
128
  }
87
129
  function getSolanaWalletHandlers({ wallet, onSuccess, }) {
@@ -129,11 +171,10 @@ function getSolanaTransaction(data) {
129
171
  return vtx;
130
172
  }
131
173
  function getNearWalletHandlers({ wallet, onSuccess, }) {
132
- const nearWallet = wallet;
133
174
  return {
134
175
  handleSendTransaction: async (transaction) => {
135
176
  const action = JSON.parse(Buffer.from(transaction, 'base64').toString());
136
- const executionOutcome = await nearWallet.signAndSendTransaction(action);
177
+ const executionOutcome = await wallet.signAndSendTransaction(action);
137
178
  if (!executionOutcome)
138
179
  throw new Error('Transaction did not send');
139
180
  const { transaction: transactionResult } = executionOutcome;
@@ -143,20 +184,19 @@ function getNearWalletHandlers({ wallet, onSuccess, }) {
143
184
  };
144
185
  }
145
186
  function getEvmWalletHandlers({ wallet, onSuccess, }) {
146
- const evmWallet = wallet;
147
187
  return {
148
188
  handleSendTransaction: async (transaction) => {
149
189
  const tx = JSON.parse(Buffer.from(transaction, 'base64').toString());
150
- const { hash } = await evmWallet.sendTransaction(tx);
190
+ const { hash } = await wallet.sendTransaction(tx);
151
191
  return hash;
152
192
  },
153
193
  handleSignMessage: async (message) => {
154
- return evmWallet.signMessage(message);
194
+ return wallet.signMessage(message);
155
195
  },
156
196
  onSuccess,
157
197
  };
158
198
  }
159
- function getIdWalletHandlers({ onSuccess, }) {
199
+ function getSessionKeyHandlers({ onSuccess, }) {
160
200
  return {
161
201
  handleSendTransaction: async () => {
162
202
  return Promise.resolve('');
@@ -164,4 +204,4 @@ function getIdWalletHandlers({ onSuccess, }) {
164
204
  onSuccess,
165
205
  };
166
206
  }
167
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29pbmZsb3dMaWJNZXNzYWdlSGFuZGxlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb2luZmxvd2xhYnMvc3JjL2xpYi9jb21tb24vQ29pbmZsb3dMaWJNZXNzYWdlSGFuZGxlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBUUEsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRTlDLE9BQU8sRUFBQyxJQUFJLEVBQUUsTUFBTSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFvQjlDLElBQUssb0JBT0o7QUFQRCxXQUFLLG9CQUFvQjtJQUN2QixtREFBMkIsQ0FBQTtJQUMzQiwyREFBbUMsQ0FBQTtJQUNuQywyREFBbUMsQ0FBQTtJQUNuQyxxREFBNkIsQ0FBQTtJQUM3QiwyQ0FBbUIsQ0FBQTtJQUNuQixxQ0FBYSxDQUFBO0FBQ2YsQ0FBQyxFQVBJLG9CQUFvQixLQUFwQixvQkFBb0IsUUFPeEI7QUFFRCxNQUFNLFVBQVUsZUFBZSxDQUM3QixLQUV1RDtJQUV2RCxJQUFJLFFBQVEsSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3RDLE1BQU0sRUFBQyxNQUFNLEVBQUMsR0FBRyxLQUFLLENBQUM7UUFDdkIsSUFBSSxXQUFXLElBQUksTUFBTSxFQUFFLENBQUM7WUFDMUIsT0FBTyxNQUFNLENBQUMsU0FBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3RDLENBQUM7UUFFRCxJQUFJLFNBQVMsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUN4QixPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUM7UUFDeEIsQ0FBQztRQUVELElBQUksV0FBVyxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQzFCLE9BQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQztRQUMxQixDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQUVELE1BQU0sVUFBVSxtQkFB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Q0FBQztRQUNELFNBQVM7S0FDVixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvaW5mbG93UHVyY2hhc2VQcm9wcyxcbiAgQ29pbmZsb3dTZXNzaW9uS2V5UHVyY2hhc2VQcm9wcyxcbiAgRXRoV2FsbGV0LFxuICBOZWFyV2FsbGV0LFxuICBPblN1Y2Nlc3NNZXRob2QsXG4gIFNvbGFuYVdhbGxldCxcbn0gZnJvbSAnLi9Db2luZmxvd1R5cGVzJztcbmltcG9ydCB7Q29pbmZsb3dVdGlsc30gZnJvbSAnLi9Db2luZmxvd1V0aWxzJztcbmltcG9ydCB0eXBlIHtUcmFuc2FjdGlvbiwgVmVyc2lvbmVkVHJhbnNhY3Rpb259IGZyb20gJ0Bzb2xhbmEvd2ViMy5qcyc7XG5pbXBvcnQge3dlYjMsIGJhc2U1OH0gZnJvbSAnLi9Tb2xhbmFQZWVyRGVwcyc7XG5cbmV4cG9ydCB0eXBlIFdhbGxldENhbGwgPVxuICB8IHttZXRob2Q6IElGcmFtZU1lc3NhZ2VNZXRob2RzOyBkYXRhOiBzdHJpbmd9XG4gIHwgU3VjY2Vzc1dhbGxldENhbGw7XG5cbnR5cGUgU3VjY2Vzc1dhbGxldENhbGwgPSB7XG4gIG1ldGhvZDogSUZyYW1lTWVzc2FnZU1ldGhvZHMuU3VjY2VzcztcbiAgZGF0YTogc3RyaW5nO1xuICBpbmZvOiB7cGF5bWVudElkOiBzdHJpbmc7IGhhc2g/OiBzdHJpbmd9O1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBJRnJhbWVNZXNzYWdlSGFuZGxlcnMge1xuICBoYW5kbGVTZW5kVHJhbnNhY3Rpb246ICh0cmFuc2FjdGlvbjogc3RyaW5nKSA9PiBQcm9taXNlPHN0cmluZz47XG4gIGhhbmRsZVNpZ25NZXNzYWdlPzogKG1lc3NhZ2U6IHN0cmluZykgPT4gUHJvbWlzZTxzdHJpbmc+O1xuICBoYW5kbGVTaWduVHJhbnNhY3Rpb24/OiAodHJhbnNhY3Rpb246IHN0cmluZykgPT4gUHJvbWlzZTxzdHJpbmc+O1xuICBoYW5kbGVIZWlnaHRDaGFuZ2U/OiAoaGVpZ2h0OiBzdHJpbmcpID0+IHZvaWQ7XG4gIG9uU3VjY2VzczogT25TdWNjZXNzTWV0aG9kIHwgdW5kZWZpbmVkO1xufVxuXG5lbnVtIElGcmFtZU1lc3NhZ2VNZXRob2RzIHtcbiAgU2lnbk1lc3NhZ2UgPSAnc2lnbk1lc3NhZ2UnLFxuICBTaWduVHJhbnNhY3Rpb24gPSAnc2lnblRyYW5zYWN0aW9uJyxcbiAgU2VuZFRyYW5zYWN0aW9uID0gJ3NlbmRUcmFuc2FjdGlvbicsXG4gIEhlaWdodENoYW5nZSA9ICdoZWlnaHRDaGFuZ2UnLFxuICBTdWNjZXNzID0gJ3N1Y2Nlc3MnLFxuICBMb2FkID0gJ2xvYWQnLFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0V2FsbGV0UHVia2V5KFxuICBpbnB1dDpcbiAgICB8IFBpY2s8Q29pbmZsb3dQdXJjaGFzZVByb3BzLCAnd2FsbGV0Jz5cbiAgICB8IFBpY2s8Q29pbmZsb3dTZXNzaW9uS2V5UHVyY2hhc2VQcm9wcywgJ3Nlc3Npb25LZXknPlxuKTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gIGlmICgnd2FsbGV0JyBpbiBpbnB1dCAmJiBpbnB1dC53YWxsZXQpIHtcbiAgICBjb25zdCB7d2FsbGV0fSA9IGlucHV0O1xuICAgIGlmICgncHVibGljS2V5JyBpbiB3YWxsZXQpIHtcbiAgICAgIHJldHVybiB3YWxsZXQucHVibGljS2V5IS50b1N0cmluZygpO1xuICAgIH1cblxuICAgIGlmICgnYWRkcmVzcycgaW4gd2FsbGV0KSB7XG4gICAgICByZXR1cm4gd2FsbGV0LmFkZHJlc3M7XG4gICAgfVxuXG4gICAgaWYgKCdhY2NvdW50SWQnIGluIHdhbGxldCkge1xuICAgICAgcmV0dXJuIHdhbGxldC5hY2NvdW50SWQ7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYW5kbGVJRnJhbWVNZXNzYWdlKFxuICByYXdNZXNzYWdlOiBzdHJpbmcsXG4gIGhhbmRsZXJzOiBJRnJhbWVNZXNzYWdlSGFuZGxlcnNcbik6IFByb21pc2U8c3RyaW5nPiB8IHZvaWQge1xuICBsZXQgd2FsbGV0Q2FsbDogV2FsbGV0Q2FsbDtcbiAgdHJ5IHtcbiAgICB3YWxsZXRDYWxsID0gSlNPTi5wYXJzZShyYXdNZXNzYWdlKTtcbiAgICBpZiAoISgnbWV0aG9kJyBpbiB3YWxsZXRDYWxsKSB8fCAhKCdkYXRhJyBpbiB3YWxsZXRDYWxsKSkgcmV0dXJuO1xuICB9IGNhdGNoIChlKSB7XG4gICAgY29uc29sZS5lcnJvcignaGFuZGxlSUZyYW1lTWVzc2FnZSBKU09OIHBhcnNlJywgZSk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3Qge2RhdGEsIG1ldGhvZH0gPSB3YWxsZXRDYWxsO1xuICBzd2l0Y2ggKG1ldGhvZCkge1xuICAgIGNhc2UgSUZyYW1lTWVzc2FnZU1ldGhvZHMuU2lnbk1lc3NhZ2U6XG4gICAgICBpZiAoIWhhbmRsZXJzLmhhbmRsZVNpZ25NZXNzYWdlKSByZXR1cm47XG4gICAgICByZXR1cm4gaGFuZGxlcnMuaGFuZGxlU2lnbk1lc3NhZ2UoZGF0YSk7XG4gICAgY2FzZSBJRnJhbWVNZXNzYWdlTWV0aG9kcy5TaWduVHJhbnNhY3Rpb246XG4gICAgICBpZiAoIWhhbmRsZXJzLmhhbmRsZVNpZ25UcmFuc2FjdGlvbikgcmV0dXJuO1xuICAgICAgcmV0dXJuIGhhbmRsZXJzLmhhbmRsZVNpZ25UcmFuc2FjdGlvbihkYXRhKTtcbiAgICBjYXNlIElGcmFtZU1lc3NhZ2VNZXRob2RzLlNlbmRUcmFuc2FjdGlvbjpcbiAgICAgIHJldHVybiBoYW5kbGVycy5oYW5kbGVTZW5kVHJhbnNhY3Rpb24oZGF0YSk7XG4gICAgY2FzZSBJRnJhbWVNZXNzYWdlTWV0aG9kcy5IZWlnaHRDaGFuZ2U6XG4gICAgICBpZiAoIWhhbmRsZXJzLmhhbmRsZUhlaWdodENoYW5nZSkgcmV0dXJuO1xuICAgICAgcmV0dXJuIGhhbmRsZXJzLmhhbmRsZUhlaWdodENoYW5nZShkYXRhKTtcbiAgICBjYXNlIElGcmFtZU1lc3NhZ2VNZXRob2RzLlN1Y2Nlc3M6XG4gICAgICBpZiAoIWhhbmRsZXJzLm9uU3VjY2VzcykgcmV0dXJuO1xuICAgICAgaGFuZGxlcnMub25TdWNjZXNzKCh3YWxsZXRDYWxsIGFzIFN1Y2Nlc3NXYWxsZXRDYWxsKS5pbmZvKTtcbiAgICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnNvbGUud2FybihcbiAgICBgRGlkbid0IGV4cGVjdCB0byBnZXQgaGVyZSwgaGFuZGxlSUZyYW1lTWVzc2FnZSBtZXRob2Q6JHttZXRob2R9IGlzIG5vdCBvbmUgb2YgJHtPYmplY3QudmFsdWVzKElGcmFtZU1lc3NhZ2VNZXRob2RzKX1gXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRIYW5kbGVycyhcbiAgcHJvcHM6IFBpY2s8Q29pbmZsb3dQdXJjaGFzZVByb3BzLCAnd2FsbGV0JyB8ICdibG9ja2NoYWluJyB8ICdvblN1Y2Nlc3MnPlxuKTogT21pdDxJRnJhbWVNZXNzYWdlSGFuZGxlcnMsICdoYW5kbGVIZWlnaHRDaGFuZ2UnPiB7XG4gIGlmICghcHJvcHMuYmxvY2tjaGFpbikge1xuICAgIHJldHVybiB7XG4gICAgICBoYW5kbGVTZW5kVHJhbnNhY3Rpb246ICgpID0+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdoYW5kbGVTZW5kVHJhbnNhY3Rpb24gTm90IEltcGxlbWVudGVkIGZvciBzZXNzaW9uS2V5Jyk7XG4gICAgICB9LFxuICAgICAgaGFuZGxlU2lnbk1lc3NhZ2U6ICgpID0+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdoYW5kbGVTZW5kVHJhbnNhY3Rpb24gTm90IEltcGxlbWVudGVkIGZvciBzZXNzaW9uS2V5Jyk7XG4gICAgICB9LFxuICAgICAgaGFuZGxlU2lnblRyYW5zYWN0aW9uOiAoKSA9PiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignaGFuZGxlU2VuZFRyYW5zYWN0aW9uIE5vdCBJbXBsZW1lbnRlZCBmb3Igc2Vzc2lvbktleScpO1xuICAgICAgfSxcbiAgICAgIG9uU3VjY2VzczogcHJvcHMub25TdWNjZXNzLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4gQ29pbmZsb3dVdGlscy5ieUJsb2NrY2hhaW4ocHJvcHMuYmxvY2tjaGFpbiwge1xuICAgIHNvbGFuYTogKCkgPT4gZ2V0U29sYW5hV2FsbGV0SGFuZGxlcnMocHJvcHMpLFxuICAgIG5lYXI6ICgpID0+IGdldE5lYXJXYWxsZXRIYW5kbGVycyhwcm9wcyksXG4gICAgZXRoOiAoKSA9PiBnZXRFdm1XYWxsZXRIYW5kbGVycyhwcm9wcyksXG4gICAgcG9seWdvbjogKCkgPT4gZ2V0RXZtV2FsbGV0SGFuZGxlcnMocHJvcHMpLFxuICAgIGJhc2U6ICgpID0+IGdldEV2bVdhbGxldEhhbmRsZXJzKHByb3BzKSxcbiAgICBhcmJpdHJ1bTogKCkgPT4gZ2V0RXZtV2FsbGV0SGFuZGxlcnMocHJvcHMpLFxuICAgIHVzZXI6ICgpID0+IGdldElkV2FsbGV0SGFuZGxlcnMocHJvcHMpLFxuICB9KSgpO1xufVxuXG5mdW5jdGlvbiBnZXRTb2xhbmFXYWxsZXRIYW5kbGVycyh7XG4gIHdhbGxldCxcbiAgb25TdWNjZXNzLFxufTogUGljazxDb2luZmxvd1B1cmNoYXNlUHJvcHMsICd3YWxsZXQnIHwgJ29uU3VjY2Vzcyc+KTogT21pdDxcbiAgSUZyYW1lTWVzc2FnZUhhbmRsZXJzLFxuICAnaGFuZGxlSGVpZ2h0Q2hhbmdlJ1xuPiB7XG4gIHJldHVybiB7XG4gICAgaGFuZGxlU2VuZFRyYW5zYWN0aW9uOiBhc3luYyAodHJhbnNhY3Rpb246IHN0cmluZykgPT4ge1xuICAgICAgY29uc3QgdHggPSBnZXRTb2xhbmFUcmFuc2FjdGlvbih0cmFuc2FjdGlvbik7XG4gICAgICByZXR1cm4gYXdhaXQgKHdhbGxldCBhcyBTb2xhbmFXYWxsZXQpLnNlbmRUcmFuc2FjdGlvbih0eCk7XG4gICAgfSxcbiAgICBoYW5kbGVTaWduTWVzc2FnZTogYXN5bmMgKG1lc3NhZ2U6IHN0cmluZykgPT4ge1xuICAgICAgY29uc3Qgc2lnbk1lc3NhZ2UgPSAod2FsbGV0IGFzIFNvbGFuYVdhbGxldCkuc2lnbk1lc3NhZ2U7XG4gICAgICBpZiAoIXNpZ25NZXNzYWdlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignc2lnbk1lc3NhZ2UgaXMgbm90IHN1cHBvcnRlZCBieSB0aGlzIHdhbGxldCcpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBzaWduZWRNZXNzYWdlID0gYXdhaXQgc2lnbk1lc3NhZ2UoXG4gICAgICAgIG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShtZXNzYWdlKVxuICAgICAgKTtcbiAgICAgIGlmICghYmFzZTU4KSB0aHJvdyBuZXcgRXJyb3IoJ2JzNTggZGVwZW5kZW5jeSBpcyByZXF1aXJlZCcpO1xuICAgICAgcmV0dXJuIGJhc2U1OC5lbmNvZGUoc2lnbmVkTWVzc2FnZSk7XG4gICAgfSxcbiAgICBoYW5kbGVTaWduVHJhbnNhY3Rpb246IGFzeW5jICh0cmFuc2FjdGlvbjogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCBzaWduVHJhbnNhY3Rpb24gPSAod2FsbGV0IGFzIFNvbGFuYVdhbGxldCkuc2lnblRyYW5zYWN0aW9uO1xuICAgICAgaWYgKCFzaWduVHJhbnNhY3Rpb24pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdzaWduVHJhbnNhY3Rpb24gaXMgbm90IHN1cHBvcnRlZCBieSB0aGlzIHdhbGxldCcpO1xuICAgICAgfVxuICAgICAgY29uc3QgdHggPSBnZXRTb2xhbmFUcmFuc2FjdGlvbih0cmFuc2FjdGlvbik7XG4gICAgICBjb25zdCBzaWduZWRUcmFuc2FjdGlvbiA9IGF3YWl0IHNpZ25UcmFuc2FjdGlvbih0eCk7XG4gICAgICBpZiAoIWJhc2U1OCkgdGhyb3cgbmV3IEVycm9yKCdiczU4IGRlcGVuZGVuY3kgaXMgcmVxdWlyZWQnKTtcbiAgICAgIHJldHVybiBiYXNlNTguZW5jb2RlKFxuICAgICAgICBzaWduZWRUcmFuc2FjdGlvbi5zZXJpYWxpemUoe1xuICAgICAgICAgIHJlcXVpcmVBbGxTaWduYXR1cmVzOiBmYWxzZSxcbiAgICAgICAgICB2ZXJpZnlTaWduYXR1cmVzOiBmYWxzZSxcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfSxcbiAgICBvblN1Y2Nlc3MsXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldFNvbGFuYVRyYW5zYWN0aW9uKFxuICBkYXRhOiBzdHJpbmdcbik6IFRyYW5zYWN0aW9uIHwgVmVyc2lvbmVkVHJhbnNhY3Rpb24ge1xuICBpZiAoIXdlYjMpXG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ0Bzb2xhbmEvd2ViMy5qcyBpcyBub3QgZGVmaW5lZC4gUGxlYXNlIGluc3RhbGwgQHNvbGFuYS93ZWIzLmpzIGludG8geW91ciBwcm9qZWN0J1xuICAgICk7XG5cbiAgaWYgKCFiYXNlNTgpXG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ2JzNTggaXMgbm90IGRlZmluZWQuIFBsZWFzZSBpbnN0YWxsIGJzNTggaW50byB5b3VyIHByb2plY3QnXG4gICAgKTtcblxuICBjb25zdCBwYXJzZWRVSW50OEFycmF5ID0gYmFzZTU4LmRlY29kZShkYXRhKTtcbiAgY29uc3QgdnR4ID0gd2ViMy5WZXJzaW9uZWRUcmFuc2FjdGlvbi5kZXNlcmlhbGl6ZShwYXJzZWRVSW50OEFycmF5KTtcbiAgaWYgKHZ0eC52ZXJzaW9uID09PSAnbGVnYWN5JykgcmV0dXJuIHdlYjMuVHJhbnNhY3Rpb24uZnJvbShwYXJzZWRVSW50OEFycmF5KTtcbiAgcmV0dXJuIHZ0eDtcbn1cblxuZnVuY3Rpb24gZ2V0TmVhcldhbGxldEhhbmRsZXJzKHtcbiAgd2FsbGV0LFxuICBvblN1Y2Nlc3MsXG59OiBQaWNrPENvaW5mbG93UHVyY2hhc2VQcm9wcywgJ3dhbGxldCcgfCAnb25TdWNjZXNzJz4pOiBPbWl0PFxuICBJRnJhbWVNZXNzYWdlSGFuZGxlcnMsXG4gICdoYW5kbGVIZWlnaHRDaGFuZ2UnXG4+IHtcbiAgY29uc3QgbmVhcldhbGxldCA9IHdhbGxldCBhcyBOZWFyV2FsbGV0O1xuICByZXR1cm4ge1xuICAgIGhhbmRsZVNlbmRUcmFuc2FjdGlvbjogYXN5bmMgKHRyYW5zYWN0aW9uOiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IGFjdGlvbiA9IEpTT04ucGFyc2UoQnVmZmVyLmZyb20odHJhbnNhY3Rpb24sICdiYXNlNjQnKS50b1N0cmluZygpKTtcbiAgICAgIGNvbnN0IGV4ZWN1dGlvbk91dGNvbWUgPSBhd2FpdCBuZWFyV2FsbGV0LnNpZ25BbmRTZW5kVHJhbnNhY3Rpb24oYWN0aW9uKTtcbiAgICAgIGlmICghZXhlY3V0aW9uT3V0Y29tZSkgdGhyb3cgbmV3IEVycm9yKCdUcmFuc2FjdGlvbiBkaWQgbm90IHNlbmQnKTtcbiAgICAgIGNvbnN0IHt0cmFuc2FjdGlvbjogdHJhbnNhY3Rpb25SZXN1bHR9ID0gZXhlY3V0aW9uT3V0Y29tZTtcbiAgICAgIHJldHVybiB0cmFuc2FjdGlvblJlc3VsdC5oYXNoO1xuICAgIH0sXG4gICAgb25TdWNjZXNzLFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRFdm1XYWxsZXRIYW5kbGVycyh7XG4gIHdhbGxldCxcbiAgb25TdWNjZXNzLFxufTogUGljazxDb2luZmxvd1B1cmNoYXNlUHJvcHMsICd3YWxsZXQnIHwgJ29uU3VjY2Vzcyc+KTogT21pdDxcbiAgSUZyYW1lTWVzc2FnZUhhbmRsZXJzLFxuICAnaGFuZGxlSGVpZ2h0Q2hhbmdlJ1xuPiB7XG4gIGNvbnN0IGV2bVdhbGxldCA9IHdhbGxldCBhcyBFdGhXYWxsZXQ7XG4gIHJldHVybiB7XG4gICAgaGFuZGxlU2VuZFRyYW5zYWN0aW9uOiBhc3luYyAodHJhbnNhY3Rpb246IHN0cmluZykgPT4ge1xuICAgICAgY29uc3QgdHggPSBKU09OLnBhcnNlKEJ1ZmZlci5mcm9tKHRyYW5zYWN0aW9uLCAnYmFzZTY0JykudG9TdHJpbmcoKSk7XG4gICAgICBjb25zdCB7aGFzaH0gPSBhd2FpdCBldm1XYWxsZXQuc2VuZFRyYW5zYWN0aW9uKHR4KTtcbiAgICAgIHJldHVybiBoYXNoO1xuICAgIH0sXG4gICAgaGFuZGxlU2lnbk1lc3NhZ2U6IGFzeW5jIChtZXNzYWdlOiBzdHJpbmcpID0+IHtcbiAgICAgIHJldHVybiBldm1XYWxsZXQuc2lnbk1lc3NhZ2UobWVzc2FnZSk7XG4gICAgfSxcbiAgICBvblN1Y2Nlc3MsXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldElkV2FsbGV0SGFuZGxlcnMoe1xuICBvblN1Y2Nlc3MsXG59OiBQaWNrPENvaW5mbG93UHVyY2hhc2VQcm9wcywgJ29uU3VjY2Vzcyc+KTogT21pdDxcbiAgSUZyYW1lTWVzc2FnZUhhbmRsZXJzLFxuICAnaGFuZGxlSGVpZ2h0Q2hhbmdlJ1xuPiB7XG4gIHJldHVybiB7XG4gICAgaGFuZGxlU2VuZFRyYW5zYWN0aW9uOiBhc3luYyAoKSA9PiB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCcnKTtcbiAgICB9LFxuICAgIG9uU3VjY2VzcyxcbiAgfTtcbn1cbiJdfQ==
207
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29pbmZsb3dMaWJNZXNzYWdlSGFuZGxlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb2luZmxvd2xhYnMvc3JjL2xpYi9jb21tb24vQ29pbmZsb3dMaWJNZXNzYWdlSGFuZGxlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBU0EsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRTlDLE9BQU8sRUFBQyxJQUFJLEVBQUUsTUFBTSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFvQjlDLElBQUssb0JBT0o7QUFQRCxXQUFLLG9CQUFvQjtJQUN2QixtREFBMkIsQ0FBQTtJQUMzQiwyREFBbUMsQ0FBQTtJQUNuQywyREFBbUMsQ0FBQTtJQUNuQyxxREFBNkIsQ0FBQTtJQUM3QiwyQ0FBbUIsQ0FBQTtJQUNuQix5Q0FBaUIsQ0FBQTtBQUNuQixDQUFDLEVBUEksb0JBQW9CLEtBQXBCLG9CQUFvQixRQU94QjtBQUVELE1BQU0sVUFBVSxlQUFlLENBQzdCLEtBQTRCO0lBRTVCLElBQUksTUFBK0IsQ0FBQztJQUNwQyxJQUNFLFFBQVEsSUFBSSxLQUFLO1FBQ2pCLE9BQU8sS0FBSyxDQUFDLE1BQU0sS0FBSyxRQUFRO1FBQ2hDLEtBQUssQ0FBQyxNQUFNO1FBQ1osUUFBUSxJQUFJLEtBQUssQ0FBQyxNQUFNO1FBRXhCLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQXFCLENBQUM7U0FDekMsSUFBSSxRQUFRLElBQUksS0FBSyxJQUFJLEtBQUssQ0FBQyxNQUFNO1FBQUUsTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7SUFFbEUsSUFBSSxDQUFDLE1BQU07UUFBRSxPQUFPO0lBRXBCLElBQUksT0FBTyxNQUFNLEtBQUssUUFBUTtRQUFFLE9BQU8sTUFBTSxDQUFDO0lBRTlDLElBQUksT0FBTyxNQUFNLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDL0IsSUFBSSxXQUFX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Q0FBQyxDQUFDO1FBQ3JDLENBQUM7UUFDRCxTQUFTO0tBQ1YsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLHFCQUFxQixDQUFDLEVBQzdCLFNBQVMsR0FDZ0M7SUFJekMsT0FBTztRQUNMLHFCQUFxQixFQUFFLEtBQUssSUFBSSxFQUFFO1lBQ2hDLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM3QixDQUFDO1FBQ0QsU0FBUztLQUNWLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29pbmZsb3dCbG9ja2NoYWluLFxuICBDb2luZmxvd1B1cmNoYXNlUHJvcHMsXG4gIEV0aFdhbGxldCxcbiAgTmVhcldhbGxldCxcbiAgT25TdWNjZXNzTWV0aG9kLFxuICBTb2xhbmFXYWxsZXQsXG4gIFdhbGxldFR5cGVzLFxufSBmcm9tICcuL0NvaW5mbG93VHlwZXMnO1xuaW1wb3J0IHtDb2luZmxvd1V0aWxzfSBmcm9tICcuL0NvaW5mbG93VXRpbHMnO1xuaW1wb3J0IHR5cGUge1RyYW5zYWN0aW9uLCBWZXJzaW9uZWRUcmFuc2FjdGlvbn0gZnJvbSAnQHNvbGFuYS93ZWIzLmpzJztcbmltcG9ydCB7d2ViMywgYmFzZTU4fSBmcm9tICcuL1NvbGFuYVBlZXJEZXBzJztcblxuZXhwb3J0IHR5cGUgV2FsbGV0Q2FsbCA9XG4gIHwge21ldGhvZDogSUZyYW1lTWVzc2FnZU1ldGhvZHM7IGRhdGE6IHN0cmluZ31cbiAgfCBTdWNjZXNzV2FsbGV0Q2FsbDtcblxudHlwZSBTdWNjZXNzV2FsbGV0Q2FsbCA9IHtcbiAgbWV0aG9kOiBJRnJhbWVNZXNzYWdlTWV0aG9kcy5TdWNjZXNzO1xuICBkYXRhOiBzdHJpbmc7XG4gIGluZm86IHtwYXltZW50SWQ6IHN0cmluZzsgaGFzaD86IHN0cmluZ307XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIElGcmFtZU1lc3NhZ2VIYW5kbGVycyB7XG4gIGhhbmRsZVNlbmRUcmFuc2FjdGlvbjogKHRyYW5zYWN0aW9uOiBzdHJpbmcpID0+IFByb21pc2U8c3RyaW5nPjtcbiAgaGFuZGxlU2lnbk1lc3NhZ2U/OiAobWVzc2FnZTogc3RyaW5nKSA9PiBQcm9taXNlPHN0cmluZz47XG4gIGhhbmRsZVNpZ25UcmFuc2FjdGlvbj86ICh0cmFuc2FjdGlvbjogc3RyaW5nKSA9PiBQcm9taXNlPHN0cmluZz47XG4gIGhhbmRsZUhlaWdodENoYW5nZT86IChoZWlnaHQ6IHN0cmluZykgPT4gdm9pZDtcbiAgb25TdWNjZXNzOiBPblN1Y2Nlc3NNZXRob2QgfCB1bmRlZmluZWQ7XG59XG5cbmVudW0gSUZyYW1lTWVzc2FnZU1ldGhvZHMge1xuICBTaWduTWVzc2FnZSA9ICdzaWduTWVzc2FnZScsXG4gIFNpZ25UcmFuc2FjdGlvbiA9ICdzaWduVHJhbnNhY3Rpb24nLFxuICBTZW5kVHJhbnNhY3Rpb24gPSAnc2VuZFRyYW5zYWN0aW9uJyxcbiAgSGVpZ2h0Q2hhbmdlID0gJ2hlaWdodENoYW5nZScsXG4gIFN1Y2Nlc3MgPSAnc3VjY2VzcycsXG4gIExvYWRlZCA9ICdsb2FkZWQnLFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0V2FsbGV0UHVia2V5KFxuICBpbnB1dDogQ29pbmZsb3dQdXJjaGFzZVByb3BzXG4pOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgbGV0IHdhbGxldDogV2FsbGV0VHlwZXMgfCB1bmRlZmluZWQ7XG4gIGlmIChcbiAgICAnc2lnbmVyJyBpbiBpbnB1dCAmJlxuICAgIHR5cGVvZiBpbnB1dC5zaWduZXIgPT09ICdvYmplY3QnICYmXG4gICAgaW5wdXQuc2lnbmVyICYmXG4gICAgJ3dhbGxldCcgaW4gaW5wdXQuc2lnbmVyXG4gIClcbiAgICB3YWxsZXQgPSBpbnB1dC5zaWduZXIud2FsbGV0IGFzIFdhbGxldFR5cGVzO1xuICBlbHNlIGlmICgnd2FsbGV0JyBpbiBpbnB1dCAmJiBpbnB1dC53YWxsZXQpIHdhbGxldCA9IGlucHV0LndhbGxldDtcblxuICBpZiAoIXdhbGxldCkgcmV0dXJuO1xuXG4gIGlmICh0eXBlb2Ygd2FsbGV0ID09PSAnc3RyaW5nJykgcmV0dXJuIHdhbGxldDtcblxuICBpZiAodHlwZW9mIHdhbGxldCA9PT0gJ29iamVjdCcpIHtcbiAgICBpZiAoJ3B1YmxpY0tleScgaW4gd2FsbGV0KVxuICAgICAgcmV0dXJuIHdhbGxldC5wdWJsaWNLZXkgPyB3YWxsZXQucHVibGljS2V5LnRvU3RyaW5nKCkgOiB1bmRlZmluZWQ7XG5cbiAgICBpZiAoJ2FkZHJlc3MnIGluIHdhbGxldClcbiAgICAgIHJldHVybiB3YWxsZXQuYWRkcmVzcyA/ICh3YWxsZXQuYWRkcmVzcyBhcyBzdHJpbmcpIDogdW5kZWZpbmVkO1xuXG4gICAgaWYgKCdhY2NvdW50SWQnIGluIHdhbGxldClcbiAgICAgIHJldHVybiB3YWxsZXQuYWNjb3VudElkID8gKHdhbGxldC5hY2NvdW50SWQgYXMgc3RyaW5nKSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGFuZGxlSUZyYW1lTWVzc2FnZShcbiAgcmF3TWVzc2FnZTogc3RyaW5nLFxuICBoYW5kbGVyczogSUZyYW1lTWVzc2FnZUhhbmRsZXJzXG4pOiBQcm9taXNlPHN0cmluZz4gfCB2b2lkIHtcbiAgbGV0IHdhbGxldENhbGw6IFdhbGxldENhbGw7XG4gIHRyeSB7XG4gICAgd2FsbGV0Q2FsbCA9IEpTT04ucGFyc2UocmF3TWVzc2FnZSk7XG4gICAgaWYgKCEoJ21ldGhvZCcgaW4gd2FsbGV0Q2FsbCkgfHwgISgnZGF0YScgaW4gd2FsbGV0Q2FsbCkpIHJldHVybjtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUuZXJyb3IoJ2hhbmRsZUlGcmFtZU1lc3NhZ2UgSlNPTiBwYXJzZScsIGUpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHtkYXRhLCBtZXRob2R9ID0gd2FsbGV0Q2FsbDtcbiAgc3dpdGNoIChtZXRob2QpIHtcbiAgICBjYXNlIElGcmFtZU1lc3NhZ2VNZXRob2RzLlNpZ25NZXNzYWdlOlxuICAgICAgaWYgKCFoYW5kbGVycy5oYW5kbGVTaWduTWVzc2FnZSkgcmV0dXJuO1xuICAgICAgcmV0dXJuIGhhbmRsZXJzLmhhbmRsZVNpZ25NZXNzYWdlKGRhdGEpO1xuICAgIGNhc2UgSUZyYW1lTWVzc2FnZU1ldGhvZHMuU2lnblRyYW5zYWN0aW9uOlxuICAgICAgaWYgKCFoYW5kbGVycy5oYW5kbGVTaWduVHJhbnNhY3Rpb24pIHJldHVybjtcbiAgICAgIHJldHVybiBoYW5kbGVycy5oYW5kbGVTaWduVHJhbnNhY3Rpb24oZGF0YSk7XG4gICAgY2FzZSBJRnJhbWVNZXNzYWdlTWV0aG9kcy5TZW5kVHJhbnNhY3Rpb246XG4gICAgICByZXR1cm4gaGFuZGxlcnMuaGFuZGxlU2VuZFRyYW5zYWN0aW9uKGRhdGEpO1xuICAgIGNhc2UgSUZyYW1lTWVzc2FnZU1ldGhvZHMuSGVpZ2h0Q2hhbmdlOlxuICAgICAgaWYgKCFoYW5kbGVycy5oYW5kbGVIZWlnaHRDaGFuZ2UpIHJldHVybjtcbiAgICAgIHJldHVybiBoYW5kbGVycy5oYW5kbGVIZWlnaHRDaGFuZ2UoZGF0YSk7XG4gICAgY2FzZSBJRnJhbWVNZXNzYWdlTWV0aG9kcy5TdWNjZXNzOlxuICAgICAgaWYgKCFoYW5kbGVycy5vblN1Y2Nlc3MpIHJldHVybjtcbiAgICAgIGhhbmRsZXJzLm9uU3VjY2Vzcygod2FsbGV0Q2FsbCBhcyBTdWNjZXNzV2FsbGV0Q2FsbCkuaW5mbyk7XG4gICAgICByZXR1cm47XG4gICAgY2FzZSBJRnJhbWVNZXNzYWdlTWV0aG9kcy5Mb2FkZWQ6XG4gICAgICByZXR1cm47XG4gIH1cblxuICBjb25zb2xlLndhcm4oXG4gICAgYERpZG4ndCBleHBlY3QgdG8gZ2V0IGhlcmUsIGhhbmRsZUlGcmFtZU1lc3NhZ2UgbWV0aG9kOiR7bWV0aG9kfSBpcyBub3Qgb25lIG9mICR7T2JqZWN0LnZhbHVlcyhJRnJhbWVNZXNzYWdlTWV0aG9kcyl9YFxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SGFuZGxlcnMoXG4gIHByb3BzOiBDb2luZmxvd1B1cmNoYXNlUHJvcHNcbik6IE9taXQ8SUZyYW1lTWVzc2FnZUhhbmRsZXJzLCAnaGFuZGxlSGVpZ2h0Q2hhbmdlJz4ge1xuICBsZXQgY2hhaW46IENvaW5mbG93QmxvY2tjaGFpbiB8IHVuZGVmaW5lZDtcbiAgbGV0IHdhbGxldDogV2FsbGV0VHlwZXMgfCB1bmRlZmluZWQ7XG4gIGlmIChcbiAgICAnc2lnbmVyJyBpbiBwcm9wcyAmJlxuICAgIHR5cGVvZiBwcm9wcy5zaWduZXIgPT09ICdvYmplY3QnICYmXG4gICAgcHJvcHMuc2lnbmVyICYmXG4gICAgJ2Jsb2NrY2hhaW4nIGluIHByb3BzLnNpZ25lciAmJlxuICAgICd3YWxsZXQnIGluIHByb3BzLnNpZ25lclxuICApIHtcbiAgICBjaGFpbiA9IHByb3BzLnNpZ25lci5ibG9ja2NoYWluIGFzIENvaW5mbG93QmxvY2tjaGFpbjtcbiAgICB3YWxsZXQgPSBwcm9wcy5zaWduZXIud2FsbGV0IGFzIFdhbGxldFR5cGVzO1xuICB9IGVsc2UgaWYgKCdibG9ja2NoYWluJyBpbiBwcm9wcyAmJiBwcm9wcy5ibG9ja2NoYWluKSB7XG4gICAgY2hhaW4gPSBwcm9wcy5ibG9ja2NoYWluO1xuICAgIHdhbGxldCA9IHByb3BzLndhbGxldDtcbiAgfVxuXG4gIGlmICghY2hhaW4pIHtcbiAgICByZXR1cm4ge1xuICAgICAgaGFuZGxlU2VuZFRyYW5zYWN0aW9uOiAoKSA9PiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignaGFuZGxlU2VuZFRyYW5zYWN0aW9uIE5vdCBJbXBsZW1lbnRlZCcpO1xuICAgICAgfSxcbiAgICAgIGhhbmRsZVNpZ25NZXNzYWdlOiAoKSA9PiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignaGFuZGxlU2VuZFRyYW5zYWN0aW9uIE5vdCBJbXBsZW1lbnRlZCcpO1xuICAgICAgfSxcbiAgICAgIGhhbmRsZVNpZ25UcmFuc2FjdGlvbjogKCkgPT4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2hhbmRsZVNlbmRUcmFuc2FjdGlvbiBOb3QgSW1wbGVtZW50ZWQnKTtcbiAgICAgIH0sXG4gICAgICBvblN1Y2Nlc3M6IHByb3BzLm9uU3VjY2VzcyxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIENvaW5mbG93VXRpbHMuYnlCbG9ja2NoYWluKGNoYWluLCB7XG4gICAgc29sYW5hOiAoKSA9PlxuICAgICAgZ2V0U29sYW5hV2FsbGV0SGFuZGxlcnMoe1xuICAgICAgICB3YWxsZXQ6IHdhbGxldCBhcyBTb2xhbmFXYWxsZXQsXG4gICAgICAgIG9uU3VjY2VzczogcHJvcHMub25TdWNjZXNzLFxuICAgICAgfSksXG4gICAgbmVhcjogKCkgPT5cbiAgICAgIGdldE5lYXJXYWxsZXRIYW5kbGVycyh7XG4gICAgICAgIHdhbGxldDogd2FsbGV0IGFzIE5lYXJXYWxsZXQsXG4gICAgICAgIG9uU3VjY2VzczogcHJvcHMub25TdWNjZXNzLFxuICAgICAgfSksXG4gICAgZXRoOiAoKSA9PlxuICAgICAgZ2V0RXZtV2FsbGV0SGFuZGxlcnMoe1xuICAgICAgICB3YWxsZXQ6IHdhbGxldCBhcyBFdGhXYWxsZXQsXG4gICAgICAgIG9uU3VjY2VzczogcHJvcHMub25TdWNjZXNzLFxuICAgICAgfSksXG4gICAgcG9seWdvbjogKCkgPT5cbiAgICAgIGdldEV2bVdhbGxldEhhbmRsZXJzKHtcbiAgICAgICAgd2FsbGV0OiB3YWxsZXQgYXMgRXRoV2FsbGV0LFxuICAgICAgICBvblN1Y2Nlc3M6IHByb3BzLm9uU3VjY2VzcyxcbiAgICAgIH0pLFxuICAgIGJhc2U6ICgpID0+XG4gICAgICBnZXRFdm1XYWxsZXRIYW5kbGVycyh7XG4gICAgICAgIHdhbGxldDogd2FsbGV0IGFzIEV0aFdhbGxldCxcbiAgICAgICAgb25TdWNjZXNzOiBwcm9wcy5vblN1Y2Nlc3MsXG4gICAgICB9KSxcbiAgICBhcmJpdHJ1bTogKCkgPT5cbiAgICAgIGdldEV2bVdhbGxldEhhbmRsZXJzKHtcbiAgICAgICAgd2FsbGV0OiB3YWxsZXQgYXMgRXRoV2FsbGV0LFxuICAgICAgICBvblN1Y2Nlc3M6IHByb3BzLm9uU3VjY2VzcyxcbiAgICAgIH0pLFxuICAgIHVzZXI6ICgpID0+IGdldFNlc3Npb25LZXlIYW5kbGVycyhwcm9wcyksXG4gIH0pKCk7XG59XG5cbmZ1bmN0aW9uIGdldFNvbGFuYVdhbGxldEhhbmRsZXJzKHtcbiAgd2FsbGV0LFxuICBvblN1Y2Nlc3MsXG59OiB7XG4gIHdhbGxldDogU29sYW5hV2FsbGV0O1xuICBvblN1Y2Nlc3M/OiBPblN1Y2Nlc3NNZXRob2Q7XG59KTogT21pdDxJRnJhbWVNZXNzYWdlSGFuZGxlcnMsICdoYW5kbGVIZWlnaHRDaGFuZ2UnPiB7XG4gIHJldHVybiB7XG4gICAgaGFuZGxlU2VuZFRyYW5zYWN0aW9uOiBhc3luYyAodHJhbnNhY3Rpb246IHN0cmluZykgPT4ge1xuICAgICAgY29uc3QgdHggPSBnZXRTb2xhbmFUcmFuc2FjdGlvbih0cmFuc2FjdGlvbik7XG4gICAgICByZXR1cm4gYXdhaXQgd2FsbGV0LnNlbmRUcmFuc2FjdGlvbih0eCk7XG4gICAgfSxcbiAgICBoYW5kbGVTaWduTWVzc2FnZTogYXN5bmMgKG1lc3NhZ2U6IHN0cmluZykgPT4ge1xuICAgICAgY29uc3Qgc2lnbk1lc3NhZ2UgPSB3YWxsZXQuc2lnbk1lc3NhZ2U7XG4gICAgICBpZiAoIXNpZ25NZXNzYWdlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignc2lnbk1lc3NhZ2UgaXMgbm90IHN1cHBvcnRlZCBieSB0aGlzIHdhbGxldCcpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBzaWduZWRNZXNzYWdlID0gYXdhaXQgc2lnbk1lc3NhZ2UoXG4gICAgICAgIG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShtZXNzYWdlKVxuICAgICAgKTtcbiAgICAgIGlmICghYmFzZTU4KSB0aHJvdyBuZXcgRXJyb3IoJ2JzNTggZGVwZW5kZW5jeSBpcyByZXF1aXJlZCcpO1xuICAgICAgcmV0dXJuIGJhc2U1OC5lbmNvZGUoc2lnbmVkTWVzc2FnZSk7XG4gICAgfSxcbiAgICBoYW5kbGVTaWduVHJhbnNhY3Rpb246IGFzeW5jICh0cmFuc2FjdGlvbjogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCBzaWduVHJhbnNhY3Rpb24gPSB3YWxsZXQuc2lnblRyYW5zYWN0aW9uO1xuICAgICAgaWYgKCFzaWduVHJhbnNhY3Rpb24pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdzaWduVHJhbnNhY3Rpb24gaXMgbm90IHN1cHBvcnRlZCBieSB0aGlzIHdhbGxldCcpO1xuICAgICAgfVxuICAgICAgY29uc3QgdHggPSBnZXRTb2xhbmFUcmFuc2FjdGlvbih0cmFuc2FjdGlvbik7XG4gICAgICBjb25zdCBzaWduZWRUcmFuc2FjdGlvbiA9IGF3YWl0IHNpZ25UcmFuc2FjdGlvbih0eCk7XG4gICAgICBpZiAoIWJhc2U1OCkgdGhyb3cgbmV3IEVycm9yKCdiczU4IGRlcGVuZGVuY3kgaXMgcmVxdWlyZWQnKTtcbiAgICAgIHJldHVybiBiYXNlNTguZW5jb2RlKFxuICAgICAgICBzaWduZWRUcmFuc2FjdGlvbi5zZXJpYWxpemUoe1xuICAgICAgICAgIHJlcXVpcmVBbGxTaWduYXR1cmVzOiBmYWxzZSxcbiAgICAgICAgICB2ZXJpZnlTaWduYXR1cmVzOiBmYWxzZSxcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfSxcbiAgICBvblN1Y2Nlc3MsXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldFNvbGFuYVRyYW5zYWN0aW9uKFxuICBkYXRhOiBzdHJpbmdcbik6IFRyYW5zYWN0aW9uIHwgVmVyc2lvbmVkVHJhbnNhY3Rpb24ge1xuICBpZiAoIXdlYjMpXG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ0Bzb2xhbmEvd2ViMy5qcyBpcyBub3QgZGVmaW5lZC4gUGxlYXNlIGluc3RhbGwgQHNvbGFuYS93ZWIzLmpzIGludG8geW91ciBwcm9qZWN0J1xuICAgICk7XG5cbiAgaWYgKCFiYXNlNTgpXG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ2JzNTggaXMgbm90IGRlZmluZWQuIFBsZWFzZSBpbnN0YWxsIGJzNTggaW50byB5b3VyIHByb2plY3QnXG4gICAgKTtcblxuICBjb25zdCBwYXJzZWRVSW50OEFycmF5ID0gYmFzZTU4LmRlY29kZShkYXRhKTtcbiAgY29uc3QgdnR4ID0gd2ViMy5WZXJzaW9uZWRUcmFuc2FjdGlvbi5kZXNlcmlhbGl6ZShwYXJzZWRVSW50OEFycmF5KTtcbiAgaWYgKHZ0eC52ZXJzaW9uID09PSAnbGVnYWN5JykgcmV0dXJuIHdlYjMuVHJhbnNhY3Rpb24uZnJvbShwYXJzZWRVSW50OEFycmF5KTtcbiAgcmV0dXJuIHZ0eDtcbn1cblxuZnVuY3Rpb24gZ2V0TmVhcldhbGxldEhhbmRsZXJzKHtcbiAgd2FsbGV0LFxuICBvblN1Y2Nlc3MsXG59OiB7XG4gIHdhbGxldDogTmVhcldhbGxldDtcbiAgb25TdWNjZXNzPzogT25TdWNjZXNzTWV0aG9kO1xufSk6IE9taXQ8SUZyYW1lTWVzc2FnZUhhbmRsZXJzLCAnaGFuZGxlSGVpZ2h0Q2hhbmdlJz4ge1xuICByZXR1cm4ge1xuICAgIGhhbmRsZVNlbmRUcmFuc2FjdGlvbjogYXN5bmMgKHRyYW5zYWN0aW9uOiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IGFjdGlvbiA9IEpTT04ucGFyc2UoQnVmZmVyLmZyb20odHJhbnNhY3Rpb24sICdiYXNlNjQnKS50b1N0cmluZygpKTtcbiAgICAgIGNvbnN0IGV4ZWN1dGlvbk91dGNvbWUgPSBhd2FpdCB3YWxsZXQuc2lnbkFuZFNlbmRUcmFuc2FjdGlvbihhY3Rpb24pO1xuICAgICAgaWYgKCFleGVjdXRpb25PdXRjb21lKSB0aHJvdyBuZXcgRXJyb3IoJ1RyYW5zYWN0aW9uIGRpZCBub3Qgc2VuZCcpO1xuICAgICAgY29uc3Qge3RyYW5zYWN0aW9uOiB0cmFuc2FjdGlvblJlc3VsdH0gPSBleGVjdXRpb25PdXRjb21lO1xuICAgICAgcmV0dXJuIHRyYW5zYWN0aW9uUmVzdWx0Lmhhc2g7XG4gICAgfSxcbiAgICBvblN1Y2Nlc3MsXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldEV2bVdhbGxldEhhbmRsZXJzKHtcbiAgd2FsbGV0LFxuICBvblN1Y2Nlc3MsXG59OiB7XG4gIHdhbGxldDogRXRoV2FsbGV0O1xuICBvblN1Y2Nlc3M/OiBPblN1Y2Nlc3NNZXRob2Q7XG59KTogT21pdDxJRnJhbWVNZXNzYWdlSGFuZGxlcnMsICdoYW5kbGVIZWlnaHRDaGFuZ2UnPiB7XG4gIHJldHVybiB7XG4gICAgaGFuZGxlU2VuZFRyYW5zYWN0aW9uOiBhc3luYyAodHJhbnNhY3Rpb246IHN0cmluZykgPT4ge1xuICAgICAgY29uc3QgdHggPSBKU09OLnBhcnNlKEJ1ZmZlci5mcm9tKHRyYW5zYWN0aW9uLCAnYmFzZTY0JykudG9TdHJpbmcoKSk7XG4gICAgICBjb25zdCB7aGFzaH0gPSBhd2FpdCB3YWxsZXQuc2VuZFRyYW5zYWN0aW9uKHR4KTtcbiAgICAgIHJldHVybiBoYXNoO1xuICAgIH0sXG4gICAgaGFuZGxlU2lnbk1lc3NhZ2U6IGFzeW5jIChtZXNzYWdlOiBzdHJpbmcpID0+IHtcbiAgICAgIHJldHVybiB3YWxsZXQuc2lnbk1lc3NhZ2UobWVzc2FnZSk7XG4gICAgfSxcbiAgICBvblN1Y2Nlc3MsXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldFNlc3Npb25LZXlIYW5kbGVycyh7XG4gIG9uU3VjY2Vzcyxcbn06IFBpY2s8Q29pbmZsb3dQdXJjaGFzZVByb3BzLCAnb25TdWNjZXNzJz4pOiBPbWl0PFxuICBJRnJhbWVNZXNzYWdlSGFuZGxlcnMsXG4gICdoYW5kbGVIZWlnaHRDaGFuZ2UnXG4+IHtcbiAgcmV0dXJuIHtcbiAgICBoYW5kbGVTZW5kVHJhbnNhY3Rpb246IGFzeW5jICgpID0+IHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoJycpO1xuICAgIH0sXG4gICAgb25TdWNjZXNzLFxuICB9O1xufVxuIl19
@@ -23,4 +23,4 @@ export var CardType;
23
23
  CardType["AMEX"] = "AMEX";
24
24
  CardType["DISCOVER"] = "DISC";
25
25
  })(CardType || (CardType = {}));
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29pbmZsb3dUeXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvaW5mbG93bGFicy9zcmMvbGliL2NvbW1vbi9Db2luZmxvd1R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFBLE1BQU0sQ0FBTixJQUFZLGNBSVg7QUFKRCxXQUFZLGNBQWM7SUFDeEIscUNBQW1CLENBQUE7SUFDbkIsK0JBQWEsQ0FBQTtJQUNiLCtCQUFhLENBQUE7QUFDZixDQUFDLEVBSlcsY0FBYyxLQUFkLGNBQWMsUUFJekI7QUFFRCxNQUFNLENBQU4sSUFBWSxhQUlYO0FBSkQsV0FBWSxhQUFhO0lBQ3ZCLG9DQUFtQixDQUFBO0lBQ25CLGdDQUFlLENBQUE7SUFDZiw4QkFBYSxDQUFBO0FBQ2YsQ0FBQyxFQUpXLGFBQWEsS0FBYixhQUFhLFFBSXhCO0FBd05ELE1BQU0sQ0FBTixJQUFZLDBCQUlYO0FBSkQsV0FBWSwwQkFBMEI7SUFDcEMsMkRBQTZCLENBQUE7SUFDN0IsMkRBQTZCLENBQUE7SUFDN0IscURBQXVCLENBQUE7QUFDekIsQ0FBQyxFQUpXLDBCQUEwQixLQUExQiwwQkFBMEIsUUFJckM7QUE0UEQsTUFBTSxDQUFOLElBQVksUUFLWDtBQUxELFdBQVksUUFBUTtJQUNsQix5QkFBYSxDQUFBO0lBQ2IsK0JBQW1CLENBQUE7SUFDbkIseUJBQWEsQ0FBQTtJQUNiLDZCQUFpQixDQUFBO0FBQ25CLENBQUMsRUFMVyxRQUFRLEtBQVIsUUFBUSxRQUtuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtcbiAgQ29ubmVjdGlvbixcbiAgVmVyc2lvbmVkVHJhbnNhY3Rpb24sXG4gIFB1YmxpY0tleSxcbiAgU2lnbmVyLFxuICBUcmFuc2FjdGlvbixcbn0gZnJvbSAnQHNvbGFuYS93ZWIzLmpzJztcblxuZXhwb3J0IGVudW0gU2V0dGxlbWVudFR5cGUge1xuICBDcmVkaXRzID0gJ0NyZWRpdHMnLFxuICBVU0RDID0gJ1VTREMnLFxuICBCYW5rID0gJ0JhbmsnLFxufVxuXG5leHBvcnQgZW51bSBNZXJjaGFudFN0eWxlIHtcbiAgUm91bmRlZCA9ICdyb3VuZGVkJyxcbiAgU2hhcnAgPSAnc2hhcnAnLFxuICBQaWxsID0gJ3BpbGwnLFxufVxuXG5leHBvcnQgdHlwZSBNZXJjaGFudFRoZW1lID0ge1xuICBwcmltYXJ5Pzogc3RyaW5nO1xuICBiYWNrZ3JvdW5kPzogc3RyaW5nO1xuICBiYWNrZ3JvdW5kQWNjZW50Pzogc3RyaW5nO1xuICBiYWNrZ3JvdW5kQWNjZW50Mj86IHN0cmluZztcbiAgdGV4dENvbG9yPzogc3RyaW5nO1xuICB0ZXh0Q29sb3JBY2NlbnQ/OiBzdHJpbmc7XG4gIHRleHRDb2xvckFjdGlvbj86IHN0cmluZztcbiAgZm9udD86IHN0cmluZztcbiAgc3R5bGU/OiBNZXJjaGFudFN0eWxlO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBDdXN0b21lckluZm8ge1xuICBuYW1lPzogc3RyaW5nO1xuICB2ZXJpZmljYXRpb25JZD86IHN0cmluZztcbiAgZGlzcGxheU5hbWU/OiBzdHJpbmc7XG4gIGFkZHJlc3M/OiBzdHJpbmc7XG4gIGNpdHk/OiBzdHJpbmc7XG4gIHN0YXRlPzogc3RyaW5nO1xuICB6aXA/OiBzdHJpbmc7XG4gIGNvdW50cnk/OiBzdHJpbmc7XG4gIGlwPzogc3RyaW5nO1xuICBsYXQ/OiBzdHJpbmc7XG4gIGxuZz86IHN0cmluZztcbn1cblxuLyoqIENvaW5mbG93IFR5cGVzICoqL1xuZXhwb3J0IHR5cGUgQ29pbmZsb3dCbG9ja2NoYWluID1cbiAgfCAnc29sYW5hJ1xuICB8ICduZWFyJ1xuICB8ICdldGgnXG4gIHwgJ3BvbHlnb24nXG4gIHwgJ2Jhc2UnXG4gIHwgJ2FyYml0cnVtJ1xuICB8ICd1c2VyJztcbmV4cG9ydCB0eXBlIENvaW5mbG93RW52cyA9XG4gIHwgJ3Byb2QnXG4gIHwgJ3N0YWdpbmcnXG4gIHwgJ3N0YWdpbmctbGl2ZSdcbiAgfCAnc2FuZGJveCdcbiAgfCAnbG9jYWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvaW5mbG93VHlwZXMge1xuICBtZXJjaGFudElkOiBzdHJpbmc7XG4gIGVudj86IENvaW5mbG93RW52cztcbiAgbG9hZGVyQmFja2dyb3VuZD86IHN0cmluZztcbiAgYmxvY2tjaGFpbj86IENvaW5mbG93QmxvY2tjaGFpbiB8IHVuZGVmaW5lZDtcbiAgaGFuZGxlSGVpZ2h0Q2hhbmdlPzogKGhlaWdodDogc3RyaW5nKSA9PiB2b2lkO1xuICB0aGVtZT86IE1lcmNoYW50VGhlbWU7XG59XG5cbmV4cG9ydCB0eXBlIFBhcnRpYWxCeTxULCBLIGV4dGVuZHMga2V5b2YgVD4gPSBPbWl0PFQsIEs+ICYgUGFydGlhbDxQaWNrPFQsIEs+PjtcblxuZXhwb3J0IHR5cGUgT25TdWNjZXNzTWV0aG9kID0gKFxuICBhcmdzOlxuICAgIHwge1xuICAgICAgICBwYXltZW50SWQ6IHN0cmluZztcbiAgICAgICAgaGFzaD86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICB8IHN0cmluZ1xuKSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPjtcblxuLyoqIFdhbGxldHMgKiovXG5leHBvcnQgaW50ZXJmYWNlIFNvbGFuYVdhbGxldCB7XG4gIHB1YmxpY0tleTogUHVibGljS2V5IHwgbnVsbDtcbiAgc2lnblRyYW5zYWN0aW9uPzogPFQgZXh0ZW5kcyBUcmFuc2FjdGlvbiB8IFZlcnNpb25lZFRyYW5zYWN0aW9uPihcbiAgICB0cmFuc2FjdGlvbjogVFxuICApID0+IFByb21pc2U8VD47XG4gIHNlbmRUcmFuc2FjdGlvbjogPFQgZXh0ZW5kcyBUcmFuc2FjdGlvbiB8IFZlcnNpb25lZFRyYW5zYWN0aW9uPihcbiAgICB0cmFuc2FjdGlvbjogVFxuICApID0+IFByb21pc2U8c3RyaW5nPjtcbiAgc2lnbk1lc3NhZ2U/OiAobWVzc2FnZTogVWludDhBcnJheSkgPT4gUHJvbWlzZTxVaW50OEFycmF5Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZWFyV2FsbGV0IHtcbiAgYWNjb3VudElkOiBzdHJpbmc7XG4gIHNpZ25BbmRTZW5kVHJhbnNhY3Rpb246ICh0cmFuc2FjdGlvbjogdW5rbm93bikgPT4gUHJvbWlzZTx7XG4gICAgdHJhbnNhY3Rpb246IHtoYXNoOiBzdHJpbmd9O1xuICB9Pjtcbn1cblxudHlwZSBBY2Nlc3NMaXN0ID0gQXJyYXk8e2FkZHJlc3M6IHN0cmluZzsgc3RvcmFnZUtleXM6IEFycmF5PHN0cmluZz59PjtcbnR5cGUgQWNjZXNzTGlzdGlzaCA9XG4gIHwgQWNjZXNzTGlzdFxuICB8IEFycmF5PFtzdHJpbmcsIEFycmF5PHN0cmluZz5dPlxuICB8IFJlY29yZDxzdHJpbmcsIEFycmF5PHN0cmluZz4+O1xuXG5leHBvcnQgdHlwZSBFdGhXYWxsZXQgPSB7XG4gIGFkZHJlc3M6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIHNlbmRUcmFuc2FjdGlvbjogKHRyYW5zYWN0aW9uOiB7XG4gICAgdG86IHN0cmluZztcbiAgICBmcm9tPzogc3RyaW5nO1xuICAgIG5vbmNlPzogQnl0ZXMgfCBiaWdpbnQgfCBzdHJpbmcgfCBudW1iZXI7XG5cbiAgICBnYXNMaW1pdD86IEJ5dGVzIHwgYmlnaW50IHwgc3RyaW5nIHwgbnVtYmVyO1xuICAgIGdhc1ByaWNlPzogQnl0ZXMgfCBiaWdpbnQgfCBzdHJpbmcgfCBudW1iZXI7XG5cbiAgICBkYXRhPzogQnl0ZXNMaWtlO1xuICAgIHZhbHVlPzogQnl0ZXMgfCBiaWdpbnQgfCBzdHJpbmcgfCBudW1iZXI7XG4gICAgY2hhaW5JZD86IG51bWJlcjtcblxuICAgIHR5cGU/OiBudW1iZXI7XG4gICAgYWNjZXNzTGlzdD86IEFjY2Vzc0xpc3Rpc2g7XG5cbiAgICBtYXhQcmlvcml0eUZlZVBlckdhcz86IEJ5dGVzIHwgYmlnaW50IHwgc3RyaW5nIHwgbnVtYmVyO1xuICAgIG1heEZlZVBlckdhcz86IEJ5dGVzIHwgYmlnaW50IHwgc3RyaW5nIHwgbnVtYmVyO1xuXG4gICAgY3VzdG9tRGF0YT86IFJlY29yZDxzdHJpbmcsIGFueT47XG4gICAgY2NpcFJlYWRFbmFibGVkPzogYm9vbGVhbjtcbiAgfSkgPT4gUHJvbWlzZTx7aGFzaDogc3RyaW5nfT47XG4gIHNpZ25NZXNzYWdlOiAobWVzc2FnZTogc3RyaW5nKSA9PiBQcm9taXNlPHN0cmluZz47XG59O1xuXG4vKiogSGlzdG9yeSAqKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29pbmZsb3dTb2xhbmFIaXN0b3J5UHJvcHMgZXh0ZW5kcyBDb2luZmxvd1R5cGVzIHtcbiAgd2FsbGV0OiBTb2xhbmFXYWxsZXQ7XG4gIGNvbm5lY3Rpb246IENvbm5lY3Rpb247XG4gIGJsb2NrY2hhaW46ICdzb2xhbmEnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvaW5mbG93TmVhckhpc3RvcnlQcm9wcyBleHRlbmRzIENvaW5mbG93VHlwZXMge1xuICB3YWxsZXQ6IE5lYXJXYWxsZXQ7XG4gIGJsb2NrY2hhaW46ICduZWFyJztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb2luZmxvd0V2bUhpc3RvcnlQcm9wcyBleHRlbmRzIENvaW5mbG93VHlwZXMge1xuICB3YWxsZXQ6IEV0aFdhbGxldDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb2luZmxvd0V0aEhpc3RvcnlQcm9wcyBleHRlbmRzIENvaW5mbG93RXZtSGlzdG9yeVByb3BzIHtcbiAgYmxvY2tjaGFpbjogJ2V0aCc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29pbmZsb3dQb2x5Z29uSGlzdG9yeVByb3BzIGV4dGVuZHMgQ29pbmZsb3dFdm1IaXN0b3J5UHJvcHMge1xuICBibG9ja2NoYWluOiAncG9seWdvbic7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29pbmZsb3dCYXNlSGlzdG9yeVByb3BzIGV4dGVuZHMgQ29pbmZsb3dFdm1IaXN0b3J5UHJvcHMge1xuICBibG9ja2NoYWluOiAnYmFzZSc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29pbmZsb3dBcmJpdHJ1bUhpc3RvcnlQcm9wcyBleHRlbmRzIENvaW5mbG93RXZtSGlzdG9yeVByb3BzIHtcbiAgYmxvY2tjaGFpbjogJ2FyYml0cnVtJztcbn1cblxuZXhwb3J0IHR5cGUgQ29pbmZsb3dIaXN0b3J5UHJvcHMgPVxuICB8IENvaW5mbG93U29sYW5hSGlzdG9yeVByb3BzXG4gIHwgQ29pbmZsb3dOZWFySGlzdG9yeVByb3BzXG4gIHwgQ29pbmZsb3dQb2x5Z29uSGlzdG9yeVByb3BzXG4gIHwgQ29pbmZsb3dFdGhIaXN0b3J5UHJvcHNcbiAgfCBDb2luZmxvd0Jhc2VIaXN0b3J5UHJvcHNcbiAgfCBDb2luZmxvd0FyYml0cnVtSGlzdG9yeVByb3BzO1xuXG4vKiogVHJhbnNhY3Rpb25zICoqL1xuXG5leHBvcnQgdHlwZSBOZWFyRnRUcmFuc2ZlckNhbGxBY3Rpb24gPSB7XG4gIG1ldGhvZE5hbWU6ICdmdF90cmFuc2Zlcl9jYWxsJztcbiAgYXJnczogb2JqZWN0O1xuICBnYXM6IHN0cmluZztcbiAgZGVwb3NpdDogc3RyaW5nO1xufTtcblxudHlwZSBCeXRlcyA9IEFycmF5TGlrZTxudW1iZXI+O1xudHlwZSBCeXRlc0xpa2UgPSBCeXRlcyB8IHN0cmluZztcblxudHlwZSBSYXdQcm9kdWN0RGF0YSA9IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBvYmplY3Q+O1xuXG4vKiogUHVyY2hhc2UgKiovXG5cbmV4cG9ydCB0eXBlIENoYXJnZWJhY2tQcm90ZWN0aW9uRGF0YSA9IENoYXJnZWJhY2tQcm90ZWN0aW9uSXRlbVtdO1xuXG5leHBvcnQgaW50ZXJmYWNlIENoYXJnZWJhY2tQcm90ZWN0aW9uSXRlbSB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgcHJvZHVjdFxuICAgKi9cbiAgcHJvZHVjdE5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBwcm9kdWN0IHR5cGUuIFBvc3NpYmxlIHZhbHVlcyBpbmNsdWRlOiBpbkdhbWVQcm9kdWN0LCBnYW1lT2ZTa2lsbCwgZGF0YVN0b3JhZ2UsIGNvbXB1dGluZ1Jlc291cmNlcywgc3BvcnRzVGlja2V0LCBlU3BvcnRzVGlja2V0LCBtdXNpY1RpY2tldCwgY29uZmVyZW5jZVRpY2tldCwgdmlydHVhbFNwb3J0c1RpY2tldCwgdmlydHVhbEVTcG9ydHNUaWNrZXQsIHZpcnR1YWxNdXNpY1RpY2tldCwgdmlydHVhbENvbmZlcmVuY2VUaWNrZXQsIGFsY29ob2wsIERMQywgc3Vic2NyaXB0aW9uLCBmdW5kQUNhdXNlLCByZWFsRXN0YXRlLCBjb21wdXRpbmdDb250cmFjdCwgZGlnaXRhbEFydCwgdG9wVXBcbiAgICovXG4gIHByb2R1Y3RUeXBlOlxuICAgIHwgJ2luR2FtZVByb2R1Y3QnXG4gICAgfCAnZ2FtZU9mU2tpbGwnXG4gICAgfCAnZGF0YVN0b3JhZ2UnXG4gICAgfCAnY29tcHV0aW5nUmVzb3VyY2VzJ1xuICAgIHwgJ3Nwb3J0c1RpY2tldCdcbiAgICB8ICdlU3BvcnRzVGlja2V0J1xuICAgIHwgJ211c2ljVGlja2V0J1xuICAgIHwgJ2NvbmZlcmVuY2VUaWNrZXQnXG4gICAgfCAndmlydHVhbFNwb3J0c1RpY2tldCdcbiAgICB8ICd2aXJ0dWFsRVNwb3J0c1RpY2tldCdcbiAgICB8ICd2aXJ0dWFsTXVzaWNUaWNrZXQnXG4gICAgfCAndmlydHVhbENvbmZlcmVuY2VUaWNrZXQnXG4gICAgfCAnYWxjb2hvbCdcbiAgICB8ICdETEMnXG4gICAgfCAnc3Vic2NyaXB0aW9uJ1xuICAgIHwgJ2Z1bmRBQ2F1c2UnXG4gICAgfCAncmVhbEVzdGF0ZSdcbiAgICB8ICdjb21wdXRpbmdDb250cmFjdCdcbiAgICB8ICdkaWdpdGFsQXJ0J1xuICAgIHwgJ3RvcFVwJ1xuICAgIHwgJ293bmVyc2hpcENvbnRyYWN0JztcbiAgLyoqXG4gICAqIFRoZSBpdGVtJ3MgbGlzdCBwcmljZVxuICAgKi9cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgdW5pdHMgc29sZFxuICAgKi9cbiAgcXVhbnRpdHk6IG51bWJlcjtcbiAgLyoqXG4gICAqIEFueSBhZGRpdGlvbmFsIGRhdGEgdGhhdCB0aGUgc3RvcmUgY2FuIHByb3ZpZGUgb24gdGhlIHByb2R1Y3QsIGUuZy4gZGVzY3JpcHRpb24sIGxpbmsgdG8gaW1hZ2UsIGV0Yy5cbiAgICovXG4gIHJhd1Byb2R1Y3REYXRhPzogUmF3UHJvZHVjdERhdGE7XG59XG5cbmV4cG9ydCBlbnVtIFRocmVlRHNDaGFsbGVuZ2VQcmVmZXJlbmNlIHtcbiAgTm9QcmVmZXJlbmNlID0gJ05vUHJlZmVyZW5jZScsXG4gIEZyaWN0aW9ubGVzcyA9ICdGcmljdGlvbmxlc3MnLFxuICBDaGFsbGVuZ2UgPSAnQ2hhbGxlbmdlJyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb2luZmxvd0NvbW1vblB1cmNoYXNlUHJvcHMgZXh0ZW5kcyBDb2luZmxvd1R5cGVzIHtcbiAgYW1vdW50PzogbnVtYmVyIHwgc3RyaW5nO1xuICBvblN1Y2Nlc3M/OiBPblN1Y2Nlc3NNZXRob2Q7XG4gIHdlYmhvb2tJbmZvPzogb2JqZWN0O1xuICBlbWFpbD86IHN0cmluZztcbiAgY2hhcmdlYmFja1Byb3RlY3Rpb25EYXRhPzogQ2hhcmdlYmFja1Byb3RlY3Rpb25EYXRhO1xuICBwbGFuQ29kZT86IHN0cmluZztcbiAgZGlzYWJsZUFwcGxlUGF5PzogYm9vbGVhbjtcbiAgZGlzYWJsZUdvb2dsZVBheT86IGJvb2xlYW47XG4gIGN1c3RvbWVySW5mbz86IEN1c3RvbWVySW5mbztcbiAgc2V0dGxlbWVudFR5cGU/OiBTZXR0bGVtZW50VHlwZTtcbiAgYXV0aE9ubHk/OiBib29sZWFuO1xuICBkZXZpY2VJZD86IHN0cmluZztcbiAgand0VG9rZW4/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBZb3VyIGNvbXBhbnkgZW1haWwgYWRkcmVzcyB0aGF0IHRoZSBjdXN0b21lciBjYW4gY29udGFjdC5cbiAgICovXG4gIHN1cHBvcnRFbWFpbD86IHN0cmluZztcbiAgLyoqXG4gICAqIElmIHJlbmRlcmluZyB0aGUgQ29pbmZsb3cgY29tcG9uZW50IHdpdGhpbiBtdWx0aXBsZSBuZXN0ZWQgaWZyYW1lcywgYWxsIGFuY2VzdG9ycyBpbiB0aGUgY2hhaW4gbXVzdCBiZSBwcm92aWRlZCBhcyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0LlxuICAgKlxuICAgKiBFeGFtcGxlOlxuICAgKiBQcmltYXJ5IG9yaWdpbiB0aGF0IHdpbGwgYmUgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgQ29pbmZsb3cgaUZyYW1lOiBmb28uY29tXG4gICAqIFN1YnNlcXVlbnQgb3JpZ2lucyB0aGF0IHdpbGwgcmVuZGVyIGZvby5jb206IGJhci5jb21cbiAgICogVGhlIG9yaWdpbiBhcnJheSB3b3VsZCB0aGVuIGJlOiBbaHR0cHM6Ly9mb28uY29tLGh0dHBzOi8vYmFyLmNvbV1cbiAgICovXG4gIG9yaWdpbnM/OiBzdHJpbmdbXTtcbiAgdGhyZWVEc0NoYWxsZW5nZVByZWZlcmVuY2U/OiBUaHJlZURzQ2hhbGxlbmdlUHJlZmVyZW5jZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb2luZmxvd1NvbGFuYVB1cmNoYXNlUHJvcHNcbiAgZXh0ZW5kcyBDb2luZmxvd0NvbW1vblB1cmNoYXNlUHJvcHMge1xuICB3YWxsZXQ6IFNvbGFuYVdhbGxldDtcbiAgdHJhbnNhY3Rpb24/OiBUcmFuc2FjdGlvbiB8IFZlcnNpb25lZFRyYW5zYWN0aW9uO1xuICBwYXJ0aWFsU2lnbmVycz86IFNpZ25lcltdO1xuICBkZWJ1Z1R4PzogYm9vbGVhbjtcbiAgY29ubmVjdGlvbjogQ29ubmVjdGlvbjtcbiAgYmxvY2tjaGFpbjogJ3NvbGFuYSc7XG4gIHRva2VuPzogUHVibGljS2V5IHwgc3RyaW5nO1xuICByZW50Pzoge2xhbXBvcnRzOiBzdHJpbmcgfCBudW1iZXJ9O1xuICBuYXRpdmVTb2xUb0NvbnZlcnQ/OiB7bGFtcG9ydHM6IHN0cmluZyB8IG51bWJlcn07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29pbmZsb3dTZXNzaW9uS2V5UHVyY2hhc2VQcm9wc1xuICBleHRlbmRzIENvaW5mbG93Q29tbW9uUHVyY2hhc2VQcm9wcyB7XG4gIHNlc3Npb25LZXk6IHN0cmluZztcbiAgd2FsbGV0PzogdW5kZWZpbmVkO1xuICBibG9ja2NoYWluPzogQ29pbmZsb3dCbG9ja2NoYWluIHwgdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvaW5mbG93TmVhclB1cmNoYXNlUHJvcHMgZXh0ZW5kcyBDb2luZmxvd0NvbW1vblB1cmNoYXNlUHJvcHMge1xuICB3YWxsZXQ6IE5lYXJXYWxsZXQ7XG4gIGJsb2NrY2hhaW46ICduZWFyJztcbiAgYWN0aW9uPzogTmVhckZ0VHJhbnNmZXJDYWxsQWN0aW9uO1xuICBuZWFyRGVwb3NpdD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb2luZmxvd0V2bVB1cmNoYXNlUHJvcHMgZXh0ZW5kcyBDb2luZmxvd0NvbW1vblB1cmNoYXNlUHJvcHMge1xuICB0cmFuc2FjdGlvbj86IEV2bVRyYW5zYWN0aW9uRGF0YTtcbiAgdG9rZW4/OiBzdHJpbmc7XG4gIHdhbGxldDogRXRoV2FsbGV0O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvaW5mbG93UG9seWdvblB1cmNoYXNlUHJvcHMgZXh0ZW5kcyBDb2luZmxvd0V2bVB1cmNoYXNlUHJvcHMge1xuICBibG9ja2NoYWluOiAncG9seWdvbic7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29pbmZsb3dFdGhQdXJjaGFzZVByb3BzIGV4dGVuZHMgQ29pbmZsb3dFdm1QdXJjaGFzZVByb3BzIHtcbiAgYmxvY2tjaGFpbjogJ2V0aCc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29pbmZsb3dCYXNlUHVyY2hhc2VQcm9wcyBleHRlbmRzIENvaW5mbG93RXZtUHVyY2hhc2VQcm9wcyB7XG4gIGJsb2NrY2hhaW46ICdiYXNlJztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb2luZmxvd0FyYml0cnVtUHVyY2hhc2VQcm9wc1xuICBleHRlbmRzIENvaW5mbG93RXZtUHVyY2hhc2VQcm9wcyB7XG4gIGJsb2NrY2hhaW46ICdhcmJpdHJ1bSc7XG59XG5cbmV4cG9ydCB0eXBlIENvaW5mbG93UHVyY2hhc2VQcm9wcyA9XG4gIHwgQ29pbmZsb3dTb2xhbmFQdXJjaGFzZVByb3BzXG4gIHwgQ29pbmZsb3dTZXNzaW9uS2V5UHVyY2hhc2VQcm9wc1xuICB8IENvaW5mbG93TmVhclB1cmNoYXNlUHJvcHNcbiAgfCBDb2luZmxvd1BvbHlnb25QdXJjaGFzZVByb3BzXG4gIHwgQ29pbmZsb3dFdGhQdXJjaGFzZVByb3BzXG4gIHwgQ29pbmZsb3dCYXNlUHVyY2hhc2VQcm9wc1xuICB8IENvaW5mbG93QXJiaXRydW1QdXJjaGFzZVByb3BzO1xuXG4vKiogV2l0aGRyYXcgKiovXG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29pbmZsb3dDb21tb25XaXRoZHJhd1Byb3BzIGV4dGVuZHMgQ29pbmZsb3dUeXBlcyB7XG4gIG9uU3VjY2Vzcz86IE9uU3VjY2Vzc01ldGhvZDtcbiAgdG9rZW5zPzogc3RyaW5nW107XG4gIGxvY2tEZWZhdWx0VG9rZW4/OiBib29sZWFuO1xuICBhbW91bnQ/OiBudW1iZXI7XG4gIGVtYWlsPzogc3RyaW5nO1xuICBiYW5rQWNjb3VudExpbmtSZWRpcmVjdD86IHN0cmluZztcbiAgYWRkaXRpb25hbFdhbGxldHM/OiB7XG4gICAgd2FsbGV0OiBzdHJpbmc7XG4gICAgYmxvY2tjaGFpbjogJ3NvbGFuYScgfCAnZXRoJyB8ICduZWFyJyB8ICdwb2x5Z29uJyB8ICdiYXNlJyB8ICdhcmJpdHJ1bSc7XG4gIH1bXTtcbiAgbG9ja0Ftb3VudD86IGJvb2xlYW47XG4gIHRyYW5zYWN0aW9uU2lnbmVyPzogc3RyaW5nO1xuICAvKipcbiAgICogSWYgcmVuZGVyaW5nIHRoZSBDb2luZmxvdyBjb21wb25lbnQgd2l0aGluIG11bHRpcGxlIG5lc3RlZCBpZnJhbWVzLCBhbGwgYW5jZXN0b3JzIGluIHRoZSBjaGFpbiBtdXN0IGJlIHByb3ZpZGVkIGFzIGEgY29tbWEtc2VwYXJhdGVkIGxpc3QuXG4gICAqXG4gICAqIEV4YW1wbGU6XG4gICAqIFByaW1hcnkgb3JpZ2luIHRoYXQgd2lsbCBiZSBpbnRlcmFjdGluZyB3aXRoIHRoZSBDb2luZmxvdyBpRnJhbWU6IGZvby5jb21cbiAgICogU3Vic2VxdWVudCBvcmlnaW5zIHRoYXQgd2lsbCByZW5kZXIgZm9vLmNvbTogYmFyLmNvbVxuICAgKiBUaGUgb3JpZ2luIGFycmF5IHdvdWxkIHRoZW4gYmU6IFtodHRwczovL2Zvby5jb20saHR0cHM6Ly9iYXIuY29tXVxuICAgKi9cbiAgb3JpZ2lucz86IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvaW5mbG93U29sYW5hV2l0aGRyYXdQcm9wc1xuICBleHRlbmRzIENvaW5mbG93Q29tbW9uV2l0aGRyYXdQcm9wcyB7XG4gIHdhbGxldDogU29sYW5hV2FsbGV0O1xuICBjb25uZWN0aW9uOiBDb25uZWN0aW9uO1xuICBibG9ja2NoYWluOiAnc29sYW5hJztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb2luZmxvd05lYXJXaXRoZHJhd1Byb3BzIGV4dGVuZHMgQ29pbmZsb3dDb21tb25XaXRoZHJhd1Byb3BzIHtcbiAgd2FsbGV0OiBOZWFyV2FsbGV0O1xuICBibG9ja2NoYWluOiAnbmVhcic7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29pbmZsb3dFdm1XaXRoZHJhd1Byb3BzIGV4dGVuZHMgQ29pbmZsb3dDb21tb25XaXRoZHJhd1Byb3BzIHtcbiAgd2FsbGV0OiBFdGhXYWxsZXQ7XG4gIHVzZVBlcm1pdD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29pbmZsb3dFdGhXaXRoZHJhd1Byb3BzIGV4dGVuZHMgQ29pbmZsb3dFdm1XaXRoZHJhd1Byb3BzIHtcbiAgYmxvY2tjaGFpbjogJ2V0aCc7XG4gIHVzZVBlcm1pdD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29pbmZsb3dQb2x5Z29uV2l0aGRyYXdQcm9wcyBleHRlbmRzIENvaW5mbG93RXZtV2l0aGRyYXdQcm9wcyB7XG4gIGJsb2NrY2hhaW46ICdwb2x5Z29uJztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb2luZmxvd0Jhc2VXaXRoZHJhd1Byb3BzIGV4dGVuZHMgQ29pbmZsb3dFdm1XaXRoZHJhd1Byb3BzIHtcbiAgYmxvY2tjaGFpbjogJ2Jhc2UnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvaW5mbG93QXJiaXRydW1XaXRoZHJhd1Byb3BzXG4gIGV4dGVuZHMgQ29pbmZsb3dFdm1XaXRoZHJhd1Byb3BzIHtcbiAgYmxvY2tjaGFpbjogJ2FyYml0cnVtJztcbn1cblxuZXhwb3J0IHR5cGUgQ29pbmZsb3dXaXRoZHJhd1Byb3BzID1cbiAgfCBDb2luZmxvd1NvbGFuYVdpdGhkcmF3UHJvcHNcbiAgfCBDb2luZmxvd05lYXJXaXRoZHJhd1Byb3BzXG4gIHwgQ29pbmZsb3dFdGhXaXRoZHJhd1Byb3BzXG4gIHwgQ29pbmZsb3dQb2x5Z29uV2l0aGRyYXdQcm9wc1xuICB8IENvaW5mbG93QmFzZVdpdGhkcmF3UHJvcHNcbiAgfCBDb2luZmxvd0FyYml0cnVtV2l0aGRyYXdQcm9wcztcblxuZXhwb3J0IGludGVyZmFjZSBDb21tb25Fdm1SZWRlZW0ge1xuICB3YWl0Rm9ySGFzaD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTm9ybWFsUmVkZWVtIGV4dGVuZHMgQ29tbW9uRXZtUmVkZWVtIHtcbiAgdHJhbnNhY3Rpb246IHt0bzogc3RyaW5nOyBkYXRhOiBzdHJpbmd9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEtub3duVG9rZW5JZFJlZGVlbSBleHRlbmRzIE5vcm1hbFJlZGVlbSB7XG4gIG5mdENvbnRyYWN0OiBzdHJpbmc7XG4gIG5mdElkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2FmZU1pbnRSZWRlZW0gZXh0ZW5kcyBOb3JtYWxSZWRlZW0ge1xuICB0eXBlOiAnc2FmZU1pbnQnO1xuICBuZnRDb250cmFjdD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXR1cm5lZFRva2VuSWRSZWRlZW0gZXh0ZW5kcyBOb3JtYWxSZWRlZW0ge1xuICB0eXBlOiAncmV0dXJuZWQnO1xuICBuZnRDb250cmFjdD86IHN0cmluZztcbn1cblxudHlwZSBSZXNlcnZvaXJOZnRJZEl0ZW0gPSBPbWl0PEtub3duVG9rZW5JZFJlZGVlbSwga2V5b2YgTm9ybWFsUmVkZWVtPjtcbmludGVyZmFjZSBSZXNlcnZvaXJPcmRlcklkSXRlbSB7XG4gIG9yZGVySWQ6IHN0cmluZztcbn1cbnR5cGUgUmVzZXJ2b2lySXRlbSA9IFJlc2Vydm9pck5mdElkSXRlbSB8IFJlc2Vydm9pck9yZGVySWRJdGVtO1xudHlwZSBSZXNlcnZvaXJJdGVtcyA9IFJlc2Vydm9pckl0ZW0gfCBSZXNlcnZvaXJJdGVtW107XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzZXJ2b2lyUmVkZWVtIGV4dGVuZHMgQ29tbW9uRXZtUmVkZWVtIHtcbiAgdHlwZTogJ3Jlc2Vydm9pcic7XG4gIGl0ZW1zOiBSZXNlcnZvaXJJdGVtcztcbiAgdGFrZXI/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVG9rZW5SZWRlZW0gZXh0ZW5kcyBDb21tb25Fdm1SZWRlZW0ge1xuICB0eXBlOiAndG9rZW4nO1xuICBkZXN0aW5hdGlvbjogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBFdm1UcmFuc2FjdGlvbkRhdGEgPVxuICB8IFNhZmVNaW50UmVkZWVtXG4gIHwgUmV0dXJuZWRUb2tlbklkUmVkZWVtXG4gIHwgUmVzZXJ2b2lyUmVkZWVtXG4gIHwgS25vd25Ub2tlbklkUmVkZWVtXG4gIHwgTm9ybWFsUmVkZWVtXG4gIHwgVG9rZW5SZWRlZW07XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29pbmZsb3dJRnJhbWVQcm9wc1xuICBleHRlbmRzIE9taXQ8Q29pbmZsb3dUeXBlcywgJ21lcmNoYW50SWQnPixcbiAgICBQaWNrPFxuICAgICAgQ29pbmZsb3dDb21tb25QdXJjaGFzZVByb3BzLFxuICAgICAgfCAnY2hhcmdlYmFja1Byb3RlY3Rpb25EYXRhJ1xuICAgICAgfCAnd2ViaG9va0luZm8nXG4gICAgICB8ICdhbW91bnQnXG4gICAgICB8ICdjdXN0b21lckluZm8nXG4gICAgICB8ICdzZXR0bGVtZW50VHlwZSdcbiAgICAgIHwgJ2VtYWlsJ1xuICAgICAgfCAncGxhbkNvZGUnXG4gICAgICB8ICdkZXZpY2VJZCdcbiAgICAgIHwgJ2p3dFRva2VuJ1xuICAgICAgfCAnb3JpZ2lucydcbiAgICAgIHwgJ3RocmVlRHNDaGFsbGVuZ2VQcmVmZXJlbmNlJ1xuICAgICAgfCAnc3VwcG9ydEVtYWlsJ1xuICAgID4sXG4gICAgUGljazxcbiAgICAgIENvaW5mbG93Q29tbW9uV2l0aGRyYXdQcm9wcyxcbiAgICAgIHwgJ2JhbmtBY2NvdW50TGlua1JlZGlyZWN0J1xuICAgICAgfCAnYWRkaXRpb25hbFdhbGxldHMnXG4gICAgICB8ICd0cmFuc2FjdGlvblNpZ25lcidcbiAgICAgIHwgJ2xvY2tBbW91bnQnXG4gICAgICB8ICdsb2NrRGVmYXVsdFRva2VuJ1xuICAgICAgfCAnb3JpZ2lucydcbiAgICA+LFxuICAgIFBpY2s8Q29pbmZsb3dFdm1QdXJjaGFzZVByb3BzLCAnYXV0aE9ubHknPixcbiAgICBQaWNrPENvaW5mbG93U29sYW5hUHVyY2hhc2VQcm9wcywgJ3JlbnQnIHwgJ25hdGl2ZVNvbFRvQ29udmVydCcgfCAndG9rZW4nPiB7XG4gIHdhbGxldFB1YmtleTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgc2Vzc2lvbktleT86IHN0cmluZztcbiAgcm91dGU6IHN0cmluZztcbiAgcm91dGVQcmVmaXg/OiBzdHJpbmc7XG4gIHRyYW5zYWN0aW9uPzogc3RyaW5nO1xuICB0b2tlbnM/OiBzdHJpbmdbXSB8IFB1YmxpY0tleVtdO1xuICBuZWFyRGVwb3NpdD86IHN0cmluZztcbiAgbWVyY2hhbnRDc3M/OiBzdHJpbmc7XG4gIGNvbG9yPzogJ3doaXRlJyB8ICdibGFjayc7XG4gIGRpc2FibGVBcHBsZVBheT86IGJvb2xlYW47XG4gIGRpc2FibGVHb29nbGVQYXk/OiBib29sZWFuO1xuICB0aGVtZT86IE1lcmNoYW50VGhlbWU7XG4gIHVzZVBlcm1pdD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBlbnVtIENhcmRUeXBlIHtcbiAgVklTQSA9ICdWSVNBJyxcbiAgTUFTVEVSQ0FSRCA9ICdNU1RSJyxcbiAgQU1FWCA9ICdBTUVYJyxcbiAgRElTQ09WRVIgPSAnRElTQycsXG59XG4iXX0=
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29pbmZsb3dUeXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvaW5mbG93bGFicy9zcmMvbGliL2NvbW1vbi9Db2luZmxvd1R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFBLE1BQU0sQ0FBTixJQUFZLGNBSVg7QUFKRCxXQUFZLGNBQWM7SUFDeEIscUNBQW1CLENBQUE7SUFDbkIsK0JBQWEsQ0FBQTtJQUNiLCtCQUFhLENBQUE7QUFDZixDQUFDLEVBSlcsY0FBYyxLQUFkLGNBQWMsUUFJekI7QUFFRCxNQUFNLENBQU4sSUFBWSxhQUlYO0FBSkQsV0FBWSxhQUFhO0lBQ3ZCLG9DQUFtQixDQUFBO0lBQ25CLGdDQUFlLENBQUE7SUFDZiw4QkFBYSxDQUFBO0FBQ2YsQ0FBQyxFQUpXLGFBQWEsS0FBYixhQUFhLFFBSXhCO0FBK05ELE1BQU0sQ0FBTixJQUFZLDBCQUlYO0FBSkQsV0FBWSwwQkFBMEI7SUFDcEMsMkRBQTZCLENBQUE7SUFDN0IsMkRBQTZCLENBQUE7SUFDN0IscURBQXVCLENBQUE7QUFDekIsQ0FBQyxFQUpXLDBCQUEwQixLQUExQiwwQkFBMEIsUUFJckM7QUE2UkQsTUFBTSxDQUFOLElBQVksUUFLWDtBQUxELFdBQVksUUFBUTtJQUNsQix5QkFBYSxDQUFBO0lBQ2IsK0JBQW1CLENBQUE7SUFDbkIseUJBQWEsQ0FBQTtJQUNiLDZCQUFpQixDQUFBO0FBQ25CLENBQUMsRUFMVyxRQUFRLEtBQVIsUUFBUSxRQUtuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtcbiAgQ29ubmVjdGlvbixcbiAgVmVyc2lvbmVkVHJhbnNhY3Rpb24sXG4gIFB1YmxpY0tleSxcbiAgU2lnbmVyLFxuICBUcmFuc2FjdGlvbixcbn0gZnJvbSAnQHNvbGFuYS93ZWIzLmpzJztcblxuZXhwb3J0IGVudW0gU2V0dGxlbWVudFR5cGUge1xuICBDcmVkaXRzID0gJ0NyZWRpdHMnLFxuICBVU0RDID0gJ1VTREMnLFxuICBCYW5rID0gJ0JhbmsnLFxufVxuXG5leHBvcnQgZW51bSBNZXJjaGFudFN0eWxlIHtcbiAgUm91bmRlZCA9ICdyb3VuZGVkJyxcbiAgU2hhcnAgPSAnc2hhcnAnLFxuICBQaWxsID0gJ3BpbGwnLFxufVxuXG5leHBvcnQgdHlwZSBNZXJjaGFudFRoZW1lID0ge1xuICBwcmltYXJ5Pzogc3RyaW5nO1xuICBiYWNrZ3JvdW5kPzogc3RyaW5nO1xuICBiYWNrZ3JvdW5kQWNjZW50Pzogc3RyaW5nO1xuICBiYWNrZ3JvdW5kQWNjZW50Mj86IHN0cmluZztcbiAgdGV4dENvbG9yPzogc3RyaW5nO1xuICB0ZXh0Q29sb3JBY2NlbnQ/OiBzdHJpbmc7XG4gIHRleHRDb2xvckFjdGlvbj86IHN0cmluZztcbiAgZm9udD86IHN0cmluZztcbiAgc3R5bGU/OiBNZXJjaGFudFN0eWxlO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBDdXN0b21lckluZm8ge1xuICBuYW1lPzogc3RyaW5nO1xuICB2ZXJpZmljYXRpb25JZD86IHN0cmluZztcbiAgZGlzcGxheU5hbWU/OiBzdHJpbmc7XG4gIGFkZHJlc3M/OiBzdHJpbmc7XG4gIGNpdHk/OiBzdHJpbmc7XG4gIHN0YXRlPzogc3RyaW5nO1xuICB6aXA/OiBzdHJpbmc7XG4gIGNvdW50cnk/OiBzdHJpbmc7XG4gIGlwPzogc3RyaW5nO1xuICBsYXQ/OiBzdHJpbmc7XG4gIGxuZz86IHN0cmluZztcbn1cblxuLyoqIENvaW5mbG93IFR5cGVzICoqL1xuZXhwb3J0IHR5cGUgQ29pbmZsb3dCbG9ja2NoYWluID1cbiAgfCAnc29sYW5hJ1xuICB8ICduZWFyJ1xuICB8ICdldGgnXG4gIHwgJ3BvbHlnb24nXG4gIHwgJ2Jhc2UnXG4gIHwgJ2FyYml0cnVtJ1xuICB8ICd1c2VyJztcbmV4cG9ydCB0eXBlIENvaW5mbG93RW52cyA9XG4gIHwgJ3Byb2QnXG4gIHwgJ3N0YWdpbmcnXG4gIHwgJ3N0YWdpbmctbGl2ZSdcbiAgfCAnc2FuZGJveCdcbiAgfCAnbG9jYWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvaW5mbG93VHlwZXMge1xuICBtZXJjaGFudElkOiBzdHJpbmc7XG4gIGVudj86IENvaW5mbG93RW52cztcbiAgbG9hZGVyQmFja2dyb3VuZD86IHN0cmluZztcbiAgYmxvY2tjaGFpbj86IENvaW5mbG93QmxvY2tjaGFpbiB8IHVuZGVmaW5lZDtcbiAgaGFuZGxlSGVpZ2h0Q2hhbmdlPzogKGhlaWdodDogc3RyaW5nKSA9PiB2b2lkO1xuICB0aGVtZT86IE1lcmNoYW50VGhlbWU7XG59XG5cbmV4cG9ydCB0eXBlIFBhcnRpYWxCeTxULCBLIGV4dGVuZHMga2V5b2YgVD4gPSBPbWl0PFQsIEs+ICYgUGFydGlhbDxQaWNrPFQsIEs+PjtcblxuZXhwb3J0IHR5cGUgT25TdWNjZXNzTWV0aG9kID0gKFxuICBhcmdzOlxuICAgIHwge1xuICAgICAgICBwYXltZW50SWQ6IHN0cmluZztcbiAgICAgICAgaGFzaD86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICB8IHN0cmluZ1xuKSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPjtcblxuLyoqIFdhbGxldHMgKiovXG5leHBvcnQgaW50ZXJmYWNlIFNvbGFuYVdhbGxldCB7XG4gIHB1YmxpY0tleTogUHVibGljS2V5IHwgbnVsbDtcbiAgc2lnblRyYW5zYWN0aW9uPzogPFQgZXh0ZW5kcyBUcmFuc2FjdGlvbiB8IFZlcnNpb25lZFRyYW5zYWN0aW9uPihcbiAgICB0cmFuc2FjdGlvbjogVFxuICApID0+IFByb21pc2U8VD47XG4gIHNlbmRUcmFuc2FjdGlvbjogPFQgZXh0ZW5kcyBUcmFuc2FjdGlvbiB8IFZlcnNpb25lZFRyYW5zYWN0aW9uPihcbiAgICB0cmFuc2FjdGlvbjogVFxuICApID0+IFByb21pc2U8c3RyaW5nPjtcbiAgc2lnbk1lc3NhZ2U/OiAobWVzc2FnZTogVWludDhBcnJheSkgPT4gUHJvbWlzZTxVaW50OEFycmF5Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZWFyV2FsbGV0IHtcbiAgYWNjb3VudElkOiBzdHJpbmc7XG4gIHNpZ25BbmRTZW5kVHJhbnNhY3Rpb246ICh0cmFuc2FjdGlvbjogdW5rbm93bikgPT4gUHJvbWlzZTx7XG4gICAgdHJhbnNhY3Rpb246IHtoYXNoOiBzdHJpbmd9O1xuICB9Pjtcbn1cblxudHlwZSBBY2Nlc3NMaXN0ID0gQXJyYXk8e2FkZHJlc3M6IHN0cmluZzsgc3RvcmFnZUtleXM6IEFycmF5PHN0cmluZz59PjtcbnR5cGUgQWNjZXNzTGlzdGlzaCA9XG4gIHwgQWNjZXNzTGlzdFxuICB8IEFycmF5PFtzdHJpbmcsIEFycmF5PHN0cmluZz5dPlxuICB8IFJlY29yZDxzdHJpbmcsIEFycmF5PHN0cmluZz4+O1xuXG5leHBvcnQgdHlwZSBFdGhXYWxsZXQgPSB7XG4gIGFkZHJlc3M6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIHNlbmRUcmFuc2FjdGlvbjogKHRyYW5zYWN0aW9uOiB7XG4gICAgdG86IHN0cmluZztcbiAgICBmcm9tPzogc3RyaW5nO1xuICAgIG5vbmNlPzogQnl0ZXMgfCBiaWdpbnQgfCBzdHJpbmcgfCBudW1iZXI7XG5cbiAgICBnYXNMaW1pdD86IEJ5dGVzIHwgYmlnaW50IHwgc3RyaW5nIHwgbnVtYmVyO1xuICAgIGdhc1ByaWNlPzogQnl0ZXMgfCBiaWdpbnQgfCBzdHJpbmcgfCBudW1iZXI7XG5cbiAgICBkYXRhPzogQnl0ZXNMaWtlO1xuICAgIHZhbHVlPzogQnl0ZXMgfCBiaWdpbnQgfCBzdHJpbmcgfCBudW1iZXI7XG4gICAgY2hhaW5JZD86IG51bWJlcjtcblxuICAgIHR5cGU/OiBudW1iZXI7XG4gICAgYWNjZXNzTGlzdD86IEFjY2Vzc0xpc3Rpc2g7XG5cbiAgICBtYXhQcmlvcml0eUZlZVBlckdhcz86IEJ5dGVzIHwgYmlnaW50IHwgc3RyaW5nIHwgbnVtYmVyO1xuICAgIG1heEZlZVBlckdhcz86IEJ5dGVzIHwgYmlnaW50IHwgc3RyaW5nIHwgbnVtYmVyO1xuXG4gICAgY3VzdG9tRGF0YT86IFJlY29yZDxzdHJpbmcsIGFueT47XG4gICAgY2NpcFJlYWRFbmFibGVkPzogYm9vbGVhbjtcbiAgfSkgPT4gUHJvbWlzZTx7aGFzaDogc3RyaW5nfT47XG4gIHNpZ25NZXNzYWdlOiAobWVzc2FnZTogc3RyaW5nKSA9PiBQcm9taXNlPHN0cmluZz47XG59O1xuXG4vKiogSGlzdG9yeSAqKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29pbmZsb3dTb2xhbmFIaXN0b3J5UHJvcHMgZXh0ZW5kcyBDb2luZmxvd1R5cGVzIHtcbiAgd2FsbGV0OiBTb2xhbmFXYWxsZXQ7XG4gIGNvbm5lY3Rpb246IENvbm5lY3Rpb247XG4gIGJsb2NrY2hhaW46ICdzb2xhbmEnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvaW5mbG93U2Vzc2lvbktleUhpc3RvcnlQcm9wcyBleHRlbmRzIENvaW5mbG93VHlwZXMge1xuICBzZXNzaW9uS2V5OiBzdHJpbmc7XG4gIGJsb2NrY2hhaW4/OiB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29pbmZsb3dOZWFySGlzdG9yeVByb3BzIGV4dGVuZHMgQ29pbmZsb3dUeXBlcyB7XG4gIHdhbGxldDogTmVhcldhbGxldDtcbiAgYmxvY2tjaGFpbjogJ25lYXInO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvaW5mbG93RXZtSGlzdG9yeVByb3BzIGV4dGVuZHMgQ29pbmZsb3dUeXBlcyB7XG4gIHdhbGxldDogRXRoV2FsbGV0O1xuICBibG9ja2NoYWluOiAnZXRoJyB8ICdwb2x5Z29uJyB8ICdiYXNlJyB8ICdhcmJpdHJ1bSc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29pbmZsb3dFdGhIaXN0b3J5UHJvcHMgZXh0ZW5kcyBDb2luZmxvd0V2bUhpc3RvcnlQcm9wcyB7XG4gIGJsb2NrY2hhaW46ICdldGgnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvaW5mbG93UG9seWdvbkhpc3RvcnlQcm9wcyBleHRlbmRzIENvaW5mbG93RXZtSGlzdG9yeVByb3BzIHtcbiAgYmxvY2tjaGFpbjogJ3BvbHlnb24nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvaW5mbG93QmFzZUhpc3RvcnlQcm9wcyBleHRlbmRzIENvaW5mbG93RXZtSGlzdG9yeVByb3BzIHtcbiAgYmxvY2tjaGFpbjogJ2Jhc2UnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvaW5mbG93QXJiaXRydW1IaXN0b3J5UHJvcHMgZXh0ZW5kcyBDb2luZmxvd0V2bUhpc3RvcnlQcm9wcyB7XG4gIGJsb2NrY2hhaW46ICdhcmJpdHJ1bSc7XG59XG5cbmV4cG9ydCB0eXBlIENvaW5mbG93SGlzdG9yeVByb3BzID1cbiAgfCBDb2luZmxvd1NvbGFuYUhpc3RvcnlQcm9wc1xuICB8IENvaW5mbG93TmVhckhpc3RvcnlQcm9wc1xuICB8IENvaW5mbG93UG9seWdvbkhpc3RvcnlQcm9wc1xuICB8IENvaW5mbG93RXRoSGlzdG9yeVByb3BzXG4gIHwgQ29pbmZsb3dCYXNlSGlzdG9yeVByb3BzXG4gIHwgQ29pbmZsb3dBcmJpdHJ1bUhpc3RvcnlQcm9wc1xuICB8IENvaW5mbG93U2Vzc2lvbktleUhpc3RvcnlQcm9wcztcblxuLyoqIFRyYW5zYWN0aW9ucyAqKi9cblxuZXhwb3J0IHR5cGUgTmVhckZ0VHJhbnNmZXJDYWxsQWN0aW9uID0ge1xuICBtZXRob2ROYW1lOiAnZnRfdHJhbnNmZXJfY2FsbCc7XG4gIGFyZ3M6IG9iamVjdDtcbiAgZ2FzOiBzdHJpbmc7XG4gIGRlcG9zaXQ6IHN0cmluZztcbn07XG5cbnR5cGUgQnl0ZXMgPSBBcnJheUxpa2U8bnVtYmVyPjtcbnR5cGUgQnl0ZXNMaWtlID0gQnl0ZXMgfCBzdHJpbmc7XG5cbnR5cGUgUmF3UHJvZHVjdERhdGEgPSBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgb2JqZWN0PjtcblxuLyoqIFB1cmNoYXNlICoqL1xuXG5leHBvcnQgdHlwZSBDaGFyZ2ViYWNrUHJvdGVjdGlvbkRhdGEgPSBDaGFyZ2ViYWNrUHJvdGVjdGlvbkl0ZW1bXTtcblxuZXhwb3J0IGludGVyZmFjZSBDaGFyZ2ViYWNrUHJvdGVjdGlvbkl0ZW0ge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHByb2R1Y3RcbiAgICovXG4gIHByb2R1Y3ROYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgcHJvZHVjdCB0eXBlLiBQb3NzaWJsZSB2YWx1ZXMgaW5jbHVkZTogaW5HYW1lUHJvZHVjdCwgZ2FtZU9mU2tpbGwsIGRhdGFTdG9yYWdlLCBjb21wdXRpbmdSZXNvdXJjZXMsIHNwb3J0c1RpY2tldCwgZVNwb3J0c1RpY2tldCwgbXVzaWNUaWNrZXQsIGNvbmZlcmVuY2VUaWNrZXQsIHZpcnR1YWxTcG9ydHNUaWNrZXQsIHZpcnR1YWxFU3BvcnRzVGlja2V0LCB2aXJ0dWFsTXVzaWNUaWNrZXQsIHZpcnR1YWxDb25mZXJlbmNlVGlja2V0LCBhbGNvaG9sLCBETEMsIHN1YnNjcmlwdGlvbiwgZnVuZEFDYXVzZSwgcmVhbEVzdGF0ZSwgY29tcHV0aW5nQ29udHJhY3QsIGRpZ2l0YWxBcnQsIHRvcFVwXG4gICAqL1xuICBwcm9kdWN0VHlwZTpcbiAgICB8ICdpbkdhbWVQcm9kdWN0J1xuICAgIHwgJ2dhbWVPZlNraWxsJ1xuICAgIHwgJ2RhdGFTdG9yYWdlJ1xuICAgIHwgJ2NvbXB1dGluZ1Jlc291cmNlcydcbiAgICB8ICdzcG9ydHNUaWNrZXQnXG4gICAgfCAnZVNwb3J0c1RpY2tldCdcbiAgICB8ICdtdXNpY1RpY2tldCdcbiAgICB8ICdjb25mZXJlbmNlVGlja2V0J1xuICAgIHwgJ3ZpcnR1YWxTcG9ydHNUaWNrZXQnXG4gICAgfCAndmlydHVhbEVTcG9ydHNUaWNrZXQnXG4gICAgfCAndmlydHVhbE11c2ljVGlja2V0J1xuICAgIHwgJ3ZpcnR1YWxDb25mZXJlbmNlVGlja2V0J1xuICAgIHwgJ2FsY29ob2wnXG4gICAgfCAnRExDJ1xuICAgIHwgJ3N1YnNjcmlwdGlvbidcbiAgICB8ICdmdW5kQUNhdXNlJ1xuICAgIHwgJ3JlYWxFc3RhdGUnXG4gICAgfCAnY29tcHV0aW5nQ29udHJhY3QnXG4gICAgfCAnZGlnaXRhbEFydCdcbiAgICB8ICd0b3BVcCdcbiAgICB8ICdvd25lcnNoaXBDb250cmFjdCc7XG4gIC8qKlxuICAgKiBUaGUgaXRlbSdzIGxpc3QgcHJpY2VcbiAgICovXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIHVuaXRzIHNvbGRcbiAgICovXG4gIHF1YW50aXR5OiBudW1iZXI7XG4gIC8qKlxuICAgKiBBbnkgYWRkaXRpb25hbCBkYXRhIHRoYXQgdGhlIHN0b3JlIGNhbiBwcm92aWRlIG9uIHRoZSBwcm9kdWN0LCBlLmcuIGRlc2NyaXB0aW9uLCBsaW5rIHRvIGltYWdlLCBldGMuXG4gICAqL1xuICByYXdQcm9kdWN0RGF0YT86IFJhd1Byb2R1Y3REYXRhO1xufVxuXG5leHBvcnQgZW51bSBUaHJlZURzQ2hhbGxlbmdlUHJlZmVyZW5jZSB7XG4gIE5vUHJlZmVyZW5jZSA9ICdOb1ByZWZlcmVuY2UnLFxuICBGcmljdGlvbmxlc3MgPSAnRnJpY3Rpb25sZXNzJyxcbiAgQ2hhbGxlbmdlID0gJ0NoYWxsZW5nZScsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29pbmZsb3dDb21tb25QdXJjaGFzZVByb3BzIGV4dGVuZHMgQ29pbmZsb3dUeXBlcyB7XG4gIGFtb3VudD86IG51bWJlciB8IHN0cmluZztcbiAgb25TdWNjZXNzPzogT25TdWNjZXNzTWV0aG9kO1xuICB3ZWJob29rSW5mbz86IG9iamVjdDtcbiAgZW1haWw/OiBzdHJpbmc7XG4gIGNoYXJnZWJhY2tQcm90ZWN0aW9uRGF0YT86IENoYXJnZWJhY2tQcm90ZWN0aW9uRGF0YTtcbiAgcGxhbkNvZGU/OiBzdHJpbmc7XG4gIGRpc2FibGVBcHBsZVBheT86IGJvb2xlYW47XG4gIGRpc2FibGVHb29nbGVQYXk/OiBib29sZWFuO1xuICBjdXN0b21lckluZm8/OiBDdXN0b21lckluZm87XG4gIHNldHRsZW1lbnRUeXBlPzogU2V0dGxlbWVudFR5cGU7XG4gIGF1dGhPbmx5PzogYm9vbGVhbjtcbiAgZGV2aWNlSWQ/OiBzdHJpbmc7XG4gIGp3dFRva2VuPzogc3RyaW5nO1xuICAvKipcbiAgICogWW91ciBjb21wYW55IGVtYWlsIGFkZHJlc3MgdGhhdCB0aGUgY3VzdG9tZXIgY2FuIGNvbnRhY3QuXG4gICAqL1xuICBzdXBwb3J0RW1haWw/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBJZiByZW5kZXJpbmcgdGhlIENvaW5mbG93IGNvbXBvbmVudCB3aXRoaW4gbXVsdGlwbGUgbmVzdGVkIGlmcmFtZXMsIGFsbCBhbmNlc3RvcnMgaW4gdGhlIGNoYWluIG11c3QgYmUgcHJvdmlkZWQgYXMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdC5cbiAgICpcbiAgICogRXhhbXBsZTpcbiAgICogUHJpbWFyeSBvcmlnaW4gdGhhdCB3aWxsIGJlIGludGVyYWN0aW5nIHdpdGggdGhlIENvaW5mbG93IGlGcmFtZTogZm9vLmNvbVxuICAgKiBTdWJzZXF1ZW50IG9yaWdpbnMgdGhhdCB3aWxsIHJlbmRlciBmb28uY29tOiBiYXIuY29tXG4gICAqIFRoZSBvcmlnaW4gYXJyYXkgd291bGQgdGhlbiBiZTogW2h0dHBzOi8vZm9vLmNvbSxodHRwczovL2Jhci5jb21dXG4gICAqL1xuICBvcmlnaW5zPzogc3RyaW5nW107XG4gIHRocmVlRHNDaGFsbGVuZ2VQcmVmZXJlbmNlPzogVGhyZWVEc0NoYWxsZW5nZVByZWZlcmVuY2U7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29pbmZsb3dTb2xhbmFQdXJjaGFzZVByb3BzXG4gIGV4dGVuZHMgQ29pbmZsb3dDb21tb25QdXJjaGFzZVByb3BzIHtcbiAgd2FsbGV0OiBTb2xhbmFXYWxsZXQ7XG4gIHRyYW5zYWN0aW9uPzogVHJhbnNhY3Rpb24gfCBWZXJzaW9uZWRUcmFuc2FjdGlvbjtcbiAgcGFydGlhbFNpZ25lcnM/OiBTaWduZXJbXTtcbiAgZGVidWdUeD86IGJvb2xlYW47XG4gIGNvbm5lY3Rpb246IENvbm5lY3Rpb247XG4gIGJsb2NrY2hhaW46ICdzb2xhbmEnO1xuICB0b2tlbj86IFB1YmxpY0tleSB8IHN0cmluZztcbiAgcmVudD86IHtsYW1wb3J0czogc3RyaW5nIHwgbnVtYmVyfTtcbiAgbmF0aXZlU29sVG9Db252ZXJ0Pzoge2xhbXBvcnRzOiBzdHJpbmcgfCBudW1iZXJ9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvaW5mbG93U2Vzc2lvbktleVB1cmNoYXNlUHJvcHNcbiAgZXh0ZW5kcyBDb2luZmxvd0NvbW1vblB1cmNoYXNlUHJvcHMge1xuICBzZXNzaW9uS2V5OiBzdHJpbmc7XG4gIHdhbGxldD86IHVuZGVmaW5lZDtcbiAgYmxvY2tjaGFpbj86IENvaW5mbG93QmxvY2tjaGFpbiB8IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb2luZmxvd05lYXJQdXJjaGFzZVByb3BzIGV4dGVuZHMgQ29pbmZsb3dDb21tb25QdXJjaGFzZVByb3BzIHtcbiAgd2FsbGV0OiBOZWFyV2FsbGV0O1xuICBibG9ja2NoYWluOiAnbmVhcic7XG4gIGFjdGlvbj86IE5lYXJGdFRyYW5zZmVyQ2FsbEFjdGlvbjtcbiAgbmVhckRlcG9zaXQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29pbmZsb3dFdm1QdXJjaGFzZVByb3BzIGV4dGVuZHMgQ29pbmZsb3dDb21tb25QdXJjaGFzZVByb3BzIHtcbiAgdHJhbnNhY3Rpb24/OiBFdm1UcmFuc2FjdGlvbkRhdGE7XG4gIHRva2VuPzogc3RyaW5nO1xuICB3YWxsZXQ6IEV0aFdhbGxldDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb2luZmxvd1BvbHlnb25QdXJjaGFzZVByb3BzIGV4dGVuZHMgQ29pbmZsb3dFdm1QdXJjaGFzZVByb3BzIHtcbiAgYmxvY2tjaGFpbjogJ3BvbHlnb24nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvaW5mbG93RXRoUHVyY2hhc2VQcm9wcyBleHRlbmRzIENvaW5mbG93RXZtUHVyY2hhc2VQcm9wcyB7XG4gIGJsb2NrY2hhaW46ICdldGgnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvaW5mbG93QmFzZVB1cmNoYXNlUHJvcHMgZXh0ZW5kcyBDb2luZmxvd0V2bVB1cmNoYXNlUHJvcHMge1xuICBibG9ja2NoYWluOiAnYmFzZSc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29pbmZsb3dBcmJpdHJ1bVB1cmNoYXNlUHJvcHNcbiAgZXh0ZW5kcyBDb2luZmxvd0V2bVB1cmNoYXNlUHJvcHMge1xuICBibG9ja2NoYWluOiAnYXJiaXRydW0nO1xufVxuXG5leHBvcnQgdHlwZSBDb2luZmxvd1B1cmNoYXNlUHJvcHMgPVxuICB8IENvaW5mbG93U29sYW5hUHVyY2hhc2VQcm9wc1xuICB8IENvaW5mbG93U2Vzc2lvbktleVB1cmNoYXNlUHJvcHNcbiAgfCBDb2luZmxvd05lYXJQdXJjaGFzZVByb3BzXG4gIHwgQ29pbmZsb3dQb2x5Z29uUHVyY2hhc2VQcm9wc1xuICB8IENvaW5mbG93RXRoUHVyY2hhc2VQcm9wc1xuICB8IENvaW5mbG93QmFzZVB1cmNoYXNlUHJvcHNcbiAgfCBDb2luZmxvd0FyYml0cnVtUHVyY2hhc2VQcm9wcztcblxuLyoqIFdpdGhkcmF3ICoqL1xuXG5leHBvcnQgaW50ZXJmYWNlIENvaW5mbG93Q29tbW9uV2l0aGRyYXdQcm9wcyBleHRlbmRzIENvaW5mbG93VHlwZXMge1xuICBvblN1Y2Nlc3M/OiBPblN1Y2Nlc3NNZXRob2Q7XG4gIHRva2Vucz86IHN0cmluZ1tdO1xuICBsb2NrRGVmYXVsdFRva2VuPzogYm9vbGVhbjtcbiAgYW1vdW50PzogbnVtYmVyO1xuICBlbWFpbD86IHN0cmluZztcbiAgYmFua0FjY291bnRMaW5rUmVkaXJlY3Q/OiBzdHJpbmc7XG4gIGFkZGl0aW9uYWxXYWxsZXRzPzoge1xuICAgIHdhbGxldDogc3RyaW5nO1xuICAgIGJsb2NrY2hhaW46ICdzb2xhbmEnIHwgJ2V0aCcgfCAnbmVhcicgfCAncG9seWdvbicgfCAnYmFzZScgfCAnYXJiaXRydW0nO1xuICB9W107XG4gIGxvY2tBbW91bnQ/OiBib29sZWFuO1xuICB0cmFuc2FjdGlvblNpZ25lcj86IHN0cmluZztcbiAgLyoqXG4gICAqIElmIHJlbmRlcmluZyB0aGUgQ29pbmZsb3cgY29tcG9uZW50IHdpdGhpbiBtdWx0aXBsZSBuZXN0ZWQgaWZyYW1lcywgYWxsIGFuY2VzdG9ycyBpbiB0aGUgY2hhaW4gbXVzdCBiZSBwcm92aWRlZCBhcyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0LlxuICAgKlxuICAgKiBFeGFtcGxlOlxuICAgKiBQcmltYXJ5IG9yaWdpbiB0aGF0IHdpbGwgYmUgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgQ29pbmZsb3cgaUZyYW1lOiBmb28uY29tXG4gICAqIFN1YnNlcXVlbnQgb3JpZ2lucyB0aGF0IHdpbGwgcmVuZGVyIGZvby5jb206IGJhci5jb21cbiAgICogVGhlIG9yaWdpbiBhcnJheSB3b3VsZCB0aGVuIGJlOiBbaHR0cHM6Ly9mb28uY29tLGh0dHBzOi8vYmFyLmNvbV1cbiAgICovXG4gIG9yaWdpbnM/OiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IHR5cGUgV2FsbGV0VHlwZXMgPSBTb2xhbmFXYWxsZXQgfCBOZWFyV2FsbGV0IHwgRXRoV2FsbGV0O1xuXG5leHBvcnQgaW50ZXJmYWNlIFNvbGFuYVdhbGxldFByb3BzIHtcbiAgd2FsbGV0OiBTb2xhbmFXYWxsZXQ7XG4gIGNvbm5lY3Rpb246IENvbm5lY3Rpb247XG4gIGJsb2NrY2hhaW46ICdzb2xhbmEnO1xufVxuXG5leHBvcnQgdHlwZSBDb2luZmxvd1NvbGFuYVdpdGhkcmF3UHJvcHMgPSBDb2luZmxvd0NvbW1vbldpdGhkcmF3UHJvcHMgJlxuICBTb2xhbmFXYWxsZXRQcm9wcztcblxuZXhwb3J0IGludGVyZmFjZSBOZWFyV2FsbGV0UHJvcHMge1xuICB3YWxsZXQ6IE5lYXJXYWxsZXQ7XG4gIGJsb2NrY2hhaW46ICduZWFyJztcbn1cblxuZXhwb3J0IHR5cGUgQ29pbmZsb3dOZWFyV2l0aGRyYXdQcm9wcyA9IENvaW5mbG93Q29tbW9uV2l0aGRyYXdQcm9wcyAmXG4gIE5lYXJXYWxsZXRQcm9wcztcblxuaW50ZXJmYWNlIEV2bVdhbGxldFByb3BzIHtcbiAgd2FsbGV0OiBFdGhXYWxsZXQ7XG4gIHVzZVBlcm1pdD86IGJvb2xlYW47XG59XG5cbnR5cGUgQ29pbmZsb3dFdm1XaXRoZHJhd1Byb3BzID0gQ29pbmZsb3dDb21tb25XaXRoZHJhd1Byb3BzICYgRXZtV2FsbGV0UHJvcHM7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXRoV2FsbGV0UHJvcHMge1xuICBibG9ja2NoYWluOiAnZXRoJztcbn1cblxuZXhwb3J0IHR5cGUgQ29pbmZsb3dFdGhXaXRoZHJhd1Byb3BzID0gQ29pbmZsb3dFdm1XaXRoZHJhd1Byb3BzICZcbiAgRXRoV2FsbGV0UHJvcHM7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUG9seWdvbldhbGxldFByb3BzIHtcbiAgYmxvY2tjaGFpbjogJ3BvbHlnb24nO1xufVxuXG5leHBvcnQgdHlwZSBDb2luZmxvd1BvbHlnb25XaXRoZHJhd1Byb3BzID0gQ29pbmZsb3dFdm1XaXRoZHJhd1Byb3BzICZcbiAgUG9seWdvbldhbGxldFByb3BzO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VXYWxsZXRQcm9wcyB7XG4gIGJsb2NrY2hhaW46ICdiYXNlJztcbn1cblxuZXhwb3J0IHR5cGUgQ29pbmZsb3dCYXNlV2l0aGRyYXdQcm9wcyA9IENvaW5mbG93RXZtV2l0aGRyYXdQcm9wcyAmXG4gIEJhc2VXYWxsZXRQcm9wcztcblxuZXhwb3J0IGludGVyZmFjZSBBcmJpdHJ1bVdhbGxldFByb3BzIHtcbiAgYmxvY2tjaGFpbjogJ2FyYml0cnVtJztcbn1cblxuZXhwb3J0IHR5cGUgQ29pbmZsb3dBcmJpdHJ1bVdpdGhkcmF3UHJvcHMgPSBDb2luZmxvd0V2bVdpdGhkcmF3UHJvcHMgJlxuICBBcmJpdHJ1bVdhbGxldFByb3BzO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvaW5mbG93U2Vzc2lvbktleVdpdGhkcmF3UHJvcHNcbiAgZXh0ZW5kcyBDb2luZmxvd0NvbW1vbldpdGhkcmF3UHJvcHMge1xuICBzZXNzaW9uS2V5OiBzdHJpbmc7XG4gIHNpZ25lcjpcbiAgICB8IFNvbGFuYVdhbGxldFByb3BzXG4gICAgfCBOZWFyV2FsbGV0UHJvcHNcbiAgICB8IEV0aFdhbGxldFByb3BzXG4gICAgfCBQb2x5Z29uV2FsbGV0UHJvcHNcbiAgICB8IEJhc2VXYWxsZXRQcm9wc1xuICAgIHwgQXJiaXRydW1XYWxsZXRQcm9wcztcbiAgYmxvY2tjaGFpbj86IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IHR5cGUgQ29pbmZsb3dXaXRoZHJhd1Byb3BzID1cbiAgfCBDb2luZmxvd1NvbGFuYVdpdGhkcmF3UHJvcHNcbiAgfCBDb2luZmxvd05lYXJXaXRoZHJhd1Byb3BzXG4gIHwgQ29pbmZsb3dFdGhXaXRoZHJhd1Byb3BzXG4gIHwgQ29pbmZsb3dQb2x5Z29uV2l0aGRyYXdQcm9wc1xuICB8IENvaW5mbG93QmFzZVdpdGhkcmF3UHJvcHNcbiAgfCBDb2luZmxvd0FyYml0cnVtV2l0aGRyYXdQcm9wc1xuICB8IENvaW5mbG93U2Vzc2lvbktleVdpdGhkcmF3UHJvcHM7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tbW9uRXZtUmVkZWVtIHtcbiAgd2FpdEZvckhhc2g/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5vcm1hbFJlZGVlbSBleHRlbmRzIENvbW1vbkV2bVJlZGVlbSB7XG4gIHRyYW5zYWN0aW9uOiB7dG86IHN0cmluZzsgZGF0YTogc3RyaW5nfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBLbm93blRva2VuSWRSZWRlZW0gZXh0ZW5kcyBOb3JtYWxSZWRlZW0ge1xuICBuZnRDb250cmFjdDogc3RyaW5nO1xuICBuZnRJZDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNhZmVNaW50UmVkZWVtIGV4dGVuZHMgTm9ybWFsUmVkZWVtIHtcbiAgdHlwZTogJ3NhZmVNaW50JztcbiAgbmZ0Q29udHJhY3Q/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmV0dXJuZWRUb2tlbklkUmVkZWVtIGV4dGVuZHMgTm9ybWFsUmVkZWVtIHtcbiAgdHlwZTogJ3JldHVybmVkJztcbiAgbmZ0Q29udHJhY3Q/OiBzdHJpbmc7XG59XG5cbnR5cGUgUmVzZXJ2b2lyTmZ0SWRJdGVtID0gT21pdDxLbm93blRva2VuSWRSZWRlZW0sIGtleW9mIE5vcm1hbFJlZGVlbT47XG5pbnRlcmZhY2UgUmVzZXJ2b2lyT3JkZXJJZEl0ZW0ge1xuICBvcmRlcklkOiBzdHJpbmc7XG59XG50eXBlIFJlc2Vydm9pckl0ZW0gPSBSZXNlcnZvaXJOZnRJZEl0ZW0gfCBSZXNlcnZvaXJPcmRlcklkSXRlbTtcbnR5cGUgUmVzZXJ2b2lySXRlbXMgPSBSZXNlcnZvaXJJdGVtIHwgUmVzZXJ2b2lySXRlbVtdO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlc2Vydm9pclJlZGVlbSBleHRlbmRzIENvbW1vbkV2bVJlZGVlbSB7XG4gIHR5cGU6ICdyZXNlcnZvaXInO1xuICBpdGVtczogUmVzZXJ2b2lySXRlbXM7XG4gIHRha2VyPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRva2VuUmVkZWVtIGV4dGVuZHMgQ29tbW9uRXZtUmVkZWVtIHtcbiAgdHlwZTogJ3Rva2VuJztcbiAgZGVzdGluYXRpb246IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgRXZtVHJhbnNhY3Rpb25EYXRhID1cbiAgfCBTYWZlTWludFJlZGVlbVxuICB8IFJldHVybmVkVG9rZW5JZFJlZGVlbVxuICB8IFJlc2Vydm9pclJlZGVlbVxuICB8IEtub3duVG9rZW5JZFJlZGVlbVxuICB8IE5vcm1hbFJlZGVlbVxuICB8IFRva2VuUmVkZWVtO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvaW5mbG93SUZyYW1lUHJvcHNcbiAgZXh0ZW5kcyBPbWl0PENvaW5mbG93VHlwZXMsICdtZXJjaGFudElkJz4sXG4gICAgUGljazxcbiAgICAgIENvaW5mbG93Q29tbW9uUHVyY2hhc2VQcm9wcyxcbiAgICAgIHwgJ2NoYXJnZWJhY2tQcm90ZWN0aW9uRGF0YSdcbiAgICAgIHwgJ3dlYmhvb2tJbmZvJ1xuICAgICAgfCAnYW1vdW50J1xuICAgICAgfCAnY3VzdG9tZXJJbmZvJ1xuICAgICAgfCAnc2V0dGxlbWVudFR5cGUnXG4gICAgICB8ICdlbWFpbCdcbiAgICAgIHwgJ3BsYW5Db2RlJ1xuICAgICAgfCAnZGV2aWNlSWQnXG4gICAgICB8ICdqd3RUb2tlbidcbiAgICAgIHwgJ29yaWdpbnMnXG4gICAgICB8ICd0aHJlZURzQ2hhbGxlbmdlUHJlZmVyZW5jZSdcbiAgICAgIHwgJ3N1cHBvcnRFbWFpbCdcbiAgICA+LFxuICAgIFBpY2s8XG4gICAgICBDb2luZmxvd0NvbW1vbldpdGhkcmF3UHJvcHMsXG4gICAgICB8ICdiYW5rQWNjb3VudExpbmtSZWRpcmVjdCdcbiAgICAgIHwgJ2FkZGl0aW9uYWxXYWxsZXRzJ1xuICAgICAgfCAndHJhbnNhY3Rpb25TaWduZXInXG4gICAgICB8ICdsb2NrQW1vdW50J1xuICAgICAgfCAnbG9ja0RlZmF1bHRUb2tlbidcbiAgICAgIHwgJ29yaWdpbnMnXG4gICAgPixcbiAgICBQaWNrPENvaW5mbG93RXZtUHVyY2hhc2VQcm9wcywgJ2F1dGhPbmx5Jz4sXG4gICAgUGljazxDb2luZmxvd1NvbGFuYVB1cmNoYXNlUHJvcHMsICdyZW50JyB8ICduYXRpdmVTb2xUb0NvbnZlcnQnIHwgJ3Rva2VuJz4ge1xuICB3YWxsZXRQdWJrZXk6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIHNlc3Npb25LZXk/OiBzdHJpbmc7XG4gIHJvdXRlOiBzdHJpbmc7XG4gIHJvdXRlUHJlZml4Pzogc3RyaW5nO1xuICB0cmFuc2FjdGlvbj86IHN0cmluZztcbiAgdG9rZW5zPzogc3RyaW5nW10gfCBQdWJsaWNLZXlbXTtcbiAgbmVhckRlcG9zaXQ/OiBzdHJpbmc7XG4gIG1lcmNoYW50Q3NzPzogc3RyaW5nO1xuICBjb2xvcj86ICd3aGl0ZScgfCAnYmxhY2snO1xuICBkaXNhYmxlQXBwbGVQYXk/OiBib29sZWFuO1xuICBkaXNhYmxlR29vZ2xlUGF5PzogYm9vbGVhbjtcbiAgdGhlbWU/OiBNZXJjaGFudFRoZW1lO1xuICB1c2VQZXJtaXQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgZW51bSBDYXJkVHlwZSB7XG4gIFZJU0EgPSAnVklTQScsXG4gIE1BU1RFUkNBUkQgPSAnTVNUUicsXG4gIEFNRVggPSAnQU1FWCcsXG4gIERJU0NPVkVSID0gJ0RJU0MnLFxufVxuIl19
@@ -321,20 +321,28 @@ var IFrameMessageMethods;
321
321
  IFrameMessageMethods["SendTransaction"] = "sendTransaction";
322
322
  IFrameMessageMethods["HeightChange"] = "heightChange";
323
323
  IFrameMessageMethods["Success"] = "success";
324
- IFrameMessageMethods["Load"] = "load";
324
+ IFrameMessageMethods["Loaded"] = "loaded";
325
325
  })(IFrameMessageMethods || (IFrameMessageMethods = {}));
326
326
  function getWalletPubkey(input) {
327
- if ('wallet' in input && input.wallet) {
328
- const { wallet } = input;
329
- if ('publicKey' in wallet) {
330
- return wallet.publicKey.toString();
331
- }
332
- if ('address' in wallet) {
333
- return wallet.address;
334
- }
335
- if ('accountId' in wallet) {
336
- return wallet.accountId;
337
- }
327
+ let wallet;
328
+ if ('signer' in input &&
329
+ typeof input.signer === 'object' &&
330
+ input.signer &&
331
+ 'wallet' in input.signer)
332
+ wallet = input.signer.wallet;
333
+ else if ('wallet' in input && input.wallet)
334
+ wallet = input.wallet;
335
+ if (!wallet)
336
+ return;
337
+ if (typeof wallet === 'string')
338
+ return wallet;
339
+ if (typeof wallet === 'object') {
340
+ if ('publicKey' in wallet)
341
+ return wallet.publicKey ? wallet.publicKey.toString() : undefined;
342
+ if ('address' in wallet)
343
+ return wallet.address ? wallet.address : undefined;
344
+ if ('accountId' in wallet)
345
+ return wallet.accountId ? wallet.accountId : undefined;
338
346
  }
339
347
  return null;
340
348
  }
@@ -370,32 +378,66 @@ function handleIFrameMessage(rawMessage, handlers) {
370
378
  return;
371
379
  handlers.onSuccess(walletCall.info);
372
380
  return;
381
+ case IFrameMessageMethods.Loaded:
382
+ return;
373
383
  }
374
384
  console.warn(`Didn't expect to get here, handleIFrameMessage method:${method} is not one of ${Object.values(IFrameMessageMethods)}`);
375
385
  }
376
386
  function getHandlers(props) {
377
- if (!props.blockchain) {
387
+ let chain;
388
+ let wallet;
389
+ if ('signer' in props &&
390
+ typeof props.signer === 'object' &&
391
+ props.signer &&
392
+ 'blockchain' in props.signer &&
393
+ 'wallet' in props.signer) {
394
+ chain = props.signer.blockchain;
395
+ wallet = props.signer.wallet;
396
+ }
397
+ else if ('blockchain' in props && props.blockchain) {
398
+ chain = props.blockchain;
399
+ wallet = props.wallet;
400
+ }
401
+ if (!chain) {
378
402
  return {
379
403
  handleSendTransaction: () => {
380
- throw new Error('handleSendTransaction Not Implemented for sessionKey');
404
+ throw new Error('handleSendTransaction Not Implemented');
381
405
  },
382
406
  handleSignMessage: () => {
383
- throw new Error('handleSendTransaction Not Implemented for sessionKey');
407
+ throw new Error('handleSendTransaction Not Implemented');
384
408
  },
385
409
  handleSignTransaction: () => {
386
- throw new Error('handleSendTransaction Not Implemented for sessionKey');
410
+ throw new Error('handleSendTransaction Not Implemented');
387
411
  },
388
412
  onSuccess: props.onSuccess,
389
413
  };
390
414
  }
391
- return CoinflowUtils.byBlockchain(props.blockchain, {
392
- solana: () => getSolanaWalletHandlers(props),
393
- near: () => getNearWalletHandlers(props),
394
- eth: () => getEvmWalletHandlers(props),
395
- polygon: () => getEvmWalletHandlers(props),
396
- base: () => getEvmWalletHandlers(props),
397
- arbitrum: () => getEvmWalletHandlers(props),
398
- user: () => getIdWalletHandlers(props),
415
+ return CoinflowUtils.byBlockchain(chain, {
416
+ solana: () => getSolanaWalletHandlers({
417
+ wallet: wallet,
418
+ onSuccess: props.onSuccess,
419
+ }),
420
+ near: () => getNearWalletHandlers({
421
+ wallet: wallet,
422
+ onSuccess: props.onSuccess,
423
+ }),
424
+ eth: () => getEvmWalletHandlers({
425
+ wallet: wallet,
426
+ onSuccess: props.onSuccess,
427
+ }),
428
+ polygon: () => getEvmWalletHandlers({
429
+ wallet: wallet,
430
+ onSuccess: props.onSuccess,
431
+ }),
432
+ base: () => getEvmWalletHandlers({
433
+ wallet: wallet,
434
+ onSuccess: props.onSuccess,
435
+ }),
436
+ arbitrum: () => getEvmWalletHandlers({
437
+ wallet: wallet,
438
+ onSuccess: props.onSuccess,
439
+ }),
440
+ user: () => getSessionKeyHandlers(props),
399
441
  })();
400
442
  }
401
443
  function getSolanaWalletHandlers({ wallet, onSuccess, }) {
@@ -443,11 +485,10 @@ function getSolanaTransaction(data) {
443
485
  return vtx;
444
486
  }
445
487
  function getNearWalletHandlers({ wallet, onSuccess, }) {
446
- const nearWallet = wallet;
447
488
  return {
448
489
  handleSendTransaction: async (transaction) => {
449
490
  const action = JSON.parse(Buffer.from(transaction, 'base64').toString());
450
- const executionOutcome = await nearWallet.signAndSendTransaction(action);
491
+ const executionOutcome = await wallet.signAndSendTransaction(action);
451
492
  if (!executionOutcome)
452
493
  throw new Error('Transaction did not send');
453
494
  const { transaction: transactionResult } = executionOutcome;
@@ -457,20 +498,19 @@ function getNearWalletHandlers({ wallet, onSuccess, }) {
457
498
  };
458
499
  }
459
500
  function getEvmWalletHandlers({ wallet, onSuccess, }) {
460
- const evmWallet = wallet;
461
501
  return {
462
502
  handleSendTransaction: async (transaction) => {
463
503
  const tx = JSON.parse(Buffer.from(transaction, 'base64').toString());
464
- const { hash } = await evmWallet.sendTransaction(tx);
504
+ const { hash } = await wallet.sendTransaction(tx);
465
505
  return hash;
466
506
  },
467
507
  handleSignMessage: async (message) => {
468
- return evmWallet.signMessage(message);
508
+ return wallet.signMessage(message);
469
509
  },
470
510
  onSuccess,
471
511
  };
472
512
  }
473
- function getIdWalletHandlers({ onSuccess, }) {
513
+ function getSessionKeyHandlers({ onSuccess, }) {
474
514
  return {
475
515
  handleSendTransaction: async () => {
476
516
  return Promise.resolve('');
@@ -1 +1 @@
1
- {"version":3,"file":"coinflowlabs-angular.mjs","sources":["../../../projects/coinflowlabs/src/lib/common/CoinflowTypes.ts","../../../projects/coinflowlabs/src/lib/common/SolanaPeerDeps.ts","../../../projects/coinflowlabs/src/lib/common/CoinflowUtils.ts","../../../projects/coinflowlabs/src/lib/common/CoinflowLibMessageHandlers.ts","../../../projects/coinflowlabs/src/lib/common/card-form/TokenEx.ts","../../../projects/coinflowlabs/src/lib/common/card-form/tokenexHelpers.ts","../../../projects/coinflowlabs/src/lib/coinflow-iframe.component.ts","../../../projects/coinflowlabs/src/lib/coinflow-purchase.component.ts","../../../projects/coinflowlabs/src/lib/coinflow-purchase-history.component.ts","../../../projects/coinflowlabs/src/lib/coinflow-purchase-protection.component.ts","../../../projects/coinflowlabs/src/lib/coinflow-withdraw.component.ts","../../../projects/coinflowlabs/src/lib/coinflow-withdraw-history.component.ts","../../../projects/coinflowlabs/src/lib/card-form/CardFormService.ts","../../../projects/coinflowlabs/src/lib/card-form/coinflow-card-number-input.component.ts","../../../projects/coinflowlabs/src/lib/card-form/coinflow-card-number-only-input.component.ts","../../../projects/coinflowlabs/src/lib/card-form/coinflow-cvv-input.component.ts","../../../projects/coinflowlabs/src/lib/card-form/coinflow-cvv-only-input.component.ts","../../../projects/coinflowlabs/src/lib/mobile-wallet/coinflow-mobile-wallet-button.component.ts","../../../projects/coinflowlabs/src/lib/mobile-wallet/apple-pay-overlay.component.ts","../../../projects/coinflowlabs/src/lib/mobile-wallet/coinflow-apple-pay-button.component.ts","../../../projects/coinflowlabs/src/lib/mobile-wallet/google-pay-overlay.component.ts","../../../projects/coinflowlabs/src/lib/mobile-wallet/coinflow-google-pay-button.component.ts","../../../projects/coinflowlabs/src/public-api.ts","../../../projects/coinflowlabs/src/coinflowlabs-angular.ts"],"sourcesContent":["import type {\n Connection,\n VersionedTransaction,\n PublicKey,\n Signer,\n Transaction,\n} from '@solana/web3.js';\n\nexport enum SettlementType {\n Credits = 'Credits',\n USDC = 'USDC',\n Bank = 'Bank',\n}\n\nexport enum MerchantStyle {\n Rounded = 'rounded',\n Sharp = 'sharp',\n Pill = 'pill',\n}\n\nexport type MerchantTheme = {\n primary?: string;\n background?: string;\n backgroundAccent?: string;\n backgroundAccent2?: string;\n textColor?: string;\n textColorAccent?: string;\n textColorAction?: string;\n font?: string;\n style?: MerchantStyle;\n};\n\nexport interface CustomerInfo {\n name?: string;\n verificationId?: string;\n displayName?: string;\n address?: string;\n city?: string;\n state?: string;\n zip?: string;\n country?: string;\n ip?: string;\n lat?: string;\n lng?: string;\n}\n\n/** Coinflow Types **/\nexport type CoinflowBlockchain =\n | 'solana'\n | 'near'\n | 'eth'\n | 'polygon'\n | 'base'\n | 'arbitrum'\n | 'user';\nexport type CoinflowEnvs =\n | 'prod'\n | 'staging'\n | 'staging-live'\n | 'sandbox'\n | 'local';\n\nexport interface CoinflowTypes {\n merchantId: string;\n env?: CoinflowEnvs;\n loaderBackground?: string;\n blockchain?: CoinflowBlockchain | undefined;\n handleHeightChange?: (height: string) => void;\n theme?: MerchantTheme;\n}\n\nexport type PartialBy<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;\n\nexport type OnSuccessMethod = (\n args:\n | {\n paymentId: string;\n hash?: string | undefined;\n }\n | string\n) => void | Promise<void>;\n\n/** Wallets **/\nexport interface SolanaWallet {\n publicKey: PublicKey | null;\n signTransaction?: <T extends Transaction | VersionedTransaction>(\n transaction: T\n ) => Promise<T>;\n sendTransaction: <T extends Transaction | VersionedTransaction>(\n transaction: T\n ) => Promise<string>;\n signMessage?: (message: Uint8Array) => Promise<Uint8Array>;\n}\n\nexport interface NearWallet {\n accountId: string;\n signAndSendTransaction: (transaction: unknown) => Promise<{\n transaction: {hash: string};\n }>;\n}\n\ntype AccessList = Array<{address: string; storageKeys: Array<string>}>;\ntype AccessListish =\n | AccessList\n | Array<[string, Array<string>]>\n | Record<string, Array<string>>;\n\nexport type EthWallet = {\n address: string | null | undefined;\n sendTransaction: (transaction: {\n to: string;\n from?: string;\n nonce?: Bytes | bigint | string | number;\n\n gasLimit?: Bytes | bigint | string | number;\n gasPrice?: Bytes | bigint | string | number;\n\n data?: BytesLike;\n value?: Bytes | bigint | string | number;\n chainId?: number;\n\n type?: number;\n accessList?: AccessListish;\n\n maxPriorityFeePerGas?: Bytes | bigint | string | number;\n maxFeePerGas?: Bytes | bigint | string | number;\n\n customData?: Record<string, any>;\n ccipReadEnabled?: boolean;\n }) => Promise<{hash: string}>;\n signMessage: (message: string) => Promise<string>;\n};\n\n/** History **/\nexport interface CoinflowSolanaHistoryProps extends CoinflowTypes {\n wallet: SolanaWallet;\n connection: Connection;\n blockchain: 'solana';\n}\n\nexport interface CoinflowNearHistoryProps extends CoinflowTypes {\n wallet: NearWallet;\n blockchain: 'near';\n}\n\nexport interface CoinflowEvmHistoryProps extends CoinflowTypes {\n wallet: EthWallet;\n}\n\nexport interface CoinflowEthHistoryProps extends CoinflowEvmHistoryProps {\n blockchain: 'eth';\n}\n\nexport interface CoinflowPolygonHistoryProps extends CoinflowEvmHistoryProps {\n blockchain: 'polygon';\n}\n\nexport interface CoinflowBaseHistoryProps extends CoinflowEvmHistoryProps {\n blockchain: 'base';\n}\n\nexport interface CoinflowArbitrumHistoryProps extends CoinflowEvmHistoryProps {\n blockchain: 'arbitrum';\n}\n\nexport type CoinflowHistoryProps =\n | CoinflowSolanaHistoryProps\n | CoinflowNearHistoryProps\n | CoinflowPolygonHistoryProps\n | CoinflowEthHistoryProps\n | CoinflowBaseHistoryProps\n | CoinflowArbitrumHistoryProps;\n\n/** Transactions **/\n\nexport type NearFtTransferCallAction = {\n methodName: 'ft_transfer_call';\n args: object;\n gas: string;\n deposit: string;\n};\n\ntype Bytes = ArrayLike<number>;\ntype BytesLike = Bytes | string;\n\ntype RawProductData = Record<string, string | number | boolean | object>;\n\n/** Purchase **/\n\nexport type ChargebackProtectionData = ChargebackProtectionItem[];\n\nexport interface ChargebackProtectionItem {\n /**\n * The name of the product\n */\n productName: string;\n /**\n * The product type. Possible values include: inGameProduct, gameOfSkill, dataStorage, computingResources, sportsTicket, eSportsTicket, musicTicket, conferenceTicket, virtualSportsTicket, virtualESportsTicket, virtualMusicTicket, virtualConferenceTicket, alcohol, DLC, subscription, fundACause, realEstate, computingContract, digitalArt, topUp\n */\n productType:\n | 'inGameProduct'\n | 'gameOfSkill'\n | 'dataStorage'\n | 'computingResources'\n | 'sportsTicket'\n | 'eSportsTicket'\n | 'musicTicket'\n | 'conferenceTicket'\n | 'virtualSportsTicket'\n | 'virtualESportsTicket'\n | 'virtualMusicTicket'\n | 'virtualConferenceTicket'\n | 'alcohol'\n | 'DLC'\n | 'subscription'\n | 'fundACause'\n | 'realEstate'\n | 'computingContract'\n | 'digitalArt'\n | 'topUp'\n | 'ownershipContract';\n /**\n * The item's list price\n */\n /**\n * The number of units sold\n */\n quantity: number;\n /**\n * Any additional data that the store can provide on the product, e.g. description, link to image, etc.\n */\n rawProductData?: RawProductData;\n}\n\nexport enum ThreeDsChallengePreference {\n NoPreference = 'NoPreference',\n Frictionless = 'Frictionless',\n Challenge = 'Challenge',\n}\n\nexport interface CoinflowCommonPurchaseProps extends CoinflowTypes {\n amount?: number | string;\n onSuccess?: OnSuccessMethod;\n webhookInfo?: object;\n email?: string;\n chargebackProtectionData?: ChargebackProtectionData;\n planCode?: string;\n disableApplePay?: boolean;\n disableGooglePay?: boolean;\n customerInfo?: CustomerInfo;\n settlementType?: SettlementType;\n authOnly?: boolean;\n deviceId?: string;\n jwtToken?: string;\n /**\n * Your company email address that the customer can contact.\n */\n supportEmail?: string;\n /**\n * If rendering the Coinflow component within multiple nested iframes, all ancestors in the chain must be provided as a comma-separated list.\n *\n * Example:\n * Primary origin that will be interacting with the Coinflow iFrame: foo.com\n * Subsequent origins that will render foo.com: bar.com\n * The origin array would then be: [https://foo.com,https://bar.com]\n */\n origins?: string[];\n threeDsChallengePreference?: ThreeDsChallengePreference;\n}\n\nexport interface CoinflowSolanaPurchaseProps\n extends CoinflowCommonPurchaseProps {\n wallet: SolanaWallet;\n transaction?: Transaction | VersionedTransaction;\n partialSigners?: Signer[];\n debugTx?: boolean;\n connection: Connection;\n blockchain: 'solana';\n token?: PublicKey | string;\n rent?: {lamports: string | number};\n nativeSolToConvert?: {lamports: string | number};\n}\n\nexport interface CoinflowSessionKeyPurchaseProps\n extends CoinflowCommonPurchaseProps {\n sessionKey: string;\n wallet?: undefined;\n blockchain?: CoinflowBlockchain | undefined;\n}\n\nexport interface CoinflowNearPurchaseProps extends CoinflowCommonPurchaseProps {\n wallet: NearWallet;\n blockchain: 'near';\n action?: NearFtTransferCallAction;\n nearDeposit?: string;\n}\n\nexport interface CoinflowEvmPurchaseProps extends CoinflowCommonPurchaseProps {\n transaction?: EvmTransactionData;\n token?: string;\n wallet: EthWallet;\n}\n\nexport interface CoinflowPolygonPurchaseProps extends CoinflowEvmPurchaseProps {\n blockchain: 'polygon';\n}\n\nexport interface CoinflowEthPurchaseProps extends CoinflowEvmPurchaseProps {\n blockchain: 'eth';\n}\n\nexport interface CoinflowBasePurchaseProps extends CoinflowEvmPurchaseProps {\n blockchain: 'base';\n}\n\nexport interface CoinflowArbitrumPurchaseProps\n extends CoinflowEvmPurchaseProps {\n blockchain: 'arbitrum';\n}\n\nexport type CoinflowPurchaseProps =\n | CoinflowSolanaPurchaseProps\n | CoinflowSessionKeyPurchaseProps\n | CoinflowNearPurchaseProps\n | CoinflowPolygonPurchaseProps\n | CoinflowEthPurchaseProps\n | CoinflowBasePurchaseProps\n | CoinflowArbitrumPurchaseProps;\n\n/** Withdraw **/\n\nexport interface CoinflowCommonWithdrawProps extends CoinflowTypes {\n onSuccess?: OnSuccessMethod;\n tokens?: string[];\n lockDefaultToken?: boolean;\n amount?: number;\n email?: string;\n bankAccountLinkRedirect?: string;\n additionalWallets?: {\n wallet: string;\n blockchain: 'solana' | 'eth' | 'near' | 'polygon' | 'base' | 'arbitrum';\n }[];\n lockAmount?: boolean;\n transactionSigner?: string;\n /**\n * If rendering the Coinflow component within multiple nested iframes, all ancestors in the chain must be provided as a comma-separated list.\n *\n * Example:\n * Primary origin that will be interacting with the Coinflow iFrame: foo.com\n * Subsequent origins that will render foo.com: bar.com\n * The origin array would then be: [https://foo.com,https://bar.com]\n */\n origins?: string[];\n}\n\nexport interface CoinflowSolanaWithdrawProps\n extends CoinflowCommonWithdrawProps {\n wallet: SolanaWallet;\n connection: Connection;\n blockchain: 'solana';\n}\n\nexport interface CoinflowNearWithdrawProps extends CoinflowCommonWithdrawProps {\n wallet: NearWallet;\n blockchain: 'near';\n}\n\nexport interface CoinflowEvmWithdrawProps extends CoinflowCommonWithdrawProps {\n wallet: EthWallet;\n usePermit?: boolean;\n}\n\nexport interface CoinflowEthWithdrawProps extends CoinflowEvmWithdrawProps {\n blockchain: 'eth';\n usePermit?: boolean;\n}\n\nexport interface CoinflowPolygonWithdrawProps extends CoinflowEvmWithdrawProps {\n blockchain: 'polygon';\n}\n\nexport interface CoinflowBaseWithdrawProps extends CoinflowEvmWithdrawProps {\n blockchain: 'base';\n}\n\nexport interface CoinflowArbitrumWithdrawProps\n extends CoinflowEvmWithdrawProps {\n blockchain: 'arbitrum';\n}\n\nexport type CoinflowWithdrawProps =\n | CoinflowSolanaWithdrawProps\n | CoinflowNearWithdrawProps\n | CoinflowEthWithdrawProps\n | CoinflowPolygonWithdrawProps\n | CoinflowBaseWithdrawProps\n | CoinflowArbitrumWithdrawProps;\n\nexport interface CommonEvmRedeem {\n waitForHash?: boolean;\n}\n\nexport interface NormalRedeem extends CommonEvmRedeem {\n transaction: {to: string; data: string};\n}\n\nexport interface KnownTokenIdRedeem extends NormalRedeem {\n nftContract: string;\n nftId: string;\n}\n\nexport interface SafeMintRedeem extends NormalRedeem {\n type: 'safeMint';\n nftContract?: string;\n}\n\nexport interface ReturnedTokenIdRedeem extends NormalRedeem {\n type: 'returned';\n nftContract?: string;\n}\n\ntype ReservoirNftIdItem = Omit<KnownTokenIdRedeem, keyof NormalRedeem>;\ninterface ReservoirOrderIdItem {\n orderId: string;\n}\ntype ReservoirItem = ReservoirNftIdItem | ReservoirOrderIdItem;\ntype ReservoirItems = ReservoirItem | ReservoirItem[];\n\nexport interface ReservoirRedeem extends CommonEvmRedeem {\n type: 'reservoir';\n items: ReservoirItems;\n taker?: string;\n}\n\nexport interface TokenRedeem extends CommonEvmRedeem {\n type: 'token';\n destination: string;\n}\n\nexport type EvmTransactionData =\n | SafeMintRedeem\n | ReturnedTokenIdRedeem\n | ReservoirRedeem\n | KnownTokenIdRedeem\n | NormalRedeem\n | TokenRedeem;\n\nexport interface CoinflowIFrameProps\n extends Omit<CoinflowTypes, 'merchantId'>,\n Pick<\n CoinflowCommonPurchaseProps,\n | 'chargebackProtectionData'\n | 'webhookInfo'\n | 'amount'\n | 'customerInfo'\n | 'settlementType'\n | 'email'\n | 'planCode'\n | 'deviceId'\n | 'jwtToken'\n | 'origins'\n | 'threeDsChallengePreference'\n | 'supportEmail'\n >,\n Pick<\n CoinflowCommonWithdrawProps,\n | 'bankAccountLinkRedirect'\n | 'additionalWallets'\n | 'transactionSigner'\n | 'lockAmount'\n | 'lockDefaultToken'\n | 'origins'\n >,\n Pick<CoinflowEvmPurchaseProps, 'authOnly'>,\n Pick<CoinflowSolanaPurchaseProps, 'rent' | 'nativeSolToConvert' | 'token'> {\n walletPubkey: string | null | undefined;\n sessionKey?: string;\n route: string;\n routePrefix?: string;\n transaction?: string;\n tokens?: string[] | PublicKey[];\n nearDeposit?: string;\n merchantCss?: string;\n color?: 'white' | 'black';\n disableApplePay?: boolean;\n disableGooglePay?: boolean;\n theme?: MerchantTheme;\n usePermit?: boolean;\n}\n\nexport enum CardType {\n VISA = 'VISA',\n MASTERCARD = 'MSTR',\n AMEX = 'AMEX',\n DISCOVER = 'DISC',\n}\n","// This works in angular, but not react\n// let web3: typeof import('@solana/web3.js') | undefined;\n// let base58: typeof import('bs58') | undefined;\n//\n// try {\n// web3 = require('@solana/web3.js');\n// base58 = require('bs58');\n// } catch (e) {}\n//\n// export {web3, base58};\n\n// This works in react, but not angular\nimport * as SolanaWeb3Js from '@solana/web3.js';\nimport base58Imported from 'bs58';\n\nconst web3: typeof SolanaWeb3Js | undefined = SolanaWeb3Js;\nconst base58: typeof base58Imported | undefined = base58Imported;\nexport {web3, base58};\n","import {\n CoinflowBlockchain,\n CoinflowEnvs,\n CoinflowIFrameProps,\n CoinflowPurchaseProps,\n SolanaWallet,\n} from './CoinflowTypes';\nimport {web3, base58} from './SolanaPeerDeps';\nimport LZString from 'lz-string';\nimport {Keypair, Transaction, VersionedTransaction} from '@solana/web3.js';\nimport {sign} from 'tweetnacl';\n\nexport class CoinflowUtils {\n env: CoinflowEnvs;\n url: string;\n\n constructor(env?: CoinflowEnvs) {\n this.env = env ?? 'prod';\n if (this.env === 'prod') this.url = 'https://api.coinflow.cash';\n else if (this.env === 'local') this.url = 'http://localhost:5000';\n else this.url = `https://api-${this.env}.coinflow.cash`;\n }\n\n async getNSurePartnerId(merchantId: string): Promise<string | undefined> {\n return fetch(this.url + `/merchant/view/${merchantId}`)\n .then(response => response.json())\n .then(\n (json: {\n nSurePartnerId: string | undefined;\n nSureSettings: {nSurePartnerId: string | undefined};\n }) => json.nSureSettings?.nSurePartnerId || json.nSurePartnerId\n )\n .catch(e => {\n console.error(e);\n return undefined;\n });\n }\n\n async getCreditBalance(\n publicKey: string,\n merchantId: string,\n blockchain: 'solana' | 'near'\n ): Promise<{cents: number}> {\n const response = await fetch(\n this.url + `/api/customer/balances/${merchantId}`,\n {\n method: 'GET',\n headers: {\n 'x-coinflow-auth-wallet': publicKey,\n 'x-coinflow-auth-blockchain': blockchain,\n },\n }\n );\n const {credits} = await response.json();\n return credits;\n }\n\n static getCoinflowBaseUrl(env?: CoinflowEnvs): string {\n if (!env || env === 'prod') return 'https://coinflow.cash';\n if (env === 'local') return 'http://localhost:3000';\n\n return `https://${env}.coinflow.cash`;\n }\n\n static getCoinflowApiUrl(env?: CoinflowEnvs): string {\n if (!env || env === 'prod') return 'https://api.coinflow.cash';\n if (env === 'local') return 'http://localhost:5000';\n\n return `https://api-${env}.coinflow.cash`;\n }\n\n static getCoinflowUrl({\n walletPubkey,\n sessionKey,\n route,\n routePrefix,\n env,\n amount,\n transaction,\n blockchain = 'solana',\n webhookInfo,\n email,\n loaderBackground,\n handleHeightChange,\n bankAccountLinkRedirect,\n additionalWallets,\n nearDeposit,\n chargebackProtectionData,\n merchantCss,\n color,\n rent,\n lockDefaultToken,\n token,\n tokens,\n planCode,\n disableApplePay,\n disableGooglePay,\n customerInfo,\n settlementType,\n lockAmount,\n nativeSolToConvert,\n theme,\n usePermit,\n transactionSigner,\n authOnly,\n deviceId,\n jwtToken,\n origins,\n threeDsChallengePreference,\n supportEmail,\n }: CoinflowIFrameProps): string {\n const prefix = routePrefix\n ? `/${routePrefix}/${blockchain}`\n : `/${blockchain}`;\n const url = new URL(prefix + route, CoinflowUtils.getCoinflowBaseUrl(env));\n\n if (walletPubkey) url.searchParams.append('pubkey', walletPubkey);\n if (sessionKey) url.searchParams.append('sessionKey', sessionKey);\n\n if (transaction) {\n url.searchParams.append('transaction', transaction);\n }\n if (amount) {\n url.searchParams.append('amount', amount.toString());\n }\n\n if (webhookInfo) {\n url.searchParams.append(\n 'webhookInfo',\n LZString.compressToEncodedURIComponent(JSON.stringify(webhookInfo))\n );\n }\n\n if (theme) {\n url.searchParams.append(\n 'theme',\n LZString.compressToEncodedURIComponent(JSON.stringify(theme))\n );\n }\n\n if (customerInfo) {\n url.searchParams.append(\n 'customerInfo',\n LZString.compressToEncodedURIComponent(JSON.stringify(customerInfo))\n );\n }\n\n if (email) {\n url.searchParams.append('email', email);\n }\n if (supportEmail) url.searchParams.append('supportEmail', supportEmail);\n\n if (token) {\n url.searchParams.append('token', token.toString());\n }\n\n if (tokens) {\n url.searchParams.append('tokens', tokens.toString());\n }\n\n if (loaderBackground) {\n url.searchParams.append('loaderBackground', loaderBackground);\n }\n\n if (handleHeightChange) {\n url.searchParams.append('useHeightChange', 'true');\n }\n\n if (bankAccountLinkRedirect) {\n url.searchParams.append(\n 'bankAccountLinkRedirect',\n bankAccountLinkRedirect\n );\n }\n\n if (additionalWallets)\n url.searchParams.append(\n 'additionalWallets',\n LZString.compressToEncodedURIComponent(\n JSON.stringify(additionalWallets)\n )\n );\n\n if (nearDeposit) url.searchParams.append('nearDeposit', nearDeposit);\n\n if (chargebackProtectionData)\n url.searchParams.append(\n 'chargebackProtectionData',\n LZString.compressToEncodedURIComponent(\n JSON.stringify(chargebackProtectionData)\n )\n );\n if (deviceId) {\n url.searchParams.append('deviceId', deviceId);\n } else {\n if (typeof window !== 'undefined') {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const deviceId = window?.nSureSDK?.getDeviceId();\n if (deviceId) url.searchParams.append('deviceId', deviceId);\n }\n }\n\n if (merchantCss) url.searchParams.append('merchantCss', merchantCss);\n if (color) url.searchParams.append('color', color);\n if (rent) url.searchParams.append('rent', rent.lamports.toString());\n if (nativeSolToConvert)\n url.searchParams.append(\n 'nativeSolToConvert',\n nativeSolToConvert.lamports.toString()\n );\n if (lockDefaultToken) url.searchParams.append('lockDefaultToken', 'true');\n if (planCode) url.searchParams.append('planCode', planCode);\n\n if (disableApplePay) url.searchParams.append('disableApplePay', 'true');\n if (disableGooglePay) url.searchParams.append('disableGooglePay', 'true');\n if (settlementType)\n url.searchParams.append('settlementType', settlementType);\n\n if (lockAmount) url.searchParams.append('lockAmount', 'true');\n\n if (usePermit === false) url.searchParams.append('usePermit', 'false');\n if (transactionSigner)\n url.searchParams.append('transactionSigner', transactionSigner);\n if (authOnly === true) url.searchParams.append('authOnly', 'true');\n if (jwtToken) url.searchParams.append('jwtToken', jwtToken);\n if (origins)\n url.searchParams.append(\n 'origins',\n LZString.compressToEncodedURIComponent(JSON.stringify(origins))\n );\n\n if (threeDsChallengePreference)\n url.searchParams.append(\n 'threeDsChallengePreference',\n threeDsChallengePreference\n );\n\n return url.toString();\n }\n\n static getTransaction(props: CoinflowPurchaseProps): string | undefined {\n if (!props.blockchain) return undefined;\n\n return this.byBlockchain<() => string | undefined>(props.blockchain, {\n solana: () => {\n if (!('transaction' in props)) return undefined;\n const {transaction} = props;\n if (!web3)\n throw new Error('@solana/web3.js dependency is required for Solana');\n if (!base58) throw new Error('bs58 dependency is required for Solana');\n if (!transaction) return undefined;\n return base58.encode(\n (transaction as VersionedTransaction | Transaction).serialize({\n requireAllSignatures: false,\n verifySignatures: false,\n })\n );\n },\n polygon: () => {\n if (!('transaction' in props)) return undefined;\n const {transaction} = props;\n return LZString.compressToEncodedURIComponent(\n JSON.stringify(transaction)\n );\n },\n eth: () => {\n if (!('transaction' in props)) return undefined;\n const {transaction} = props;\n return LZString.compressToEncodedURIComponent(\n JSON.stringify(transaction)\n );\n },\n base: () => {\n if (!('transaction' in props)) return undefined;\n const {transaction} = props;\n return LZString.compressToEncodedURIComponent(\n JSON.stringify(transaction)\n );\n },\n arbitrum: () => {\n if (!('transaction' in props)) return undefined;\n const {transaction} = props;\n return LZString.compressToEncodedURIComponent(\n JSON.stringify(transaction)\n );\n },\n near: () => {\n if (!('action' in props)) return undefined;\n const {action} = props;\n return LZString.compressToEncodedURIComponent(JSON.stringify(action));\n },\n user: () => {\n return undefined;\n },\n })();\n }\n\n static byBlockchain<T>(\n blockchain: CoinflowBlockchain,\n args: {\n solana: T;\n near: T;\n eth: T;\n polygon: T;\n base: T;\n arbitrum: T;\n user: T;\n }\n ): T {\n switch (blockchain) {\n case 'solana':\n return args.solana;\n case 'near':\n return args.near;\n case 'polygon':\n return args.polygon;\n case 'eth':\n return args.eth;\n case 'base':\n return args.base;\n case 'arbitrum':\n return args.arbitrum;\n case 'user':\n return args.user;\n default:\n throw new Error('blockchain not supported!');\n }\n }\n\n static async getWalletFromUserId({\n userId,\n merchantId,\n env,\n }: {\n userId: string;\n merchantId: string;\n env: CoinflowEnvs;\n }): Promise<SolanaWallet> {\n return this.getWalletFromEmail({\n email: userId,\n merchantId,\n env,\n });\n }\n\n static async getWalletFromEmail({\n email,\n merchantId,\n env,\n }: {\n email: string;\n merchantId: string;\n env: CoinflowEnvs;\n }): Promise<SolanaWallet> {\n const buffer = new TextEncoder().encode(email);\n const crypto = window.crypto.subtle;\n const hash = await crypto.digest('SHA-256', buffer);\n const seed = new Uint8Array(hash);\n const keypair = Keypair.fromSeed(seed);\n return {\n publicKey: keypair.publicKey,\n signMessage: (message: Uint8Array) =>\n Promise.resolve(sign.detached(message, keypair.secretKey)),\n signTransaction: async <T extends Transaction | VersionedTransaction>(\n transaction: T\n ): Promise<T> => {\n if (transaction instanceof Transaction) {\n transaction.sign(keypair);\n return transaction;\n } else {\n transaction.sign([keypair]);\n return transaction;\n }\n },\n sendTransaction: async <T extends Transaction | VersionedTransaction>(\n transaction: T\n ): Promise<string> => {\n if (transaction instanceof Transaction) {\n transaction.sign(keypair);\n } else {\n transaction.sign([keypair]);\n }\n\n const coinflowBaseUrl = this.getCoinflowApiUrl(env);\n const options = {\n method: 'POST',\n headers: {\n 'content-type': 'application/json',\n 'x-coinflow-auth-wallet': keypair.publicKey.toString(),\n 'x-coinflow-auth-blockchain': 'solana',\n },\n body: JSON.stringify({\n merchantId,\n signedTransaction: base58?.encode(transaction.serialize()),\n }),\n };\n\n const {signature} = await fetch(\n coinflowBaseUrl + '/api/utils/send-coinflow-tx',\n options\n ).then(res => res.json());\n return signature;\n },\n };\n }\n}\n","import {\n CoinflowPurchaseProps,\n CoinflowSessionKeyPurchaseProps,\n EthWallet,\n NearWallet,\n OnSuccessMethod,\n SolanaWallet,\n} from './CoinflowTypes';\nimport {CoinflowUtils} from './CoinflowUtils';\nimport type {Transaction, VersionedTransaction} from '@solana/web3.js';\nimport {web3, base58} from './SolanaPeerDeps';\n\nexport type WalletCall =\n | {method: IFrameMessageMethods; data: string}\n | SuccessWalletCall;\n\ntype SuccessWalletCall = {\n method: IFrameMessageMethods.Success;\n data: string;\n info: {paymentId: string; hash?: string};\n};\n\nexport interface IFrameMessageHandlers {\n handleSendTransaction: (transaction: string) => Promise<string>;\n handleSignMessage?: (message: string) => Promise<string>;\n handleSignTransaction?: (transaction: string) => Promise<string>;\n handleHeightChange?: (height: string) => void;\n onSuccess: OnSuccessMethod | undefined;\n}\n\nenum IFrameMessageMethods {\n SignMessage = 'signMessage',\n SignTransaction = 'signTransaction',\n SendTransaction = 'sendTransaction',\n HeightChange = 'heightChange',\n Success = 'success',\n Load = 'load',\n}\n\nexport function getWalletPubkey(\n input:\n | Pick<CoinflowPurchaseProps, 'wallet'>\n | Pick<CoinflowSessionKeyPurchaseProps, 'sessionKey'>\n): string | null | undefined {\n if ('wallet' in input && input.wallet) {\n const {wallet} = input;\n if ('publicKey' in wallet) {\n return wallet.publicKey!.toString();\n }\n\n if ('address' in wallet) {\n return wallet.address;\n }\n\n if ('accountId' in wallet) {\n return wallet.accountId;\n }\n }\n\n return null;\n}\n\nexport function handleIFrameMessage(\n rawMessage: string,\n handlers: IFrameMessageHandlers\n): Promise<string> | void {\n let walletCall: WalletCall;\n try {\n walletCall = JSON.parse(rawMessage);\n if (!('method' in walletCall) || !('data' in walletCall)) return;\n } catch (e) {\n console.error('handleIFrameMessage JSON parse', e);\n return;\n }\n\n const {data, method} = walletCall;\n switch (method) {\n case IFrameMessageMethods.SignMessage:\n if (!handlers.handleSignMessage) return;\n return handlers.handleSignMessage(data);\n case IFrameMessageMethods.SignTransaction:\n if (!handlers.handleSignTransaction) return;\n return handlers.handleSignTransaction(data);\n case IFrameMessageMethods.SendTransaction:\n return handlers.handleSendTransaction(data);\n case IFrameMessageMethods.HeightChange:\n if (!handlers.handleHeightChange) return;\n return handlers.handleHeightChange(data);\n case IFrameMessageMethods.Success:\n if (!handlers.onSuccess) return;\n handlers.onSuccess((walletCall as SuccessWalletCall).info);\n return;\n }\n\n console.warn(\n `Didn't expect to get here, handleIFrameMessage method:${method} is not one of ${Object.values(IFrameMessageMethods)}`\n );\n}\n\nexport function getHandlers(\n props: Pick<CoinflowPurchaseProps, 'wallet' | 'blockchain' | 'onSuccess'>\n): Omit<IFrameMessageHandlers, 'handleHeightChange'> {\n if (!props.blockchain) {\n return {\n handleSendTransaction: () => {\n throw new Error('handleSendTransaction Not Implemented for sessionKey');\n },\n handleSignMessage: () => {\n throw new Error('handleSendTransaction Not Implemented for sessionKey');\n },\n handleSignTransaction: () => {\n throw new Error('handleSendTransaction Not Implemented for sessionKey');\n },\n onSuccess: props.onSuccess,\n };\n }\n\n return CoinflowUtils.byBlockchain(props.blockchain, {\n solana: () => getSolanaWalletHandlers(props),\n near: () => getNearWalletHandlers(props),\n eth: () => getEvmWalletHandlers(props),\n polygon: () => getEvmWalletHandlers(props),\n base: () => getEvmWalletHandlers(props),\n arbitrum: () => getEvmWalletHandlers(props),\n user: () => getIdWalletHandlers(props),\n })();\n}\n\nfunction getSolanaWalletHandlers({\n wallet,\n onSuccess,\n}: Pick<CoinflowPurchaseProps, 'wallet' | 'onSuccess'>): Omit<\n IFrameMessageHandlers,\n 'handleHeightChange'\n> {\n return {\n handleSendTransaction: async (transaction: string) => {\n const tx = getSolanaTransaction(transaction);\n return await (wallet as SolanaWallet).sendTransaction(tx);\n },\n handleSignMessage: async (message: string) => {\n const signMessage = (wallet as SolanaWallet).signMessage;\n if (!signMessage) {\n throw new Error('signMessage is not supported by this wallet');\n }\n\n const signedMessage = await signMessage(\n new TextEncoder().encode(message)\n );\n if (!base58) throw new Error('bs58 dependency is required');\n return base58.encode(signedMessage);\n },\n handleSignTransaction: async (transaction: string) => {\n const signTransaction = (wallet as SolanaWallet).signTransaction;\n if (!signTransaction) {\n throw new Error('signTransaction is not supported by this wallet');\n }\n const tx = getSolanaTransaction(transaction);\n const signedTransaction = await signTransaction(tx);\n if (!base58) throw new Error('bs58 dependency is required');\n return base58.encode(\n signedTransaction.serialize({\n requireAllSignatures: false,\n verifySignatures: false,\n })\n );\n },\n onSuccess,\n };\n}\n\nfunction getSolanaTransaction(\n data: string\n): Transaction | VersionedTransaction {\n if (!web3)\n throw new Error(\n '@solana/web3.js is not defined. Please install @solana/web3.js into your project'\n );\n\n if (!base58)\n throw new Error(\n 'bs58 is not defined. Please install bs58 into your project'\n );\n\n const parsedUInt8Array = base58.decode(data);\n const vtx = web3.VersionedTransaction.deserialize(parsedUInt8Array);\n if (vtx.version === 'legacy') return web3.Transaction.from(parsedUInt8Array);\n return vtx;\n}\n\nfunction getNearWalletHandlers({\n wallet,\n onSuccess,\n}: Pick<CoinflowPurchaseProps, 'wallet' | 'onSuccess'>): Omit<\n IFrameMessageHandlers,\n 'handleHeightChange'\n> {\n const nearWallet = wallet as NearWallet;\n return {\n handleSendTransaction: async (transaction: string) => {\n const action = JSON.parse(Buffer.from(transaction, 'base64').toString());\n const executionOutcome = await nearWallet.signAndSendTransaction(action);\n if (!executionOutcome) throw new Error('Transaction did not send');\n const {transaction: transactionResult} = executionOutcome;\n return transactionResult.hash;\n },\n onSuccess,\n };\n}\n\nfunction getEvmWalletHandlers({\n wallet,\n onSuccess,\n}: Pick<CoinflowPurchaseProps, 'wallet' | 'onSuccess'>): Omit<\n IFrameMessageHandlers,\n 'handleHeightChange'\n> {\n const evmWallet = wallet as EthWallet;\n return {\n handleSendTransaction: async (transaction: string) => {\n const tx = JSON.parse(Buffer.from(transaction, 'base64').toString());\n const {hash} = await evmWallet.sendTransaction(tx);\n return hash;\n },\n handleSignMessage: async (message: string) => {\n return evmWallet.signMessage(message);\n },\n onSuccess,\n };\n}\n\nfunction getIdWalletHandlers({\n onSuccess,\n}: Pick<CoinflowPurchaseProps, 'onSuccess'>): Omit<\n IFrameMessageHandlers,\n 'handleHeightChange'\n> {\n return {\n handleSendTransaction: async () => {\n return Promise.resolve('');\n },\n onSuccess,\n };\n}\n","// Type definitions for TokenEx iframe integration\n\nimport {CardType, CoinflowEnvs} from '../CoinflowTypes';\nimport {CSSProperties} from 'react';\n\nexport const TokenExCardNumberIframeId = 'tokenExCardNumber';\nexport const TokenExCvvContainerID = 'tokenExCardCvv';\nexport interface TokenExIframe extends ReturnType<typeof TokenEx.Iframe> {\n tokenize: () => Promise<TokenizationResponse>;\n}\n\nexport const CARD_TYPE_MAPPING: Record<CardType, string> = {\n [CardType.VISA]: 'visa',\n [CardType.MASTERCARD]: 'masterCard',\n [CardType.AMEX]: 'americanExpress',\n [CardType.DISCOVER]: 'discover',\n};\n\nexport interface TokenExIFrameConfiguration {\n origin: string;\n timestamp: string;\n tokenExID: string;\n tokenScheme: string;\n authenticationKey: string;\n pci: true;\n token?: string;\n}\n\nexport interface CardFormInputStyles {\n base: CSSProperties | string;\n placeholder?: CSSProperties | string;\n focus?: CSSProperties | string;\n error?: CSSProperties | string;\n}\n\nexport type CoinflowCardTokenResponse = {\n token: string;\n};\n\nexport interface CoinflowCardNumberInputProps {\n env: CoinflowEnvs;\n css: CardFormInputStyles & {cvv: CardFormInputStyles};\n debug?: boolean;\n origins?: string[];\n font?: string;\n}\n\nexport interface CoinflowCvvOnlyInputProps {\n token: string;\n cardType: CardType;\n env: CoinflowEnvs;\n css: CardFormInputStyles & {cvv: CardFormInputStyles};\n debug?: boolean;\n origins?: string[];\n font?: string;\n}\n\nexport interface TokenizationResponse {\n cardType: string;\n cvvIncluded: true;\n firstSix: string;\n lastFour: string;\n referenceNumber: string;\n token: string;\n tokenHMAC: string;\n}\n\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace TokenEx {\n interface FraudServicesConfig {\n useKount?: boolean;\n kount?: {\n merchantId?: string;\n mode?: string;\n anId?: string;\n };\n }\n\n interface Config {\n debug?: boolean;\n enablePrettyFormat?: boolean;\n maskInput?: boolean;\n enableValidateOnBlur?: boolean;\n enableAriaRequired?: boolean;\n pci?: boolean;\n cvvOnly?: boolean;\n allowUnknownCardTypes?: boolean;\n enableAutoComplete?: boolean;\n returnAutoCompleteValues?: boolean;\n returnKhash?: boolean;\n returnWhash?: boolean;\n enforceLuhnCompliance?: boolean;\n use3DS?: boolean;\n enableValidateOnKeyUp?: boolean;\n enableValidateOnCvvKeyUp?: boolean;\n expiresInSeconds?: number;\n useExtendedBIN?: boolean;\n inlineIframeJavaScript?: boolean;\n iframeVersion?: number;\n authenticationKey?: string;\n origin?: string;\n tokenExID?: string;\n timestamp?: string;\n tokenScheme?: string;\n token?: string;\n customDataLabel?: string;\n customCvvDataLabel?: string;\n title?: string;\n cvvTitle?: string;\n inputTitle?: string;\n cvvInputTitle?: string;\n cardMaxLengths?: {\n visa?: number;\n mastercard?: number;\n americanExpress?: number;\n discover?: number;\n jcb?: number;\n diners?: number;\n };\n fraudServices?: FraudServicesConfig;\n threeDSMethodNotificationUrl?: string;\n customDataTypes?: string | object;\n cvvContainerID?: string;\n cvvPlaceholder?: string;\n cardType?: string;\n forterSiteId?: string;\n forterUsername?: string;\n customRegEx?: string;\n placeholder?: string;\n inputType?: string;\n inputMode?: string;\n font?: string;\n cvv?: boolean;\n styles: {\n base: string;\n focus: string;\n error: string;\n placeholder: string;\n cvv: {base: string; focus: string; placeholder: string; error: string};\n };\n }\n\n interface IframeAPI {\n load(): void;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n on: (event: string, callback: (data?: any) => void) => void;\n\n tokenize(): void;\n\n validate(): void;\n\n reset(): void;\n\n blur(): void;\n\n cvvBlur(): void;\n\n focus(): void;\n\n cvvFocus(): void;\n\n remove(): void;\n\n toggleMask(): void;\n\n toggleCvvMask(): void;\n\n setPAN(pan: string): void;\n\n binLookup(): void;\n\n validateConfig(): void;\n\n setFraudServicesRequestDetails(data: string): void;\n }\n\n function Iframe(containerID: string, configuration: Config): IframeAPI;\n }\n}\n","import {CSSProperties} from 'react';\nimport {\n TokenizationResponse,\n TokenExCvvContainerID,\n TokenExIframe,\n TokenExIFrameConfiguration,\n CARD_TYPE_MAPPING,\n TokenExCardNumberIframeId,\n} from './TokenEx';\nimport {CoinflowUtils} from '../CoinflowUtils';\nimport {CardType, CoinflowEnvs} from '../CoinflowTypes';\n\nexport interface DoInitializeTokenExIframeArgs {\n css: string;\n debug?: boolean;\n font?: string;\n origins: string[] | undefined;\n tokenExScriptLoaded: boolean;\n env: CoinflowEnvs;\n setCachedToken: (s: string | undefined) => void;\n setLoaded: (b: boolean) => void;\n}\n\nexport interface DoInitializeCvvOnlyTokenExIframeArgs\n extends DoInitializeTokenExIframeArgs {\n token: string;\n cardType: CardType;\n}\n\nexport async function getIframeConfig({\n token,\n origins,\n env,\n}: {\n token?: string;\n origins: string[] | undefined;\n env: CoinflowEnvs;\n}): Promise<TokenExIFrameConfiguration> {\n return new Promise((resolve, reject) => {\n fetch(new CoinflowUtils(env).url + '/api/checkout/authentication-key', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n origins: [...(origins ?? []), window.location.origin],\n token,\n }),\n })\n .then(async res => {\n resolve((await res.json()) as TokenExIFrameConfiguration);\n })\n .catch(e => reject(e));\n });\n}\n\nexport function setTokenExScriptTag({\n env,\n setTokenExScriptLoaded,\n}: {\n env: CoinflowEnvs;\n setTokenExScriptLoaded: (b: boolean) => void;\n}) {\n const scriptTagId = 'tokenex-script';\n if (document.head.querySelector(`#${scriptTagId}`)) return;\n\n const sdkScriptTag = document.createElement('script');\n sdkScriptTag.src =\n env === 'prod'\n ? 'https://htp.tokenex.com/iframe/iframe-v3.min.js'\n : 'https://test-htp.tokenex.com/iframe/iframe-v3.min.js';\n sdkScriptTag.id = scriptTagId;\n\n document.head.appendChild(sdkScriptTag);\n\n document.getElementById(scriptTagId)!.addEventListener('load', () => {\n console.log('Setting tokenExScriptLoaded to true!');\n setTokenExScriptLoaded(true);\n });\n}\n\nfunction loadIframe({\n iframe,\n setCachedToken,\n setLoaded,\n}: {\n setCachedToken: (s: string | undefined) => void;\n setLoaded: (b: boolean) => void;\n iframe: ReturnType<typeof TokenEx.Iframe>;\n}): TokenExIframe {\n const tokenize = async (): Promise<TokenizationResponse> => {\n iframe.tokenize();\n return await new Promise<TokenizationResponse>((resolve, reject) => {\n iframe.on('tokenize', (data: TokenizationResponse) => {\n setCachedToken(data.token);\n resolve(data);\n });\n iframe.on('validate', (data: {isValid: boolean; isCvvValid: boolean}) => {\n // noinspection PointlessBooleanExpressionJS\n const isInvalid = !data.isValid || data.isCvvValid === false;\n if (isInvalid) reject(data);\n });\n });\n };\n\n iframe.on('change', () => setCachedToken(undefined));\n iframe.on('cvvChange', () => setCachedToken(undefined));\n\n iframe.on('load', () => {\n setTimeout(() => setLoaded(true), 350);\n const el: HTMLIFrameElement | null = document.querySelector(\n '#tx_iframe_tokenExCardNumber'\n );\n if (el) {\n // noinspection JSDeprecatedSymbols\n el.scrolling = 'no';\n }\n });\n\n iframe.on('focus', () => {\n iframe.focus();\n });\n iframe.on('cvvFocus', () => {\n iframe.cvvFocus();\n });\n\n setLoaded(false);\n iframe.load();\n\n return {...iframe, tokenize};\n}\n\nexport async function doInitializeCvvOnlyTokenExIframe(\n args: DoInitializeCvvOnlyTokenExIframeArgs\n) {\n const {token, cardType} = args;\n return await doInitialize(TokenExCvvContainerID, args, {\n cvvOnly: true,\n cvv: true,\n cvvContainerID: TokenExCvvContainerID,\n placeholder: 'CVV',\n token,\n cardType: CARD_TYPE_MAPPING[cardType],\n });\n}\n\nexport async function doInitializeTokenExIframe(\n args: DoInitializeTokenExIframeArgs\n) {\n return await doInitialize(TokenExCardNumberIframeId, args, {\n cvv: true,\n cvvContainerID: TokenExCvvContainerID,\n cvvPlaceholder: 'CVV',\n });\n}\n\nexport async function doInitializeTokenExCardOnlyIframe(\n args: DoInitializeTokenExIframeArgs\n) {\n return await doInitialize(TokenExCardNumberIframeId, args, {cvv: false});\n}\n\nasync function doInitialize(\n id: string,\n {\n tokenExScriptLoaded,\n origins,\n env,\n css,\n debug,\n font,\n setCachedToken,\n setLoaded,\n }: DoInitializeTokenExIframeArgs,\n configOverrides: Partial<TokenEx.Config>\n) {\n if (!tokenExScriptLoaded && typeof TokenEx === 'undefined') {\n console.warn(\n 'Warning Unable to load TokenEx on first attempt waiting for load event from document.head.script#tokenex-script'\n );\n return;\n }\n const iframeConfig = await getIframeConfig({\n token: configOverrides.token,\n origins,\n env,\n });\n const {styles} = getStyles(css);\n const config = {\n ...iframeConfig,\n placeholder: '0000 0000 0000 0000',\n enablePrettyFormat: true,\n styles,\n font,\n debug: debug ?? false,\n ...configOverrides,\n };\n const iframe: ReturnType<typeof TokenEx.Iframe> = TokenEx.Iframe(id, config);\n\n return loadIframe({iframe, setCachedToken, setLoaded});\n}\n\nfunction getStyles(s: string) {\n const css = JSON.parse(s);\n const styles = {\n base: CSSPropertiesToComponent(css.base),\n focus: CSSPropertiesToComponent(css.focus),\n error: CSSPropertiesToComponent(css.error),\n placeholder: CSSPropertiesToComponent(css.placeholder),\n cvv: {\n base: CSSPropertiesToComponent(css.cvv?.base),\n focus: CSSPropertiesToComponent(css.cvv?.focus),\n error: CSSPropertiesToComponent(css.cvv?.error),\n placeholder: CSSPropertiesToComponent(css?.placeholder),\n },\n };\n\n return {styles};\n}\n\nfunction CSSPropertiesToComponent(\n dict: CSSProperties | string | undefined\n): string {\n if (!dict) return '';\n if (typeof dict === 'string') return dict;\n\n let str = '';\n for (const [key, value] of Object.entries(dict)) {\n let clo = '';\n key.split('').forEach(lt => {\n if (lt.toUpperCase() === lt) {\n clo += '-' + lt.toLowerCase();\n } else {\n clo += lt;\n }\n });\n str += clo + ':' + value + ';';\n }\n return str;\n}\n","import {\n Component,\n ElementRef,\n HostListener,\n Input,\n ViewChild,\n Output,\n EventEmitter,\n} from '@angular/core';\nimport {\n CoinflowIFrameProps,\n CoinflowUtils,\n IFrameMessageHandlers,\n handleIFrameMessage,\n} from './common';\nimport {DomSanitizer, SafeResourceUrl} from '@angular/platform-browser';\n\n@Component({\n selector: 'lib-coinflow-iframe',\n standalone: true,\n imports: [],\n template: ` <iframe\n width=\"100%\"\n height=\"100%\"\n #iframe\n scrolling=\"{{ iframeProps?.handleHeightChange ? 'no' : 'yes' }}\"\n allow=\"payment;camera\"\n title=\"withdraw\"\n frameBorder=\"0\"\n [src]=\"dynamicUrl\"\n ></iframe>`,\n})\nexport class CoinflowIFrameComponent {\n @Input() iframeProps!: CoinflowIFrameProps;\n @Input() messageHandlers!: IFrameMessageHandlers;\n\n @Output() messageEvent = new EventEmitter<any>();\n\n dynamicUrl?: SafeResourceUrl;\n @ViewChild('iframe') iframe?: ElementRef<HTMLIFrameElement>;\n\n constructor(private sanitizer: DomSanitizer) {}\n\n ngOnInit() {\n const coinflowUrl = CoinflowUtils.getCoinflowUrl(this.iframeProps);\n this.dynamicUrl =\n this.sanitizer.bypassSecurityTrustResourceUrl(coinflowUrl);\n }\n\n @HostListener('window:message', ['$event']) onPostMessage(event: any) {\n if (\n !event.origin.includes(\n CoinflowUtils.getCoinflowBaseUrl(this.iframeProps.env)\n )\n )\n return;\n\n this.messageEvent.emit(event);\n\n const promise = handleIFrameMessage(event.data, this.messageHandlers);\n if (!promise) return;\n promise\n .then(this.sendMessage.bind(this))\n .catch(e => this.sendMessage('ERROR ' + e.message));\n }\n\n sendMessage(message: string) {\n if (!this.iframe || !this.iframe.nativeElement) return;\n this.iframe.nativeElement.contentWindow!.postMessage(message, '*');\n }\n}\n","import {Component, Input} from '@angular/core';\nimport {CoinflowIFrameComponent} from './coinflow-iframe.component';\nimport {\n CoinflowIFrameProps,\n CoinflowPurchaseProps,\n IFrameMessageHandlers,\n getHandlers,\n getWalletPubkey,\n CoinflowUtils,\n} from './common';\n\n@Component({\n selector: 'lib-coinflow-purchase',\n standalone: true,\n imports: [CoinflowIFrameComponent],\n template:\n ' <lib-coinflow-iframe ng-if=\"iframeProps && messageHandlers\" [iframeProps]=\"iframeProps!\" [messageHandlers]=\"messageHandlers!\"></lib-coinflow-iframe> ',\n})\nexport class CoinflowPurchaseComponent {\n @Input() purchaseProps!: CoinflowPurchaseProps;\n iframeProps?: CoinflowIFrameProps;\n messageHandlers?: IFrameMessageHandlers;\n\n ngOnInit() {\n const walletPubkey = getWalletPubkey(this.purchaseProps);\n this.messageHandlers = getHandlers(this.purchaseProps);\n this.messageHandlers.handleHeightChange =\n this.purchaseProps.handleHeightChange;\n\n this.iframeProps = {\n ...this.purchaseProps,\n walletPubkey,\n route: `/purchase-v2/${this.purchaseProps?.merchantId}`,\n transaction: CoinflowUtils.getTransaction(this.purchaseProps),\n };\n }\n}\n","import {Component} from '@angular/core';\n\n@Component({\n selector: 'lib-coinflow-purchase-history',\n standalone: true,\n imports: [],\n template: ' <p>coinflow-purchase-history works!</p> ',\n})\nexport class CoinflowPurchaseHistoryComponent {}\n","import {Component} from '@angular/core';\n\n@Component({\n selector: 'lib-coinflow-purchase-protection',\n standalone: true,\n imports: [],\n template: ' <p>coinflow-purchase-protection works!</p> ',\n})\nexport class CoinflowPurchaseProtectionComponent {}\n","import {Component, Input} from '@angular/core';\nimport {\n CoinflowIFrameProps,\n CoinflowWithdrawProps,\n IFrameMessageHandlers,\n getHandlers,\n getWalletPubkey,\n} from './common';\nimport {CoinflowIFrameComponent} from './coinflow-iframe.component';\n\n@Component({\n selector: 'lib-coinflow-withdraw',\n standalone: true,\n imports: [CoinflowIFrameComponent],\n template:\n ' <lib-coinflow-iframe ng-if=\"iframeProps && messageHandlers\" [iframeProps]=\"iframeProps!\" [messageHandlers]=\"messageHandlers!\"></lib-coinflow-iframe> ',\n})\nexport class CoinflowWithdrawComponent {\n @Input() withdrawProps!: CoinflowWithdrawProps;\n iframeProps?: CoinflowIFrameProps;\n messageHandlers?: IFrameMessageHandlers;\n\n ngOnInit() {\n const walletPubkey = getWalletPubkey(this.withdrawProps);\n this.messageHandlers = getHandlers(this.withdrawProps);\n this.messageHandlers.handleHeightChange =\n this.withdrawProps.handleHeightChange;\n\n this.iframeProps = {\n ...this.withdrawProps,\n walletPubkey,\n route: `/withdraw/${this.withdrawProps?.merchantId}`,\n transaction: undefined,\n };\n }\n}\n","import {Component} from '@angular/core';\n\n@Component({\n selector: 'lib-coinflow-withdraw-history',\n standalone: true,\n imports: [],\n template: ' <p>coinflow-withdraw-history works!</p> ',\n})\nexport class CoinflowWithdrawHistoryComponent {}\n","import {\n doInitializeCvvOnlyTokenExIframe,\n doInitializeTokenExCardOnlyIframe,\n doInitializeTokenExIframe,\n TokenExIframe,\n CoinflowEnvs,\n} from '../common';\nimport {Injectable} from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CardFormService {\n loaded = false;\n tokenExIframe: TokenExIframe | undefined = undefined;\n\n setTokenExIframe(iframe: TokenExIframe | undefined) {\n this.tokenExIframe = iframe;\n }\n\n setCachedToken() {}\n\n setLoaded(input: boolean) {\n this.loaded = input;\n }\n\n async initializeCvvOnlyTokenExIframe(\n env: CoinflowEnvs,\n args: Omit<\n Parameters<typeof doInitializeCvvOnlyTokenExIframe>[0],\n 'env' | 'tokenExScriptLoaded' | 'setCachedToken' | 'setLoaded'\n >\n ) {\n const iframe = await doInitializeCvvOnlyTokenExIframe({\n ...args,\n tokenExScriptLoaded: true,\n env,\n setCachedToken: this.setCachedToken.bind(this),\n setLoaded: this.setLoaded.bind(this),\n });\n this.setTokenExIframe(iframe);\n if (iframe) iframe.load();\n return iframe;\n }\n\n async initializeTokenExIframe(\n env: CoinflowEnvs,\n args: Omit<\n Parameters<typeof doInitializeTokenExIframe>[0],\n 'env' | 'tokenExScriptLoaded' | 'setCachedToken' | 'setLoaded'\n >\n ) {\n console.log('initializeTokenExIframe');\n const iframe = await doInitializeTokenExIframe({\n ...args,\n tokenExScriptLoaded: true,\n env,\n setCachedToken: this.setCachedToken.bind(this),\n setLoaded: this.setLoaded.bind(this),\n });\n console.log('iframe', iframe);\n this.setTokenExIframe(iframe);\n if (iframe) iframe.load();\n console.log('LOADED');\n return iframe;\n }\n\n async initializeTokenExCardOnlyIframe(\n env: CoinflowEnvs,\n args: Omit<\n Parameters<typeof doInitializeTokenExCardOnlyIframe>[0],\n 'env' | 'tokenExScriptLoaded' | 'setCachedToken' | 'setLoaded'\n >\n ) {\n const iframe = await doInitializeTokenExCardOnlyIframe({\n ...args,\n tokenExScriptLoaded: true,\n env,\n setCachedToken: this.setCachedToken.bind(this),\n setLoaded: this.setLoaded.bind(this),\n });\n this.setTokenExIframe(iframe);\n if (iframe) iframe.load();\n return iframe;\n }\n}\n","import {Component, inject, Input} from '@angular/core';\nimport {\n CoinflowCardNumberInputProps,\n setTokenExScriptTag,\n TokenExCardNumberIframeId,\n TokenExIframe,\n} from '../common';\nimport {CardFormService} from './CardFormService';\n\n@Component({\n selector: 'lib-coinflow-card-number-input',\n standalone: true,\n imports: [],\n template: '<div id=\"{{TokenExCardNumberIframeId}}\"></div>',\n})\nexport class CoinflowCardNumberInput {\n private cardFormService = inject(CardFormService);\n @Input() args!: CoinflowCardNumberInputProps;\n private iframe: TokenExIframe | undefined = undefined;\n\n private onScriptLoaded() {\n console.log('onScriptLoaded');\n this.cardFormService\n .initializeTokenExIframe(this.args.env, {\n css: JSON.stringify(this.args.css),\n debug: this.args.debug,\n origins: this.args.origins,\n font: this.args.font,\n })\n .then(iframe => (this.iframe = iframe))\n .catch(e => console.error(e));\n }\n\n ngOnInit() {\n setTokenExScriptTag({\n env: this.args.env,\n setTokenExScriptLoaded: this.onScriptLoaded.bind(this),\n });\n }\n\n tokenize() {\n return this.iframe!.tokenize();\n }\n\n protected readonly TokenExCardNumberIframeId = TokenExCardNumberIframeId;\n}\n","import {Component, inject, Input} from '@angular/core';\nimport {\n CoinflowCardNumberInputProps,\n setTokenExScriptTag,\n TokenExCardNumberIframeId,\n TokenExIframe,\n} from '../common';\nimport {CardFormService} from './CardFormService';\n\n@Component({\n selector: 'lib-coinflow-card-number-only-input',\n standalone: true,\n imports: [],\n template: '<div id=\"{{TokenExCardNumberIframeId}}\"></div>',\n})\nexport class CoinflowCardNumberOnlyInput {\n private cardFormService = inject(CardFormService);\n @Input() args!: CoinflowCardNumberInputProps;\n private iframe: TokenExIframe | undefined = undefined;\n\n private onScriptLoaded() {\n console.log('onScriptLoaded');\n this.cardFormService\n .initializeTokenExCardOnlyIframe(this.args.env, {\n css: JSON.stringify(this.args.css),\n debug: this.args.debug,\n origins: this.args.origins,\n font: this.args.font,\n })\n .then(iframe => (this.iframe = iframe))\n .catch(e => console.error(e));\n }\n\n ngOnInit() {\n setTokenExScriptTag({\n env: this.args.env,\n setTokenExScriptLoaded: this.onScriptLoaded.bind(this),\n });\n }\n\n tokenize() {\n return this.iframe!.tokenize();\n }\n\n protected readonly TokenExCardNumberIframeId = TokenExCardNumberIframeId;\n}\n","import {Component} from '@angular/core';\nimport {TokenExCvvContainerID} from '../common';\n\n@Component({\n selector: 'lib-coinflow-cvv-input',\n standalone: true,\n imports: [],\n template: '<div id=\"{{TokenExCvvContainerID}}\" ></div>',\n})\nexport class CoinflowCvvInputComponent {\n protected readonly TokenExCvvContainerID = TokenExCvvContainerID;\n}\n","import {Component, inject, Input} from '@angular/core';\nimport {\n CoinflowCvvOnlyInputProps,\n setTokenExScriptTag,\n TokenExCvvContainerID,\n TokenExIframe,\n} from '../common';\nimport {CardFormService} from './CardFormService';\n\n@Component({\n selector: 'lib-coinflow-cvv-only-input',\n standalone: true,\n imports: [],\n template: '<div id=\"{{TokenExCvvContainerID}}\"></div>',\n})\nexport class CoinflowCvvOnlyInputComponent {\n private cardFormService = inject(CardFormService);\n @Input() args!: CoinflowCvvOnlyInputProps;\n private iframe: TokenExIframe | undefined = undefined;\n\n private onScriptLoaded() {\n this.cardFormService\n .initializeCvvOnlyTokenExIframe(this.args.env, {\n css: JSON.stringify(this.args.css),\n debug: this.args.debug,\n origins: this.args.origins,\n font: this.args.font,\n token: this.args.token,\n cardType: this.args.cardType,\n })\n .then(iframe => (this.iframe = iframe))\n .catch(e => console.error(e));\n }\n\n ngOnInit() {\n setTokenExScriptTag({\n env: this.args.env,\n setTokenExScriptLoaded: this.onScriptLoaded.bind(this),\n });\n }\n\n tokenize() {\n return this.iframe!.tokenize();\n }\n\n protected readonly TokenExCvvContainerID = TokenExCvvContainerID;\n}\n","import {Component, Input} from '@angular/core';\nimport {CoinflowIFrameComponent} from '../coinflow-iframe.component';\nimport {\n CoinflowIFrameProps,\n CoinflowPurchaseProps,\n IFrameMessageHandlers,\n getHandlers,\n getWalletPubkey,\n CoinflowUtils,\n} from '../common';\n\n@Component({\n selector: 'lib-coinflow-mobile-wallet-button',\n standalone: true,\n imports: [CoinflowIFrameComponent],\n template: ` <div style=\"position: relative; height: 100%;\">\n <div\n [style.background-color]=\"purchaseProps.color\"\n [style.display]=\"overlayDisplayOverride ?? display\"\n [style.opacity]=\"opacity\"\n [style.align-items]=\"alignItems\"\n style=\"width: 100%; height: 40px; position: absolute; top: 0; bottom: 0; left: 0; z-index: 20; justify-content: center; pointer-events: none;\"\n >\n <ng-content></ng-content>\n </div>\n <div style=\"position: relative; z-index: 10; height: 100%;\">\n <lib-coinflow-iframe\n (messageEvent)=\"handleMessage($event)\"\n ng-if=\"iframeProps && messageHandlers\"\n [iframeProps]=\"iframeProps!\"\n [messageHandlers]=\"messageHandlers!\"\n ></lib-coinflow-iframe>\n </div>\n </div>`,\n})\nexport class CoinflowMobileWalletButtonComponent {\n @Input() purchaseProps!: CoinflowPurchaseProps & {\n color: 'white' | 'black';\n onError?: (message: string) => void;\n };\n\n @Input() route!: string;\n @Input() overlayDisplayOverride: string | undefined;\n @Input() alignItems: string | undefined;\n opacity: number = 0.8;\n display: string = 'flex';\n\n iframeProps?: CoinflowIFrameProps;\n messageHandlers?: IFrameMessageHandlers;\n\n handleMessage({data}: {data: string}) {\n try {\n const res = JSON.parse(data);\n\n console.log({data});\n if ('method' in res && res.data.startsWith('ERROR')) {\n this.purchaseProps.onError?.(res.info);\n return;\n }\n\n if ('method' in res && res.method === 'loaded') {\n this.opacity = 1;\n setTimeout(() => {\n this.display = 'none';\n }, 2000);\n }\n } catch (e) {}\n }\n\n ngOnInit() {\n const walletPubkey = getWalletPubkey(this.purchaseProps);\n this.messageHandlers = getHandlers(this.purchaseProps);\n this.messageHandlers.handleHeightChange =\n this.purchaseProps.handleHeightChange;\n\n this.iframeProps = {\n ...this.purchaseProps,\n walletPubkey,\n route: `/${this.route}/${this.purchaseProps?.merchantId}`,\n routePrefix: 'form',\n transaction: CoinflowUtils.getTransaction(this.purchaseProps),\n };\n }\n}\n","import {Component, Input} from '@angular/core';\nimport {CoinflowPurchaseProps, IFrameMessageHandlers} from '../common';\nimport {CoinflowMobileWalletButtonComponent} from './coinflow-mobile-wallet-button.component';\n\n@Component({\n selector: 'coinflow-apple-pay-overlay',\n standalone: true,\n imports: [],\n template: `\n <svg id=\"svg-logo\" viewBox=\"0 0 35 15\">\n <svg\n id=\"svg-logo\"\n x=\"0\"\n y=\"3.85\"\n height=\"7.3\"\n width=\"35\"\n className=\"logo\"\n viewBox=\"0 0 105 43\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n >\n <title>Apple Logo</title>\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g fill=\"#000\">\n <path\n d=\"M19.4028,5.5674 C20.6008,4.0684 21.4138,2.0564 21.1998,0.0004 C19.4458,0.0874 17.3058,1.1574 16.0668,2.6564 C14.9538,3.9414 13.9688,6.0374 14.2258,8.0074 C16.1948,8.1784 18.1618,7.0244 19.4028,5.5674\"\n ></path>\n <path\n d=\"M21.1772,8.3926 C18.3182,8.2226 15.8872,10.0156 14.5212,10.0156 C13.1552,10.0156 11.0642,8.4786 8.8022,8.5196 C5.8592,8.5626 3.1282,10.2276 1.6342,12.8746 C-1.4378,18.1696 0.8232,26.0246 3.8112,30.3376 C5.2622,32.4716 7.0102,34.8206 9.3142,34.7366 C11.4912,34.6506 12.3442,33.3266 14.9902,33.3266 C17.6352,33.3266 18.4042,34.7366 20.7082,34.6936 C23.0972,34.6506 24.5922,32.5586 26.0422,30.4226 C27.7072,27.9906 28.3882,25.6426 28.4312,25.5126 C28.3882,25.4706 23.8232,23.7186 23.7812,18.4676 C23.7382,14.0706 27.3652,11.9786 27.5362,11.8496 C25.4882,8.8196 22.2872,8.4786 21.1772,8.3926\"\n ></path>\n <path\n d=\"M85.5508,43.0381 L85.5508,39.1991 C85.8628,39.2421 86.6158,39.2871 87.0158,39.2871 C89.2138,39.2871 90.4558,38.3551 91.2108,35.9581 L91.6548,34.5371 L83.2428,11.2321 L88.4368,11.2321 L94.2958,30.1421 L94.4068,30.1421 L100.2668,11.2321 L105.3278,11.2321 L96.6048,35.7141 C94.6078,41.3291 92.3208,43.1721 87.4828,43.1721 C87.1048,43.1721 85.8838,43.1271 85.5508,43.0381\"\n ></path>\n <path\n d=\"M42.6499,19.3555 L48.3549,19.3555 C52.6829,19.3555 55.1469,17.0255 55.1469,12.9855 C55.1469,8.9455 52.6829,6.6375 48.3769,6.6375 L42.6499,6.6375 L42.6499,19.3555 Z M49.6869,2.4425 C55.9009,2.4425 60.2289,6.7265 60.2289,12.9625 C60.2289,19.2225 55.8129,23.5285 49.5309,23.5285 L42.6499,23.5285 L42.6499,34.4705 L37.6779,34.4705 L37.6779,2.4425 L49.6869,2.4425 Z\"\n ></path>\n <path\n d=\"M76.5547,25.7705 L76.5547,23.9715 L71.0287,24.3275 C67.9207,24.5275 66.3007,25.6815 66.3007,27.7015 C66.3007,29.6545 67.9887,30.9195 70.6287,30.9195 C74.0027,30.9195 76.5547,28.7665 76.5547,25.7705 M61.4617,27.8345 C61.4617,23.7285 64.5917,21.3755 70.3627,21.0205 L76.5547,20.6425 L76.5547,18.8675 C76.5547,16.2705 74.8457,14.8495 71.8057,14.8495 C69.2967,14.8495 67.4777,16.1375 67.0997,18.1125 L62.6167,18.1125 C62.7497,13.9615 66.6567,10.9435 71.9387,10.9435 C77.6207,10.9435 81.3267,13.9175 81.3267,18.5345 L81.3267,34.4705 L76.7327,34.4705 L76.7327,30.6305 L76.6217,30.6305 C75.3127,33.1395 72.4267,34.7145 69.2967,34.7145 C64.6807,34.7145 61.4617,31.9625 61.4617,27.8345\"\n ></path>\n </g>\n </g>\n </svg>\n </svg>\n `,\n})\nexport class CoinflowApplePayOverlayComponent {\n @Input() color!: 'white' | 'black';\n\n fill() {\n return this.color === 'white' ? '#000' : '#FFF';\n }\n}\n","import {Component, Input} from '@angular/core';\nimport {CoinflowPurchaseProps} from '../common';\nimport {CoinflowMobileWalletButtonComponent} from './coinflow-mobile-wallet-button.component';\nimport {CoinflowApplePayOverlayComponent} from './apple-pay-overlay.component';\n\n@Component({\n selector: 'lib-coinflow-apple-pay-button',\n standalone: true,\n imports: [\n CoinflowMobileWalletButtonComponent,\n CoinflowApplePayOverlayComponent,\n ],\n template: ` <lib-coinflow-mobile-wallet-button\n ng-if=\"iframeProps && messageHandlers\"\n [purchaseProps]=\"purchaseProps\"\n route=\"apple-pay\"\n >\n <svg id=\"svg-logo\" viewBox=\"0 0 35 15\">\n <svg\n id=\"svg-logo\"\n x=\"0\"\n y=\"3.85\"\n height=\"7.3\"\n width=\"35\"\n className=\"logo\"\n viewBox=\"0 0 105 43\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n >\n <title>Apple Logo</title>\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g [attr.fill]=\"fill()\">\n <path\n d=\"M19.4028,5.5674 C20.6008,4.0684 21.4138,2.0564 21.1998,0.0004 C19.4458,0.0874 17.3058,1.1574 16.0668,2.6564 C14.9538,3.9414 13.9688,6.0374 14.2258,8.0074 C16.1948,8.1784 18.1618,7.0244 19.4028,5.5674\"\n ></path>\n <path\n d=\"M21.1772,8.3926 C18.3182,8.2226 15.8872,10.0156 14.5212,10.0156 C13.1552,10.0156 11.0642,8.4786 8.8022,8.5196 C5.8592,8.5626 3.1282,10.2276 1.6342,12.8746 C-1.4378,18.1696 0.8232,26.0246 3.8112,30.3376 C5.2622,32.4716 7.0102,34.8206 9.3142,34.7366 C11.4912,34.6506 12.3442,33.3266 14.9902,33.3266 C17.6352,33.3266 18.4042,34.7366 20.7082,34.6936 C23.0972,34.6506 24.5922,32.5586 26.0422,30.4226 C27.7072,27.9906 28.3882,25.6426 28.4312,25.5126 C28.3882,25.4706 23.8232,23.7186 23.7812,18.4676 C23.7382,14.0706 27.3652,11.9786 27.5362,11.8496 C25.4882,8.8196 22.2872,8.4786 21.1772,8.3926\"\n ></path>\n <path\n d=\"M85.5508,43.0381 L85.5508,39.1991 C85.8628,39.2421 86.6158,39.2871 87.0158,39.2871 C89.2138,39.2871 90.4558,38.3551 91.2108,35.9581 L91.6548,34.5371 L83.2428,11.2321 L88.4368,11.2321 L94.2958,30.1421 L94.4068,30.1421 L100.2668,11.2321 L105.3278,11.2321 L96.6048,35.7141 C94.6078,41.3291 92.3208,43.1721 87.4828,43.1721 C87.1048,43.1721 85.8838,43.1271 85.5508,43.0381\"\n ></path>\n <path\n d=\"M42.6499,19.3555 L48.3549,19.3555 C52.6829,19.3555 55.1469,17.0255 55.1469,12.9855 C55.1469,8.9455 52.6829,6.6375 48.3769,6.6375 L42.6499,6.6375 L42.6499,19.3555 Z M49.6869,2.4425 C55.9009,2.4425 60.2289,6.7265 60.2289,12.9625 C60.2289,19.2225 55.8129,23.5285 49.5309,23.5285 L42.6499,23.5285 L42.6499,34.4705 L37.6779,34.4705 L37.6779,2.4425 L49.6869,2.4425 Z\"\n ></path>\n <path\n d=\"M76.5547,25.7705 L76.5547,23.9715 L71.0287,24.3275 C67.9207,24.5275 66.3007,25.6815 66.3007,27.7015 C66.3007,29.6545 67.9887,30.9195 70.6287,30.9195 C74.0027,30.9195 76.5547,28.7665 76.5547,25.7705 M61.4617,27.8345 C61.4617,23.7285 64.5917,21.3755 70.3627,21.0205 L76.5547,20.6425 L76.5547,18.8675 C76.5547,16.2705 74.8457,14.8495 71.8057,14.8495 C69.2967,14.8495 67.4777,16.1375 67.0997,18.1125 L62.6167,18.1125 C62.7497,13.9615 66.6567,10.9435 71.9387,10.9435 C77.6207,10.9435 81.3267,13.9175 81.3267,18.5345 L81.3267,34.4705 L76.7327,34.4705 L76.7327,30.6305 L76.6217,30.6305 C75.3127,33.1395 72.4267,34.7145 69.2967,34.7145 C64.6807,34.7145 61.4617,31.9625 61.4617,27.8345\"\n ></path>\n </g>\n </g>\n </svg>\n </svg>\n </lib-coinflow-mobile-wallet-button>`,\n})\nexport class CoinflowApplePayButtonComponent {\n @Input() purchaseProps!: CoinflowPurchaseProps & {\n color: 'white' | 'black';\n onError?: (message: string) => void;\n };\n\n fill() {\n return this.purchaseProps.color === 'white' ? '#000' : '#FFF';\n }\n}\n","import {Component, Input} from '@angular/core';\nimport {CoinflowPurchaseProps, IFrameMessageHandlers} from '../common';\nimport {CoinflowMobileWalletButtonComponent} from './coinflow-mobile-wallet-button.component';\n\n@Component({\n selector: 'coinflow-google-pay-overlay',\n standalone: true,\n imports: [],\n template: `\n @if (color === 'white') {\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"41\" height=\"17\">\n <g fill=\"none\" fill-rule=\"evenodd\">\n <path\n d=\"M19.526 2.635v4.083h2.518c.6 0 1.096-.202 1.488-.605.403-.402.605-.882.605-1.437 0-.544-.202-1.018-.605-1.422-.392-.413-.888-.62-1.488-.62h-2.518zm0 5.52v4.736h-1.504V1.198h3.99c1.013 0 1.873.337 2.582 1.012.72.675 1.08 1.497 1.08 2.466 0 .991-.36 1.819-1.08 2.482-.697.665-1.559.996-2.583.996h-2.485v.001zm7.668 2.287c0 .392.166.718.499.98.332.26.722.391 1.168.391.633 0 1.196-.234 1.692-.701.497-.469.744-1.019.744-1.65-.469-.37-1.123-.555-1.962-.555-.61 0-1.12.148-1.528.442-.409.294-.613.657-.613 1.093m1.946-5.815c1.112 0 1.989.297 2.633.89.642.594.964 1.408.964 2.442v4.932h-1.439v-1.11h-.065c-.622.914-1.45 1.372-2.486 1.372-.882 0-1.621-.262-2.215-.784-.594-.523-.891-1.176-.891-1.96 0-.828.313-1.486.94-1.976s1.463-.735 2.51-.735c.892 0 1.629.163 2.206.49v-.344c0-.522-.207-.966-.621-1.33a2.132 2.132 0 0 0-1.455-.547c-.84 0-1.504.353-1.995 1.062l-1.324-.834c.73-1.045 1.81-1.568 3.238-1.568m11.853.262l-5.02 11.53H34.42l1.864-4.034-3.302-7.496h1.635l2.387 5.749h.032l2.322-5.75z\"\n fill=\"#5F6368\"\n />\n <path\n d=\"M13.448 7.134c0-.473-.04-.93-.116-1.366H6.988v2.588h3.634a3.11 3.11 0 0 1-1.344 2.042v1.68h2.169c1.27-1.17 2.001-2.9 2.001-4.944\"\n fill=\"#4285F4\"\n />\n <path\n d=\"M6.988 13.7c1.816 0 3.344-.595 4.459-1.621l-2.169-1.681c-.603.406-1.38.643-2.29.643-1.754 0-3.244-1.182-3.776-2.774H.978v1.731a6.728 6.728 0 0 0 6.01 3.703\"\n fill=\"#34A853\"\n />\n <path\n d=\"M3.212 8.267a4.034 4.034 0 0 1 0-2.572V3.964H.978A6.678 6.678 0 0 0 .261 6.98c0 1.085.26 2.11.717 3.017l2.234-1.731z\"\n fill=\"#FABB05\"\n />\n <path\n d=\"M6.988 2.921c.992 0 1.88.34 2.58 1.008v.001l1.92-1.918C10.324.928 8.804.262 6.989.262a6.728 6.728 0 0 0-6.01 3.702l2.234 1.731c.532-1.592 2.022-2.774 3.776-2.774\"\n fill=\"#E94235\"\n />\n <path d=\"M0 0h41.285v18H0z\" />\n </g>\n </svg>\n } @else {\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"41\" height=\"17\">\n <g fill=\"none\" fill-rule=\"evenodd\">\n <path\n d=\"M19.526 2.635v4.083h2.518c.6 0 1.096-.202 1.488-.605.403-.402.605-.882.605-1.437 0-.544-.202-1.018-.605-1.422-.392-.413-.888-.62-1.488-.62h-2.518zm0 5.52v4.736h-1.504V1.198h3.99c1.013 0 1.873.337 2.582 1.012.72.675 1.08 1.497 1.08 2.466 0 .991-.36 1.819-1.08 2.482-.697.665-1.559.996-2.583.996h-2.485v.001zm7.668 2.287c0 .392.166.718.499.98.332.26.722.391 1.168.391.633 0 1.196-.234 1.692-.701.497-.469.744-1.019.744-1.65-.469-.37-1.123-.555-1.962-.555-.61 0-1.12.148-1.528.442-.409.294-.613.657-.613 1.093m1.946-5.815c1.112 0 1.989.297 2.633.89.642.594.964 1.408.964 2.442v4.932h-1.439v-1.11h-.065c-.622.914-1.45 1.372-2.486 1.372-.882 0-1.621-.262-2.215-.784-.594-.523-.891-1.176-.891-1.96 0-.828.313-1.486.94-1.976s1.463-.735 2.51-.735c.892 0 1.629.163 2.206.49v-.344c0-.522-.207-.966-.621-1.33a2.132 2.132 0 0 0-1.455-.547c-.84 0-1.504.353-1.995 1.062l-1.324-.834c.73-1.045 1.81-1.568 3.238-1.568m11.853.262l-5.02 11.53H34.42l1.864-4.034-3.302-7.496h1.635l2.387 5.749h.032l2.322-5.75z\"\n fill=\"#FFF\"\n />\n <path\n d=\"M13.448 7.134c0-.473-.04-.93-.116-1.366H6.988v2.588h3.634a3.11 3.11 0 0 1-1.344 2.042v1.68h2.169c1.27-1.17 2.001-2.9 2.001-4.944\"\n fill=\"#4285F4\"\n />\n <path\n d=\"M6.988 13.7c1.816 0 3.344-.595 4.459-1.621l-2.169-1.681c-.603.406-1.38.643-2.29.643-1.754 0-3.244-1.182-3.776-2.774H.978v1.731a6.728 6.728 0 0 0 6.01 3.703\"\n fill=\"#34A853\"\n />\n <path\n d=\"M3.212 8.267a4.034 4.034 0 0 1 0-2.572V3.964H.978A6.678 6.678 0 0 0 .261 6.98c0 1.085.26 2.11.717 3.017l2.234-1.731z\"\n fill=\"#FABB05\"\n />\n <path\n d=\"M6.988 2.921c.992 0 1.88.34 2.58 1.008v.001l1.92-1.918C10.324.928 8.804.262 6.989.262a6.728 6.728 0 0 0-6.01 3.702l2.234 1.731c.532-1.592 2.022-2.774 3.776-2.774\"\n fill=\"#E94235\"\n />\n </g>\n </svg>\n }\n `,\n})\nexport class CoinflowGooglePayOverlayComponent {\n @Input() color!: 'white' | 'black';\n}\n","import {Component, Input} from '@angular/core';\nimport {CoinflowPurchaseProps} from '../common';\nimport {CoinflowMobileWalletButtonComponent} from './coinflow-mobile-wallet-button.component';\nimport {CoinflowGooglePayOverlayComponent} from './google-pay-overlay.component';\n\n@Component({\n selector: 'lib-coinflow-google-pay-button',\n standalone: true,\n imports: [\n CoinflowMobileWalletButtonComponent,\n CoinflowGooglePayOverlayComponent,\n ],\n template: `<lib-coinflow-mobile-wallet-button\n ng-if=\"iframeProps && messageHandlers\"\n [purchaseProps]=\"purchaseProps\"\n route=\"google-pay\"\n alignItems=\"center\"\n overlayDisplayOverride=\"flex\"\n >\n <coinflow-google-pay-overlay\n [color]=\"purchaseProps.color\"\n ></coinflow-google-pay-overlay>\n </lib-coinflow-mobile-wallet-button> `,\n})\nexport class CoinflowGooglePayButtonComponent {\n @Input() purchaseProps!: CoinflowPurchaseProps & {\n color: 'white' | 'black';\n onError?: (message: string) => void;\n };\n}\n","/*\n * Public API Surface of coinflowlabs\n */\n\nexport * from './lib/coinflow-iframe.component';\nexport * from './lib/coinflow-purchase.component';\nexport * from './lib/coinflow-purchase-history.component';\nexport * from './lib/coinflow-purchase-protection.component';\nexport * from './lib/coinflow-withdraw.component';\nexport * from './lib/coinflow-withdraw-history.component';\n\nexport * from './lib/card-form/coinflow-card-number-input.component';\nexport * from './lib/card-form/coinflow-card-number-only-input.component';\nexport * from './lib/card-form/coinflow-cvv-input.component';\nexport * from './lib/card-form/coinflow-cvv-only-input.component';\n\nexport * from './lib/mobile-wallet/coinflow-apple-pay-button.component';\nexport * from './lib/mobile-wallet/coinflow-google-pay-button.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"coinflowlabs-angular.mjs","sources":["../../../projects/coinflowlabs/src/lib/common/CoinflowTypes.ts","../../../projects/coinflowlabs/src/lib/common/SolanaPeerDeps.ts","../../../projects/coinflowlabs/src/lib/common/CoinflowUtils.ts","../../../projects/coinflowlabs/src/lib/common/CoinflowLibMessageHandlers.ts","../../../projects/coinflowlabs/src/lib/common/card-form/TokenEx.ts","../../../projects/coinflowlabs/src/lib/common/card-form/tokenexHelpers.ts","../../../projects/coinflowlabs/src/lib/coinflow-iframe.component.ts","../../../projects/coinflowlabs/src/lib/coinflow-purchase.component.ts","../../../projects/coinflowlabs/src/lib/coinflow-purchase-history.component.ts","../../../projects/coinflowlabs/src/lib/coinflow-purchase-protection.component.ts","../../../projects/coinflowlabs/src/lib/coinflow-withdraw.component.ts","../../../projects/coinflowlabs/src/lib/coinflow-withdraw-history.component.ts","../../../projects/coinflowlabs/src/lib/card-form/CardFormService.ts","../../../projects/coinflowlabs/src/lib/card-form/coinflow-card-number-input.component.ts","../../../projects/coinflowlabs/src/lib/card-form/coinflow-card-number-only-input.component.ts","../../../projects/coinflowlabs/src/lib/card-form/coinflow-cvv-input.component.ts","../../../projects/coinflowlabs/src/lib/card-form/coinflow-cvv-only-input.component.ts","../../../projects/coinflowlabs/src/lib/mobile-wallet/coinflow-mobile-wallet-button.component.ts","../../../projects/coinflowlabs/src/lib/mobile-wallet/apple-pay-overlay.component.ts","../../../projects/coinflowlabs/src/lib/mobile-wallet/coinflow-apple-pay-button.component.ts","../../../projects/coinflowlabs/src/lib/mobile-wallet/google-pay-overlay.component.ts","../../../projects/coinflowlabs/src/lib/mobile-wallet/coinflow-google-pay-button.component.ts","../../../projects/coinflowlabs/src/public-api.ts","../../../projects/coinflowlabs/src/coinflowlabs-angular.ts"],"sourcesContent":["import type {\n Connection,\n VersionedTransaction,\n PublicKey,\n Signer,\n Transaction,\n} from '@solana/web3.js';\n\nexport enum SettlementType {\n Credits = 'Credits',\n USDC = 'USDC',\n Bank = 'Bank',\n}\n\nexport enum MerchantStyle {\n Rounded = 'rounded',\n Sharp = 'sharp',\n Pill = 'pill',\n}\n\nexport type MerchantTheme = {\n primary?: string;\n background?: string;\n backgroundAccent?: string;\n backgroundAccent2?: string;\n textColor?: string;\n textColorAccent?: string;\n textColorAction?: string;\n font?: string;\n style?: MerchantStyle;\n};\n\nexport interface CustomerInfo {\n name?: string;\n verificationId?: string;\n displayName?: string;\n address?: string;\n city?: string;\n state?: string;\n zip?: string;\n country?: string;\n ip?: string;\n lat?: string;\n lng?: string;\n}\n\n/** Coinflow Types **/\nexport type CoinflowBlockchain =\n | 'solana'\n | 'near'\n | 'eth'\n | 'polygon'\n | 'base'\n | 'arbitrum'\n | 'user';\nexport type CoinflowEnvs =\n | 'prod'\n | 'staging'\n | 'staging-live'\n | 'sandbox'\n | 'local';\n\nexport interface CoinflowTypes {\n merchantId: string;\n env?: CoinflowEnvs;\n loaderBackground?: string;\n blockchain?: CoinflowBlockchain | undefined;\n handleHeightChange?: (height: string) => void;\n theme?: MerchantTheme;\n}\n\nexport type PartialBy<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;\n\nexport type OnSuccessMethod = (\n args:\n | {\n paymentId: string;\n hash?: string | undefined;\n }\n | string\n) => void | Promise<void>;\n\n/** Wallets **/\nexport interface SolanaWallet {\n publicKey: PublicKey | null;\n signTransaction?: <T extends Transaction | VersionedTransaction>(\n transaction: T\n ) => Promise<T>;\n sendTransaction: <T extends Transaction | VersionedTransaction>(\n transaction: T\n ) => Promise<string>;\n signMessage?: (message: Uint8Array) => Promise<Uint8Array>;\n}\n\nexport interface NearWallet {\n accountId: string;\n signAndSendTransaction: (transaction: unknown) => Promise<{\n transaction: {hash: string};\n }>;\n}\n\ntype AccessList = Array<{address: string; storageKeys: Array<string>}>;\ntype AccessListish =\n | AccessList\n | Array<[string, Array<string>]>\n | Record<string, Array<string>>;\n\nexport type EthWallet = {\n address: string | null | undefined;\n sendTransaction: (transaction: {\n to: string;\n from?: string;\n nonce?: Bytes | bigint | string | number;\n\n gasLimit?: Bytes | bigint | string | number;\n gasPrice?: Bytes | bigint | string | number;\n\n data?: BytesLike;\n value?: Bytes | bigint | string | number;\n chainId?: number;\n\n type?: number;\n accessList?: AccessListish;\n\n maxPriorityFeePerGas?: Bytes | bigint | string | number;\n maxFeePerGas?: Bytes | bigint | string | number;\n\n customData?: Record<string, any>;\n ccipReadEnabled?: boolean;\n }) => Promise<{hash: string}>;\n signMessage: (message: string) => Promise<string>;\n};\n\n/** History **/\nexport interface CoinflowSolanaHistoryProps extends CoinflowTypes {\n wallet: SolanaWallet;\n connection: Connection;\n blockchain: 'solana';\n}\n\nexport interface CoinflowSessionKeyHistoryProps extends CoinflowTypes {\n sessionKey: string;\n blockchain?: undefined;\n}\n\nexport interface CoinflowNearHistoryProps extends CoinflowTypes {\n wallet: NearWallet;\n blockchain: 'near';\n}\n\nexport interface CoinflowEvmHistoryProps extends CoinflowTypes {\n wallet: EthWallet;\n blockchain: 'eth' | 'polygon' | 'base' | 'arbitrum';\n}\n\nexport interface CoinflowEthHistoryProps extends CoinflowEvmHistoryProps {\n blockchain: 'eth';\n}\n\nexport interface CoinflowPolygonHistoryProps extends CoinflowEvmHistoryProps {\n blockchain: 'polygon';\n}\n\nexport interface CoinflowBaseHistoryProps extends CoinflowEvmHistoryProps {\n blockchain: 'base';\n}\n\nexport interface CoinflowArbitrumHistoryProps extends CoinflowEvmHistoryProps {\n blockchain: 'arbitrum';\n}\n\nexport type CoinflowHistoryProps =\n | CoinflowSolanaHistoryProps\n | CoinflowNearHistoryProps\n | CoinflowPolygonHistoryProps\n | CoinflowEthHistoryProps\n | CoinflowBaseHistoryProps\n | CoinflowArbitrumHistoryProps\n | CoinflowSessionKeyHistoryProps;\n\n/** Transactions **/\n\nexport type NearFtTransferCallAction = {\n methodName: 'ft_transfer_call';\n args: object;\n gas: string;\n deposit: string;\n};\n\ntype Bytes = ArrayLike<number>;\ntype BytesLike = Bytes | string;\n\ntype RawProductData = Record<string, string | number | boolean | object>;\n\n/** Purchase **/\n\nexport type ChargebackProtectionData = ChargebackProtectionItem[];\n\nexport interface ChargebackProtectionItem {\n /**\n * The name of the product\n */\n productName: string;\n /**\n * The product type. Possible values include: inGameProduct, gameOfSkill, dataStorage, computingResources, sportsTicket, eSportsTicket, musicTicket, conferenceTicket, virtualSportsTicket, virtualESportsTicket, virtualMusicTicket, virtualConferenceTicket, alcohol, DLC, subscription, fundACause, realEstate, computingContract, digitalArt, topUp\n */\n productType:\n | 'inGameProduct'\n | 'gameOfSkill'\n | 'dataStorage'\n | 'computingResources'\n | 'sportsTicket'\n | 'eSportsTicket'\n | 'musicTicket'\n | 'conferenceTicket'\n | 'virtualSportsTicket'\n | 'virtualESportsTicket'\n | 'virtualMusicTicket'\n | 'virtualConferenceTicket'\n | 'alcohol'\n | 'DLC'\n | 'subscription'\n | 'fundACause'\n | 'realEstate'\n | 'computingContract'\n | 'digitalArt'\n | 'topUp'\n | 'ownershipContract';\n /**\n * The item's list price\n */\n /**\n * The number of units sold\n */\n quantity: number;\n /**\n * Any additional data that the store can provide on the product, e.g. description, link to image, etc.\n */\n rawProductData?: RawProductData;\n}\n\nexport enum ThreeDsChallengePreference {\n NoPreference = 'NoPreference',\n Frictionless = 'Frictionless',\n Challenge = 'Challenge',\n}\n\nexport interface CoinflowCommonPurchaseProps extends CoinflowTypes {\n amount?: number | string;\n onSuccess?: OnSuccessMethod;\n webhookInfo?: object;\n email?: string;\n chargebackProtectionData?: ChargebackProtectionData;\n planCode?: string;\n disableApplePay?: boolean;\n disableGooglePay?: boolean;\n customerInfo?: CustomerInfo;\n settlementType?: SettlementType;\n authOnly?: boolean;\n deviceId?: string;\n jwtToken?: string;\n /**\n * Your company email address that the customer can contact.\n */\n supportEmail?: string;\n /**\n * If rendering the Coinflow component within multiple nested iframes, all ancestors in the chain must be provided as a comma-separated list.\n *\n * Example:\n * Primary origin that will be interacting with the Coinflow iFrame: foo.com\n * Subsequent origins that will render foo.com: bar.com\n * The origin array would then be: [https://foo.com,https://bar.com]\n */\n origins?: string[];\n threeDsChallengePreference?: ThreeDsChallengePreference;\n}\n\nexport interface CoinflowSolanaPurchaseProps\n extends CoinflowCommonPurchaseProps {\n wallet: SolanaWallet;\n transaction?: Transaction | VersionedTransaction;\n partialSigners?: Signer[];\n debugTx?: boolean;\n connection: Connection;\n blockchain: 'solana';\n token?: PublicKey | string;\n rent?: {lamports: string | number};\n nativeSolToConvert?: {lamports: string | number};\n}\n\nexport interface CoinflowSessionKeyPurchaseProps\n extends CoinflowCommonPurchaseProps {\n sessionKey: string;\n wallet?: undefined;\n blockchain?: CoinflowBlockchain | undefined;\n}\n\nexport interface CoinflowNearPurchaseProps extends CoinflowCommonPurchaseProps {\n wallet: NearWallet;\n blockchain: 'near';\n action?: NearFtTransferCallAction;\n nearDeposit?: string;\n}\n\nexport interface CoinflowEvmPurchaseProps extends CoinflowCommonPurchaseProps {\n transaction?: EvmTransactionData;\n token?: string;\n wallet: EthWallet;\n}\n\nexport interface CoinflowPolygonPurchaseProps extends CoinflowEvmPurchaseProps {\n blockchain: 'polygon';\n}\n\nexport interface CoinflowEthPurchaseProps extends CoinflowEvmPurchaseProps {\n blockchain: 'eth';\n}\n\nexport interface CoinflowBasePurchaseProps extends CoinflowEvmPurchaseProps {\n blockchain: 'base';\n}\n\nexport interface CoinflowArbitrumPurchaseProps\n extends CoinflowEvmPurchaseProps {\n blockchain: 'arbitrum';\n}\n\nexport type CoinflowPurchaseProps =\n | CoinflowSolanaPurchaseProps\n | CoinflowSessionKeyPurchaseProps\n | CoinflowNearPurchaseProps\n | CoinflowPolygonPurchaseProps\n | CoinflowEthPurchaseProps\n | CoinflowBasePurchaseProps\n | CoinflowArbitrumPurchaseProps;\n\n/** Withdraw **/\n\nexport interface CoinflowCommonWithdrawProps extends CoinflowTypes {\n onSuccess?: OnSuccessMethod;\n tokens?: string[];\n lockDefaultToken?: boolean;\n amount?: number;\n email?: string;\n bankAccountLinkRedirect?: string;\n additionalWallets?: {\n wallet: string;\n blockchain: 'solana' | 'eth' | 'near' | 'polygon' | 'base' | 'arbitrum';\n }[];\n lockAmount?: boolean;\n transactionSigner?: string;\n /**\n * If rendering the Coinflow component within multiple nested iframes, all ancestors in the chain must be provided as a comma-separated list.\n *\n * Example:\n * Primary origin that will be interacting with the Coinflow iFrame: foo.com\n * Subsequent origins that will render foo.com: bar.com\n * The origin array would then be: [https://foo.com,https://bar.com]\n */\n origins?: string[];\n}\n\nexport type WalletTypes = SolanaWallet | NearWallet | EthWallet;\n\nexport interface SolanaWalletProps {\n wallet: SolanaWallet;\n connection: Connection;\n blockchain: 'solana';\n}\n\nexport type CoinflowSolanaWithdrawProps = CoinflowCommonWithdrawProps &\n SolanaWalletProps;\n\nexport interface NearWalletProps {\n wallet: NearWallet;\n blockchain: 'near';\n}\n\nexport type CoinflowNearWithdrawProps = CoinflowCommonWithdrawProps &\n NearWalletProps;\n\ninterface EvmWalletProps {\n wallet: EthWallet;\n usePermit?: boolean;\n}\n\ntype CoinflowEvmWithdrawProps = CoinflowCommonWithdrawProps & EvmWalletProps;\n\nexport interface EthWalletProps {\n blockchain: 'eth';\n}\n\nexport type CoinflowEthWithdrawProps = CoinflowEvmWithdrawProps &\n EthWalletProps;\n\nexport interface PolygonWalletProps {\n blockchain: 'polygon';\n}\n\nexport type CoinflowPolygonWithdrawProps = CoinflowEvmWithdrawProps &\n PolygonWalletProps;\n\nexport interface BaseWalletProps {\n blockchain: 'base';\n}\n\nexport type CoinflowBaseWithdrawProps = CoinflowEvmWithdrawProps &\n BaseWalletProps;\n\nexport interface ArbitrumWalletProps {\n blockchain: 'arbitrum';\n}\n\nexport type CoinflowArbitrumWithdrawProps = CoinflowEvmWithdrawProps &\n ArbitrumWalletProps;\n\nexport interface CoinflowSessionKeyWithdrawProps\n extends CoinflowCommonWithdrawProps {\n sessionKey: string;\n signer:\n | SolanaWalletProps\n | NearWalletProps\n | EthWalletProps\n | PolygonWalletProps\n | BaseWalletProps\n | ArbitrumWalletProps;\n blockchain?: undefined;\n}\n\nexport type CoinflowWithdrawProps =\n | CoinflowSolanaWithdrawProps\n | CoinflowNearWithdrawProps\n | CoinflowEthWithdrawProps\n | CoinflowPolygonWithdrawProps\n | CoinflowBaseWithdrawProps\n | CoinflowArbitrumWithdrawProps\n | CoinflowSessionKeyWithdrawProps;\n\nexport interface CommonEvmRedeem {\n waitForHash?: boolean;\n}\n\nexport interface NormalRedeem extends CommonEvmRedeem {\n transaction: {to: string; data: string};\n}\n\nexport interface KnownTokenIdRedeem extends NormalRedeem {\n nftContract: string;\n nftId: string;\n}\n\nexport interface SafeMintRedeem extends NormalRedeem {\n type: 'safeMint';\n nftContract?: string;\n}\n\nexport interface ReturnedTokenIdRedeem extends NormalRedeem {\n type: 'returned';\n nftContract?: string;\n}\n\ntype ReservoirNftIdItem = Omit<KnownTokenIdRedeem, keyof NormalRedeem>;\ninterface ReservoirOrderIdItem {\n orderId: string;\n}\ntype ReservoirItem = ReservoirNftIdItem | ReservoirOrderIdItem;\ntype ReservoirItems = ReservoirItem | ReservoirItem[];\n\nexport interface ReservoirRedeem extends CommonEvmRedeem {\n type: 'reservoir';\n items: ReservoirItems;\n taker?: string;\n}\n\nexport interface TokenRedeem extends CommonEvmRedeem {\n type: 'token';\n destination: string;\n}\n\nexport type EvmTransactionData =\n | SafeMintRedeem\n | ReturnedTokenIdRedeem\n | ReservoirRedeem\n | KnownTokenIdRedeem\n | NormalRedeem\n | TokenRedeem;\n\nexport interface CoinflowIFrameProps\n extends Omit<CoinflowTypes, 'merchantId'>,\n Pick<\n CoinflowCommonPurchaseProps,\n | 'chargebackProtectionData'\n | 'webhookInfo'\n | 'amount'\n | 'customerInfo'\n | 'settlementType'\n | 'email'\n | 'planCode'\n | 'deviceId'\n | 'jwtToken'\n | 'origins'\n | 'threeDsChallengePreference'\n | 'supportEmail'\n >,\n Pick<\n CoinflowCommonWithdrawProps,\n | 'bankAccountLinkRedirect'\n | 'additionalWallets'\n | 'transactionSigner'\n | 'lockAmount'\n | 'lockDefaultToken'\n | 'origins'\n >,\n Pick<CoinflowEvmPurchaseProps, 'authOnly'>,\n Pick<CoinflowSolanaPurchaseProps, 'rent' | 'nativeSolToConvert' | 'token'> {\n walletPubkey: string | null | undefined;\n sessionKey?: string;\n route: string;\n routePrefix?: string;\n transaction?: string;\n tokens?: string[] | PublicKey[];\n nearDeposit?: string;\n merchantCss?: string;\n color?: 'white' | 'black';\n disableApplePay?: boolean;\n disableGooglePay?: boolean;\n theme?: MerchantTheme;\n usePermit?: boolean;\n}\n\nexport enum CardType {\n VISA = 'VISA',\n MASTERCARD = 'MSTR',\n AMEX = 'AMEX',\n DISCOVER = 'DISC',\n}\n","// This works in angular, but not react\n// let web3: typeof import('@solana/web3.js') | undefined;\n// let base58: typeof import('bs58') | undefined;\n//\n// try {\n// web3 = require('@solana/web3.js');\n// base58 = require('bs58');\n// } catch (e) {}\n//\n// export {web3, base58};\n\n// This works in react, but not angular\nimport * as SolanaWeb3Js from '@solana/web3.js';\nimport base58Imported from 'bs58';\n\nconst web3: typeof SolanaWeb3Js | undefined = SolanaWeb3Js;\nconst base58: typeof base58Imported | undefined = base58Imported;\nexport {web3, base58};\n","import {\n CoinflowBlockchain,\n CoinflowEnvs,\n CoinflowIFrameProps,\n CoinflowPurchaseProps,\n SolanaWallet,\n} from './CoinflowTypes';\nimport {web3, base58} from './SolanaPeerDeps';\nimport LZString from 'lz-string';\nimport {Keypair, Transaction, VersionedTransaction} from '@solana/web3.js';\nimport {sign} from 'tweetnacl';\n\nexport class CoinflowUtils {\n env: CoinflowEnvs;\n url: string;\n\n constructor(env?: CoinflowEnvs) {\n this.env = env ?? 'prod';\n if (this.env === 'prod') this.url = 'https://api.coinflow.cash';\n else if (this.env === 'local') this.url = 'http://localhost:5000';\n else this.url = `https://api-${this.env}.coinflow.cash`;\n }\n\n async getNSurePartnerId(merchantId: string): Promise<string | undefined> {\n return fetch(this.url + `/merchant/view/${merchantId}`)\n .then(response => response.json())\n .then(\n (json: {\n nSurePartnerId: string | undefined;\n nSureSettings: {nSurePartnerId: string | undefined};\n }) => json.nSureSettings?.nSurePartnerId || json.nSurePartnerId\n )\n .catch(e => {\n console.error(e);\n return undefined;\n });\n }\n\n async getCreditBalance(\n publicKey: string,\n merchantId: string,\n blockchain: 'solana' | 'near'\n ): Promise<{cents: number}> {\n const response = await fetch(\n this.url + `/api/customer/balances/${merchantId}`,\n {\n method: 'GET',\n headers: {\n 'x-coinflow-auth-wallet': publicKey,\n 'x-coinflow-auth-blockchain': blockchain,\n },\n }\n );\n const {credits} = await response.json();\n return credits;\n }\n\n static getCoinflowBaseUrl(env?: CoinflowEnvs): string {\n if (!env || env === 'prod') return 'https://coinflow.cash';\n if (env === 'local') return 'http://localhost:3000';\n\n return `https://${env}.coinflow.cash`;\n }\n\n static getCoinflowApiUrl(env?: CoinflowEnvs): string {\n if (!env || env === 'prod') return 'https://api.coinflow.cash';\n if (env === 'local') return 'http://localhost:5000';\n\n return `https://api-${env}.coinflow.cash`;\n }\n\n static getCoinflowUrl({\n walletPubkey,\n sessionKey,\n route,\n routePrefix,\n env,\n amount,\n transaction,\n blockchain = 'solana',\n webhookInfo,\n email,\n loaderBackground,\n handleHeightChange,\n bankAccountLinkRedirect,\n additionalWallets,\n nearDeposit,\n chargebackProtectionData,\n merchantCss,\n color,\n rent,\n lockDefaultToken,\n token,\n tokens,\n planCode,\n disableApplePay,\n disableGooglePay,\n customerInfo,\n settlementType,\n lockAmount,\n nativeSolToConvert,\n theme,\n usePermit,\n transactionSigner,\n authOnly,\n deviceId,\n jwtToken,\n origins,\n threeDsChallengePreference,\n supportEmail,\n }: CoinflowIFrameProps): string {\n const prefix = routePrefix\n ? `/${routePrefix}/${blockchain}`\n : `/${blockchain}`;\n const url = new URL(prefix + route, CoinflowUtils.getCoinflowBaseUrl(env));\n\n if (walletPubkey) url.searchParams.append('pubkey', walletPubkey);\n if (sessionKey) url.searchParams.append('sessionKey', sessionKey);\n\n if (transaction) {\n url.searchParams.append('transaction', transaction);\n }\n if (amount) {\n url.searchParams.append('amount', amount.toString());\n }\n\n if (webhookInfo) {\n url.searchParams.append(\n 'webhookInfo',\n LZString.compressToEncodedURIComponent(JSON.stringify(webhookInfo))\n );\n }\n\n if (theme) {\n url.searchParams.append(\n 'theme',\n LZString.compressToEncodedURIComponent(JSON.stringify(theme))\n );\n }\n\n if (customerInfo) {\n url.searchParams.append(\n 'customerInfo',\n LZString.compressToEncodedURIComponent(JSON.stringify(customerInfo))\n );\n }\n\n if (email) {\n url.searchParams.append('email', email);\n }\n if (supportEmail) url.searchParams.append('supportEmail', supportEmail);\n\n if (token) {\n url.searchParams.append('token', token.toString());\n }\n\n if (tokens) {\n url.searchParams.append('tokens', tokens.toString());\n }\n\n if (loaderBackground) {\n url.searchParams.append('loaderBackground', loaderBackground);\n }\n\n if (handleHeightChange) {\n url.searchParams.append('useHeightChange', 'true');\n }\n\n if (bankAccountLinkRedirect) {\n url.searchParams.append(\n 'bankAccountLinkRedirect',\n bankAccountLinkRedirect\n );\n }\n\n if (additionalWallets)\n url.searchParams.append(\n 'additionalWallets',\n LZString.compressToEncodedURIComponent(\n JSON.stringify(additionalWallets)\n )\n );\n\n if (nearDeposit) url.searchParams.append('nearDeposit', nearDeposit);\n\n if (chargebackProtectionData)\n url.searchParams.append(\n 'chargebackProtectionData',\n LZString.compressToEncodedURIComponent(\n JSON.stringify(chargebackProtectionData)\n )\n );\n if (deviceId) {\n url.searchParams.append('deviceId', deviceId);\n } else {\n if (typeof window !== 'undefined') {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const deviceId = window?.nSureSDK?.getDeviceId();\n if (deviceId) url.searchParams.append('deviceId', deviceId);\n }\n }\n\n if (merchantCss) url.searchParams.append('merchantCss', merchantCss);\n if (color) url.searchParams.append('color', color);\n if (rent) url.searchParams.append('rent', rent.lamports.toString());\n if (nativeSolToConvert)\n url.searchParams.append(\n 'nativeSolToConvert',\n nativeSolToConvert.lamports.toString()\n );\n if (lockDefaultToken) url.searchParams.append('lockDefaultToken', 'true');\n if (planCode) url.searchParams.append('planCode', planCode);\n\n if (disableApplePay) url.searchParams.append('disableApplePay', 'true');\n if (disableGooglePay) url.searchParams.append('disableGooglePay', 'true');\n if (settlementType)\n url.searchParams.append('settlementType', settlementType);\n\n if (lockAmount) url.searchParams.append('lockAmount', 'true');\n\n if (usePermit === false) url.searchParams.append('usePermit', 'false');\n if (transactionSigner)\n url.searchParams.append('transactionSigner', transactionSigner);\n if (authOnly === true) url.searchParams.append('authOnly', 'true');\n if (jwtToken) url.searchParams.append('jwtToken', jwtToken);\n if (origins)\n url.searchParams.append(\n 'origins',\n LZString.compressToEncodedURIComponent(JSON.stringify(origins))\n );\n\n if (threeDsChallengePreference)\n url.searchParams.append(\n 'threeDsChallengePreference',\n threeDsChallengePreference\n );\n\n return url.toString();\n }\n\n static getTransaction(props: CoinflowPurchaseProps): string | undefined {\n if (!props.blockchain) return undefined;\n\n return this.byBlockchain<() => string | undefined>(props.blockchain, {\n solana: () => {\n if (!('transaction' in props)) return undefined;\n const {transaction} = props;\n if (!web3)\n throw new Error('@solana/web3.js dependency is required for Solana');\n if (!base58) throw new Error('bs58 dependency is required for Solana');\n if (!transaction) return undefined;\n return base58.encode(\n (transaction as VersionedTransaction | Transaction).serialize({\n requireAllSignatures: false,\n verifySignatures: false,\n })\n );\n },\n polygon: () => {\n if (!('transaction' in props)) return undefined;\n const {transaction} = props;\n return LZString.compressToEncodedURIComponent(\n JSON.stringify(transaction)\n );\n },\n eth: () => {\n if (!('transaction' in props)) return undefined;\n const {transaction} = props;\n return LZString.compressToEncodedURIComponent(\n JSON.stringify(transaction)\n );\n },\n base: () => {\n if (!('transaction' in props)) return undefined;\n const {transaction} = props;\n return LZString.compressToEncodedURIComponent(\n JSON.stringify(transaction)\n );\n },\n arbitrum: () => {\n if (!('transaction' in props)) return undefined;\n const {transaction} = props;\n return LZString.compressToEncodedURIComponent(\n JSON.stringify(transaction)\n );\n },\n near: () => {\n if (!('action' in props)) return undefined;\n const {action} = props;\n return LZString.compressToEncodedURIComponent(JSON.stringify(action));\n },\n user: () => {\n return undefined;\n },\n })();\n }\n\n static byBlockchain<T>(\n blockchain: CoinflowBlockchain,\n args: {\n solana: T;\n near: T;\n eth: T;\n polygon: T;\n base: T;\n arbitrum: T;\n user: T;\n }\n ): T {\n switch (blockchain) {\n case 'solana':\n return args.solana;\n case 'near':\n return args.near;\n case 'polygon':\n return args.polygon;\n case 'eth':\n return args.eth;\n case 'base':\n return args.base;\n case 'arbitrum':\n return args.arbitrum;\n case 'user':\n return args.user;\n default:\n throw new Error('blockchain not supported!');\n }\n }\n\n static async getWalletFromUserId({\n userId,\n merchantId,\n env,\n }: {\n userId: string;\n merchantId: string;\n env: CoinflowEnvs;\n }): Promise<SolanaWallet> {\n return this.getWalletFromEmail({\n email: userId,\n merchantId,\n env,\n });\n }\n\n static async getWalletFromEmail({\n email,\n merchantId,\n env,\n }: {\n email: string;\n merchantId: string;\n env: CoinflowEnvs;\n }): Promise<SolanaWallet> {\n const buffer = new TextEncoder().encode(email);\n const crypto = window.crypto.subtle;\n const hash = await crypto.digest('SHA-256', buffer);\n const seed = new Uint8Array(hash);\n const keypair = Keypair.fromSeed(seed);\n return {\n publicKey: keypair.publicKey,\n signMessage: (message: Uint8Array) =>\n Promise.resolve(sign.detached(message, keypair.secretKey)),\n signTransaction: async <T extends Transaction | VersionedTransaction>(\n transaction: T\n ): Promise<T> => {\n if (transaction instanceof Transaction) {\n transaction.sign(keypair);\n return transaction;\n } else {\n transaction.sign([keypair]);\n return transaction;\n }\n },\n sendTransaction: async <T extends Transaction | VersionedTransaction>(\n transaction: T\n ): Promise<string> => {\n if (transaction instanceof Transaction) {\n transaction.sign(keypair);\n } else {\n transaction.sign([keypair]);\n }\n\n const coinflowBaseUrl = this.getCoinflowApiUrl(env);\n const options = {\n method: 'POST',\n headers: {\n 'content-type': 'application/json',\n 'x-coinflow-auth-wallet': keypair.publicKey.toString(),\n 'x-coinflow-auth-blockchain': 'solana',\n },\n body: JSON.stringify({\n merchantId,\n signedTransaction: base58?.encode(transaction.serialize()),\n }),\n };\n\n const {signature} = await fetch(\n coinflowBaseUrl + '/api/utils/send-coinflow-tx',\n options\n ).then(res => res.json());\n return signature;\n },\n };\n }\n}\n","import {\n CoinflowBlockchain,\n CoinflowPurchaseProps,\n EthWallet,\n NearWallet,\n OnSuccessMethod,\n SolanaWallet,\n WalletTypes,\n} from './CoinflowTypes';\nimport {CoinflowUtils} from './CoinflowUtils';\nimport type {Transaction, VersionedTransaction} from '@solana/web3.js';\nimport {web3, base58} from './SolanaPeerDeps';\n\nexport type WalletCall =\n | {method: IFrameMessageMethods; data: string}\n | SuccessWalletCall;\n\ntype SuccessWalletCall = {\n method: IFrameMessageMethods.Success;\n data: string;\n info: {paymentId: string; hash?: string};\n};\n\nexport interface IFrameMessageHandlers {\n handleSendTransaction: (transaction: string) => Promise<string>;\n handleSignMessage?: (message: string) => Promise<string>;\n handleSignTransaction?: (transaction: string) => Promise<string>;\n handleHeightChange?: (height: string) => void;\n onSuccess: OnSuccessMethod | undefined;\n}\n\nenum IFrameMessageMethods {\n SignMessage = 'signMessage',\n SignTransaction = 'signTransaction',\n SendTransaction = 'sendTransaction',\n HeightChange = 'heightChange',\n Success = 'success',\n Loaded = 'loaded',\n}\n\nexport function getWalletPubkey(\n input: CoinflowPurchaseProps\n): string | null | undefined {\n let wallet: WalletTypes | undefined;\n if (\n 'signer' in input &&\n typeof input.signer === 'object' &&\n input.signer &&\n 'wallet' in input.signer\n )\n wallet = input.signer.wallet as WalletTypes;\n else if ('wallet' in input && input.wallet) wallet = input.wallet;\n\n if (!wallet) return;\n\n if (typeof wallet === 'string') return wallet;\n\n if (typeof wallet === 'object') {\n if ('publicKey' in wallet)\n return wallet.publicKey ? wallet.publicKey.toString() : undefined;\n\n if ('address' in wallet)\n return wallet.address ? (wallet.address as string) : undefined;\n\n if ('accountId' in wallet)\n return wallet.accountId ? (wallet.accountId as string) : undefined;\n }\n\n return null;\n}\n\nexport function handleIFrameMessage(\n rawMessage: string,\n handlers: IFrameMessageHandlers\n): Promise<string> | void {\n let walletCall: WalletCall;\n try {\n walletCall = JSON.parse(rawMessage);\n if (!('method' in walletCall) || !('data' in walletCall)) return;\n } catch (e) {\n console.error('handleIFrameMessage JSON parse', e);\n return;\n }\n\n const {data, method} = walletCall;\n switch (method) {\n case IFrameMessageMethods.SignMessage:\n if (!handlers.handleSignMessage) return;\n return handlers.handleSignMessage(data);\n case IFrameMessageMethods.SignTransaction:\n if (!handlers.handleSignTransaction) return;\n return handlers.handleSignTransaction(data);\n case IFrameMessageMethods.SendTransaction:\n return handlers.handleSendTransaction(data);\n case IFrameMessageMethods.HeightChange:\n if (!handlers.handleHeightChange) return;\n return handlers.handleHeightChange(data);\n case IFrameMessageMethods.Success:\n if (!handlers.onSuccess) return;\n handlers.onSuccess((walletCall as SuccessWalletCall).info);\n return;\n case IFrameMessageMethods.Loaded:\n return;\n }\n\n console.warn(\n `Didn't expect to get here, handleIFrameMessage method:${method} is not one of ${Object.values(IFrameMessageMethods)}`\n );\n}\n\nexport function getHandlers(\n props: CoinflowPurchaseProps\n): Omit<IFrameMessageHandlers, 'handleHeightChange'> {\n let chain: CoinflowBlockchain | undefined;\n let wallet: WalletTypes | undefined;\n if (\n 'signer' in props &&\n typeof props.signer === 'object' &&\n props.signer &&\n 'blockchain' in props.signer &&\n 'wallet' in props.signer\n ) {\n chain = props.signer.blockchain as CoinflowBlockchain;\n wallet = props.signer.wallet as WalletTypes;\n } else if ('blockchain' in props && props.blockchain) {\n chain = props.blockchain;\n wallet = props.wallet;\n }\n\n if (!chain) {\n return {\n handleSendTransaction: () => {\n throw new Error('handleSendTransaction Not Implemented');\n },\n handleSignMessage: () => {\n throw new Error('handleSendTransaction Not Implemented');\n },\n handleSignTransaction: () => {\n throw new Error('handleSendTransaction Not Implemented');\n },\n onSuccess: props.onSuccess,\n };\n }\n\n return CoinflowUtils.byBlockchain(chain, {\n solana: () =>\n getSolanaWalletHandlers({\n wallet: wallet as SolanaWallet,\n onSuccess: props.onSuccess,\n }),\n near: () =>\n getNearWalletHandlers({\n wallet: wallet as NearWallet,\n onSuccess: props.onSuccess,\n }),\n eth: () =>\n getEvmWalletHandlers({\n wallet: wallet as EthWallet,\n onSuccess: props.onSuccess,\n }),\n polygon: () =>\n getEvmWalletHandlers({\n wallet: wallet as EthWallet,\n onSuccess: props.onSuccess,\n }),\n base: () =>\n getEvmWalletHandlers({\n wallet: wallet as EthWallet,\n onSuccess: props.onSuccess,\n }),\n arbitrum: () =>\n getEvmWalletHandlers({\n wallet: wallet as EthWallet,\n onSuccess: props.onSuccess,\n }),\n user: () => getSessionKeyHandlers(props),\n })();\n}\n\nfunction getSolanaWalletHandlers({\n wallet,\n onSuccess,\n}: {\n wallet: SolanaWallet;\n onSuccess?: OnSuccessMethod;\n}): Omit<IFrameMessageHandlers, 'handleHeightChange'> {\n return {\n handleSendTransaction: async (transaction: string) => {\n const tx = getSolanaTransaction(transaction);\n return await wallet.sendTransaction(tx);\n },\n handleSignMessage: async (message: string) => {\n const signMessage = wallet.signMessage;\n if (!signMessage) {\n throw new Error('signMessage is not supported by this wallet');\n }\n\n const signedMessage = await signMessage(\n new TextEncoder().encode(message)\n );\n if (!base58) throw new Error('bs58 dependency is required');\n return base58.encode(signedMessage);\n },\n handleSignTransaction: async (transaction: string) => {\n const signTransaction = wallet.signTransaction;\n if (!signTransaction) {\n throw new Error('signTransaction is not supported by this wallet');\n }\n const tx = getSolanaTransaction(transaction);\n const signedTransaction = await signTransaction(tx);\n if (!base58) throw new Error('bs58 dependency is required');\n return base58.encode(\n signedTransaction.serialize({\n requireAllSignatures: false,\n verifySignatures: false,\n })\n );\n },\n onSuccess,\n };\n}\n\nfunction getSolanaTransaction(\n data: string\n): Transaction | VersionedTransaction {\n if (!web3)\n throw new Error(\n '@solana/web3.js is not defined. Please install @solana/web3.js into your project'\n );\n\n if (!base58)\n throw new Error(\n 'bs58 is not defined. Please install bs58 into your project'\n );\n\n const parsedUInt8Array = base58.decode(data);\n const vtx = web3.VersionedTransaction.deserialize(parsedUInt8Array);\n if (vtx.version === 'legacy') return web3.Transaction.from(parsedUInt8Array);\n return vtx;\n}\n\nfunction getNearWalletHandlers({\n wallet,\n onSuccess,\n}: {\n wallet: NearWallet;\n onSuccess?: OnSuccessMethod;\n}): Omit<IFrameMessageHandlers, 'handleHeightChange'> {\n return {\n handleSendTransaction: async (transaction: string) => {\n const action = JSON.parse(Buffer.from(transaction, 'base64').toString());\n const executionOutcome = await wallet.signAndSendTransaction(action);\n if (!executionOutcome) throw new Error('Transaction did not send');\n const {transaction: transactionResult} = executionOutcome;\n return transactionResult.hash;\n },\n onSuccess,\n };\n}\n\nfunction getEvmWalletHandlers({\n wallet,\n onSuccess,\n}: {\n wallet: EthWallet;\n onSuccess?: OnSuccessMethod;\n}): Omit<IFrameMessageHandlers, 'handleHeightChange'> {\n return {\n handleSendTransaction: async (transaction: string) => {\n const tx = JSON.parse(Buffer.from(transaction, 'base64').toString());\n const {hash} = await wallet.sendTransaction(tx);\n return hash;\n },\n handleSignMessage: async (message: string) => {\n return wallet.signMessage(message);\n },\n onSuccess,\n };\n}\n\nfunction getSessionKeyHandlers({\n onSuccess,\n}: Pick<CoinflowPurchaseProps, 'onSuccess'>): Omit<\n IFrameMessageHandlers,\n 'handleHeightChange'\n> {\n return {\n handleSendTransaction: async () => {\n return Promise.resolve('');\n },\n onSuccess,\n };\n}\n","// Type definitions for TokenEx iframe integration\n\nimport {CardType, CoinflowEnvs} from '../CoinflowTypes';\nimport {CSSProperties} from 'react';\n\nexport const TokenExCardNumberIframeId = 'tokenExCardNumber';\nexport const TokenExCvvContainerID = 'tokenExCardCvv';\nexport interface TokenExIframe extends ReturnType<typeof TokenEx.Iframe> {\n tokenize: () => Promise<TokenizationResponse>;\n}\n\nexport const CARD_TYPE_MAPPING: Record<CardType, string> = {\n [CardType.VISA]: 'visa',\n [CardType.MASTERCARD]: 'masterCard',\n [CardType.AMEX]: 'americanExpress',\n [CardType.DISCOVER]: 'discover',\n};\n\nexport interface TokenExIFrameConfiguration {\n origin: string;\n timestamp: string;\n tokenExID: string;\n tokenScheme: string;\n authenticationKey: string;\n pci: true;\n token?: string;\n}\n\nexport interface CardFormInputStyles {\n base: CSSProperties | string;\n placeholder?: CSSProperties | string;\n focus?: CSSProperties | string;\n error?: CSSProperties | string;\n}\n\nexport type CoinflowCardTokenResponse = {\n token: string;\n};\n\nexport interface CoinflowCardNumberInputProps {\n env: CoinflowEnvs;\n css: CardFormInputStyles & {cvv: CardFormInputStyles};\n debug?: boolean;\n origins?: string[];\n font?: string;\n}\n\nexport interface CoinflowCvvOnlyInputProps {\n token: string;\n cardType: CardType;\n env: CoinflowEnvs;\n css: CardFormInputStyles & {cvv: CardFormInputStyles};\n debug?: boolean;\n origins?: string[];\n font?: string;\n}\n\nexport interface TokenizationResponse {\n cardType: string;\n cvvIncluded: true;\n firstSix: string;\n lastFour: string;\n referenceNumber: string;\n token: string;\n tokenHMAC: string;\n}\n\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace TokenEx {\n interface FraudServicesConfig {\n useKount?: boolean;\n kount?: {\n merchantId?: string;\n mode?: string;\n anId?: string;\n };\n }\n\n interface Config {\n debug?: boolean;\n enablePrettyFormat?: boolean;\n maskInput?: boolean;\n enableValidateOnBlur?: boolean;\n enableAriaRequired?: boolean;\n pci?: boolean;\n cvvOnly?: boolean;\n allowUnknownCardTypes?: boolean;\n enableAutoComplete?: boolean;\n returnAutoCompleteValues?: boolean;\n returnKhash?: boolean;\n returnWhash?: boolean;\n enforceLuhnCompliance?: boolean;\n use3DS?: boolean;\n enableValidateOnKeyUp?: boolean;\n enableValidateOnCvvKeyUp?: boolean;\n expiresInSeconds?: number;\n useExtendedBIN?: boolean;\n inlineIframeJavaScript?: boolean;\n iframeVersion?: number;\n authenticationKey?: string;\n origin?: string;\n tokenExID?: string;\n timestamp?: string;\n tokenScheme?: string;\n token?: string;\n customDataLabel?: string;\n customCvvDataLabel?: string;\n title?: string;\n cvvTitle?: string;\n inputTitle?: string;\n cvvInputTitle?: string;\n cardMaxLengths?: {\n visa?: number;\n mastercard?: number;\n americanExpress?: number;\n discover?: number;\n jcb?: number;\n diners?: number;\n };\n fraudServices?: FraudServicesConfig;\n threeDSMethodNotificationUrl?: string;\n customDataTypes?: string | object;\n cvvContainerID?: string;\n cvvPlaceholder?: string;\n cardType?: string;\n forterSiteId?: string;\n forterUsername?: string;\n customRegEx?: string;\n placeholder?: string;\n inputType?: string;\n inputMode?: string;\n font?: string;\n cvv?: boolean;\n styles: {\n base: string;\n focus: string;\n error: string;\n placeholder: string;\n cvv: {base: string; focus: string; placeholder: string; error: string};\n };\n }\n\n interface IframeAPI {\n load(): void;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n on: (event: string, callback: (data?: any) => void) => void;\n\n tokenize(): void;\n\n validate(): void;\n\n reset(): void;\n\n blur(): void;\n\n cvvBlur(): void;\n\n focus(): void;\n\n cvvFocus(): void;\n\n remove(): void;\n\n toggleMask(): void;\n\n toggleCvvMask(): void;\n\n setPAN(pan: string): void;\n\n binLookup(): void;\n\n validateConfig(): void;\n\n setFraudServicesRequestDetails(data: string): void;\n }\n\n function Iframe(containerID: string, configuration: Config): IframeAPI;\n }\n}\n","import {CSSProperties} from 'react';\nimport {\n TokenizationResponse,\n TokenExCvvContainerID,\n TokenExIframe,\n TokenExIFrameConfiguration,\n CARD_TYPE_MAPPING,\n TokenExCardNumberIframeId,\n} from './TokenEx';\nimport {CoinflowUtils} from '../CoinflowUtils';\nimport {CardType, CoinflowEnvs} from '../CoinflowTypes';\n\nexport interface DoInitializeTokenExIframeArgs {\n css: string;\n debug?: boolean;\n font?: string;\n origins: string[] | undefined;\n tokenExScriptLoaded: boolean;\n env: CoinflowEnvs;\n setCachedToken: (s: string | undefined) => void;\n setLoaded: (b: boolean) => void;\n}\n\nexport interface DoInitializeCvvOnlyTokenExIframeArgs\n extends DoInitializeTokenExIframeArgs {\n token: string;\n cardType: CardType;\n}\n\nexport async function getIframeConfig({\n token,\n origins,\n env,\n}: {\n token?: string;\n origins: string[] | undefined;\n env: CoinflowEnvs;\n}): Promise<TokenExIFrameConfiguration> {\n return new Promise((resolve, reject) => {\n fetch(new CoinflowUtils(env).url + '/api/checkout/authentication-key', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n origins: [...(origins ?? []), window.location.origin],\n token,\n }),\n })\n .then(async res => {\n resolve((await res.json()) as TokenExIFrameConfiguration);\n })\n .catch(e => reject(e));\n });\n}\n\nexport function setTokenExScriptTag({\n env,\n setTokenExScriptLoaded,\n}: {\n env: CoinflowEnvs;\n setTokenExScriptLoaded: (b: boolean) => void;\n}) {\n const scriptTagId = 'tokenex-script';\n if (document.head.querySelector(`#${scriptTagId}`)) return;\n\n const sdkScriptTag = document.createElement('script');\n sdkScriptTag.src =\n env === 'prod'\n ? 'https://htp.tokenex.com/iframe/iframe-v3.min.js'\n : 'https://test-htp.tokenex.com/iframe/iframe-v3.min.js';\n sdkScriptTag.id = scriptTagId;\n\n document.head.appendChild(sdkScriptTag);\n\n document.getElementById(scriptTagId)!.addEventListener('load', () => {\n console.log('Setting tokenExScriptLoaded to true!');\n setTokenExScriptLoaded(true);\n });\n}\n\nfunction loadIframe({\n iframe,\n setCachedToken,\n setLoaded,\n}: {\n setCachedToken: (s: string | undefined) => void;\n setLoaded: (b: boolean) => void;\n iframe: ReturnType<typeof TokenEx.Iframe>;\n}): TokenExIframe {\n const tokenize = async (): Promise<TokenizationResponse> => {\n iframe.tokenize();\n return await new Promise<TokenizationResponse>((resolve, reject) => {\n iframe.on('tokenize', (data: TokenizationResponse) => {\n setCachedToken(data.token);\n resolve(data);\n });\n iframe.on('validate', (data: {isValid: boolean; isCvvValid: boolean}) => {\n // noinspection PointlessBooleanExpressionJS\n const isInvalid = !data.isValid || data.isCvvValid === false;\n if (isInvalid) reject(data);\n });\n });\n };\n\n iframe.on('change', () => setCachedToken(undefined));\n iframe.on('cvvChange', () => setCachedToken(undefined));\n\n iframe.on('load', () => {\n setTimeout(() => setLoaded(true), 350);\n const el: HTMLIFrameElement | null = document.querySelector(\n '#tx_iframe_tokenExCardNumber'\n );\n if (el) {\n // noinspection JSDeprecatedSymbols\n el.scrolling = 'no';\n }\n });\n\n iframe.on('focus', () => {\n iframe.focus();\n });\n iframe.on('cvvFocus', () => {\n iframe.cvvFocus();\n });\n\n setLoaded(false);\n iframe.load();\n\n return {...iframe, tokenize};\n}\n\nexport async function doInitializeCvvOnlyTokenExIframe(\n args: DoInitializeCvvOnlyTokenExIframeArgs\n) {\n const {token, cardType} = args;\n return await doInitialize(TokenExCvvContainerID, args, {\n cvvOnly: true,\n cvv: true,\n cvvContainerID: TokenExCvvContainerID,\n placeholder: 'CVV',\n token,\n cardType: CARD_TYPE_MAPPING[cardType],\n });\n}\n\nexport async function doInitializeTokenExIframe(\n args: DoInitializeTokenExIframeArgs\n) {\n return await doInitialize(TokenExCardNumberIframeId, args, {\n cvv: true,\n cvvContainerID: TokenExCvvContainerID,\n cvvPlaceholder: 'CVV',\n });\n}\n\nexport async function doInitializeTokenExCardOnlyIframe(\n args: DoInitializeTokenExIframeArgs\n) {\n return await doInitialize(TokenExCardNumberIframeId, args, {cvv: false});\n}\n\nasync function doInitialize(\n id: string,\n {\n tokenExScriptLoaded,\n origins,\n env,\n css,\n debug,\n font,\n setCachedToken,\n setLoaded,\n }: DoInitializeTokenExIframeArgs,\n configOverrides: Partial<TokenEx.Config>\n) {\n if (!tokenExScriptLoaded && typeof TokenEx === 'undefined') {\n console.warn(\n 'Warning Unable to load TokenEx on first attempt waiting for load event from document.head.script#tokenex-script'\n );\n return;\n }\n const iframeConfig = await getIframeConfig({\n token: configOverrides.token,\n origins,\n env,\n });\n const {styles} = getStyles(css);\n const config = {\n ...iframeConfig,\n placeholder: '0000 0000 0000 0000',\n enablePrettyFormat: true,\n styles,\n font,\n debug: debug ?? false,\n ...configOverrides,\n };\n const iframe: ReturnType<typeof TokenEx.Iframe> = TokenEx.Iframe(id, config);\n\n return loadIframe({iframe, setCachedToken, setLoaded});\n}\n\nfunction getStyles(s: string) {\n const css = JSON.parse(s);\n const styles = {\n base: CSSPropertiesToComponent(css.base),\n focus: CSSPropertiesToComponent(css.focus),\n error: CSSPropertiesToComponent(css.error),\n placeholder: CSSPropertiesToComponent(css.placeholder),\n cvv: {\n base: CSSPropertiesToComponent(css.cvv?.base),\n focus: CSSPropertiesToComponent(css.cvv?.focus),\n error: CSSPropertiesToComponent(css.cvv?.error),\n placeholder: CSSPropertiesToComponent(css?.placeholder),\n },\n };\n\n return {styles};\n}\n\nfunction CSSPropertiesToComponent(\n dict: CSSProperties | string | undefined\n): string {\n if (!dict) return '';\n if (typeof dict === 'string') return dict;\n\n let str = '';\n for (const [key, value] of Object.entries(dict)) {\n let clo = '';\n key.split('').forEach(lt => {\n if (lt.toUpperCase() === lt) {\n clo += '-' + lt.toLowerCase();\n } else {\n clo += lt;\n }\n });\n str += clo + ':' + value + ';';\n }\n return str;\n}\n","import {\n Component,\n ElementRef,\n HostListener,\n Input,\n ViewChild,\n Output,\n EventEmitter,\n} from '@angular/core';\nimport {\n CoinflowIFrameProps,\n CoinflowUtils,\n IFrameMessageHandlers,\n handleIFrameMessage,\n} from './common';\nimport {DomSanitizer, SafeResourceUrl} from '@angular/platform-browser';\n\n@Component({\n selector: 'lib-coinflow-iframe',\n standalone: true,\n imports: [],\n template: ` <iframe\n width=\"100%\"\n height=\"100%\"\n #iframe\n scrolling=\"{{ iframeProps?.handleHeightChange ? 'no' : 'yes' }}\"\n allow=\"payment;camera\"\n title=\"withdraw\"\n frameBorder=\"0\"\n [src]=\"dynamicUrl\"\n ></iframe>`,\n})\nexport class CoinflowIFrameComponent {\n @Input() iframeProps!: CoinflowIFrameProps;\n @Input() messageHandlers!: IFrameMessageHandlers;\n\n @Output() messageEvent = new EventEmitter<any>();\n\n dynamicUrl?: SafeResourceUrl;\n @ViewChild('iframe') iframe?: ElementRef<HTMLIFrameElement>;\n\n constructor(private sanitizer: DomSanitizer) {}\n\n ngOnInit() {\n const coinflowUrl = CoinflowUtils.getCoinflowUrl(this.iframeProps);\n this.dynamicUrl =\n this.sanitizer.bypassSecurityTrustResourceUrl(coinflowUrl);\n }\n\n @HostListener('window:message', ['$event']) onPostMessage(event: any) {\n if (\n !event.origin.includes(\n CoinflowUtils.getCoinflowBaseUrl(this.iframeProps.env)\n )\n )\n return;\n\n this.messageEvent.emit(event);\n\n const promise = handleIFrameMessage(event.data, this.messageHandlers);\n if (!promise) return;\n promise\n .then(this.sendMessage.bind(this))\n .catch(e => this.sendMessage('ERROR ' + e.message));\n }\n\n sendMessage(message: string) {\n if (!this.iframe || !this.iframe.nativeElement) return;\n this.iframe.nativeElement.contentWindow!.postMessage(message, '*');\n }\n}\n","import {Component, Input} from '@angular/core';\nimport {CoinflowIFrameComponent} from './coinflow-iframe.component';\nimport {\n CoinflowIFrameProps,\n CoinflowPurchaseProps,\n IFrameMessageHandlers,\n getHandlers,\n getWalletPubkey,\n CoinflowUtils,\n} from './common';\n\n@Component({\n selector: 'lib-coinflow-purchase',\n standalone: true,\n imports: [CoinflowIFrameComponent],\n template:\n ' <lib-coinflow-iframe ng-if=\"iframeProps && messageHandlers\" [iframeProps]=\"iframeProps!\" [messageHandlers]=\"messageHandlers!\"></lib-coinflow-iframe> ',\n})\nexport class CoinflowPurchaseComponent {\n @Input() purchaseProps!: CoinflowPurchaseProps;\n iframeProps?: CoinflowIFrameProps;\n messageHandlers?: IFrameMessageHandlers;\n\n ngOnInit() {\n const walletPubkey = getWalletPubkey(this.purchaseProps);\n this.messageHandlers = getHandlers(this.purchaseProps);\n this.messageHandlers.handleHeightChange =\n this.purchaseProps.handleHeightChange;\n\n this.iframeProps = {\n ...this.purchaseProps,\n walletPubkey,\n route: `/purchase-v2/${this.purchaseProps?.merchantId}`,\n transaction: CoinflowUtils.getTransaction(this.purchaseProps),\n };\n }\n}\n","import {Component} from '@angular/core';\n\n@Component({\n selector: 'lib-coinflow-purchase-history',\n standalone: true,\n imports: [],\n template: ' <p>coinflow-purchase-history works!</p> ',\n})\nexport class CoinflowPurchaseHistoryComponent {}\n","import {Component} from '@angular/core';\n\n@Component({\n selector: 'lib-coinflow-purchase-protection',\n standalone: true,\n imports: [],\n template: ' <p>coinflow-purchase-protection works!</p> ',\n})\nexport class CoinflowPurchaseProtectionComponent {}\n","import {Component, Input} from '@angular/core';\nimport {\n CoinflowIFrameProps,\n CoinflowWithdrawProps,\n IFrameMessageHandlers,\n getHandlers,\n getWalletPubkey,\n} from './common';\nimport {CoinflowIFrameComponent} from './coinflow-iframe.component';\n\n@Component({\n selector: 'lib-coinflow-withdraw',\n standalone: true,\n imports: [CoinflowIFrameComponent],\n template:\n ' <lib-coinflow-iframe ng-if=\"iframeProps && messageHandlers\" [iframeProps]=\"iframeProps!\" [messageHandlers]=\"messageHandlers!\"></lib-coinflow-iframe> ',\n})\nexport class CoinflowWithdrawComponent {\n @Input() withdrawProps!: CoinflowWithdrawProps;\n iframeProps?: CoinflowIFrameProps;\n messageHandlers?: IFrameMessageHandlers;\n\n ngOnInit() {\n const walletPubkey = getWalletPubkey(this.withdrawProps);\n this.messageHandlers = getHandlers(this.withdrawProps);\n this.messageHandlers.handleHeightChange =\n this.withdrawProps.handleHeightChange;\n\n this.iframeProps = {\n ...this.withdrawProps,\n walletPubkey,\n route: `/withdraw/${this.withdrawProps?.merchantId}`,\n transaction: undefined,\n };\n }\n}\n","import {Component} from '@angular/core';\n\n@Component({\n selector: 'lib-coinflow-withdraw-history',\n standalone: true,\n imports: [],\n template: ' <p>coinflow-withdraw-history works!</p> ',\n})\nexport class CoinflowWithdrawHistoryComponent {}\n","import {\n doInitializeCvvOnlyTokenExIframe,\n doInitializeTokenExCardOnlyIframe,\n doInitializeTokenExIframe,\n TokenExIframe,\n CoinflowEnvs,\n} from '../common';\nimport {Injectable} from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CardFormService {\n loaded = false;\n tokenExIframe: TokenExIframe | undefined = undefined;\n\n setTokenExIframe(iframe: TokenExIframe | undefined) {\n this.tokenExIframe = iframe;\n }\n\n setCachedToken() {}\n\n setLoaded(input: boolean) {\n this.loaded = input;\n }\n\n async initializeCvvOnlyTokenExIframe(\n env: CoinflowEnvs,\n args: Omit<\n Parameters<typeof doInitializeCvvOnlyTokenExIframe>[0],\n 'env' | 'tokenExScriptLoaded' | 'setCachedToken' | 'setLoaded'\n >\n ) {\n const iframe = await doInitializeCvvOnlyTokenExIframe({\n ...args,\n tokenExScriptLoaded: true,\n env,\n setCachedToken: this.setCachedToken.bind(this),\n setLoaded: this.setLoaded.bind(this),\n });\n this.setTokenExIframe(iframe);\n if (iframe) iframe.load();\n return iframe;\n }\n\n async initializeTokenExIframe(\n env: CoinflowEnvs,\n args: Omit<\n Parameters<typeof doInitializeTokenExIframe>[0],\n 'env' | 'tokenExScriptLoaded' | 'setCachedToken' | 'setLoaded'\n >\n ) {\n console.log('initializeTokenExIframe');\n const iframe = await doInitializeTokenExIframe({\n ...args,\n tokenExScriptLoaded: true,\n env,\n setCachedToken: this.setCachedToken.bind(this),\n setLoaded: this.setLoaded.bind(this),\n });\n console.log('iframe', iframe);\n this.setTokenExIframe(iframe);\n if (iframe) iframe.load();\n console.log('LOADED');\n return iframe;\n }\n\n async initializeTokenExCardOnlyIframe(\n env: CoinflowEnvs,\n args: Omit<\n Parameters<typeof doInitializeTokenExCardOnlyIframe>[0],\n 'env' | 'tokenExScriptLoaded' | 'setCachedToken' | 'setLoaded'\n >\n ) {\n const iframe = await doInitializeTokenExCardOnlyIframe({\n ...args,\n tokenExScriptLoaded: true,\n env,\n setCachedToken: this.setCachedToken.bind(this),\n setLoaded: this.setLoaded.bind(this),\n });\n this.setTokenExIframe(iframe);\n if (iframe) iframe.load();\n return iframe;\n }\n}\n","import {Component, inject, Input} from '@angular/core';\nimport {\n CoinflowCardNumberInputProps,\n setTokenExScriptTag,\n TokenExCardNumberIframeId,\n TokenExIframe,\n} from '../common';\nimport {CardFormService} from './CardFormService';\n\n@Component({\n selector: 'lib-coinflow-card-number-input',\n standalone: true,\n imports: [],\n template: '<div id=\"{{TokenExCardNumberIframeId}}\"></div>',\n})\nexport class CoinflowCardNumberInput {\n private cardFormService = inject(CardFormService);\n @Input() args!: CoinflowCardNumberInputProps;\n private iframe: TokenExIframe | undefined = undefined;\n\n private onScriptLoaded() {\n console.log('onScriptLoaded');\n this.cardFormService\n .initializeTokenExIframe(this.args.env, {\n css: JSON.stringify(this.args.css),\n debug: this.args.debug,\n origins: this.args.origins,\n font: this.args.font,\n })\n .then(iframe => (this.iframe = iframe))\n .catch(e => console.error(e));\n }\n\n ngOnInit() {\n setTokenExScriptTag({\n env: this.args.env,\n setTokenExScriptLoaded: this.onScriptLoaded.bind(this),\n });\n }\n\n tokenize() {\n return this.iframe!.tokenize();\n }\n\n protected readonly TokenExCardNumberIframeId = TokenExCardNumberIframeId;\n}\n","import {Component, inject, Input} from '@angular/core';\nimport {\n CoinflowCardNumberInputProps,\n setTokenExScriptTag,\n TokenExCardNumberIframeId,\n TokenExIframe,\n} from '../common';\nimport {CardFormService} from './CardFormService';\n\n@Component({\n selector: 'lib-coinflow-card-number-only-input',\n standalone: true,\n imports: [],\n template: '<div id=\"{{TokenExCardNumberIframeId}}\"></div>',\n})\nexport class CoinflowCardNumberOnlyInput {\n private cardFormService = inject(CardFormService);\n @Input() args!: CoinflowCardNumberInputProps;\n private iframe: TokenExIframe | undefined = undefined;\n\n private onScriptLoaded() {\n console.log('onScriptLoaded');\n this.cardFormService\n .initializeTokenExCardOnlyIframe(this.args.env, {\n css: JSON.stringify(this.args.css),\n debug: this.args.debug,\n origins: this.args.origins,\n font: this.args.font,\n })\n .then(iframe => (this.iframe = iframe))\n .catch(e => console.error(e));\n }\n\n ngOnInit() {\n setTokenExScriptTag({\n env: this.args.env,\n setTokenExScriptLoaded: this.onScriptLoaded.bind(this),\n });\n }\n\n tokenize() {\n return this.iframe!.tokenize();\n }\n\n protected readonly TokenExCardNumberIframeId = TokenExCardNumberIframeId;\n}\n","import {Component} from '@angular/core';\nimport {TokenExCvvContainerID} from '../common';\n\n@Component({\n selector: 'lib-coinflow-cvv-input',\n standalone: true,\n imports: [],\n template: '<div id=\"{{TokenExCvvContainerID}}\" ></div>',\n})\nexport class CoinflowCvvInputComponent {\n protected readonly TokenExCvvContainerID = TokenExCvvContainerID;\n}\n","import {Component, inject, Input} from '@angular/core';\nimport {\n CoinflowCvvOnlyInputProps,\n setTokenExScriptTag,\n TokenExCvvContainerID,\n TokenExIframe,\n} from '../common';\nimport {CardFormService} from './CardFormService';\n\n@Component({\n selector: 'lib-coinflow-cvv-only-input',\n standalone: true,\n imports: [],\n template: '<div id=\"{{TokenExCvvContainerID}}\"></div>',\n})\nexport class CoinflowCvvOnlyInputComponent {\n private cardFormService = inject(CardFormService);\n @Input() args!: CoinflowCvvOnlyInputProps;\n private iframe: TokenExIframe | undefined = undefined;\n\n private onScriptLoaded() {\n this.cardFormService\n .initializeCvvOnlyTokenExIframe(this.args.env, {\n css: JSON.stringify(this.args.css),\n debug: this.args.debug,\n origins: this.args.origins,\n font: this.args.font,\n token: this.args.token,\n cardType: this.args.cardType,\n })\n .then(iframe => (this.iframe = iframe))\n .catch(e => console.error(e));\n }\n\n ngOnInit() {\n setTokenExScriptTag({\n env: this.args.env,\n setTokenExScriptLoaded: this.onScriptLoaded.bind(this),\n });\n }\n\n tokenize() {\n return this.iframe!.tokenize();\n }\n\n protected readonly TokenExCvvContainerID = TokenExCvvContainerID;\n}\n","import {Component, Input} from '@angular/core';\nimport {CoinflowIFrameComponent} from '../coinflow-iframe.component';\nimport {\n CoinflowIFrameProps,\n CoinflowPurchaseProps,\n IFrameMessageHandlers,\n getHandlers,\n getWalletPubkey,\n CoinflowUtils,\n} from '../common';\n\n@Component({\n selector: 'lib-coinflow-mobile-wallet-button',\n standalone: true,\n imports: [CoinflowIFrameComponent],\n template: ` <div style=\"position: relative; height: 100%;\">\n <div\n [style.background-color]=\"purchaseProps.color\"\n [style.display]=\"overlayDisplayOverride ?? display\"\n [style.opacity]=\"opacity\"\n [style.align-items]=\"alignItems\"\n style=\"width: 100%; height: 40px; position: absolute; top: 0; bottom: 0; left: 0; z-index: 20; justify-content: center; pointer-events: none;\"\n >\n <ng-content></ng-content>\n </div>\n <div style=\"position: relative; z-index: 10; height: 100%;\">\n <lib-coinflow-iframe\n (messageEvent)=\"handleMessage($event)\"\n ng-if=\"iframeProps && messageHandlers\"\n [iframeProps]=\"iframeProps!\"\n [messageHandlers]=\"messageHandlers!\"\n ></lib-coinflow-iframe>\n </div>\n </div>`,\n})\nexport class CoinflowMobileWalletButtonComponent {\n @Input() purchaseProps!: CoinflowPurchaseProps & {\n color: 'white' | 'black';\n onError?: (message: string) => void;\n };\n\n @Input() route!: string;\n @Input() overlayDisplayOverride: string | undefined;\n @Input() alignItems: string | undefined;\n opacity: number = 0.8;\n display: string = 'flex';\n\n iframeProps?: CoinflowIFrameProps;\n messageHandlers?: IFrameMessageHandlers;\n\n handleMessage({data}: {data: string}) {\n try {\n const res = JSON.parse(data);\n\n console.log({data});\n if ('method' in res && res.data.startsWith('ERROR')) {\n this.purchaseProps.onError?.(res.info);\n return;\n }\n\n if ('method' in res && res.method === 'loaded') {\n this.opacity = 1;\n setTimeout(() => {\n this.display = 'none';\n }, 2000);\n }\n } catch (e) {}\n }\n\n ngOnInit() {\n const walletPubkey = getWalletPubkey(this.purchaseProps);\n this.messageHandlers = getHandlers(this.purchaseProps);\n this.messageHandlers.handleHeightChange =\n this.purchaseProps.handleHeightChange;\n\n this.iframeProps = {\n ...this.purchaseProps,\n walletPubkey,\n route: `/${this.route}/${this.purchaseProps?.merchantId}`,\n routePrefix: 'form',\n transaction: CoinflowUtils.getTransaction(this.purchaseProps),\n };\n }\n}\n","import {Component, Input} from '@angular/core';\nimport {CoinflowPurchaseProps, IFrameMessageHandlers} from '../common';\nimport {CoinflowMobileWalletButtonComponent} from './coinflow-mobile-wallet-button.component';\n\n@Component({\n selector: 'coinflow-apple-pay-overlay',\n standalone: true,\n imports: [],\n template: `\n <svg id=\"svg-logo\" viewBox=\"0 0 35 15\">\n <svg\n id=\"svg-logo\"\n x=\"0\"\n y=\"3.85\"\n height=\"7.3\"\n width=\"35\"\n className=\"logo\"\n viewBox=\"0 0 105 43\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n >\n <title>Apple Logo</title>\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g fill=\"#000\">\n <path\n d=\"M19.4028,5.5674 C20.6008,4.0684 21.4138,2.0564 21.1998,0.0004 C19.4458,0.0874 17.3058,1.1574 16.0668,2.6564 C14.9538,3.9414 13.9688,6.0374 14.2258,8.0074 C16.1948,8.1784 18.1618,7.0244 19.4028,5.5674\"\n ></path>\n <path\n d=\"M21.1772,8.3926 C18.3182,8.2226 15.8872,10.0156 14.5212,10.0156 C13.1552,10.0156 11.0642,8.4786 8.8022,8.5196 C5.8592,8.5626 3.1282,10.2276 1.6342,12.8746 C-1.4378,18.1696 0.8232,26.0246 3.8112,30.3376 C5.2622,32.4716 7.0102,34.8206 9.3142,34.7366 C11.4912,34.6506 12.3442,33.3266 14.9902,33.3266 C17.6352,33.3266 18.4042,34.7366 20.7082,34.6936 C23.0972,34.6506 24.5922,32.5586 26.0422,30.4226 C27.7072,27.9906 28.3882,25.6426 28.4312,25.5126 C28.3882,25.4706 23.8232,23.7186 23.7812,18.4676 C23.7382,14.0706 27.3652,11.9786 27.5362,11.8496 C25.4882,8.8196 22.2872,8.4786 21.1772,8.3926\"\n ></path>\n <path\n d=\"M85.5508,43.0381 L85.5508,39.1991 C85.8628,39.2421 86.6158,39.2871 87.0158,39.2871 C89.2138,39.2871 90.4558,38.3551 91.2108,35.9581 L91.6548,34.5371 L83.2428,11.2321 L88.4368,11.2321 L94.2958,30.1421 L94.4068,30.1421 L100.2668,11.2321 L105.3278,11.2321 L96.6048,35.7141 C94.6078,41.3291 92.3208,43.1721 87.4828,43.1721 C87.1048,43.1721 85.8838,43.1271 85.5508,43.0381\"\n ></path>\n <path\n d=\"M42.6499,19.3555 L48.3549,19.3555 C52.6829,19.3555 55.1469,17.0255 55.1469,12.9855 C55.1469,8.9455 52.6829,6.6375 48.3769,6.6375 L42.6499,6.6375 L42.6499,19.3555 Z M49.6869,2.4425 C55.9009,2.4425 60.2289,6.7265 60.2289,12.9625 C60.2289,19.2225 55.8129,23.5285 49.5309,23.5285 L42.6499,23.5285 L42.6499,34.4705 L37.6779,34.4705 L37.6779,2.4425 L49.6869,2.4425 Z\"\n ></path>\n <path\n d=\"M76.5547,25.7705 L76.5547,23.9715 L71.0287,24.3275 C67.9207,24.5275 66.3007,25.6815 66.3007,27.7015 C66.3007,29.6545 67.9887,30.9195 70.6287,30.9195 C74.0027,30.9195 76.5547,28.7665 76.5547,25.7705 M61.4617,27.8345 C61.4617,23.7285 64.5917,21.3755 70.3627,21.0205 L76.5547,20.6425 L76.5547,18.8675 C76.5547,16.2705 74.8457,14.8495 71.8057,14.8495 C69.2967,14.8495 67.4777,16.1375 67.0997,18.1125 L62.6167,18.1125 C62.7497,13.9615 66.6567,10.9435 71.9387,10.9435 C77.6207,10.9435 81.3267,13.9175 81.3267,18.5345 L81.3267,34.4705 L76.7327,34.4705 L76.7327,30.6305 L76.6217,30.6305 C75.3127,33.1395 72.4267,34.7145 69.2967,34.7145 C64.6807,34.7145 61.4617,31.9625 61.4617,27.8345\"\n ></path>\n </g>\n </g>\n </svg>\n </svg>\n `,\n})\nexport class CoinflowApplePayOverlayComponent {\n @Input() color!: 'white' | 'black';\n\n fill() {\n return this.color === 'white' ? '#000' : '#FFF';\n }\n}\n","import {Component, Input} from '@angular/core';\nimport {CoinflowPurchaseProps} from '../common';\nimport {CoinflowMobileWalletButtonComponent} from './coinflow-mobile-wallet-button.component';\nimport {CoinflowApplePayOverlayComponent} from './apple-pay-overlay.component';\n\n@Component({\n selector: 'lib-coinflow-apple-pay-button',\n standalone: true,\n imports: [\n CoinflowMobileWalletButtonComponent,\n CoinflowApplePayOverlayComponent,\n ],\n template: ` <lib-coinflow-mobile-wallet-button\n ng-if=\"iframeProps && messageHandlers\"\n [purchaseProps]=\"purchaseProps\"\n route=\"apple-pay\"\n >\n <svg id=\"svg-logo\" viewBox=\"0 0 35 15\">\n <svg\n id=\"svg-logo\"\n x=\"0\"\n y=\"3.85\"\n height=\"7.3\"\n width=\"35\"\n className=\"logo\"\n viewBox=\"0 0 105 43\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n >\n <title>Apple Logo</title>\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g [attr.fill]=\"fill()\">\n <path\n d=\"M19.4028,5.5674 C20.6008,4.0684 21.4138,2.0564 21.1998,0.0004 C19.4458,0.0874 17.3058,1.1574 16.0668,2.6564 C14.9538,3.9414 13.9688,6.0374 14.2258,8.0074 C16.1948,8.1784 18.1618,7.0244 19.4028,5.5674\"\n ></path>\n <path\n d=\"M21.1772,8.3926 C18.3182,8.2226 15.8872,10.0156 14.5212,10.0156 C13.1552,10.0156 11.0642,8.4786 8.8022,8.5196 C5.8592,8.5626 3.1282,10.2276 1.6342,12.8746 C-1.4378,18.1696 0.8232,26.0246 3.8112,30.3376 C5.2622,32.4716 7.0102,34.8206 9.3142,34.7366 C11.4912,34.6506 12.3442,33.3266 14.9902,33.3266 C17.6352,33.3266 18.4042,34.7366 20.7082,34.6936 C23.0972,34.6506 24.5922,32.5586 26.0422,30.4226 C27.7072,27.9906 28.3882,25.6426 28.4312,25.5126 C28.3882,25.4706 23.8232,23.7186 23.7812,18.4676 C23.7382,14.0706 27.3652,11.9786 27.5362,11.8496 C25.4882,8.8196 22.2872,8.4786 21.1772,8.3926\"\n ></path>\n <path\n d=\"M85.5508,43.0381 L85.5508,39.1991 C85.8628,39.2421 86.6158,39.2871 87.0158,39.2871 C89.2138,39.2871 90.4558,38.3551 91.2108,35.9581 L91.6548,34.5371 L83.2428,11.2321 L88.4368,11.2321 L94.2958,30.1421 L94.4068,30.1421 L100.2668,11.2321 L105.3278,11.2321 L96.6048,35.7141 C94.6078,41.3291 92.3208,43.1721 87.4828,43.1721 C87.1048,43.1721 85.8838,43.1271 85.5508,43.0381\"\n ></path>\n <path\n d=\"M42.6499,19.3555 L48.3549,19.3555 C52.6829,19.3555 55.1469,17.0255 55.1469,12.9855 C55.1469,8.9455 52.6829,6.6375 48.3769,6.6375 L42.6499,6.6375 L42.6499,19.3555 Z M49.6869,2.4425 C55.9009,2.4425 60.2289,6.7265 60.2289,12.9625 C60.2289,19.2225 55.8129,23.5285 49.5309,23.5285 L42.6499,23.5285 L42.6499,34.4705 L37.6779,34.4705 L37.6779,2.4425 L49.6869,2.4425 Z\"\n ></path>\n <path\n d=\"M76.5547,25.7705 L76.5547,23.9715 L71.0287,24.3275 C67.9207,24.5275 66.3007,25.6815 66.3007,27.7015 C66.3007,29.6545 67.9887,30.9195 70.6287,30.9195 C74.0027,30.9195 76.5547,28.7665 76.5547,25.7705 M61.4617,27.8345 C61.4617,23.7285 64.5917,21.3755 70.3627,21.0205 L76.5547,20.6425 L76.5547,18.8675 C76.5547,16.2705 74.8457,14.8495 71.8057,14.8495 C69.2967,14.8495 67.4777,16.1375 67.0997,18.1125 L62.6167,18.1125 C62.7497,13.9615 66.6567,10.9435 71.9387,10.9435 C77.6207,10.9435 81.3267,13.9175 81.3267,18.5345 L81.3267,34.4705 L76.7327,34.4705 L76.7327,30.6305 L76.6217,30.6305 C75.3127,33.1395 72.4267,34.7145 69.2967,34.7145 C64.6807,34.7145 61.4617,31.9625 61.4617,27.8345\"\n ></path>\n </g>\n </g>\n </svg>\n </svg>\n </lib-coinflow-mobile-wallet-button>`,\n})\nexport class CoinflowApplePayButtonComponent {\n @Input() purchaseProps!: CoinflowPurchaseProps & {\n color: 'white' | 'black';\n onError?: (message: string) => void;\n };\n\n fill() {\n return this.purchaseProps.color === 'white' ? '#000' : '#FFF';\n }\n}\n","import {Component, Input} from '@angular/core';\nimport {CoinflowPurchaseProps, IFrameMessageHandlers} from '../common';\nimport {CoinflowMobileWalletButtonComponent} from './coinflow-mobile-wallet-button.component';\n\n@Component({\n selector: 'coinflow-google-pay-overlay',\n standalone: true,\n imports: [],\n template: `\n @if (color === 'white') {\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"41\" height=\"17\">\n <g fill=\"none\" fill-rule=\"evenodd\">\n <path\n d=\"M19.526 2.635v4.083h2.518c.6 0 1.096-.202 1.488-.605.403-.402.605-.882.605-1.437 0-.544-.202-1.018-.605-1.422-.392-.413-.888-.62-1.488-.62h-2.518zm0 5.52v4.736h-1.504V1.198h3.99c1.013 0 1.873.337 2.582 1.012.72.675 1.08 1.497 1.08 2.466 0 .991-.36 1.819-1.08 2.482-.697.665-1.559.996-2.583.996h-2.485v.001zm7.668 2.287c0 .392.166.718.499.98.332.26.722.391 1.168.391.633 0 1.196-.234 1.692-.701.497-.469.744-1.019.744-1.65-.469-.37-1.123-.555-1.962-.555-.61 0-1.12.148-1.528.442-.409.294-.613.657-.613 1.093m1.946-5.815c1.112 0 1.989.297 2.633.89.642.594.964 1.408.964 2.442v4.932h-1.439v-1.11h-.065c-.622.914-1.45 1.372-2.486 1.372-.882 0-1.621-.262-2.215-.784-.594-.523-.891-1.176-.891-1.96 0-.828.313-1.486.94-1.976s1.463-.735 2.51-.735c.892 0 1.629.163 2.206.49v-.344c0-.522-.207-.966-.621-1.33a2.132 2.132 0 0 0-1.455-.547c-.84 0-1.504.353-1.995 1.062l-1.324-.834c.73-1.045 1.81-1.568 3.238-1.568m11.853.262l-5.02 11.53H34.42l1.864-4.034-3.302-7.496h1.635l2.387 5.749h.032l2.322-5.75z\"\n fill=\"#5F6368\"\n />\n <path\n d=\"M13.448 7.134c0-.473-.04-.93-.116-1.366H6.988v2.588h3.634a3.11 3.11 0 0 1-1.344 2.042v1.68h2.169c1.27-1.17 2.001-2.9 2.001-4.944\"\n fill=\"#4285F4\"\n />\n <path\n d=\"M6.988 13.7c1.816 0 3.344-.595 4.459-1.621l-2.169-1.681c-.603.406-1.38.643-2.29.643-1.754 0-3.244-1.182-3.776-2.774H.978v1.731a6.728 6.728 0 0 0 6.01 3.703\"\n fill=\"#34A853\"\n />\n <path\n d=\"M3.212 8.267a4.034 4.034 0 0 1 0-2.572V3.964H.978A6.678 6.678 0 0 0 .261 6.98c0 1.085.26 2.11.717 3.017l2.234-1.731z\"\n fill=\"#FABB05\"\n />\n <path\n d=\"M6.988 2.921c.992 0 1.88.34 2.58 1.008v.001l1.92-1.918C10.324.928 8.804.262 6.989.262a6.728 6.728 0 0 0-6.01 3.702l2.234 1.731c.532-1.592 2.022-2.774 3.776-2.774\"\n fill=\"#E94235\"\n />\n <path d=\"M0 0h41.285v18H0z\" />\n </g>\n </svg>\n } @else {\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"41\" height=\"17\">\n <g fill=\"none\" fill-rule=\"evenodd\">\n <path\n d=\"M19.526 2.635v4.083h2.518c.6 0 1.096-.202 1.488-.605.403-.402.605-.882.605-1.437 0-.544-.202-1.018-.605-1.422-.392-.413-.888-.62-1.488-.62h-2.518zm0 5.52v4.736h-1.504V1.198h3.99c1.013 0 1.873.337 2.582 1.012.72.675 1.08 1.497 1.08 2.466 0 .991-.36 1.819-1.08 2.482-.697.665-1.559.996-2.583.996h-2.485v.001zm7.668 2.287c0 .392.166.718.499.98.332.26.722.391 1.168.391.633 0 1.196-.234 1.692-.701.497-.469.744-1.019.744-1.65-.469-.37-1.123-.555-1.962-.555-.61 0-1.12.148-1.528.442-.409.294-.613.657-.613 1.093m1.946-5.815c1.112 0 1.989.297 2.633.89.642.594.964 1.408.964 2.442v4.932h-1.439v-1.11h-.065c-.622.914-1.45 1.372-2.486 1.372-.882 0-1.621-.262-2.215-.784-.594-.523-.891-1.176-.891-1.96 0-.828.313-1.486.94-1.976s1.463-.735 2.51-.735c.892 0 1.629.163 2.206.49v-.344c0-.522-.207-.966-.621-1.33a2.132 2.132 0 0 0-1.455-.547c-.84 0-1.504.353-1.995 1.062l-1.324-.834c.73-1.045 1.81-1.568 3.238-1.568m11.853.262l-5.02 11.53H34.42l1.864-4.034-3.302-7.496h1.635l2.387 5.749h.032l2.322-5.75z\"\n fill=\"#FFF\"\n />\n <path\n d=\"M13.448 7.134c0-.473-.04-.93-.116-1.366H6.988v2.588h3.634a3.11 3.11 0 0 1-1.344 2.042v1.68h2.169c1.27-1.17 2.001-2.9 2.001-4.944\"\n fill=\"#4285F4\"\n />\n <path\n d=\"M6.988 13.7c1.816 0 3.344-.595 4.459-1.621l-2.169-1.681c-.603.406-1.38.643-2.29.643-1.754 0-3.244-1.182-3.776-2.774H.978v1.731a6.728 6.728 0 0 0 6.01 3.703\"\n fill=\"#34A853\"\n />\n <path\n d=\"M3.212 8.267a4.034 4.034 0 0 1 0-2.572V3.964H.978A6.678 6.678 0 0 0 .261 6.98c0 1.085.26 2.11.717 3.017l2.234-1.731z\"\n fill=\"#FABB05\"\n />\n <path\n d=\"M6.988 2.921c.992 0 1.88.34 2.58 1.008v.001l1.92-1.918C10.324.928 8.804.262 6.989.262a6.728 6.728 0 0 0-6.01 3.702l2.234 1.731c.532-1.592 2.022-2.774 3.776-2.774\"\n fill=\"#E94235\"\n />\n </g>\n </svg>\n }\n `,\n})\nexport class CoinflowGooglePayOverlayComponent {\n @Input() color!: 'white' | 'black';\n}\n","import {Component, Input} from '@angular/core';\nimport {CoinflowPurchaseProps} from '../common';\nimport {CoinflowMobileWalletButtonComponent} from './coinflow-mobile-wallet-button.component';\nimport {CoinflowGooglePayOverlayComponent} from './google-pay-overlay.component';\n\n@Component({\n selector: 'lib-coinflow-google-pay-button',\n standalone: true,\n imports: [\n CoinflowMobileWalletButtonComponent,\n CoinflowGooglePayOverlayComponent,\n ],\n template: `<lib-coinflow-mobile-wallet-button\n ng-if=\"iframeProps && messageHandlers\"\n [purchaseProps]=\"purchaseProps\"\n route=\"google-pay\"\n alignItems=\"center\"\n overlayDisplayOverride=\"flex\"\n >\n <coinflow-google-pay-overlay\n [color]=\"purchaseProps.color\"\n ></coinflow-google-pay-overlay>\n </lib-coinflow-mobile-wallet-button> `,\n})\nexport class CoinflowGooglePayButtonComponent {\n @Input() purchaseProps!: CoinflowPurchaseProps & {\n color: 'white' | 'black';\n onError?: (message: string) => void;\n };\n}\n","/*\n * Public API Surface of coinflowlabs\n */\n\nexport * from './lib/coinflow-iframe.component';\nexport * from './lib/coinflow-purchase.component';\nexport * from './lib/coinflow-purchase-history.component';\nexport * from './lib/coinflow-purchase-protection.component';\nexport * from './lib/coinflow-withdraw.component';\nexport * from './lib/coinflow-withdraw-history.component';\n\nexport * from './lib/card-form/coinflow-card-number-input.component';\nexport * from './lib/card-form/coinflow-card-number-only-input.component';\nexport * from './lib/card-form/coinflow-cvv-input.component';\nexport * from './lib/card-form/coinflow-cvv-only-input.component';\n\nexport * from './lib/mobile-wallet/coinflow-apple-pay-button.component';\nexport * from './lib/mobile-wallet/coinflow-google-pay-button.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { CoinflowPurchaseProps, CoinflowSessionKeyPurchaseProps, OnSuccessMethod } from './CoinflowTypes';
1
+ import { CoinflowPurchaseProps, OnSuccessMethod } from './CoinflowTypes';
2
2
  export type WalletCall = {
3
3
  method: IFrameMessageMethods;
4
4
  data: string;
@@ -24,9 +24,9 @@ declare enum IFrameMessageMethods {
24
24
  SendTransaction = "sendTransaction",
25
25
  HeightChange = "heightChange",
26
26
  Success = "success",
27
- Load = "load"
27
+ Loaded = "loaded"
28
28
  }
29
- export declare function getWalletPubkey(input: Pick<CoinflowPurchaseProps, 'wallet'> | Pick<CoinflowSessionKeyPurchaseProps, 'sessionKey'>): string | null | undefined;
29
+ export declare function getWalletPubkey(input: CoinflowPurchaseProps): string | null | undefined;
30
30
  export declare function handleIFrameMessage(rawMessage: string, handlers: IFrameMessageHandlers): Promise<string> | void;
31
- export declare function getHandlers(props: Pick<CoinflowPurchaseProps, 'wallet' | 'blockchain' | 'onSuccess'>): Omit<IFrameMessageHandlers, 'handleHeightChange'>;
31
+ export declare function getHandlers(props: CoinflowPurchaseProps): Omit<IFrameMessageHandlers, 'handleHeightChange'>;
32
32
  export {};
@@ -97,12 +97,17 @@ export interface CoinflowSolanaHistoryProps extends CoinflowTypes {
97
97
  connection: Connection;
98
98
  blockchain: 'solana';
99
99
  }
100
+ export interface CoinflowSessionKeyHistoryProps extends CoinflowTypes {
101
+ sessionKey: string;
102
+ blockchain?: undefined;
103
+ }
100
104
  export interface CoinflowNearHistoryProps extends CoinflowTypes {
101
105
  wallet: NearWallet;
102
106
  blockchain: 'near';
103
107
  }
104
108
  export interface CoinflowEvmHistoryProps extends CoinflowTypes {
105
109
  wallet: EthWallet;
110
+ blockchain: 'eth' | 'polygon' | 'base' | 'arbitrum';
106
111
  }
107
112
  export interface CoinflowEthHistoryProps extends CoinflowEvmHistoryProps {
108
113
  blockchain: 'eth';
@@ -116,7 +121,7 @@ export interface CoinflowBaseHistoryProps extends CoinflowEvmHistoryProps {
116
121
  export interface CoinflowArbitrumHistoryProps extends CoinflowEvmHistoryProps {
117
122
  blockchain: 'arbitrum';
118
123
  }
119
- export type CoinflowHistoryProps = CoinflowSolanaHistoryProps | CoinflowNearHistoryProps | CoinflowPolygonHistoryProps | CoinflowEthHistoryProps | CoinflowBaseHistoryProps | CoinflowArbitrumHistoryProps;
124
+ export type CoinflowHistoryProps = CoinflowSolanaHistoryProps | CoinflowNearHistoryProps | CoinflowPolygonHistoryProps | CoinflowEthHistoryProps | CoinflowBaseHistoryProps | CoinflowArbitrumHistoryProps | CoinflowSessionKeyHistoryProps;
120
125
  /** Transactions **/
121
126
  export type NearFtTransferCallAction = {
122
127
  methodName: 'ft_transfer_call';
@@ -252,33 +257,45 @@ export interface CoinflowCommonWithdrawProps extends CoinflowTypes {
252
257
  */
253
258
  origins?: string[];
254
259
  }
255
- export interface CoinflowSolanaWithdrawProps extends CoinflowCommonWithdrawProps {
260
+ export type WalletTypes = SolanaWallet | NearWallet | EthWallet;
261
+ export interface SolanaWalletProps {
256
262
  wallet: SolanaWallet;
257
263
  connection: Connection;
258
264
  blockchain: 'solana';
259
265
  }
260
- export interface CoinflowNearWithdrawProps extends CoinflowCommonWithdrawProps {
266
+ export type CoinflowSolanaWithdrawProps = CoinflowCommonWithdrawProps & SolanaWalletProps;
267
+ export interface NearWalletProps {
261
268
  wallet: NearWallet;
262
269
  blockchain: 'near';
263
270
  }
264
- export interface CoinflowEvmWithdrawProps extends CoinflowCommonWithdrawProps {
271
+ export type CoinflowNearWithdrawProps = CoinflowCommonWithdrawProps & NearWalletProps;
272
+ interface EvmWalletProps {
265
273
  wallet: EthWallet;
266
274
  usePermit?: boolean;
267
275
  }
268
- export interface CoinflowEthWithdrawProps extends CoinflowEvmWithdrawProps {
276
+ type CoinflowEvmWithdrawProps = CoinflowCommonWithdrawProps & EvmWalletProps;
277
+ export interface EthWalletProps {
269
278
  blockchain: 'eth';
270
- usePermit?: boolean;
271
279
  }
272
- export interface CoinflowPolygonWithdrawProps extends CoinflowEvmWithdrawProps {
280
+ export type CoinflowEthWithdrawProps = CoinflowEvmWithdrawProps & EthWalletProps;
281
+ export interface PolygonWalletProps {
273
282
  blockchain: 'polygon';
274
283
  }
275
- export interface CoinflowBaseWithdrawProps extends CoinflowEvmWithdrawProps {
284
+ export type CoinflowPolygonWithdrawProps = CoinflowEvmWithdrawProps & PolygonWalletProps;
285
+ export interface BaseWalletProps {
276
286
  blockchain: 'base';
277
287
  }
278
- export interface CoinflowArbitrumWithdrawProps extends CoinflowEvmWithdrawProps {
288
+ export type CoinflowBaseWithdrawProps = CoinflowEvmWithdrawProps & BaseWalletProps;
289
+ export interface ArbitrumWalletProps {
279
290
  blockchain: 'arbitrum';
280
291
  }
281
- export type CoinflowWithdrawProps = CoinflowSolanaWithdrawProps | CoinflowNearWithdrawProps | CoinflowEthWithdrawProps | CoinflowPolygonWithdrawProps | CoinflowBaseWithdrawProps | CoinflowArbitrumWithdrawProps;
292
+ export type CoinflowArbitrumWithdrawProps = CoinflowEvmWithdrawProps & ArbitrumWalletProps;
293
+ export interface CoinflowSessionKeyWithdrawProps extends CoinflowCommonWithdrawProps {
294
+ sessionKey: string;
295
+ signer: SolanaWalletProps | NearWalletProps | EthWalletProps | PolygonWalletProps | BaseWalletProps | ArbitrumWalletProps;
296
+ blockchain?: undefined;
297
+ }
298
+ export type CoinflowWithdrawProps = CoinflowSolanaWithdrawProps | CoinflowNearWithdrawProps | CoinflowEthWithdrawProps | CoinflowPolygonWithdrawProps | CoinflowBaseWithdrawProps | CoinflowArbitrumWithdrawProps | CoinflowSessionKeyWithdrawProps;
282
299
  export interface CommonEvmRedeem {
283
300
  waitForHash?: boolean;
284
301
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@coinflowlabs/angular",
3
- "version": "0.3.0",
3
+ "version": "0.3.1",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^17.3.0",
6
6
  "@angular/core": "^17.3.0",