@sidhujag/sysweb3-keyring 1.0.547 → 1.0.549
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/{dist/cjs → cjs}/providers.js +1 -64
- package/cjs/providers.js.map +1 -0
- package/{dist/cjs → cjs}/transactions/ethereum.js +1 -16
- package/cjs/transactions/ethereum.js.map +1 -0
- package/package.json +2 -30
- package/{dist/types → types}/providers.d.ts +0 -8
- package/{dist/types → types}/transactions/ethereum.d.ts +2 -2
- package/{dist/types → types}/types.d.ts +2 -2
- package/coverage/clover.xml +0 -2875
- package/coverage/coverage-final.json +0 -29468
- package/coverage/lcov-report/base.css +0 -354
- package/coverage/lcov-report/block-navigation.js +0 -85
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +0 -320
- package/coverage/lcov-report/prettify.css +0 -101
- package/coverage/lcov-report/prettify.js +0 -1008
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +0 -191
- package/coverage/lcov-report/src/index.html +0 -276
- package/coverage/lcov-report/src/index.ts.html +0 -114
- package/coverage/lcov-report/src/initial-state.ts.html +0 -558
- package/coverage/lcov-report/src/keyring-manager.ts.html +0 -6279
- package/coverage/lcov-report/src/ledger/bitcoin_client/index.html +0 -178
- package/coverage/lcov-report/src/ledger/bitcoin_client/index.ts.html +0 -144
- package/coverage/lcov-report/src/ledger/bitcoin_client/lib/appClient.ts.html +0 -1560
- package/coverage/lcov-report/src/ledger/bitcoin_client/lib/bip32.ts.html +0 -276
- package/coverage/lcov-report/src/ledger/bitcoin_client/lib/buffertools.ts.html +0 -495
- package/coverage/lcov-report/src/ledger/bitcoin_client/lib/clientCommands.ts.html +0 -1138
- package/coverage/lcov-report/src/ledger/bitcoin_client/lib/index.html +0 -363
- package/coverage/lcov-report/src/ledger/bitcoin_client/lib/merkelizedPsbt.ts.html +0 -289
- package/coverage/lcov-report/src/ledger/bitcoin_client/lib/merkle.ts.html +0 -486
- package/coverage/lcov-report/src/ledger/bitcoin_client/lib/merkleMap.ts.html +0 -240
- package/coverage/lcov-report/src/ledger/bitcoin_client/lib/policy.ts.html +0 -342
- package/coverage/lcov-report/src/ledger/bitcoin_client/lib/psbtv2.ts.html +0 -2388
- package/coverage/lcov-report/src/ledger/bitcoin_client/lib/varint.ts.html +0 -453
- package/coverage/lcov-report/src/ledger/consts.ts.html +0 -177
- package/coverage/lcov-report/src/ledger/index.html +0 -216
- package/coverage/lcov-report/src/ledger/index.ts.html +0 -1371
- package/coverage/lcov-report/src/ledger/utils.ts.html +0 -102
- package/coverage/lcov-report/src/signers.ts.html +0 -591
- package/coverage/lcov-report/src/storage.ts.html +0 -198
- package/coverage/lcov-report/src/transactions/ethereum.ts.html +0 -5826
- package/coverage/lcov-report/src/transactions/index.html +0 -216
- package/coverage/lcov-report/src/transactions/index.ts.html +0 -93
- package/coverage/lcov-report/src/transactions/syscoin.ts.html +0 -1521
- package/coverage/lcov-report/src/trezor/index.html +0 -176
- package/coverage/lcov-report/src/trezor/index.ts.html +0 -2655
- package/coverage/lcov-report/src/types.ts.html +0 -1443
- package/coverage/lcov-report/src/utils/derivation-paths.ts.html +0 -486
- package/coverage/lcov-report/src/utils/index.html +0 -196
- package/coverage/lcov-report/src/utils/psbt.ts.html +0 -159
- package/coverage/lcov-report/test/helpers/constants.ts.html +0 -627
- package/coverage/lcov-report/test/helpers/index.html +0 -176
- package/coverage/lcov.info +0 -4832
- package/dist/cjs/providers.js.map +0 -1
- package/dist/cjs/transactions/ethereum.js.map +0 -1
- package/dist/package.json +0 -50
- package/examples/basic-usage.js +0 -140
- package/jest.config.js +0 -32
- package/readme.md +0 -201
- package/src/declare.d.ts +0 -7
- package/src/errorUtils.ts +0 -83
- package/src/hardware-wallet-manager.ts +0 -655
- package/src/index.ts +0 -12
- package/src/initial-state.ts +0 -108
- package/src/keyring-manager.ts +0 -2698
- package/src/ledger/bitcoin_client/index.ts +0 -19
- package/src/ledger/bitcoin_client/lib/appClient.ts +0 -405
- package/src/ledger/bitcoin_client/lib/bip32.ts +0 -61
- package/src/ledger/bitcoin_client/lib/buffertools.ts +0 -134
- package/src/ledger/bitcoin_client/lib/clientCommands.ts +0 -356
- package/src/ledger/bitcoin_client/lib/constants.ts +0 -12
- package/src/ledger/bitcoin_client/lib/merkelizedPsbt.ts +0 -65
- package/src/ledger/bitcoin_client/lib/merkle.ts +0 -136
- package/src/ledger/bitcoin_client/lib/merkleMap.ts +0 -49
- package/src/ledger/bitcoin_client/lib/policy.ts +0 -91
- package/src/ledger/bitcoin_client/lib/psbtv2.ts +0 -768
- package/src/ledger/bitcoin_client/lib/varint.ts +0 -120
- package/src/ledger/consts.ts +0 -3
- package/src/ledger/index.ts +0 -685
- package/src/ledger/types.ts +0 -74
- package/src/network-utils.ts +0 -99
- package/src/providers.ts +0 -345
- package/src/signers.ts +0 -158
- package/src/storage.ts +0 -63
- package/src/transactions/__tests__/integration.test.ts +0 -303
- package/src/transactions/__tests__/syscoin.test.ts +0 -409
- package/src/transactions/ethereum.ts +0 -2503
- package/src/transactions/index.ts +0 -2
- package/src/transactions/syscoin.ts +0 -542
- package/src/trezor/index.ts +0 -1050
- package/src/types.ts +0 -366
- package/src/utils/derivation-paths.ts +0 -133
- package/src/utils/psbt.ts +0 -24
- package/src/utils.ts +0 -191
- package/test/README.md +0 -158
- package/test/__mocks__/ledger-mock.js +0 -20
- package/test/__mocks__/trezor-mock.js +0 -75
- package/test/cleanup-summary.md +0 -167
- package/test/helpers/README.md +0 -78
- package/test/helpers/constants.ts +0 -79
- package/test/helpers/setup.ts +0 -714
- package/test/integration/import-validation.spec.ts +0 -588
- package/test/unit/hardware/ledger.spec.ts +0 -869
- package/test/unit/hardware/trezor.spec.ts +0 -828
- package/test/unit/keyring-manager/account-management.spec.ts +0 -970
- package/test/unit/keyring-manager/import-watchonly.spec.ts +0 -181
- package/test/unit/keyring-manager/import-wif.spec.ts +0 -126
- package/test/unit/keyring-manager/initialization.spec.ts +0 -782
- package/test/unit/keyring-manager/key-derivation.spec.ts +0 -996
- package/test/unit/keyring-manager/security.spec.ts +0 -505
- package/test/unit/keyring-manager/state-management.spec.ts +0 -375
- package/test/unit/network/network-management.spec.ts +0 -372
- package/test/unit/transactions/ethereum-transactions.spec.ts +0 -382
- package/test/unit/transactions/syscoin-transactions.spec.ts +0 -615
- package/tsconfig.json +0 -14
- /package/{dist/README.md → README.md} +0 -0
- /package/{dist/cjs → cjs}/errorUtils.js +0 -0
- /package/{dist/cjs → cjs}/errorUtils.js.map +0 -0
- /package/{dist/cjs → cjs}/hardware-wallet-manager.js +0 -0
- /package/{dist/cjs → cjs}/hardware-wallet-manager.js.map +0 -0
- /package/{dist/cjs → cjs}/index.js +0 -0
- /package/{dist/cjs → cjs}/index.js.map +0 -0
- /package/{dist/cjs → cjs}/initial-state.js +0 -0
- /package/{dist/cjs → cjs}/initial-state.js.map +0 -0
- /package/{dist/cjs → cjs}/keyring-manager.js +0 -0
- /package/{dist/cjs → cjs}/keyring-manager.js.map +0 -0
- /package/{dist/cjs → cjs}/ledger/bitcoin_client/index.js +0 -0
- /package/{dist/cjs → cjs}/ledger/bitcoin_client/index.js.map +0 -0
- /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/appClient.js +0 -0
- /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/appClient.js.map +0 -0
- /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/bip32.js +0 -0
- /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/bip32.js.map +0 -0
- /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/buffertools.js +0 -0
- /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/buffertools.js.map +0 -0
- /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/clientCommands.js +0 -0
- /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/clientCommands.js.map +0 -0
- /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/constants.js +0 -0
- /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/constants.js.map +0 -0
- /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/merkelizedPsbt.js +0 -0
- /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/merkelizedPsbt.js.map +0 -0
- /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/merkle.js +0 -0
- /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/merkle.js.map +0 -0
- /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/merkleMap.js +0 -0
- /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/merkleMap.js.map +0 -0
- /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/policy.js +0 -0
- /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/policy.js.map +0 -0
- /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/psbtv2.js +0 -0
- /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/psbtv2.js.map +0 -0
- /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/varint.js +0 -0
- /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/varint.js.map +0 -0
- /package/{dist/cjs → cjs}/ledger/consts.js +0 -0
- /package/{dist/cjs → cjs}/ledger/consts.js.map +0 -0
- /package/{dist/cjs → cjs}/ledger/index.js +0 -0
- /package/{dist/cjs → cjs}/ledger/index.js.map +0 -0
- /package/{dist/cjs → cjs}/ledger/types.js +0 -0
- /package/{dist/cjs → cjs}/ledger/types.js.map +0 -0
- /package/{dist/cjs → cjs}/network-utils.js +0 -0
- /package/{dist/cjs → cjs}/network-utils.js.map +0 -0
- /package/{dist/cjs → cjs}/signers.js +0 -0
- /package/{dist/cjs → cjs}/signers.js.map +0 -0
- /package/{dist/cjs → cjs}/storage.js +0 -0
- /package/{dist/cjs → cjs}/storage.js.map +0 -0
- /package/{dist/cjs → cjs}/transactions/__tests__/integration.test.js +0 -0
- /package/{dist/cjs → cjs}/transactions/__tests__/integration.test.js.map +0 -0
- /package/{dist/cjs → cjs}/transactions/__tests__/syscoin.test.js +0 -0
- /package/{dist/cjs → cjs}/transactions/__tests__/syscoin.test.js.map +0 -0
- /package/{dist/cjs → cjs}/transactions/index.js +0 -0
- /package/{dist/cjs → cjs}/transactions/index.js.map +0 -0
- /package/{dist/cjs → cjs}/transactions/syscoin.js +0 -0
- /package/{dist/cjs → cjs}/transactions/syscoin.js.map +0 -0
- /package/{dist/cjs → cjs}/trezor/index.js +0 -0
- /package/{dist/cjs → cjs}/trezor/index.js.map +0 -0
- /package/{dist/cjs → cjs}/types.js +0 -0
- /package/{dist/cjs → cjs}/types.js.map +0 -0
- /package/{dist/cjs → cjs}/utils/derivation-paths.js +0 -0
- /package/{dist/cjs → cjs}/utils/derivation-paths.js.map +0 -0
- /package/{dist/cjs → cjs}/utils/psbt.js +0 -0
- /package/{dist/cjs → cjs}/utils/psbt.js.map +0 -0
- /package/{dist/cjs → cjs}/utils.js +0 -0
- /package/{dist/cjs → cjs}/utils.js.map +0 -0
- /package/{dist/types → types}/errorUtils.d.ts +0 -0
- /package/{dist/types → types}/hardware-wallet-manager.d.ts +0 -0
- /package/{dist/types → types}/index.d.ts +0 -0
- /package/{dist/types → types}/initial-state.d.ts +0 -0
- /package/{dist/types → types}/keyring-manager.d.ts +0 -0
- /package/{dist/types → types}/ledger/bitcoin_client/index.d.ts +0 -0
- /package/{dist/types → types}/ledger/bitcoin_client/lib/appClient.d.ts +0 -0
- /package/{dist/types → types}/ledger/bitcoin_client/lib/bip32.d.ts +0 -0
- /package/{dist/types → types}/ledger/bitcoin_client/lib/buffertools.d.ts +0 -0
- /package/{dist/types → types}/ledger/bitcoin_client/lib/clientCommands.d.ts +0 -0
- /package/{dist/types → types}/ledger/bitcoin_client/lib/constants.d.ts +0 -0
- /package/{dist/types → types}/ledger/bitcoin_client/lib/merkelizedPsbt.d.ts +0 -0
- /package/{dist/types → types}/ledger/bitcoin_client/lib/merkle.d.ts +0 -0
- /package/{dist/types → types}/ledger/bitcoin_client/lib/merkleMap.d.ts +0 -0
- /package/{dist/types → types}/ledger/bitcoin_client/lib/policy.d.ts +0 -0
- /package/{dist/types → types}/ledger/bitcoin_client/lib/psbtv2.d.ts +0 -0
- /package/{dist/types → types}/ledger/bitcoin_client/lib/varint.d.ts +0 -0
- /package/{dist/types → types}/ledger/consts.d.ts +0 -0
- /package/{dist/types → types}/ledger/index.d.ts +0 -0
- /package/{dist/types → types}/ledger/types.d.ts +0 -0
- /package/{dist/types → types}/network-utils.d.ts +0 -0
- /package/{dist/types → types}/signers.d.ts +0 -0
- /package/{dist/types → types}/storage.d.ts +0 -0
- /package/{dist/types → types}/transactions/__tests__/integration.test.d.ts +0 -0
- /package/{dist/types → types}/transactions/__tests__/syscoin.test.d.ts +0 -0
- /package/{dist/types → types}/transactions/index.d.ts +0 -0
- /package/{dist/types → types}/transactions/syscoin.d.ts +0 -0
- /package/{dist/types → types}/trezor/index.d.ts +0 -0
- /package/{dist/types → types}/utils/derivation-paths.d.ts +0 -0
- /package/{dist/types → types}/utils/psbt.d.ts +0 -0
- /package/{dist/types → types}/utils.d.ts +0 -0
|
@@ -1,1521 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<title>Code coverage report for src/transactions/syscoin.ts</title>
|
|
5
|
-
<meta charset="utf-8" />
|
|
6
|
-
<link rel="stylesheet" href="../../prettify.css" />
|
|
7
|
-
<link rel="stylesheet" href="../../base.css" />
|
|
8
|
-
<link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
|
|
9
|
-
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
10
|
-
<style type="text/css">
|
|
11
|
-
.coverage-summary .sorter {
|
|
12
|
-
background-image: url(../../sort-arrow-sprite.png);
|
|
13
|
-
}
|
|
14
|
-
</style>
|
|
15
|
-
</head>
|
|
16
|
-
|
|
17
|
-
<body>
|
|
18
|
-
<div class="wrapper">
|
|
19
|
-
<div class="pad1">
|
|
20
|
-
<h1>
|
|
21
|
-
<a href="../../index.html">All files</a> /
|
|
22
|
-
<a href="index.html">src/transactions</a> syscoin.ts
|
|
23
|
-
</h1>
|
|
24
|
-
<div class="clearfix">
|
|
25
|
-
<div class="fl pad1y space-right2">
|
|
26
|
-
<span class="strong">41.12% </span>
|
|
27
|
-
<span class="quiet">Statements</span>
|
|
28
|
-
<span class="fraction">51/124</span>
|
|
29
|
-
</div>
|
|
30
|
-
|
|
31
|
-
<div class="fl pad1y space-right2">
|
|
32
|
-
<span class="strong">7.57% </span>
|
|
33
|
-
<span class="quiet">Branches</span>
|
|
34
|
-
<span class="fraction">5/66</span>
|
|
35
|
-
</div>
|
|
36
|
-
|
|
37
|
-
<div class="fl pad1y space-right2">
|
|
38
|
-
<span class="strong">46.15% </span>
|
|
39
|
-
<span class="quiet">Functions</span>
|
|
40
|
-
<span class="fraction">6/13</span>
|
|
41
|
-
</div>
|
|
42
|
-
|
|
43
|
-
<div class="fl pad1y space-right2">
|
|
44
|
-
<span class="strong">41.12% </span>
|
|
45
|
-
<span class="quiet">Lines</span>
|
|
46
|
-
<span class="fraction">51/124</span>
|
|
47
|
-
</div>
|
|
48
|
-
</div>
|
|
49
|
-
<p class="quiet">
|
|
50
|
-
Press <em>n</em> or <em>j</em> to go to the next uncovered block,
|
|
51
|
-
<em>b</em>, <em>p</em> or <em>k</em> for the previous block.
|
|
52
|
-
</p>
|
|
53
|
-
<template id="filterTemplate">
|
|
54
|
-
<div class="quiet">
|
|
55
|
-
Filter:
|
|
56
|
-
<input type="search" id="fileSearch" />
|
|
57
|
-
</div>
|
|
58
|
-
</template>
|
|
59
|
-
</div>
|
|
60
|
-
<div class="status-line low"></div>
|
|
61
|
-
<pre><table class="coverage">
|
|
62
|
-
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
63
|
-
<a name='L2'></a><a href='#L2'>2</a>
|
|
64
|
-
<a name='L3'></a><a href='#L3'>3</a>
|
|
65
|
-
<a name='L4'></a><a href='#L4'>4</a>
|
|
66
|
-
<a name='L5'></a><a href='#L5'>5</a>
|
|
67
|
-
<a name='L6'></a><a href='#L6'>6</a>
|
|
68
|
-
<a name='L7'></a><a href='#L7'>7</a>
|
|
69
|
-
<a name='L8'></a><a href='#L8'>8</a>
|
|
70
|
-
<a name='L9'></a><a href='#L9'>9</a>
|
|
71
|
-
<a name='L10'></a><a href='#L10'>10</a>
|
|
72
|
-
<a name='L11'></a><a href='#L11'>11</a>
|
|
73
|
-
<a name='L12'></a><a href='#L12'>12</a>
|
|
74
|
-
<a name='L13'></a><a href='#L13'>13</a>
|
|
75
|
-
<a name='L14'></a><a href='#L14'>14</a>
|
|
76
|
-
<a name='L15'></a><a href='#L15'>15</a>
|
|
77
|
-
<a name='L16'></a><a href='#L16'>16</a>
|
|
78
|
-
<a name='L17'></a><a href='#L17'>17</a>
|
|
79
|
-
<a name='L18'></a><a href='#L18'>18</a>
|
|
80
|
-
<a name='L19'></a><a href='#L19'>19</a>
|
|
81
|
-
<a name='L20'></a><a href='#L20'>20</a>
|
|
82
|
-
<a name='L21'></a><a href='#L21'>21</a>
|
|
83
|
-
<a name='L22'></a><a href='#L22'>22</a>
|
|
84
|
-
<a name='L23'></a><a href='#L23'>23</a>
|
|
85
|
-
<a name='L24'></a><a href='#L24'>24</a>
|
|
86
|
-
<a name='L25'></a><a href='#L25'>25</a>
|
|
87
|
-
<a name='L26'></a><a href='#L26'>26</a>
|
|
88
|
-
<a name='L27'></a><a href='#L27'>27</a>
|
|
89
|
-
<a name='L28'></a><a href='#L28'>28</a>
|
|
90
|
-
<a name='L29'></a><a href='#L29'>29</a>
|
|
91
|
-
<a name='L30'></a><a href='#L30'>30</a>
|
|
92
|
-
<a name='L31'></a><a href='#L31'>31</a>
|
|
93
|
-
<a name='L32'></a><a href='#L32'>32</a>
|
|
94
|
-
<a name='L33'></a><a href='#L33'>33</a>
|
|
95
|
-
<a name='L34'></a><a href='#L34'>34</a>
|
|
96
|
-
<a name='L35'></a><a href='#L35'>35</a>
|
|
97
|
-
<a name='L36'></a><a href='#L36'>36</a>
|
|
98
|
-
<a name='L37'></a><a href='#L37'>37</a>
|
|
99
|
-
<a name='L38'></a><a href='#L38'>38</a>
|
|
100
|
-
<a name='L39'></a><a href='#L39'>39</a>
|
|
101
|
-
<a name='L40'></a><a href='#L40'>40</a>
|
|
102
|
-
<a name='L41'></a><a href='#L41'>41</a>
|
|
103
|
-
<a name='L42'></a><a href='#L42'>42</a>
|
|
104
|
-
<a name='L43'></a><a href='#L43'>43</a>
|
|
105
|
-
<a name='L44'></a><a href='#L44'>44</a>
|
|
106
|
-
<a name='L45'></a><a href='#L45'>45</a>
|
|
107
|
-
<a name='L46'></a><a href='#L46'>46</a>
|
|
108
|
-
<a name='L47'></a><a href='#L47'>47</a>
|
|
109
|
-
<a name='L48'></a><a href='#L48'>48</a>
|
|
110
|
-
<a name='L49'></a><a href='#L49'>49</a>
|
|
111
|
-
<a name='L50'></a><a href='#L50'>50</a>
|
|
112
|
-
<a name='L51'></a><a href='#L51'>51</a>
|
|
113
|
-
<a name='L52'></a><a href='#L52'>52</a>
|
|
114
|
-
<a name='L53'></a><a href='#L53'>53</a>
|
|
115
|
-
<a name='L54'></a><a href='#L54'>54</a>
|
|
116
|
-
<a name='L55'></a><a href='#L55'>55</a>
|
|
117
|
-
<a name='L56'></a><a href='#L56'>56</a>
|
|
118
|
-
<a name='L57'></a><a href='#L57'>57</a>
|
|
119
|
-
<a name='L58'></a><a href='#L58'>58</a>
|
|
120
|
-
<a name='L59'></a><a href='#L59'>59</a>
|
|
121
|
-
<a name='L60'></a><a href='#L60'>60</a>
|
|
122
|
-
<a name='L61'></a><a href='#L61'>61</a>
|
|
123
|
-
<a name='L62'></a><a href='#L62'>62</a>
|
|
124
|
-
<a name='L63'></a><a href='#L63'>63</a>
|
|
125
|
-
<a name='L64'></a><a href='#L64'>64</a>
|
|
126
|
-
<a name='L65'></a><a href='#L65'>65</a>
|
|
127
|
-
<a name='L66'></a><a href='#L66'>66</a>
|
|
128
|
-
<a name='L67'></a><a href='#L67'>67</a>
|
|
129
|
-
<a name='L68'></a><a href='#L68'>68</a>
|
|
130
|
-
<a name='L69'></a><a href='#L69'>69</a>
|
|
131
|
-
<a name='L70'></a><a href='#L70'>70</a>
|
|
132
|
-
<a name='L71'></a><a href='#L71'>71</a>
|
|
133
|
-
<a name='L72'></a><a href='#L72'>72</a>
|
|
134
|
-
<a name='L73'></a><a href='#L73'>73</a>
|
|
135
|
-
<a name='L74'></a><a href='#L74'>74</a>
|
|
136
|
-
<a name='L75'></a><a href='#L75'>75</a>
|
|
137
|
-
<a name='L76'></a><a href='#L76'>76</a>
|
|
138
|
-
<a name='L77'></a><a href='#L77'>77</a>
|
|
139
|
-
<a name='L78'></a><a href='#L78'>78</a>
|
|
140
|
-
<a name='L79'></a><a href='#L79'>79</a>
|
|
141
|
-
<a name='L80'></a><a href='#L80'>80</a>
|
|
142
|
-
<a name='L81'></a><a href='#L81'>81</a>
|
|
143
|
-
<a name='L82'></a><a href='#L82'>82</a>
|
|
144
|
-
<a name='L83'></a><a href='#L83'>83</a>
|
|
145
|
-
<a name='L84'></a><a href='#L84'>84</a>
|
|
146
|
-
<a name='L85'></a><a href='#L85'>85</a>
|
|
147
|
-
<a name='L86'></a><a href='#L86'>86</a>
|
|
148
|
-
<a name='L87'></a><a href='#L87'>87</a>
|
|
149
|
-
<a name='L88'></a><a href='#L88'>88</a>
|
|
150
|
-
<a name='L89'></a><a href='#L89'>89</a>
|
|
151
|
-
<a name='L90'></a><a href='#L90'>90</a>
|
|
152
|
-
<a name='L91'></a><a href='#L91'>91</a>
|
|
153
|
-
<a name='L92'></a><a href='#L92'>92</a>
|
|
154
|
-
<a name='L93'></a><a href='#L93'>93</a>
|
|
155
|
-
<a name='L94'></a><a href='#L94'>94</a>
|
|
156
|
-
<a name='L95'></a><a href='#L95'>95</a>
|
|
157
|
-
<a name='L96'></a><a href='#L96'>96</a>
|
|
158
|
-
<a name='L97'></a><a href='#L97'>97</a>
|
|
159
|
-
<a name='L98'></a><a href='#L98'>98</a>
|
|
160
|
-
<a name='L99'></a><a href='#L99'>99</a>
|
|
161
|
-
<a name='L100'></a><a href='#L100'>100</a>
|
|
162
|
-
<a name='L101'></a><a href='#L101'>101</a>
|
|
163
|
-
<a name='L102'></a><a href='#L102'>102</a>
|
|
164
|
-
<a name='L103'></a><a href='#L103'>103</a>
|
|
165
|
-
<a name='L104'></a><a href='#L104'>104</a>
|
|
166
|
-
<a name='L105'></a><a href='#L105'>105</a>
|
|
167
|
-
<a name='L106'></a><a href='#L106'>106</a>
|
|
168
|
-
<a name='L107'></a><a href='#L107'>107</a>
|
|
169
|
-
<a name='L108'></a><a href='#L108'>108</a>
|
|
170
|
-
<a name='L109'></a><a href='#L109'>109</a>
|
|
171
|
-
<a name='L110'></a><a href='#L110'>110</a>
|
|
172
|
-
<a name='L111'></a><a href='#L111'>111</a>
|
|
173
|
-
<a name='L112'></a><a href='#L112'>112</a>
|
|
174
|
-
<a name='L113'></a><a href='#L113'>113</a>
|
|
175
|
-
<a name='L114'></a><a href='#L114'>114</a>
|
|
176
|
-
<a name='L115'></a><a href='#L115'>115</a>
|
|
177
|
-
<a name='L116'></a><a href='#L116'>116</a>
|
|
178
|
-
<a name='L117'></a><a href='#L117'>117</a>
|
|
179
|
-
<a name='L118'></a><a href='#L118'>118</a>
|
|
180
|
-
<a name='L119'></a><a href='#L119'>119</a>
|
|
181
|
-
<a name='L120'></a><a href='#L120'>120</a>
|
|
182
|
-
<a name='L121'></a><a href='#L121'>121</a>
|
|
183
|
-
<a name='L122'></a><a href='#L122'>122</a>
|
|
184
|
-
<a name='L123'></a><a href='#L123'>123</a>
|
|
185
|
-
<a name='L124'></a><a href='#L124'>124</a>
|
|
186
|
-
<a name='L125'></a><a href='#L125'>125</a>
|
|
187
|
-
<a name='L126'></a><a href='#L126'>126</a>
|
|
188
|
-
<a name='L127'></a><a href='#L127'>127</a>
|
|
189
|
-
<a name='L128'></a><a href='#L128'>128</a>
|
|
190
|
-
<a name='L129'></a><a href='#L129'>129</a>
|
|
191
|
-
<a name='L130'></a><a href='#L130'>130</a>
|
|
192
|
-
<a name='L131'></a><a href='#L131'>131</a>
|
|
193
|
-
<a name='L132'></a><a href='#L132'>132</a>
|
|
194
|
-
<a name='L133'></a><a href='#L133'>133</a>
|
|
195
|
-
<a name='L134'></a><a href='#L134'>134</a>
|
|
196
|
-
<a name='L135'></a><a href='#L135'>135</a>
|
|
197
|
-
<a name='L136'></a><a href='#L136'>136</a>
|
|
198
|
-
<a name='L137'></a><a href='#L137'>137</a>
|
|
199
|
-
<a name='L138'></a><a href='#L138'>138</a>
|
|
200
|
-
<a name='L139'></a><a href='#L139'>139</a>
|
|
201
|
-
<a name='L140'></a><a href='#L140'>140</a>
|
|
202
|
-
<a name='L141'></a><a href='#L141'>141</a>
|
|
203
|
-
<a name='L142'></a><a href='#L142'>142</a>
|
|
204
|
-
<a name='L143'></a><a href='#L143'>143</a>
|
|
205
|
-
<a name='L144'></a><a href='#L144'>144</a>
|
|
206
|
-
<a name='L145'></a><a href='#L145'>145</a>
|
|
207
|
-
<a name='L146'></a><a href='#L146'>146</a>
|
|
208
|
-
<a name='L147'></a><a href='#L147'>147</a>
|
|
209
|
-
<a name='L148'></a><a href='#L148'>148</a>
|
|
210
|
-
<a name='L149'></a><a href='#L149'>149</a>
|
|
211
|
-
<a name='L150'></a><a href='#L150'>150</a>
|
|
212
|
-
<a name='L151'></a><a href='#L151'>151</a>
|
|
213
|
-
<a name='L152'></a><a href='#L152'>152</a>
|
|
214
|
-
<a name='L153'></a><a href='#L153'>153</a>
|
|
215
|
-
<a name='L154'></a><a href='#L154'>154</a>
|
|
216
|
-
<a name='L155'></a><a href='#L155'>155</a>
|
|
217
|
-
<a name='L156'></a><a href='#L156'>156</a>
|
|
218
|
-
<a name='L157'></a><a href='#L157'>157</a>
|
|
219
|
-
<a name='L158'></a><a href='#L158'>158</a>
|
|
220
|
-
<a name='L159'></a><a href='#L159'>159</a>
|
|
221
|
-
<a name='L160'></a><a href='#L160'>160</a>
|
|
222
|
-
<a name='L161'></a><a href='#L161'>161</a>
|
|
223
|
-
<a name='L162'></a><a href='#L162'>162</a>
|
|
224
|
-
<a name='L163'></a><a href='#L163'>163</a>
|
|
225
|
-
<a name='L164'></a><a href='#L164'>164</a>
|
|
226
|
-
<a name='L165'></a><a href='#L165'>165</a>
|
|
227
|
-
<a name='L166'></a><a href='#L166'>166</a>
|
|
228
|
-
<a name='L167'></a><a href='#L167'>167</a>
|
|
229
|
-
<a name='L168'></a><a href='#L168'>168</a>
|
|
230
|
-
<a name='L169'></a><a href='#L169'>169</a>
|
|
231
|
-
<a name='L170'></a><a href='#L170'>170</a>
|
|
232
|
-
<a name='L171'></a><a href='#L171'>171</a>
|
|
233
|
-
<a name='L172'></a><a href='#L172'>172</a>
|
|
234
|
-
<a name='L173'></a><a href='#L173'>173</a>
|
|
235
|
-
<a name='L174'></a><a href='#L174'>174</a>
|
|
236
|
-
<a name='L175'></a><a href='#L175'>175</a>
|
|
237
|
-
<a name='L176'></a><a href='#L176'>176</a>
|
|
238
|
-
<a name='L177'></a><a href='#L177'>177</a>
|
|
239
|
-
<a name='L178'></a><a href='#L178'>178</a>
|
|
240
|
-
<a name='L179'></a><a href='#L179'>179</a>
|
|
241
|
-
<a name='L180'></a><a href='#L180'>180</a>
|
|
242
|
-
<a name='L181'></a><a href='#L181'>181</a>
|
|
243
|
-
<a name='L182'></a><a href='#L182'>182</a>
|
|
244
|
-
<a name='L183'></a><a href='#L183'>183</a>
|
|
245
|
-
<a name='L184'></a><a href='#L184'>184</a>
|
|
246
|
-
<a name='L185'></a><a href='#L185'>185</a>
|
|
247
|
-
<a name='L186'></a><a href='#L186'>186</a>
|
|
248
|
-
<a name='L187'></a><a href='#L187'>187</a>
|
|
249
|
-
<a name='L188'></a><a href='#L188'>188</a>
|
|
250
|
-
<a name='L189'></a><a href='#L189'>189</a>
|
|
251
|
-
<a name='L190'></a><a href='#L190'>190</a>
|
|
252
|
-
<a name='L191'></a><a href='#L191'>191</a>
|
|
253
|
-
<a name='L192'></a><a href='#L192'>192</a>
|
|
254
|
-
<a name='L193'></a><a href='#L193'>193</a>
|
|
255
|
-
<a name='L194'></a><a href='#L194'>194</a>
|
|
256
|
-
<a name='L195'></a><a href='#L195'>195</a>
|
|
257
|
-
<a name='L196'></a><a href='#L196'>196</a>
|
|
258
|
-
<a name='L197'></a><a href='#L197'>197</a>
|
|
259
|
-
<a name='L198'></a><a href='#L198'>198</a>
|
|
260
|
-
<a name='L199'></a><a href='#L199'>199</a>
|
|
261
|
-
<a name='L200'></a><a href='#L200'>200</a>
|
|
262
|
-
<a name='L201'></a><a href='#L201'>201</a>
|
|
263
|
-
<a name='L202'></a><a href='#L202'>202</a>
|
|
264
|
-
<a name='L203'></a><a href='#L203'>203</a>
|
|
265
|
-
<a name='L204'></a><a href='#L204'>204</a>
|
|
266
|
-
<a name='L205'></a><a href='#L205'>205</a>
|
|
267
|
-
<a name='L206'></a><a href='#L206'>206</a>
|
|
268
|
-
<a name='L207'></a><a href='#L207'>207</a>
|
|
269
|
-
<a name='L208'></a><a href='#L208'>208</a>
|
|
270
|
-
<a name='L209'></a><a href='#L209'>209</a>
|
|
271
|
-
<a name='L210'></a><a href='#L210'>210</a>
|
|
272
|
-
<a name='L211'></a><a href='#L211'>211</a>
|
|
273
|
-
<a name='L212'></a><a href='#L212'>212</a>
|
|
274
|
-
<a name='L213'></a><a href='#L213'>213</a>
|
|
275
|
-
<a name='L214'></a><a href='#L214'>214</a>
|
|
276
|
-
<a name='L215'></a><a href='#L215'>215</a>
|
|
277
|
-
<a name='L216'></a><a href='#L216'>216</a>
|
|
278
|
-
<a name='L217'></a><a href='#L217'>217</a>
|
|
279
|
-
<a name='L218'></a><a href='#L218'>218</a>
|
|
280
|
-
<a name='L219'></a><a href='#L219'>219</a>
|
|
281
|
-
<a name='L220'></a><a href='#L220'>220</a>
|
|
282
|
-
<a name='L221'></a><a href='#L221'>221</a>
|
|
283
|
-
<a name='L222'></a><a href='#L222'>222</a>
|
|
284
|
-
<a name='L223'></a><a href='#L223'>223</a>
|
|
285
|
-
<a name='L224'></a><a href='#L224'>224</a>
|
|
286
|
-
<a name='L225'></a><a href='#L225'>225</a>
|
|
287
|
-
<a name='L226'></a><a href='#L226'>226</a>
|
|
288
|
-
<a name='L227'></a><a href='#L227'>227</a>
|
|
289
|
-
<a name='L228'></a><a href='#L228'>228</a>
|
|
290
|
-
<a name='L229'></a><a href='#L229'>229</a>
|
|
291
|
-
<a name='L230'></a><a href='#L230'>230</a>
|
|
292
|
-
<a name='L231'></a><a href='#L231'>231</a>
|
|
293
|
-
<a name='L232'></a><a href='#L232'>232</a>
|
|
294
|
-
<a name='L233'></a><a href='#L233'>233</a>
|
|
295
|
-
<a name='L234'></a><a href='#L234'>234</a>
|
|
296
|
-
<a name='L235'></a><a href='#L235'>235</a>
|
|
297
|
-
<a name='L236'></a><a href='#L236'>236</a>
|
|
298
|
-
<a name='L237'></a><a href='#L237'>237</a>
|
|
299
|
-
<a name='L238'></a><a href='#L238'>238</a>
|
|
300
|
-
<a name='L239'></a><a href='#L239'>239</a>
|
|
301
|
-
<a name='L240'></a><a href='#L240'>240</a>
|
|
302
|
-
<a name='L241'></a><a href='#L241'>241</a>
|
|
303
|
-
<a name='L242'></a><a href='#L242'>242</a>
|
|
304
|
-
<a name='L243'></a><a href='#L243'>243</a>
|
|
305
|
-
<a name='L244'></a><a href='#L244'>244</a>
|
|
306
|
-
<a name='L245'></a><a href='#L245'>245</a>
|
|
307
|
-
<a name='L246'></a><a href='#L246'>246</a>
|
|
308
|
-
<a name='L247'></a><a href='#L247'>247</a>
|
|
309
|
-
<a name='L248'></a><a href='#L248'>248</a>
|
|
310
|
-
<a name='L249'></a><a href='#L249'>249</a>
|
|
311
|
-
<a name='L250'></a><a href='#L250'>250</a>
|
|
312
|
-
<a name='L251'></a><a href='#L251'>251</a>
|
|
313
|
-
<a name='L252'></a><a href='#L252'>252</a>
|
|
314
|
-
<a name='L253'></a><a href='#L253'>253</a>
|
|
315
|
-
<a name='L254'></a><a href='#L254'>254</a>
|
|
316
|
-
<a name='L255'></a><a href='#L255'>255</a>
|
|
317
|
-
<a name='L256'></a><a href='#L256'>256</a>
|
|
318
|
-
<a name='L257'></a><a href='#L257'>257</a>
|
|
319
|
-
<a name='L258'></a><a href='#L258'>258</a>
|
|
320
|
-
<a name='L259'></a><a href='#L259'>259</a>
|
|
321
|
-
<a name='L260'></a><a href='#L260'>260</a>
|
|
322
|
-
<a name='L261'></a><a href='#L261'>261</a>
|
|
323
|
-
<a name='L262'></a><a href='#L262'>262</a>
|
|
324
|
-
<a name='L263'></a><a href='#L263'>263</a>
|
|
325
|
-
<a name='L264'></a><a href='#L264'>264</a>
|
|
326
|
-
<a name='L265'></a><a href='#L265'>265</a>
|
|
327
|
-
<a name='L266'></a><a href='#L266'>266</a>
|
|
328
|
-
<a name='L267'></a><a href='#L267'>267</a>
|
|
329
|
-
<a name='L268'></a><a href='#L268'>268</a>
|
|
330
|
-
<a name='L269'></a><a href='#L269'>269</a>
|
|
331
|
-
<a name='L270'></a><a href='#L270'>270</a>
|
|
332
|
-
<a name='L271'></a><a href='#L271'>271</a>
|
|
333
|
-
<a name='L272'></a><a href='#L272'>272</a>
|
|
334
|
-
<a name='L273'></a><a href='#L273'>273</a>
|
|
335
|
-
<a name='L274'></a><a href='#L274'>274</a>
|
|
336
|
-
<a name='L275'></a><a href='#L275'>275</a>
|
|
337
|
-
<a name='L276'></a><a href='#L276'>276</a>
|
|
338
|
-
<a name='L277'></a><a href='#L277'>277</a>
|
|
339
|
-
<a name='L278'></a><a href='#L278'>278</a>
|
|
340
|
-
<a name='L279'></a><a href='#L279'>279</a>
|
|
341
|
-
<a name='L280'></a><a href='#L280'>280</a>
|
|
342
|
-
<a name='L281'></a><a href='#L281'>281</a>
|
|
343
|
-
<a name='L282'></a><a href='#L282'>282</a>
|
|
344
|
-
<a name='L283'></a><a href='#L283'>283</a>
|
|
345
|
-
<a name='L284'></a><a href='#L284'>284</a>
|
|
346
|
-
<a name='L285'></a><a href='#L285'>285</a>
|
|
347
|
-
<a name='L286'></a><a href='#L286'>286</a>
|
|
348
|
-
<a name='L287'></a><a href='#L287'>287</a>
|
|
349
|
-
<a name='L288'></a><a href='#L288'>288</a>
|
|
350
|
-
<a name='L289'></a><a href='#L289'>289</a>
|
|
351
|
-
<a name='L290'></a><a href='#L290'>290</a>
|
|
352
|
-
<a name='L291'></a><a href='#L291'>291</a>
|
|
353
|
-
<a name='L292'></a><a href='#L292'>292</a>
|
|
354
|
-
<a name='L293'></a><a href='#L293'>293</a>
|
|
355
|
-
<a name='L294'></a><a href='#L294'>294</a>
|
|
356
|
-
<a name='L295'></a><a href='#L295'>295</a>
|
|
357
|
-
<a name='L296'></a><a href='#L296'>296</a>
|
|
358
|
-
<a name='L297'></a><a href='#L297'>297</a>
|
|
359
|
-
<a name='L298'></a><a href='#L298'>298</a>
|
|
360
|
-
<a name='L299'></a><a href='#L299'>299</a>
|
|
361
|
-
<a name='L300'></a><a href='#L300'>300</a>
|
|
362
|
-
<a name='L301'></a><a href='#L301'>301</a>
|
|
363
|
-
<a name='L302'></a><a href='#L302'>302</a>
|
|
364
|
-
<a name='L303'></a><a href='#L303'>303</a>
|
|
365
|
-
<a name='L304'></a><a href='#L304'>304</a>
|
|
366
|
-
<a name='L305'></a><a href='#L305'>305</a>
|
|
367
|
-
<a name='L306'></a><a href='#L306'>306</a>
|
|
368
|
-
<a name='L307'></a><a href='#L307'>307</a>
|
|
369
|
-
<a name='L308'></a><a href='#L308'>308</a>
|
|
370
|
-
<a name='L309'></a><a href='#L309'>309</a>
|
|
371
|
-
<a name='L310'></a><a href='#L310'>310</a>
|
|
372
|
-
<a name='L311'></a><a href='#L311'>311</a>
|
|
373
|
-
<a name='L312'></a><a href='#L312'>312</a>
|
|
374
|
-
<a name='L313'></a><a href='#L313'>313</a>
|
|
375
|
-
<a name='L314'></a><a href='#L314'>314</a>
|
|
376
|
-
<a name='L315'></a><a href='#L315'>315</a>
|
|
377
|
-
<a name='L316'></a><a href='#L316'>316</a>
|
|
378
|
-
<a name='L317'></a><a href='#L317'>317</a>
|
|
379
|
-
<a name='L318'></a><a href='#L318'>318</a>
|
|
380
|
-
<a name='L319'></a><a href='#L319'>319</a>
|
|
381
|
-
<a name='L320'></a><a href='#L320'>320</a>
|
|
382
|
-
<a name='L321'></a><a href='#L321'>321</a>
|
|
383
|
-
<a name='L322'></a><a href='#L322'>322</a>
|
|
384
|
-
<a name='L323'></a><a href='#L323'>323</a>
|
|
385
|
-
<a name='L324'></a><a href='#L324'>324</a>
|
|
386
|
-
<a name='L325'></a><a href='#L325'>325</a>
|
|
387
|
-
<a name='L326'></a><a href='#L326'>326</a>
|
|
388
|
-
<a name='L327'></a><a href='#L327'>327</a>
|
|
389
|
-
<a name='L328'></a><a href='#L328'>328</a>
|
|
390
|
-
<a name='L329'></a><a href='#L329'>329</a>
|
|
391
|
-
<a name='L330'></a><a href='#L330'>330</a>
|
|
392
|
-
<a name='L331'></a><a href='#L331'>331</a>
|
|
393
|
-
<a name='L332'></a><a href='#L332'>332</a>
|
|
394
|
-
<a name='L333'></a><a href='#L333'>333</a>
|
|
395
|
-
<a name='L334'></a><a href='#L334'>334</a>
|
|
396
|
-
<a name='L335'></a><a href='#L335'>335</a>
|
|
397
|
-
<a name='L336'></a><a href='#L336'>336</a>
|
|
398
|
-
<a name='L337'></a><a href='#L337'>337</a>
|
|
399
|
-
<a name='L338'></a><a href='#L338'>338</a>
|
|
400
|
-
<a name='L339'></a><a href='#L339'>339</a>
|
|
401
|
-
<a name='L340'></a><a href='#L340'>340</a>
|
|
402
|
-
<a name='L341'></a><a href='#L341'>341</a>
|
|
403
|
-
<a name='L342'></a><a href='#L342'>342</a>
|
|
404
|
-
<a name='L343'></a><a href='#L343'>343</a>
|
|
405
|
-
<a name='L344'></a><a href='#L344'>344</a>
|
|
406
|
-
<a name='L345'></a><a href='#L345'>345</a>
|
|
407
|
-
<a name='L346'></a><a href='#L346'>346</a>
|
|
408
|
-
<a name='L347'></a><a href='#L347'>347</a>
|
|
409
|
-
<a name='L348'></a><a href='#L348'>348</a>
|
|
410
|
-
<a name='L349'></a><a href='#L349'>349</a>
|
|
411
|
-
<a name='L350'></a><a href='#L350'>350</a>
|
|
412
|
-
<a name='L351'></a><a href='#L351'>351</a>
|
|
413
|
-
<a name='L352'></a><a href='#L352'>352</a>
|
|
414
|
-
<a name='L353'></a><a href='#L353'>353</a>
|
|
415
|
-
<a name='L354'></a><a href='#L354'>354</a>
|
|
416
|
-
<a name='L355'></a><a href='#L355'>355</a>
|
|
417
|
-
<a name='L356'></a><a href='#L356'>356</a>
|
|
418
|
-
<a name='L357'></a><a href='#L357'>357</a>
|
|
419
|
-
<a name='L358'></a><a href='#L358'>358</a>
|
|
420
|
-
<a name='L359'></a><a href='#L359'>359</a>
|
|
421
|
-
<a name='L360'></a><a href='#L360'>360</a>
|
|
422
|
-
<a name='L361'></a><a href='#L361'>361</a>
|
|
423
|
-
<a name='L362'></a><a href='#L362'>362</a>
|
|
424
|
-
<a name='L363'></a><a href='#L363'>363</a>
|
|
425
|
-
<a name='L364'></a><a href='#L364'>364</a>
|
|
426
|
-
<a name='L365'></a><a href='#L365'>365</a>
|
|
427
|
-
<a name='L366'></a><a href='#L366'>366</a>
|
|
428
|
-
<a name='L367'></a><a href='#L367'>367</a>
|
|
429
|
-
<a name='L368'></a><a href='#L368'>368</a>
|
|
430
|
-
<a name='L369'></a><a href='#L369'>369</a>
|
|
431
|
-
<a name='L370'></a><a href='#L370'>370</a>
|
|
432
|
-
<a name='L371'></a><a href='#L371'>371</a>
|
|
433
|
-
<a name='L372'></a><a href='#L372'>372</a>
|
|
434
|
-
<a name='L373'></a><a href='#L373'>373</a>
|
|
435
|
-
<a name='L374'></a><a href='#L374'>374</a>
|
|
436
|
-
<a name='L375'></a><a href='#L375'>375</a>
|
|
437
|
-
<a name='L376'></a><a href='#L376'>376</a>
|
|
438
|
-
<a name='L377'></a><a href='#L377'>377</a>
|
|
439
|
-
<a name='L378'></a><a href='#L378'>378</a>
|
|
440
|
-
<a name='L379'></a><a href='#L379'>379</a>
|
|
441
|
-
<a name='L380'></a><a href='#L380'>380</a>
|
|
442
|
-
<a name='L381'></a><a href='#L381'>381</a>
|
|
443
|
-
<a name='L382'></a><a href='#L382'>382</a>
|
|
444
|
-
<a name='L383'></a><a href='#L383'>383</a>
|
|
445
|
-
<a name='L384'></a><a href='#L384'>384</a>
|
|
446
|
-
<a name='L385'></a><a href='#L385'>385</a>
|
|
447
|
-
<a name='L386'></a><a href='#L386'>386</a>
|
|
448
|
-
<a name='L387'></a><a href='#L387'>387</a>
|
|
449
|
-
<a name='L388'></a><a href='#L388'>388</a>
|
|
450
|
-
<a name='L389'></a><a href='#L389'>389</a>
|
|
451
|
-
<a name='L390'></a><a href='#L390'>390</a>
|
|
452
|
-
<a name='L391'></a><a href='#L391'>391</a>
|
|
453
|
-
<a name='L392'></a><a href='#L392'>392</a>
|
|
454
|
-
<a name='L393'></a><a href='#L393'>393</a>
|
|
455
|
-
<a name='L394'></a><a href='#L394'>394</a>
|
|
456
|
-
<a name='L395'></a><a href='#L395'>395</a>
|
|
457
|
-
<a name='L396'></a><a href='#L396'>396</a>
|
|
458
|
-
<a name='L397'></a><a href='#L397'>397</a>
|
|
459
|
-
<a name='L398'></a><a href='#L398'>398</a>
|
|
460
|
-
<a name='L399'></a><a href='#L399'>399</a>
|
|
461
|
-
<a name='L400'></a><a href='#L400'>400</a>
|
|
462
|
-
<a name='L401'></a><a href='#L401'>401</a>
|
|
463
|
-
<a name='L402'></a><a href='#L402'>402</a>
|
|
464
|
-
<a name='L403'></a><a href='#L403'>403</a>
|
|
465
|
-
<a name='L404'></a><a href='#L404'>404</a>
|
|
466
|
-
<a name='L405'></a><a href='#L405'>405</a>
|
|
467
|
-
<a name='L406'></a><a href='#L406'>406</a>
|
|
468
|
-
<a name='L407'></a><a href='#L407'>407</a>
|
|
469
|
-
<a name='L408'></a><a href='#L408'>408</a>
|
|
470
|
-
<a name='L409'></a><a href='#L409'>409</a>
|
|
471
|
-
<a name='L410'></a><a href='#L410'>410</a>
|
|
472
|
-
<a name='L411'></a><a href='#L411'>411</a>
|
|
473
|
-
<a name='L412'></a><a href='#L412'>412</a>
|
|
474
|
-
<a name='L413'></a><a href='#L413'>413</a>
|
|
475
|
-
<a name='L414'></a><a href='#L414'>414</a>
|
|
476
|
-
<a name='L415'></a><a href='#L415'>415</a>
|
|
477
|
-
<a name='L416'></a><a href='#L416'>416</a>
|
|
478
|
-
<a name='L417'></a><a href='#L417'>417</a>
|
|
479
|
-
<a name='L418'></a><a href='#L418'>418</a>
|
|
480
|
-
<a name='L419'></a><a href='#L419'>419</a>
|
|
481
|
-
<a name='L420'></a><a href='#L420'>420</a>
|
|
482
|
-
<a name='L421'></a><a href='#L421'>421</a>
|
|
483
|
-
<a name='L422'></a><a href='#L422'>422</a>
|
|
484
|
-
<a name='L423'></a><a href='#L423'>423</a>
|
|
485
|
-
<a name='L424'></a><a href='#L424'>424</a>
|
|
486
|
-
<a name='L425'></a><a href='#L425'>425</a>
|
|
487
|
-
<a name='L426'></a><a href='#L426'>426</a>
|
|
488
|
-
<a name='L427'></a><a href='#L427'>427</a>
|
|
489
|
-
<a name='L428'></a><a href='#L428'>428</a>
|
|
490
|
-
<a name='L429'></a><a href='#L429'>429</a>
|
|
491
|
-
<a name='L430'></a><a href='#L430'>430</a>
|
|
492
|
-
<a name='L431'></a><a href='#L431'>431</a>
|
|
493
|
-
<a name='L432'></a><a href='#L432'>432</a>
|
|
494
|
-
<a name='L433'></a><a href='#L433'>433</a>
|
|
495
|
-
<a name='L434'></a><a href='#L434'>434</a>
|
|
496
|
-
<a name='L435'></a><a href='#L435'>435</a>
|
|
497
|
-
<a name='L436'></a><a href='#L436'>436</a>
|
|
498
|
-
<a name='L437'></a><a href='#L437'>437</a>
|
|
499
|
-
<a name='L438'></a><a href='#L438'>438</a>
|
|
500
|
-
<a name='L439'></a><a href='#L439'>439</a>
|
|
501
|
-
<a name='L440'></a><a href='#L440'>440</a>
|
|
502
|
-
<a name='L441'></a><a href='#L441'>441</a>
|
|
503
|
-
<a name='L442'></a><a href='#L442'>442</a>
|
|
504
|
-
<a name='L443'></a><a href='#L443'>443</a>
|
|
505
|
-
<a name='L444'></a><a href='#L444'>444</a>
|
|
506
|
-
<a name='L445'></a><a href='#L445'>445</a>
|
|
507
|
-
<a name='L446'></a><a href='#L446'>446</a>
|
|
508
|
-
<a name='L447'></a><a href='#L447'>447</a>
|
|
509
|
-
<a name='L448'></a><a href='#L448'>448</a>
|
|
510
|
-
<a name='L449'></a><a href='#L449'>449</a>
|
|
511
|
-
<a name='L450'></a><a href='#L450'>450</a>
|
|
512
|
-
<a name='L451'></a><a href='#L451'>451</a>
|
|
513
|
-
<a name='L452'></a><a href='#L452'>452</a>
|
|
514
|
-
<a name='L453'></a><a href='#L453'>453</a>
|
|
515
|
-
<a name='L454'></a><a href='#L454'>454</a>
|
|
516
|
-
<a name='L455'></a><a href='#L455'>455</a>
|
|
517
|
-
<a name='L456'></a><a href='#L456'>456</a>
|
|
518
|
-
<a name='L457'></a><a href='#L457'>457</a>
|
|
519
|
-
<a name='L458'></a><a href='#L458'>458</a>
|
|
520
|
-
<a name='L459'></a><a href='#L459'>459</a>
|
|
521
|
-
<a name='L460'></a><a href='#L460'>460</a>
|
|
522
|
-
<a name='L461'></a><a href='#L461'>461</a>
|
|
523
|
-
<a name='L462'></a><a href='#L462'>462</a>
|
|
524
|
-
<a name='L463'></a><a href='#L463'>463</a>
|
|
525
|
-
<a name='L464'></a><a href='#L464'>464</a>
|
|
526
|
-
<a name='L465'></a><a href='#L465'>465</a>
|
|
527
|
-
<a name='L466'></a><a href='#L466'>466</a>
|
|
528
|
-
<a name='L467'></a><a href='#L467'>467</a>
|
|
529
|
-
<a name='L468'></a><a href='#L468'>468</a>
|
|
530
|
-
<a name='L469'></a><a href='#L469'>469</a>
|
|
531
|
-
<a name='L470'></a><a href='#L470'>470</a>
|
|
532
|
-
<a name='L471'></a><a href='#L471'>471</a>
|
|
533
|
-
<a name='L472'></a><a href='#L472'>472</a>
|
|
534
|
-
<a name='L473'></a><a href='#L473'>473</a>
|
|
535
|
-
<a name='L474'></a><a href='#L474'>474</a>
|
|
536
|
-
<a name='L475'></a><a href='#L475'>475</a>
|
|
537
|
-
<a name='L476'></a><a href='#L476'>476</a>
|
|
538
|
-
<a name='L477'></a><a href='#L477'>477</a>
|
|
539
|
-
<a name='L478'></a><a href='#L478'>478</a>
|
|
540
|
-
<a name='L479'></a><a href='#L479'>479</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">2x</span>
|
|
541
|
-
<span class="cline-any cline-neutral"> </span>
|
|
542
|
-
<span class="cline-any cline-neutral"> </span>
|
|
543
|
-
<span class="cline-any cline-neutral"> </span>
|
|
544
|
-
<span class="cline-any cline-yes">2x</span>
|
|
545
|
-
<span class="cline-any cline-neutral"> </span>
|
|
546
|
-
<span class="cline-any cline-yes">2x</span>
|
|
547
|
-
<span class="cline-any cline-neutral"> </span>
|
|
548
|
-
<span class="cline-any cline-neutral"> </span>
|
|
549
|
-
<span class="cline-any cline-neutral"> </span>
|
|
550
|
-
<span class="cline-any cline-neutral"> </span>
|
|
551
|
-
<span class="cline-any cline-neutral"> </span>
|
|
552
|
-
<span class="cline-any cline-yes">2x</span>
|
|
553
|
-
<span class="cline-any cline-yes">2x</span>
|
|
554
|
-
<span class="cline-any cline-neutral"> </span>
|
|
555
|
-
<span class="cline-any cline-yes">2x</span>
|
|
556
|
-
<span class="cline-any cline-neutral"> </span>
|
|
557
|
-
<span class="cline-any cline-neutral"> </span>
|
|
558
|
-
<span class="cline-any cline-neutral"> </span>
|
|
559
|
-
<span class="cline-any cline-neutral"> </span>
|
|
560
|
-
<span class="cline-any cline-neutral"> </span>
|
|
561
|
-
<span class="cline-any cline-neutral"> </span>
|
|
562
|
-
<span class="cline-any cline-neutral"> </span>
|
|
563
|
-
<span class="cline-any cline-neutral"> </span>
|
|
564
|
-
<span class="cline-any cline-neutral"> </span>
|
|
565
|
-
<span class="cline-any cline-yes">2x</span>
|
|
566
|
-
<span class="cline-any cline-neutral"> </span>
|
|
567
|
-
<span class="cline-any cline-neutral"> </span>
|
|
568
|
-
<span class="cline-any cline-neutral"> </span>
|
|
569
|
-
<span class="cline-any cline-neutral"> </span>
|
|
570
|
-
<span class="cline-any cline-neutral"> </span>
|
|
571
|
-
<span class="cline-any cline-neutral"> </span>
|
|
572
|
-
<span class="cline-any cline-neutral"> </span>
|
|
573
|
-
<span class="cline-any cline-neutral"> </span>
|
|
574
|
-
<span class="cline-any cline-neutral"> </span>
|
|
575
|
-
<span class="cline-any cline-neutral"> </span>
|
|
576
|
-
<span class="cline-any cline-neutral"> </span>
|
|
577
|
-
<span class="cline-any cline-neutral"> </span>
|
|
578
|
-
<span class="cline-any cline-neutral"> </span>
|
|
579
|
-
<span class="cline-any cline-neutral"> </span>
|
|
580
|
-
<span class="cline-any cline-neutral"> </span>
|
|
581
|
-
<span class="cline-any cline-neutral"> </span>
|
|
582
|
-
<span class="cline-any cline-neutral"> </span>
|
|
583
|
-
<span class="cline-any cline-neutral"> </span>
|
|
584
|
-
<span class="cline-any cline-neutral"> </span>
|
|
585
|
-
<span class="cline-any cline-neutral"> </span>
|
|
586
|
-
<span class="cline-any cline-neutral"> </span>
|
|
587
|
-
<span class="cline-any cline-neutral"> </span>
|
|
588
|
-
<span class="cline-any cline-neutral"> </span>
|
|
589
|
-
<span class="cline-any cline-neutral"> </span>
|
|
590
|
-
<span class="cline-any cline-neutral"> </span>
|
|
591
|
-
<span class="cline-any cline-neutral"> </span>
|
|
592
|
-
<span class="cline-any cline-neutral"> </span>
|
|
593
|
-
<span class="cline-any cline-neutral"> </span>
|
|
594
|
-
<span class="cline-any cline-neutral"> </span>
|
|
595
|
-
<span class="cline-any cline-neutral"> </span>
|
|
596
|
-
<span class="cline-any cline-neutral"> </span>
|
|
597
|
-
<span class="cline-any cline-neutral"> </span>
|
|
598
|
-
<span class="cline-any cline-neutral"> </span>
|
|
599
|
-
<span class="cline-any cline-neutral"> </span>
|
|
600
|
-
<span class="cline-any cline-neutral"> </span>
|
|
601
|
-
<span class="cline-any cline-neutral"> </span>
|
|
602
|
-
<span class="cline-any cline-neutral"> </span>
|
|
603
|
-
<span class="cline-any cline-neutral"> </span>
|
|
604
|
-
<span class="cline-any cline-neutral"> </span>
|
|
605
|
-
<span class="cline-any cline-neutral"> </span>
|
|
606
|
-
<span class="cline-any cline-neutral"> </span>
|
|
607
|
-
<span class="cline-any cline-neutral"> </span>
|
|
608
|
-
<span class="cline-any cline-neutral"> </span>
|
|
609
|
-
<span class="cline-any cline-neutral"> </span>
|
|
610
|
-
<span class="cline-any cline-neutral"> </span>
|
|
611
|
-
<span class="cline-any cline-neutral"> </span>
|
|
612
|
-
<span class="cline-any cline-neutral"> </span>
|
|
613
|
-
<span class="cline-any cline-neutral"> </span>
|
|
614
|
-
<span class="cline-any cline-neutral"> </span>
|
|
615
|
-
<span class="cline-any cline-neutral"> </span>
|
|
616
|
-
<span class="cline-any cline-neutral"> </span>
|
|
617
|
-
<span class="cline-any cline-yes">43x</span>
|
|
618
|
-
<span class="cline-any cline-yes">43x</span>
|
|
619
|
-
<span class="cline-any cline-yes">43x</span>
|
|
620
|
-
<span class="cline-any cline-yes">43x</span>
|
|
621
|
-
<span class="cline-any cline-yes">43x</span>
|
|
622
|
-
<span class="cline-any cline-neutral"> </span>
|
|
623
|
-
<span class="cline-any cline-neutral"> </span>
|
|
624
|
-
<span class="cline-any cline-yes">43x</span>
|
|
625
|
-
<span class="cline-any cline-neutral"> </span>
|
|
626
|
-
<span class="cline-any cline-neutral"> </span>
|
|
627
|
-
<span class="cline-any cline-neutral"> </span>
|
|
628
|
-
<span class="cline-any cline-neutral"> </span>
|
|
629
|
-
<span class="cline-any cline-neutral"> </span>
|
|
630
|
-
<span class="cline-any cline-neutral"> </span>
|
|
631
|
-
<span class="cline-any cline-no"> </span>
|
|
632
|
-
<span class="cline-any cline-neutral"> </span>
|
|
633
|
-
<span class="cline-any cline-no"> </span>
|
|
634
|
-
<span class="cline-any cline-neutral"> </span>
|
|
635
|
-
<span class="cline-any cline-no"> </span>
|
|
636
|
-
<span class="cline-any cline-neutral"> </span>
|
|
637
|
-
<span class="cline-any cline-neutral"> </span>
|
|
638
|
-
<span class="cline-any cline-neutral"> </span>
|
|
639
|
-
<span class="cline-any cline-neutral"> </span>
|
|
640
|
-
<span class="cline-any cline-neutral"> </span>
|
|
641
|
-
<span class="cline-any cline-neutral"> </span>
|
|
642
|
-
<span class="cline-any cline-neutral"> </span>
|
|
643
|
-
<span class="cline-any cline-no"> </span>
|
|
644
|
-
<span class="cline-any cline-no"> </span>
|
|
645
|
-
<span class="cline-any cline-neutral"> </span>
|
|
646
|
-
<span class="cline-any cline-no"> </span>
|
|
647
|
-
<span class="cline-any cline-neutral"> </span>
|
|
648
|
-
<span class="cline-any cline-neutral"> </span>
|
|
649
|
-
<span class="cline-any cline-no"> </span>
|
|
650
|
-
<span class="cline-any cline-no"> </span>
|
|
651
|
-
<span class="cline-any cline-neutral"> </span>
|
|
652
|
-
<span class="cline-any cline-neutral"> </span>
|
|
653
|
-
<span class="cline-any cline-no"> </span>
|
|
654
|
-
<span class="cline-any cline-neutral"> </span>
|
|
655
|
-
<span class="cline-any cline-neutral"> </span>
|
|
656
|
-
<span class="cline-any cline-neutral"> </span>
|
|
657
|
-
<span class="cline-any cline-neutral"> </span>
|
|
658
|
-
<span class="cline-any cline-neutral"> </span>
|
|
659
|
-
<span class="cline-any cline-neutral"> </span>
|
|
660
|
-
<span class="cline-any cline-neutral"> </span>
|
|
661
|
-
<span class="cline-any cline-neutral"> </span>
|
|
662
|
-
<span class="cline-any cline-yes">43x</span>
|
|
663
|
-
<span class="cline-any cline-no"> </span>
|
|
664
|
-
<span class="cline-any cline-no"> </span>
|
|
665
|
-
<span class="cline-any cline-no"> </span>
|
|
666
|
-
<span class="cline-any cline-neutral"> </span>
|
|
667
|
-
<span class="cline-any cline-neutral"> </span>
|
|
668
|
-
<span class="cline-any cline-yes">43x</span>
|
|
669
|
-
<span class="cline-any cline-no"> </span>
|
|
670
|
-
<span class="cline-any cline-neutral"> </span>
|
|
671
|
-
<span class="cline-any cline-yes">43x</span>
|
|
672
|
-
<span class="cline-any cline-no"> </span>
|
|
673
|
-
<span class="cline-any cline-no"> </span>
|
|
674
|
-
<span class="cline-any cline-neutral"> </span>
|
|
675
|
-
<span class="cline-any cline-neutral"> </span>
|
|
676
|
-
<span class="cline-any cline-neutral"> </span>
|
|
677
|
-
<span class="cline-any cline-neutral"> </span>
|
|
678
|
-
<span class="cline-any cline-neutral"> </span>
|
|
679
|
-
<span class="cline-any cline-yes">43x</span>
|
|
680
|
-
<span class="cline-any cline-neutral"> </span>
|
|
681
|
-
<span class="cline-any cline-neutral"> </span>
|
|
682
|
-
<span class="cline-any cline-neutral"> </span>
|
|
683
|
-
<span class="cline-any cline-neutral"> </span>
|
|
684
|
-
<span class="cline-any cline-neutral"> </span>
|
|
685
|
-
<span class="cline-any cline-neutral"> </span>
|
|
686
|
-
<span class="cline-any cline-neutral"> </span>
|
|
687
|
-
<span class="cline-any cline-no"> </span>
|
|
688
|
-
<span class="cline-any cline-neutral"> </span>
|
|
689
|
-
<span class="cline-any cline-neutral"> </span>
|
|
690
|
-
<span class="cline-any cline-yes">43x</span>
|
|
691
|
-
<span class="cline-any cline-neutral"> </span>
|
|
692
|
-
<span class="cline-any cline-neutral"> </span>
|
|
693
|
-
<span class="cline-any cline-neutral"> </span>
|
|
694
|
-
<span class="cline-any cline-neutral"> </span>
|
|
695
|
-
<span class="cline-any cline-neutral"> </span>
|
|
696
|
-
<span class="cline-any cline-neutral"> </span>
|
|
697
|
-
<span class="cline-any cline-neutral"> </span>
|
|
698
|
-
<span class="cline-any cline-neutral"> </span>
|
|
699
|
-
<span class="cline-any cline-neutral"> </span>
|
|
700
|
-
<span class="cline-any cline-neutral"> </span>
|
|
701
|
-
<span class="cline-any cline-neutral"> </span>
|
|
702
|
-
<span class="cline-any cline-neutral"> </span>
|
|
703
|
-
<span class="cline-any cline-neutral"> </span>
|
|
704
|
-
<span class="cline-any cline-neutral"> </span>
|
|
705
|
-
<span class="cline-any cline-neutral"> </span>
|
|
706
|
-
<span class="cline-any cline-no"> </span>
|
|
707
|
-
<span class="cline-any cline-no"> </span>
|
|
708
|
-
<span class="cline-any cline-no"> </span>
|
|
709
|
-
<span class="cline-any cline-no"> </span>
|
|
710
|
-
<span class="cline-any cline-no"> </span>
|
|
711
|
-
<span class="cline-any cline-no"> </span>
|
|
712
|
-
<span class="cline-any cline-neutral"> </span>
|
|
713
|
-
<span class="cline-any cline-no"> </span>
|
|
714
|
-
<span class="cline-any cline-no"> </span>
|
|
715
|
-
<span class="cline-any cline-neutral"> </span>
|
|
716
|
-
<span class="cline-any cline-no"> </span>
|
|
717
|
-
<span class="cline-any cline-neutral"> </span>
|
|
718
|
-
<span class="cline-any cline-no"> </span>
|
|
719
|
-
<span class="cline-any cline-no"> </span>
|
|
720
|
-
<span class="cline-any cline-neutral"> </span>
|
|
721
|
-
<span class="cline-any cline-neutral"> </span>
|
|
722
|
-
<span class="cline-any cline-neutral"> </span>
|
|
723
|
-
<span class="cline-any cline-neutral"> </span>
|
|
724
|
-
<span class="cline-any cline-neutral"> </span>
|
|
725
|
-
<span class="cline-any cline-neutral"> </span>
|
|
726
|
-
<span class="cline-any cline-neutral"> </span>
|
|
727
|
-
<span class="cline-any cline-neutral"> </span>
|
|
728
|
-
<span class="cline-any cline-no"> </span>
|
|
729
|
-
<span class="cline-any cline-no"> </span>
|
|
730
|
-
<span class="cline-any cline-neutral"> </span>
|
|
731
|
-
<span class="cline-any cline-neutral"> </span>
|
|
732
|
-
<span class="cline-any cline-neutral"> </span>
|
|
733
|
-
<span class="cline-any cline-neutral"> </span>
|
|
734
|
-
<span class="cline-any cline-neutral"> </span>
|
|
735
|
-
<span class="cline-any cline-neutral"> </span>
|
|
736
|
-
<span class="cline-any cline-neutral"> </span>
|
|
737
|
-
<span class="cline-any cline-neutral"> </span>
|
|
738
|
-
<span class="cline-any cline-neutral"> </span>
|
|
739
|
-
<span class="cline-any cline-neutral"> </span>
|
|
740
|
-
<span class="cline-any cline-no"> </span>
|
|
741
|
-
<span class="cline-any cline-neutral"> </span>
|
|
742
|
-
<span class="cline-any cline-neutral"> </span>
|
|
743
|
-
<span class="cline-any cline-neutral"> </span>
|
|
744
|
-
<span class="cline-any cline-neutral"> </span>
|
|
745
|
-
<span class="cline-any cline-neutral"> </span>
|
|
746
|
-
<span class="cline-any cline-neutral"> </span>
|
|
747
|
-
<span class="cline-any cline-neutral"> </span>
|
|
748
|
-
<span class="cline-any cline-neutral"> </span>
|
|
749
|
-
<span class="cline-any cline-no"> </span>
|
|
750
|
-
<span class="cline-any cline-neutral"> </span>
|
|
751
|
-
<span class="cline-any cline-neutral"> </span>
|
|
752
|
-
<span class="cline-any cline-no"> </span>
|
|
753
|
-
<span class="cline-any cline-neutral"> </span>
|
|
754
|
-
<span class="cline-any cline-neutral"> </span>
|
|
755
|
-
<span class="cline-any cline-neutral"> </span>
|
|
756
|
-
<span class="cline-any cline-neutral"> </span>
|
|
757
|
-
<span class="cline-any cline-neutral"> </span>
|
|
758
|
-
<span class="cline-any cline-neutral"> </span>
|
|
759
|
-
<span class="cline-any cline-neutral"> </span>
|
|
760
|
-
<span class="cline-any cline-no"> </span>
|
|
761
|
-
<span class="cline-any cline-neutral"> </span>
|
|
762
|
-
<span class="cline-any cline-neutral"> </span>
|
|
763
|
-
<span class="cline-any cline-neutral"> </span>
|
|
764
|
-
<span class="cline-any cline-neutral"> </span>
|
|
765
|
-
<span class="cline-any cline-neutral"> </span>
|
|
766
|
-
<span class="cline-any cline-neutral"> </span>
|
|
767
|
-
<span class="cline-any cline-neutral"> </span>
|
|
768
|
-
<span class="cline-any cline-no"> </span>
|
|
769
|
-
<span class="cline-any cline-neutral"> </span>
|
|
770
|
-
<span class="cline-any cline-neutral"> </span>
|
|
771
|
-
<span class="cline-any cline-neutral"> </span>
|
|
772
|
-
<span class="cline-any cline-no"> </span>
|
|
773
|
-
<span class="cline-any cline-no"> </span>
|
|
774
|
-
<span class="cline-any cline-neutral"> </span>
|
|
775
|
-
<span class="cline-any cline-neutral"> </span>
|
|
776
|
-
<span class="cline-any cline-no"> </span>
|
|
777
|
-
<span class="cline-any cline-neutral"> </span>
|
|
778
|
-
<span class="cline-any cline-neutral"> </span>
|
|
779
|
-
<span class="cline-any cline-neutral"> </span>
|
|
780
|
-
<span class="cline-any cline-neutral"> </span>
|
|
781
|
-
<span class="cline-any cline-neutral"> </span>
|
|
782
|
-
<span class="cline-any cline-neutral"> </span>
|
|
783
|
-
<span class="cline-any cline-neutral"> </span>
|
|
784
|
-
<span class="cline-any cline-neutral"> </span>
|
|
785
|
-
<span class="cline-any cline-neutral"> </span>
|
|
786
|
-
<span class="cline-any cline-yes">43x</span>
|
|
787
|
-
<span class="cline-any cline-neutral"> </span>
|
|
788
|
-
<span class="cline-any cline-neutral"> </span>
|
|
789
|
-
<span class="cline-any cline-neutral"> </span>
|
|
790
|
-
<span class="cline-any cline-neutral"> </span>
|
|
791
|
-
<span class="cline-any cline-neutral"> </span>
|
|
792
|
-
<span class="cline-any cline-neutral"> </span>
|
|
793
|
-
<span class="cline-any cline-yes">1x</span>
|
|
794
|
-
<span class="cline-any cline-neutral"> </span>
|
|
795
|
-
<span class="cline-any cline-yes">1x</span>
|
|
796
|
-
<span class="cline-any cline-neutral"> </span>
|
|
797
|
-
<span class="cline-any cline-yes">1x</span>
|
|
798
|
-
<span class="cline-any cline-yes">1x</span>
|
|
799
|
-
<span class="cline-any cline-neutral"> </span>
|
|
800
|
-
<span class="cline-any cline-neutral"> </span>
|
|
801
|
-
<span class="cline-any cline-neutral"> </span>
|
|
802
|
-
<span class="cline-any cline-yes">1x</span>
|
|
803
|
-
<span class="cline-any cline-yes">1x</span>
|
|
804
|
-
<span class="cline-any cline-yes">1x</span>
|
|
805
|
-
<span class="cline-any cline-neutral"> </span>
|
|
806
|
-
<span class="cline-any cline-neutral"> </span>
|
|
807
|
-
<span class="cline-any cline-neutral"> </span>
|
|
808
|
-
<span class="cline-any cline-neutral"> </span>
|
|
809
|
-
<span class="cline-any cline-neutral"> </span>
|
|
810
|
-
<span class="cline-any cline-neutral"> </span>
|
|
811
|
-
<span class="cline-any cline-neutral"> </span>
|
|
812
|
-
<span class="cline-any cline-neutral"> </span>
|
|
813
|
-
<span class="cline-any cline-neutral"> </span>
|
|
814
|
-
<span class="cline-any cline-yes">1x</span>
|
|
815
|
-
<span class="cline-any cline-neutral"> </span>
|
|
816
|
-
<span class="cline-any cline-neutral"> </span>
|
|
817
|
-
<span class="cline-any cline-yes">1x</span>
|
|
818
|
-
<span class="cline-any cline-yes">1x</span>
|
|
819
|
-
<span class="cline-any cline-yes">1x</span>
|
|
820
|
-
<span class="cline-any cline-neutral"> </span>
|
|
821
|
-
<span class="cline-any cline-neutral"> </span>
|
|
822
|
-
<span class="cline-any cline-neutral"> </span>
|
|
823
|
-
<span class="cline-any cline-neutral"> </span>
|
|
824
|
-
<span class="cline-any cline-neutral"> </span>
|
|
825
|
-
<span class="cline-any cline-neutral"> </span>
|
|
826
|
-
<span class="cline-any cline-yes">1x</span>
|
|
827
|
-
<span class="cline-any cline-neutral"> </span>
|
|
828
|
-
<span class="cline-any cline-neutral"> </span>
|
|
829
|
-
<span class="cline-any cline-neutral"> </span>
|
|
830
|
-
<span class="cline-any cline-yes">1x</span>
|
|
831
|
-
<span class="cline-any cline-neutral"> </span>
|
|
832
|
-
<span class="cline-any cline-neutral"> </span>
|
|
833
|
-
<span class="cline-any cline-neutral"> </span>
|
|
834
|
-
<span class="cline-any cline-neutral"> </span>
|
|
835
|
-
<span class="cline-any cline-neutral"> </span>
|
|
836
|
-
<span class="cline-any cline-yes">1x</span>
|
|
837
|
-
<span class="cline-any cline-neutral"> </span>
|
|
838
|
-
<span class="cline-any cline-neutral"> </span>
|
|
839
|
-
<span class="cline-any cline-neutral"> </span>
|
|
840
|
-
<span class="cline-any cline-neutral"> </span>
|
|
841
|
-
<span class="cline-any cline-neutral"> </span>
|
|
842
|
-
<span class="cline-any cline-yes">1x</span>
|
|
843
|
-
<span class="cline-any cline-yes">1x</span>
|
|
844
|
-
<span class="cline-any cline-neutral"> </span>
|
|
845
|
-
<span class="cline-any cline-neutral"> </span>
|
|
846
|
-
<span class="cline-any cline-neutral"> </span>
|
|
847
|
-
<span class="cline-any cline-neutral"> </span>
|
|
848
|
-
<span class="cline-any cline-neutral"> </span>
|
|
849
|
-
<span class="cline-any cline-yes">1x</span>
|
|
850
|
-
<span class="cline-any cline-neutral"> </span>
|
|
851
|
-
<span class="cline-any cline-yes">1x</span>
|
|
852
|
-
<span class="cline-any cline-no"> </span>
|
|
853
|
-
<span class="cline-any cline-neutral"> </span>
|
|
854
|
-
<span class="cline-any cline-no"> </span>
|
|
855
|
-
<span class="cline-any cline-neutral"> </span>
|
|
856
|
-
<span class="cline-any cline-neutral"> </span>
|
|
857
|
-
<span class="cline-any cline-no"> </span>
|
|
858
|
-
<span class="cline-any cline-neutral"> </span>
|
|
859
|
-
<span class="cline-any cline-neutral"> </span>
|
|
860
|
-
<span class="cline-any cline-neutral"> </span>
|
|
861
|
-
<span class="cline-any cline-neutral"> </span>
|
|
862
|
-
<span class="cline-any cline-no"> </span>
|
|
863
|
-
<span class="cline-any cline-no"> </span>
|
|
864
|
-
<span class="cline-any cline-neutral"> </span>
|
|
865
|
-
<span class="cline-any cline-no"> </span>
|
|
866
|
-
<span class="cline-any cline-no"> </span>
|
|
867
|
-
<span class="cline-any cline-neutral"> </span>
|
|
868
|
-
<span class="cline-any cline-neutral"> </span>
|
|
869
|
-
<span class="cline-any cline-neutral"> </span>
|
|
870
|
-
<span class="cline-any cline-neutral"> </span>
|
|
871
|
-
<span class="cline-any cline-no"> </span>
|
|
872
|
-
<span class="cline-any cline-neutral"> </span>
|
|
873
|
-
<span class="cline-any cline-neutral"> </span>
|
|
874
|
-
<span class="cline-any cline-neutral"> </span>
|
|
875
|
-
<span class="cline-any cline-neutral"> </span>
|
|
876
|
-
<span class="cline-any cline-yes">43x</span>
|
|
877
|
-
<span class="cline-any cline-neutral"> </span>
|
|
878
|
-
<span class="cline-any cline-neutral"> </span>
|
|
879
|
-
<span class="cline-any cline-neutral"> </span>
|
|
880
|
-
<span class="cline-any cline-neutral"> </span>
|
|
881
|
-
<span class="cline-any cline-neutral"> </span>
|
|
882
|
-
<span class="cline-any cline-neutral"> </span>
|
|
883
|
-
<span class="cline-any cline-neutral"> </span>
|
|
884
|
-
<span class="cline-any cline-neutral"> </span>
|
|
885
|
-
<span class="cline-any cline-neutral"> </span>
|
|
886
|
-
<span class="cline-any cline-neutral"> </span>
|
|
887
|
-
<span class="cline-any cline-neutral"> </span>
|
|
888
|
-
<span class="cline-any cline-neutral"> </span>
|
|
889
|
-
<span class="cline-any cline-neutral"> </span>
|
|
890
|
-
<span class="cline-any cline-neutral"> </span>
|
|
891
|
-
<span class="cline-any cline-neutral"> </span>
|
|
892
|
-
<span class="cline-any cline-no"> </span>
|
|
893
|
-
<span class="cline-any cline-neutral"> </span>
|
|
894
|
-
<span class="cline-any cline-no"> </span>
|
|
895
|
-
<span class="cline-any cline-no"> </span>
|
|
896
|
-
<span class="cline-any cline-neutral"> </span>
|
|
897
|
-
<span class="cline-any cline-neutral"> </span>
|
|
898
|
-
<span class="cline-any cline-no"> </span>
|
|
899
|
-
<span class="cline-any cline-no"> </span>
|
|
900
|
-
<span class="cline-any cline-neutral"> </span>
|
|
901
|
-
<span class="cline-any cline-no"> </span>
|
|
902
|
-
<span class="cline-any cline-neutral"> </span>
|
|
903
|
-
<span class="cline-any cline-neutral"> </span>
|
|
904
|
-
<span class="cline-any cline-neutral"> </span>
|
|
905
|
-
<span class="cline-any cline-no"> </span>
|
|
906
|
-
<span class="cline-any cline-neutral"> </span>
|
|
907
|
-
<span class="cline-any cline-neutral"> </span>
|
|
908
|
-
<span class="cline-any cline-no"> </span>
|
|
909
|
-
<span class="cline-any cline-neutral"> </span>
|
|
910
|
-
<span class="cline-any cline-neutral"> </span>
|
|
911
|
-
<span class="cline-any cline-neutral"> </span>
|
|
912
|
-
<span class="cline-any cline-neutral"> </span>
|
|
913
|
-
<span class="cline-any cline-neutral"> </span>
|
|
914
|
-
<span class="cline-any cline-neutral"> </span>
|
|
915
|
-
<span class="cline-any cline-neutral"> </span>
|
|
916
|
-
<span class="cline-any cline-neutral"> </span>
|
|
917
|
-
<span class="cline-any cline-no"> </span>
|
|
918
|
-
<span class="cline-any cline-neutral"> </span>
|
|
919
|
-
<span class="cline-any cline-neutral"> </span>
|
|
920
|
-
<span class="cline-any cline-neutral"> </span>
|
|
921
|
-
<span class="cline-any cline-neutral"> </span>
|
|
922
|
-
<span class="cline-any cline-neutral"> </span>
|
|
923
|
-
<span class="cline-any cline-no"> </span>
|
|
924
|
-
<span class="cline-any cline-neutral"> </span>
|
|
925
|
-
<span class="cline-any cline-no"> </span>
|
|
926
|
-
<span class="cline-any cline-neutral"> </span>
|
|
927
|
-
<span class="cline-any cline-no"> </span>
|
|
928
|
-
<span class="cline-any cline-no"> </span>
|
|
929
|
-
<span class="cline-any cline-neutral"> </span>
|
|
930
|
-
<span class="cline-any cline-no"> </span>
|
|
931
|
-
<span class="cline-any cline-neutral"> </span>
|
|
932
|
-
<span class="cline-any cline-neutral"> </span>
|
|
933
|
-
<span class="cline-any cline-no"> </span>
|
|
934
|
-
<span class="cline-any cline-neutral"> </span>
|
|
935
|
-
<span class="cline-any cline-no"> </span>
|
|
936
|
-
<span class="cline-any cline-neutral"> </span>
|
|
937
|
-
<span class="cline-any cline-neutral"> </span>
|
|
938
|
-
<span class="cline-any cline-neutral"> </span>
|
|
939
|
-
<span class="cline-any cline-no"> </span>
|
|
940
|
-
<span class="cline-any cline-neutral"> </span>
|
|
941
|
-
<span class="cline-any cline-no"> </span>
|
|
942
|
-
<span class="cline-any cline-neutral"> </span>
|
|
943
|
-
<span class="cline-any cline-neutral"> </span>
|
|
944
|
-
<span class="cline-any cline-no"> </span>
|
|
945
|
-
<span class="cline-any cline-neutral"> </span>
|
|
946
|
-
<span class="cline-any cline-no"> </span>
|
|
947
|
-
<span class="cline-any cline-no"> </span>
|
|
948
|
-
<span class="cline-any cline-neutral"> </span>
|
|
949
|
-
<span class="cline-any cline-no"> </span>
|
|
950
|
-
<span class="cline-any cline-neutral"> </span>
|
|
951
|
-
<span class="cline-any cline-neutral"> </span>
|
|
952
|
-
<span class="cline-any cline-no"> </span>
|
|
953
|
-
<span class="cline-any cline-neutral"> </span>
|
|
954
|
-
<span class="cline-any cline-neutral"> </span>
|
|
955
|
-
<span class="cline-any cline-no"> </span>
|
|
956
|
-
<span class="cline-any cline-neutral"> </span>
|
|
957
|
-
<span class="cline-any cline-neutral"> </span>
|
|
958
|
-
<span class="cline-any cline-neutral"> </span>
|
|
959
|
-
<span class="cline-any cline-neutral"> </span>
|
|
960
|
-
<span class="cline-any cline-neutral"> </span>
|
|
961
|
-
<span class="cline-any cline-neutral"> </span>
|
|
962
|
-
<span class="cline-any cline-neutral"> </span>
|
|
963
|
-
<span class="cline-any cline-neutral"> </span>
|
|
964
|
-
<span class="cline-any cline-neutral"> </span>
|
|
965
|
-
<span class="cline-any cline-neutral"> </span>
|
|
966
|
-
<span class="cline-any cline-yes">43x</span>
|
|
967
|
-
<span class="cline-any cline-yes">1x</span>
|
|
968
|
-
<span class="cline-any cline-yes">1x</span>
|
|
969
|
-
<span class="cline-any cline-neutral"> </span>
|
|
970
|
-
<span class="cline-any cline-yes">1x</span>
|
|
971
|
-
<span class="cline-any cline-neutral"> </span>
|
|
972
|
-
<span class="cline-any cline-neutral"> </span>
|
|
973
|
-
<span class="cline-any cline-yes">1x</span>
|
|
974
|
-
<span class="cline-any cline-yes">1x</span>
|
|
975
|
-
<span class="cline-any cline-neutral"> </span>
|
|
976
|
-
<span class="cline-any cline-neutral"> </span>
|
|
977
|
-
<span class="cline-any cline-no"> </span>
|
|
978
|
-
<span class="cline-any cline-no"> </span>
|
|
979
|
-
<span class="cline-any cline-neutral"> </span>
|
|
980
|
-
<span class="cline-any cline-neutral"> </span>
|
|
981
|
-
<span class="cline-any cline-no"> </span>
|
|
982
|
-
<span class="cline-any cline-neutral"> </span>
|
|
983
|
-
<span class="cline-any cline-neutral"> </span>
|
|
984
|
-
<span class="cline-any cline-neutral"> </span>
|
|
985
|
-
<span class="cline-any cline-neutral"> </span>
|
|
986
|
-
<span class="cline-any cline-neutral"> </span>
|
|
987
|
-
<span class="cline-any cline-neutral"> </span>
|
|
988
|
-
<span class="cline-any cline-neutral"> </span>
|
|
989
|
-
<span class="cline-any cline-neutral"> </span>
|
|
990
|
-
<span class="cline-any cline-yes">43x</span>
|
|
991
|
-
<span class="cline-any cline-neutral"> </span>
|
|
992
|
-
<span class="cline-any cline-neutral"> </span>
|
|
993
|
-
<span class="cline-any cline-neutral"> </span>
|
|
994
|
-
<span class="cline-any cline-neutral"> </span>
|
|
995
|
-
<span class="cline-any cline-neutral"> </span>
|
|
996
|
-
<span class="cline-any cline-neutral"> </span>
|
|
997
|
-
<span class="cline-any cline-neutral"> </span>
|
|
998
|
-
<span class="cline-any cline-neutral"> </span>
|
|
999
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1000
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1001
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1002
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1003
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1004
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1005
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1006
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1007
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1008
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1009
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1010
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1011
|
-
<span class="cline-any cline-yes">43x</span>
|
|
1012
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1013
|
-
<span class="cline-any cline-no"> </span>
|
|
1014
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1015
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1016
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1017
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1018
|
-
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import * as syscoinjs from 'syscoinjs-lib';
|
|
1019
|
-
// import { BIP_84, ONE_HUNDRED_MILLION, SYSCOIN_BASIC_FEE } from 'utils';
|
|
1020
|
-
|
|
1021
|
-
import { LedgerKeyring } from '../ledger';
|
|
1022
|
-
import { DefaultWalletPolicy } from '../ledger/bitcoin_client';
|
|
1023
|
-
import { SyscoinHDSigner } from '../signers';
|
|
1024
|
-
import { TrezorKeyring } from '../trezor';
|
|
1025
|
-
import {
|
|
1026
|
-
ISyscoinTransactions,
|
|
1027
|
-
KeyringAccountType,
|
|
1028
|
-
accountType,
|
|
1029
|
-
} from '../types';
|
|
1030
|
-
import { getAccountDerivationPath } from '../utils/derivation-paths';
|
|
1031
|
-
import { PsbtUtils } from '../utils/psbt';
|
|
1032
|
-
import { INetwork } from '@pollum-io/sysweb3-network';
|
|
1033
|
-
import { ITxid, txUtils, getAsset } from '@pollum-io/sysweb3-utils';
|
|
1034
|
-
|
|
1035
|
-
type EstimateFeeParams = {
|
|
1036
|
-
changeAddress: string;
|
|
1037
|
-
feeRateBN: any;
|
|
1038
|
-
outputs: { address: string; value: number }[];
|
|
1039
|
-
txOptions: any;
|
|
1040
|
-
xpub: string;
|
|
1041
|
-
};
|
|
1042
|
-
|
|
1043
|
-
export class SyscoinTransactions implements ISyscoinTransactions {
|
|
1044
|
-
// New separated transaction flow for better UX:
|
|
1045
|
-
// 1. Call getEstimateSysTransactionFee() - creates UNSIGNED PSBT and calculates fee
|
|
1046
|
-
// 2. Call signPSBT() - signs the PSBT with appropriate wallet (HD/Trezor/Ledger)
|
|
1047
|
-
// 3. Call sendTransaction() - broadcasts the signed PSBT
|
|
1048
|
-
//
|
|
1049
|
-
// This separation allows:
|
|
1050
|
-
// - Independent error handling for each step
|
|
1051
|
-
// - Better UX feedback (fee estimation, signing, broadcasting)
|
|
1052
|
-
// - Hardware wallet compatibility with proper PSBT enhancement
|
|
1053
|
-
|
|
1054
|
-
private getSigner: () => {
|
|
1055
|
-
hd: SyscoinHDSigner;
|
|
1056
|
-
main: any;
|
|
1057
|
-
};
|
|
1058
|
-
private trezor: TrezorKeyring;
|
|
1059
|
-
private ledger: LedgerKeyring;
|
|
1060
|
-
private getState: () => {
|
|
1061
|
-
accounts: {
|
|
1062
|
-
HDAccount: accountType;
|
|
1063
|
-
Imported: accountType;
|
|
1064
|
-
Ledger: accountType;
|
|
1065
|
-
Trezor: accountType;
|
|
1066
|
-
};
|
|
1067
|
-
activeAccountId: number;
|
|
1068
|
-
activeAccountType: KeyringAccountType;
|
|
1069
|
-
activeNetwork: INetwork;
|
|
1070
|
-
};
|
|
1071
|
-
private getAddress: (
|
|
1072
|
-
xpub: string,
|
|
1073
|
-
isChangeAddress: boolean
|
|
1074
|
-
) => Promise<string>;
|
|
1075
|
-
|
|
1076
|
-
constructor(
|
|
1077
|
-
getSyscoinSigner: () => {
|
|
1078
|
-
hd: SyscoinHDSigner;
|
|
1079
|
-
main: any;
|
|
1080
|
-
},
|
|
1081
|
-
getState: () => {
|
|
1082
|
-
accounts: {
|
|
1083
|
-
HDAccount: accountType;
|
|
1084
|
-
Imported: accountType;
|
|
1085
|
-
Ledger: accountType;
|
|
1086
|
-
Trezor: accountType;
|
|
1087
|
-
};
|
|
1088
|
-
activeAccountId: number;
|
|
1089
|
-
activeAccountType: KeyringAccountType;
|
|
1090
|
-
activeNetwork: INetwork;
|
|
1091
|
-
},
|
|
1092
|
-
getAddress: (xpub: string, isChangeAddress: boolean) => Promise<string>,
|
|
1093
|
-
ledgerSigner: LedgerKeyring
|
|
1094
|
-
) {
|
|
1095
|
-
this.getSigner = getSyscoinSigner;
|
|
1096
|
-
this.getState = getState;
|
|
1097
|
-
this.getAddress = getAddress;
|
|
1098
|
-
this.trezor = new TrezorKeyring(this.getSigner);
|
|
1099
|
-
this.ledger = ledgerSigner;
|
|
1100
|
-
}
|
|
1101
|
-
|
|
1102
|
-
private getTransactionPSBT = <span class="fstat-no" title="function not covered" >async </span>({
|
|
1103
|
-
txOptions,
|
|
1104
|
-
outputs,
|
|
1105
|
-
changeAddress,
|
|
1106
|
-
xpub,
|
|
1107
|
-
feeRateBN,
|
|
1108
|
-
}: EstimateFeeParams) => {
|
|
1109
|
-
const { main } = <span class="cstat-no" title="statement not covered" >this.getSigner();</span>
|
|
1110
|
-
|
|
1111
|
-
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
1112
|
-
// Use syscoinjs-lib directly for transaction creation
|
|
1113
|
-
const result = <span class="cstat-no" title="statement not covered" >await main.createTransaction(</span>
|
|
1114
|
-
txOptions,
|
|
1115
|
-
changeAddress,
|
|
1116
|
-
outputs,
|
|
1117
|
-
feeRateBN,
|
|
1118
|
-
xpub // sysFromXpubOrAddress
|
|
1119
|
-
);
|
|
1120
|
-
|
|
1121
|
-
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (result && result.psbt) {</span>
|
|
1122
|
-
<span class="cstat-no" title="statement not covered" > return { psbt: result.psbt, fee: result.fee };</span>
|
|
1123
|
-
}
|
|
1124
|
-
<span class="cstat-no" title="statement not covered" > throw new Error('psbt not found');</span>
|
|
1125
|
-
} catch (error) {
|
|
1126
|
-
// Propagate structured error from syscoinjs-lib
|
|
1127
|
-
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (error.error && error.code) {</span>
|
|
1128
|
-
<span class="cstat-no" title="statement not covered" > throw error;</span>
|
|
1129
|
-
}
|
|
1130
|
-
// Wrap non-structured errors
|
|
1131
|
-
<span class="cstat-no" title="statement not covered" > throw {</span>
|
|
1132
|
-
error: true,
|
|
1133
|
-
code: 'TRANSACTION_CREATION_FAILED',
|
|
1134
|
-
message: error.message || 'Failed to create transaction',
|
|
1135
|
-
details: error,
|
|
1136
|
-
};
|
|
1137
|
-
}
|
|
1138
|
-
};
|
|
1139
|
-
|
|
1140
|
-
public decodeRawTransaction = <span class="fstat-no" title="function not covered" >(p</span>sbt: any) => {
|
|
1141
|
-
const { main } = <span class="cstat-no" title="statement not covered" >this.getSigner();</span>
|
|
1142
|
-
const psbtObj = <span class="cstat-no" title="statement not covered" >PsbtUtils.fromPali(psbt);</span>
|
|
1143
|
-
<span class="cstat-no" title="statement not covered" > return main.decodeRawTransaction(psbtObj);</span>
|
|
1144
|
-
};
|
|
1145
|
-
|
|
1146
|
-
public getRecommendedFee = <span class="fstat-no" title="function not covered" >async </span>(explorerUrl: string): Promise<number> =>
|
|
1147
|
-
<span class="cstat-no" title="statement not covered" > (await syscoinjs.utils.fetchEstimateFee(explorerUrl, 1)) / 1024;</span>
|
|
1148
|
-
|
|
1149
|
-
public txUtilsFunctions = <span class="fstat-no" title="function not covered" >() =</span>> {
|
|
1150
|
-
const { getRawTransaction } = <span class="cstat-no" title="statement not covered" >txUtils();</span>
|
|
1151
|
-
<span class="cstat-no" title="statement not covered" > return {</span>
|
|
1152
|
-
getRawTransaction,
|
|
1153
|
-
};
|
|
1154
|
-
};
|
|
1155
|
-
|
|
1156
|
-
// Internal method for signing with the HD signer
|
|
1157
|
-
private signPSBTWithSigner = <span class="fstat-no" title="function not covered" >async </span>({
|
|
1158
|
-
psbt,
|
|
1159
|
-
signer,
|
|
1160
|
-
pathIn,
|
|
1161
|
-
}: {
|
|
1162
|
-
pathIn?: string;
|
|
1163
|
-
psbt: any;
|
|
1164
|
-
signer: any;
|
|
1165
|
-
}): Promise<any> => <span class="cstat-no" title="statement not covered" >await signer.sign(psbt, pathIn);</span>
|
|
1166
|
-
|
|
1167
|
-
// Create unsigned PSBT for any transaction type
|
|
1168
|
-
private createUnsignedPSBT = <span class="fstat-no" title="function not covered" >async </span>({
|
|
1169
|
-
txOptions = <span class="branch-0 cbranch-no" title="branch not covered" >{},</span>
|
|
1170
|
-
isMax = <span class="branch-0 cbranch-no" title="branch not covered" >false,</span>
|
|
1171
|
-
amount,
|
|
1172
|
-
receivingAddress,
|
|
1173
|
-
feeRateBN,
|
|
1174
|
-
token = <span class="branch-0 cbranch-no" title="branch not covered" >null,</span>
|
|
1175
|
-
}: {
|
|
1176
|
-
amount: number;
|
|
1177
|
-
feeRateBN: any; // BigNumber in satoshis/byte
|
|
1178
|
-
receivingAddress: string;
|
|
1179
|
-
token?: { guid: string; symbol?: string } | null;
|
|
1180
|
-
txOptions?: any;
|
|
1181
|
-
isMax?: boolean | false;
|
|
1182
|
-
}): Promise<{ psbt: any; fee: number }> => {
|
|
1183
|
-
// Ensure RBF is enabled by default if not explicitly set
|
|
1184
|
-
const finalTxOptions = <span class="cstat-no" title="statement not covered" >{ rbf: true, ...txOptions };</span>
|
|
1185
|
-
const { activeAccountId, accounts, activeAccountType } = <span class="cstat-no" title="statement not covered" >this.getState();</span>
|
|
1186
|
-
const { main } = <span class="cstat-no" title="statement not covered" >this.getSigner();</span>
|
|
1187
|
-
const xpub = <span class="cstat-no" title="statement not covered" >accounts[activeAccountType][activeAccountId].xpub;</span>
|
|
1188
|
-
const value = <span class="cstat-no" title="statement not covered" >new syscoinjs.utils.BN(amount * 1e8);</span>
|
|
1189
|
-
const changeAddress = <span class="cstat-no" title="statement not covered" >await this.getAddress(xpub, true);</span>
|
|
1190
|
-
|
|
1191
|
-
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
1192
|
-
<span class="cstat-no" title="statement not covered" > if (token && token.guid) {</span>
|
|
1193
|
-
// Token transaction: use assetAllocationSend
|
|
1194
|
-
const asset = <span class="cstat-no" title="statement not covered" >await getAsset(main.blockbookURL, token.guid);</span>
|
|
1195
|
-
|
|
1196
|
-
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!asset) {</span>
|
|
1197
|
-
<span class="cstat-no" title="statement not covered" > throw {</span>
|
|
1198
|
-
error: true,
|
|
1199
|
-
code: 'INVALID_ASSET_ALLOCATION',
|
|
1200
|
-
message: 'Token not found',
|
|
1201
|
-
details: { guid: token.guid },
|
|
1202
|
-
};
|
|
1203
|
-
}
|
|
1204
|
-
|
|
1205
|
-
// Create a Map for the asset allocation
|
|
1206
|
-
const assetMap = <span class="cstat-no" title="statement not covered" >new Map();</span>
|
|
1207
|
-
<span class="cstat-no" title="statement not covered" > assetMap.set(token.guid, {</span>
|
|
1208
|
-
changeAddress,
|
|
1209
|
-
outputs: [
|
|
1210
|
-
{
|
|
1211
|
-
value: value as any,
|
|
1212
|
-
address: receivingAddress,
|
|
1213
|
-
},
|
|
1214
|
-
],
|
|
1215
|
-
});
|
|
1216
|
-
|
|
1217
|
-
// Pass xpub to get back just the PSBT without signing and sending
|
|
1218
|
-
const result = <span class="cstat-no" title="statement not covered" >await main.assetAllocationSend(</span>
|
|
1219
|
-
finalTxOptions,
|
|
1220
|
-
assetMap,
|
|
1221
|
-
changeAddress,
|
|
1222
|
-
feeRateBN,
|
|
1223
|
-
xpub // Pass xpub to get PSBT back
|
|
1224
|
-
);
|
|
1225
|
-
|
|
1226
|
-
// Return PSBT and fee
|
|
1227
|
-
<span class="cstat-no" title="statement not covered" > return { psbt: result.psbt, fee: result.fee };</span>
|
|
1228
|
-
} else {
|
|
1229
|
-
// Native transaction: use getTransactionPSBT to create unsigned PSBT
|
|
1230
|
-
const outputs = <span class="cstat-no" title="statement not covered" >[</span>
|
|
1231
|
-
{
|
|
1232
|
-
address: receivingAddress,
|
|
1233
|
-
value,
|
|
1234
|
-
subtractFeeFrom: isMax ? true : undefined,
|
|
1235
|
-
},
|
|
1236
|
-
];
|
|
1237
|
-
|
|
1238
|
-
const result = <span class="cstat-no" title="statement not covered" >await this.getTransactionPSBT({</span>
|
|
1239
|
-
txOptions: finalTxOptions,
|
|
1240
|
-
outputs,
|
|
1241
|
-
changeAddress,
|
|
1242
|
-
feeRateBN,
|
|
1243
|
-
xpub,
|
|
1244
|
-
});
|
|
1245
|
-
|
|
1246
|
-
<span class="cstat-no" title="statement not covered" > return result;</span>
|
|
1247
|
-
}
|
|
1248
|
-
} catch (error) {
|
|
1249
|
-
// Re-throw structured errors from syscoinjs-lib
|
|
1250
|
-
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (error.error && error.code) {</span>
|
|
1251
|
-
<span class="cstat-no" title="statement not covered" > throw error;</span>
|
|
1252
|
-
}
|
|
1253
|
-
// Wrap other errors in structured format
|
|
1254
|
-
<span class="cstat-no" title="statement not covered" > throw {</span>
|
|
1255
|
-
error: true,
|
|
1256
|
-
code: 'TRANSACTION_CREATION_FAILED',
|
|
1257
|
-
message: error.message || 'Failed to create unsigned PSBT',
|
|
1258
|
-
details: error,
|
|
1259
|
-
};
|
|
1260
|
-
}
|
|
1261
|
-
};
|
|
1262
|
-
|
|
1263
|
-
// Sign PSBT with appropriate method - separated for better error handling
|
|
1264
|
-
private signPSBTWithMethod = async (
|
|
1265
|
-
psbt: any,
|
|
1266
|
-
isTrezor: boolean,
|
|
1267
|
-
isLedger = <span class="branch-0 cbranch-no" title="branch not covered" >false,</span>
|
|
1268
|
-
pathIn = ''
|
|
1269
|
-
): Promise<any> => {
|
|
1270
|
-
const { activeNetwork, activeAccountId, activeAccountType, accounts } =
|
|
1271
|
-
this.getState();
|
|
1272
|
-
|
|
1273
|
-
if (isLedger) {
|
|
1274
|
-
// Initialize Ledger connection if needed
|
|
1275
|
-
if (!this.ledger.ledgerTransport) {
|
|
1276
|
-
await this.ledger.connectToLedgerDevice();
|
|
1277
|
-
}
|
|
1278
|
-
|
|
1279
|
-
// CRITICAL: Enhance PSBT with required Ledger fields
|
|
1280
|
-
const accountXpub = accounts[activeAccountType][activeAccountId].xpub;
|
|
1281
|
-
const accountId = accounts[activeAccountType][activeAccountId].id;
|
|
1282
|
-
const enhancedPsbt = await this.ledger.convertToLedgerFormat(
|
|
1283
|
-
psbt,
|
|
1284
|
-
accountXpub,
|
|
1285
|
-
accountId,
|
|
1286
|
-
activeNetwork.currency,
|
|
1287
|
-
activeNetwork.slip44
|
|
1288
|
-
);
|
|
1289
|
-
|
|
1290
|
-
// Get wallet policy for Ledger
|
|
1291
|
-
const fingerprint =
|
|
1292
|
-
await this.ledger.ledgerUtxoClient.getMasterFingerprint();
|
|
1293
|
-
|
|
1294
|
-
// Use dynamic path generation if no path provided
|
|
1295
|
-
let hdPath = pathIn;
|
|
1296
|
-
if (!pathIn || <span class="branch-1 cbranch-no" title="branch not covered" >pathIn.length === 0)</span> {
|
|
1297
|
-
hdPath = getAccountDerivationPath(
|
|
1298
|
-
activeNetwork.currency,
|
|
1299
|
-
activeNetwork.slip44,
|
|
1300
|
-
accountId
|
|
1301
|
-
);
|
|
1302
|
-
}
|
|
1303
|
-
|
|
1304
|
-
const xpubWithDescriptor = `[${hdPath}]${accountXpub}`.replace(
|
|
1305
|
-
'm',
|
|
1306
|
-
fingerprint
|
|
1307
|
-
);
|
|
1308
|
-
const walletPolicy = new DefaultWalletPolicy(
|
|
1309
|
-
'wpkh(@0/**)',
|
|
1310
|
-
xpubWithDescriptor
|
|
1311
|
-
);
|
|
1312
|
-
|
|
1313
|
-
// Sign the enhanced PSBT with Ledger
|
|
1314
|
-
const signatureEntries = await this.ledger.ledgerUtxoClient.signPsbt(
|
|
1315
|
-
enhancedPsbt.toBase64(),
|
|
1316
|
-
walletPolicy,
|
|
1317
|
-
null // No HMAC needed for standard policy
|
|
1318
|
-
);
|
|
1319
|
-
|
|
1320
|
-
signatureEntries.forEach(([inputIndex, partialSig]) => {
|
|
1321
|
-
enhancedPsbt.updateInput(inputIndex, {
|
|
1322
|
-
partialSig: [partialSig],
|
|
1323
|
-
});
|
|
1324
|
-
});
|
|
1325
|
-
|
|
1326
|
-
// Finalize all inputs
|
|
1327
|
-
enhancedPsbt.finalizeAllInputs();
|
|
1328
|
-
|
|
1329
|
-
return enhancedPsbt;
|
|
1330
|
-
} else <span class="cstat-no" title="statement not covered" ><span class="missing-if-branch" title="else path not taken" >E</span>if (isTrezor) {</span>
|
|
1331
|
-
// Initialize Trezor connection before signing
|
|
1332
|
-
<span class="cstat-no" title="statement not covered" > await this.trezor.init();</span>
|
|
1333
|
-
|
|
1334
|
-
// Handle Trezor signing for UTXO
|
|
1335
|
-
const trezorTx = <span class="cstat-no" title="statement not covered" >this.trezor.convertToTrezorFormat({</span>
|
|
1336
|
-
psbt,
|
|
1337
|
-
pathIn, // Pass pathIn to Trezor
|
|
1338
|
-
coin: activeNetwork.currency.toLowerCase(),
|
|
1339
|
-
});
|
|
1340
|
-
const signedPsbt = <span class="cstat-no" title="statement not covered" >await this.trezor.signUtxoTransaction(trezorTx, psbt);</span>
|
|
1341
|
-
<span class="cstat-no" title="statement not covered" > return signedPsbt;</span>
|
|
1342
|
-
} else {
|
|
1343
|
-
const { hd } = <span class="cstat-no" title="statement not covered" >this.getSigner();</span>
|
|
1344
|
-
const signedPsbt = <span class="cstat-no" title="statement not covered" >await this.signPSBTWithSigner({</span>
|
|
1345
|
-
psbt,
|
|
1346
|
-
signer: hd,
|
|
1347
|
-
pathIn,
|
|
1348
|
-
});
|
|
1349
|
-
<span class="cstat-no" title="statement not covered" > return signedPsbt;</span>
|
|
1350
|
-
}
|
|
1351
|
-
};
|
|
1352
|
-
|
|
1353
|
-
// Create unsigned PSBT and estimate fee - NO SIGNING
|
|
1354
|
-
public getEstimateSysTransactionFee = <span class="fstat-no" title="function not covered" >async </span>({
|
|
1355
|
-
txOptions = <span class="branch-0 cbranch-no" title="branch not covered" >{},</span>
|
|
1356
|
-
isMax = <span class="branch-0 cbranch-no" title="branch not covered" >false,</span>
|
|
1357
|
-
amount,
|
|
1358
|
-
receivingAddress,
|
|
1359
|
-
feeRate,
|
|
1360
|
-
token = <span class="branch-0 cbranch-no" title="branch not covered" >null,</span>
|
|
1361
|
-
}: {
|
|
1362
|
-
amount: number;
|
|
1363
|
-
feeRate?: number;
|
|
1364
|
-
receivingAddress: string;
|
|
1365
|
-
// Optional fee rate in SYS/byte
|
|
1366
|
-
token?: { guid: string; symbol?: string } | null;
|
|
1367
|
-
txOptions?: any;
|
|
1368
|
-
isMax?: boolean | false;
|
|
1369
|
-
}) => {
|
|
1370
|
-
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
1371
|
-
// Ensure RBF is enabled by default if not explicitly set
|
|
1372
|
-
const finalTxOptions = <span class="cstat-no" title="statement not covered" >{ rbf: true, ...txOptions };</span>
|
|
1373
|
-
const { main } = <span class="cstat-no" title="statement not covered" >this.getSigner();</span>
|
|
1374
|
-
// Step 1: Determine fee rate
|
|
1375
|
-
let actualFeeRate;
|
|
1376
|
-
<span class="cstat-no" title="statement not covered" > if (feeRate !== undefined) {</span>
|
|
1377
|
-
<span class="cstat-no" title="statement not covered" > actualFeeRate = feeRate;</span>
|
|
1378
|
-
} else {
|
|
1379
|
-
<span class="cstat-no" title="statement not covered" > actualFeeRate = await this.getRecommendedFee(main.blockbookURL);</span>
|
|
1380
|
-
}
|
|
1381
|
-
|
|
1382
|
-
// Convert fee rate to satoshis/byte for consistent usage
|
|
1383
|
-
const feeRateBN = <span class="cstat-no" title="statement not covered" >new syscoinjs.utils.BN(actualFeeRate * 1e8);</span>
|
|
1384
|
-
|
|
1385
|
-
// Step 2: Create unsigned PSBT
|
|
1386
|
-
const result = <span class="cstat-no" title="statement not covered" >await this.createUnsignedPSBT({</span>
|
|
1387
|
-
txOptions: finalTxOptions,
|
|
1388
|
-
isMax,
|
|
1389
|
-
amount,
|
|
1390
|
-
receivingAddress,
|
|
1391
|
-
feeRateBN,
|
|
1392
|
-
token,
|
|
1393
|
-
});
|
|
1394
|
-
|
|
1395
|
-
<span class="cstat-no" title="statement not covered" > return {</span>
|
|
1396
|
-
fee: result.fee / 1e8,
|
|
1397
|
-
psbt: PsbtUtils.toPali(result.psbt), // Return UNSIGNED PSBT as JSON
|
|
1398
|
-
};
|
|
1399
|
-
} catch (error) {
|
|
1400
|
-
// Pass through structured errors from syscoinjs-lib
|
|
1401
|
-
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (error.error && error.code) {</span>
|
|
1402
|
-
// Convert fee from satoshis to SYS if available
|
|
1403
|
-
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (error.fee !== undefined) {</span>
|
|
1404
|
-
// If fee is a BN object, convert to number first
|
|
1405
|
-
<span class="cstat-no" title="statement not covered" > if (typeof error.fee === 'object' && error.fee.toNumber) {</span>
|
|
1406
|
-
<span class="cstat-no" title="statement not covered" > error.fee = error.fee.toNumber() / 1e8;</span>
|
|
1407
|
-
} else {
|
|
1408
|
-
<span class="cstat-no" title="statement not covered" > error.fee = error.fee / 1e8;</span>
|
|
1409
|
-
}
|
|
1410
|
-
}
|
|
1411
|
-
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (error.remainingFee !== undefined) {</span>
|
|
1412
|
-
// If remainingFee is a BN object, convert to number first
|
|
1413
|
-
<span class="cstat-no" title="statement not covered" > if (</span>
|
|
1414
|
-
typeof error.remainingFee === 'object' &&
|
|
1415
|
-
error.remainingFee.toNumber
|
|
1416
|
-
) {
|
|
1417
|
-
<span class="cstat-no" title="statement not covered" > error.remainingFee = error.remainingFee.toNumber() / 1e8;</span>
|
|
1418
|
-
} else {
|
|
1419
|
-
<span class="cstat-no" title="statement not covered" > error.remainingFee = error.remainingFee / 1e8;</span>
|
|
1420
|
-
}
|
|
1421
|
-
}
|
|
1422
|
-
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (error.shortfall !== undefined) {</span>
|
|
1423
|
-
// If shortfall is a BN object, convert to number first
|
|
1424
|
-
<span class="cstat-no" title="statement not covered" > if (typeof error.shortfall === 'object' && error.shortfall.toNumber) {</span>
|
|
1425
|
-
<span class="cstat-no" title="statement not covered" > error.shortfall = error.shortfall.toNumber() / 1e8;</span>
|
|
1426
|
-
} else {
|
|
1427
|
-
<span class="cstat-no" title="statement not covered" > error.shortfall = error.shortfall / 1e8;</span>
|
|
1428
|
-
}
|
|
1429
|
-
}
|
|
1430
|
-
<span class="cstat-no" title="statement not covered" > throw error;</span>
|
|
1431
|
-
}
|
|
1432
|
-
// Wrap other errors
|
|
1433
|
-
<span class="cstat-no" title="statement not covered" > throw {</span>
|
|
1434
|
-
error: true,
|
|
1435
|
-
code: 'TRANSACTION_CREATION_FAILED',
|
|
1436
|
-
message: error.message || 'Failed to estimate transaction fee',
|
|
1437
|
-
details: error,
|
|
1438
|
-
};
|
|
1439
|
-
}
|
|
1440
|
-
};
|
|
1441
|
-
|
|
1442
|
-
// Removed createAndSignSysTransaction - functionality merged into getEstimateSysTransactionFee
|
|
1443
|
-
|
|
1444
|
-
private sendSignedTransaction = async (psbt): Promise<ITxid> => {
|
|
1445
|
-
try {
|
|
1446
|
-
const { main } = this.getSigner();
|
|
1447
|
-
// Send the transaction
|
|
1448
|
-
const result = await main.send(psbt);
|
|
1449
|
-
|
|
1450
|
-
// Extract the transaction ID
|
|
1451
|
-
const txid = result.extractTransaction().getId();
|
|
1452
|
-
return { txid };
|
|
1453
|
-
} catch (error) {
|
|
1454
|
-
// Pass through structured errors
|
|
1455
|
-
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (error.error && error.code) {</span>
|
|
1456
|
-
<span class="cstat-no" title="statement not covered" > throw error;</span>
|
|
1457
|
-
}
|
|
1458
|
-
// Wrap other errors
|
|
1459
|
-
<span class="cstat-no" title="statement not covered" > throw {</span>
|
|
1460
|
-
error: true,
|
|
1461
|
-
code: 'TRANSACTION_SEND_FAILED',
|
|
1462
|
-
message: error.message || 'Failed to send transaction',
|
|
1463
|
-
details: error,
|
|
1464
|
-
};
|
|
1465
|
-
}
|
|
1466
|
-
};
|
|
1467
|
-
|
|
1468
|
-
public signPSBT = async ({
|
|
1469
|
-
psbt,
|
|
1470
|
-
isTrezor = <span class="branch-0 cbranch-no" title="branch not covered" >false,</span>
|
|
1471
|
-
isLedger = <span class="branch-0 cbranch-no" title="branch not covered" >false,</span>
|
|
1472
|
-
pathIn,
|
|
1473
|
-
}: {
|
|
1474
|
-
psbt: any;
|
|
1475
|
-
isTrezor?: boolean;
|
|
1476
|
-
isLedger?: boolean;
|
|
1477
|
-
pathIn?: string;
|
|
1478
|
-
}): Promise<any> => {
|
|
1479
|
-
const psbtObj = PsbtUtils.fromPali(psbt);
|
|
1480
|
-
const signedPsbt = await this.signPSBTWithMethod(
|
|
1481
|
-
psbtObj,
|
|
1482
|
-
isTrezor,
|
|
1483
|
-
isLedger,
|
|
1484
|
-
pathIn
|
|
1485
|
-
);
|
|
1486
|
-
return PsbtUtils.toPali(signedPsbt);
|
|
1487
|
-
};
|
|
1488
|
-
|
|
1489
|
-
public sendTransaction = async (psbt: any): Promise<ITxid> => {
|
|
1490
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (!psbt) {
|
|
1491
|
-
<span class="cstat-no" title="statement not covered" > throw new Error('Signed PSBT is required for broadcasting.');</span>
|
|
1492
|
-
}
|
|
1493
|
-
return await this.sendSignedTransaction(PsbtUtils.fromPali(psbt));
|
|
1494
|
-
};
|
|
1495
|
-
}
|
|
1496
|
-
</pre></td></tr></table></pre>
|
|
1497
|
-
|
|
1498
|
-
<div class="push"></div>
|
|
1499
|
-
<!-- for sticky footer -->
|
|
1500
|
-
</div>
|
|
1501
|
-
<!-- /wrapper -->
|
|
1502
|
-
<div class="footer quiet pad2 space-top1 center small">
|
|
1503
|
-
Code coverage generated by
|
|
1504
|
-
<a
|
|
1505
|
-
href="https://istanbul.js.org/"
|
|
1506
|
-
target="_blank"
|
|
1507
|
-
rel="noopener noreferrer"
|
|
1508
|
-
>istanbul</a
|
|
1509
|
-
>
|
|
1510
|
-
at 2025-06-20T17:45:56.456Z
|
|
1511
|
-
</div>
|
|
1512
|
-
<script src="../../prettify.js"></script>
|
|
1513
|
-
<script>
|
|
1514
|
-
window.onload = function () {
|
|
1515
|
-
prettyPrint();
|
|
1516
|
-
};
|
|
1517
|
-
</script>
|
|
1518
|
-
<script src="../../sorter.js"></script>
|
|
1519
|
-
<script src="../../block-navigation.js"></script>
|
|
1520
|
-
</body>
|
|
1521
|
-
</html>
|