@opcat-labs/cat-sdk 1.0.2 → 1.0.3
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/artifacts/.templates/cat20/cat20Guard.scrypt.map +1 -1
- package/artifacts/.templates/cat20/cat20Guard.scrypt.tpl +6 -6
- package/artifacts/.templates/cat20/cat20GuardStateLib.scrypt.map +1 -1
- package/artifacts/.templates/cat20/cat20GuardStateLib.scrypt.tpl +3 -3
- package/artifacts/.templates/cat20/types.scrypt.map +1 -1
- package/artifacts/.templates/cat20/types.scrypt.tpl +1 -1
- package/artifacts/cat20/cat20.json +18 -18
- package/artifacts/cat20/cat20.scrypt +9 -9
- package/artifacts/cat20/cat20Guard.json +25 -25
- package/artifacts/cat20/cat20Guard.scrypt +19 -19
- package/artifacts/cat20/cat20GuardStateLib.json +11 -11
- package/artifacts/cat20/cat20GuardStateLib.scrypt +8 -8
- package/artifacts/cat20/cat20StateLib.json +13 -13
- package/artifacts/cat20/cat20StateLib.scrypt +6 -6
- package/artifacts/cat20/minters/cat20ClosedMinter.json +15 -15
- package/artifacts/cat20/minters/cat20ClosedMinter.scrypt +11 -11
- package/artifacts/cat20/minters/cat20ClosedMinterMetadata.json +11 -11
- package/artifacts/cat20/minters/cat20ClosedMinterMetadata.scrypt +3 -3
- package/artifacts/cat20/minters/cat20OpenMinter.json +18 -18
- package/artifacts/cat20/minters/cat20OpenMinter.scrypt +10 -10
- package/artifacts/cat20/minters/cat20OpenMinterMetadata.json +11 -11
- package/artifacts/cat20/minters/cat20OpenMinterMetadata.scrypt +3 -3
- package/artifacts/cat20/types.json +7 -7
- package/artifacts/cat20/types.scrypt +7 -7
- package/artifacts/cat20Incinerator.json +13 -13
- package/artifacts/cat20Incinerator.scrypt +3 -3
- package/artifacts/constants.json +2 -2
- package/artifacts/constants.scrypt +1 -1
- package/artifacts/counter.json +4 -4
- package/artifacts/counter.scrypt +8 -8
- package/artifacts/p2pkh.json +1 -1
- package/artifacts/p2pkh.scrypt +1 -1
- package/artifacts/types.json +1 -1
- package/artifacts/types.scrypt +1 -1
- package/artifacts/utils/ownerUtils.json +2 -2
- package/artifacts/utils/ownerUtils.scrypt +3 -3
- package/artifacts/utils/safeMath.json +2 -2
- package/artifacts/utils/safeMath.scrypt +1 -1
- package/dist/artifacts/.templates/cat20/cat20Guard.scrypt.map +1 -1
- package/dist/artifacts/.templates/cat20/cat20Guard.scrypt.tpl +6 -6
- package/dist/artifacts/.templates/cat20/cat20GuardStateLib.scrypt.map +1 -1
- package/dist/artifacts/.templates/cat20/cat20GuardStateLib.scrypt.tpl +3 -3
- package/dist/artifacts/.templates/cat20/types.scrypt.map +1 -1
- package/dist/artifacts/.templates/cat20/types.scrypt.tpl +1 -1
- package/dist/artifacts/cat20/cat20.json +18 -18
- package/dist/artifacts/cat20/cat20.scrypt +9 -9
- package/dist/artifacts/cat20/cat20Guard.json +25 -25
- package/dist/artifacts/cat20/cat20Guard.scrypt +19 -19
- package/dist/artifacts/cat20/cat20GuardStateLib.json +11 -11
- package/dist/artifacts/cat20/cat20GuardStateLib.scrypt +8 -8
- package/dist/artifacts/cat20/cat20StateLib.json +13 -13
- package/dist/artifacts/cat20/cat20StateLib.scrypt +6 -6
- package/dist/artifacts/cat20/minters/cat20ClosedMinter.json +15 -15
- package/dist/artifacts/cat20/minters/cat20ClosedMinter.scrypt +11 -11
- package/dist/artifacts/cat20/minters/cat20ClosedMinterMetadata.json +11 -11
- package/dist/artifacts/cat20/minters/cat20ClosedMinterMetadata.scrypt +3 -3
- package/dist/artifacts/cat20/minters/cat20OpenMinter.json +18 -18
- package/dist/artifacts/cat20/minters/cat20OpenMinter.scrypt +10 -10
- package/dist/artifacts/cat20/minters/cat20OpenMinterMetadata.json +11 -11
- package/dist/artifacts/cat20/minters/cat20OpenMinterMetadata.scrypt +3 -3
- package/dist/artifacts/cat20/types.json +7 -7
- package/dist/artifacts/cat20/types.scrypt +7 -7
- package/dist/artifacts/cat20Incinerator.json +13 -13
- package/dist/artifacts/cat20Incinerator.scrypt +3 -3
- package/dist/artifacts/constants.json +2 -2
- package/dist/artifacts/constants.scrypt +1 -1
- package/dist/artifacts/counter.json +4 -4
- package/dist/artifacts/counter.scrypt +8 -8
- package/dist/artifacts/p2pkh.json +1 -1
- package/dist/artifacts/p2pkh.scrypt +1 -1
- package/dist/artifacts/types.json +1 -1
- package/dist/artifacts/types.scrypt +1 -1
- package/dist/artifacts/utils/ownerUtils.json +2 -2
- package/dist/artifacts/utils/ownerUtils.scrypt +3 -3
- package/dist/artifacts/utils/safeMath.json +2 -2
- package/dist/artifacts/utils/safeMath.scrypt +1 -1
- package/dist/cjs/contracts/constants.js +2 -2
- package/dist/cjs/contracts/constants.js.map +1 -1
- package/dist/cjs/features/cat20/send/singleSend.js +8 -8
- package/dist/cjs/features/cat20/send/singleSend.js.map +1 -1
- package/dist/esm/contracts/constants.js +2 -2
- package/dist/esm/contracts/constants.js.map +1 -1
- package/dist/esm/features/cat20/send/singleSend.js +8 -8
- package/dist/esm/features/cat20/send/singleSend.js.map +1 -1
- package/dist/types/contracts/constants.d.ts +2 -2
- package/dist/types/contracts/constants.d.ts.map +1 -1
- package/dist/types/features/cat20/send/singleSend.d.ts +2 -2
- package/dist/types/features/cat20/send/singleSend.d.ts.map +1 -1
- package/dist/types/utils/index.d.ts +1 -1
- package/dist/types/utils/index.d.ts.map +1 -1
- package/package.json +76 -76
- package/scrypt.index.json +3 -3
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 10,
|
|
3
3
|
"compilerVersion": "1.21.0+commit.2ada378",
|
|
4
|
-
"contract": "
|
|
5
|
-
"md5": "
|
|
4
|
+
"contract": "_opcat_labs_cat_sdk_1_0_3__rs__CAT20Guard",
|
|
5
|
+
"md5": "1900498bf7fedee535662fdc702c431a",
|
|
6
6
|
"structs": [
|
|
7
7
|
{
|
|
8
|
-
"name": "
|
|
8
|
+
"name": "_opcat_labs_cat_sdk_1_0_3__rs__CAT20GuardConstState",
|
|
9
9
|
"params": [
|
|
10
10
|
{
|
|
11
11
|
"name": "tokenScriptHashes",
|
|
@@ -21,13 +21,13 @@
|
|
|
21
21
|
},
|
|
22
22
|
{
|
|
23
23
|
"name": "tokenScriptIndexes",
|
|
24
|
-
"type": "int[
|
|
24
|
+
"type": "int[10]"
|
|
25
25
|
}
|
|
26
26
|
],
|
|
27
27
|
"genericTypes": []
|
|
28
28
|
},
|
|
29
29
|
{
|
|
30
|
-
"name": "
|
|
30
|
+
"name": "_opcat_labs_cat_sdk_1_0_3__rs__CAT20State",
|
|
31
31
|
"params": [
|
|
32
32
|
{
|
|
33
33
|
"name": "tag",
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"genericTypes": []
|
|
46
46
|
},
|
|
47
47
|
{
|
|
48
|
-
"name": "
|
|
48
|
+
"name": "_opcat_labs_cat_sdk_1_0_3__rs__CAT20ClosedMinterState",
|
|
49
49
|
"params": [
|
|
50
50
|
{
|
|
51
51
|
"name": "tag",
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
"genericTypes": []
|
|
60
60
|
},
|
|
61
61
|
{
|
|
62
|
-
"name": "
|
|
62
|
+
"name": "_opcat_labs_cat_sdk_1_0_3__rs__ClosedMinterCAT20Meta",
|
|
63
63
|
"params": [
|
|
64
64
|
{
|
|
65
65
|
"name": "tag",
|
|
@@ -85,7 +85,7 @@
|
|
|
85
85
|
"genericTypes": []
|
|
86
86
|
},
|
|
87
87
|
{
|
|
88
|
-
"name": "
|
|
88
|
+
"name": "_opcat_labs_cat_sdk_1_0_3__rs__OpenMinterCAT20Meta",
|
|
89
89
|
"params": [
|
|
90
90
|
{
|
|
91
91
|
"name": "tag",
|
|
@@ -127,7 +127,7 @@
|
|
|
127
127
|
"genericTypes": []
|
|
128
128
|
},
|
|
129
129
|
{
|
|
130
|
-
"name": "
|
|
130
|
+
"name": "_opcat_labs_cat_sdk_1_0_3__rs__CAT20OpenMinterState",
|
|
131
131
|
"params": [
|
|
132
132
|
{
|
|
133
133
|
"name": "tag",
|
|
@@ -321,7 +321,7 @@
|
|
|
321
321
|
],
|
|
322
322
|
"library": [
|
|
323
323
|
{
|
|
324
|
-
"name": "
|
|
324
|
+
"name": "_opcat_labs_cat_sdk_1_0_3__rs__OwnerUtils",
|
|
325
325
|
"params": [],
|
|
326
326
|
"properties": [],
|
|
327
327
|
"genericTypes": []
|
|
@@ -339,20 +339,20 @@
|
|
|
339
339
|
"genericTypes": []
|
|
340
340
|
},
|
|
341
341
|
{
|
|
342
|
-
"name": "
|
|
342
|
+
"name": "_opcat_labs_cat_sdk_1_0_3__rs__SafeMath",
|
|
343
343
|
"params": [],
|
|
344
344
|
"properties": [],
|
|
345
345
|
"genericTypes": []
|
|
346
346
|
},
|
|
347
347
|
{
|
|
348
|
-
"name": "
|
|
348
|
+
"name": "_opcat_labs_cat_sdk_1_0_3__rs__CAT20GuardStateLib",
|
|
349
349
|
"params": [],
|
|
350
350
|
"properties": [],
|
|
351
351
|
"genericTypes": [],
|
|
352
|
-
"stateType": "
|
|
352
|
+
"stateType": "_opcat_labs_cat_sdk_1_0_3__rs__CAT20GuardConstState"
|
|
353
353
|
},
|
|
354
354
|
{
|
|
355
|
-
"name": "
|
|
355
|
+
"name": "_opcat_labs_cat_sdk_1_0_3__rs__ConstantsLib",
|
|
356
356
|
"params": [],
|
|
357
357
|
"properties": [],
|
|
358
358
|
"genericTypes": []
|
|
@@ -364,11 +364,11 @@
|
|
|
364
364
|
"genericTypes": []
|
|
365
365
|
},
|
|
366
366
|
{
|
|
367
|
-
"name": "
|
|
367
|
+
"name": "_opcat_labs_cat_sdk_1_0_3__rs__CAT20StateLib",
|
|
368
368
|
"params": [],
|
|
369
369
|
"properties": [],
|
|
370
370
|
"genericTypes": [],
|
|
371
|
-
"stateType": "
|
|
371
|
+
"stateType": "_opcat_labs_cat_sdk_1_0_3__rs__CAT20State"
|
|
372
372
|
},
|
|
373
373
|
{
|
|
374
374
|
"name": "_opcat_labs_scrypt_ts_opcat_1_0_4__rs__StdUtils",
|
|
@@ -386,27 +386,27 @@
|
|
|
386
386
|
"params": [
|
|
387
387
|
{
|
|
388
388
|
"name": "nextStateHashes",
|
|
389
|
-
"type": "bytes[
|
|
389
|
+
"type": "bytes[10]"
|
|
390
390
|
},
|
|
391
391
|
{
|
|
392
392
|
"name": "ownerAddrOrScriptHashes",
|
|
393
|
-
"type": "bytes[
|
|
393
|
+
"type": "bytes[10]"
|
|
394
394
|
},
|
|
395
395
|
{
|
|
396
396
|
"name": "outputTokens",
|
|
397
|
-
"type": "int[
|
|
397
|
+
"type": "int[10]"
|
|
398
398
|
},
|
|
399
399
|
{
|
|
400
400
|
"name": "tokenScriptHashIndexes",
|
|
401
|
-
"type": "int[
|
|
401
|
+
"type": "int[10]"
|
|
402
402
|
},
|
|
403
403
|
{
|
|
404
404
|
"name": "outputSatoshis",
|
|
405
|
-
"type": "int[
|
|
405
|
+
"type": "int[10]"
|
|
406
406
|
},
|
|
407
407
|
{
|
|
408
408
|
"name": "cat20States",
|
|
409
|
-
"type": "
|
|
409
|
+
"type": "_opcat_labs_cat_sdk_1_0_3__rs__CAT20State[10]"
|
|
410
410
|
},
|
|
411
411
|
{
|
|
412
412
|
"name": "outputCount",
|
|
@@ -418,7 +418,7 @@
|
|
|
418
418
|
},
|
|
419
419
|
{
|
|
420
420
|
"name": "__scrypt_ts_curState",
|
|
421
|
-
"type": "
|
|
421
|
+
"type": "_opcat_labs_cat_sdk_1_0_3__rs__CAT20GuardConstState"
|
|
422
422
|
},
|
|
423
423
|
{
|
|
424
424
|
"name": "__scrypt_ts_spentAmounts",
|
|
@@ -440,8 +440,8 @@
|
|
|
440
440
|
}
|
|
441
441
|
],
|
|
442
442
|
"stateProps": [],
|
|
443
|
-
"stateType": "
|
|
443
|
+
"stateType": "_opcat_labs_cat_sdk_1_0_3__rs__CAT20GuardConstState",
|
|
444
444
|
"buildType": "release",
|
|
445
445
|
"file": "..\\cat20Guard.scrypt",
|
|
446
|
-
"hex": "512097dfd76851bf465e8f715593b217714858bbe9570ff3bd5e33840a34e20ff0262102ba79df5f8ae7604a9830f03c7933028186aede0675a16f025dc4f8be8eec0382201008ce7480da41702918d1ec8e6849ba32b4d65b1e40dc669c31a1e6306b266c2000000000000000000000000000000000000000000000000000000000000000ff2000000000000000000000000000000000000000000000000000000000000000fe2000000000000000000000000000000000000000000000000000000000000000fd2000000000000000000000000000000000000000000000000000000000000000fc076f706361740102012b79012b79012b79012b79012b79012b79012b79012b79012b79012b79012b79012b79012b79012b795d798277549d5c79827701209d5b79827701209d5a79827701209d597900a26958798277549d5779827701209d5679827701209d5579827701209d5479827701209d5379827701209d527900a2697800a26976519c6476529c6751686476539c67516864760281009c67516864760282009c67516864760283009c675168695d795d797e5c797e5b797e5a79767600a2637609ffffffffffffffff00a16700686976586e8b806e7c7f75007f6b6d6d6d6c7e59797e58797e57797e56797e55797e54797e5379546e8b806e7c7f75007f6b6d6d6c7e5279546e8b806e7c7f75007f6b6d6d6c7e7854807e6b6d6d6d6d6d6d6d6c5979785a795a79210ac407f0e4bd44bfc207355a778b046225a7068fc59ee7eda43ad905aadbffc800206c266b30e6a1319c66dc401e5bd6b432ba49688eecd118297041da8074ce08105c7956795679aa7676517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e01007e817757795679567956795679537956795479577995939521414136d08c5ed2bf3ba048afe6dcaebafeffffffffffffffffffffffffffffff006e6e9776009f636e936776687777777b757c6e5296a0636e7c947b757c6853798277527982775379012080517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e01205279947f77545379935279930130787e527e54797e58797e527e53797e52797e57797e6b6d6d6d6d6d6d6c765779ac6b6d6d6d6d6d6c77695b7901267978aa7888785878827d77527997009d6e7c966b6d6d6c775a790126796f75aa527988765379012078827d77527997009d6e7c967777779d6d755b790125796f75aa527988765379012078827d77527997009d6e7c967777779d6d75011e79011e79011e79011e79011e79011e79011e79011e79011e79011e79011e79011e79011e79011e79011e79011e79011e79011e7901337901317901317901317901317901317901317901317901317901317901317901317901317901317901317901317901317901317901317901117901117901117901117953766b796c756b6d6d6c8277528001127901127901127901127953766b796c756b6d6d6c7e01127901127901127901127952766b796c756b6d6d6c827752807e01127901127901127901127952766b796c756b6d6d6c7e01127901127901127901127951766b796c756b6d6d6c827752807e01127901127901127901127951766b796c756b6d6d6c7e01127901127901127901127900766b796c756b6d6d6c827752807e01127901127901127901127900766b796c756b6d6d6c7e5e795e795e795e7953766b796c756b6d6d6c827752807e5e795e795e795e7953766b796c756b6d6d6c7e5e795e795e795e7952766b796c756b6d6d6c827752807e5e795e795e795e7952766b796c756b6d6d6c7e5e795e795e795e7951766b796c756b6d6d6c827752807e5e795e795e795e7951766b796c756b6d6d6c7e5e795e795e795e7900766b796c756b6d6d6c827752807e5e795e795e795e7900766b796c756b6d6d6c7e5a795a795a795a7953766b796c756b6d6d6c827752807e5a795a795a795a7953766b796c756b6d6d6c7e5a795a795a795a7952766b796c756b6d6d6c827752807e5a795a795a795a7952766b796c756b6d6d6c7e5a795a795a795a7951766b796c756b6d6d6c827752807e5a795a795a795a7951766b796c756b6d6d6c7e5a795a795a795a7900766b796c756b6d6d6c827752807e5a795a795a795a7900766b796c756b6d6d6c7e56795679567956795679567955766b796c756b6d6d6d6c827752807e56795679567956795679567955766b796c756b6d6d6d6c7e56795679567956795679567954766b796c756b6d6d6d6c827752807e56795679567956795679567954766b796c756b6d6d6d6c7e56795679567956795679567953766b796c756b6d6d6d6c827752807e56795679567956795679567953766b796c756b6d6d6d6c7e56795679567956795679567952766b796c756b6d6d6d6c827752807e56795679567956795679567952766b796c756b6d6d6d6c7e56795679567956795679567951766b796c756b6d6d6d6c827752807e56795679567956795679567951766b796c756b6d6d6d6c7e56795679567956795679567900766b796c756b6d6d6d6c827752807e56795679567956795679567900766b796c756b6d6d6d6c7e01127901127901127901127953766b796c756b6d6d6ca901137901137901137901137952766b796c756b6d6d6ca97e01137901137901137901137951766b796c756b6d6d6ca97e01137901137901137901137900766b796c756b6d6d6ca97e5f795f795f795f7953766b796c756b6d6d6ca97e5f795f795f795f7952766b796c756b6d6d6ca97e5f795f795f795f7951766b796c756b6d6d6ca97e5f795f795f795f7900766b796c756b6d6d6ca97e5b795b795b795b7953766b796c756b6d6d6ca97e5b795b795b795b7952766b796c756b6d6d6ca97e5b795b795b795b7951766b796c756b6d6d6ca97e5b795b795b795b7900766b796c756b6d6d6ca97e57795779577957795779577955766b796c756b6d6d6d6ca97e57795779577957795779577954766b796c756b6d6d6d6ca97e57795779577957795779577953766b796c756b6d6d6d6ca97e57795779577957795779577952766b796c756b6d6d6d6ca97e57795779577957795779577951766b796c756b6d6d6d6ca97e57795779577957795779577900766b796c756b6d6d6d6ca97ea97ea86b6d6d6d6d6d6d6d6d6d6c011f797653798b0120957f7553790120957f775279886d7501117901117901117901117901117901117901117901117901117901117901117901117901117901117901117901117901117901117901117901117901117901117953766b796c7553766b796c7587916953766b796c7552766b796c7587916953766b796c7551766b796c7587916952766b796c7552766b796c7587916952766b796c7551766b796c7587916951766b796c7551766b796c758791696d6d01117901117901117901117953766b796c756b6d6d6c827d7701209d5e795e795e795e7953766b796c756b6d6d6c00a2695a795a795a795a7953766b796c756b6d6d6c00a2697501117901117901117901117952766b796c756b6d6d6c827d7701209d5e795e795e795e7952766b796c756b6d6d6c00a2695a795a795a795a7952766b796c756b6d6d6c00a2697501117901117901117901117951766b796c756b6d6d6c827d7701209d5e795e795e795e7951766b796c756b6d6d6c00a2695a795a795a795a7951766b796c756b6d6d6c00a2697501117901117901117901117900766b796c756b6d6d6c827d7701209d5e795e795e795e7900766b796c756b6d6d6c00a2695a795a795a795a7900766b796c756b6d6d6c00a2697555795579557955795579557955766b796c756b6d6d6d6c764fa26376549f670068697555795579557955795579557954766b796c756b6d6d6d6c764fa26376549f670068697555795579557955795579557953766b796c756b6d6d6d6c764fa26376549f670068697555795579557955795579557952766b796c756b6d6d6d6c764fa26376549f670068697555795579557955795579557951766b796c756b6d6d6d6c764fa26376549f670068697555795579557955795579557900766b796c756b6d6d6d6c764fa26376549f67006869756d6d6d6d6d6d6d6d6d0001187901187901187901187901167901167901167901167953766b796c756b6d6d6c54766b796c7587645479768b567a757171557a756801167901167901167901167952766b796c756b6d6d6c53766b796c7587645479768b567a757171557a756801167901167901167901167951766b796c756b6d6d6c52766b796c7587645479768b567a757171557a756801167901167901167901167900766b796c756b6d6d6c51766b796c7587645479768b567a757171557a75680055799f6301167901167901167901167953766b796c756b6d6d6c54766b796c7587916901167901167901167901167953766b796c756b6d6d6c827701209d6701167901167901167901167953766b796c756b6d6d6c54766b796c7588685155799f6301167901167901167901167952766b796c756b6d6d6c53766b796c7587916901167901167901167901167952766b796c756b6d6d6c827701209d6701167901167901167901167952766b796c756b6d6d6c53766b796c7588685255799f6301167901167901167901167951766b796c756b6d6d6c52766b796c7587916901167901167901167901167951766b796c756b6d6d6c827701209d6701167901167901167901167951766b796c756b6d6d6c52766b796c7588685355799f6301167901167901167901167900766b796c756b6d6d6c51766b796c7587916901167901167901167901167900766b796c756b6d6d6c827701209d6701167901167901167901167900766b796c756b6d6d6c51766b796c758868547900a069000000004f011c7960796079607960796079607955766b796c756b6d6d6d6c0052799f63765c799f69764f9e63011d79011d79011d79011d795455797600a26976549f69948c766b796c756b6d6d6c76012a79006e8b0120957f75780120957f77777788015e766b796c766b796c766b796c757876827d7701199c647601209c675168696d51787700a0695279012479886d75012a79006e8b0120957f75780120957f777777015f766b796c766b796c766b796c7552798277528053797e5279827752807e52797e78827752807e787e5379a95379a97e5279a97ea97ea8777777885752797600a26976549f6994766b796c75015f766b796c766b796c766b796c7577776e93765379a2636e7ca267006869777752797600a26976549f69597a78008763757868597a527951876375527968597a537952876375537968597a547953876375547968547a75587a587a587a587a587a75785479a0637867537968547a7572537a75686701117901117901117901117901117901117955766b796c756b6d6d6d6c4f9d687560796079607960796079607954766b796c756b6d6d6d6c5152799f63765c799f69764f9e63011d79011d79011d79011d795455797600a26976549f69948c766b796c756b6d6d6c76012a79516e8b0120957f75780120957f77777788015b766b796c766b796c766b796c757876827d7701199c647601209c675168696d51787700a0695279012479886d75012a79516e8b0120957f75780120957f777777015c766b796c766b796c766b796c7552798277528053797e5279827752807e52797e78827752807e787e5379a95379a97e5279a97ea97ea8777777885752797600a26976549f6994766b796c75015c766b796c766b796c766b796c7577776e93765379a2636e7ca267006869777752797600a26976549f69597a78008763757868597a527951876375527968597a537952876375537968597a547953876375547968547a75587a587a587a587a587a75785479a0637867537968547a7572537a75686701117901117901117901117901117901117954766b796c756b6d6d6d6c4f9d687560796079607960796079607953766b796c756b6d6d6d6c5252799f63765c799f69764f9e63011d79011d79011d79011d795455797600a26976549f69948c766b796c756b6d6d6c76012a79526e8b0120957f75780120957f777777880158766b796c766b796c766b796c757876827d7701199c647601209c675168696d51787700a0695279012479886d75012a79526e8b0120957f75780120957f7777770159766b796c766b796c766b796c7552798277528053797e5279827752807e52797e78827752807e787e5379a95379a97e5279a97ea97ea8777777885752797600a26976549f6994766b796c750159766b796c766b796c766b796c7577776e93765379a2636e7ca267006869777752797600a26976549f69597a78008763757868597a527951876375527968597a537952876375537968597a547953876375547968547a75587a587a587a587a587a75785479a0637867537968547a7572537a75686701117901117901117901117901117901117953766b796c756b6d6d6d6c4f9d687560796079607960796079607952766b796c756b6d6d6d6c5352799f63765c799f69764f9e63011d79011d79011d79011d795455797600a26976549f69948c766b796c756b6d6d6c76012a79536e8b0120957f75780120957f777777880155766b796c766b796c766b796c757876827d7701199c647601209c675168696d51787700a0695279012479886d75012a79536e8b0120957f75780120957f7777770156766b796c766b796c766b796c7552798277528053797e5279827752807e52797e78827752807e787e5379a95379a97e5279a97ea97ea8777777885752797600a26976549f6994766b796c750156766b796c766b796c766b796c7577776e93765379a2636e7ca267006869777752797600a26976549f69597a78008763757868597a527951876375527968597a537952876375537968597a547953876375547968547a75587a587a587a587a587a75785479a0637867537968547a7572537a75686701117901117901117901117901117901117952766b796c756b6d6d6d6c4f9d687560796079607960796079607951766b796c756b6d6d6d6c5452799f63765c799f69764f9e63011d79011d79011d79011d795455797600a26976549f69948c766b796c756b6d6d6c76012a79546e8b0120957f75780120957f777777880152766b796c766b796c766b796c757876827d7701199c647601209c675168696d51787700a0695279012479886d75012a79546e8b0120957f75780120957f7777770153766b796c766b796c766b796c7552798277528053797e5279827752807e52797e78827752807e787e5379a95379a97e5279a97ea97ea8777777885752797600a26976549f6994766b796c750153766b796c766b796c766b796c7577776e93765379a2636e7ca267006869777752797600a26976549f69597a78008763757868597a527951876375527968597a537952876375537968597a547953876375547968547a75587a587a587a587a587a75785479a0637867537968547a7572537a75686701117901117901117901117901117901117951766b796c756b6d6d6d6c4f9d687560796079607960796079607900766b796c756b6d6d6d6c5552799f63765c799f69764f9e63011d79011d79011d79011d795455797600a26976549f69948c766b796c756b6d6d6c76012a79556e8b0120957f75780120957f77777788014f766b796c766b796c766b796c757876827d7701199c647601209c675168696d51787700a0695279012479886d75012a79556e8b0120957f75780120957f7777770150766b796c766b796c766b796c7552798277528053797e5279827752807e52797e78827752807e787e5379a95379a97e5279a97ea97ea8777777885752797600a26976549f6994766b796c750150766b796c766b796c766b796c7577776e93765379a2636e7ca267006869777752797600a26976549f69597a78008763757868597a527951876375527968597a537952876375537968597a547953876375547968547a75587a587a587a587a587a75785479a0637867537968547a7572537a75686701117901117901117901117901117901117900766b796c756b6d6d6d6c4f9d68757800a263785b798c9c67006869014a7900a263014a7956a1670068690000000000000150799f630179766b796c7877827700a069016e766b796c78770112799f69764f9e630175766b796c787700a0695752797600a26976549f6994766b796c75786e93765379a2636e7ca267006869777752797600a26976549f69597a78008763757868597a527951876375527968597a537952876375537968597a547953876375547968547a75587a587a587a587a587a7501267953796f758277528053797e5279827752807e52797e78827752807e787e5379a95379a97e5279a97ea97ea8777777028300766b796c7578880125790125790125790125795457797600a26976549f69948c766b796c756b6d6d6c557978016e766b796c755479527982777882777801209d7601209d537900a2695379767600a2637609ffffffffffffffff00a16700686976586e8b806e7c7f75007f6b6d6d6d6c55797e53797e6b6d6d6c777e567a757171557a55796d6d670175766b796c75009d7801247901247901247901247953766b796c756b6d6d6c8791697801247901247901247901247952766b796c756b6d6d6c8791697801247901247901247901247951766b796c756b6d6d6c8791697801247901247901247901247900766b796c756b6d6d6c8791696f75016b766b796c75028400766b796c75527982777882777801209d7601209d537900a2695379767600a2637609ffffffffffffffff00a16700686976586e8b806e7c7f75007f6b6d6d6d6c55797e53797e6b6d6d6c777e537a757b7b527975686d670179766b796c758277009d016d766b796c754f9d0173766b796c75009d017f766b796c7500880167766b796c75009d68510150799f630178766b796c7877827700a069016d766b796c78770112799f69764f9e630174766b796c787700a0695752797600a26976549f6994766b796c75786e93765379a2636e7ca267006869777752797600a26976549f69597a78008763757868597a527951876375527968597a537952876375537968597a547953876375547968547a75587a587a587a587a587a7501267953796f758277528053797e5279827752807e52797e78827752807e787e5379a95379a97e5279a97ea97ea8777777028200766b796c7578880125790125790125790125795457797600a26976549f69948c766b796c756b6d6d6c557978016d766b796c755479527982777882777801209d7601209d537900a2695379767600a2637609ffffffffffffffff00a16700686976586e8b806e7c7f75007f6b6d6d6d6c55797e53797e6b6d6d6c777e567a757171557a55796d6d670174766b796c75009d7801247901247901247901247953766b796c756b6d6d6c8791697801247901247901247901247952766b796c756b6d6d6c8791697801247901247901247901247951766b796c756b6d6d6c8791697801247901247901247901247900766b796c756b6d6d6c8791696f75016a766b796c75028300766b796c75527982777882777801209d7601209d537900a2695379767600a2637609ffffffffffffffff00a16700686976586e8b806e7c7f75007f6b6d6d6d6c55797e53797e6b6d6d6c777e537a757b7b527975686d670178766b796c758277009d016c766b796c754f9d0172766b796c75009d017e766b796c7500880166766b796c75009d68520150799f630177766b796c7877827700a069016c766b796c78770112799f69764f9e630173766b796c787700a0695752797600a26976549f6994766b796c75786e93765379a2636e7ca267006869777752797600a26976549f69597a78008763757868597a527951876375527968597a537952876375537968597a547953876375547968547a75587a587a587a587a587a7501267953796f758277528053797e5279827752807e52797e78827752807e787e5379a95379a97e5279a97ea97ea8777777028100766b796c7578880125790125790125790125795457797600a26976549f69948c766b796c756b6d6d6c557978016c766b796c755479527982777882777801209d7601209d537900a2695379767600a2637609ffffffffffffffff00a16700686976586e8b806e7c7f75007f6b6d6d6d6c55797e53797e6b6d6d6c777e567a757171557a55796d6d670173766b796c75009d7801247901247901247901247953766b796c756b6d6d6c8791697801247901247901247901247952766b796c756b6d6d6c8791697801247901247901247901247951766b796c756b6d6d6c8791697801247901247901247901247900766b796c756b6d6d6c8791696f750169766b796c75028200766b796c75527982777882777801209d7601209d537900a2695379767600a2637609ffffffffffffffff00a16700686976586e8b806e7c7f75007f6b6d6d6d6c55797e53797e6b6d6d6c777e537a757b7b527975686d670177766b796c758277009d016b766b796c754f9d0171766b796c75009d017d766b796c7500880165766b796c75009d68530150799f630176766b796c7877827700a069016b766b796c78770112799f69764f9e630172766b796c787700a0695752797600a26976549f6994766b796c75786e93765379a2636e7ca267006869777752797600a26976549f69597a78008763757868597a527951876375527968597a537952876375537968597a547953876375547968547a75587a587a587a587a587a7501267953796f758277528053797e5279827752807e52797e78827752807e787e5379a95379a97e5279a97ea97ea8777777028000766b796c7578880125790125790125790125795457797600a26976549f69948c766b796c756b6d6d6c557978016b766b796c755479527982777882777801209d7601209d537900a2695379767600a2637609ffffffffffffffff00a16700686976586e8b806e7c7f75007f6b6d6d6d6c55797e53797e6b6d6d6c777e567a757171557a55796d6d670172766b796c75009d7801247901247901247901247953766b796c756b6d6d6c8791697801247901247901247901247952766b796c756b6d6d6c8791697801247901247901247901247951766b796c756b6d6d6c8791697801247901247901247901247900766b796c756b6d6d6c8791696f750168766b796c75028100766b796c75527982777882777801209d7601209d537900a2695379767600a2637609ffffffffffffffff00a16700686976586e8b806e7c7f75007f6b6d6d6d6c55797e53797e6b6d6d6c777e537a757b7b527975686d670176766b796c758277009d016a766b796c754f9d0170766b796c75009d017c766b796c7500880164766b796c75009d68540150799f630175766b796c7877827700a069016a766b796c78770112799f69764f9e630171766b796c787700a0695752797600a26976549f6994766b796c75786e93765379a2636e7ca267006869777752797600a26976549f69597a78008763757868597a527951876375527968597a537952876375537968597a547953876375547968547a75587a587a587a587a587a7501267953796f758277528053797e5279827752807e52797e78827752807e787e5379a95379a97e5279a97ea97ea8777777017f766b796c7578880125790125790125790125795457797600a26976549f69948c766b796c756b6d6d6c557978016a766b796c755479527982777882777801209d7601209d537900a2695379767600a2637609ffffffffffffffff00a16700686976586e8b806e7c7f75007f6b6d6d6d6c55797e53797e6b6d6d6c777e567a757171557a55796d6d670171766b796c75009d7801247901247901247901247953766b796c756b6d6d6c8791697801247901247901247901247952766b796c756b6d6d6c8791697801247901247901247901247951766b796c756b6d6d6c8791697801247901247901247901247900766b796c756b6d6d6c8791696f750167766b796c75028000766b796c75527982777882777801209d7601209d537900a2695379767600a2637609ffffffffffffffff00a16700686976586e8b806e7c7f75007f6b6d6d6d6c55797e53797e6b6d6d6c777e537a757b7b527975686d670175766b796c758277009d0169766b796c754f9d016f766b796c75009d017b766b796c7500880163766b796c75009d68550150799f630174766b796c7877827700a0690169766b796c78770112799f69764f9e630170766b796c787700a0695752797600a26976549f6994766b796c75786e93765379a2636e7ca267006869777752797600a26976549f69597a78008763757868597a527951876375527968597a537952876375537968597a547953876375547968547a75587a587a587a587a587a7501267953796f758277528053797e5279827752807e52797e78827752807e787e5379a95379a97e5279a97ea97ea8777777017e766b796c7578880125790125790125790125795457797600a26976549f69948c766b796c756b6d6d6c5579780169766b796c755479527982777882777801209d7601209d537900a2695379767600a2637609ffffffffffffffff00a16700686976586e8b806e7c7f75007f6b6d6d6d6c55797e53797e6b6d6d6c777e567a757171557a55796d6d670170766b796c75009d7801247901247901247901247953766b796c756b6d6d6c8791697801247901247901247901247952766b796c756b6d6d6c8791697801247901247901247901247951766b796c756b6d6d6c8791697801247901247901247901247900766b796c756b6d6d6c8791696f750166766b796c75017f766b796c75527982777882777801209d7601209d537900a2695379767600a2637609ffffffffffffffff00a16700686976586e8b806e7c7f75007f6b6d6d6d6c55797e53797e6b6d6d6c777e537a757b7b527975686d670174766b796c758277009d0168766b796c754f9d016e766b796c75009d017a766b796c7500880162766b796c75009d685a766b796c75011e79011e79011e79011e7953766b796c756b6d6d6c9d5a766b796c7555766b796c75011b79011b79011b79011b7953766b796c756b6d6d6c6e93765379a2636e7ca26700686977779d0060799f635a766b796c7500a069675a766b796c75009d54766b796c75009d011d79011d79011d79011d7953766b796c756b6d6d6c009d01197901197901197901197953766b796c756b6d6d6c009d6859766b796c75011e79011e79011e79011e7952766b796c756b6d6d6c9d59766b796c7554766b796c75011b79011b79011b79011b7952766b796c756b6d6d6c6e93765379a2636e7ca26700686977779d5160799f6359766b796c7500a0696759766b796c75009d53766b796c75009d011d79011d79011d79011d7952766b796c756b6d6d6c009d01197901197901197901197952766b796c756b6d6d6c009d6858766b796c75011e79011e79011e79011e7951766b796c756b6d6d6c9d58766b796c7553766b796c75011b79011b79011b79011b7951766b796c756b6d6d6c6e93765379a2636e7ca26700686977779d5260799f6358766b796c7500a0696758766b796c75009d52766b796c75009d011d79011d79011d79011d7951766b796c756b6d6d6c009d01197901197901197901197951766b796c756b6d6d6c009d6857766b796c75011e79011e79011e79011e7900766b796c756b6d6d6c9d57766b796c7552766b796c75011b79011b79011b79011b7900766b796c756b6d6d6c6e93765379a2636e7ca26700686977779d5360799f6357766b796c7500a0696757766b796c75009d51766b796c75009d011d79011d79011d79011d7900766b796c756b6d6d6c009d01197901197901197901197900766b796c756b6d6d6c009d6876aa014579876b6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6c"
|
|
446
|
+
"hex": "512097dfd76851bf465e8f715593b217714858bbe9570ff3bd5e33840a34e20ff0262102ba79df5f8ae7604a9830f03c7933028186aede0675a16f025dc4f8be8eec0382201008ce7480da41702918d1ec8e6849ba32b4d65b1e40dc669c31a1e6306b266c2000000000000000000000000000000000000000000000000000000000000000ff2000000000000000000000000000000000000000000000000000000000000000fe2000000000000000000000000000000000000000000000000000000000000000fd2000000000000000000000000000000000000000000000000000000000000000fc076f706361740102012f79012f79012f79012f79012f79012f79012f79012f79012f79012f79012f79012f79012f79012f795d798277549d5c79827701209d5b79827701209d5a79827701209d597900a26958798277549d5779827701209d5679827701209d5579827701209d5479827701209d5379827701209d527900a2697800a26976519c6476529c6751686476539c67516864760281009c67516864760282009c67516864760283009c675168695d795d797e5c797e5b797e5a79767600a2637609ffffffffffffffff00a16700686976586e8b806e7c7f75007f6b6d6d6d6c7e59797e58797e57797e56797e55797e54797e5379546e8b806e7c7f75007f6b6d6d6c7e5279546e8b806e7c7f75007f6b6d6d6c7e7854807e6b6d6d6d6d6d6d6d6c5979785a795a79210ac407f0e4bd44bfc207355a778b046225a7068fc59ee7eda43ad905aadbffc800206c266b30e6a1319c66dc401e5bd6b432ba49688eecd118297041da8074ce08105c7956795679aa7676517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e01007e817757795679567956795679537956795479577995939521414136d08c5ed2bf3ba048afe6dcaebafeffffffffffffffffffffffffffffff006e6e9776009f636e936776687777777b757c6e5296a0636e7c947b757c6853798277527982775379012080517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e01205279947f77545379935279930130787e527e54797e58797e527e53797e52797e57797e6b6d6d6d6d6d6d6c765779ac6b6d6d6d6d6d6c77695b79012a7978aa7888785878827d77527997009d6e7c966b6d6d6c775a79012a796f75aa527988765379012078827d77527997009d6e7c967777779d6d755b790129796f75aa527988765379012078827d77527997009d6e7c967777779d6d75012279012279012279012279012279012279012279012279012279012279012279012279012279012279012279012279012279012279012279012279012279012279013b7901397901397901397901397901397901397901397901397901397901397901397901397901397901397901397901397901397901397901397901397901397901397901157901157901157901157953766b796c756b6d6d6c8277528001167901167901167901167953766b796c756b6d6d6c7e01167901167901167901167952766b796c756b6d6d6c827752807e01167901167901167901167952766b796c756b6d6d6c7e01167901167901167901167951766b796c756b6d6d6c827752807e01167901167901167901167951766b796c756b6d6d6c7e01167901167901167901167900766b796c756b6d6d6c827752807e01167901167901167901167900766b796c756b6d6d6c7e01127901127901127901127953766b796c756b6d6d6c827752807e01127901127901127901127953766b796c756b6d6d6c7e01127901127901127901127952766b796c756b6d6d6c827752807e01127901127901127901127952766b796c756b6d6d6c7e01127901127901127901127951766b796c756b6d6d6c827752807e01127901127901127901127951766b796c756b6d6d6c7e01127901127901127901127900766b796c756b6d6d6c827752807e01127901127901127901127900766b796c756b6d6d6c7e5e795e795e795e7953766b796c756b6d6d6c827752807e5e795e795e795e7953766b796c756b6d6d6c7e5e795e795e795e7952766b796c756b6d6d6c827752807e5e795e795e795e7952766b796c756b6d6d6c7e5e795e795e795e7951766b796c756b6d6d6c827752807e5e795e795e795e7951766b796c756b6d6d6c7e5e795e795e795e7900766b796c756b6d6d6c827752807e5e795e795e795e7900766b796c756b6d6d6c7e5a795a795a795a795a795a795a795a795a795a7959766b796c756b6d6d6d6d6d6c827752807e5a795a795a795a795a795a795a795a795a795a7959766b796c756b6d6d6d6d6d6c7e5a795a795a795a795a795a795a795a795a795a7958766b796c756b6d6d6d6d6d6c827752807e5a795a795a795a795a795a795a795a795a795a7958766b796c756b6d6d6d6d6d6c7e5a795a795a795a795a795a795a795a795a795a7957766b796c756b6d6d6d6d6d6c827752807e5a795a795a795a795a795a795a795a795a795a7957766b796c756b6d6d6d6d6d6c7e5a795a795a795a795a795a795a795a795a795a7956766b796c756b6d6d6d6d6d6c827752807e5a795a795a795a795a795a795a795a795a795a7956766b796c756b6d6d6d6d6d6c7e5a795a795a795a795a795a795a795a795a795a7955766b796c756b6d6d6d6d6d6c827752807e5a795a795a795a795a795a795a795a795a795a7955766b796c756b6d6d6d6d6d6c7e5a795a795a795a795a795a795a795a795a795a7954766b796c756b6d6d6d6d6d6c827752807e5a795a795a795a795a795a795a795a795a795a7954766b796c756b6d6d6d6d6d6c7e5a795a795a795a795a795a795a795a795a795a7953766b796c756b6d6d6d6d6d6c827752807e5a795a795a795a795a795a795a795a795a795a7953766b796c756b6d6d6d6d6d6c7e5a795a795a795a795a795a795a795a795a795a7952766b796c756b6d6d6d6d6d6c827752807e5a795a795a795a795a795a795a795a795a795a7952766b796c756b6d6d6d6d6d6c7e5a795a795a795a795a795a795a795a795a795a7951766b796c756b6d6d6d6d6d6c827752807e5a795a795a795a795a795a795a795a795a795a7951766b796c756b6d6d6d6d6d6c7e5a795a795a795a795a795a795a795a795a795a7900766b796c756b6d6d6d6d6d6c827752807e5a795a795a795a795a795a795a795a795a795a7900766b796c756b6d6d6d6d6d6c7e01167901167901167901167953766b796c756b6d6d6ca901177901177901177901177952766b796c756b6d6d6ca97e01177901177901177901177951766b796c756b6d6d6ca97e01177901177901177901177900766b796c756b6d6d6ca97e01137901137901137901137953766b796c756b6d6d6ca97e01137901137901137901137952766b796c756b6d6d6ca97e01137901137901137901137951766b796c756b6d6d6ca97e01137901137901137901137900766b796c756b6d6d6ca97e5f795f795f795f7953766b796c756b6d6d6ca97e5f795f795f795f7952766b796c756b6d6d6ca97e5f795f795f795f7951766b796c756b6d6d6ca97e5f795f795f795f7900766b796c756b6d6d6ca97e5b795b795b795b795b795b795b795b795b795b7959766b796c756b6d6d6d6d6d6ca97e5b795b795b795b795b795b795b795b795b795b7958766b796c756b6d6d6d6d6d6ca97e5b795b795b795b795b795b795b795b795b795b7957766b796c756b6d6d6d6d6d6ca97e5b795b795b795b795b795b795b795b795b795b7956766b796c756b6d6d6d6d6d6ca97e5b795b795b795b795b795b795b795b795b795b7955766b796c756b6d6d6d6d6d6ca97e5b795b795b795b795b795b795b795b795b795b7954766b796c756b6d6d6d6d6d6ca97e5b795b795b795b795b795b795b795b795b795b7953766b796c756b6d6d6d6d6d6ca97e5b795b795b795b795b795b795b795b795b795b7952766b796c756b6d6d6d6d6d6ca97e5b795b795b795b795b795b795b795b795b795b7951766b796c756b6d6d6d6d6d6ca97e5b795b795b795b795b795b795b795b795b795b7900766b796c756b6d6d6d6d6d6ca97ea97ea86b6d6d6d6d6d6d6d6d6d6d6d6c0123797653798b0120957f7553790120957f775279886d7501157901157901157901157901157901157901157901157901157901157901157901157901157901157901157901157901157901157901157901157901157901157901157901157901157901157953766b796c7553766b796c7587916953766b796c7552766b796c7587916953766b796c7551766b796c7587916952766b796c7552766b796c7587916952766b796c7551766b796c7587916951766b796c7551766b796c758791696d6d01157901157901157901157953766b796c756b6d6d6c827d7701209d01127901127901127901127953766b796c756b6d6d6c00a2695e795e795e795e7953766b796c756b6d6d6c00a2697501157901157901157901157952766b796c756b6d6d6c827d7701209d01127901127901127901127952766b796c756b6d6d6c00a2695e795e795e795e7952766b796c756b6d6d6c00a2697501157901157901157901157951766b796c756b6d6d6c827d7701209d01127901127901127901127951766b796c756b6d6d6c00a2695e795e795e795e7951766b796c756b6d6d6c00a2697501157901157901157901157900766b796c756b6d6d6c827d7701209d01127901127901127901127900766b796c756b6d6d6c00a2695e795e795e795e7900766b796c756b6d6d6c00a26975597959795979597959795979597959795979597959766b796c756b6d6d6d6d6d6c764fa26376549f6700686975597959795979597959795979597959795979597958766b796c756b6d6d6d6d6d6c764fa26376549f6700686975597959795979597959795979597959795979597957766b796c756b6d6d6d6d6d6c764fa26376549f6700686975597959795979597959795979597959795979597956766b796c756b6d6d6d6d6d6c764fa26376549f6700686975597959795979597959795979597959795979597955766b796c756b6d6d6d6d6d6c764fa26376549f6700686975597959795979597959795979597959795979597954766b796c756b6d6d6d6d6d6c764fa26376549f6700686975597959795979597959795979597959795979597953766b796c756b6d6d6d6d6d6c764fa26376549f6700686975597959795979597959795979597959795979597952766b796c756b6d6d6d6d6d6c764fa26376549f6700686975597959795979597959795979597959795979597951766b796c756b6d6d6d6d6d6c764fa26376549f6700686975597959795979597959795979597959795979597900766b796c756b6d6d6d6d6d6c764fa26376549f67006869756d6d6d6d6d6d6d6d6d6d6d00011c79011c79011c79011c79011a79011a79011a79011a7953766b796c756b6d6d6c54766b796c7587645479768b567a757171557a7568011a79011a79011a79011a7952766b796c756b6d6d6c53766b796c7587645479768b567a757171557a7568011a79011a79011a79011a7951766b796c756b6d6d6c52766b796c7587645479768b567a757171557a7568011a79011a79011a79011a7900766b796c756b6d6d6c51766b796c7587645479768b567a757171557a75680055799f63011a79011a79011a79011a7953766b796c756b6d6d6c54766b796c75879169011a79011a79011a79011a7953766b796c756b6d6d6c827701209d67011a79011a79011a79011a7953766b796c756b6d6d6c54766b796c7588685155799f63011a79011a79011a79011a7952766b796c756b6d6d6c53766b796c75879169011a79011a79011a79011a7952766b796c756b6d6d6c827701209d67011a79011a79011a79011a7952766b796c756b6d6d6c53766b796c7588685255799f63011a79011a79011a79011a7951766b796c756b6d6d6c52766b796c75879169011a79011a79011a79011a7951766b796c756b6d6d6c827701209d67011a79011a79011a79011a7951766b796c756b6d6d6c52766b796c7588685355799f63011a79011a79011a79011a7900766b796c756b6d6d6c51766b796c75879169011a79011a79011a79011a7900766b796c756b6d6d6c827701209d67011a79011a79011a79011a7900766b796c756b6d6d6c51766b796c758868547900a069000000004f01207901147901147901147901147901147901147901147901147901147901147959766b796c756b6d6d6d6d6d6c0052799f63765c799f69764f9e630121790121790121790121795455797600a26976549f69948c766b796c756b6d6d6c76012e79006e8b0120957f75780120957f777777880172766b796c766b796c766b796c757876827d7701199c647601209c675168696d51787700a0695279012879886d75012e79006e8b0120957f75780120957f7777770173766b796c766b796c766b796c7552798277528053797e5279827752807e52797e78827752807e787e5379a95379a97e5279a97ea97ea8777777885752797600a26976549f6994766b796c750173766b796c766b796c766b796c7577776e93765379a2636e7ca267006869777752797600a26976549f69597a78008763757868597a527951876375527968597a537952876375537968597a547953876375547968547a75587a587a587a587a587a75785479a0637867537968547a7572537a75686701157901157901157901157901157901157901157901157901157901157959766b796c756b6d6d6d6d6d6c4f9d687501147901147901147901147901147901147901147901147901147901147958766b796c756b6d6d6d6d6d6c5152799f63765c799f69764f9e630121790121790121790121795455797600a26976549f69948c766b796c756b6d6d6c76012e79516e8b0120957f75780120957f77777788016f766b796c766b796c766b796c757876827d7701199c647601209c675168696d51787700a0695279012879886d75012e79516e8b0120957f75780120957f7777770170766b796c766b796c766b796c7552798277528053797e5279827752807e52797e78827752807e787e5379a95379a97e5279a97ea97ea8777777885752797600a26976549f6994766b796c750170766b796c766b796c766b796c7577776e93765379a2636e7ca267006869777752797600a26976549f69597a78008763757868597a527951876375527968597a537952876375537968597a547953876375547968547a75587a587a587a587a587a75785479a0637867537968547a7572537a75686701157901157901157901157901157901157901157901157901157901157958766b796c756b6d6d6d6d6d6c4f9d687501147901147901147901147901147901147901147901147901147901147957766b796c756b6d6d6d6d6d6c5252799f63765c799f69764f9e630121790121790121790121795455797600a26976549f69948c766b796c756b6d6d6c76012e79526e8b0120957f75780120957f77777788016c766b796c766b796c766b796c757876827d7701199c647601209c675168696d51787700a0695279012879886d75012e79526e8b0120957f75780120957f777777016d766b796c766b796c766b796c7552798277528053797e5279827752807e52797e78827752807e787e5379a95379a97e5279a97ea97ea8777777885752797600a26976549f6994766b796c75016d766b796c766b796c766b796c7577776e93765379a2636e7ca267006869777752797600a26976549f69597a78008763757868597a527951876375527968597a537952876375537968597a547953876375547968547a75587a587a587a587a587a75785479a0637867537968547a7572537a75686701157901157901157901157901157901157901157901157901157901157957766b796c756b6d6d6d6d6d6c4f9d687501147901147901147901147901147901147901147901147901147901147956766b796c756b6d6d6d6d6d6c5352799f63765c799f69764f9e630121790121790121790121795455797600a26976549f69948c766b796c756b6d6d6c76012e79536e8b0120957f75780120957f777777880169766b796c766b796c766b796c757876827d7701199c647601209c675168696d51787700a0695279012879886d75012e79536e8b0120957f75780120957f777777016a766b796c766b796c766b796c7552798277528053797e5279827752807e52797e78827752807e787e5379a95379a97e5279a97ea97ea8777777885752797600a26976549f6994766b796c75016a766b796c766b796c766b796c7577776e93765379a2636e7ca267006869777752797600a26976549f69597a78008763757868597a527951876375527968597a537952876375537968597a547953876375547968547a75587a587a587a587a587a75785479a0637867537968547a7572537a75686701157901157901157901157901157901157901157901157901157901157956766b796c756b6d6d6d6d6d6c4f9d687501147901147901147901147901147901147901147901147901147901147955766b796c756b6d6d6d6d6d6c5452799f63765c799f69764f9e630121790121790121790121795455797600a26976549f69948c766b796c756b6d6d6c76012e79546e8b0120957f75780120957f777777880166766b796c766b796c766b796c757876827d7701199c647601209c675168696d51787700a0695279012879886d75012e79546e8b0120957f75780120957f7777770167766b796c766b796c766b796c7552798277528053797e5279827752807e52797e78827752807e787e5379a95379a97e5279a97ea97ea8777777885752797600a26976549f6994766b796c750167766b796c766b796c766b796c7577776e93765379a2636e7ca267006869777752797600a26976549f69597a78008763757868597a527951876375527968597a537952876375537968597a547953876375547968547a75587a587a587a587a587a75785479a0637867537968547a7572537a75686701157901157901157901157901157901157901157901157901157901157955766b796c756b6d6d6d6d6d6c4f9d687501147901147901147901147901147901147901147901147901147901147954766b796c756b6d6d6d6d6d6c5552799f63765c799f69764f9e630121790121790121790121795455797600a26976549f69948c766b796c756b6d6d6c76012e79556e8b0120957f75780120957f777777880163766b796c766b796c766b796c757876827d7701199c647601209c675168696d51787700a0695279012879886d75012e79556e8b0120957f75780120957f7777770164766b796c766b796c766b796c7552798277528053797e5279827752807e52797e78827752807e787e5379a95379a97e5279a97ea97ea8777777885752797600a26976549f6994766b796c750164766b796c766b796c766b796c7577776e93765379a2636e7ca267006869777752797600a26976549f69597a78008763757868597a527951876375527968597a537952876375537968597a547953876375547968547a75587a587a587a587a587a75785479a0637867537968547a7572537a75686701157901157901157901157901157901157901157901157901157901157954766b796c756b6d6d6d6d6d6c4f9d687501147901147901147901147901147901147901147901147901147901147953766b796c756b6d6d6d6d6d6c5652799f63765c799f69764f9e630121790121790121790121795455797600a26976549f69948c766b796c756b6d6d6c76012e79566e8b0120957f75780120957f777777880160766b796c766b796c766b796c757876827d7701199c647601209c675168696d51787700a0695279012879886d75012e79566e8b0120957f75780120957f7777770161766b796c766b796c766b796c7552798277528053797e5279827752807e52797e78827752807e787e5379a95379a97e5279a97ea97ea8777777885752797600a26976549f6994766b796c750161766b796c766b796c766b796c7577776e93765379a2636e7ca267006869777752797600a26976549f69597a78008763757868597a527951876375527968597a537952876375537968597a547953876375547968547a75587a587a587a587a587a75785479a0637867537968547a7572537a75686701157901157901157901157901157901157901157901157901157901157953766b796c756b6d6d6d6d6d6c4f9d687501147901147901147901147901147901147901147901147901147901147952766b796c756b6d6d6d6d6d6c5752799f63765c799f69764f9e630121790121790121790121795455797600a26976549f69948c766b796c756b6d6d6c76012e79576e8b0120957f75780120957f77777788015d766b796c766b796c766b796c757876827d7701199c647601209c675168696d51787700a0695279012879886d75012e79576e8b0120957f75780120957f777777015e766b796c766b796c766b796c7552798277528053797e5279827752807e52797e78827752807e787e5379a95379a97e5279a97ea97ea8777777885752797600a26976549f6994766b796c75015e766b796c766b796c766b796c7577776e93765379a2636e7ca267006869777752797600a26976549f69597a78008763757868597a527951876375527968597a537952876375537968597a547953876375547968547a75587a587a587a587a587a75785479a0637867537968547a7572537a75686701157901157901157901157901157901157901157901157901157901157952766b796c756b6d6d6d6d6d6c4f9d687501147901147901147901147901147901147901147901147901147901147951766b796c756b6d6d6d6d6d6c5852799f63765c799f69764f9e630121790121790121790121795455797600a26976549f69948c766b796c756b6d6d6c76012e79586e8b0120957f75780120957f77777788015a766b796c766b796c766b796c757876827d7701199c647601209c675168696d51787700a0695279012879886d75012e79586e8b0120957f75780120957f777777015b766b796c766b796c766b796c7552798277528053797e5279827752807e52797e78827752807e787e5379a95379a97e5279a97ea97ea8777777885752797600a26976549f6994766b796c75015b766b796c766b796c766b796c7577776e93765379a2636e7ca267006869777752797600a26976549f69597a78008763757868597a527951876375527968597a537952876375537968597a547953876375547968547a75587a587a587a587a587a75785479a0637867537968547a7572537a75686701157901157901157901157901157901157901157901157901157901157951766b796c756b6d6d6d6d6d6c4f9d687501147901147901147901147901147901147901147901147901147901147900766b796c756b6d6d6d6d6d6c5952799f63765c799f69764f9e630121790121790121790121795455797600a26976549f69948c766b796c756b6d6d6c76012e79596e8b0120957f75780120957f777777880157766b796c766b796c766b796c757876827d7701199c647601209c675168696d51787700a0695279012879886d75012e79596e8b0120957f75780120957f7777770158766b796c766b796c766b796c7552798277528053797e5279827752807e52797e78827752807e787e5379a95379a97e5279a97ea97ea8777777885752797600a26976549f6994766b796c750158766b796c766b796c766b796c7577776e93765379a2636e7ca267006869777752797600a26976549f69597a78008763757868597a527951876375527968597a537952876375537968597a547953876375547968547a75587a587a587a587a587a75785479a0637867537968547a7572537a75686701157901157901157901157901157901157901157901157901157901157900766b796c756b6d6d6d6d6d6c4f9d68757800a263785b798c9c6700686901527900a2630152795aa1670068690000000000000158799f63029d00766b796c7877827700a069028a00766b796c78770112799f69764f9e63029500766b796c787700a0695752797600a26976549f6994766b796c75786e93765379a2636e7ca267006869777752797600a26976549f69597a78008763757868597a527951876375527968597a537952876375537968597a547953876375547968547a75587a587a587a587a587a75012a7953796f758277528053797e5279827752807e52797e78827752807e787e5379a95379a97e5279a97ea97ea877777702ab00766b796c7578880129790129790129790129795457797600a26976549f69948c766b796c756b6d6d6c557978028600766b796c755479527982777882777801209d7601209d537900a2695379767600a2637609ffffffffffffffff00a16700686976586e8b806e7c7f75007f6b6d6d6d6c55797e53797e6b6d6d6c777e567a757171557a55796d6d67029500766b796c75009d7801287901287901287901287953766b796c756b6d6d6c8791697801287901287901287901287952766b796c756b6d6d6c8791697801287901287901287901287951766b796c756b6d6d6c8791697801287901287901287901287900766b796c756b6d6d6c8791696f75028300766b796c7502ac00766b796c75527982777882777801209d7601209d537900a2695379767600a2637609ffffffffffffffff00a16700686976586e8b806e7c7f75007f6b6d6d6d6c55797e53797e6b6d6d6c777e537a757b7b527975686d67029d00766b796c758277009d028900766b796c754f9d029300766b796c75009d02a700766b796c750088017f766b796c75009d68510158799f63029c00766b796c7877827700a069028900766b796c78770112799f69764f9e63029400766b796c787700a0695752797600a26976549f6994766b796c75786e93765379a2636e7ca267006869777752797600a26976549f69597a78008763757868597a527951876375527968597a537952876375537968597a547953876375547968547a75587a587a587a587a587a75012a7953796f758277528053797e5279827752807e52797e78827752807e787e5379a95379a97e5279a97ea97ea877777702aa00766b796c7578880129790129790129790129795457797600a26976549f69948c766b796c756b6d6d6c557978028500766b796c755479527982777882777801209d7601209d537900a2695379767600a2637609ffffffffffffffff00a16700686976586e8b806e7c7f75007f6b6d6d6d6c55797e53797e6b6d6d6c777e567a757171557a55796d6d67029400766b796c75009d7801287901287901287901287953766b796c756b6d6d6c8791697801287901287901287901287952766b796c756b6d6d6c8791697801287901287901287901287951766b796c756b6d6d6c8791697801287901287901287901287900766b796c756b6d6d6c8791696f75028200766b796c7502ab00766b796c75527982777882777801209d7601209d537900a2695379767600a2637609ffffffffffffffff00a16700686976586e8b806e7c7f75007f6b6d6d6d6c55797e53797e6b6d6d6c777e537a757b7b527975686d67029c00766b796c758277009d028800766b796c754f9d029200766b796c75009d02a600766b796c750088017e766b796c75009d68520158799f63029b00766b796c7877827700a069028800766b796c78770112799f69764f9e63029300766b796c787700a0695752797600a26976549f6994766b796c75786e93765379a2636e7ca267006869777752797600a26976549f69597a78008763757868597a527951876375527968597a537952876375537968597a547953876375547968547a75587a587a587a587a587a75012a7953796f758277528053797e5279827752807e52797e78827752807e787e5379a95379a97e5279a97ea97ea877777702a900766b796c7578880129790129790129790129795457797600a26976549f69948c766b796c756b6d6d6c557978028400766b796c755479527982777882777801209d7601209d537900a2695379767600a2637609ffffffffffffffff00a16700686976586e8b806e7c7f75007f6b6d6d6d6c55797e53797e6b6d6d6c777e567a757171557a55796d6d67029300766b796c75009d7801287901287901287901287953766b796c756b6d6d6c8791697801287901287901287901287952766b796c756b6d6d6c8791697801287901287901287901287951766b796c756b6d6d6c8791697801287901287901287901287900766b796c756b6d6d6c8791696f75028100766b796c7502aa00766b796c75527982777882777801209d7601209d537900a2695379767600a2637609ffffffffffffffff00a16700686976586e8b806e7c7f75007f6b6d6d6d6c55797e53797e6b6d6d6c777e537a757b7b527975686d67029b00766b796c758277009d028700766b796c754f9d029100766b796c75009d02a500766b796c750088017d766b796c75009d68530158799f63029a00766b796c7877827700a069028700766b796c78770112799f69764f9e63029200766b796c787700a0695752797600a26976549f6994766b796c75786e93765379a2636e7ca267006869777752797600a26976549f69597a78008763757868597a527951876375527968597a537952876375537968597a547953876375547968547a75587a587a587a587a587a75012a7953796f758277528053797e5279827752807e52797e78827752807e787e5379a95379a97e5279a97ea97ea877777702a800766b796c7578880129790129790129790129795457797600a26976549f69948c766b796c756b6d6d6c557978028300766b796c755479527982777882777801209d7601209d537900a2695379767600a2637609ffffffffffffffff00a16700686976586e8b806e7c7f75007f6b6d6d6d6c55797e53797e6b6d6d6c777e567a757171557a55796d6d67029200766b796c75009d7801287901287901287901287953766b796c756b6d6d6c8791697801287901287901287901287952766b796c756b6d6d6c8791697801287901287901287901287951766b796c756b6d6d6c8791697801287901287901287901287900766b796c756b6d6d6c8791696f75028000766b796c7502a900766b796c75527982777882777801209d7601209d537900a2695379767600a2637609ffffffffffffffff00a16700686976586e8b806e7c7f75007f6b6d6d6d6c55797e53797e6b6d6d6c777e537a757b7b527975686d67029a00766b796c758277009d028600766b796c754f9d029000766b796c75009d02a400766b796c750088017c766b796c75009d68540158799f63029900766b796c7877827700a069028600766b796c78770112799f69764f9e63029100766b796c787700a0695752797600a26976549f6994766b796c75786e93765379a2636e7ca267006869777752797600a26976549f69597a78008763757868597a527951876375527968597a537952876375537968597a547953876375547968547a75587a587a587a587a587a75012a7953796f758277528053797e5279827752807e52797e78827752807e787e5379a95379a97e5279a97ea97ea877777702a700766b796c7578880129790129790129790129795457797600a26976549f69948c766b796c756b6d6d6c557978028200766b796c755479527982777882777801209d7601209d537900a2695379767600a2637609ffffffffffffffff00a16700686976586e8b806e7c7f75007f6b6d6d6d6c55797e53797e6b6d6d6c777e567a757171557a55796d6d67029100766b796c75009d7801287901287901287901287953766b796c756b6d6d6c8791697801287901287901287901287952766b796c756b6d6d6c8791697801287901287901287901287951766b796c756b6d6d6c8791697801287901287901287901287900766b796c756b6d6d6c8791696f75017f766b796c7502a800766b796c75527982777882777801209d7601209d537900a2695379767600a2637609ffffffffffffffff00a16700686976586e8b806e7c7f75007f6b6d6d6d6c55797e53797e6b6d6d6c777e537a757b7b527975686d67029900766b796c758277009d028500766b796c754f9d028f00766b796c75009d02a300766b796c750088017b766b796c75009d68550158799f63029800766b796c7877827700a069028500766b796c78770112799f69764f9e63029000766b796c787700a0695752797600a26976549f6994766b796c75786e93765379a2636e7ca267006869777752797600a26976549f69597a78008763757868597a527951876375527968597a537952876375537968597a547953876375547968547a75587a587a587a587a587a75012a7953796f758277528053797e5279827752807e52797e78827752807e787e5379a95379a97e5279a97ea97ea877777702a600766b796c7578880129790129790129790129795457797600a26976549f69948c766b796c756b6d6d6c557978028100766b796c755479527982777882777801209d7601209d537900a2695379767600a2637609ffffffffffffffff00a16700686976586e8b806e7c7f75007f6b6d6d6d6c55797e53797e6b6d6d6c777e567a757171557a55796d6d67029000766b796c75009d7801287901287901287901287953766b796c756b6d6d6c8791697801287901287901287901287952766b796c756b6d6d6c8791697801287901287901287901287951766b796c756b6d6d6c8791697801287901287901287901287900766b796c756b6d6d6c8791696f75017e766b796c7502a700766b796c75527982777882777801209d7601209d537900a2695379767600a2637609ffffffffffffffff00a16700686976586e8b806e7c7f75007f6b6d6d6d6c55797e53797e6b6d6d6c777e537a757b7b527975686d67029800766b796c758277009d028400766b796c754f9d028e00766b796c75009d02a200766b796c750088017a766b796c75009d68560158799f63029700766b796c7877827700a069028400766b796c78770112799f69764f9e63028f00766b796c787700a0695752797600a26976549f6994766b796c75786e93765379a2636e7ca267006869777752797600a26976549f69597a78008763757868597a527951876375527968597a537952876375537968597a547953876375547968547a75587a587a587a587a587a75012a7953796f758277528053797e5279827752807e52797e78827752807e787e5379a95379a97e5279a97ea97ea877777702a500766b796c7578880129790129790129790129795457797600a26976549f69948c766b796c756b6d6d6c557978028000766b796c755479527982777882777801209d7601209d537900a2695379767600a2637609ffffffffffffffff00a16700686976586e8b806e7c7f75007f6b6d6d6d6c55797e53797e6b6d6d6c777e567a757171557a55796d6d67028f00766b796c75009d7801287901287901287901287953766b796c756b6d6d6c8791697801287901287901287901287952766b796c756b6d6d6c8791697801287901287901287901287951766b796c756b6d6d6c8791697801287901287901287901287900766b796c756b6d6d6c8791696f75017d766b796c7502a600766b796c75527982777882777801209d7601209d537900a2695379767600a2637609ffffffffffffffff00a16700686976586e8b806e7c7f75007f6b6d6d6d6c55797e53797e6b6d6d6c777e537a757b7b527975686d67029700766b796c758277009d028300766b796c754f9d028d00766b796c75009d02a100766b796c7500880179766b796c75009d68570158799f63029600766b796c7877827700a069028300766b796c78770112799f69764f9e63028e00766b796c787700a0695752797600a26976549f6994766b796c75786e93765379a2636e7ca267006869777752797600a26976549f69597a78008763757868597a527951876375527968597a537952876375537968597a547953876375547968547a75587a587a587a587a587a75012a7953796f758277528053797e5279827752807e52797e78827752807e787e5379a95379a97e5279a97ea97ea877777702a400766b796c7578880129790129790129790129795457797600a26976549f69948c766b796c756b6d6d6c557978017f766b796c755479527982777882777801209d7601209d537900a2695379767600a2637609ffffffffffffffff00a16700686976586e8b806e7c7f75007f6b6d6d6d6c55797e53797e6b6d6d6c777e567a757171557a55796d6d67028e00766b796c75009d7801287901287901287901287953766b796c756b6d6d6c8791697801287901287901287901287952766b796c756b6d6d6c8791697801287901287901287901287951766b796c756b6d6d6c8791697801287901287901287901287900766b796c756b6d6d6c8791696f75017c766b796c7502a500766b796c75527982777882777801209d7601209d537900a2695379767600a2637609ffffffffffffffff00a16700686976586e8b806e7c7f75007f6b6d6d6d6c55797e53797e6b6d6d6c777e537a757b7b527975686d67029600766b796c758277009d028200766b796c754f9d028c00766b796c75009d02a000766b796c7500880178766b796c75009d68580158799f63029500766b796c7877827700a069028200766b796c78770112799f69764f9e63028d00766b796c787700a0695752797600a26976549f6994766b796c75786e93765379a2636e7ca267006869777752797600a26976549f69597a78008763757868597a527951876375527968597a537952876375537968597a547953876375547968547a75587a587a587a587a587a75012a7953796f758277528053797e5279827752807e52797e78827752807e787e5379a95379a97e5279a97ea97ea877777702a300766b796c7578880129790129790129790129795457797600a26976549f69948c766b796c756b6d6d6c557978017e766b796c755479527982777882777801209d7601209d537900a2695379767600a2637609ffffffffffffffff00a16700686976586e8b806e7c7f75007f6b6d6d6d6c55797e53797e6b6d6d6c777e567a757171557a55796d6d67028d00766b796c75009d7801287901287901287901287953766b796c756b6d6d6c8791697801287901287901287901287952766b796c756b6d6d6c8791697801287901287901287901287951766b796c756b6d6d6c8791697801287901287901287901287900766b796c756b6d6d6c8791696f75017b766b796c7502a400766b796c75527982777882777801209d7601209d537900a2695379767600a2637609ffffffffffffffff00a16700686976586e8b806e7c7f75007f6b6d6d6d6c55797e53797e6b6d6d6c777e537a757b7b527975686d67029500766b796c758277009d028100766b796c754f9d028b00766b796c75009d029f00766b796c7500880177766b796c75009d68590158799f63029400766b796c7877827700a069028100766b796c78770112799f69764f9e63028c00766b796c787700a0695752797600a26976549f6994766b796c75786e93765379a2636e7ca267006869777752797600a26976549f69597a78008763757868597a527951876375527968597a537952876375537968597a547953876375547968547a75587a587a587a587a587a75012a7953796f758277528053797e5279827752807e52797e78827752807e787e5379a95379a97e5279a97ea97ea877777702a200766b796c7578880129790129790129790129795457797600a26976549f69948c766b796c756b6d6d6c557978017d766b796c755479527982777882777801209d7601209d537900a2695379767600a2637609ffffffffffffffff00a16700686976586e8b806e7c7f75007f6b6d6d6d6c55797e53797e6b6d6d6c777e567a757171557a55796d6d67028c00766b796c75009d7801287901287901287901287953766b796c756b6d6d6c8791697801287901287901287901287952766b796c756b6d6d6c8791697801287901287901287901287951766b796c756b6d6d6c8791697801287901287901287901287900766b796c756b6d6d6c8791696f75017a766b796c7502a300766b796c75527982777882777801209d7601209d537900a2695379767600a2637609ffffffffffffffff00a16700686976586e8b806e7c7f75007f6b6d6d6d6c55797e53797e6b6d6d6c777e537a757b7b527975686d67029400766b796c758277009d028000766b796c754f9d028a00766b796c75009d029e00766b796c7500880176766b796c75009d685a766b796c7501227901227901227901227953766b796c756b6d6d6c9d5a766b796c7555766b796c75011f79011f79011f79011f7953766b796c756b6d6d6c6e93765379a2636e7ca26700686977779d0060799f635a766b796c7500a069675a766b796c75009d54766b796c75009d01217901217901217901217953766b796c756b6d6d6c009d011d79011d79011d79011d7953766b796c756b6d6d6c009d6859766b796c7501227901227901227901227952766b796c756b6d6d6c9d59766b796c7554766b796c75011f79011f79011f79011f7952766b796c756b6d6d6c6e93765379a2636e7ca26700686977779d5160799f6359766b796c7500a0696759766b796c75009d53766b796c75009d01217901217901217901217952766b796c756b6d6d6c009d011d79011d79011d79011d7952766b796c756b6d6d6c009d6858766b796c7501227901227901227901227951766b796c756b6d6d6c9d58766b796c7553766b796c75011f79011f79011f79011f7951766b796c756b6d6d6c6e93765379a2636e7ca26700686977779d5260799f6358766b796c7500a0696758766b796c75009d52766b796c75009d01217901217901217901217951766b796c756b6d6d6c009d011d79011d79011d79011d7951766b796c756b6d6d6c009d6857766b796c7501227901227901227901227900766b796c756b6d6d6c9d57766b796c7552766b796c75011f79011f79011f79011f7900766b796c756b6d6d6c6e93765379a2636e7ca26700686977779d5360799f6357766b796c7500a0696757766b796c75009d51766b796c75009d01217901217901217901217900766b796c756b6d6d6c009d011d79011d79011d79011d7900766b796c756b6d6d6c009d6876aa014d79876b6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6c"
|
|
447
447
|
}
|
|
@@ -12,9 +12,9 @@ import "../scrypt-ts-opcat/assets/smart-contract/builtin-libs/stateUtils.scrypt"
|
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
|
|
15
|
-
contract
|
|
15
|
+
contract _opcat_labs_cat_sdk_1_0_3__rs__CAT20Guard {
|
|
16
16
|
constructor(){}
|
|
17
|
-
public function unlock(bytes[
|
|
17
|
+
public function unlock(bytes[10] nextStateHashes, bytes[10] ownerAddrOrScriptHashes, int[10] outputTokens, int[10] tokenScriptHashIndexes, int[10] outputSatoshis, _opcat_labs_cat_sdk_1_0_3__rs__CAT20State[10] cat20States, int outputCount, _opcat_labs_scrypt_ts_opcat_1_0_4__rs__SHPreimage __scrypt_ts_shPreimage, _opcat_labs_cat_sdk_1_0_3__rs__CAT20GuardConstState __scrypt_ts_curState, bytes __scrypt_ts_spentAmounts, bytes __scrypt_ts_spentDataHashes, bytes __scrypt_ts_spentScriptHashes) {
|
|
18
18
|
require(Tx.checkPreimageSigHashType(_opcat_labs_scrypt_ts_opcat_1_0_4__rs__ContextUtils.serializeSHPreimage(__scrypt_ts_shPreimage), SigHash.ALL));
|
|
19
19
|
|
|
20
20
|
int __scrypt_ts_inputCount = _opcat_labs_scrypt_ts_opcat_1_0_4__rs__ContextUtils.checkSpentAmounts(__scrypt_ts_spentAmounts, __scrypt_ts_shPreimage.hashSpentAmounts);
|
|
@@ -23,13 +23,13 @@ contract _opcat_labs_cat_sdk_1_0_2__rs__CAT20Guard {
|
|
|
23
23
|
|
|
24
24
|
_opcat_labs_scrypt_ts_opcat_1_0_4__rs__ContextUtils.checkSpentDataHashes(__scrypt_ts_spentDataHashes, __scrypt_ts_shPreimage.hashSpentDataHashes, __scrypt_ts_inputCount);
|
|
25
25
|
|
|
26
|
-
|
|
26
|
+
_opcat_labs_cat_sdk_1_0_3__rs__CAT20GuardConstState __scrypt_ts_nextState = __scrypt_ts_curState;
|
|
27
27
|
|
|
28
|
-
_opcat_labs_scrypt_ts_opcat_1_0_4__rs__StateUtils.checkInputState(__scrypt_ts_shPreimage.inputIndex,
|
|
28
|
+
_opcat_labs_scrypt_ts_opcat_1_0_4__rs__StateUtils.checkInputState(__scrypt_ts_shPreimage.inputIndex, _opcat_labs_cat_sdk_1_0_3__rs__CAT20Guard.stateHash(__scrypt_ts_curState), __scrypt_ts_spentDataHashes);
|
|
29
29
|
|
|
30
|
-
|
|
30
|
+
_opcat_labs_cat_sdk_1_0_3__rs__CAT20GuardStateLib.formalCheckState(__scrypt_ts_nextState);
|
|
31
31
|
int inputTokenTypes = 0;
|
|
32
|
-
bytes[4] tokenScriptPlaceholders = [
|
|
32
|
+
bytes[4] tokenScriptPlaceholders = [_opcat_labs_cat_sdk_1_0_3__rs__ConstantsLib.TOKEN_SCRIPT_HASH_PLACEHOLDER_FF, _opcat_labs_cat_sdk_1_0_3__rs__ConstantsLib.TOKEN_SCRIPT_HASH_PLACEHOLDER_FE, _opcat_labs_cat_sdk_1_0_3__rs__ConstantsLib.TOKEN_SCRIPT_HASH_PLACEHOLDER_FD, _opcat_labs_cat_sdk_1_0_3__rs__ConstantsLib.TOKEN_SCRIPT_HASH_PLACEHOLDER_FC];
|
|
33
33
|
loop (4) : i {
|
|
34
34
|
if(__scrypt_ts_nextState.tokenScriptHashes[i] != tokenScriptPlaceholders[i]) {
|
|
35
35
|
inputTokenTypes++;
|
|
@@ -47,16 +47,16 @@ contract _opcat_labs_cat_sdk_1_0_2__rs__CAT20Guard {
|
|
|
47
47
|
int[4] sumInputTokens = repeat(0, 4);
|
|
48
48
|
int tokenScriptIndexMax = -1;
|
|
49
49
|
int inputCount = __scrypt_ts_inputCount;
|
|
50
|
-
loop (
|
|
50
|
+
loop (10) : i {
|
|
51
51
|
int tokenScriptIndex = __scrypt_ts_nextState.tokenScriptIndexes[(i)];
|
|
52
52
|
if(i < inputCount) {
|
|
53
53
|
require(tokenScriptIndex < inputTokenTypes);
|
|
54
54
|
if(tokenScriptIndex != -1) {
|
|
55
55
|
bytes tokenScriptHash = __scrypt_ts_nextState.tokenScriptHashes[(tokenScriptIndex)];
|
|
56
56
|
require(tokenScriptHash == _opcat_labs_scrypt_ts_opcat_1_0_4__rs__ContextUtils.getSpentScriptHash(__scrypt_ts_spentScriptHashes, (i)));
|
|
57
|
-
|
|
58
|
-
require(_opcat_labs_scrypt_ts_opcat_1_0_4__rs__ContextUtils.getSpentDataHash(__scrypt_ts_spentDataHashes, (i)) ==
|
|
59
|
-
sumInputTokens[(tokenScriptIndex)] =
|
|
57
|
+
_opcat_labs_cat_sdk_1_0_3__rs__CAT20StateLib.checkState(cat20States[i]);
|
|
58
|
+
require(_opcat_labs_scrypt_ts_opcat_1_0_4__rs__ContextUtils.getSpentDataHash(__scrypt_ts_spentDataHashes, (i)) == _opcat_labs_cat_sdk_1_0_3__rs__CAT20StateLib.stateHash(cat20States[i]));
|
|
59
|
+
sumInputTokens[(tokenScriptIndex)] = _opcat_labs_cat_sdk_1_0_3__rs__SafeMath.add(sumInputTokens[(tokenScriptIndex)], cat20States[i].amount);
|
|
60
60
|
tokenScriptIndexMax = tokenScriptIndex > tokenScriptIndexMax ? tokenScriptIndex : tokenScriptIndexMax;
|
|
61
61
|
}
|
|
62
62
|
} else {
|
|
@@ -64,10 +64,10 @@ contract _opcat_labs_cat_sdk_1_0_2__rs__CAT20Guard {
|
|
|
64
64
|
}
|
|
65
65
|
}
|
|
66
66
|
require(tokenScriptIndexMax >= 0 && tokenScriptIndexMax == inputTokenTypes - 1);
|
|
67
|
-
require(outputCount >= 0 && outputCount <=
|
|
67
|
+
require(outputCount >= 0 && outputCount <= 10);
|
|
68
68
|
int[4] sumOutputTokens = repeat(0, 4);
|
|
69
69
|
bytes outputs = b'';
|
|
70
|
-
loop (
|
|
70
|
+
loop (10) : i {
|
|
71
71
|
if(i < outputCount) {
|
|
72
72
|
bytes ownerAddrOrScriptHash = ownerAddrOrScriptHashes[i];
|
|
73
73
|
require(len(ownerAddrOrScriptHash) > 0);
|
|
@@ -76,8 +76,8 @@ contract _opcat_labs_cat_sdk_1_0_2__rs__CAT20Guard {
|
|
|
76
76
|
if(tokenScriptHashIndex != -1) {
|
|
77
77
|
int tokenAmount = outputTokens[i];
|
|
78
78
|
require(tokenAmount > 0);
|
|
79
|
-
sumOutputTokens[(tokenScriptHashIndex)] =
|
|
80
|
-
bytes tokenStateHash =
|
|
79
|
+
sumOutputTokens[(tokenScriptHashIndex)] = _opcat_labs_cat_sdk_1_0_3__rs__SafeMath.add(sumOutputTokens[(tokenScriptHashIndex)], tokenAmount);
|
|
80
|
+
bytes tokenStateHash = _opcat_labs_cat_sdk_1_0_3__rs__CAT20StateLib.stateHash({_opcat_labs_cat_sdk_1_0_3__rs__ConstantsLib.OPCAT_CAT20_TAG, ownerAddrOrScriptHash, tokenAmount});
|
|
81
81
|
require(nextStateHashes[i] == tokenStateHash);
|
|
82
82
|
bytes tokenScriptHash = __scrypt_ts_nextState.tokenScriptHashes[(tokenScriptHashIndex)];
|
|
83
83
|
outputs += _opcat_labs_scrypt_ts_opcat_1_0_4__rs__TxUtils.buildDataOutput(tokenScriptHash, outputSatoshis[i], tokenStateHash);
|
|
@@ -98,7 +98,7 @@ contract _opcat_labs_cat_sdk_1_0_2__rs__CAT20Guard {
|
|
|
98
98
|
}
|
|
99
99
|
loop (4) : i {
|
|
100
100
|
require(sumInputTokens[i] == __scrypt_ts_nextState.tokenAmounts[i]);
|
|
101
|
-
require(sumInputTokens[i] ==
|
|
101
|
+
require(sumInputTokens[i] == _opcat_labs_cat_sdk_1_0_3__rs__SafeMath.add(sumOutputTokens[i], __scrypt_ts_nextState.tokenBurnAmounts[i]));
|
|
102
102
|
if(i < (inputTokenTypes)) {
|
|
103
103
|
require(sumInputTokens[i] > 0);
|
|
104
104
|
} else {
|
|
@@ -110,10 +110,10 @@ contract _opcat_labs_cat_sdk_1_0_2__rs__CAT20Guard {
|
|
|
110
110
|
}
|
|
111
111
|
require(hash256(outputs) == __scrypt_ts_shPreimage.hashOutputs);
|
|
112
112
|
}
|
|
113
|
-
static function serializeState(
|
|
114
|
-
return num2bin(len(__scrypt_ts_curState.tokenScriptHashes[0]), 2) + __scrypt_ts_curState.tokenScriptHashes[0] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[1]), 2) + __scrypt_ts_curState.tokenScriptHashes[1] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[2]), 2) + __scrypt_ts_curState.tokenScriptHashes[2] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[3]), 2) + __scrypt_ts_curState.tokenScriptHashes[3] + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenAmounts[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[0])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[1])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[2])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[3])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[4])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[4]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[5])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[5]) + hash160(hash160(__scrypt_ts_curState.tokenScriptHashes[0]) + hash160(__scrypt_ts_curState.tokenScriptHashes[1]) + hash160(__scrypt_ts_curState.tokenScriptHashes[2]) + hash160(__scrypt_ts_curState.tokenScriptHashes[3]) + hash160(pack(__scrypt_ts_curState.tokenAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[3])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[3])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[0])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[1])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[2])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[3])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[4])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[5])));
|
|
113
|
+
static function serializeState(_opcat_labs_cat_sdk_1_0_3__rs__CAT20GuardConstState __scrypt_ts_curState): bytes {
|
|
114
|
+
return num2bin(len(__scrypt_ts_curState.tokenScriptHashes[0]), 2) + __scrypt_ts_curState.tokenScriptHashes[0] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[1]), 2) + __scrypt_ts_curState.tokenScriptHashes[1] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[2]), 2) + __scrypt_ts_curState.tokenScriptHashes[2] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[3]), 2) + __scrypt_ts_curState.tokenScriptHashes[3] + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenAmounts[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[0])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[1])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[2])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[3])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[4])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[4]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[5])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[5]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[6])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[6]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[7])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[7]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[8])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[8]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[9])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[9]) + hash160(hash160(__scrypt_ts_curState.tokenScriptHashes[0]) + hash160(__scrypt_ts_curState.tokenScriptHashes[1]) + hash160(__scrypt_ts_curState.tokenScriptHashes[2]) + hash160(__scrypt_ts_curState.tokenScriptHashes[3]) + hash160(pack(__scrypt_ts_curState.tokenAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[3])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[3])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[0])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[1])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[2])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[3])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[4])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[5])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[6])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[7])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[8])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[9])));
|
|
115
115
|
}
|
|
116
|
-
static function stateHash(
|
|
117
|
-
return sha256(num2bin(len(__scrypt_ts_curState.tokenScriptHashes[0]), 2) + __scrypt_ts_curState.tokenScriptHashes[0] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[1]), 2) + __scrypt_ts_curState.tokenScriptHashes[1] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[2]), 2) + __scrypt_ts_curState.tokenScriptHashes[2] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[3]), 2) + __scrypt_ts_curState.tokenScriptHashes[3] + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenAmounts[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[0])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[1])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[2])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[3])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[4])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[4]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[5])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[5]) + hash160(hash160(__scrypt_ts_curState.tokenScriptHashes[0]) + hash160(__scrypt_ts_curState.tokenScriptHashes[1]) + hash160(__scrypt_ts_curState.tokenScriptHashes[2]) + hash160(__scrypt_ts_curState.tokenScriptHashes[3]) + hash160(pack(__scrypt_ts_curState.tokenAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[3])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[3])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[0])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[1])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[2])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[3])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[4])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[5]))));
|
|
116
|
+
static function stateHash(_opcat_labs_cat_sdk_1_0_3__rs__CAT20GuardConstState __scrypt_ts_curState): bytes {
|
|
117
|
+
return sha256(num2bin(len(__scrypt_ts_curState.tokenScriptHashes[0]), 2) + __scrypt_ts_curState.tokenScriptHashes[0] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[1]), 2) + __scrypt_ts_curState.tokenScriptHashes[1] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[2]), 2) + __scrypt_ts_curState.tokenScriptHashes[2] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[3]), 2) + __scrypt_ts_curState.tokenScriptHashes[3] + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenAmounts[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[0])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[1])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[2])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[3])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[4])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[4]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[5])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[5]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[6])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[6]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[7])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[7]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[8])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[8]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[9])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[9]) + hash160(hash160(__scrypt_ts_curState.tokenScriptHashes[0]) + hash160(__scrypt_ts_curState.tokenScriptHashes[1]) + hash160(__scrypt_ts_curState.tokenScriptHashes[2]) + hash160(__scrypt_ts_curState.tokenScriptHashes[3]) + hash160(pack(__scrypt_ts_curState.tokenAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[3])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[3])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[0])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[1])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[2])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[3])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[4])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[5])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[6])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[7])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[8])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[9]))));
|
|
118
118
|
}
|
|
119
119
|
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 10,
|
|
3
3
|
"compilerVersion": "1.21.0+commit.2ada378",
|
|
4
|
-
"contract": "
|
|
4
|
+
"contract": "_opcat_labs_cat_sdk_1_0_3__rs__CAT20GuardStateLib",
|
|
5
5
|
"md5": "d41d8cd98f00b204e9800998ecf8427e",
|
|
6
6
|
"structs": [
|
|
7
7
|
{
|
|
8
|
-
"name": "
|
|
8
|
+
"name": "_opcat_labs_cat_sdk_1_0_3__rs__CAT20GuardConstState",
|
|
9
9
|
"params": [
|
|
10
10
|
{
|
|
11
11
|
"name": "tokenScriptHashes",
|
|
@@ -21,13 +21,13 @@
|
|
|
21
21
|
},
|
|
22
22
|
{
|
|
23
23
|
"name": "tokenScriptIndexes",
|
|
24
|
-
"type": "int[
|
|
24
|
+
"type": "int[10]"
|
|
25
25
|
}
|
|
26
26
|
],
|
|
27
27
|
"genericTypes": []
|
|
28
28
|
},
|
|
29
29
|
{
|
|
30
|
-
"name": "
|
|
30
|
+
"name": "_opcat_labs_cat_sdk_1_0_3__rs__CAT20State",
|
|
31
31
|
"params": [
|
|
32
32
|
{
|
|
33
33
|
"name": "tag",
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"genericTypes": []
|
|
46
46
|
},
|
|
47
47
|
{
|
|
48
|
-
"name": "
|
|
48
|
+
"name": "_opcat_labs_cat_sdk_1_0_3__rs__CAT20ClosedMinterState",
|
|
49
49
|
"params": [
|
|
50
50
|
{
|
|
51
51
|
"name": "tag",
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
"genericTypes": []
|
|
60
60
|
},
|
|
61
61
|
{
|
|
62
|
-
"name": "
|
|
62
|
+
"name": "_opcat_labs_cat_sdk_1_0_3__rs__ClosedMinterCAT20Meta",
|
|
63
63
|
"params": [
|
|
64
64
|
{
|
|
65
65
|
"name": "tag",
|
|
@@ -85,7 +85,7 @@
|
|
|
85
85
|
"genericTypes": []
|
|
86
86
|
},
|
|
87
87
|
{
|
|
88
|
-
"name": "
|
|
88
|
+
"name": "_opcat_labs_cat_sdk_1_0_3__rs__OpenMinterCAT20Meta",
|
|
89
89
|
"params": [
|
|
90
90
|
{
|
|
91
91
|
"name": "tag",
|
|
@@ -127,7 +127,7 @@
|
|
|
127
127
|
"genericTypes": []
|
|
128
128
|
},
|
|
129
129
|
{
|
|
130
|
-
"name": "
|
|
130
|
+
"name": "_opcat_labs_cat_sdk_1_0_3__rs__CAT20OpenMinterState",
|
|
131
131
|
"params": [
|
|
132
132
|
{
|
|
133
133
|
"name": "tag",
|
|
@@ -321,11 +321,11 @@
|
|
|
321
321
|
],
|
|
322
322
|
"library": [
|
|
323
323
|
{
|
|
324
|
-
"name": "
|
|
324
|
+
"name": "_opcat_labs_cat_sdk_1_0_3__rs__CAT20GuardStateLib",
|
|
325
325
|
"params": [],
|
|
326
326
|
"properties": [],
|
|
327
327
|
"genericTypes": [],
|
|
328
|
-
"stateType": "
|
|
328
|
+
"stateType": "_opcat_labs_cat_sdk_1_0_3__rs__CAT20GuardConstState"
|
|
329
329
|
},
|
|
330
330
|
{
|
|
331
331
|
"name": "_opcat_labs_scrypt_ts_opcat_1_0_4__rs__TxUtils",
|
|
@@ -354,7 +354,7 @@
|
|
|
354
354
|
}
|
|
355
355
|
],
|
|
356
356
|
"stateProps": [],
|
|
357
|
-
"stateType": "
|
|
357
|
+
"stateType": "_opcat_labs_cat_sdk_1_0_3__rs__CAT20GuardConstState",
|
|
358
358
|
"buildType": "release",
|
|
359
359
|
"file": "..\\cat20GuardStateLib.scrypt",
|
|
360
360
|
"hex": ""
|
|
@@ -5,16 +5,16 @@ import "../scrypt-ts-opcat/assets/smart-contract/builtin-libs/contextUtils.scryp
|
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
|
|
8
|
-
library
|
|
9
|
-
static function formalCheckState(
|
|
10
|
-
|
|
8
|
+
library _opcat_labs_cat_sdk_1_0_3__rs__CAT20GuardStateLib {
|
|
9
|
+
static function formalCheckState(_opcat_labs_cat_sdk_1_0_3__rs__CAT20GuardConstState _state) : bytes {
|
|
10
|
+
_opcat_labs_cat_sdk_1_0_3__rs__CAT20GuardStateLib.checkTokenScriptsUniq(_state.tokenScriptHashes);
|
|
11
11
|
loop (4) : i {
|
|
12
12
|
int scriptLen = len(_state.tokenScriptHashes[i]);
|
|
13
13
|
require(scriptLen == 32);
|
|
14
14
|
require(_state.tokenAmounts[i] >= 0);
|
|
15
15
|
require(_state.tokenBurnAmounts[i] >= 0);
|
|
16
16
|
}
|
|
17
|
-
loop (
|
|
17
|
+
loop (10) : i {
|
|
18
18
|
int scriptIndex = _state.tokenScriptIndexes[i];
|
|
19
19
|
require(scriptIndex >= -1 && scriptIndex < 4);
|
|
20
20
|
}
|
|
@@ -29,10 +29,10 @@ library _opcat_labs_cat_sdk_1_0_2__rs__CAT20GuardStateLib {
|
|
|
29
29
|
require(tokenScripts[2] != tokenScripts[3]);
|
|
30
30
|
return true;
|
|
31
31
|
}
|
|
32
|
-
static function serializeState(
|
|
33
|
-
return num2bin(len(__scrypt_ts_curState.tokenScriptHashes[0]), 2) + __scrypt_ts_curState.tokenScriptHashes[0] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[1]), 2) + __scrypt_ts_curState.tokenScriptHashes[1] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[2]), 2) + __scrypt_ts_curState.tokenScriptHashes[2] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[3]), 2) + __scrypt_ts_curState.tokenScriptHashes[3] + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenAmounts[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[0])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[1])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[2])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[3])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[4])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[4]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[5])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[5]) + hash160(hash160(__scrypt_ts_curState.tokenScriptHashes[0]) + hash160(__scrypt_ts_curState.tokenScriptHashes[1]) + hash160(__scrypt_ts_curState.tokenScriptHashes[2]) + hash160(__scrypt_ts_curState.tokenScriptHashes[3]) + hash160(pack(__scrypt_ts_curState.tokenAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[3])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[3])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[0])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[1])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[2])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[3])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[4])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[5])));
|
|
32
|
+
static function serializeState(_opcat_labs_cat_sdk_1_0_3__rs__CAT20GuardConstState __scrypt_ts_curState): bytes {
|
|
33
|
+
return num2bin(len(__scrypt_ts_curState.tokenScriptHashes[0]), 2) + __scrypt_ts_curState.tokenScriptHashes[0] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[1]), 2) + __scrypt_ts_curState.tokenScriptHashes[1] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[2]), 2) + __scrypt_ts_curState.tokenScriptHashes[2] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[3]), 2) + __scrypt_ts_curState.tokenScriptHashes[3] + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenAmounts[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[0])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[1])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[2])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[3])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[4])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[4]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[5])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[5]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[6])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[6]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[7])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[7]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[8])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[8]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[9])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[9]) + hash160(hash160(__scrypt_ts_curState.tokenScriptHashes[0]) + hash160(__scrypt_ts_curState.tokenScriptHashes[1]) + hash160(__scrypt_ts_curState.tokenScriptHashes[2]) + hash160(__scrypt_ts_curState.tokenScriptHashes[3]) + hash160(pack(__scrypt_ts_curState.tokenAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[3])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[3])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[0])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[1])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[2])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[3])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[4])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[5])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[6])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[7])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[8])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[9])));
|
|
34
34
|
}
|
|
35
|
-
static function stateHash(
|
|
36
|
-
return sha256(num2bin(len(__scrypt_ts_curState.tokenScriptHashes[0]), 2) + __scrypt_ts_curState.tokenScriptHashes[0] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[1]), 2) + __scrypt_ts_curState.tokenScriptHashes[1] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[2]), 2) + __scrypt_ts_curState.tokenScriptHashes[2] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[3]), 2) + __scrypt_ts_curState.tokenScriptHashes[3] + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenAmounts[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[0])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[1])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[2])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[3])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[4])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[4]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[5])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[5]) + hash160(hash160(__scrypt_ts_curState.tokenScriptHashes[0]) + hash160(__scrypt_ts_curState.tokenScriptHashes[1]) + hash160(__scrypt_ts_curState.tokenScriptHashes[2]) + hash160(__scrypt_ts_curState.tokenScriptHashes[3]) + hash160(pack(__scrypt_ts_curState.tokenAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[3])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[3])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[0])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[1])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[2])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[3])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[4])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[5]))));
|
|
35
|
+
static function stateHash(_opcat_labs_cat_sdk_1_0_3__rs__CAT20GuardConstState __scrypt_ts_curState): bytes {
|
|
36
|
+
return sha256(num2bin(len(__scrypt_ts_curState.tokenScriptHashes[0]), 2) + __scrypt_ts_curState.tokenScriptHashes[0] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[1]), 2) + __scrypt_ts_curState.tokenScriptHashes[1] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[2]), 2) + __scrypt_ts_curState.tokenScriptHashes[2] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[3]), 2) + __scrypt_ts_curState.tokenScriptHashes[3] + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenAmounts[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[0])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[1])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[2])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[3])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[4])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[4]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[5])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[5]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[6])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[6]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[7])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[7]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[8])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[8]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[9])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[9]) + hash160(hash160(__scrypt_ts_curState.tokenScriptHashes[0]) + hash160(__scrypt_ts_curState.tokenScriptHashes[1]) + hash160(__scrypt_ts_curState.tokenScriptHashes[2]) + hash160(__scrypt_ts_curState.tokenScriptHashes[3]) + hash160(pack(__scrypt_ts_curState.tokenAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[3])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[3])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[0])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[1])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[2])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[3])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[4])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[5])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[6])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[7])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[8])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[9]))));
|
|
37
37
|
}
|
|
38
38
|
}
|