@pkmn/engine 0.1.0-dev.02b7f810 → 0.1.0-dev.1da0f17c

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -50,13 +50,13 @@ $ zig build --prefix /usr/local -Doptimize=ReleaseFast
50
50
 
51
51
  The Zig website has [installation instructions](https://ziglang.org/learn/getting-started/) which
52
52
  walk through how to install Zig on each platform - the engine code should work on Zig v0.11.0 dev
53
- build 2168 or greater, though tracks Zig's master branch so this may change in the future if
53
+ build 2560 or greater, though tracks Zig's master branch so this may change in the future if
54
54
  breaking language changes are introduced:
55
55
 
56
56
  `libpkmn` can be built with `-Dshowdown` to instead produce the Pokémon Showdown compatible
57
- `libpkmn-showdown` library. Furthermore, trace logging can be enabled through `-Dtrace`. The
58
- `libpkmn` and `libpkmn-showdown` objects available in the binary release are compiled with and
59
- without the `-Dtrace` flag respectively.
57
+ `libpkmn-showdown` library. Furthermore, protocol message logging can be enabled through `-Dlog`.
58
+ The `libpkmn` and `libpkmn-showdown` objects available in the binary release are both compiled with
59
+ the `-Dlog` flag by default.
60
60
 
61
61
  ### `@pkmn/engine`
62
62
 
@@ -90,21 +90,21 @@ const pkmn = @import("lib/pkmn/build.zig");
90
90
 
91
91
  pub fn build(b: *std.build.Builder) void {
92
92
  ...
93
- exe.addModule("pkmn", pkmn.module(b, .{ .showdown = true, .trace = true }));
93
+ exe.addModule("pkmn", pkmn.module(b, .{ .showdown = true, .log = true }));
94
94
  ...
95
95
  }
96
96
  ```
97
97
 
98
98
  The engine's `build.zig` exposes a `module` function that takes an options structure to allow for
99
- configuring whether or not Pokémon Showdown compatibility mode or trace logs should be enabled.
100
- Alternatively, you may set options via a `pkmn_options` [root source file
99
+ configuring whether or not Pokémon Showdown compatibility mode or protocol message logging should be
100
+ enabled. Alternatively, you may set options via a `pkmn_options` [root source file
101
101
  declaration](https://ziglang.org/documentation/master/#Root-Source-File). There are several
102
102
  undocumented internal options that can be tweaked as well via build or root options, though these
103
103
  options are not officially supported, affect correctness, and may change meaning or behavior without
104
104
  warning. Use at your own risk.
105
105
 
106
106
  ```zig
107
- pub const pkmn_options = .{ .showdown = true, .trace = true };
107
+ pub const pkmn_options = .{ .showdown = true, .log = true };
108
108
  ```
109
109
 
110
110
  ## Usage
@@ -112,16 +112,16 @@ pub const pkmn_options = .{ .showdown = true, .trace = true };
112
112
  For each Pokémon generation, the engine provides a battle structure with two functions - a function
113
113
  to `update` the battle's state based on both players' choices and a function that defines which
114
114
  `choices` are valid at that decision point (at the beginning of a battle both player's must "pass"
115
- as their first choice in order to switch in the first member of their party). If `-Dtrace` logging
116
- is enabled each update will produce logs which can be decoded into a buffer (`LOGS_SIZE` constants
117
- are provided to make it easy to allocate a buffer of the correct size). Each `update` will return a
118
- result to indicate either that the battle has terminated or which types of choices will be available
119
- for each player.
115
+ as their first choice in order to switch in the first member of their party). If `-Dlog` protocol
116
+ logging is enabled each update will produce logs which can be decoded into a buffer (`LOGS_SIZE`
117
+ constants are provided to make it easy to allocate a buffer of the correct size). Each `update` will
118
+ return a result to indicate either that the battle has terminated or which types of choices will be
119
+ available for each player.
120
120
 
121
121
  Unlike [Pokémon Showdown's
122
122
  SIM-PROTOCOL](https://github.com/smogon/pokemon-showdown/blob/master/sim/SIM-PROTOCOL.md#choice-requests)
123
123
  which provides a rich request object at each decision point, the pkmn engine computes the possible
124
- choices on demand based on the result of the previous `update` and the battle state (`OPTIONS_SIZE`
124
+ choices on demand based on the result of the previous `update` and the battle state (`CHOICES_SIZE`
125
125
  is a good size to initialize the buffer passed to `choices`). **Attempting to update the battle with
126
126
  a choice not present in the options returned by `choices` is undefined behavior and may corrupt
127
127
  state or cause the engine to crash.**
@@ -139,7 +139,7 @@ potential logs that may result.
139
139
  ### C
140
140
 
141
141
  [`pkmn.h`](src/include/pkmn.h) exports the C API for `libpkmn`. Symbols are all prefixed with
142
- `pkmn_` to avoid name collisions. If `-Dtrace` is enabled and logging throws an error then the error
142
+ `pkmn_` to avoid name collisions. If `-Dlog` is enabled and logging throws an error then the error
143
143
  will be encoded in the `pkmn_result` and can be checked with `pkmn_error`.
144
144
 
145
145
  ```c
@@ -216,7 +216,7 @@ const std = @import("std");
216
216
  const pkmn = @import("pkmn");
217
217
 
218
218
  var random = std.rand.DefaultPrng.init(seed).random();
219
- var options: [pkmn.OPTIONS_SIZE]pkmn.Choice = undefined;
219
+ var choices: [pkmn.CHOICES_SIZE]pkmn.Choice = undefined;
220
220
 
221
221
  var battle = ...
222
222
  var log = ...
@@ -226,8 +226,8 @@ var c2 = pkmn.Choice{};
226
226
 
227
227
  var result = try battle.update(c1, c2, log);
228
228
  while (result.type == .None) : (result = try battle.update(c1, c2, log)) {
229
- c1 = options[random.uintLessThan(u8, battle.choices(.P1, result.p1, &options))];
230
- c2 = options[random.uintLessThan(u8, battle.choices(.P2, result.p2, &options))];
229
+ c1 = choices[random.uintLessThan(u8, battle.choices(.P1, result.p1, &choices))];
230
+ c2 = choices[random.uintLessThan(u8, battle.choices(.P2, result.p2, &choices))];
231
231
  }
232
232
 
233
233
  std.debug.print("{}\n", .{result.type});
@@ -250,10 +250,10 @@ following is a list of known `libpkmn` bindings written by developers outside of
250
250
  organization](https://github.com/pkmn) that may be helpful (though note that these projects may not
251
251
  necessarily be up-to-date/complete/correct - inclusion in this list does not imply endorsement):
252
252
 
253
- | Language | License | URL |
254
- | ---------- | --------- | --------------------------------------- |
255
- | **C++** | `BSL-1.0` | https://github.com/pasyg/engine-wrapper |
256
- | **Python** | `MIT` | https://github.com/AnnikaCodes/PyKMN |
253
+ | Language | License | URL |
254
+ | ---------- | --------- | ------------------------------------ |
255
+ | **C++** | `BSL-1.0` | https://github.com/pasyg/wrapsire |
256
+ | **Python** | `MIT` | https://github.com/AnnikaCodes/PyKMN |
257
257
 
258
258
 
259
259
  #### `pkmn-debug`
@@ -1,7 +1,7 @@
1
1
  import { Choice, Player, Result } from '.';
2
2
  export declare function check(showdown: boolean): void;
3
- export declare function supports(showdown: boolean, trace?: boolean): boolean;
3
+ export declare function supports(showdown: boolean, log?: boolean): boolean;
4
4
  export declare function update(index: number, showdown: boolean, battle: ArrayBuffer, c1?: Choice, c2?: Choice, log?: ArrayBuffer): Result;
5
5
  export declare function choices(index: number, showdown: boolean, battle: ArrayBuffer, player: Player, choice: Choice['type'], buf: ArrayBuffer): Choice[];
6
6
  export declare function choose(index: number, showdown: boolean, battle: ArrayBuffer, player: Player, choice: Choice['type'], buf: ArrayBuffer, fn: (n: number) => number): Choice;
7
- export declare function size(index: number, type: 'options' | 'log'): number;
7
+ export declare function size(index: number, type: 'choices' | 'log'): number;
@@ -48,7 +48,7 @@ function load() {
48
48
  }
49
49
  function check(showdown) {
50
50
  if (!load()[+showdown]) {
51
- const opts = ADDON[+!showdown].options.trace ? ['-Dtrace'] : [];
51
+ const opts = ADDON[+!showdown].options.log ? ['-log'] : [];
52
52
  if (showdown)
53
53
  opts.push('-Dshowdown');
54
54
  throw new Error(`@pkmn/engine has ${showdown ? 'not' : 'only'} been configured to support Pokémon Showdown.` +
@@ -56,12 +56,12 @@ function check(showdown) {
56
56
  }
57
57
  }
58
58
  exports.check = check;
59
- function supports(showdown, trace) {
59
+ function supports(showdown, log) {
60
60
  if (!load()[+showdown])
61
61
  return false;
62
- if (trace === undefined)
62
+ if (log === undefined)
63
63
  return true;
64
- return ADDON[+showdown].options.trace === trace;
64
+ return ADDON[+showdown].options.log === log;
65
65
  }
66
66
  exports.supports = supports;
67
67
  function update(index, showdown, battle, c1, c2, log) {
@@ -105,7 +105,7 @@ function choose(index, showdown, battle, player, choice, buf, fn) {
105
105
  exports.choose = choose;
106
106
  function size(index, type) {
107
107
  const bindings = (ADDON[1] ?? ADDON[0]).bindings[index];
108
- return type[0] === 'o' ? bindings.OPTIONS_SIZE : bindings.LOGS_SIZE;
108
+ return type[0] === 'c' ? bindings.CHOICES_SIZE : bindings.LOGS_SIZE;
109
109
  }
110
110
  exports.size = size;
111
111
  //# sourceMappingURL=addon.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"addon.js","sourceRoot":"","sources":["../../src/pkg/addon.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"addon.js","sourceRoot":"","sources":["../../src/pkg/addon.ts"],"names":[],"mappings":"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"}
package/build/pkg/gen1.js CHANGED
@@ -50,7 +50,7 @@ class Battle {
50
50
  this.config = config;
51
51
  this.lookup = lookup;
52
52
  this.data = data;
53
- this.options = new ArrayBuffer(addon.size(0, 'options'));
53
+ this.options = new ArrayBuffer(addon.size(0, 'choices'));
54
54
  this.buf = config.log ? new ArrayBuffer(addon.size(0, 'log')) : undefined;
55
55
  this.log = config.log ? new DataView(this.buf) : undefined;
56
56
  this.cache = [undefined, undefined];
@@ -14,8 +14,9 @@ export type MoveSlot = Gen1.MoveSlot;
14
14
  /** Generic API supported by all Generations of Battle. */
15
15
  export interface API {
16
16
  /**
17
- * The most recent buffer of binary protocol trace log data filled by `update`
18
- * if tracing is enabled, otherwise undefined. Meant to be parsed by `Log`.
17
+ * The most recent buffer of binary protocol message log data filled by
18
+ * `update` if logging is enabled, otherwise undefined. Meant to be parsed by
19
+ * `Log`.
19
20
  */
20
21
  log?: DataView;
21
22
  /**
@@ -245,8 +246,8 @@ export type CreateOptions = {
245
246
  /** Player 2's options. */
246
247
  p2: PlayerOptions;
247
248
  /**
248
- * Whether to capture protocol trace logs. Note that if the engine itself was
249
- * not build with trace logging enabled then enabling this will have no
249
+ * Whether to capture protocol message logs. Note that if the engine itself
250
+ * was not build with protocol logging enabled then enabling this will have no
250
251
  * effect.
251
252
  */
252
253
  log: true;
@@ -256,8 +257,8 @@ export type CreateOptions = {
256
257
  /** Player 2's options. */
257
258
  p2: Omit<PlayerOptions, 'name'>;
258
259
  /**
259
- * Whether to capture protocol trace logs. Note that if the engine itself was
260
- * not build with trace logging enabled then enabling this will have no
260
+ * Whether to capture protocol message logs. Note that if the engine itself
261
+ * was not build with protocol logging enabled then enabling this will have no
261
262
  * effect.
262
263
  */
263
264
  log?: false;
@@ -274,8 +275,8 @@ export type RestoreOptions = {
274
275
  */
275
276
  showdown?: boolean;
276
277
  /**
277
- * Whether to capture protocol trace logs. Note that if the engine itself was
278
- * not build with trace logging enabled then enabling this will have no
278
+ * Whether to capture protocol message logs. Note that if the engine itself
279
+ * was not build with protocol logging enabled then enabling this will have no
279
280
  * effect.
280
281
  */
281
282
  log: true;
@@ -286,8 +287,8 @@ export type RestoreOptions = {
286
287
  */
287
288
  showdown?: boolean;
288
289
  /**
289
- * Whether to capture protocol trace logs. Note that if the engine itself was
290
- * not build with trace logging enabled then enabling this will have no
290
+ * Whether to capture protocol message logs. Note that if the engine itself
291
+ * was not build with protocol logging enabled then enabling this will have no
291
292
  * effect.
292
293
  */
293
294
  log?: false;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pkg/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pkg/index.ts"],"names":[],"mappings":"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"}
@@ -88,7 +88,8 @@ function render(gen, showdown, error, seed, frames, partial = {}) {
88
88
  buf.push(`<pre class="error"><code>${escapeHTML(err)}</pre></code>`);
89
89
  }
90
90
  const type = Array.isArray(last) ? 'showdown' : 'pkmn';
91
- return (0, html_minifier_1.minify)(mustache.render(fs.readFileSync(template(type), 'utf8'), type === 'pkmn'
91
+ const render = ('render' in mustache ? mustache : mustache.default).render;
92
+ return (0, html_minifier_1.minify)(render(fs.readFileSync(template(type), 'utf8'), type === 'pkmn'
92
93
  ? { content: buf.join('') }
93
94
  : {
94
95
  seed: buf.shift(),
@@ -1 +1 @@
1
- {"version":3,"file":"display.js","sourceRoot":"","sources":["../../src/test/display.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,2CAA6B;AAG7B,mCAAyC;AACzC,iDAAqC;AACrC,mDAAqC;AAIrC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACjD,MAAM,QAAQ,GAAG,CAAC,CAAsB,EAAE,EAAE,CAC1C,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;AAE9D,MAAM,SAAS,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACjD,MAAM,SAAS,GAA+E;IAC5F,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC;IACnC,MAAM,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC;IACzB,QAAQ,EAAE,CAAC,UAAU,EAAE,MAAM,CAAC;IAC9B,OAAO,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC;IAC3B,YAAY,EAAE,CAAC,cAAc,EAAE,MAAM,CAAC;IACtC,SAAS,EAAE,CAAC,WAAW,EAAE,KAAK,CAAC;IAC/B,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,CAAC,cAAc,EAAE,MAAM,CAAC;IACrC,UAAU,EAAE,CAAC,YAAY,EAAE,MAAM,CAAC;IAClC,UAAU,EAAE,CAAC,YAAY,EAAE,KAAK,CAAC;IACjC,IAAI,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;IACzB,SAAS,EAAE,CAAC,YAAY,EAAE,KAAK,CAAC;IAChC,WAAW,EAAE,CAAC,cAAc,EAAE,MAAM,CAAC;IACrC,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;IAC5B,SAAS,EAAE,CAAC,aAAa,EAAE,SAAS,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,GAAG,CAAC,MAAe,EAAE,EAAE,CAAC,MAAM;IACxC,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE;IACxE,CAAC,CAAC,KAAK,CAAC;AAEV,MAAM,MAAM,GAAG,CAAC,KAAU,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAe,EAAE,CAAC;AACvF,MAAM,IAAI,GAAG,CAAC,IAAc,EAAE,EAAE;IAC9B,OAAO,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACzD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,OAAO,GAAG,CAAC,IAAgB,EAAE,EAAE,CACnC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAa,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;SAClE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,MAAM,CAAE,IAAI,CAAC,MAAc,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAErE,MAAM,KAAK,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC;IACjD,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB;QACpD,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;AAElB,MAAM,MAAM,GAAG,CAAC,MAAoB,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;AAAzE,QAAA,MAAM,UAAmE;AActF,SAAgB,MAAM,CACpB,GAAe,EACf,QAAiB,EACjB,KAAyB,EACzB,IAAwB,EACxB,MAAuB,EACvB,UAA0B,EAAE;IAE5B,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,GAAG,GAAG,EAAE,CAAC;IACf,IAAI,IAAI;QAAE,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAEpE,IAAI,IAAI,GAAwC,SAAS,CAAC;IAC1D,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;QAC1B,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;QACnD,IAAI,QAAQ,IAAI,KAAK,EAAE;YACrB,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC;SACrB;aAAM;YACL,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;YAClB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SAC1B;KACF;IACD,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IAEjD,IAAI,KAAK,EAAE;QACT,MAAM,GAAG,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAClD,GAAG,CAAC,IAAI,CAAC,4BAA4B,UAAU,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;KACtE;IAED,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC;IACvD,OAAO,IAAA,sBAAM,EACX,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,EAAE,IAAI,KAAK,MAAM;QACtE,CAAC,CAAC,EAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAC;QACzB,CAAC,CAAC;YACA,IAAI,EAAE,GAAG,CAAC,KAAK,EAAE;YACjB,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACrB,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;SAC1B,CAAC,EACJ,EAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAC,CAClC,CAAC;AACJ,CAAC;AAxCD,wBAwCC;AAED,SAAS,YAAY,CACnB,GAAe,EACf,QAAiB,EACjB,OAAuB,EACvB,IAA8B;IAE9B,MAAM,GAAG,GAAG,EAAE,CAAC;IACf,IAAI,QAAQ,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE;QACzC,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC9B,GAAG,CAAC,IAAI,CAAC,cAAc,IAAA,cAAM,EAAC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QAC9D,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KACpB;SAAM,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,CAAC,KAAK,EAAE;QAC9C,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QACnC,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YAC5C,GAAG,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,eAAe,CAAC,CAAC;SACvD;QACD,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;KAC1B;IACD,IAAI,QAAQ,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE;QACzC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC,MAAM,EAAE,IAAoB,CAAC,CAAC,CAAC;KAC9E;SAAM,IAAI,MAAM,IAAI,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE;QAC5C,GAAG,CAAC,IAAI,CAAC,qBAAqB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KAChE;IACD,IAAI,OAAO,CAAC,MAAM,EAAE;QAClB,MAAM,EAAC,MAAM,EAAE,EAAE,EAAE,EAAE,EAAC,GAAG,OAAO,CAAC;QACjC,GAAG,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;QAC5D,GAAG,CAAC,IAAI,CAAC,2BAA2B,MAAM,CAAC,EAAE,UAAU,MAAM,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC;QAClF,GAAG,CAAC,IAAI,CAAC,2BAA2B,MAAM,CAAC,EAAE,UAAU,MAAM,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC;QAClF,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KACpB;IACD,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACtB,CAAC;AAED,SAAS,aAAa,CACpB,GAAe,EACf,QAAiB,EACjB,MAAoB,EACpB,IAAmB;IAEnB,MAAM,GAAG,GAAG,EAAE,CAAC;IACf,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACjC,IAAI,MAAM,CAAC,IAAI,EAAE;QACf,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAClC,GAAG,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,IAAI,OAAO,CAAC,CAAC;QACzC,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAChC,GAAG,CAAC,IAAI,CAAC,sCAAsC,MAAM,CAAC,UAAU,QAAQ,CAAC,CAAC;QAC1E,GAAG,CAAC,IAAI,CAAC,+BAA+B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxE,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnB,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KACpB;IACD,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAChC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1C,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACxE,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAClE,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAClE,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACnB,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACnB,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACtB,CAAC;AAED,SAAS,WAAW,CAClB,GAAe,EACf,QAAiB,EACjB,OAAgB,EAChB,MAAmB,EACnB,IAAU,EACV,IAAW;IAEX,MAAM,GAAG,GAAG,EAAE,CAAC;IACf,GAAG,CAAC,IAAI,CAAC,oBAAoB,MAAM,IAAI,CAAC,CAAC;IACzC,IAAI,OAAO,EAAE;QACX,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAClC,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAE,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC;QAC1F,GAAG,CAAC,IAAI,CAAC,wCAAwC,IAAI,QAAQ,CAAC,CAAC;QAC/D,MAAM,QAAQ,GACZ,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAE,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC;QACvF,MAAM,KAAK,GACT,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/D,GAAG,CAAC,IAAI,CAAC,4CAA4C,QAAQ,GAAG,KAAK,QAAQ,CAAC,CAAC;QAC/E,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KACpB;IACD,IAAI,IAAI,CAAC,MAAM,EAAE;QACf,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACjC,IAAI,IAAI,GAAG,SAAS,CAAC;QACrB,IAAI,IAAI,EAAE;YACR,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE;gBAClC,IAAI,OAAO,CAAC,QAAQ,KAAK,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;oBAC7C,IAAI,GAAG,OAAO,CAAC;oBACf,MAAM;iBACP;aACF;SACF;QACD,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;QACjE,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KACpB;IACD,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IACnC,GAAG,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;IAC7C,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,MAAM,CAAC,GAAG,EAAE,CAAC;IACb,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE;QAClC,IAAI,CAAC,KAAK,CAAC;YAAE,CAAC,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;QACrD,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QAC9B,CAAC,EAAE,CAAC;KACL;IACD,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IACrB,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC7B,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE;QAClC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;KACzD;IACD,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACvB,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACnB,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACtB,CAAC;AAED,MAAM,KAAK,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAU,CAAC;AAEjE,SAAS,cAAc,CACrB,GAAe,EACf,QAAiB,EACjB,OAAgB,EAChB,MAAe,EACf,IAAc;IAEd,MAAM,GAAG,GAAG,EAAE,CAAC;IACf,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IAClC,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;IAElE,SAAS;IACT,MAAM,EAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;IACtD,GAAG,CAAC,IAAI,CAAC,4BAA4B,KAAK,IAAI,CAAC,CAAC;IAChD,IAAI,CAAC,MAAM;QAAE,GAAG,CAAC,IAAI,CAAC,yBAAyB,SAAS,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;IACxF,GAAG,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAC;IAC/E,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAChC,IAAI,OAAO,CAAC,MAAM;QAAE,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;IACrD,IAAI,IAAI,GAAW,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC,IAAI,CAAC;IAClD,IAAI,MAAM,IAAI,OAAO,CAAC,OAAO,KAAK,OAAO,CAAC,MAAM,CAAC,OAAO;QAAE,IAAI,GAAG,OAAO,IAAI,OAAO,CAAC;IACpF,GAAG,CAAC,IAAI,CAAC,WAAW,IAAI,iBAAiB,OAAO,CAAC,KAAK,mBAAmB,CAAC,CAAC;IAC3E,IAAI,MAAM,IAAI,OAAO,CAAC,OAAO,KAAK,OAAO,CAAC,MAAM,CAAC,OAAO;QAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5E,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACpB,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAChC,MAAM,KAAK,GAAG,UAAU,KAAK,yBAAyB,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACnF,MAAM,EAAE,GAAG,kBAAkB,KAAK,YAAY,KAAK,UAAU,CAAC;IAC9D,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE;QACtE,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;QACzB,MAAM,KAAK,GAAG,UAAU,IAAI,CAAC,KAAK,yBAAyB,IAAI,CAAC,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAC7F,GAAG,CAAC,IAAI,CAAC,sBAAsB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,YAAY,KAAK,IAAI,CAAC,CAAC;QAC3F,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACb,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KACpB;SAAM;QACL,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KACd;IACD,GAAG,CAAC,IAAI,CAAC,uBAAuB,OAAO,SAAS,CAAC,CAAC;IAClD,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAEzB,iBAAiB;IACjB,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IACtD,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;IAC5D,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAChC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5B,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC;QAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvD,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACnB,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAEnB,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAChC,IAAI,CAAC,MAAM;QAAE,GAAG,CAAC,IAAI,CAAC,yBAAyB,SAAS,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;IAExF,iBAAiB;IACjB,GAAG,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;IAC5D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;QACxB,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,KAAK;YAAE,SAAS;QAC9C,GAAG,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACjD;IACD,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACtB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;QACxB,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,KAAK;YAAE,SAAS;QAC9C,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3D,GAAG,CAAC,IAAI,CAAC,OAAO,WAAW,CAAC,KAAK,CAAC,IAAc,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;KACnE;IACD,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC1B,IAAI,MAAM,EAAE;QACV,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACjC,IAAI,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE;YAC3B,GAAG,CAAC,IAAI,CAAC,mCAAmC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;SAC5F;QACD,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE;YAC1B,GAAG,CAAC,IAAI,CAAC,kCAAkC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;SAC1F;QACD,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KACpB;IACD,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAEnB,QAAQ;IACR,GAAG,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACpC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;IAC5D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;QACxB,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAE,CAAC,IAAI,CAAC;QAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACpF,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,EAAE,IAAK,IAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;QACtE,MAAM,KAAK,GACR,IAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,oBAAqB,IAAY,CAAC,QAAkB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACxF,MAAM,EAAE,GAAG,WAAW,IAAI,CAAC,EAAE,IAAI,KAAK,WAAW,CAAC;QAClD,GAAG,CAAC,IAAI,CAAC,cAAc,QAAQ,KAAK,KAAK,IAAI,IAAI,IAAI,EAAE,OAAO,CAAC,CAAC;KACjE;IACD,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAExB,YAAY;IACZ,IAAI,MAAM,EAAE;QACV,GAAG,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QACpC,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,SAAS,EAAE;YACjC,MAAM,QAAQ,GAAG,CAA+B,CAAC;YACjD,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAE,CAAC;YAC1C,IAAI,IAAI,GAAG,EAAE,CAAC;YACd,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;gBAC7D,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;aAClE;iBAAM,IAAI,QAAQ,KAAK,MAAM,EAAE;gBAC9B,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAE,CAAC;gBACzC,IAAI,GAAG,GAAG,GAAG,CAAC,QAAQ,KAAK,GAAG,CAAC,MAAM,GAAG,CAAC;aAC1C;iBAAM,IAAI,QAAQ,KAAK,MAAM,EAAE;gBAC9B,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAE,CAAC;gBACzC,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACpD;iBAAM,IAAI,QAAQ,KAAK,WAAW,EAAE;gBACnC,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAE,CAAC;gBACzC,IAAI,GAAG,GAAG,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;aACrE;iBAAM,IAAI,QAAQ,KAAK,WAAW,EAAE;gBACnC,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAE,CAAC,IAAI,CAAC,CAAC;gBAC1D,IAAI,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAE,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC;aACxD;YACD,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YACjE,GAAG,CAAC,IAAI,CAAC,yBAAyB,IAAI,KAAK,IAAI,SAAS,CAAC,CAAC;SAC3D;QACD,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KACpB;IAED,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACnB,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACnB,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACtB,CAAC;AAED,SAAS,UAAU,CAAC,GAAW;IAC7B,OAAO,CAAC,GAAG;SACR,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;SACvB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;SACvB,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC;SACxB,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC/B,CAAC;AAED,SAAS,KAAK,CAAC,OAAgB;IAC7B,MAAM,KAAK,GAAG,GAAG,OAAO,CAAC,EAAE,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;IAClD,MAAM,KAAK,GAAG,OAAO,CAAC,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;IAC5C,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC;IACrC,IAAI,CAAC,OAAO,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,EAAE;QACtC,OAAO,GAAG,EAAE,CAAC;KACd;IACD,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC;QACvD,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,GAAG;QACrB,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,KAAK,mBAAmB,CAAC;IACzD,MAAM,KAAK,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC;IACtE,OAAO,EAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAC,CAAC;AACxC,CAAC;AAED,SAAS,aAAa,CAAC,OAAgB;IACrC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,MAAO,CAAC;IAC7D,IAAI,CAAC,GAAG,EAAE,CAAC;IACX,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK;QAAE,CAAC,IAAI,UAAU,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IACxE,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE;QACxD,CAAC,IAAI,UAAU,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;KAC3C;IACD,IAAI,CAAC;QAAE,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC;IAC1B,MAAM,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,MAAO,CAAC;IAC5D,OAAO,uBAAuB,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;AACtD,CAAC;AAED,SAAS,WAAW,CAAC,IAAY,EAAE,KAAa;IAC9C,IAAI,CAAC,KAAK;QAAE,OAAO,GAAG,IAAI,EAAE,CAAC;IAC7B,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,sBAAsB,IAAI,MAAM,KAAK,UAAU,CAAC;IACtE,OAAO,qBAAqB,IAAI,KAAK,KAAK,UAAU,CAAC;AACvD,CAAC;AAED,SAAS,YAAY,CAAC,KAAa;IACjC,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,uBAAuB,KAAK,SAAS,CAAC;IAC5D,OAAO,qBAAqB,KAAK,SAAS,CAAC;AAC7C,CAAC;AAED,SAAS,IAAI,CAAC,IAAiB,EAAE,OAAgB;IAC/C,MAAM,OAAO,GAAG,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC;IACjC,MAAM,IAAI,GAAG,WAAK,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAC,CAAC,CAAC;IAC1F,OAAO,gBAAgB,IAAI,CAAC,KAAK,WAAW,CAAC;AAC/C,CAAC;AAED,SAAS,MAAM,CAAC,QAAiB,EAAE,OAAW,EAAE,OAAgB;IAC9D,MAAM,CAAC,GAAG,aAAO,CAAC,UAAU,CAAC,OAAO,EAAE,EAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAC,CAAC,CAAC;IAC3E,IAAI,KAAK,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7D,IAAI,OAAO;QAAE,KAAK,IAAI,uDAAuD,CAAC;IAC9E,OAAO,4BAA4B,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,KAAK,MAAM,CAAC;AACjG,CAAC;AAED,SAAS,OAAO,CAAC,IAAc;IAC7B,MAAM,CAAC,GAAG,WAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,MAAM,KAAK,GAAG,6BAA6B,CAAC;IAC5C,OAAO,0BAA0B,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,KAAK,MAAM,CAAC;AAC/F,CAAC"}
1
+ {"version":3,"file":"display.js","sourceRoot":"","sources":["../../src/test/display.ts"],"names":[],"mappings":"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"}
package/build.zig CHANGED
@@ -1,13 +1,13 @@
1
1
  const std = @import("std");
2
2
  const builtin = @import("builtin");
3
3
 
4
- pub const Options = struct { showdown: ?bool = null, trace: ?bool = null };
4
+ pub const Options = struct { showdown: ?bool = null, log: ?bool = null };
5
5
 
6
6
  pub fn module(b: *std.Build, options: Options) *std.Build.Module {
7
7
  const dirname = comptime std.fs.path.dirname(@src().file) orelse ".";
8
8
  const build_options = b.addOptions();
9
9
  build_options.addOption(?bool, "showdown", options.showdown);
10
- build_options.addOption(?bool, "trace", options.trace);
10
+ build_options.addOption(?bool, "log", options.log);
11
11
  return b.createModule(.{
12
12
  .source_file = .{ .path = dirname ++ "/src/lib/pkmn.zig" },
13
13
  .dependencies = &.{.{ .name = "build_options", .module = build_options.createModule() }},
@@ -27,6 +27,7 @@ pub fn build(b: *std.Build) !void {
27
27
  const dynamic = b.option(bool, "dynamic", "Build a dynamic library") orelse false;
28
28
  const strip = b.option(bool, "strip", "Strip debugging symbols from binary") orelse false;
29
29
  const pic = b.option(bool, "pic", "Force position independent code") orelse false;
30
+ const emit_asm = b.option(bool, "emit-asm", "Output .s (assembly code)") orelse false;
30
31
 
31
32
  const cmd = b.findProgram(&.{"strip"}, &.{}) catch null;
32
33
 
@@ -41,11 +42,11 @@ pub fn build(b: *std.Build) !void {
41
42
 
42
43
  const showdown =
43
44
  b.option(bool, "showdown", "Enable Pokémon Showdown compatibility mode") orelse false;
44
- const trace = b.option(bool, "trace", "Enable trace logs") orelse false;
45
+ const log = b.option(bool, "log", "Enable protocol message logging") orelse false;
45
46
 
46
47
  const options = b.addOptions();
47
48
  options.addOption(?bool, "showdown", showdown);
48
- options.addOption(?bool, "trace", trace);
49
+ options.addOption(?bool, "log", log);
49
50
 
50
51
  const name = if (showdown) "pkmn-showdown" else "pkmn";
51
52
 
@@ -79,7 +80,7 @@ pub fn build(b: *std.Build) !void {
79
80
  //
80
81
  // But ziglang/zig#14647 broke this so we now need to do an install() and then manually
81
82
  // rename the file ourself in install-pkmn-engine
82
- lib.install();
83
+ b.installArtifact(lib);
83
84
  } else if (wasm) {
84
85
  const lib = b.addSharedLibrary(.{
85
86
  .name = name,
@@ -105,7 +106,7 @@ pub fn build(b: *std.Build) !void {
105
106
  sh.addFileSourceArg(.{ .path = out });
106
107
  b.getInstallStep().dependOn(&sh.step);
107
108
  }
108
- lib.install();
109
+ b.installArtifact(lib);
109
110
  } else if (dynamic) {
110
111
  const lib = b.addSharedLibrary(.{
111
112
  .name = name,
@@ -119,7 +120,7 @@ pub fn build(b: *std.Build) !void {
119
120
  lib.addIncludePath("src/include");
120
121
  maybeStrip(b, lib, b.getInstallStep(), strip, cmd);
121
122
  if (pic) lib.force_pic = pic;
122
- lib.install();
123
+ b.installArtifact(lib);
123
124
  c = true;
124
125
  } else {
125
126
  const lib = b.addStaticLibrary(.{
@@ -134,7 +135,8 @@ pub fn build(b: *std.Build) !void {
134
135
  lib.bundle_compiler_rt = true;
135
136
  maybeStrip(b, lib, b.getInstallStep(), strip, cmd);
136
137
  if (pic) lib.force_pic = pic;
137
- lib.install();
138
+ if (emit_asm) lib.emit_asm = .emit;
139
+ b.installArtifact(lib);
138
140
  c = true;
139
141
  }
140
142
 
@@ -183,7 +185,7 @@ pub fn build(b: *std.Build) !void {
183
185
  .general = config,
184
186
  .tool = .{
185
187
  .showdown = showdown,
186
- .trace = trace,
188
+ .log = log,
187
189
  .tests = if (tests.build) tests else null,
188
190
  .exes = &exes,
189
191
  },
@@ -205,7 +207,7 @@ pub fn build(b: *std.Build) !void {
205
207
  const lint_exe =
206
208
  b.addExecutable(.{ .name = "lint", .root_source_file = .{ .path = "src/tools/lint.zig" } });
207
209
  if (tests.build) tests.step.dependOn(&lint_exe.step);
208
- const lint = lint_exe.run();
210
+ const lint = b.addRunArtifact(lint_exe);
209
211
 
210
212
  b.step("benchmark", "Run benchmark code").dependOn(&benchmark.step);
211
213
  b.step("fuzz", "Run fuzz tester").dependOn(&fuzz.step);
@@ -256,11 +258,8 @@ const TestStep = struct {
256
258
  pub fn create(b: *std.Build, options: *std.Build.OptionsStep, config: Config) *TestStep {
257
259
  const coverage = b.option([]const u8, "test-coverage", "Generate test coverage");
258
260
  const test_file = b.option([]const u8, "test-file", "Input file for test");
259
- const test_bin = b.option([]const u8, "test-bin", "Emit test binary to");
260
261
  const test_filter =
261
262
  b.option([]const u8, "test-filter", "Skip tests that do not match filter");
262
- const test_no_exec =
263
- b.option(bool, "test-no-exec", "Compiles test binary without running it") orelse false;
264
263
 
265
264
  const self = b.allocator.create(TestStep) catch @panic("OOM");
266
265
  const step = std.Build.Step.init(.{ .id = .custom, .name = "Run all tests", .owner = b });
@@ -274,21 +273,17 @@ const TestStep = struct {
274
273
  .root_source_file = .{ .path = path },
275
274
  .optimize = config.optimize,
276
275
  .target = config.target,
276
+ .filter = test_filter,
277
277
  });
278
278
  tests.setMainPkgPath("./");
279
- tests.setFilter(test_filter);
280
279
  tests.addOptions("build_options", options);
281
280
  tests.single_threaded = true;
282
281
  maybeStrip(b, tests, &tests.step, config.strip, config.cmd);
283
282
  if (config.pic) tests.force_pic = config.pic;
284
- if (test_bin) |bin| {
285
- tests.name = std.fs.path.basename(bin);
286
- if (std.fs.path.dirname(bin)) |dir| tests.setOutputDir(dir);
287
- }
288
283
  if (coverage) |c| {
289
284
  tests.setExecCmd(&.{ "kcov", "--include-pattern=src/lib", c, null });
290
285
  }
291
- self.step.dependOn(if (test_no_exec) &tests.step else &tests.run().step);
286
+ self.step.dependOn(&b.addRunArtifact(tests).step);
292
287
  }
293
288
  return self;
294
289
  }
@@ -298,7 +293,7 @@ const ToolConfig = struct {
298
293
  general: Config,
299
294
  tool: struct {
300
295
  showdown: bool,
301
- trace: bool,
296
+ log: bool,
302
297
  tests: ?*TestStep,
303
298
  name: ?[]const u8 = null,
304
299
  exes: *std.ArrayList(*std.Build.CompileStep),
@@ -319,14 +314,14 @@ fn tool(b: *std.Build, path: []const u8, config: ToolConfig) *std.Build.RunStep
319
314
  });
320
315
  exe.addModule("pkmn", module(b, .{
321
316
  .showdown = config.tool.showdown,
322
- .trace = config.tool.trace,
317
+ .log = config.tool.log,
323
318
  }));
324
319
  exe.single_threaded = true;
325
320
  if (config.general.pic) exe.force_pic = config.general.pic;
326
321
  if (config.tool.tests) |ts| ts.step.dependOn(&exe.step);
327
322
  config.tool.exes.append(exe) catch @panic("OOM");
328
323
 
329
- const run = exe.run();
324
+ const run = b.addRunArtifact(exe);
330
325
  maybeStrip(b, exe, &run.step, config.general.strip, config.general.cmd);
331
326
  if (b.args) |args| run.addArgs(args);
332
327
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pkmn/engine",
3
- "version": "0.1.0-dev.02b7f810",
3
+ "version": "0.1.0-dev.1da0f17c",
4
4
  "description": "A minimal, complete, Pokémon battle simulation engine optimized for performance",
5
5
  "repository": "github:pkmn/engine",
6
6
  "license": "MIT",
@@ -66,30 +66,30 @@
66
66
  "access": "public"
67
67
  },
68
68
  "dependencies": {
69
- "@pkmn/data": "^0.7.36",
69
+ "@pkmn/data": "^0.7.37",
70
70
  "@pkmn/protocol": "^0.6.11"
71
71
  },
72
72
  "devDependencies": {
73
73
  "@pkmn/eslint-config": "^3.0.0",
74
74
  "@pkmn/img": "^0.2.8",
75
75
  "@pkmn/sets": "^5.0.4",
76
- "@pkmn/sim": "0.7.36",
76
+ "@pkmn/sim": "0.7.37",
77
77
  "@types/html-minifier": "^4.0.2",
78
78
  "@types/jest": "^29.5.0",
79
79
  "@types/minimist": "^1.2.2",
80
80
  "@types/mustache": "^4.2.2",
81
81
  "@types/node": "^18.15.11",
82
- "@vitest/coverage-c8": "^0.29.8",
82
+ "@vitest/coverage-c8": "^0.30.1",
83
83
  "binaryen": "^112.0.0",
84
- "eslint": "^8.37.0",
84
+ "eslint": "^8.38.0",
85
85
  "html-minifier": "^4.0.0",
86
- "json-stringify-pretty-compact": "3.0.0",
86
+ "json-stringify-pretty-compact": "4.0.0",
87
87
  "minimist": "^1.2.8",
88
88
  "mustache": "^4.2.0",
89
89
  "source-map-support": "^0.5.21",
90
90
  "trakr": "^0.2.0",
91
- "typescript": "^5.0.3",
92
- "vitest": "^0.29.8"
91
+ "typescript": "^5.0.4",
92
+ "vitest": "^0.30.1"
93
93
  },
94
94
  "scripts": {
95
95
  "lint": "eslint --cache src --ext ts,js && eslint src/bin/*",
@@ -10,7 +10,7 @@ const path = require('path');
10
10
  const {pipeline} = require('stream/promises');
11
11
  const tty = require('tty');
12
12
 
13
- const ZIG_VERSION = {major: 0, minor: 11, patch: 0, dev: 2168};
13
+ const ZIG_VERSION = {major: 0, minor: 11, patch: 0, dev: 2560};
14
14
  const DEV = ZIG_VERSION.dev ? `-dev.${ZIG_VERSION.dev}` : '';
15
15
  const VERSION = `${ZIG_VERSION.major}.${ZIG_VERSION.minor}.${ZIG_VERSION.patch}${DEV}`;
16
16
  const INDEX = 'https://ziglang.org/download/index.json';
@@ -337,13 +337,13 @@ const downloadImportLib = async () => {
337
337
  if (!options) {
338
338
  const addon = require(copy);
339
339
  if (addon.options.showdown) opts.push('-Dshowdown');
340
- if (addon.options.trace) opts.push('-Dtrace');
340
+ if (addon.options.log) opts.push('-Dlog');
341
341
  }
342
342
  } else if (!options) {
343
343
  const addon = await WebAssembly.instantiate(fs.readFileSync(copy));
344
344
  const values = new Uint8Array(addon.instance.exports.memory.buffer);
345
345
  if (values[addon.instance.exports.SHOWDOWN.value]) opts.push('-Dshowdown');
346
- if (values[addon.instance.exports.TRACE.value]) opts.push('-Dtrace');
346
+ if (values[addon.instance.exports.LOG.value]) opts.push('-Dlog');
347
347
  }
348
348
  const key = `${type} ${opts.sort().join(' ')}`;
349
349
  if (!configs.has(key)) configs.set(key, {type, options: opts});
@@ -21,7 +21,7 @@ fn options(env: c.napi_env) c.napi_value {
21
21
  var object = Object.init(env);
22
22
  const properties = [_]c.napi_property_descriptor{
23
23
  Property.init("showdown", .{ .value = Boolean.init(env, pkmn.options.showdown) }),
24
- Property.init("trace", .{ .value = Boolean.init(env, pkmn.options.trace) }),
24
+ Property.init("log", .{ .value = Boolean.init(env, pkmn.options.log) }),
25
25
  };
26
26
  assert(c.napi_define_properties(env, object, properties.len, &properties) == c.napi_ok);
27
27
  return object;
@@ -34,11 +34,11 @@ fn bindings(env: c.napi_env) c.napi_value {
34
34
  }
35
35
 
36
36
  fn bind(env: c.napi_env, gen: anytype) c.napi_value {
37
- const options_size = @intCast(u32, gen.OPTIONS_SIZE);
37
+ const choices_size = @intCast(u32, gen.CHOICES_SIZE);
38
38
  const logs_size = @intCast(u32, gen.LOGS_SIZE);
39
39
  var object = Object.init(env);
40
40
  const properties = [_]c.napi_property_descriptor{
41
- Property.init("OPTIONS_SIZE", .{ .value = Number.init(env, options_size) }),
41
+ Property.init("CHOICES_SIZE", .{ .value = Number.init(env, choices_size) }),
42
42
  Property.init("LOGS_SIZE", .{ .value = Number.init(env, logs_size) }),
43
43
  Property.init("update", .{ .method = update(gen) }),
44
44
  Property.init("choices", .{ .method = choices(gen) }),
@@ -108,10 +108,10 @@ fn choices(gen: anytype) c.napi_callback {
108
108
  const request = @intToEnum(pkmn.Choice.Type, Number.get(env, argv[2], u8));
109
109
 
110
110
  assert(c.napi_get_arraybuffer_info(env, argv[3], &data, &len) == c.napi_ok);
111
- assert(len == gen.OPTIONS_SIZE);
111
+ assert(len == gen.CHOICES_SIZE);
112
112
  assert(data != null);
113
113
 
114
- var out = @ptrCast([*]pkmn.Choice, data.?)[0..gen.OPTIONS_SIZE];
114
+ var out = @ptrCast([*]pkmn.Choice, data.?)[0..gen.CHOICES_SIZE];
115
115
  const n = battle.choices(player, request, out);
116
116
  return Number.init(env, @bitCast(u8, n));
117
117
  }
@@ -2,9 +2,9 @@ const std = @import("std");
2
2
  const pkmn = @import("../pkmn.zig");
3
3
 
4
4
  export const SHOWDOWN = pkmn.options.showdown;
5
- export const TRACE = pkmn.options.trace;
5
+ export const LOG = pkmn.options.log;
6
6
 
7
- export const GEN1_OPTIONS_SIZE =
8
- std.math.ceilPowerOfTwo(u32, @intCast(u32, pkmn.gen1.OPTIONS_SIZE)) catch unreachable;
7
+ export const GEN1_CHOICES_SIZE =
8
+ std.math.ceilPowerOfTwo(u32, @intCast(u32, pkmn.gen1.CHOICES_SIZE)) catch unreachable;
9
9
  export const GEN1_LOGS_SIZE =
10
10
  std.math.ceilPowerOfTwo(u32, @intCast(u32, pkmn.gen1.LOGS_SIZE)) catch unreachable;