@win-trader/bindings 0.0.2 → 0.0.4

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.
@@ -56,105 +56,235 @@ export type StorageKey = {
56
56
  values: void;
57
57
  };
58
58
  /**
59
- * Represents a single trader's open leveraged position.
59
+ * Authoritative per-market state: the side aggregates, the funding indices,
60
+ * the funding EMA, and the market configuration.
61
+ *
62
+ * Soroban limits UDT field names to 30 characters, so where a doc glossary
63
+ * term is longer the field drops the redundant qualifier and its doc
64
+ * comment carries the full term (e.g. `receiver_backed_index_long` is the
65
+ * doc's `receiver_backed_payer_index` for the long side).
60
66
  */
61
- export interface Position {
67
+ export interface Market {
68
+ config: MarketConfig;
62
69
  /**
63
- * USDC collateral deposited by the trader.
70
+ * `INDEX_PRECISION`-scaled bps/day payer rate as of the last refresh.
64
71
  */
65
- collateral: i128;
72
+ current_payer_rate: i128;
73
+ current_payer_side: PayerSide;
74
+ last_funding_checkpoint: u64;
75
+ long: MarketSide;
66
76
  /**
67
- * Global borrow accumulator index at position open (for lazy fee calc).
77
+ * Cumulative payer fee per unit of dominant-side size that is LP
78
+ * revenue on collection (§8.2).
68
79
  */
69
- entry_borrow_index: i128;
80
+ lp_backed_index_long: i128;
81
+ lp_backed_index_short: i128;
82
+ lp_payer_remainder: i128;
70
83
  /**
71
- * Global funding accumulator index at position open (for lazy fee calc).
84
+ * Sub-stroop carry of the receiver-liability accrual (§8.3).
72
85
  */
73
- entry_funding_index: i128;
86
+ pending_remainder: i128;
74
87
  /**
75
- * Oracle price at the time the position was opened (scaled by 1e7).
88
+ * Cumulative payer fee per unit of dominant-side size whose collection
89
+ * restores cash backing an already-accrued receiver claim (§8.2).
90
+ */
91
+ receiver_backed_index_long: i128;
92
+ receiver_backed_index_short: i128;
93
+ /**
94
+ * Cumulative funding credit per unit of light-side size (§8.2).
95
+ */
96
+ receiver_index_long: i128;
97
+ receiver_index_remainder: i128;
98
+ receiver_index_short: i128;
99
+ receiver_payer_remainder: i128;
100
+ short: MarketSide;
101
+ /**
102
+ * §8.1 signed EMA of the instantaneous skew: a fraction of one at
103
+ * `INDEX_PRECISION` scale, positive when history says longs dominate.
104
+ * Decays toward the current skew with the global half-life.
76
105
  */
77
- entry_price: i128;
106
+ skew_ema: i128;
107
+ }
108
+ export interface LpConfig {
109
+ lp_request_delay: u64;
110
+ max_withdraw_utilization_bps: u32;
111
+ min_deposit_nav_factor_bps: u32;
112
+ }
113
+ /**
114
+ * Represents a single trader's open leveraged position.
115
+ */
116
+ export interface Position {
78
117
  /**
79
- * Flat USDC fee escrowed when TP or SL is set. Paid to executor on trigger, refunded on user close / ADL, forfeited to revenue on liquidation.
118
+ * Asset units at `PRICE_PRECISION`.
80
119
  */
81
- execution_fee_escrow: i128;
120
+ base_exposure: i128;
121
+ borrow_debt: i128;
82
122
  /**
83
- * True for a long position, false for a short.
123
+ * Cash owned by an optional-order executor.
84
124
  */
125
+ execution_budget: i128;
126
+ funding_paid_to_lps_debt: i128;
127
+ funding_paid_to_receivers_debt: i128;
128
+ funding_received_debt: i128;
129
+ id: u64;
85
130
  is_long: boolean;
131
+ last_increased_time: u64;
132
+ market: string;
133
+ owner: string;
86
134
  /**
87
- * Block timestamp when the position was last increased (anti-front-running lock).
135
+ * Fixed gross capacity assigned when risk opens.
88
136
  */
89
- last_increased_time: u64;
137
+ risk_units: i128;
90
138
  /**
91
- * Notional size of the position in USDC.
139
+ * USD notional at `PRICE_PRECISION`.
92
140
  */
93
141
  size: i128;
94
142
  /**
95
- * Stop-loss price (scaled by 1e7). 0 = not set.
143
+ * Trigger price for the optional stop-loss order; `0` = none.
96
144
  */
97
145
  stop_loss: i128;
98
146
  /**
99
- * Take-profit price (scaled by 1e7). 0 = not set.
147
+ * Trader-owned collateral recorded in contract state (the doc's
148
+ * "stored collateral"). Effective collateral — stored collateral after
149
+ * pending fees and funding credits — is always derived, never stored.
150
+ */
151
+ stored_collateral: i128;
152
+ /**
153
+ * Trigger price for the optional take-profit order; `0` = none.
100
154
  */
101
155
  take_profit: i128;
102
156
  }
157
+ export interface LpRequest {
158
+ amount: i128;
159
+ execute_after: u64;
160
+ id: u64;
161
+ kind: LpRequestKind;
162
+ owner: string;
163
+ request_time: u64;
164
+ status: LpRequestStatus;
165
+ }
103
166
  /**
104
- * Global market state for a single tradeable asset symbol.
167
+ * Which side currently pays funding (§8.1: the side the blended integral
168
+ * skew points at — under the EMA this can be the *lighter* side for a
169
+ * while after the book flips). `None` when the blend is exactly zero.
105
170
  */
106
- export interface MarketInfo {
107
- /**
108
- * Cumulative borrow fee index (grows monotonically with time).
109
- */
110
- acc_borrow_index: i128;
171
+ export type PayerSide = {
172
+ tag: "None";
173
+ values: void;
174
+ } | {
175
+ tag: "Long";
176
+ values: void;
177
+ } | {
178
+ tag: "Short";
179
+ values: void;
180
+ };
181
+ export type RiskState = {
182
+ tag: "Normal";
183
+ values: void;
184
+ } | {
185
+ tag: "Warning";
186
+ values: void;
187
+ } | {
188
+ tag: "Adl";
189
+ values: void;
190
+ } | {
191
+ tag: "HardCap";
192
+ values: void;
193
+ };
194
+ export interface MarketSide {
195
+ base_exposure: i128;
196
+ risk_state: RiskState;
197
+ risk_units: i128;
198
+ size_open_interest: i128;
199
+ stored_collateral_total: i128;
200
+ }
201
+ export interface RoundPrice {
202
+ price: i128;
203
+ symbol: string;
204
+ }
205
+ export interface OracleRound {
206
+ id: u64;
207
+ previous_id: u64;
208
+ previous_timestamp: u64;
209
+ prices: Array<RoundPrice>;
210
+ timestamp: u64;
211
+ }
212
+ export interface GlobalConfig {
213
+ base_borrow_rate_bps_day: i128;
111
214
  /**
112
- * Cumulative funding rate index (signed; positive = longs pay shorts).
215
+ * §8.1 half-life of the funding skew EMA, seconds (global: one memory
216
+ * horizon for every market).
113
217
  */
114
- acc_funding_index: i128;
218
+ funding_half_life_seconds: u64;
219
+ hard_cap_factor_limit_bps: u32;
220
+ lp_revenue_share_bps: u32;
221
+ max_active_markets: u32;
222
+ max_adl_reward: i128;
223
+ max_insolvent_touch_reward: i128;
224
+ max_variable_borrow_bps_day: i128;
225
+ min_collateral: i128;
226
+ min_position_lifetime: u64;
227
+ risk_capacity_limit_bps: u32;
228
+ risk_keeper_revenue_share_bps: u32;
229
+ }
230
+ export interface MarketConfig {
231
+ adl_pnl_factor_bps: u32;
232
+ adl_reward_bps: u32;
115
233
  /**
116
- * Volume-weighted average entry price of all active long positions.
234
+ * §11.1 closing-fee tier when the close worsens skew.
117
235
  */
118
- global_long_avg_price: i128;
236
+ close_fee_high_bps: u32;
119
237
  /**
120
- * Volume-weighted average entry price of all active short positions.
238
+ * §11.1 closing-fee tier when the close improves or preserves skew.
121
239
  */
122
- global_short_avg_price: i128;
240
+ close_fee_low_bps: u32;
241
+ hard_cap_pnl_factor_bps: u32;
123
242
  /**
124
- * Timestamp of the last keeper index update.
243
+ * Margin required to open or add risk (§12.3). Divides max leverage:
244
+ * a position may not be created closer to liquidation than this.
125
245
  */
126
- last_index_update: u64;
246
+ initial_margin_bps: u32;
127
247
  /**
128
- * Total notional size of all open long positions.
248
+ * §8.1 weight of the instantaneous skew in the funding blend, in bps;
249
+ * the rest is the half-life EMA. `BPS` reproduces pure instant skew.
129
250
  */
130
- long_open_interest: i128;
251
+ instant_weight_bps: u32;
252
+ liquidation_reward_bps: u32;
131
253
  /**
132
- * Total notional size of all open short positions.
254
+ * Margin below which the position is liquidatable (§12.3). Must not
255
+ * exceed `initial_margin_bps`; the gap is the entry buffer.
133
256
  */
134
- short_open_interest: i128;
257
+ maintenance_margin_bps: u32;
258
+ market_risk_factor_bps: u32;
259
+ max_funding_rate_bps_day: i128;
260
+ max_long_base_exposure: i128;
261
+ max_long_size_open_interest: i128;
262
+ max_short_base_exposure: i128;
263
+ max_short_size_open_interest: i128;
264
+ recovery_pnl_factor_bps: u32;
265
+ warning_pnl_factor_bps: u32;
135
266
  }
136
267
  /**
137
268
  * Global safety thresholds for price validation.
138
269
  */
139
270
  export interface OracleConfig {
140
271
  /**
141
- * How long a cached aggregated price remains valid (in seconds). A
142
- * `get_price` call within this window of the last fetch returns the
143
- * cached value without re-querying sources. Must be > 0 and
144
- * <= `staleness_threshold` (otherwise the cache could outlive a fresh
145
- * source price and serve stale data).
272
+ * How long a cached aggregated price remains valid after the router
273
+ * fetch (in seconds). A cache hit also requires every source timestamp
274
+ * used for the cached median to remain within `staleness_threshold`.
275
+ * Must be > 0 and <= `staleness_threshold`.
146
276
  */
147
277
  cache_duration: u64;
148
278
  /**
149
279
  * Maximum allowed spread between oracle sources in basis points
150
- * (e.g., 100 = 1%). Bounded at `shared::constants::MAX_DEVIATION_BPS_CEILING`.
280
+ * (e.g., 100 = 1%). Bounded at `crate::constants::MAX_DEVIATION_BPS_CEILING`.
151
281
  */
152
282
  max_deviation_bps: i128;
153
283
  /**
154
284
  * Minimum number of source responses that must agree within
155
285
  * `max_deviation_bps` for OracleRouter to return a price. Floored at
156
- * `shared::constants::MIN_REQUIRED_SOURCES_FLOOR`, ceilinged at
157
- * `shared::constants::MAX_ORACLE_SOURCES`.
286
+ * `crate::constants::MIN_REQUIRED_SOURCES_FLOOR`, ceilinged at
287
+ * `crate::constants::MAX_ORACLE_SOURCES`.
158
288
  */
159
289
  min_required_sources: u32;
160
290
  /**
@@ -163,6 +293,13 @@ export interface OracleConfig {
163
293
  */
164
294
  staleness_threshold: u64;
165
295
  }
296
+ export type LpRequestKind = {
297
+ tag: "Deposit";
298
+ values: void;
299
+ } | {
300
+ tag: "Withdrawal";
301
+ values: void;
302
+ };
166
303
  /**
167
304
  * Data required during a WASM migration. Single definition for all contracts.
168
305
  */
@@ -172,15 +309,54 @@ export interface MigrationData {
172
309
  /**
173
310
  * Pending WASM upgrade — set by `propose_upgrade`, consumed by `upgrade`
174
311
  * (cleared atomically on a successful install), or cleared by `cancel_upgrade`.
175
- * Single shape across every protocol contract; all four contracts store it at
312
+ * Single shape across every protocol contract. Contracts store it at
176
313
  * the shared `pending_upgrade` Symbol key in their own instance storage (see
177
- * `interfaces::upgrade::pending_upgrade_key`). `upgrade` refuses to install
314
+ * `crate::upgrade::pending_upgrade_key`). `upgrade` refuses to install
178
315
  * unless `pending.wasm_hash` matches the supplied hash and `now >= eta`.
179
316
  */
180
317
  export interface PendingUpgrade {
181
318
  eta: u64;
182
319
  wasm_hash: Buffer;
183
320
  }
321
+ export type LpRequestStatus = {
322
+ tag: "Pending";
323
+ values: void;
324
+ } | {
325
+ tag: "Settled";
326
+ values: void;
327
+ } | {
328
+ tag: "Failed";
329
+ values: void;
330
+ } | {
331
+ tag: "Expired";
332
+ values: void;
333
+ };
334
+ export interface SettlementResult {
335
+ /**
336
+ * Shares minted for a deposit or assets paid for a withdrawal.
337
+ */
338
+ amount: i128;
339
+ status: SettlementStatus;
340
+ }
341
+ export type SettlementStatus = {
342
+ tag: "Settled";
343
+ values: void;
344
+ } | {
345
+ tag: "Failed";
346
+ values: void;
347
+ };
348
+ export interface AccountingSnapshot {
349
+ cash_lp_equity: i128;
350
+ cash_shortfall: i128;
351
+ free_lp_capital: i128;
352
+ lp_blocked_side_count: u32;
353
+ non_lp_claims: i128;
354
+ open_position_count: u64;
355
+ physical_cash: i128;
356
+ required_risk_backing: i128;
357
+ total_risk_units: i128;
358
+ vault_nav: i128;
359
+ }
184
360
  export declare const UpgradeableError: {
185
361
  /**
186
362
  * When migration is attempted but not allowed due to upgrade state.
@@ -287,48 +463,6 @@ export type PausableStorageKey = {
287
463
  tag: "Paused";
288
464
  values: void;
289
465
  };
290
- /**
291
- * Execution-bounty and open-fee parameters charged to traders.
292
- * `open_fee_bps` and `liquidation_bounty_bps` are in basis points;
293
- * `tp_sl_execution_fee` is a flat USDC amount at PRECISION scale.
294
- */
295
- export interface FeeConfig {
296
- liquidation_bounty_bps: u32;
297
- open_fee_bps: u32;
298
- tp_sl_execution_fee: i128;
299
- }
300
- /**
301
- * Defines how protocol revenue is split between parties.
302
- * All values are in basis points (bps). Must sum to 10_000.
303
- */
304
- export interface FeeSplits {
305
- dev_bps: u32;
306
- lp_bps: u32;
307
- staker_bps: u32;
308
- }
309
- /**
310
- * Global protocol risk and timing parameters.
311
- */
312
- export interface ProtocolLimits {
313
- adl_pnl_bps: u32;
314
- adl_utilization_bps: u32;
315
- cooldown_duration: u64;
316
- funding_cut_bps: u32;
317
- liquidation_threshold_bps: u32;
318
- max_utilization_ratio: i128;
319
- min_collateral: i128;
320
- min_position_lifetime: u64;
321
- }
322
- /**
323
- * Borrow rate kink curve and funding rate parameters (all in basis points).
324
- */
325
- export interface BorrowRateConfig {
326
- base_borrow_rate_bps: i128;
327
- base_funding_rate_bps: i128;
328
- optimal_utilization_bps: i128;
329
- slope1_bps: i128;
330
- slope2_bps: i128;
331
- }
332
466
  export interface Client {
333
467
  /**
334
468
  * Construct and simulate a migrate transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
@@ -101,11 +101,25 @@ export class Client extends ContractClient {
101
101
  "AAAAAAAAAAAAAAANc2V0X3B1Ymxpc2hlcgAAAAAAAAIAAAAAAAAABmNhbGxlcgAAAAAAEwAAAAAAAAANbmV3X3B1Ymxpc2hlcgAAAAAAABMAAAAA",
102
102
  "AAAAAAAAAAAAAAAOY2FuY2VsX3VwZ3JhZGUAAAAAAAEAAAAAAAAABmNhbGxlcgAAAAAAEwAAAAA=",
103
103
  "AAAAAAAAAAAAAAAPcHJvcG9zZV91cGdyYWRlAAAAAAIAAAAAAAAABmNhbGxlcgAAAAAAEwAAAAAAAAAJd2FzbV9oYXNoAAAAAAAD7gAAACAAAAAA",
104
- "AAAAAQAAADVSZXByZXNlbnRzIGEgc2luZ2xlIHRyYWRlcidzIG9wZW4gbGV2ZXJhZ2VkIHBvc2l0aW9uLgAAAAAAAAAAAAAIUG9zaXRpb24AAAAKAAAAKFVTREMgY29sbGF0ZXJhbCBkZXBvc2l0ZWQgYnkgdGhlIHRyYWRlci4AAAAKY29sbGF0ZXJhbAAAAAAACwAAAEVHbG9iYWwgYm9ycm93IGFjY3VtdWxhdG9yIGluZGV4IGF0IHBvc2l0aW9uIG9wZW4gKGZvciBsYXp5IGZlZSBjYWxjKS4AAAAAAAASZW50cnlfYm9ycm93X2luZGV4AAAAAAALAAAARkdsb2JhbCBmdW5kaW5nIGFjY3VtdWxhdG9yIGluZGV4IGF0IHBvc2l0aW9uIG9wZW4gKGZvciBsYXp5IGZlZSBjYWxjKS4AAAAAABNlbnRyeV9mdW5kaW5nX2luZGV4AAAAAAsAAABBT3JhY2xlIHByaWNlIGF0IHRoZSB0aW1lIHRoZSBwb3NpdGlvbiB3YXMgb3BlbmVkIChzY2FsZWQgYnkgMWU3KS4AAAAAAAALZW50cnlfcHJpY2UAAAAACwAAAIxGbGF0IFVTREMgZmVlIGVzY3Jvd2VkIHdoZW4gVFAgb3IgU0wgaXMgc2V0LiBQYWlkIHRvIGV4ZWN1dG9yIG9uIHRyaWdnZXIsIHJlZnVuZGVkIG9uIHVzZXIgY2xvc2UgLyBBREwsIGZvcmZlaXRlZCB0byByZXZlbnVlIG9uIGxpcXVpZGF0aW9uLgAAABRleGVjdXRpb25fZmVlX2VzY3JvdwAAAAsAAAAsVHJ1ZSBmb3IgYSBsb25nIHBvc2l0aW9uLCBmYWxzZSBmb3IgYSBzaG9ydC4AAAAHaXNfbG9uZwAAAAABAAAAT0Jsb2NrIHRpbWVzdGFtcCB3aGVuIHRoZSBwb3NpdGlvbiB3YXMgbGFzdCBpbmNyZWFzZWQgKGFudGktZnJvbnQtcnVubmluZyBsb2NrKS4AAAAAE2xhc3RfaW5jcmVhc2VkX3RpbWUAAAAABgAAACZOb3Rpb25hbCBzaXplIG9mIHRoZSBwb3NpdGlvbiBpbiBVU0RDLgAAAAAABHNpemUAAAALAAAALVN0b3AtbG9zcyBwcmljZSAoc2NhbGVkIGJ5IDFlNykuIDAgPSBub3Qgc2V0LgAAAAAAAAlzdG9wX2xvc3MAAAAAAAALAAAAL1Rha2UtcHJvZml0IHByaWNlIChzY2FsZWQgYnkgMWU3KS4gMCA9IG5vdCBzZXQuAAAAAAt0YWtlX3Byb2ZpdAAAAAAL",
105
- "AAAAAQAAADhHbG9iYWwgbWFya2V0IHN0YXRlIGZvciBhIHNpbmdsZSB0cmFkZWFibGUgYXNzZXQgc3ltYm9sLgAAAAAAAAAKTWFya2V0SW5mbwAAAAAABwAAADxDdW11bGF0aXZlIGJvcnJvdyBmZWUgaW5kZXggKGdyb3dzIG1vbm90b25pY2FsbHkgd2l0aCB0aW1lKS4AAAAQYWNjX2JvcnJvd19pbmRleAAAAAsAAABEQ3VtdWxhdGl2ZSBmdW5kaW5nIHJhdGUgaW5kZXggKHNpZ25lZDsgcG9zaXRpdmUgPSBsb25ncyBwYXkgc2hvcnRzKS4AAAARYWNjX2Z1bmRpbmdfaW5kZXgAAAAAAAALAAAAQVZvbHVtZS13ZWlnaHRlZCBhdmVyYWdlIGVudHJ5IHByaWNlIG9mIGFsbCBhY3RpdmUgbG9uZyBwb3NpdGlvbnMuAAAAAAAAFWdsb2JhbF9sb25nX2F2Z19wcmljZQAAAAAAAAsAAABCVm9sdW1lLXdlaWdodGVkIGF2ZXJhZ2UgZW50cnkgcHJpY2Ugb2YgYWxsIGFjdGl2ZSBzaG9ydCBwb3NpdGlvbnMuAAAAAAAWZ2xvYmFsX3Nob3J0X2F2Z19wcmljZQAAAAAACwAAACpUaW1lc3RhbXAgb2YgdGhlIGxhc3Qga2VlcGVyIGluZGV4IHVwZGF0ZS4AAAAAABFsYXN0X2luZGV4X3VwZGF0ZQAAAAAAAAYAAAAvVG90YWwgbm90aW9uYWwgc2l6ZSBvZiBhbGwgb3BlbiBsb25nIHBvc2l0aW9ucy4AAAAAEmxvbmdfb3Blbl9pbnRlcmVzdAAAAAAACwAAADBUb3RhbCBub3Rpb25hbCBzaXplIG9mIGFsbCBvcGVuIHNob3J0IHBvc2l0aW9ucy4AAAATc2hvcnRfb3Blbl9pbnRlcmVzdAAAAAAL",
106
- "AAAAAQAAAC5HbG9iYWwgc2FmZXR5IHRocmVzaG9sZHMgZm9yIHByaWNlIHZhbGlkYXRpb24uAAAAAAAAAAAADE9yYWNsZUNvbmZpZwAAAAQAAAEkSG93IGxvbmcgYSBjYWNoZWQgYWdncmVnYXRlZCBwcmljZSByZW1haW5zIHZhbGlkIChpbiBzZWNvbmRzKS4gQQpgZ2V0X3ByaWNlYCBjYWxsIHdpdGhpbiB0aGlzIHdpbmRvdyBvZiB0aGUgbGFzdCBmZXRjaCByZXR1cm5zIHRoZQpjYWNoZWQgdmFsdWUgd2l0aG91dCByZS1xdWVyeWluZyBzb3VyY2VzLiBNdXN0IGJlID4gMCBhbmQKPD0gYHN0YWxlbmVzc190aHJlc2hvbGRgIChvdGhlcndpc2UgdGhlIGNhY2hlIGNvdWxkIG91dGxpdmUgYSBmcmVzaApzb3VyY2UgcHJpY2UgYW5kIHNlcnZlIHN0YWxlIGRhdGEpLgAAAA5jYWNoZV9kdXJhdGlvbgAAAAAABgAAAIpNYXhpbXVtIGFsbG93ZWQgc3ByZWFkIGJldHdlZW4gb3JhY2xlIHNvdXJjZXMgaW4gYmFzaXMgcG9pbnRzCihlLmcuLCAxMDAgPSAxJSkuIEJvdW5kZWQgYXQgYHNoYXJlZDo6Y29uc3RhbnRzOjpNQVhfREVWSUFUSU9OX0JQU19DRUlMSU5HYC4AAAAAABFtYXhfZGV2aWF0aW9uX2JwcwAAAAAAAAsAAADjTWluaW11bSBudW1iZXIgb2Ygc291cmNlIHJlc3BvbnNlcyB0aGF0IG11c3QgYWdyZWUgd2l0aGluCmBtYXhfZGV2aWF0aW9uX2Jwc2AgZm9yIE9yYWNsZVJvdXRlciB0byByZXR1cm4gYSBwcmljZS4gRmxvb3JlZCBhdApgc2hhcmVkOjpjb25zdGFudHM6Ok1JTl9SRVFVSVJFRF9TT1VSQ0VTX0ZMT09SYCwgY2VpbGluZ2VkIGF0CmBzaGFyZWQ6OmNvbnN0YW50czo6TUFYX09SQUNMRV9TT1VSQ0VTYC4AAAAAFG1pbl9yZXF1aXJlZF9zb3VyY2VzAAAABAAAAFlNYXhpbXVtIGFnZSBvZiBhbiBleHRlcm5hbCBTRVAtNDAgcHJpY2UgZmVlZCBiZWZvcmUgaXQgaXMgcmVqZWN0ZWQKYXMgc3RhbGUgKGluIHNlY29uZHMpLgAAAAAAABNzdGFsZW5lc3NfdGhyZXNob2xkAAAAAAY=",
104
+ "AAAAAQAAAYVBdXRob3JpdGF0aXZlIHBlci1tYXJrZXQgc3RhdGU6IHRoZSBzaWRlIGFnZ3JlZ2F0ZXMsIHRoZSBmdW5kaW5nIGluZGljZXMsCnRoZSBmdW5kaW5nIEVNQSwgYW5kIHRoZSBtYXJrZXQgY29uZmlndXJhdGlvbi4KClNvcm9iYW4gbGltaXRzIFVEVCBmaWVsZCBuYW1lcyB0byAzMCBjaGFyYWN0ZXJzLCBzbyB3aGVyZSBhIGRvYyBnbG9zc2FyeQp0ZXJtIGlzIGxvbmdlciB0aGUgZmllbGQgZHJvcHMgdGhlIHJlZHVuZGFudCBxdWFsaWZpZXIgYW5kIGl0cyBkb2MKY29tbWVudCBjYXJyaWVzIHRoZSBmdWxsIHRlcm0gKGUuZy4gYHJlY2VpdmVyX2JhY2tlZF9pbmRleF9sb25nYCBpcyB0aGUKZG9jJ3MgYHJlY2VpdmVyX2JhY2tlZF9wYXllcl9pbmRleGAgZm9yIHRoZSBsb25nIHNpZGUpLgAAAAAAAAAAAAAGTWFya2V0AAAAAAARAAAAAAAAAAZjb25maWcAAAAAB9AAAAAMTWFya2V0Q29uZmlnAAAAQ2BJTkRFWF9QUkVDSVNJT05gLXNjYWxlZCBicHMvZGF5IHBheWVyIHJhdGUgYXMgb2YgdGhlIGxhc3QgcmVmcmVzaC4AAAAAEmN1cnJlbnRfcGF5ZXJfcmF0ZQAAAAAACwAAAAAAAAASY3VycmVudF9wYXllcl9zaWRlAAAAAAfQAAAACVBheWVyU2lkZQAAAAAAAAAAAAAXbGFzdF9mdW5kaW5nX2NoZWNrcG9pbnQAAAAABgAAAAAAAAAEbG9uZwAAB9AAAAAKTWFya2V0U2lkZQAAAAAAXUN1bXVsYXRpdmUgcGF5ZXIgZmVlIHBlciB1bml0IG9mIGRvbWluYW50LXNpZGUgc2l6ZSB0aGF0IGlzIExQCnJldmVudWUgb24gY29sbGVjdGlvbiAowqc4LjIpLgAAAAAAABRscF9iYWNrZWRfaW5kZXhfbG9uZwAAAAsAAAAAAAAAFWxwX2JhY2tlZF9pbmRleF9zaG9ydAAAAAAAAAsAAAAAAAAAEmxwX3BheWVyX3JlbWFpbmRlcgAAAAAACwAAADtTdWItc3Ryb29wIGNhcnJ5IG9mIHRoZSByZWNlaXZlci1saWFiaWxpdHkgYWNjcnVhbCAowqc4LjMpLgAAAAARcGVuZGluZ19yZW1haW5kZXIAAAAAAAALAAAAhUN1bXVsYXRpdmUgcGF5ZXIgZmVlIHBlciB1bml0IG9mIGRvbWluYW50LXNpZGUgc2l6ZSB3aG9zZSBjb2xsZWN0aW9uCnJlc3RvcmVzIGNhc2ggYmFja2luZyBhbiBhbHJlYWR5LWFjY3J1ZWQgcmVjZWl2ZXIgY2xhaW0gKMKnOC4yKS4AAAAAAAAacmVjZWl2ZXJfYmFja2VkX2luZGV4X2xvbmcAAAAAAAsAAAAAAAAAG3JlY2VpdmVyX2JhY2tlZF9pbmRleF9zaG9ydAAAAAALAAAAPkN1bXVsYXRpdmUgZnVuZGluZyBjcmVkaXQgcGVyIHVuaXQgb2YgbGlnaHQtc2lkZSBzaXplICjCpzguMikuAAAAAAATcmVjZWl2ZXJfaW5kZXhfbG9uZwAAAAALAAAAAAAAABhyZWNlaXZlcl9pbmRleF9yZW1haW5kZXIAAAALAAAAAAAAABRyZWNlaXZlcl9pbmRleF9zaG9ydAAAAAsAAAAAAAAAGHJlY2VpdmVyX3BheWVyX3JlbWFpbmRlcgAAAAsAAAAAAAAABXNob3J0AAAAAAAH0AAAAApNYXJrZXRTaWRlAAAAAAC+wqc4LjEgc2lnbmVkIEVNQSBvZiB0aGUgaW5zdGFudGFuZW91cyBza2V3OiBhIGZyYWN0aW9uIG9mIG9uZSBhdApgSU5ERVhfUFJFQ0lTSU9OYCBzY2FsZSwgcG9zaXRpdmUgd2hlbiBoaXN0b3J5IHNheXMgbG9uZ3MgZG9taW5hdGUuCkRlY2F5cyB0b3dhcmQgdGhlIGN1cnJlbnQgc2tldyB3aXRoIHRoZSBnbG9iYWwgaGFsZi1saWZlLgAAAAAACHNrZXdfZW1hAAAACw==",
105
+ "AAAAAQAAAAAAAAAAAAAACExwQ29uZmlnAAAAAwAAAAAAAAAQbHBfcmVxdWVzdF9kZWxheQAAAAYAAAAAAAAAHG1heF93aXRoZHJhd191dGlsaXphdGlvbl9icHMAAAAEAAAAAAAAABptaW5fZGVwb3NpdF9uYXZfZmFjdG9yX2JwcwAAAAAABA==",
106
+ "AAAAAQAAADVSZXByZXNlbnRzIGEgc2luZ2xlIHRyYWRlcidzIG9wZW4gbGV2ZXJhZ2VkIHBvc2l0aW9uLgAAAAAAAAAAAAAIUG9zaXRpb24AAAAQAAAAIUFzc2V0IHVuaXRzIGF0IGBQUklDRV9QUkVDSVNJT05gLgAAAAAAAA1iYXNlX2V4cG9zdXJlAAAAAAAACwAAAAAAAAALYm9ycm93X2RlYnQAAAAACwAAAClDYXNoIG93bmVkIGJ5IGFuIG9wdGlvbmFsLW9yZGVyIGV4ZWN1dG9yLgAAAAAAABBleGVjdXRpb25fYnVkZ2V0AAAACwAAAAAAAAAYZnVuZGluZ19wYWlkX3RvX2xwc19kZWJ0AAAACwAAAAAAAAAeZnVuZGluZ19wYWlkX3RvX3JlY2VpdmVyc19kZWJ0AAAAAAALAAAAAAAAABVmdW5kaW5nX3JlY2VpdmVkX2RlYnQAAAAAAAALAAAAAAAAAAJpZAAAAAAABgAAAAAAAAAHaXNfbG9uZwAAAAABAAAAAAAAABNsYXN0X2luY3JlYXNlZF90aW1lAAAAAAYAAAAAAAAABm1hcmtldAAAAAAAEQAAAAAAAAAFb3duZXIAAAAAAAATAAAALkZpeGVkIGdyb3NzIGNhcGFjaXR5IGFzc2lnbmVkIHdoZW4gcmlzayBvcGVucy4AAAAAAApyaXNrX3VuaXRzAAAAAAALAAAAIlVTRCBub3Rpb25hbCBhdCBgUFJJQ0VfUFJFQ0lTSU9OYC4AAAAAAARzaXplAAAACwAAADtUcmlnZ2VyIHByaWNlIGZvciB0aGUgb3B0aW9uYWwgc3RvcC1sb3NzIG9yZGVyOyBgMGAgPSBub25lLgAAAAAJc3RvcF9sb3NzAAAAAAAACwAAAMpUcmFkZXItb3duZWQgY29sbGF0ZXJhbCByZWNvcmRlZCBpbiBjb250cmFjdCBzdGF0ZSAodGhlIGRvYydzCiJzdG9yZWQgY29sbGF0ZXJhbCIpLiBFZmZlY3RpdmUgY29sbGF0ZXJhbCDigJQgc3RvcmVkIGNvbGxhdGVyYWwgYWZ0ZXIKcGVuZGluZyBmZWVzIGFuZCBmdW5kaW5nIGNyZWRpdHMg4oCUIGlzIGFsd2F5cyBkZXJpdmVkLCBuZXZlciBzdG9yZWQuAAAAAAARc3RvcmVkX2NvbGxhdGVyYWwAAAAAAAALAAAAPVRyaWdnZXIgcHJpY2UgZm9yIHRoZSBvcHRpb25hbCB0YWtlLXByb2ZpdCBvcmRlcjsgYDBgID0gbm9uZS4AAAAAAAALdGFrZV9wcm9maXQAAAAACw==",
107
+ "AAAAAQAAAAAAAAAAAAAACUxwUmVxdWVzdAAAAAAAAAcAAAAAAAAABmFtb3VudAAAAAAACwAAAAAAAAANZXhlY3V0ZV9hZnRlcgAAAAAAAAYAAAAAAAAAAmlkAAAAAAAGAAAAAAAAAARraW5kAAAH0AAAAA1McFJlcXVlc3RLaW5kAAAAAAAAAAAAAAVvd25lcgAAAAAAABMAAAAAAAAADHJlcXVlc3RfdGltZQAAAAYAAAAAAAAABnN0YXR1cwAAAAAH0AAAAA9McFJlcXVlc3RTdGF0dXMA",
108
+ "AAAAAgAAANFXaGljaCBzaWRlIGN1cnJlbnRseSBwYXlzIGZ1bmRpbmcgKMKnOC4xOiB0aGUgc2lkZSB0aGUgYmxlbmRlZCBpbnRlZ3JhbApza2V3IHBvaW50cyBhdCDigJQgdW5kZXIgdGhlIEVNQSB0aGlzIGNhbiBiZSB0aGUgKmxpZ2h0ZXIqIHNpZGUgZm9yIGEKd2hpbGUgYWZ0ZXIgdGhlIGJvb2sgZmxpcHMpLiBgTm9uZWAgd2hlbiB0aGUgYmxlbmQgaXMgZXhhY3RseSB6ZXJvLgAAAAAAAAAAAAAJUGF5ZXJTaWRlAAAAAAAAAwAAAAAAAAAAAAAABE5vbmUAAAAAAAAAAAAAAARMb25nAAAAAAAAAAAAAAAFU2hvcnQAAAA=",
109
+ "AAAAAgAAAAAAAAAAAAAACVJpc2tTdGF0ZQAAAAAAAAQAAAAAAAAAAAAAAAZOb3JtYWwAAAAAAAAAAAAAAAAAB1dhcm5pbmcAAAAAAAAAAAAAAAADQWRsAAAAAAAAAAAAAAAAB0hhcmRDYXAA",
110
+ "AAAAAQAAAAAAAAAAAAAACk1hcmtldFNpZGUAAAAAAAUAAAAAAAAADWJhc2VfZXhwb3N1cmUAAAAAAAALAAAAAAAAAApyaXNrX3N0YXRlAAAAAAfQAAAACVJpc2tTdGF0ZQAAAAAAAAAAAAAKcmlza191bml0cwAAAAAACwAAAAAAAAASc2l6ZV9vcGVuX2ludGVyZXN0AAAAAAALAAAAAAAAABdzdG9yZWRfY29sbGF0ZXJhbF90b3RhbAAAAAAL",
111
+ "AAAAAQAAAAAAAAAAAAAAClJvdW5kUHJpY2UAAAAAAAIAAAAAAAAABXByaWNlAAAAAAAACwAAAAAAAAAGc3ltYm9sAAAAAAAR",
112
+ "AAAAAQAAAAAAAAAAAAAAC09yYWNsZVJvdW5kAAAAAAUAAAAAAAAAAmlkAAAAAAAGAAAAAAAAAAtwcmV2aW91c19pZAAAAAAGAAAAAAAAABJwcmV2aW91c190aW1lc3RhbXAAAAAAAAYAAAAAAAAABnByaWNlcwAAAAAD6gAAB9AAAAAKUm91bmRQcmljZQAAAAAAAAAAAAl0aW1lc3RhbXAAAAAAAAAG",
113
+ "AAAAAQAAAAAAAAAAAAAADEdsb2JhbENvbmZpZwAAAAwAAAAAAAAAGGJhc2VfYm9ycm93X3JhdGVfYnBzX2RheQAAAAsAAABfwqc4LjEgaGFsZi1saWZlIG9mIHRoZSBmdW5kaW5nIHNrZXcgRU1BLCBzZWNvbmRzIChnbG9iYWw6IG9uZSBtZW1vcnkKaG9yaXpvbiBmb3IgZXZlcnkgbWFya2V0KS4AAAAAGWZ1bmRpbmdfaGFsZl9saWZlX3NlY29uZHMAAAAAAAAGAAAAAAAAABloYXJkX2NhcF9mYWN0b3JfbGltaXRfYnBzAAAAAAAABAAAAAAAAAAUbHBfcmV2ZW51ZV9zaGFyZV9icHMAAAAEAAAAAAAAABJtYXhfYWN0aXZlX21hcmtldHMAAAAAAAQAAAAAAAAADm1heF9hZGxfcmV3YXJkAAAAAAALAAAAAAAAABptYXhfaW5zb2x2ZW50X3RvdWNoX3Jld2FyZAAAAAAACwAAAAAAAAAbbWF4X3ZhcmlhYmxlX2JvcnJvd19icHNfZGF5AAAAAAsAAAAAAAAADm1pbl9jb2xsYXRlcmFsAAAAAAALAAAAAAAAABVtaW5fcG9zaXRpb25fbGlmZXRpbWUAAAAAAAAGAAAAAAAAABdyaXNrX2NhcGFjaXR5X2xpbWl0X2JwcwAAAAAEAAAAAAAAAB1yaXNrX2tlZXBlcl9yZXZlbnVlX3NoYXJlX2JwcwAAAAAAAAQ=",
114
+ "AAAAAQAAAAAAAAAAAAAADE1hcmtldENvbmZpZwAAABEAAAAAAAAAEmFkbF9wbmxfZmFjdG9yX2JwcwAAAAAABAAAAAAAAAAOYWRsX3Jld2FyZF9icHMAAAAAAAQAAAA0wqcxMS4xIGNsb3NpbmctZmVlIHRpZXIgd2hlbiB0aGUgY2xvc2Ugd29yc2VucyBza2V3LgAAABJjbG9zZV9mZWVfaGlnaF9icHMAAAAAAAQAAABCwqcxMS4xIGNsb3NpbmctZmVlIHRpZXIgd2hlbiB0aGUgY2xvc2UgaW1wcm92ZXMgb3IgcHJlc2VydmVzIHNrZXcuAAAAAAARY2xvc2VfZmVlX2xvd19icHMAAAAAAAAEAAAAAAAAABdoYXJkX2NhcF9wbmxfZmFjdG9yX2JwcwAAAAAEAAAAgk1hcmdpbiByZXF1aXJlZCB0byBvcGVuIG9yIGFkZCByaXNrICjCpzEyLjMpLiBEaXZpZGVzIG1heCBsZXZlcmFnZToKYSBwb3NpdGlvbiBtYXkgbm90IGJlIGNyZWF0ZWQgY2xvc2VyIHRvIGxpcXVpZGF0aW9uIHRoYW4gdGhpcy4AAAAAABJpbml0aWFsX21hcmdpbl9icHMAAAAAAAQAAACHwqc4LjEgd2VpZ2h0IG9mIHRoZSBpbnN0YW50YW5lb3VzIHNrZXcgaW4gdGhlIGZ1bmRpbmcgYmxlbmQsIGluIGJwczsKdGhlIHJlc3QgaXMgdGhlIGhhbGYtbGlmZSBFTUEuIGBCUFNgIHJlcHJvZHVjZXMgcHVyZSBpbnN0YW50IHNrZXcuAAAAABJpbnN0YW50X3dlaWdodF9icHMAAAAAAAQAAAAAAAAAFmxpcXVpZGF0aW9uX3Jld2FyZF9icHMAAAAAAAQAAAB8TWFyZ2luIGJlbG93IHdoaWNoIHRoZSBwb3NpdGlvbiBpcyBsaXF1aWRhdGFibGUgKMKnMTIuMykuIE11c3Qgbm90CmV4Y2VlZCBgaW5pdGlhbF9tYXJnaW5fYnBzYDsgdGhlIGdhcCBpcyB0aGUgZW50cnkgYnVmZmVyLgAAABZtYWludGVuYW5jZV9tYXJnaW5fYnBzAAAAAAAEAAAAAAAAABZtYXJrZXRfcmlza19mYWN0b3JfYnBzAAAAAAAEAAAAAAAAABhtYXhfZnVuZGluZ19yYXRlX2Jwc19kYXkAAAALAAAAAAAAABZtYXhfbG9uZ19iYXNlX2V4cG9zdXJlAAAAAAALAAAAAAAAABttYXhfbG9uZ19zaXplX29wZW5faW50ZXJlc3QAAAAACwAAAAAAAAAXbWF4X3Nob3J0X2Jhc2VfZXhwb3N1cmUAAAAACwAAAAAAAAAcbWF4X3Nob3J0X3NpemVfb3Blbl9pbnRlcmVzdAAAAAsAAAAAAAAAF3JlY292ZXJ5X3BubF9mYWN0b3JfYnBzAAAAAAQAAAAAAAAAFndhcm5pbmdfcG5sX2ZhY3Rvcl9icHMAAAAAAAQ=",
115
+ "AAAAAQAAAC5HbG9iYWwgc2FmZXR5IHRocmVzaG9sZHMgZm9yIHByaWNlIHZhbGlkYXRpb24uAAAAAAAAAAAADE9yYWNsZUNvbmZpZwAAAAQAAADzSG93IGxvbmcgYSBjYWNoZWQgYWdncmVnYXRlZCBwcmljZSByZW1haW5zIHZhbGlkIGFmdGVyIHRoZSByb3V0ZXIKZmV0Y2ggKGluIHNlY29uZHMpLiBBIGNhY2hlIGhpdCBhbHNvIHJlcXVpcmVzIGV2ZXJ5IHNvdXJjZSB0aW1lc3RhbXAKdXNlZCBmb3IgdGhlIGNhY2hlZCBtZWRpYW4gdG8gcmVtYWluIHdpdGhpbiBgc3RhbGVuZXNzX3RocmVzaG9sZGAuCk11c3QgYmUgPiAwIGFuZCA8PSBgc3RhbGVuZXNzX3RocmVzaG9sZGAuAAAAAA5jYWNoZV9kdXJhdGlvbgAAAAAABgAAAIlNYXhpbXVtIGFsbG93ZWQgc3ByZWFkIGJldHdlZW4gb3JhY2xlIHNvdXJjZXMgaW4gYmFzaXMgcG9pbnRzCihlLmcuLCAxMDAgPSAxJSkuIEJvdW5kZWQgYXQgYGNyYXRlOjpjb25zdGFudHM6Ok1BWF9ERVZJQVRJT05fQlBTX0NFSUxJTkdgLgAAAAAAABFtYXhfZGV2aWF0aW9uX2JwcwAAAAAAAAsAAADhTWluaW11bSBudW1iZXIgb2Ygc291cmNlIHJlc3BvbnNlcyB0aGF0IG11c3QgYWdyZWUgd2l0aGluCmBtYXhfZGV2aWF0aW9uX2Jwc2AgZm9yIE9yYWNsZVJvdXRlciB0byByZXR1cm4gYSBwcmljZS4gRmxvb3JlZCBhdApgY3JhdGU6OmNvbnN0YW50czo6TUlOX1JFUVVJUkVEX1NPVVJDRVNfRkxPT1JgLCBjZWlsaW5nZWQgYXQKYGNyYXRlOjpjb25zdGFudHM6Ok1BWF9PUkFDTEVfU09VUkNFU2AuAAAAAAAAFG1pbl9yZXF1aXJlZF9zb3VyY2VzAAAABAAAAFlNYXhpbXVtIGFnZSBvZiBhbiBleHRlcm5hbCBTRVAtNDAgcHJpY2UgZmVlZCBiZWZvcmUgaXQgaXMgcmVqZWN0ZWQKYXMgc3RhbGUgKGluIHNlY29uZHMpLgAAAAAAABNzdGFsZW5lc3NfdGhyZXNob2xkAAAAAAY=",
116
+ "AAAAAgAAAAAAAAAAAAAADUxwUmVxdWVzdEtpbmQAAAAAAAACAAAAAAAAAAAAAAAHRGVwb3NpdAAAAAAAAAAAAAAAAApXaXRoZHJhd2FsAAA=",
107
117
  "AAAAAQAAAEtEYXRhIHJlcXVpcmVkIGR1cmluZyBhIFdBU00gbWlncmF0aW9uLiBTaW5nbGUgZGVmaW5pdGlvbiBmb3IgYWxsIGNvbnRyYWN0cy4AAAAAAAAAAA1NaWdyYXRpb25EYXRhAAAAAAAAAQAAAAAAAAAHdmVyc2lvbgAAAAAE",
108
- "AAAAAQAAAb5QZW5kaW5nIFdBU00gdXBncmFkZSDigJQgc2V0IGJ5IGBwcm9wb3NlX3VwZ3JhZGVgLCBjb25zdW1lZCBieSBgdXBncmFkZWAKKGNsZWFyZWQgYXRvbWljYWxseSBvbiBhIHN1Y2Nlc3NmdWwgaW5zdGFsbCksIG9yIGNsZWFyZWQgYnkgYGNhbmNlbF91cGdyYWRlYC4KU2luZ2xlIHNoYXBlIGFjcm9zcyBldmVyeSBwcm90b2NvbCBjb250cmFjdDsgYWxsIGZvdXIgY29udHJhY3RzIHN0b3JlIGl0IGF0CnRoZSBzaGFyZWQgYHBlbmRpbmdfdXBncmFkZWAgU3ltYm9sIGtleSBpbiB0aGVpciBvd24gaW5zdGFuY2Ugc3RvcmFnZSAoc2VlCmBpbnRlcmZhY2VzOjp1cGdyYWRlOjpwZW5kaW5nX3VwZ3JhZGVfa2V5YCkuIGB1cGdyYWRlYCByZWZ1c2VzIHRvIGluc3RhbGwKdW5sZXNzIGBwZW5kaW5nLndhc21faGFzaGAgbWF0Y2hlcyB0aGUgc3VwcGxpZWQgaGFzaCBhbmQgYG5vdyA+PSBldGFgLgAAAAAAAAAAAA5QZW5kaW5nVXBncmFkZQAAAAAAAgAAAAAAAAADZXRhAAAAAAYAAAAAAAAACXdhc21faGFzaAAAAAAAA+4AAAAg",
118
+ "AAAAAQAAAbBQZW5kaW5nIFdBU00gdXBncmFkZSDigJQgc2V0IGJ5IGBwcm9wb3NlX3VwZ3JhZGVgLCBjb25zdW1lZCBieSBgdXBncmFkZWAKKGNsZWFyZWQgYXRvbWljYWxseSBvbiBhIHN1Y2Nlc3NmdWwgaW5zdGFsbCksIG9yIGNsZWFyZWQgYnkgYGNhbmNlbF91cGdyYWRlYC4KU2luZ2xlIHNoYXBlIGFjcm9zcyBldmVyeSBwcm90b2NvbCBjb250cmFjdC4gQ29udHJhY3RzIHN0b3JlIGl0IGF0CnRoZSBzaGFyZWQgYHBlbmRpbmdfdXBncmFkZWAgU3ltYm9sIGtleSBpbiB0aGVpciBvd24gaW5zdGFuY2Ugc3RvcmFnZSAoc2VlCmBjcmF0ZTo6dXBncmFkZTo6cGVuZGluZ191cGdyYWRlX2tleWApLiBgdXBncmFkZWAgcmVmdXNlcyB0byBpbnN0YWxsCnVubGVzcyBgcGVuZGluZy53YXNtX2hhc2hgIG1hdGNoZXMgdGhlIHN1cHBsaWVkIGhhc2ggYW5kIGBub3cgPj0gZXRhYC4AAAAAAAAADlBlbmRpbmdVcGdyYWRlAAAAAAACAAAAAAAAAANldGEAAAAABgAAAAAAAAAJd2FzbV9oYXNoAAAAAAAD7gAAACA=",
119
+ "AAAAAgAAAAAAAAAAAAAAD0xwUmVxdWVzdFN0YXR1cwAAAAAEAAAAAAAAAAAAAAAHUGVuZGluZwAAAAAAAAAAAAAAAAdTZXR0bGVkAAAAAAAAAAAAAAAABkZhaWxlZAAAAAAAAAAAAAAAAAAHRXhwaXJlZAA=",
120
+ "AAAAAQAAAAAAAAAAAAAAEFNldHRsZW1lbnRSZXN1bHQAAAACAAAAPFNoYXJlcyBtaW50ZWQgZm9yIGEgZGVwb3NpdCBvciBhc3NldHMgcGFpZCBmb3IgYSB3aXRoZHJhd2FsLgAAAAZhbW91bnQAAAAAAAsAAAAAAAAABnN0YXR1cwAAAAAH0AAAABBTZXR0bGVtZW50U3RhdHVz",
121
+ "AAAAAgAAAAAAAAAAAAAAEFNldHRsZW1lbnRTdGF0dXMAAAACAAAAAAAAAAAAAAAHU2V0dGxlZAAAAAAAAAAAAAAAAAZGYWlsZWQAAA==",
122
+ "AAAAAQAAAAAAAAAAAAAAEkFjY291bnRpbmdTbmFwc2hvdAAAAAAACgAAAAAAAAAOY2FzaF9scF9lcXVpdHkAAAAAAAsAAAAAAAAADmNhc2hfc2hvcnRmYWxsAAAAAAALAAAAAAAAAA9mcmVlX2xwX2NhcGl0YWwAAAAACwAAAAAAAAAVbHBfYmxvY2tlZF9zaWRlX2NvdW50AAAAAAAABAAAAAAAAAANbm9uX2xwX2NsYWltcwAAAAAAAAsAAAAAAAAAE29wZW5fcG9zaXRpb25fY291bnQAAAAABgAAAAAAAAANcGh5c2ljYWxfY2FzaAAAAAAAAAsAAAAAAAAAFXJlcXVpcmVkX3Jpc2tfYmFja2luZwAAAAAAAAsAAAAAAAAAEHRvdGFsX3Jpc2tfdW5pdHMAAAALAAAAAAAAAAl2YXVsdF9uYXYAAAAAAAAL",
109
123
  "AAAABQAAALVFbWl0dGVkIGJ5IGBwcm9wb3NlX3VwZ3JhZGVgLiBPZmYtY2hhaW4gbW9uaXRvcmluZyByZWNvcmRzIHRoZSBwcm9wb3NlZApgd2FzbV9oYXNoYCArIGBldGFgIGFuZCBmbGFncyBhbnkgc3Vic2VxdWVudCBgdXBncmFkZSgpYCBjYWxsIHdob3NlIGhhc2gKZGl2ZXJnZXMgb3IgdGhhdCBmaXJlcyBiZWZvcmUgYGV0YWAuAAAAAAAAAAAAAA9VcGdyYWRlUHJvcG9zZWQAAAAAAQAAAAZ1cGdwcnAAAAAAAAIAAAAAAAAACXdhc21faGFzaAAAAAAAA+4AAAAgAAAAAAAAAAAAAAADZXRhAAAAAAYAAAAAAAAAAQ==",
110
124
  "AAAABQAAAC9FbWl0dGVkIGJ5IGBjYW5jZWxfdXBncmFkZWAgKFBBVVNFUiB2ZXRvIHBhdGgpLgAAAAAAAAAAEFVwZ3JhZGVDYW5jZWxsZWQAAAABAAAABnVwZ2NhbgAAAAAAAQAAAAAAAAAGY2FsbGVyAAAAAAATAAAAAAAAAAE=",
111
125
  "AAAABAAAAAAAAAAAAAAAEFVwZ3JhZGVhYmxlRXJyb3IAAAABAAAAQVdoZW4gbWlncmF0aW9uIGlzIGF0dGVtcHRlZCBidXQgbm90IGFsbG93ZWQgZHVlIHRvIHVwZ3JhZGUgc3RhdGUuAAAAAAAAE01pZ3JhdGlvbk5vdEFsbG93ZWQAAAAETA==",
@@ -119,11 +133,7 @@ export class Client extends ContractClient {
119
133
  "AAAABQAAACpFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGNvbnRyYWN0IGlzIHBhdXNlZC4AAAAAAAAAAAAGUGF1c2VkAAAAAAABAAAABnBhdXNlZAAAAAAAAAAAAAI=",
120
134
  "AAAABQAAACxFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGNvbnRyYWN0IGlzIHVucGF1c2VkLgAAAAAAAAAIVW5wYXVzZWQAAAABAAAACHVucGF1c2VkAAAAAAAAAAI=",
121
135
  "AAAABAAAAAAAAAAAAAAADVBhdXNhYmxlRXJyb3IAAAAAAAACAAAANFRoZSBvcGVyYXRpb24gZmFpbGVkIGJlY2F1c2UgdGhlIGNvbnRyYWN0IGlzIHBhdXNlZC4AAAANRW5mb3JjZWRQYXVzZQAAAAAAA+gAAAA4VGhlIG9wZXJhdGlvbiBmYWlsZWQgYmVjYXVzZSB0aGUgY29udHJhY3QgaXMgbm90IHBhdXNlZC4AAAANRXhwZWN0ZWRQYXVzZQAAAAAAA+k=",
122
- "AAAAAgAAACJTdG9yYWdlIGtleSBmb3IgdGhlIHBhdXNhYmxlIHN0YXRlAAAAAAAAAAAAElBhdXNhYmxlU3RvcmFnZUtleQAAAAAAAQAAAAAAAAAySW5kaWNhdGVzIHdoZXRoZXIgdGhlIGNvbnRyYWN0IGlzIGluIHBhdXNlZCBzdGF0ZS4AAAAAAAZQYXVzZWQAAA==",
123
- "AAAAAQAAAL1FeGVjdXRpb24tYm91bnR5IGFuZCBvcGVuLWZlZSBwYXJhbWV0ZXJzIGNoYXJnZWQgdG8gdHJhZGVycy4KYG9wZW5fZmVlX2Jwc2AgYW5kIGBsaXF1aWRhdGlvbl9ib3VudHlfYnBzYCBhcmUgaW4gYmFzaXMgcG9pbnRzOwpgdHBfc2xfZXhlY3V0aW9uX2ZlZWAgaXMgYSBmbGF0IFVTREMgYW1vdW50IGF0IFBSRUNJU0lPTiBzY2FsZS4AAAAAAAAAAAAACUZlZUNvbmZpZwAAAAAAAAMAAAAAAAAAFmxpcXVpZGF0aW9uX2JvdW50eV9icHMAAAAAAAQAAAAAAAAADG9wZW5fZmVlX2JwcwAAAAQAAAAAAAAAE3RwX3NsX2V4ZWN1dGlvbl9mZWUAAAAACw==",
124
- "AAAAAQAAAHBEZWZpbmVzIGhvdyBwcm90b2NvbCByZXZlbnVlIGlzIHNwbGl0IGJldHdlZW4gcGFydGllcy4KQWxsIHZhbHVlcyBhcmUgaW4gYmFzaXMgcG9pbnRzIChicHMpLiBNdXN0IHN1bSB0byAxMF8wMDAuAAAAAAAAAAlGZWVTcGxpdHMAAAAAAAADAAAAAAAAAAdkZXZfYnBzAAAAAAQAAAAAAAAABmxwX2JwcwAAAAAABAAAAAAAAAAKc3Rha2VyX2JwcwAAAAAABA==",
125
- "AAAAAQAAACtHbG9iYWwgcHJvdG9jb2wgcmlzayBhbmQgdGltaW5nIHBhcmFtZXRlcnMuAAAAAAAAAAAOUHJvdG9jb2xMaW1pdHMAAAAAAAgAAAAAAAAAC2FkbF9wbmxfYnBzAAAAAAQAAAAAAAAAE2FkbF91dGlsaXphdGlvbl9icHMAAAAABAAAAAAAAAARY29vbGRvd25fZHVyYXRpb24AAAAAAAAGAAAAAAAAAA9mdW5kaW5nX2N1dF9icHMAAAAABAAAAAAAAAAZbGlxdWlkYXRpb25fdGhyZXNob2xkX2JwcwAAAAAAAAQAAAAAAAAAFW1heF91dGlsaXphdGlvbl9yYXRpbwAAAAAAAAsAAAAAAAAADm1pbl9jb2xsYXRlcmFsAAAAAAALAAAAAAAAABVtaW5fcG9zaXRpb25fbGlmZXRpbWUAAAAAAAAG",
126
- "AAAAAQAAAElCb3Jyb3cgcmF0ZSBraW5rIGN1cnZlIGFuZCBmdW5kaW5nIHJhdGUgcGFyYW1ldGVycyAoYWxsIGluIGJhc2lzIHBvaW50cykuAAAAAAAAAAAAABBCb3Jyb3dSYXRlQ29uZmlnAAAABQAAAAAAAAAUYmFzZV9ib3Jyb3dfcmF0ZV9icHMAAAALAAAAAAAAABViYXNlX2Z1bmRpbmdfcmF0ZV9icHMAAAAAAAALAAAAAAAAABdvcHRpbWFsX3V0aWxpemF0aW9uX2JwcwAAAAALAAAAAAAAAApzbG9wZTFfYnBzAAAAAAALAAAAAAAAAApzbG9wZTJfYnBzAAAAAAAL"]), options);
136
+ "AAAAAgAAACJTdG9yYWdlIGtleSBmb3IgdGhlIHBhdXNhYmxlIHN0YXRlAAAAAAAAAAAAElBhdXNhYmxlU3RvcmFnZUtleQAAAAAAAQAAAAAAAAAySW5kaWNhdGVzIHdoZXRoZXIgdGhlIGNvbnRyYWN0IGlzIGluIHBhdXNlZCBzdGF0ZS4AAAAAAAZQYXVzZWQAAA=="]), options);
127
137
  this.options = options;
128
138
  }
129
139
  fromJSON = {