@ember-finance/sdk 1.1.3 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -83,6 +83,8 @@ console.log("Deposit successful:", result);
83
83
  The EVM vaults implement the ERC-4626 tokenized vault standard. The vault contract itself
84
84
  is the share token, so there's no separate receipt token.
85
85
 
86
+ #### Traditional Approach (Two Transactions)
87
+
86
88
  ```typescript
87
89
  import { EmberVaults } from "@ember-finance/sdk";
88
90
  import { ethers } from "ethers";
@@ -148,6 +150,51 @@ const resultWithEvents = await ember.user.deposit(
148
150
  console.log("Events:", resultWithEvents.events);
149
151
  ```
150
152
 
153
+ #### New Approach: Single Transaction with EIP-2612 Permit (Recommended)
154
+
155
+ The new `depositWithPermit` and `mintWithPermit` methods allow depositing in a **single
156
+ transaction** without requiring a separate approval transaction. This uses EIP-2612 permit
157
+ signatures.
158
+
159
+ ```typescript
160
+ import { EmberVaults, signPermitSimple } from "@ember-finance/sdk";
161
+ import { ethers } from "ethers";
162
+
163
+ // Setup (same as above)
164
+ const provider = new ethers.JsonRpcProvider("https://eth-mainnet.g.alchemy.com/v2/YOUR_API_KEY");
165
+ const signer = new ethers.Wallet(privateKey, provider);
166
+
167
+ const ember = new EmberVaults({
168
+ chainType: "evm",
169
+ signer,
170
+ provider,
171
+ deployment,
172
+ environment: "prod"
173
+ });
174
+
175
+ const vaultAddress = deployment.contracts.vaults["USDC Vault"].proxyAddress;
176
+ const underlyingAsset = deployment.contracts.vaults["USDC Vault"].baseToken;
177
+ const depositAmount = "1000000"; // 1 USDC (6 decimals)
178
+
179
+ // Generate permit signature (off-chain, no gas cost)
180
+ const permitSig = await signPermitSimple(
181
+ signer,
182
+ underlyingAsset,
183
+ "USD Coin", // Token name (must match token's EIP-2612 name)
184
+ vaultAddress,
185
+ depositAmount
186
+ );
187
+
188
+ // Deposit with permit in a SINGLE transaction (no separate approval needed!)
189
+ const result = await ember.user.depositWithPermit(
190
+ vaultAddress,
191
+ depositAmount,
192
+ permitSig
193
+ );
194
+
195
+ console.log("Deposit successful:", result);
196
+ ```
197
+
151
198
  ### EVM - Deposit to a Different Receiver
152
199
 
153
200
  ```typescript
@@ -161,10 +208,15 @@ const result = await ember.user.deposit(
161
208
 
162
209
  ### EVM - Mint Specific Shares (ERC-4626)
163
210
 
211
+ #### Traditional Approach (Requires Approval)
212
+
164
213
  ```typescript
165
214
  // Mint a specific number of shares (vault will pull required assets)
166
215
  const sharesToMint = "1000000000000000000"; // 1e18 shares
167
216
 
217
+ // Must approve first
218
+ await ember.user.approveTokenMax(underlyingAsset, vaultAddress);
219
+
168
220
  await ember.user.mint(vaultAddress, sharesToMint);
169
221
 
170
222
  // Mint to a different receiver
@@ -173,6 +225,31 @@ await ember.user.mint(vaultAddress, sharesToMint, {
173
225
  });
174
226
  ```
175
227
 
228
+ #### Single Transaction with Permit
229
+
230
+ ```typescript
231
+ import { signPermitSimple } from "@ember-finance/sdk";
232
+
233
+ const sharesToMint = "1000000000000000000"; // 1e18 shares
234
+
235
+ // Generate permit signature for a high amount (vault will pull exact amount needed)
236
+ const permitSig = await signPermitSimple(
237
+ signer,
238
+ underlyingAsset,
239
+ "USD Coin",
240
+ vaultAddress,
241
+ "115792089237316195423570985008687907853269984665640564039457584007913129639935" // max uint256
242
+ );
243
+
244
+ // Mint with permit in single transaction
245
+ await ember.user.mintWithPermit(vaultAddress, sharesToMint, permitSig);
246
+
247
+ // Mint to a different receiver
248
+ await ember.user.mintWithPermit(vaultAddress, sharesToMint, permitSig, {
249
+ receiver: "0xRecipientAddress..."
250
+ });
251
+ ```
252
+
176
253
  ### EVM - Redeem Shares (Initiate Withdrawal)
177
254
 
178
255
  ```typescript
@@ -236,13 +313,25 @@ Handle user-facing vault operations:
236
313
 
237
314
  **EVM (ERC-4626):**
238
315
 
239
- - **deposit**: Deposit assets and receive shares (ERC-4626 standard)
240
- - **mint**: Mint specific shares by depositing required assets (ERC-4626 standard)
316
+ - **deposit**: Deposit assets and receive shares (ERC-4626 standard, requires approval)
317
+ - **depositWithPermit**: Deposit assets using EIP-2612 permit (single transaction, no
318
+ approval needed) ✨ **NEW**
319
+ - **mint**: Mint specific shares by depositing required assets (ERC-4626 standard,
320
+ requires approval)
321
+ - **mintWithPermit**: Mint shares using EIP-2612 permit (single transaction, no approval
322
+ needed) ✨ **NEW**
241
323
  - **redeemShares**: Redeem shares to initiate withdrawal request
242
324
  - **cancelPendingWithdrawalRequest**: Cancel pending withdrawal requests
243
325
  - **approveToken**: Approve token spending
244
326
  - **approveTokenMax**: Approve maximum token spending
245
327
 
328
+ **Permit Utilities (EVM):** ✨ **NEW**
329
+
330
+ - **signPermitSimple**: Generate EIP-2612 permit signature with automatic nonce and
331
+ deadline
332
+ - **signPermit**: Generate EIP-2612 permit signature with custom parameters
333
+ - **getPermitNonce**: Get current permit nonce for a user
334
+
246
335
  **SUI:**
247
336
 
248
337
  - **depositAsset**: Deposit assets into a vault
@@ -283,6 +372,84 @@ Vault-specific administrative controls (called via ProtocolConfig on EVM):
283
372
  - **updateVaultRateUpdateInterval**: Update rate update interval
284
373
  - **updateVaultName**: Update vault name
285
374
 
375
+ ## EIP-2612 Permit Support (EVM) ✨ **NEW**
376
+
377
+ The Ember vaults now support **EIP-2612 permit signatures**, allowing users to deposit or
378
+ mint shares in a **single transaction** without requiring a separate approval transaction.
379
+ This significantly improves the user experience by:
380
+
381
+ - Reducing gas costs (one transaction instead of two)
382
+ - Eliminating the need to wait for approval transaction confirmation
383
+ - Providing a smoother, faster deposit flow
384
+
385
+ ### How Permit Works
386
+
387
+ EIP-2612 allows users to sign an off-chain message (no gas cost) that authorizes the vault
388
+ to spend their tokens. This signature is then included in the deposit/mint transaction,
389
+ which handles both the approval and the deposit atomically.
390
+
391
+ ### Using Permit with the SDK
392
+
393
+ ```typescript
394
+ import { EmberVaults, signPermitSimple } from "@ember-finance/sdk";
395
+
396
+ // 1. Generate permit signature (off-chain, no gas)
397
+ const permitSig = await signPermitSimple(
398
+ signer,
399
+ tokenAddress,
400
+ "USD Coin", // Token name (must match EIP-2612 name)
401
+ vaultAddress,
402
+ amount
403
+ );
404
+
405
+ // 2. Deposit with permit (single transaction)
406
+ await ember.user.depositWithPermit(vaultAddress, amount, permitSig);
407
+ ```
408
+
409
+ ### Advanced Permit Usage
410
+
411
+ For more control over the permit parameters:
412
+
413
+ ```typescript
414
+ import { signPermit, getPermitNonce } from "@ember-finance/sdk";
415
+
416
+ // Get current nonce for the user
417
+ const nonce = await getPermitNonce(tokenAddress, userAddress, provider);
418
+
419
+ // Set custom deadline (e.g., 24 hours from now)
420
+ const deadline = BigInt(Math.floor(Date.now() / 1000) + 86400);
421
+
422
+ // Get chain ID
423
+ const network = await provider.getNetwork();
424
+ const chainId = network.chainId;
425
+
426
+ // Sign permit with custom parameters
427
+ const permitSig = await signPermit(
428
+ signer,
429
+ tokenAddress,
430
+ "USD Coin",
431
+ vaultAddress,
432
+ amount,
433
+ deadline,
434
+ nonce,
435
+ chainId
436
+ );
437
+
438
+ // Use the permit
439
+ await ember.user.depositWithPermit(vaultAddress, amount, permitSig);
440
+ ```
441
+
442
+ ### Important Notes
443
+
444
+ - **Token Support**: The underlying token must support EIP-2612 permit. Most modern
445
+ tokens (USDC, DAI, etc.) support this standard.
446
+ - **Token Name**: The token name passed to `signPermit` must match the token's EIP-2612
447
+ domain name exactly.
448
+ - **Deadline**: Permit signatures have a deadline. After the deadline, the signature
449
+ becomes invalid.
450
+ - **Nonce**: Each permit signature uses a nonce. Once used, the nonce increments and the
451
+ signature cannot be reused.
452
+
286
453
  ## ERC-4626 Compatibility (EVM)
287
454
 
288
455
  The EVM vaults are fully ERC-4626 compliant:
@@ -19,6 +19,33 @@
19
19
  "name": "AddressEmptyCode",
20
20
  "type": "error"
21
21
  },
22
+ {
23
+ "inputs": [],
24
+ "name": "ECDSAInvalidSignature",
25
+ "type": "error"
26
+ },
27
+ {
28
+ "inputs": [
29
+ {
30
+ "internalType": "uint256",
31
+ "name": "length",
32
+ "type": "uint256"
33
+ }
34
+ ],
35
+ "name": "ECDSAInvalidSignatureLength",
36
+ "type": "error"
37
+ },
38
+ {
39
+ "inputs": [
40
+ {
41
+ "internalType": "bytes32",
42
+ "name": "s",
43
+ "type": "bytes32"
44
+ }
45
+ ],
46
+ "name": "ECDSAInvalidSignatureS",
47
+ "type": "error"
48
+ },
22
49
  {
23
50
  "inputs": [
24
51
  {
@@ -121,11 +148,54 @@
121
148
  "name": "ERC20InvalidSpender",
122
149
  "type": "error"
123
150
  },
151
+ {
152
+ "inputs": [
153
+ {
154
+ "internalType": "uint256",
155
+ "name": "deadline",
156
+ "type": "uint256"
157
+ }
158
+ ],
159
+ "name": "ERC2612ExpiredSignature",
160
+ "type": "error"
161
+ },
162
+ {
163
+ "inputs": [
164
+ {
165
+ "internalType": "address",
166
+ "name": "signer",
167
+ "type": "address"
168
+ },
169
+ {
170
+ "internalType": "address",
171
+ "name": "owner",
172
+ "type": "address"
173
+ }
174
+ ],
175
+ "name": "ERC2612InvalidSigner",
176
+ "type": "error"
177
+ },
124
178
  {
125
179
  "inputs": [],
126
180
  "name": "FailedCall",
127
181
  "type": "error"
128
182
  },
183
+ {
184
+ "inputs": [
185
+ {
186
+ "internalType": "address",
187
+ "name": "account",
188
+ "type": "address"
189
+ },
190
+ {
191
+ "internalType": "uint256",
192
+ "name": "currentNonce",
193
+ "type": "uint256"
194
+ }
195
+ ],
196
+ "name": "InvalidAccountNonce",
197
+ "type": "error"
198
+ },
129
199
  {
130
200
  "inputs": [],
131
201
  "name": "InvalidInitialization",
@@ -199,6 +269,12 @@
199
269
  "name": "Approval",
200
270
  "type": "event"
201
271
  },
272
+ {
273
+ "anonymous": false,
274
+ "inputs": [],
275
+ "name": "EIP712DomainChanged",
276
+ "type": "event"
277
+ },
202
278
  {
203
279
  "anonymous": false,
204
280
  "inputs": [
@@ -307,6 +383,19 @@
307
383
  "name": "Upgraded",
308
384
  "type": "event"
309
385
  },
386
+ {
387
+ "inputs": [],
388
+ "name": "DOMAIN_SEPARATOR",
389
+ "outputs": [
390
+ {
391
+ "internalType": "bytes32",
392
+ "name": "",
393
+ "type": "bytes32"
394
+ }
395
+ ],
396
+ "stateMutability": "view",
397
+ "type": "function"
398
+ },
310
399
  {
311
400
  "inputs": [],
312
401
  "name": "UPGRADE_INTERFACE_VERSION",
@@ -431,6 +520,49 @@
431
520
  "stateMutability": "view",
432
521
  "type": "function"
433
522
  },
523
+ {
524
+ "inputs": [],
525
+ "name": "eip712Domain",
526
+ "outputs": [
527
+ {
528
+ "internalType": "bytes1",
529
+ "name": "fields",
530
+ "type": "bytes1"
531
+ },
532
+ {
533
+ "internalType": "string",
534
+ "name": "name",
535
+ "type": "string"
536
+ },
537
+ {
538
+ "internalType": "string",
539
+ "name": "version",
540
+ "type": "string"
541
+ },
542
+ {
543
+ "internalType": "uint256",
544
+ "name": "chainId",
545
+ "type": "uint256"
546
+ },
547
+ {
548
+ "internalType": "address",
549
+ "name": "verifyingContract",
550
+ "type": "address"
551
+ },
552
+ {
553
+ "internalType": "bytes32",
554
+ "name": "salt",
555
+ "type": "bytes32"
556
+ },
557
+ {
558
+ "internalType": "uint256[]",
559
+ "name": "extensions",
560
+ "type": "uint256[]"
561
+ }
562
+ ],
563
+ "stateMutability": "view",
564
+ "type": "function"
565
+ },
434
566
  {
435
567
  "inputs": [
436
568
  {
@@ -495,6 +627,25 @@
495
627
  "stateMutability": "view",
496
628
  "type": "function"
497
629
  },
630
+ {
631
+ "inputs": [
632
+ {
633
+ "internalType": "address",
634
+ "name": "owner",
635
+ "type": "address"
636
+ }
637
+ ],
638
+ "name": "nonces",
639
+ "outputs": [
640
+ {
641
+ "internalType": "uint256",
642
+ "name": "",
643
+ "type": "uint256"
644
+ }
645
+ ],
646
+ "stateMutability": "view",
647
+ "type": "function"
648
+ },
498
649
  {
499
650
  "inputs": [],
500
651
  "name": "owner",
@@ -508,6 +659,49 @@
508
659
  "stateMutability": "view",
509
660
  "type": "function"
510
661
  },
662
+ {
663
+ "inputs": [
664
+ {
665
+ "internalType": "address",
666
+ "name": "owner",
667
+ "type": "address"
668
+ },
669
+ {
670
+ "internalType": "address",
671
+ "name": "spender",
672
+ "type": "address"
673
+ },
674
+ {
675
+ "internalType": "uint256",
676
+ "name": "value",
677
+ "type": "uint256"
678
+ },
679
+ {
680
+ "internalType": "uint256",
681
+ "name": "deadline",
682
+ "type": "uint256"
683
+ },
684
+ {
685
+ "internalType": "uint8",
686
+ "name": "v",
687
+ "type": "uint8"
688
+ },
689
+ {
690
+ "internalType": "bytes32",
691
+ "name": "r",
692
+ "type": "bytes32"
693
+ },
694
+ {
695
+ "internalType": "bytes32",
696
+ "name": "s",
697
+ "type": "bytes32"
698
+ }
699
+ ],
700
+ "name": "permit",
701
+ "outputs": [],
702
+ "stateMutability": "nonpayable",
703
+ "type": "function"
704
+ },
511
705
  {
512
706
  "inputs": [],
513
707
  "name": "proxiableUUID",
@@ -652,8 +846,8 @@
652
846
  "type": "function"
653
847
  }
654
848
  ],
655
- "bytecode": "0x60a080604052346100cc57306080527ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff8260401c166100bd57506001600160401b036002600160401b031982821601610078575b60405161143190816100d28239608051818181610a130152610aba0152f35b6001600160401b031990911681179091556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1388080610059565b63f92ee8a960e01b8152600490fd5b600080fdfe608080604052600436101561001357600080fd5b60003560e01c90816306fdde0314610e6b57508063095ea7b314610dea57806318160ddd14610dbf57806323b872dd14610cda578063313ce5671461069957806340c10f1914610c755780634f1ef28614610a6b57806352d1902d14610a0057806354fd4d50146109c157806370a082311461097a578063715018a6146109105780638da5cb5b146108da57806395d89b41146107fc5780639dc29fac146106eb578063a9059cbb146106ba578063ace28fa514610699578063ad3cb1cc14610657578063d72bdc5314610174578063dd62ed3e1461012b5763f2fde38b146100fb57600080fd5b3461012657602036600319011261012657610124610117610f4e565b61011f6111d0565b611099565b005b600080fd5b3461012657604036600319011261012657610144610f4e565b61015561014f610f64565b91611060565b9060018060a01b03166000526020526020604060002054604051908152f35b346101265760a03660031901126101265761018d610f4e565b6024356001600160401b038111610126576101ac903690600401611008565b6044356001600160401b038111610126576101cb903690600401611008565b916064359260ff84168403610126576000805160206113dc83398151915254926001600160401b03841680159081610647575b600114908161063d575b159081610634575b506106225760016001600160401b03198516176000805160206113dc8339815191525560ff8460401c16156105f5575b610248611289565b610250611289565b8051906001600160401b0382116104d857819061027b60008051602061131c83398151915254611026565b601f811161057b575b50602090601f83116001146104f9576000926104ee575b50508160011b916000199060031b1c19161760008051602061131c833981519152555b80516001600160401b0381116104d8577f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace04916102fa8354611026565b601f8111610490575b50602090601f831160011461042457918060ff979392889593600092610419575b50508160011b916000199060031b1c19161790555b610341611289565b610349611289565b61035283611099565b61035a611289565b16831960005416176000556084356103cd575b5060401c161561037957005b60ff60401b196000805160206113dc83398151915254166000805160206113dc833981519152557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b6103d960843582611209565b60405160843581526001600160a01b03909116907fb9144c96c86541f6fa89c9f2f02495cccf4b08cd6643e26d34ee00aa586558a890602090a28261036d565b015190508880610324565b90601f1983169184600052816000209260005b818110610478575092600192859260ff9a968b98961061045f575b505050811b019055610339565b015160001960f88460031b161c19169055888080610452565b92936020600181928786015181550195019301610437565b836000526020600020601f840160051c810191602085106104ce575b601f0160051c01905b8181106104c25750610303565b600081556001016104b5565b90915081906104ac565b634e487b7160e01b600052604160045260246000fd5b01519050868061029b565b60008051602061131c83398151915260009081528281209350601f198516905b818110610563575090846001959493921061054a575b505050811b0160008051602061131c833981519152556102be565b015160001960f88460031b161c1916905586808061052f565b92936020600181928786015181550195019301610519565b60008051602061131c8339815191526000529091507f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0601f840160051c8101602085106105ee575b90849392915b601f830160051c820181106105df575050610284565b600081558594506001016105c9565b50806105c3565b68ffffffffffffffffff19841668010000000000000001176000805160206113dc83398151915255610240565b60405163f92ee8a960e01b8152600490fd5b90501586610210565b303b159150610208565b604086901c60ff161591506101fe565b346101265760003660031901126101265761069560405161067781610f7a565b60058152640352e302e360dc1b602082015260405191829182610f05565b0390f35b3461012657600036600319011261012657602060ff60005416604051908152f35b34610126576040366003190112610126576106e06106d6610f4e565b602435903361110d565b602060405160018152f35b3461012657604036600319011261012657610704610f4e565b60243561070f6111d0565b6001600160a01b0382169081156107e3578160005260008051602061133c83398151915280602052604060002054938285106107b25750817f1af5163f80e79b5e554f61e1d052084d3a3fe1166e42a265798c4e2ddce8ffa292856020938660005284520360406000205560008051602061137c8339815191528181540390556000846000805160206113bc83398151915284604051858152a3604051908152a2005b60405163391434e360e21b81526001600160a01b039190911660048201526024810185905260448101839052606490fd5b604051634b637e8f60e11b815260006004820152602490fd5b34610126576000366003190112610126576040516000907f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace04805461083f81611026565b908184526020926001916001811690816000146108b8575060011461087b575b6106958561086f81890382610f95565b60405191829182610f05565b6000908152838120939550925b8284106108a557505050816106959361086f92820101938561085f565b8054858501870152928501928101610888565b60ff191686860152505050151560051b820101915061086f816106958561085f565b346101265760003660031901126101265760008051602061135c833981519152546040516001600160a01b039091168152602090f35b34610126576000366003190112610126576109296111d0565b60008051602061135c83398151915280546001600160a01b031981169091556000906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b34610126576020366003190112610126576001600160a01b0361099b610f4e565b1660005260008051602061133c8339815191526020526020604060002054604051908152f35b34610126576000366003190112610126576106956040516109e181610f7a565b6006815265076312e302e360d41b602082015260405191829182610f05565b34610126576000366003190112610126577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163003610a5957602060405160008051602061139c8339815191528152f35b60405163703e46dd60e11b8152600490fd5b604036600319011261012657610a7f610f4e565b6024356001600160401b038111610126573660238201121561012657610aaf903690602481600401359101610fd1565b906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116308114908115610c59575b50610a5957610af36111d0565b6040516352d1902d60e01b8152908216916020918281600481875afa60009181610c2a575b50610b3657604051634c9c8ce360e01b815260048101859052602490fd5b92849360008051602061139c83398151915290818103610c125750823b15610bf95780546001600160a01b03191682179055604051907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a2835115610bdf5750600080848461012496519101845af4903d15610bd6573d610bb981610fb6565b90610bc76040519283610f95565b8152600081943d92013e6112b8565b606092506112b8565b9250505034610bea57005b63b398979f60e01b8152600490fd5b604051634c9c8ce360e01b815260048101839052602490fd5b60249060405190632a87526960e21b82526004820152fd5b9091508381813d8311610c52575b610c428183610f95565b8101031261012657519086610b18565b503d610c38565b90508160008051602061139c8339815191525416141584610ae6565b3461012657604036600319011261012657610c8e610f4e565b7fb9144c96c86541f6fa89c9f2f02495cccf4b08cd6643e26d34ee00aa586558a8602060243592610cbd6111d0565b610cc78482611209565b6040519384526001600160a01b031692a2005b3461012657606036600319011261012657610cf3610f4e565b610cfb610f64565b60443590610d0883611060565b33600052602052604060002054926000198410610d2a575b6106e0935061110d565b828410610d99576001600160a01b03811615610d80573315610d6757826106e094610d5483611060565b3360005260205203604060002055610d20565b604051634a1406b160e11b815260006004820152602490fd5b60405163e602df0560e01b815260006004820152602490fd5b604051637dc7a0d960e11b81523360048201526024810185905260448101849052606490fd5b3461012657600036600319011261012657602060008051602061137c83398151915254604051908152f35b3461012657604036600319011261012657610e03610f4e565b602435903315610d80576001600160a01b0316908115610d6757610e2633611060565b82600052602052806040600020556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b346101265760003660031901126101265760009060008051602061131c8339815191528054610e9981611026565b908184526020926001916001811690816000146108b85750600114610ec8576106958561086f81890382610f95565b6000908152838120939550925b828410610ef257505050816106959361086f92820101938561085f565b8054858501870152928501928101610ed5565b6020808252825181830181905290939260005b828110610f3a57505060409293506000838284010152601f8019910116010190565b818101860151848201604001528501610f18565b600435906001600160a01b038216820361012657565b602435906001600160a01b038216820361012657565b604081019081106001600160401b038211176104d857604052565b90601f801991011681019081106001600160401b038211176104d857604052565b6001600160401b0381116104d857601f01601f191660200190565b929192610fdd82610fb6565b91610feb6040519384610f95565b829481845281830111610126578281602093846000960137010152565b9080601f830112156101265781602061102393359101610fd1565b90565b90600182811c92168015611056575b602083101461104057565b634e487b7160e01b600052602260045260246000fd5b91607f1691611035565b6001600160a01b031660009081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020526040902090565b6001600160a01b039081169081156110f45760008051602061135c83398151915280546001600160a01b031981168417909155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b604051631e4fbdf760e01b815260006004820152602490fd5b916001600160a01b038084169283156107e357169283156111b75760009083825260008051602061133c83398151915280602052604083205491848310611184575082846000805160206113bc833981519152959360409388602097528652038282205586815220818154019055604051908152a3565b60405163391434e360e21b81526001600160a01b0391909116600482015260248101929092525060448101839052606490fd5b60405163ec442f0560e01b815260006004820152602490fd5b60008051602061135c833981519152546001600160a01b031633036111f157565b60405163118cdaa760e01b8152336004820152602490fd5b6001600160a01b03169081156111b75760008051602061137c833981519152805490828201809211611273576000926000805160206113bc833981519152926020925584845260008051602061133c833981519152825260408420818154019055604051908152a3565b634e487b7160e01b600052601160045260246000fd5b60ff6000805160206113dc8339815191525460401c16156112a657565b604051631afcd79f60e31b8152600490fd5b906112df57508051156112cd57602081519101fd5b60405163d6bda27560e01b8152600490fd5b81511580611312575b6112f0575090565b604051639996b31560e01b81526001600160a01b039091166004820152602490fd5b50803b156112e856fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0352c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace009016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930052c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3eff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212202e728f8d0d4fb0fdb61b5a41d5faea56d248660ee1067da3fe6a3f457f40283664736f6c63430008160033",
656
- "deployedBytecode": "0x608080604052600436101561001357600080fd5b60003560e01c90816306fdde0314610e6b57508063095ea7b314610dea57806318160ddd14610dbf57806323b872dd14610cda578063313ce5671461069957806340c10f1914610c755780634f1ef28614610a6b57806352d1902d14610a0057806354fd4d50146109c157806370a082311461097a578063715018a6146109105780638da5cb5b146108da57806395d89b41146107fc5780639dc29fac146106eb578063a9059cbb146106ba578063ace28fa514610699578063ad3cb1cc14610657578063d72bdc5314610174578063dd62ed3e1461012b5763f2fde38b146100fb57600080fd5b3461012657602036600319011261012657610124610117610f4e565b61011f6111d0565b611099565b005b600080fd5b3461012657604036600319011261012657610144610f4e565b61015561014f610f64565b91611060565b9060018060a01b03166000526020526020604060002054604051908152f35b346101265760a03660031901126101265761018d610f4e565b6024356001600160401b038111610126576101ac903690600401611008565b6044356001600160401b038111610126576101cb903690600401611008565b916064359260ff84168403610126576000805160206113dc83398151915254926001600160401b03841680159081610647575b600114908161063d575b159081610634575b506106225760016001600160401b03198516176000805160206113dc8339815191525560ff8460401c16156105f5575b610248611289565b610250611289565b8051906001600160401b0382116104d857819061027b60008051602061131c83398151915254611026565b601f811161057b575b50602090601f83116001146104f9576000926104ee575b50508160011b916000199060031b1c19161760008051602061131c833981519152555b80516001600160401b0381116104d8577f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace04916102fa8354611026565b601f8111610490575b50602090601f831160011461042457918060ff979392889593600092610419575b50508160011b916000199060031b1c19161790555b610341611289565b610349611289565b61035283611099565b61035a611289565b16831960005416176000556084356103cd575b5060401c161561037957005b60ff60401b196000805160206113dc83398151915254166000805160206113dc833981519152557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b6103d960843582611209565b60405160843581526001600160a01b03909116907fb9144c96c86541f6fa89c9f2f02495cccf4b08cd6643e26d34ee00aa586558a890602090a28261036d565b015190508880610324565b90601f1983169184600052816000209260005b818110610478575092600192859260ff9a968b98961061045f575b505050811b019055610339565b015160001960f88460031b161c19169055888080610452565b92936020600181928786015181550195019301610437565b836000526020600020601f840160051c810191602085106104ce575b601f0160051c01905b8181106104c25750610303565b600081556001016104b5565b90915081906104ac565b634e487b7160e01b600052604160045260246000fd5b01519050868061029b565b60008051602061131c83398151915260009081528281209350601f198516905b818110610563575090846001959493921061054a575b505050811b0160008051602061131c833981519152556102be565b015160001960f88460031b161c1916905586808061052f565b92936020600181928786015181550195019301610519565b60008051602061131c8339815191526000529091507f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0601f840160051c8101602085106105ee575b90849392915b601f830160051c820181106105df575050610284565b600081558594506001016105c9565b50806105c3565b68ffffffffffffffffff19841668010000000000000001176000805160206113dc83398151915255610240565b60405163f92ee8a960e01b8152600490fd5b90501586610210565b303b159150610208565b604086901c60ff161591506101fe565b346101265760003660031901126101265761069560405161067781610f7a565b60058152640352e302e360dc1b602082015260405191829182610f05565b0390f35b3461012657600036600319011261012657602060ff60005416604051908152f35b34610126576040366003190112610126576106e06106d6610f4e565b602435903361110d565b602060405160018152f35b3461012657604036600319011261012657610704610f4e565b60243561070f6111d0565b6001600160a01b0382169081156107e3578160005260008051602061133c83398151915280602052604060002054938285106107b25750817f1af5163f80e79b5e554f61e1d052084d3a3fe1166e42a265798c4e2ddce8ffa292856020938660005284520360406000205560008051602061137c8339815191528181540390556000846000805160206113bc83398151915284604051858152a3604051908152a2005b60405163391434e360e21b81526001600160a01b039190911660048201526024810185905260448101839052606490fd5b604051634b637e8f60e11b815260006004820152602490fd5b34610126576000366003190112610126576040516000907f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace04805461083f81611026565b908184526020926001916001811690816000146108b8575060011461087b575b6106958561086f81890382610f95565b60405191829182610f05565b6000908152838120939550925b8284106108a557505050816106959361086f92820101938561085f565b8054858501870152928501928101610888565b60ff191686860152505050151560051b820101915061086f816106958561085f565b346101265760003660031901126101265760008051602061135c833981519152546040516001600160a01b039091168152602090f35b34610126576000366003190112610126576109296111d0565b60008051602061135c83398151915280546001600160a01b031981169091556000906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b34610126576020366003190112610126576001600160a01b0361099b610f4e565b1660005260008051602061133c8339815191526020526020604060002054604051908152f35b34610126576000366003190112610126576106956040516109e181610f7a565b6006815265076312e302e360d41b602082015260405191829182610f05565b34610126576000366003190112610126577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163003610a5957602060405160008051602061139c8339815191528152f35b60405163703e46dd60e11b8152600490fd5b604036600319011261012657610a7f610f4e565b6024356001600160401b038111610126573660238201121561012657610aaf903690602481600401359101610fd1565b906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116308114908115610c59575b50610a5957610af36111d0565b6040516352d1902d60e01b8152908216916020918281600481875afa60009181610c2a575b50610b3657604051634c9c8ce360e01b815260048101859052602490fd5b92849360008051602061139c83398151915290818103610c125750823b15610bf95780546001600160a01b03191682179055604051907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a2835115610bdf5750600080848461012496519101845af4903d15610bd6573d610bb981610fb6565b90610bc76040519283610f95565b8152600081943d92013e6112b8565b606092506112b8565b9250505034610bea57005b63b398979f60e01b8152600490fd5b604051634c9c8ce360e01b815260048101839052602490fd5b60249060405190632a87526960e21b82526004820152fd5b9091508381813d8311610c52575b610c428183610f95565b8101031261012657519086610b18565b503d610c38565b90508160008051602061139c8339815191525416141584610ae6565b3461012657604036600319011261012657610c8e610f4e565b7fb9144c96c86541f6fa89c9f2f02495cccf4b08cd6643e26d34ee00aa586558a8602060243592610cbd6111d0565b610cc78482611209565b6040519384526001600160a01b031692a2005b3461012657606036600319011261012657610cf3610f4e565b610cfb610f64565b60443590610d0883611060565b33600052602052604060002054926000198410610d2a575b6106e0935061110d565b828410610d99576001600160a01b03811615610d80573315610d6757826106e094610d5483611060565b3360005260205203604060002055610d20565b604051634a1406b160e11b815260006004820152602490fd5b60405163e602df0560e01b815260006004820152602490fd5b604051637dc7a0d960e11b81523360048201526024810185905260448101849052606490fd5b3461012657600036600319011261012657602060008051602061137c83398151915254604051908152f35b3461012657604036600319011261012657610e03610f4e565b602435903315610d80576001600160a01b0316908115610d6757610e2633611060565b82600052602052806040600020556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b346101265760003660031901126101265760009060008051602061131c8339815191528054610e9981611026565b908184526020926001916001811690816000146108b85750600114610ec8576106958561086f81890382610f95565b6000908152838120939550925b828410610ef257505050816106959361086f92820101938561085f565b8054858501870152928501928101610ed5565b6020808252825181830181905290939260005b828110610f3a57505060409293506000838284010152601f8019910116010190565b818101860151848201604001528501610f18565b600435906001600160a01b038216820361012657565b602435906001600160a01b038216820361012657565b604081019081106001600160401b038211176104d857604052565b90601f801991011681019081106001600160401b038211176104d857604052565b6001600160401b0381116104d857601f01601f191660200190565b929192610fdd82610fb6565b91610feb6040519384610f95565b829481845281830111610126578281602093846000960137010152565b9080601f830112156101265781602061102393359101610fd1565b90565b90600182811c92168015611056575b602083101461104057565b634e487b7160e01b600052602260045260246000fd5b91607f1691611035565b6001600160a01b031660009081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020526040902090565b6001600160a01b039081169081156110f45760008051602061135c83398151915280546001600160a01b031981168417909155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b604051631e4fbdf760e01b815260006004820152602490fd5b916001600160a01b038084169283156107e357169283156111b75760009083825260008051602061133c83398151915280602052604083205491848310611184575082846000805160206113bc833981519152959360409388602097528652038282205586815220818154019055604051908152a3565b60405163391434e360e21b81526001600160a01b0391909116600482015260248101929092525060448101839052606490fd5b60405163ec442f0560e01b815260006004820152602490fd5b60008051602061135c833981519152546001600160a01b031633036111f157565b60405163118cdaa760e01b8152336004820152602490fd5b6001600160a01b03169081156111b75760008051602061137c833981519152805490828201809211611273576000926000805160206113bc833981519152926020925584845260008051602061133c833981519152825260408420818154019055604051908152a3565b634e487b7160e01b600052601160045260246000fd5b60ff6000805160206113dc8339815191525460401c16156112a657565b604051631afcd79f60e31b8152600490fd5b906112df57508051156112cd57602081519101fd5b60405163d6bda27560e01b8152600490fd5b81511580611312575b6112f0575090565b604051639996b31560e01b81526001600160a01b039091166004820152602490fd5b50803b156112e856fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0352c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace009016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930052c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3eff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212202e728f8d0d4fb0fdb61b5a41d5faea56d248660ee1067da3fe6a3f457f40283664736f6c63430008160033",
849
+ "bytecode": "0x60a080604052346100cc57306080527ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff8260401c166100bd57506001600160401b036002600160401b031982821601610078575b604051611fe190816100d282396080518181816111a901526112500152f35b6001600160401b031990911681179091556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1388080610059565b63f92ee8a960e01b8152600490fd5b600080fdfe608080604052600436101561001357600080fd5b60003560e01c90816306fdde03146115c957508063095ea7b3146115a357806318160ddd1461157857806323b872dd14611493578063313ce56714610b585780633644e5151461147057806340c10f191461140b5780634f1ef2861461120157806352d1902d1461119657806354fd4d501461114f57806370a0823114611108578063715018a61461109e5780637ecebe001461104557806384b0196e14610dc75780638da5cb5b14610d9157806395d89b4114610cbb5780639dc29fac14610baa578063a9059cbb14610b79578063ace28fa514610b58578063ad3cb1cc14610b0e578063d505accf14610999578063d72bdc53146101a0578063dd62ed3e146101575763f2fde38b1461012757600080fd5b34610152576020366003190112610152576101506101436116a5565b61014b611927565b6117f0565b005b600080fd5b34610152576040366003190112610152576101706116a5565b61018161017b6116bb565b916117b7565b9060018060a01b03166000526020526020604060002054604051908152f35b346101525760a0366003190112610152576101b96116a5565b6024356001600160401b038111610152576101d890369060040161175f565b906044356001600160401b038111610152576101f890369060040161175f565b906064359260ff8416840361015257600080516020611f6c83398151915254926001600160401b03841680159081610989575b600114908161097f575b159081610976575b506109645760016001600160401b0319851617600080516020611f6c8339815191525560ff8460401c1615610937575b610275611bbe565b61027d611bbe565b81516001600160401b03811161061a576102a5600080516020611e2c8339815191525461177d565b601f81116108c9575b50806020601f82116001146108495760009161083e575b508160011b916000199060031b1c191617600080516020611e2c833981519152555b8051906001600160401b03821161061a578190610312600080516020611e8c8339815191525461177d565b601f81116107c4575b50602090601f831160011461074257600092610737575b50508160011b916000199060031b1c191617600080516020611e8c833981519152555b61035d611bbe565b6040519061036a826116d1565b60018252603160f81b6020830152610380611bbe565b8051906001600160401b03821161061a5781906103ab600080516020611e6c8339815191525461177d565b601f81116106bd575b50602090601f831160011461063b57600092610630575b50508160011b916000199060031b1c191617600080516020611e6c833981519152555b80516001600160401b03811161061a57600080516020611eec83398151915291610418835461177d565b601f81116105d2575b50602090601f831160011461056657918060ff97939288959360009261055b575b50508160011b916000199060031b1c19161790555b6000600080516020611f0c833981519152556000600080516020611f8c83398151915255610483611bbe565b61048b611bbe565b610494836117f0565b61049c611bbe565b168319600054161760005560843561050f575b5060401c16156104bb57005b60ff60401b19600080516020611f6c8339815191525416600080516020611f6c833981519152557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b61051b60843582611960565b60405160843581526001600160a01b03909116907fb9144c96c86541f6fa89c9f2f02495cccf4b08cd6643e26d34ee00aa586558a890602090a2826104af565b015190508880610442565b90601f1983169184600052816000209260005b8181106105ba575092600192859260ff9a968b9896106105a1575b505050811b019055610457565b015160001960f88460031b161c19169055888080610594565b92936020600181928786015181550195019301610579565b836000526020600020601f840160051c81019160208510610610575b601f0160051c01905b8181106106045750610421565b600081556001016105f7565b90915081906105ee565b634e487b7160e01b600052604160045260246000fd5b0151905086806103cb565b600080516020611e6c83398151915260009081528281209350601f198516905b8181106106a5575090846001959493921061068c575b505050811b01600080516020611e6c833981519152556103ee565b015160001960f88460031b161c19169055868080610671565b9293602060018192878601518155019501930161065b565b600080516020611e6c8339815191526000529091507f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d601f840160051c810160208510610730575b90849392915b601f830160051c820181106107215750506103b4565b6000815585945060010161070b565b5080610705565b015190508680610332565b600080516020611e8c83398151915260009081528281209350601f198516905b8181106107ac5750908460019594939210610793575b505050811b01600080516020611e8c83398151915255610355565b015160001960f88460031b161c19169055868080610778565b92936020600181928786015181550195019301610762565b600080516020611e8c8339815191526000529091507f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa601f840160051c810160208510610837575b90849392915b601f830160051c8201811061082857505061031b565b60008155859450600101610812565b508061080c565b9050830151876102c5565b600080516020611e2c83398151915260009081528181209250601f198416905b8181106108b157509083600194939210610898575b5050811b01600080516020611e2c833981519152556102e7565b85015160001960f88460031b161c19169055878061087e565b9192602060018192868a015181550194019201610869565b600080516020611e2c8339815191526000527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0601f830160051c810160208410610930575b601f830160051c820181106109245750506102ae565b6000815560010161090e565b508061090e565b68ffffffffffffffffff1984166801000000000000000117600080516020611f6c8339815191525561026d565b60405163f92ee8a960e01b8152600490fd5b9050158661023d565b303b159150610235565b604086901c60ff1615915061022b565b346101525760e0366003190112610152576109b26116a5565b6109ba6116bb565b60443590606435926084359360ff8516850361015257804211610af65760018060a01b039081831695866000527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb006020526040600020908154916001830190556040519260208401927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98452896040860152858816606086015288608086015260a085015260c084015260c0835260e08301918383106001600160401b0384111761061a57610ac593610abc93604052519020610a95611a3e565b906040519161190160f01b83526002830152602282015260c43591604260a4359220611ab3565b90929192611b39565b16848103610ad8575061015093506119e0565b60449085604051916325c0072360e11b835260048301526024820152fd5b6024906040519063313c898160e11b82526004820152fd5b3461015257600036600319011261015257610b54604051610b2e816116d1565b60058152640352e302e360dc1b6020820152604051918291602083526020830190611665565b0390f35b3461015257600036600319011261015257602060ff60005416604051908152f35b3461015257604036600319011261015257610b9f610b956116a5565b6024359033611864565b602060405160018152f35b3461015257604036600319011261015257610bc36116a5565b602435610bce611927565b6001600160a01b038216908115610ca25781600052600080516020611e4c8339815191528060205260406000205493828510610c715750817f1af5163f80e79b5e554f61e1d052084d3a3fe1166e42a265798c4e2ddce8ffa2928560209386600052845203604060002055600080516020611ecc833981519152818154039055600084600080516020611f4c83398151915284604051858152a3604051908152a2005b60405163391434e360e21b81526001600160a01b039190911660048201526024810185905260448101839052606490fd5b604051634b637e8f60e11b815260006004820152602490fd5b3461015257600036600319011261015257604051600080516020611e8c8339815191528054826000610cec8361177d565b9283835260209460019186600182169182600014610d6f575050600114610d30575b5050610d1c925003836116ec565b610b54604051928284938452830190611665565b85925060005281600020906000915b858310610d57575050610d1c93508201018580610d0e565b80548389018501528794508693909201918101610d3f565b9250935050610d1c94915060ff191682840152151560051b8201018580610d0e565b3461015257600036600319011261015257600080516020611eac833981519152546040516001600160a01b039091168152602090f35b3461015257600036600319011261015257600080516020611f0c83398151915254158061102e575b15610ff157604051600090600080516020611e6c83398151915280549282610e168561177d565b9182825260209360019685600182169182600014610fd1575050600114610f90575b50610e45925003836116ec565b60405190600082600080516020611eec83398151915291825492610e688461177d565b9384845285600182169182600014610f70575050600114610f2f575b50610e91925003836116ec565b60405190808201928284106001600160401b0385111761061a5790849281610ee888948760405260008452610eda60405197600f60f81b895260e0858a015260e0890190611665565b908782036040890152611665565b91466060870152306080870152600060a087015285830360c0870152519182815201949160005b828110610f1c5785870386f35b8351875295810195928101928401610f0f565b915050600052828280600020876000915b858310610f57575050610e91935082010187610e84565b8091929450548385890101520191018390878693610f40565b60ff191685820152610e9195151560051b8501019250899150610e849050565b915050600052828280600020866000915b858310610fb8575050610e45935082010186610e38565b8091929450548385890101520191018390868693610fa1565b60ff191685820152610e4595151560051b8501019250889150610e389050565b60405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b6044820152606490fd5b50600080516020611f8c8339815191525415610def565b34610152576020366003190112610152576001600160a01b036110666116a5565b166000527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb006020526020604060002054604051908152f35b34610152576000366003190112610152576110b7611927565b600080516020611eac83398151915280546001600160a01b031981169091556000906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b34610152576020366003190112610152576001600160a01b036111296116a5565b16600052600080516020611e4c8339815191526020526020604060002054604051908152f35b3461015257600036600319011261015257610b5460405161116f816116d1565b6006815265076312e302e360d41b6020820152604051918291602083526020830190611665565b34610152576000366003190112610152577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031630036111ef576020604051600080516020611f2c8339815191528152f35b60405163703e46dd60e11b8152600490fd5b6040366003190112610152576112156116a5565b6024356001600160401b038111610152573660238201121561015257611245903690602481600401359101611728565b906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081163081149081156113ef575b506111ef57611289611927565b6040516352d1902d60e01b8152908216916020918281600481875afa600091816113c0575b506112cc57604051634c9c8ce360e01b815260048101859052602490fd5b928493600080516020611f2c833981519152908181036113a85750823b1561138f5780546001600160a01b03191682179055604051907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a28351156113755750600080848461015096519101845af4903d1561136c573d61134f8161170d565b9061135d60405192836116ec565b8152600081943d92013e611dc8565b60609250611dc8565b925050503461138057005b63b398979f60e01b8152600490fd5b604051634c9c8ce360e01b815260048101839052602490fd5b60249060405190632a87526960e21b82526004820152fd5b9091508381813d83116113e8575b6113d881836116ec565b81010312610152575190866112ae565b503d6113ce565b905081600080516020611f2c833981519152541614158461127c565b34610152576040366003190112610152576114246116a5565b7fb9144c96c86541f6fa89c9f2f02495cccf4b08cd6643e26d34ee00aa586558a8602060243592611453611927565b61145d8482611960565b6040519384526001600160a01b031692a2005b3461015257600036600319011261015257602061148b611a3e565b604051908152f35b34610152576060366003190112610152576114ac6116a5565b6114b46116bb565b604435906114c1836117b7565b336000526020526040600020549260001984106114e3575b610b9f9350611864565b828410611552576001600160a01b038116156115395733156115205782610b9f9461150d836117b7565b33600052602052036040600020556114d9565b604051634a1406b160e11b815260006004820152602490fd5b60405163e602df0560e01b815260006004820152602490fd5b604051637dc7a0d960e11b81523360048201526024810185905260448101849052606490fd5b34610152576000366003190112610152576020600080516020611ecc83398151915254604051908152f35b3461015257604036600319011261015257610b9f6115bf6116a5565b60243590336119e0565b3461015257600036600319011261015257600080516020611e2c83398151915280548260006115f78361177d565b9283835260209460019186600182169182600014610d6f575050600114611626575050610d1c925003836116ec565b85925060005281600020906000915b85831061164d575050610d1c93508201018580610d0e565b80548389018501528794508693909201918101611635565b919082519283825260005b848110611691575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201611670565b600435906001600160a01b038216820361015257565b602435906001600160a01b038216820361015257565b604081019081106001600160401b0382111761061a57604052565b90601f801991011681019081106001600160401b0382111761061a57604052565b6001600160401b03811161061a57601f01601f191660200190565b9291926117348261170d565b9161174260405193846116ec565b829481845281830111610152578281602093846000960137010152565b9080601f830112156101525781602061177a93359101611728565b90565b90600182811c921680156117ad575b602083101461179757565b634e487b7160e01b600052602260045260246000fd5b91607f169161178c565b6001600160a01b031660009081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020526040902090565b6001600160a01b0390811690811561184b57600080516020611eac83398151915280546001600160a01b031981168417909155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b604051631e4fbdf760e01b815260006004820152602490fd5b916001600160a01b03808416928315610ca2571692831561190e57600090838252600080516020611e4c833981519152806020526040832054918483106118db57508284600080516020611f4c833981519152959360409388602097528652038282205586815220818154019055604051908152a3565b60405163391434e360e21b81526001600160a01b0391909116600482015260248101929092525060448101839052606490fd5b60405163ec442f0560e01b815260006004820152602490fd5b600080516020611eac833981519152546001600160a01b0316330361194857565b60405163118cdaa760e01b8152336004820152602490fd5b6001600160a01b031690811561190e57600080516020611ecc8339815191528054908282018092116119ca57600092600080516020611f4c8339815191529260209255848452600080516020611e4c833981519152825260408420818154019055604051908152a3565b634e487b7160e01b600052601160045260246000fd5b916001600160a01b038084169283156115395716928315611520577f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591611a286020926117b7565b85600052825280604060002055604051908152a3565b611a46611bed565b611a4e611ced565b6040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a0815260c081018181106001600160401b0382111761061a5760405251902090565b91906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038411611b2d57926020929160ff608095604051948552168484015260408301526060820152600092839182805260015afa15611b215780516001600160a01b03811615611b1857918190565b50809160019190565b604051903d90823e3d90fd5b50505060009160039190565b6004811015611ba85780611b4b575050565b60018103611b655760405163f645eedf60e01b8152600490fd5b60028103611b865760405163fce698f760e01b815260048101839052602490fd5b600314611b905750565b602490604051906335e2f38360e21b82526004820152fd5b634e487b7160e01b600052602160045260246000fd5b60ff600080516020611f6c8339815191525460401c1615611bdb57565b604051631afcd79f60e31b8152600490fd5b604051600090600080516020611e6c8339815191529181835491611c108361177d565b80835260209384840196600191600181169081600014611ccd5750600114611c8e575b505050611c42925003826116ec565b51908115611c4e572090565b5050600080516020611f0c833981519152548015611c695790565b507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47090565b600090815285812095935091905b818310611cb5575050611c429350820101388080611c33565b85548784018501529485019486945091830191611c9c565b92505050611c4294925060ff19168652151560051b820101388080611c33565b604051600090600080516020611eec8339815191529181835491611d108361177d565b80835260209384840196600191600181169081600014611da85750600114611d69575b505050611d42925003826116ec565b51908115611d4e572090565b5050600080516020611f8c833981519152548015611c695790565b600090815285812095935091905b818310611d90575050611d429350820101388080611d33565b85548784018501529485019486945091830191611d77565b92505050611d4294925060ff19168652151560051b820101388080611d33565b90611def5750805115611ddd57602081519101fd5b60405163d6bda27560e01b8152600490fd5b81511580611e22575b611e00575090565b604051639996b31560e01b81526001600160a01b039091166004820152602490fd5b50803b15611df856fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0352c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10252c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace049016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930052c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d103a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3eff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d101a26469706673582212200f36ce6031bc6788cb8f446035d15fdd277e1e3be043c194596d8e5009fffea464736f6c63430008160033",
850
+ "deployedBytecode": "0x608080604052600436101561001357600080fd5b60003560e01c90816306fdde03146115c957508063095ea7b3146115a357806318160ddd1461157857806323b872dd14611493578063313ce56714610b585780633644e5151461147057806340c10f191461140b5780634f1ef2861461120157806352d1902d1461119657806354fd4d501461114f57806370a0823114611108578063715018a61461109e5780637ecebe001461104557806384b0196e14610dc75780638da5cb5b14610d9157806395d89b4114610cbb5780639dc29fac14610baa578063a9059cbb14610b79578063ace28fa514610b58578063ad3cb1cc14610b0e578063d505accf14610999578063d72bdc53146101a0578063dd62ed3e146101575763f2fde38b1461012757600080fd5b34610152576020366003190112610152576101506101436116a5565b61014b611927565b6117f0565b005b600080fd5b34610152576040366003190112610152576101706116a5565b61018161017b6116bb565b916117b7565b9060018060a01b03166000526020526020604060002054604051908152f35b346101525760a0366003190112610152576101b96116a5565b6024356001600160401b038111610152576101d890369060040161175f565b906044356001600160401b038111610152576101f890369060040161175f565b906064359260ff8416840361015257600080516020611f6c83398151915254926001600160401b03841680159081610989575b600114908161097f575b159081610976575b506109645760016001600160401b0319851617600080516020611f6c8339815191525560ff8460401c1615610937575b610275611bbe565b61027d611bbe565b81516001600160401b03811161061a576102a5600080516020611e2c8339815191525461177d565b601f81116108c9575b50806020601f82116001146108495760009161083e575b508160011b916000199060031b1c191617600080516020611e2c833981519152555b8051906001600160401b03821161061a578190610312600080516020611e8c8339815191525461177d565b601f81116107c4575b50602090601f831160011461074257600092610737575b50508160011b916000199060031b1c191617600080516020611e8c833981519152555b61035d611bbe565b6040519061036a826116d1565b60018252603160f81b6020830152610380611bbe565b8051906001600160401b03821161061a5781906103ab600080516020611e6c8339815191525461177d565b601f81116106bd575b50602090601f831160011461063b57600092610630575b50508160011b916000199060031b1c191617600080516020611e6c833981519152555b80516001600160401b03811161061a57600080516020611eec83398151915291610418835461177d565b601f81116105d2575b50602090601f831160011461056657918060ff97939288959360009261055b575b50508160011b916000199060031b1c19161790555b6000600080516020611f0c833981519152556000600080516020611f8c83398151915255610483611bbe565b61048b611bbe565b610494836117f0565b61049c611bbe565b168319600054161760005560843561050f575b5060401c16156104bb57005b60ff60401b19600080516020611f6c8339815191525416600080516020611f6c833981519152557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b61051b60843582611960565b60405160843581526001600160a01b03909116907fb9144c96c86541f6fa89c9f2f02495cccf4b08cd6643e26d34ee00aa586558a890602090a2826104af565b015190508880610442565b90601f1983169184600052816000209260005b8181106105ba575092600192859260ff9a968b9896106105a1575b505050811b019055610457565b015160001960f88460031b161c19169055888080610594565b92936020600181928786015181550195019301610579565b836000526020600020601f840160051c81019160208510610610575b601f0160051c01905b8181106106045750610421565b600081556001016105f7565b90915081906105ee565b634e487b7160e01b600052604160045260246000fd5b0151905086806103cb565b600080516020611e6c83398151915260009081528281209350601f198516905b8181106106a5575090846001959493921061068c575b505050811b01600080516020611e6c833981519152556103ee565b015160001960f88460031b161c19169055868080610671565b9293602060018192878601518155019501930161065b565b600080516020611e6c8339815191526000529091507f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d601f840160051c810160208510610730575b90849392915b601f830160051c820181106107215750506103b4565b6000815585945060010161070b565b5080610705565b015190508680610332565b600080516020611e8c83398151915260009081528281209350601f198516905b8181106107ac5750908460019594939210610793575b505050811b01600080516020611e8c83398151915255610355565b015160001960f88460031b161c19169055868080610778565b92936020600181928786015181550195019301610762565b600080516020611e8c8339815191526000529091507f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa601f840160051c810160208510610837575b90849392915b601f830160051c8201811061082857505061031b565b60008155859450600101610812565b508061080c565b9050830151876102c5565b600080516020611e2c83398151915260009081528181209250601f198416905b8181106108b157509083600194939210610898575b5050811b01600080516020611e2c833981519152556102e7565b85015160001960f88460031b161c19169055878061087e565b9192602060018192868a015181550194019201610869565b600080516020611e2c8339815191526000527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0601f830160051c810160208410610930575b601f830160051c820181106109245750506102ae565b6000815560010161090e565b508061090e565b68ffffffffffffffffff1984166801000000000000000117600080516020611f6c8339815191525561026d565b60405163f92ee8a960e01b8152600490fd5b9050158661023d565b303b159150610235565b604086901c60ff1615915061022b565b346101525760e0366003190112610152576109b26116a5565b6109ba6116bb565b60443590606435926084359360ff8516850361015257804211610af65760018060a01b039081831695866000527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb006020526040600020908154916001830190556040519260208401927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98452896040860152858816606086015288608086015260a085015260c084015260c0835260e08301918383106001600160401b0384111761061a57610ac593610abc93604052519020610a95611a3e565b906040519161190160f01b83526002830152602282015260c43591604260a4359220611ab3565b90929192611b39565b16848103610ad8575061015093506119e0565b60449085604051916325c0072360e11b835260048301526024820152fd5b6024906040519063313c898160e11b82526004820152fd5b3461015257600036600319011261015257610b54604051610b2e816116d1565b60058152640352e302e360dc1b6020820152604051918291602083526020830190611665565b0390f35b3461015257600036600319011261015257602060ff60005416604051908152f35b3461015257604036600319011261015257610b9f610b956116a5565b6024359033611864565b602060405160018152f35b3461015257604036600319011261015257610bc36116a5565b602435610bce611927565b6001600160a01b038216908115610ca25781600052600080516020611e4c8339815191528060205260406000205493828510610c715750817f1af5163f80e79b5e554f61e1d052084d3a3fe1166e42a265798c4e2ddce8ffa2928560209386600052845203604060002055600080516020611ecc833981519152818154039055600084600080516020611f4c83398151915284604051858152a3604051908152a2005b60405163391434e360e21b81526001600160a01b039190911660048201526024810185905260448101839052606490fd5b604051634b637e8f60e11b815260006004820152602490fd5b3461015257600036600319011261015257604051600080516020611e8c8339815191528054826000610cec8361177d565b9283835260209460019186600182169182600014610d6f575050600114610d30575b5050610d1c925003836116ec565b610b54604051928284938452830190611665565b85925060005281600020906000915b858310610d57575050610d1c93508201018580610d0e565b80548389018501528794508693909201918101610d3f565b9250935050610d1c94915060ff191682840152151560051b8201018580610d0e565b3461015257600036600319011261015257600080516020611eac833981519152546040516001600160a01b039091168152602090f35b3461015257600036600319011261015257600080516020611f0c83398151915254158061102e575b15610ff157604051600090600080516020611e6c83398151915280549282610e168561177d565b9182825260209360019685600182169182600014610fd1575050600114610f90575b50610e45925003836116ec565b60405190600082600080516020611eec83398151915291825492610e688461177d565b9384845285600182169182600014610f70575050600114610f2f575b50610e91925003836116ec565b60405190808201928284106001600160401b0385111761061a5790849281610ee888948760405260008452610eda60405197600f60f81b895260e0858a015260e0890190611665565b908782036040890152611665565b91466060870152306080870152600060a087015285830360c0870152519182815201949160005b828110610f1c5785870386f35b8351875295810195928101928401610f0f565b915050600052828280600020876000915b858310610f57575050610e91935082010187610e84565b8091929450548385890101520191018390878693610f40565b60ff191685820152610e9195151560051b8501019250899150610e849050565b915050600052828280600020866000915b858310610fb8575050610e45935082010186610e38565b8091929450548385890101520191018390868693610fa1565b60ff191685820152610e4595151560051b8501019250889150610e389050565b60405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b6044820152606490fd5b50600080516020611f8c8339815191525415610def565b34610152576020366003190112610152576001600160a01b036110666116a5565b166000527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb006020526020604060002054604051908152f35b34610152576000366003190112610152576110b7611927565b600080516020611eac83398151915280546001600160a01b031981169091556000906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b34610152576020366003190112610152576001600160a01b036111296116a5565b16600052600080516020611e4c8339815191526020526020604060002054604051908152f35b3461015257600036600319011261015257610b5460405161116f816116d1565b6006815265076312e302e360d41b6020820152604051918291602083526020830190611665565b34610152576000366003190112610152577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031630036111ef576020604051600080516020611f2c8339815191528152f35b60405163703e46dd60e11b8152600490fd5b6040366003190112610152576112156116a5565b6024356001600160401b038111610152573660238201121561015257611245903690602481600401359101611728565b906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081163081149081156113ef575b506111ef57611289611927565b6040516352d1902d60e01b8152908216916020918281600481875afa600091816113c0575b506112cc57604051634c9c8ce360e01b815260048101859052602490fd5b928493600080516020611f2c833981519152908181036113a85750823b1561138f5780546001600160a01b03191682179055604051907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a28351156113755750600080848461015096519101845af4903d1561136c573d61134f8161170d565b9061135d60405192836116ec565b8152600081943d92013e611dc8565b60609250611dc8565b925050503461138057005b63b398979f60e01b8152600490fd5b604051634c9c8ce360e01b815260048101839052602490fd5b60249060405190632a87526960e21b82526004820152fd5b9091508381813d83116113e8575b6113d881836116ec565b81010312610152575190866112ae565b503d6113ce565b905081600080516020611f2c833981519152541614158461127c565b34610152576040366003190112610152576114246116a5565b7fb9144c96c86541f6fa89c9f2f02495cccf4b08cd6643e26d34ee00aa586558a8602060243592611453611927565b61145d8482611960565b6040519384526001600160a01b031692a2005b3461015257600036600319011261015257602061148b611a3e565b604051908152f35b34610152576060366003190112610152576114ac6116a5565b6114b46116bb565b604435906114c1836117b7565b336000526020526040600020549260001984106114e3575b610b9f9350611864565b828410611552576001600160a01b038116156115395733156115205782610b9f9461150d836117b7565b33600052602052036040600020556114d9565b604051634a1406b160e11b815260006004820152602490fd5b60405163e602df0560e01b815260006004820152602490fd5b604051637dc7a0d960e11b81523360048201526024810185905260448101849052606490fd5b34610152576000366003190112610152576020600080516020611ecc83398151915254604051908152f35b3461015257604036600319011261015257610b9f6115bf6116a5565b60243590336119e0565b3461015257600036600319011261015257600080516020611e2c83398151915280548260006115f78361177d565b9283835260209460019186600182169182600014610d6f575050600114611626575050610d1c925003836116ec565b85925060005281600020906000915b85831061164d575050610d1c93508201018580610d0e565b80548389018501528794508693909201918101611635565b919082519283825260005b848110611691575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201611670565b600435906001600160a01b038216820361015257565b602435906001600160a01b038216820361015257565b604081019081106001600160401b0382111761061a57604052565b90601f801991011681019081106001600160401b0382111761061a57604052565b6001600160401b03811161061a57601f01601f191660200190565b9291926117348261170d565b9161174260405193846116ec565b829481845281830111610152578281602093846000960137010152565b9080601f830112156101525781602061177a93359101611728565b90565b90600182811c921680156117ad575b602083101461179757565b634e487b7160e01b600052602260045260246000fd5b91607f169161178c565b6001600160a01b031660009081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020526040902090565b6001600160a01b0390811690811561184b57600080516020611eac83398151915280546001600160a01b031981168417909155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b604051631e4fbdf760e01b815260006004820152602490fd5b916001600160a01b03808416928315610ca2571692831561190e57600090838252600080516020611e4c833981519152806020526040832054918483106118db57508284600080516020611f4c833981519152959360409388602097528652038282205586815220818154019055604051908152a3565b60405163391434e360e21b81526001600160a01b0391909116600482015260248101929092525060448101839052606490fd5b60405163ec442f0560e01b815260006004820152602490fd5b600080516020611eac833981519152546001600160a01b0316330361194857565b60405163118cdaa760e01b8152336004820152602490fd5b6001600160a01b031690811561190e57600080516020611ecc8339815191528054908282018092116119ca57600092600080516020611f4c8339815191529260209255848452600080516020611e4c833981519152825260408420818154019055604051908152a3565b634e487b7160e01b600052601160045260246000fd5b916001600160a01b038084169283156115395716928315611520577f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591611a286020926117b7565b85600052825280604060002055604051908152a3565b611a46611bed565b611a4e611ced565b6040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a0815260c081018181106001600160401b0382111761061a5760405251902090565b91906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038411611b2d57926020929160ff608095604051948552168484015260408301526060820152600092839182805260015afa15611b215780516001600160a01b03811615611b1857918190565b50809160019190565b604051903d90823e3d90fd5b50505060009160039190565b6004811015611ba85780611b4b575050565b60018103611b655760405163f645eedf60e01b8152600490fd5b60028103611b865760405163fce698f760e01b815260048101839052602490fd5b600314611b905750565b602490604051906335e2f38360e21b82526004820152fd5b634e487b7160e01b600052602160045260246000fd5b60ff600080516020611f6c8339815191525460401c1615611bdb57565b604051631afcd79f60e31b8152600490fd5b604051600090600080516020611e6c8339815191529181835491611c108361177d565b80835260209384840196600191600181169081600014611ccd5750600114611c8e575b505050611c42925003826116ec565b51908115611c4e572090565b5050600080516020611f0c833981519152548015611c695790565b507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47090565b600090815285812095935091905b818310611cb5575050611c429350820101388080611c33565b85548784018501529485019486945091830191611c9c565b92505050611c4294925060ff19168652151560051b820101388080611c33565b604051600090600080516020611eec8339815191529181835491611d108361177d565b80835260209384840196600191600181169081600014611da85750600114611d69575b505050611d42925003826116ec565b51908115611d4e572090565b5050600080516020611f8c833981519152548015611c695790565b600090815285812095935091905b818310611d90575050611d429350820101388080611d33565b85548784018501529485019486945091830191611d77565b92505050611d4294925060ff19168652151560051b820101388080611d33565b90611def5750805115611ddd57602081519101fd5b60405163d6bda27560e01b8152600490fd5b81511580611e22575b611e00575090565b604051639996b31560e01b81526001600160a01b039091166004820152602490fd5b50803b15611df856fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0352c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10252c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace049016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930052c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d103a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3eff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d101a26469706673582212200f36ce6031bc6788cb8f446035d15fdd277e1e3be043c194596d8e5009fffea464736f6c63430008160033",
657
851
  "linkReferences": {},
658
852
  "deployedLinkReferences": {}
659
853
  }