@pkmn/sim 0.9.25 → 0.9.27

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.
Files changed (123) hide show
  1. package/build/cjs/config/formats.js +142 -172
  2. package/build/cjs/config/formats.js.map +1 -1
  3. package/build/cjs/data/abilities.js +17 -32
  4. package/build/cjs/data/abilities.js.map +1 -1
  5. package/build/cjs/data/aliases.js +2 -2
  6. package/build/cjs/data/aliases.js.map +1 -1
  7. package/build/cjs/data/conditions.js +3 -2
  8. package/build/cjs/data/conditions.js.map +1 -1
  9. package/build/cjs/data/formats-data.js +67 -65
  10. package/build/cjs/data/formats-data.js.map +1 -1
  11. package/build/cjs/data/mods/gen1/formats-data.js +17 -17
  12. package/build/cjs/data/mods/gen1/formats-data.js.map +1 -1
  13. package/build/cjs/data/mods/gen2/formats-data.js +8 -8
  14. package/build/cjs/data/mods/gen2/formats-data.js.map +1 -1
  15. package/build/cjs/data/mods/gen2/moves.js +1 -1
  16. package/build/cjs/data/mods/gen2/moves.js.map +1 -1
  17. package/build/cjs/data/mods/gen3/formats-data.js +11 -11
  18. package/build/cjs/data/mods/gen3/formats-data.js.map +1 -1
  19. package/build/cjs/data/mods/gen4/formats-data.js +1 -1
  20. package/build/cjs/data/mods/gen4/formats-data.js.map +1 -1
  21. package/build/cjs/data/mods/gen4/moves.js +57 -0
  22. package/build/cjs/data/mods/gen4/moves.js.map +1 -1
  23. package/build/cjs/data/mods/gen5/conditions.js +1 -2
  24. package/build/cjs/data/mods/gen5/conditions.js.map +1 -1
  25. package/build/cjs/data/mods/gen5/formats-data.js +1 -1
  26. package/build/cjs/data/mods/gen5/formats-data.js.map +1 -1
  27. package/build/cjs/data/mods/gen8/abilities.js +0 -2
  28. package/build/cjs/data/mods/gen8/abilities.js.map +1 -1
  29. package/build/cjs/data/moves.js +11 -17
  30. package/build/cjs/data/moves.js.map +1 -1
  31. package/build/cjs/data/rulesets.js +1 -1
  32. package/build/cjs/data/rulesets.js.map +1 -1
  33. package/build/cjs/data/text/items.js +1 -1
  34. package/build/cjs/data/text/items.js.map +1 -1
  35. package/build/cjs/data/text/moves.js +3 -0
  36. package/build/cjs/data/text/moves.js.map +1 -1
  37. package/build/cjs/lib/utils.d.ts +6 -0
  38. package/build/cjs/lib/utils.js +20 -1
  39. package/build/cjs/lib/utils.js.map +1 -1
  40. package/build/cjs/sim/battle-actions.js +5 -3
  41. package/build/cjs/sim/battle-actions.js.map +1 -1
  42. package/build/cjs/sim/battle-stream.js +3 -3
  43. package/build/cjs/sim/battle-stream.js.map +1 -1
  44. package/build/cjs/sim/battle.d.ts +1 -1
  45. package/build/cjs/sim/battle.js +14 -19
  46. package/build/cjs/sim/battle.js.map +1 -1
  47. package/build/cjs/sim/pokemon.js +1 -1
  48. package/build/cjs/sim/pokemon.js.map +1 -1
  49. package/build/cjs/sim/prng.d.ts +54 -18
  50. package/build/cjs/sim/prng.js +120 -38
  51. package/build/cjs/sim/prng.js.map +1 -1
  52. package/build/cjs/sim/state.js +1 -1
  53. package/build/cjs/sim/state.js.map +1 -1
  54. package/build/cjs/sim/team-validator.js +5 -3
  55. package/build/cjs/sim/team-validator.js.map +1 -1
  56. package/build/cjs/sim/tools/exhaustive-runner.js +8 -8
  57. package/build/cjs/sim/tools/exhaustive-runner.js.map +1 -1
  58. package/build/cjs/sim/tools/random-player-ai.js +4 -4
  59. package/build/cjs/sim/tools/random-player-ai.js.map +1 -1
  60. package/build/cjs/sim/tools/runner.js +5 -5
  61. package/build/cjs/sim/tools/runner.js.map +1 -1
  62. package/build/esm/config/formats.mjs +142 -172
  63. package/build/esm/config/formats.mjs.map +1 -1
  64. package/build/esm/data/abilities.mjs +17 -32
  65. package/build/esm/data/abilities.mjs.map +1 -1
  66. package/build/esm/data/aliases.mjs +2 -2
  67. package/build/esm/data/aliases.mjs.map +1 -1
  68. package/build/esm/data/conditions.mjs +3 -2
  69. package/build/esm/data/conditions.mjs.map +1 -1
  70. package/build/esm/data/formats-data.mjs +67 -65
  71. package/build/esm/data/formats-data.mjs.map +1 -1
  72. package/build/esm/data/mods/gen1/formats-data.mjs +17 -17
  73. package/build/esm/data/mods/gen1/formats-data.mjs.map +1 -1
  74. package/build/esm/data/mods/gen2/formats-data.mjs +8 -8
  75. package/build/esm/data/mods/gen2/formats-data.mjs.map +1 -1
  76. package/build/esm/data/mods/gen2/moves.mjs +1 -1
  77. package/build/esm/data/mods/gen2/moves.mjs.map +1 -1
  78. package/build/esm/data/mods/gen3/formats-data.mjs +11 -11
  79. package/build/esm/data/mods/gen3/formats-data.mjs.map +1 -1
  80. package/build/esm/data/mods/gen4/formats-data.mjs +1 -1
  81. package/build/esm/data/mods/gen4/formats-data.mjs.map +1 -1
  82. package/build/esm/data/mods/gen4/moves.mjs +57 -0
  83. package/build/esm/data/mods/gen4/moves.mjs.map +1 -1
  84. package/build/esm/data/mods/gen5/conditions.mjs +1 -2
  85. package/build/esm/data/mods/gen5/conditions.mjs.map +1 -1
  86. package/build/esm/data/mods/gen5/formats-data.mjs +1 -1
  87. package/build/esm/data/mods/gen5/formats-data.mjs.map +1 -1
  88. package/build/esm/data/mods/gen8/abilities.mjs +0 -2
  89. package/build/esm/data/mods/gen8/abilities.mjs.map +1 -1
  90. package/build/esm/data/moves.mjs +11 -17
  91. package/build/esm/data/moves.mjs.map +1 -1
  92. package/build/esm/data/rulesets.mjs +1 -1
  93. package/build/esm/data/rulesets.mjs.map +1 -1
  94. package/build/esm/data/text/items.mjs +1 -1
  95. package/build/esm/data/text/items.mjs.map +1 -1
  96. package/build/esm/data/text/moves.mjs +3 -0
  97. package/build/esm/data/text/moves.mjs.map +1 -1
  98. package/build/esm/lib/utils.d.mts +6 -0
  99. package/build/esm/lib/utils.mjs +17 -1
  100. package/build/esm/lib/utils.mjs.map +1 -1
  101. package/build/esm/sim/battle-actions.mjs +5 -3
  102. package/build/esm/sim/battle-actions.mjs.map +1 -1
  103. package/build/esm/sim/battle-stream.mjs +3 -3
  104. package/build/esm/sim/battle-stream.mjs.map +1 -1
  105. package/build/esm/sim/battle.d.mts +1 -1
  106. package/build/esm/sim/battle.mjs +14 -19
  107. package/build/esm/sim/battle.mjs.map +1 -1
  108. package/build/esm/sim/pokemon.mjs +1 -1
  109. package/build/esm/sim/pokemon.mjs.map +1 -1
  110. package/build/esm/sim/prng.d.mts +54 -18
  111. package/build/esm/sim/prng.mjs +116 -36
  112. package/build/esm/sim/prng.mjs.map +1 -1
  113. package/build/esm/sim/state.mjs +1 -1
  114. package/build/esm/sim/state.mjs.map +1 -1
  115. package/build/esm/sim/team-validator.mjs +5 -3
  116. package/build/esm/sim/team-validator.mjs.map +1 -1
  117. package/build/esm/sim/tools/exhaustive-runner.mjs +8 -8
  118. package/build/esm/sim/tools/exhaustive-runner.mjs.map +1 -1
  119. package/build/esm/sim/tools/random-player-ai.mjs +4 -4
  120. package/build/esm/sim/tools/random-player-ai.mjs.map +1 -1
  121. package/build/esm/sim/tools/runner.mjs +5 -5
  122. package/build/esm/sim/tools/runner.mjs.map +1 -1
  123. package/package.json +4 -3
@@ -13,26 +13,36 @@
13
13
  * @license MIT license
14
14
  */
15
15
  Object.defineProperty(exports, "__esModule", { value: true });
16
- exports.PRNG = void 0;
16
+ exports.Gen5RNG = exports.SodiumRNG = exports.PRNG = void 0;
17
+ const ts_chacha20_1 = require("ts-chacha20");
18
+ const utils_1 = require("../lib/utils");
17
19
  /**
18
- * A PRNG intended to emulate the on-cartridge PRNG for Gen 5 with a 64-bit
19
- * initial seed.
20
+ * High-level PRNG API, for getting random numbers.
21
+ *
22
+ * Chooses the RNG implementation based on the seed passed to the constructor.
23
+ * Seeds starting with 'sodium' use sodium. Other seeds use the Gen 5 RNG.
24
+ * If a seed isn't given, defaults to sodium.
25
+ *
26
+ * The actual randomness source is in this.rng.
20
27
  */
21
28
  class PRNG {
22
29
  /** Creates a new source of randomness for the given seed. */
23
- constructor(seed = null) {
30
+ constructor(seed = null, initialSeed) {
24
31
  if (!seed)
25
32
  seed = PRNG.generateSeed();
26
- this.initialSeed = seed.slice(); // make a copy
27
- this.seed = seed.slice();
33
+ this.startingSeed = initialSeed || [...seed]; // make a copy
34
+ this.setSeed(seed);
28
35
  }
29
- /**
30
- * Getter to the initial seed.
31
- *
32
- * This should be considered a hack and is only here for backwards compatibility.
33
- */
34
- get startingSeed() {
35
- return this.initialSeed;
36
+ setSeed(seed) {
37
+ if (seed[0] === 'sodium') {
38
+ this.rng = new SodiumRNG(seed);
39
+ }
40
+ else {
41
+ this.rng = new Gen5RNG(seed);
42
+ }
43
+ }
44
+ getSeed() {
45
+ return this.rng.getSeed();
36
46
  }
37
47
  /**
38
48
  * Creates a clone of the current PRNG.
@@ -40,7 +50,7 @@ class PRNG {
40
50
  * The new PRNG will have its initial seed set to the seed of the current instance.
41
51
  */
42
52
  clone() {
43
- return new PRNG(this.seed);
53
+ return new PRNG(this.rng.getSeed(), this.startingSeed);
44
54
  }
45
55
  /**
46
56
  * Retrieves the next random number in the sequence.
@@ -50,23 +60,21 @@ class PRNG {
50
60
  * - random(m, n) returns an integer in [m, n)
51
61
  * m and n are converted to integers via Math.floor. If the result is NaN, they are ignored.
52
62
  */
53
- next(from, to) {
54
- this.seed = this.nextFrame(this.seed); // Advance the RNG
55
- let result = (this.seed[0] << 16 >>> 0) + this.seed[1]; // Use the upper 32 bits
63
+ random(from, to) {
64
+ const result = this.rng.next();
56
65
  if (from)
57
66
  from = Math.floor(from);
58
67
  if (to)
59
68
  to = Math.floor(to);
60
69
  if (from === undefined) {
61
- result = result / 0x100000000;
70
+ return result / 2 ** 32;
62
71
  }
63
72
  else if (!to) {
64
- result = Math.floor(result * from / 0x100000000);
73
+ return Math.floor(result * from / 2 ** 32);
65
74
  }
66
75
  else {
67
- result = Math.floor(result * (to - from) / 0x100000000) + from;
76
+ return Math.floor(result * (to - from) / 2 ** 32) + from;
68
77
  }
69
- return result;
70
78
  }
71
79
  /**
72
80
  * Flip a coin (two-sided die), returning true or false.
@@ -79,7 +87,7 @@ class PRNG {
79
87
  * The denominator must be a positive integer (`> 0`).
80
88
  */
81
89
  randomChance(numerator, denominator) {
82
- return this.next(denominator) < numerator;
90
+ return this.random(denominator) < numerator;
83
91
  }
84
92
  /**
85
93
  * Return a random item from the given array.
@@ -98,7 +106,7 @@ class PRNG {
98
106
  if (items.length === 0) {
99
107
  throw new RangeError(`Cannot sample an empty array`);
100
108
  }
101
- const index = this.next(items.length);
109
+ const index = this.random(items.length);
102
110
  const item = items[index];
103
111
  if (item === undefined && !Object.prototype.hasOwnProperty.call(items, index)) {
104
112
  throw new RangeError(`Cannot sample a sparse array`);
@@ -113,19 +121,84 @@ class PRNG {
113
121
  */
114
122
  shuffle(items, start = 0, end = items.length) {
115
123
  while (start < end - 1) {
116
- const nextIndex = this.next(start, end);
124
+ const nextIndex = this.random(start, end);
117
125
  if (start !== nextIndex) {
118
126
  [items[start], items[nextIndex]] = [items[nextIndex], items[start]];
119
127
  }
120
128
  start++;
121
129
  }
122
130
  }
131
+ static generateSeed() {
132
+ return [
133
+ 'sodium',
134
+ // 32 bits each, 128 bits total (16 bytes)
135
+ Math.trunc(Math.random() * 2 ** 32).toString(16).padStart(8, '0') +
136
+ Math.trunc(Math.random() * 2 ** 32).toString(16).padStart(8, '0') +
137
+ Math.trunc(Math.random() * 2 ** 32).toString(16).padStart(8, '0') +
138
+ Math.trunc(Math.random() * 2 ** 32).toString(16).padStart(8, '0'),
139
+ ];
140
+ }
141
+ }
142
+ exports.PRNG = PRNG;
143
+ /**
144
+ * This is a drop-in replacement for libsodium's randombytes_buf_deterministic,
145
+ * but it's implemented with ts-chacha20 instead, for a smaller dependency that
146
+ * doesn't use NodeJS native modules, for better portability.
147
+ */
148
+ class SodiumRNG {
149
+ /** Creates a new source of randomness for the given seed. */
150
+ constructor(seed) {
151
+ this.setSeed(seed);
152
+ }
153
+ setSeed(seed) {
154
+ // randombytes_buf_deterministic requires 32 bytes, but
155
+ // generateSeed generates 16 bytes, so the last 16 bytes will be 0
156
+ // when starting out. This shouldn't cause any problems.
157
+ const seedBuf = new Uint8Array(32);
158
+ utils_1.Utils.bufWriteHex(seedBuf, seed[1].padEnd(64, '0'));
159
+ this.seed = seedBuf;
160
+ }
161
+ getSeed() {
162
+ return ['sodium', utils_1.Utils.bufReadHex(this.seed)];
163
+ }
164
+ next() {
165
+ const zeroBuf = new Uint8Array(36);
166
+ // tested to do the exact same thing as
167
+ // sodium.randombytes_buf_deterministic(buf, this.seed);
168
+ const buf = new ts_chacha20_1.Chacha20(this.seed, SodiumRNG.NONCE).encrypt(zeroBuf);
169
+ // use the first 32 bytes for the next seed, and the next 4 bytes for the output
170
+ this.seed = buf.slice(0, 32);
171
+ // reading big-endian
172
+ return buf.slice(32, 36).reduce((a, b) => a * 256 + b);
173
+ // alternative, probably slower (TODO: benchmark)
174
+ // return parseInt(Utils.bufReadHex(buf, 32, 36), 16);
175
+ }
176
+ }
177
+ exports.SodiumRNG = SodiumRNG;
178
+ // nonce chosen to be compatible with libsodium's randombytes_buf_deterministic
179
+ // https://github.com/jedisct1/libsodium/blob/ce07d6c82c0e6c75031cf627913bf4f9d3f1e754/src/libsodium/randombytes/randombytes.c#L178
180
+ SodiumRNG.NONCE = Uint8Array.from([..."LibsodiumDRG"].map(c => c.charCodeAt(0)));
181
+ /**
182
+ * A PRNG intended to emulate the on-cartridge PRNG for Gen 5 with a 64-bit
183
+ * initial seed.
184
+ */
185
+ class Gen5RNG {
186
+ /** Creates a new source of randomness for the given seed. */
187
+ constructor(seed = null) {
188
+ this.seed = [...seed || Gen5RNG.generateSeed()];
189
+ }
190
+ getSeed() {
191
+ return this.seed;
192
+ }
193
+ next() {
194
+ this.seed = this.nextFrame(this.seed); // Advance the RNG
195
+ return (this.seed[0] << 16 >>> 0) + this.seed[1]; // Use the upper 32 bits
196
+ }
123
197
  /**
124
198
  * Calculates `a * b + c` (with 64-bit 2's complement integers)
125
- *
126
- * If you've done long multiplication, this is the same thing.
127
199
  */
128
200
  multiplyAdd(a, b, c) {
201
+ // If you've done long multiplication, this is the same thing.
129
202
  const out = [0, 0, 0, 0];
130
203
  let carry = 0;
131
204
  for (let outIndex = 3; outIndex >= 0; outIndex--) {
@@ -154,33 +227,42 @@ class PRNG {
154
227
  const a = [0x5D58, 0x8B65, 0x6C07, 0x8965];
155
228
  const c = [0, 0, 0x26, 0x9EC3];
156
229
  for (let i = 0; i < framesToAdvance; i++) {
230
+ // seed = seed * a + c
157
231
  seed = this.multiplyAdd(seed, a, c);
158
232
  }
159
233
  return seed;
160
234
  }
161
235
  static generateSeed() {
162
236
  return [
163
- Math.floor(Math.random() * 0x10000),
164
- Math.floor(Math.random() * 0x10000),
165
- Math.floor(Math.random() * 0x10000),
166
- Math.floor(Math.random() * 0x10000),
237
+ Math.trunc(Math.random() * 2 ** 16),
238
+ Math.trunc(Math.random() * 2 ** 16),
239
+ Math.trunc(Math.random() * 2 ** 16),
240
+ Math.trunc(Math.random() * 2 ** 16),
167
241
  ];
168
242
  }
169
243
  }
170
- exports.PRNG = PRNG;
171
- // The following commented-out function is designed to emulate the on-cartridge
244
+ exports.Gen5RNG = Gen5RNG;
245
+ // The following commented-out class is designed to emulate the on-cartridge
172
246
  // PRNG for Gens 3 and 4, as described in
173
247
  // https://www.smogon.com/ingame/rng/pid_iv_creation#pokemon_random_number_generator
174
248
  // This RNG uses a 32-bit initial seed
175
249
  // m and n are converted to integers via Math.floor. If the result is NaN, they
176
250
  // are ignored.
177
251
  /*
178
- random(m: number, n: number) {
179
- this.seed = (this.seed * 0x41C64E6D + 0x6073) >>> 0; // truncate the result to the last 32 bits
180
- let result = this.seed >>> 16; // the first 16 bits of the seed are the random value
181
- m = Math.floor(m)
182
- n = Math.floor(n)
183
- return (m ? (n ? (result % (n - m)) + m : result % m) : result / 0x10000)
252
+ export type Gen3RNGSeed = ['gen3', number];
253
+ export class Gen3RNG implements RNG {
254
+ seed: number;
255
+ constructor(seed: Gen3RNGSeed | null = null) {
256
+ this.seed = seed ? seed[1] : Math.trunc(Math.random() * 2 ** 32);
257
+ }
258
+ getSeed() {
259
+ return ['gen3', this.seed];
260
+ }
261
+ next(): number {
262
+ this.seed = this.seed * 0x41C64E6D + 0x6073) >>> 0; // truncate the result to the last 32 bits
263
+ const val = this.seed >>> 16; // the first 16 bits of the seed are the random value
264
+ return val << 16 >>> 0; // PRNG#random expects a 32-bit number and will divide accordingly
265
+ }
184
266
  }
185
267
  */
186
268
  //# sourceMappingURL=prng.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"prng.js","sourceRoot":"","sources":["../../../sim/prng.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prng.js","sourceRoot":"","sources":["../../../sim/prng.ts"],"names":[],"mappings":"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"}
@@ -49,7 +49,7 @@ exports.State = new class {
49
49
  for (const [i, side] of battle.sides.entries()) {
50
50
  state.sides[i] = this.serializeSide(side);
51
51
  }
52
- state.prng = battle.prng.seed;
52
+ state.prng = battle.prng.getSeed();
53
53
  state.hints = Array.from(battle.hints);
54
54
  // We treat log specially because we only set it back on Battle after everything
55
55
  // else has been deserialized to avoid anything accidentally `add`-ing to it.
@@ -1 +1 @@
1
- {"version":3,"file":"state.js","sourceRoot":"","sources":["../../../sim/state.ts"],"names":[],"mappings":";;;AAUA;;;;;;;;;GASG;AAEH,qCAAgC;AAChC,+BAA0B;AAC1B,mCAA8B;AAC9B,uCAAkC;AAClC,iCAA4B;AAC5B,iCAAoC;AAEpC,6EAA6E;AAC7E,2EAA2E;AAC3E,uEAAuE;AACvE,sEAAsE;AACtE,wEAAwE;AACxE,sDAAsD;AACtD,MAAM,SAAS,GAAG,0BAA0B,CAAC;AAS7C,8EAA8E;AAC9E,6EAA6E;AAC7E,2EAA2E;AAC3E,oEAAoE;AAEpE,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC;IACtB,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe;IAC5E,gBAAgB,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO;IACtF,cAAc,EAAE,OAAO,EAAE,SAAS;CAClC,CAAC,CAAC;AACH,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;AACxC,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC;AAC/E,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC;IACvB,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI;IACjD,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,eAAe;CACjD,CAAC,CAAC;AACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;AACtC,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAEzB,QAAA,KAAK,GAAG,IAAI;IAQxB,eAAe,CAAC,MAAc;QAC7B,MAAM,KAAK,GAA2B,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAC7E,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAChD,KAAK,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC7C,KAAK,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;YAChD,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAC3C,CAAC;QACD,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;QAC9B,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvC,gFAAgF;QAChF,6EAA6E;QAC7E,KAAK,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;QACvB,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAChE,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QAClC,OAAO,KAAK,CAAC;IACd,CAAC;IAED,uEAAuE;IACvE,uEAAuE;IACvE,wEAAwE;IACxE,wEAAwE;IACxE,wEAAwE;IACxE,sBAAsB;IACtB,iBAAiB,CAAC,UAA2C;QAC5D,MAAM,KAAK,GACV,OAAO,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;QACtE,MAAM,OAAO,GAAG;YACf,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,IAAI,EAAE,KAAK,CAAC,QAAQ;YACpB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,KAAK,EAAE,KAAK,CAAC,SAAS;YACtB,gEAAgE;YAChE,iEAAiE;YACjE,0DAA0D;YAC1D,YAAY,EAAE,IAAI;YAClB,aAAa,EAAE,KAAK,CAAC,aAAa;SAClC,CAAC;QACF,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAChC,oEAAoE;YACpE,sEAAsE;YACtE,mEAAmE;YACnE,uEAAuE;YACvE,iEAAiE;YACjE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC9D,+BAA+B;YAC/B,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG;gBAClB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;aAC9D,CAAC;QACH,CAAC;QACD,0EAA0E;QAC1E,2EAA2E;QAC3E,qEAAqE;QACrE,4BAA4B;QAC5B,MAAM,MAAM,GAAG,IAAI,eAAM,CAAC,OAAO,CAAC,CAAC;QACnC,2EAA2E;QAC3E,gFAAgF;QAChF,8EAA8E;QAC9E,4EAA4E;QAC5E,cAAc;QACd,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;YAC5C,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC7B,MAAM,OAAO,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC/C,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACxD,KAAK,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;gBACvC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC5C,CAAC;YACD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACxB,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAChD,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QACjD,IAAI,cAAc,GAAG,KAAK,CAAC;QAC3B,KAAK,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;YAC/C,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5C,cAAc,GAAG,cAAc,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,CAAC;QACrE,CAAC;QACD,8EAA8E;QAC9E,kFAAkF;QAClF,gFAAgF;QAChF,8EAA8E;QAC9E,sFAAsF;QACtF,IAAI,cAAc,EAAE,CAAC;YACpB,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YACzD,KAAK,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;gBAC/C,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAClF,CAAC;QACF,CAAC;QACD,MAAM,CAAC,IAAI,GAAG,IAAI,WAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC5D,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC;QACzB,MAAc,CAAC,KAAK,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAc,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;QAChC,OAAO,MAAM,CAAC;IACf,CAAC;IAED,yEAAyE;IACzE,oFAAoF;IACpF,0DAA0D;IAC1D,SAAS,CAAC,KAAgB;QACzB,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACzC,OAAO,KAAK,CAAC;IACd,CAAC;IAED,YAAY,CAAC,GAA8B;QAC1C,IAAI,CAAC,GAAG;YAAE,OAAO,GAAG,CAAC;QACrB,MAAM,UAAU,GAAG,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAC/E,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC1C,OAAO,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IACvE,CAAC;IAED,cAAc,CAAC,KAAY;QAC1B,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACnD,CAAC;IAED,gBAAgB,CAAC,KAA4B,EAAE,KAAY;QAC1D,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACrD,CAAC;IAED,aAAa,CAAC,IAAU;QACvB,MAAM,KAAK,GAAyB,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5E,KAAK,CAAC,OAAO,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,IAAI,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC5C,KAAK,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;YACnD,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;YAClD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC9C,CAAC;QACD,2EAA2E;QAC3E,6EAA6E;QAC7E,4EAA4E;QAC5E,2EAA2E;QAC3E,2EAA2E;QAC3E,0EAA0E;QAC1E,6EAA6E;QAC7E,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACnD,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9D,2EAA2E;QAC3E,8EAA8E;QAC9E,sEAAsE;QACtE,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI;YAAE,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC;QAC5D,OAAO,KAAK,CAAC;IACd,CAAC;IAED,eAAe,CAAC,KAA2B,EAAE,IAAU;QACtD,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACjD,KAAK,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;YACpD,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QACnD,CAAC;QACD,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAChE,CAAC;IAED,gBAAgB,CAAC,OAAgB;QAChC,MAAM,KAAK,GAA4B,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QACxF,KAAK,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;QACxB,yFAAyF;QACzF,2FAA2F;QAC3F,IAAI,OAAO,CAAC,aAAa,CAAC,MAAM,KAAK,OAAO,CAAC,SAAS,CAAC,MAAM;YAC5D,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACvE,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QACrF,CAAC;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IAED,kBAAkB,CAAC,KAA8B,EAAE,OAAgB;QAClE,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QACzD,OAAe,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;QACjC,8FAA8F;QAC9F,uFAAuF;QACvF,qCAAqC;QACrC,IAAI,aAAa,CAAC;QAClB,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;YACzB,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;YAC9E,KAAK,MAAM,CAAC,CAAC,EAAE,YAAY,CAAC,IAAI,aAAa,CAAC,OAAO,EAAE,EAAE,CAAC;gBACzD,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gBACtC,IAAI,QAAQ,CAAC,EAAE,KAAK,YAAY,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;oBAC1D,aAAa,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;gBAC7B,CAAC;YACF,CAAC;QACF,CAAC;aAAM,CAAC;YACP,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QAC3C,CAAC;QACA,OAAe,CAAC,aAAa,GAAG,aAAa,CAAC;QAC/C,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS;YAAE,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;IAChE,CAAC;IAED,eAAe,CAAC,MAAc,EAAE,MAAc;QAC7C,MAAM,KAAK,GAA2B,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAC7E,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC/C,OAAO,KAAK,CAAC;IACd,CAAC;IAED,iBAAiB,CAAC,KAA6B,EAAE,MAAc,EAAE,MAAc;QAC9E,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAChD,MAAM,CAAC,SAAS,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC7C,CAAC;IAED,2FAA2F;IAC3F,2FAA2F;IAC3F,sFAAsF;IACtF,YAAY,CAAC,GAAc;QAC1B,OAAO,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9F,CAAC;IAED,wFAAwF;IACxF,qFAAqF;IACrF,oFAAoF;IACpF,uFAAuF;IACvF,sFAAsF;IACtF,6EAA6E;IAC7E,qFAAqF;IACrF,qFAAqF;IACrF,eAAe;IACf,mBAAmB,CAAC,IAAgB,EAAE,MAAc;QACnD,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3C,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;QACvC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACjD,gFAAgF;YAChF,uFAAuF;YACvF,wFAAwF;YACxF,+BAA+B;YAC/B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK;gBAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACrE,CAAC;QACD,MAAM,KAAK,GAA+B,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAC7E,KAAK,CAAC,IAAI,GAAG,SAAS,IAAI,CAAC,EAAE,GAAG,CAAC;QACjC,OAAO,KAAK,CAAC;IACd,CAAC;IAED,qBAAqB,CAAC,KAAiC,EAAE,MAAc;QACtE,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAU,CAAC,CAAC;QACjF,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;QACnD,OAAO,IAAI,CAAC;IACb,CAAC;IAED,iBAAiB,CAAC,GAAY,EAAE,MAAc;QAC7C,QAAQ,OAAO,GAAG,EAAE,CAAC;YACrB,KAAK,UAAU;gBACd,OAAO,SAAS,CAAC,CAAC,kBAAkB;YACrC,KAAK,WAAW,CAAC;YACjB,KAAK,SAAS,CAAC;YACf,KAAK,QAAQ,CAAC;YACd,KAAK,QAAQ;gBACZ,OAAO,GAAG,CAAC;YACZ,KAAK,QAAQ;gBACZ,IAAI,GAAG,KAAK,IAAI;oBAAE,OAAO,IAAI,CAAC;gBAC9B,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;oBACxB,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;oBAClC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;wBACpC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;oBAC5C,CAAC;oBACD,OAAO,GAAG,CAAC;gBACZ,CAAC;gBAED,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;oBAAE,OAAO,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;gBACzE,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;oBAAE,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAClD,IAAI,GAAG,CAAC,WAAW,KAAK,MAAM,EAAE,CAAC;oBAChC,sEAAsE;oBACtE,uEAAuE;oBACvE,sEAAsE;oBACtE,mEAAmE;oBACnE,wEAAwE;oBACxE,8DAA8D;oBAC9D,MAAM,IAAI,SAAS,CAAC,oBAAoB,GAAG,CAAC,WAAW,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC,CAAC;gBACzE,CAAC;gBAED,MAAM,CAAC,GAAQ,EAAE,CAAC;gBAClB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;oBAChD,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;gBAChD,CAAC;gBACD,OAAO,CAAC,CAAC;YACV;gBACC,MAAM,IAAI,SAAS,CAAC,0BAA0B,OAAO,GAAG,MAAM,GAAG,EAAE,CAAC,CAAC;QACtE,CAAC;IACF,CAAC;IAED,mBAAmB,CAAC,GAAY,EAAE,MAAc;QAC/C,QAAQ,OAAO,GAAG,EAAE,CAAC;YACrB,KAAK,WAAW,CAAC;YACjB,KAAK,SAAS,CAAC;YACf,KAAK,QAAQ;gBACZ,OAAO,GAAG,CAAC;YACZ,KAAK,QAAQ;gBACZ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,GAAG,CAAC;YACzC,KAAK,QAAQ;gBACZ,IAAI,GAAG,KAAK,IAAI;oBAAE,OAAO,IAAI,CAAC;gBAC9B,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;oBACxB,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;oBAClC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;wBACpC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;oBAC9C,CAAC;oBACD,OAAO,GAAG,CAAC;gBACZ,CAAC;gBAED,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;oBAAE,OAAO,IAAI,CAAC,qBAAqB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;gBAE3E,MAAM,CAAC,GAAQ,EAAE,CAAC;gBAClB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;oBAChD,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;gBAClD,CAAC;gBACD,OAAO,CAAC,CAAC;YACV,KAAK,UAAU,CAAC,CAAC,UAAU;YAC3B;gBACC,MAAM,IAAI,SAAS,CAAC,0BAA0B,OAAO,GAAG,MAAM,GAAG,EAAE,CAAC,CAAC;QACtE,CAAC;IACF,CAAC;IAED,WAAW,CAAC,GAAW;QACtB,sFAAsF;QACtF,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACrB,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,CAAC;gBACxB,eAAM,EAAE,aAAK,EAAE,WAAI,EAAE,iBAAO,EAAE,SAAG,CAAC,SAAS;gBAC3C,SAAG,CAAC,OAAO,EAAE,SAAG,CAAC,IAAI,EAAE,SAAG,CAAC,IAAI,EAAE,SAAG,CAAC,OAAO;aAC5C,CAAC,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,GAAc;QACnB,oFAAoF;QACpF,8EAA8E;QAC9E,MAAM,EAAE,GAAG,GAAG,YAAY,iBAAO,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC;QAC7F,OAAO,IAAI,GAAG,CAAC,WAAW,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;IACzD,CAAC;IAED,OAAO,CAAC,GAAW,EAAE,MAAc;QAClC,uEAAuE;QACvE,2EAA2E;QAC3E,wEAAwE;QACxE,8EAA8E;QAC9E,4EAA4E;QAC5E,0EAA0E;QAC1E,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAO,SAAS,CAAC;QAEjE,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACvC,kFAAkF;QAClF,IAAI,GAAG,KAAK,QAAQ;YAAE,OAAO,MAAM,CAAC;QACpC,IAAI,GAAG,KAAK,OAAO;YAAE,OAAO,MAAM,CAAC,KAAK,CAAC;QAEzC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAClC,QAAQ,IAAI,EAAE,CAAC;YACf,KAAK,MAAM,CAAC,CAAC,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACpD,KAAK,SAAS,CAAC,CAAC,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACzF,KAAK,SAAS,CAAC,CAAC,OAAO,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACpD,KAAK,MAAM,CAAC,CAAC,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC7C,KAAK,MAAM,CAAC,CAAC,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC7C,KAAK,WAAW,CAAC,CAAC,OAAO,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACvD,KAAK,SAAS,CAAC,CAAC,OAAO,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAClD,OAAO,CAAC,CAAC,OAAO,SAAS,CAAC,CAAC,iDAAiD;QAC5E,CAAC;IACF,CAAC;IAED,SAAS,CAAC,GAAW,EAAE,IAAiB,EAAE,MAAc;QACvD,MAAM,KAAK,GAAc,EAAE,CAAC;QAC5B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YAChD,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,SAAS;YAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAClD,wEAAwE;YACxE,wEAAwE;YACxE,IAAI,OAAO,GAAG,KAAK,WAAW;gBAAE,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;QAClD,CAAC;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IAED,WAAW,CAAC,KAAgB,EAAE,GAAW,EAAE,IAAiB,EAAE,MAAc;QAC3E,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAClD,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,SAAS;YAC5B,+BAA+B;YAC/B,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACpD,CAAC;IACF,CAAC;CACD,CAAC"}
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../../../sim/state.ts"],"names":[],"mappings":"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"}
@@ -731,12 +731,14 @@ class TeamValidator {
731
731
  }
732
732
  }
733
733
  let isUnderleveled;
734
+ let requiredLevel;
734
735
  if (!isFromRBYEncounter && ruleTable.has('obtainablemisc')) {
735
736
  // FIXME: Event pokemon given at a level under what it normally can be attained at gives a false positive
736
737
  let evoSpecies = species;
737
738
  while (evoSpecies.prevo) {
738
739
  if (set.level < (evoSpecies.evoLevel || 0)) {
739
740
  isUnderleveled = evoSpecies.name;
741
+ requiredLevel = evoSpecies.evoLevel;
740
742
  break;
741
743
  }
742
744
  evoSpecies = dex.species.get(evoSpecies.prevo);
@@ -752,8 +754,8 @@ class TeamValidator {
752
754
  let checkGoLegality = false;
753
755
  let skippedEggSource = true;
754
756
  const legalSources = [];
755
- let evoSpecies = species;
756
757
  if (isUnderleveled && !setSources.sources.length) {
758
+ let evoSpecies = species;
757
759
  while (evoSpecies.prevo) {
758
760
  const eventData = dex.species.getLearnsetData(evoSpecies.id).eventData;
759
761
  if (eventData) {
@@ -794,14 +796,14 @@ class TeamValidator {
794
796
  setSources.sources = legalSources;
795
797
  }
796
798
  else if (isUnderleveled) {
797
- problems.push(`${name} must be at least level ${evoSpecies.evoLevel} to be evolved.`);
799
+ problems.push(`${name} must be at least level ${requiredLevel} to be evolved.`);
798
800
  const firstEventSource = setSources.sources.filter(source => source.charAt(1) === 'S')[0];
799
801
  if (firstEventSource) {
800
802
  const eventProblems = this.validateSource(set, firstEventSource, setSources, outOfBattleSpecies, ` to be underleveled`);
801
803
  if (eventProblems)
802
804
  problems.push(...eventProblems);
803
805
  }
804
- if (pokemonGoProblems) {
806
+ if (pokemonGoProblems && pokemonGoProblems.length) {
805
807
  problems.push(`It failed to validate as a Pokemon from Pokemon GO because:`);
806
808
  for (const pokemonGoProblem of pokemonGoProblems) {
807
809
  problems.push(pokemonGoProblem);