@idlekit/cli 0.2.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/main.js CHANGED
@@ -119,7 +119,7 @@ var require_src = __commonJS(function(exports, module) {
119
119
  var require_package = __commonJS(function(exports, module) {
120
120
  module.exports = {
121
121
  name: "@idlekit/cli",
122
- version: "0.2.0",
122
+ version: "0.2.1",
123
123
  description: "Bun-first idk CLI for idle game scenario validation, simulation, tuning, and reporting.",
124
124
  license: "MIT",
125
125
  type: "module",
@@ -172,7 +172,7 @@ var require_package = __commonJS(function(exports, module) {
172
172
  "@clack/prompts": "1.8.1",
173
173
  "@gunshi/plugin-completion": "0.37.3",
174
174
  "@gunshi/plugin-suggestion": "0.37.3",
175
- "@idlekit/core": "workspace:*",
175
+ "@idlekit/core": "0.2.1",
176
176
  ajv: "^8.20.0",
177
177
  gunshi: "0.37.3",
178
178
  yaml: "^2.9.1",
@@ -19928,7 +19928,7 @@ var p = r3(Number.MAX_VALUE);
19928
19928
  var f = r3(Number.MIN_VALUE);
19929
19929
  var break_infinity_esm_default = a3;
19930
19930
 
19931
- // ../money/src/engine/breakInfinity.ts
19931
+ // ../money/dist/engine/breakInfinity.js
19932
19932
  function createNumberEngine(opts) {
19933
19933
  const epsilon = opts?.epsilon ?? 0.000000000001;
19934
19934
  return {
@@ -20027,7 +20027,7 @@ function createBreakInfinityEngine(opts) {
20027
20027
  }
20028
20028
  var breakInfinityEngine = createBreakInfinityEngine();
20029
20029
 
20030
- // ../money/src/engine/breakEternity.ts
20030
+ // ../money/dist/engine/breakEternity.js
20031
20031
  var BREAK_ETERNITY_EXPERIMENTAL_MESSAGE = "breakEternityEngine is experimental and not implemented in idlekit v1. Use breakInfinityEngine or provide a custom Engine adapter.";
20032
20032
  function notImplemented() {
20033
20033
  throw new Error(BREAK_ETERNITY_EXPERIMENTAL_MESSAGE);
@@ -20051,7 +20051,7 @@ function createBreakEternityEngine() {
20051
20051
  }
20052
20052
  var breakEternityEngine = createBreakEternityEngine();
20053
20053
 
20054
- // ../money/src/policy/strategies/shared.ts
20054
+ // ../money/dist/policy/strategies/shared.js
20055
20055
  function computeLogGap(E, base, delta) {
20056
20056
  const zero = E.zero();
20057
20057
  if (E.cmp(base, zero) <= 0)
@@ -20067,14 +20067,14 @@ function isTooSmall(E, base, delta, maxLogGap, knownGap) {
20067
20067
  return Number.isFinite(gap) && gap > maxLogGap;
20068
20068
  }
20069
20069
 
20070
- // ../money/src/policy/facts.ts
20070
+ // ../money/dist/policy/facts.js
20071
20071
  var APPLIED_FACTS = Object.freeze({ applied: 1, dropped: 0, queued: 0, flushed: 0, blocked: 0 });
20072
20072
  var DROPPED_FACTS = Object.freeze({ applied: 0, dropped: 1, queued: 0, flushed: 0, blocked: 0 });
20073
20073
  var QUEUED_FACTS = Object.freeze({ applied: 0, dropped: 0, queued: 1, flushed: 0, blocked: 0 });
20074
20074
  var FLUSHED_FACTS = Object.freeze({ applied: 1, dropped: 0, queued: 0, flushed: 1, blocked: 0 });
20075
20075
  var BLOCKED_FACTS = Object.freeze({ applied: 0, dropped: 0, queued: 0, flushed: 0, blocked: 1 });
20076
20076
 
20077
- // ../money/src/policy/strategies/accumulate.ts
20077
+ // ../money/dist/policy/strategies/accumulate.js
20078
20078
  function applyAccumulatePolicy(args) {
20079
20079
  const { E, state, delta, policy, emit, collectEvents, collectFacts } = args;
20080
20080
  const events = [];
@@ -20134,7 +20134,7 @@ function applyAccumulatePolicy(args) {
20134
20134
  return result;
20135
20135
  }
20136
20136
 
20137
- // ../money/src/policy/strategies/drop.ts
20137
+ // ../money/dist/policy/strategies/drop.js
20138
20138
  function applyDropPolicy(args) {
20139
20139
  const { E, state, delta, policy, emit, collectEvents, collectFacts } = args;
20140
20140
  const events = [];
@@ -20178,7 +20178,7 @@ function applyDropPolicy(args) {
20178
20178
  return result;
20179
20179
  }
20180
20180
 
20181
- // ../money/src/policy/tickMoney.ts
20181
+ // ../money/dist/policy/tickMoney.js
20182
20182
  function tickMoney(args) {
20183
20183
  const { E, state, delta, policy, emit } = args;
20184
20184
  const collectEvents = args.options?.collectEvents ?? true;
@@ -20210,7 +20210,7 @@ function tickMoney(args) {
20210
20210
  return policy.mode === "drop" ? applyDropPolicy({ E, state, delta, policy, emit, collectEvents, collectFacts }) : applyAccumulatePolicy({ E, state, delta, policy, emit, collectEvents, collectFacts });
20211
20211
  }
20212
20212
 
20213
- // ../money/src/notation/suffixer.ts
20213
+ // ../money/dist/notation/suffixer.js
20214
20214
  function assertValidMinLen(minLen) {
20215
20215
  if (!Number.isInteger(minLen) || minLen < 1) {
20216
20216
  throw new Error(`alphaInfinite minLen must be an integer >= 1 (received: ${minLen})`);
@@ -20263,7 +20263,7 @@ function alphaInfiniteIndex(label, minLen = 2) {
20263
20263
  return prior + offset + 1;
20264
20264
  }
20265
20265
 
20266
- // ../money/src/notation/formatMoney.ts
20266
+ // ../money/dist/notation/formatMoney.js
20267
20267
  function suffixAt(suffix, index) {
20268
20268
  if (index <= 0)
20269
20269
  return "";
@@ -20301,7 +20301,7 @@ function formatMoney(E, money, opts) {
20301
20301
  return showUnit ? `${raw} ${money.unit.code}` : raw;
20302
20302
  }
20303
20303
 
20304
- // ../money/src/notation/parseMoney.ts
20304
+ // ../money/dist/notation/parseMoney.js
20305
20305
  function parseSuffixIndex(token, suffix) {
20306
20306
  if (!token)
20307
20307
  return 0;
@@ -20353,7 +20353,7 @@ function parseMoney(E, input, opts) {
20353
20353
  };
20354
20354
  }
20355
20355
 
20356
- // ../money/src/notation/visibilityTracker.ts
20356
+ // ../money/dist/notation/visibilityTracker.js
20357
20357
  class VisibilityTracker {
20358
20358
  E;
20359
20359
  opts;
@@ -20376,7 +20376,7 @@ class VisibilityTracker {
20376
20376
  this.#previous = undefined;
20377
20377
  }
20378
20378
  }
20379
- // ../core/src/serde/simState.ts
20379
+ // ../core/dist/serde/simState.js
20380
20380
  class SimStateError extends Error {
20381
20381
  code;
20382
20382
  constructor(code, message) {
@@ -20504,7 +20504,7 @@ function deserializeSimState(E, json, opts) {
20504
20504
  };
20505
20505
  }
20506
20506
 
20507
- // ../core/src/scenario/registry.ts
20507
+ // ../core/dist/scenario/registry.js
20508
20508
  function createModelRegistry(factories) {
20509
20509
  const map = new Map;
20510
20510
  for (const f of factories) {
@@ -20523,7 +20523,7 @@ function defineModelFactory(args) {
20523
20523
  return args;
20524
20524
  }
20525
20525
 
20526
- // ../core/src/scenario/validate.ts
20526
+ // ../core/dist/scenario/validate.js
20527
20527
  function zodStandardSchema(schema) {
20528
20528
  return {
20529
20529
  "~standard": {
@@ -21042,7 +21042,7 @@ function validateScenarioV1(input, registry, strategyRegistry) {
21042
21042
  };
21043
21043
  }
21044
21044
 
21045
- // ../core/src/scenario/migrate.ts
21045
+ // ../core/dist/scenario/migrate.js
21046
21046
  function isRecord4(input) {
21047
21047
  return typeof input === "object" && input !== null;
21048
21048
  }
@@ -21132,7 +21132,7 @@ function migrateScenarioDocument(input) {
21132
21132
  return { document: doc, notices };
21133
21133
  }
21134
21134
 
21135
- // ../core/src/utils/deepClone.ts
21135
+ // ../core/dist/utils/deepClone.js
21136
21136
  function deepClonePreservingPrototype(input) {
21137
21137
  const seen = new WeakMap;
21138
21138
  return cloneAny(input, seen);
@@ -21196,7 +21196,7 @@ function cloneAny(value, seen) {
21196
21196
  return out;
21197
21197
  }
21198
21198
 
21199
- // ../core/src/sim/timeBoundary.ts
21199
+ // ../core/dist/sim/timeBoundary.js
21200
21200
  var timeBoundaryEpsilonScale = 0.000000000001;
21201
21201
  function timeEpsilon(limitSec) {
21202
21202
  const magnitude = Math.abs(limitSec);
@@ -21269,7 +21269,7 @@ function timeStepEvents(events, actionStartT, incomeEndT) {
21269
21269
  });
21270
21270
  }
21271
21271
 
21272
- // ../core/src/sim/constraints.ts
21272
+ // ../core/dist/sim/constraints.js
21273
21273
  var unanchoredWarning = "Prestige cooldown has no recorded last reset time. No past timestamp is invented. The next committed reset starts the interval.";
21274
21274
  function decidePrestigeCooldown(args) {
21275
21275
  const interval = args.minIntervalSec;
@@ -21311,7 +21311,7 @@ function prestigeAnchorFromCheckpoint(checkpoint) {
21311
21311
  return { status: "unanchored", warning: unanchoredWarning };
21312
21312
  }
21313
21313
 
21314
- // ../core/src/sim/runFactory.ts
21314
+ // ../core/dist/sim/runFactory.js
21315
21315
  var executionStream = "execution";
21316
21316
  var previewStream = "preview";
21317
21317
 
@@ -21734,7 +21734,7 @@ function createRunFactory(deps) {
21734
21734
  return { bind };
21735
21735
  }
21736
21736
 
21737
- // ../core/src/scenario/compile.ts
21737
+ // ../core/dist/scenario/compile.js
21738
21738
  var UNTIL_NUMBER_PATHS = new Set(["t", "prestige.count"]);
21739
21739
  var UNTIL_BOOLEAN_PATHS = new Set([]);
21740
21740
  var UNTIL_AMOUNT_PATHS = new Set([
@@ -22190,7 +22190,7 @@ function compileScenario(args) {
22190
22190
  };
22191
22191
  }
22192
22192
 
22193
- // ../core/src/sim/types.ts
22193
+ // ../core/dist/sim/types.js
22194
22194
  function assertHorizonReached(run, label) {
22195
22195
  if (run.stop?.reason !== "budget")
22196
22196
  return;
@@ -22200,7 +22200,7 @@ function runElapsedSec(run) {
22200
22200
  return run.stop?.elapsedSec ?? run.end.t - run.start.t;
22201
22201
  }
22202
22202
 
22203
- // ../core/src/sim/analysis/ux.ts
22203
+ // ../core/dist/sim/analysis/ux.js
22204
22204
  function simStatsFromCounters(args) {
22205
22205
  const moneyMissing = args.money.status !== "observed";
22206
22206
  const totalMoney = args.money.applied + args.money.dropped + args.money.queued;
@@ -22254,7 +22254,7 @@ function analyzeUX(stats) {
22254
22254
  return flags;
22255
22255
  }
22256
22256
 
22257
- // ../core/src/sim/eventBuffer.ts
22257
+ // ../core/dist/sim/eventBuffer.js
22258
22258
  function appendAll(target, items, from = 0) {
22259
22259
  for (let i = from;i < items.length; i += 1)
22260
22260
  target.push(items[i]);
@@ -22374,7 +22374,7 @@ function createEventBuffer(args) {
22374
22374
  };
22375
22375
  }
22376
22376
 
22377
- // ../core/src/sim/goalRead.ts
22377
+ // ../core/dist/sim/goalRead.js
22378
22378
  var answers = new WeakMap;
22379
22379
  function shareGoalReads(goals) {
22380
22380
  return goals.map((goal) => {
@@ -22406,7 +22406,7 @@ function observationLedger(observation) {
22406
22406
  return observation ? ledgers.get(observation) : undefined;
22407
22407
  }
22408
22408
 
22409
- // ../core/src/sim/observation.ts
22409
+ // ../core/dist/sim/observation.js
22410
22410
  var observationContract = "idlekit.run-observation";
22411
22411
 
22412
22412
  class ObservationError extends Error {
@@ -22756,7 +22756,7 @@ function observationFromLegacyEvents(args) {
22756
22756
  };
22757
22757
  }
22758
22758
 
22759
- // ../core/src/sim/step.ts
22759
+ // ../core/dist/sim/step.js
22760
22760
  var singleBuySize = 1;
22761
22761
  function actionPriceKey(action, ctx, state) {
22762
22762
  try {
@@ -23216,7 +23216,7 @@ function stepOnce(input) {
23216
23216
  };
23217
23217
  }
23218
23218
 
23219
- // ../core/src/sim/simulator.ts
23219
+ // ../core/dist/sim/simulator.js
23220
23220
  function finishTrace(enabled, trace, state) {
23221
23221
  if (!enabled)
23222
23222
  return;
@@ -23368,7 +23368,7 @@ function runScenario(sc) {
23368
23368
  };
23369
23369
  }
23370
23370
 
23371
- // ../core/src/sim/offlineCredit.ts
23371
+ // ../core/dist/sim/offlineCredit.js
23372
23372
  function clamp014(v) {
23373
23373
  if (v < 0)
23374
23374
  return 0;
@@ -23416,7 +23416,7 @@ function offlineAbsenceForCredit(creditedSec, requestedSec, policy) {
23416
23416
  return Math.min(absence, requestedSec);
23417
23417
  }
23418
23418
 
23419
- // ../core/src/sim/offline.ts
23419
+ // ../core/dist/sim/offline.js
23420
23420
  function resolveOfflineActionPolicy(args) {
23421
23421
  if (args.useStrategy === false)
23422
23422
  return { callStrategy: false, policy: { mode: "none" } };
@@ -23604,7 +23604,7 @@ function applyOfflineSeconds(args) {
23604
23604
  };
23605
23605
  }
23606
23606
 
23607
- // ../core/src/sim/random.ts
23607
+ // ../core/dist/sim/random.js
23608
23608
  function mulberry322(seed) {
23609
23609
  let a = seed >>> 0;
23610
23610
  return () => {
@@ -23620,7 +23620,7 @@ function deriveDrawSeed(baseSeed, drawIndex) {
23620
23620
  return Math.floor(rng() * 4294967295) >>> 0;
23621
23621
  }
23622
23622
 
23623
- // ../core/src/sim/session.ts
23623
+ // ../core/dist/sim/session.js
23624
23624
  function buildBlocks(pattern) {
23625
23625
  const blocks = [];
23626
23626
  for (let day = 0;day < pattern.days; day += 1) {
@@ -23988,7 +23988,7 @@ function simulateSessionPattern(args) {
23988
23988
  };
23989
23989
  }
23990
23990
 
23991
- // ../core/src/sim/monteCarlo.ts
23991
+ // ../core/dist/sim/monteCarlo.js
23992
23992
  function simulateMonteCarlo(args) {
23993
23993
  const draws = Math.max(1, Math.floor(args.draws));
23994
23994
  const results = [];
@@ -24047,7 +24047,7 @@ function simulateMonteCarlo(args) {
24047
24047
  };
24048
24048
  }
24049
24049
 
24050
- // ../core/src/sim/strategy/stability.ts
24050
+ // ../core/dist/sim/strategy/stability.js
24051
24051
  function structuredUnitCode(money) {
24052
24052
  const code = money?.unit?.code;
24053
24053
  return typeof code === "string" && code.length > 0 ? code : undefined;
@@ -24143,7 +24143,7 @@ function compareCandidateKey(a, b) {
24143
24143
  return 0;
24144
24144
  }
24145
24145
 
24146
- // ../core/src/sim/strategy/scripted.ts
24146
+ // ../core/dist/sim/strategy/scripted.js
24147
24147
  function createScriptedStrategy(params) {
24148
24148
  const plan = params.program;
24149
24149
  const onCannotApply = params.onCannotApply ?? "skip";
@@ -24198,7 +24198,7 @@ function createScriptedStrategy(params) {
24198
24198
  };
24199
24199
  }
24200
24200
 
24201
- // ../core/src/sim/strategy/greedy.ts
24201
+ // ../core/dist/sim/strategy/greedy.js
24202
24202
  function toFallbackQuote(action, ctx, state) {
24203
24203
  return {
24204
24204
  size: 1,
@@ -24364,7 +24364,7 @@ function createGreedyStrategy(params) {
24364
24364
  };
24365
24365
  }
24366
24366
 
24367
- // ../core/src/sim/strategy/planner.ts
24367
+ // ../core/dist/sim/strategy/planner.js
24368
24368
  var horizonCap = 32;
24369
24369
  var beamCap = 8;
24370
24370
  var branchCap = 8;
@@ -24656,7 +24656,7 @@ function createPlannerStrategy(params, deps) {
24656
24656
  };
24657
24657
  }
24658
24658
 
24659
- // ../core/src/sim/strategy/registry.ts
24659
+ // ../core/dist/sim/strategy/registry.js
24660
24660
  function createStrategyRegistry(factories) {
24661
24661
  const map = new Map;
24662
24662
  for (const f of factories)
@@ -24667,7 +24667,7 @@ function createStrategyRegistry(factories) {
24667
24667
  };
24668
24668
  }
24669
24669
 
24670
- // ../core/src/sim/strategy/params.ts
24670
+ // ../core/dist/sim/strategy/params.js
24671
24671
  var ScriptedStrategyParamsV1Schema = zodStandardSchema(object({
24672
24672
  schemaVersion: literal(1),
24673
24673
  program: array(object({
@@ -24714,7 +24714,7 @@ var PlannerStrategyParamsV1Schema = zodStandardSchema(object({
24714
24714
  }).optional()
24715
24715
  }));
24716
24716
 
24717
- // ../core/src/sim/strategy/builtins.ts
24717
+ // ../core/dist/sim/strategy/builtins.js
24718
24718
  var builtinStrategyFactories = [
24719
24719
  {
24720
24720
  id: "scripted",
@@ -24758,7 +24758,7 @@ var builtinStrategyFactories = [
24758
24758
  }
24759
24759
  ];
24760
24760
 
24761
- // ../core/src/sim/strategy/opt/validate.ts
24761
+ // ../core/dist/sim/strategy/opt/validate.js
24762
24762
  var paramSpaceSchema = discriminatedUnion("kind", [
24763
24763
  object({ kind: literal("bool") }),
24764
24764
  object({
@@ -24841,7 +24841,7 @@ function validateTuneSpecV1(input) {
24841
24841
  return { ok: true, tuneSpec: raw.value, issues: [] };
24842
24842
  }
24843
24843
 
24844
- // ../core/src/sim/strategy/opt/registry.ts
24844
+ // ../core/dist/sim/strategy/opt/registry.js
24845
24845
  function createObjectiveRegistry(factories) {
24846
24846
  const map = new Map;
24847
24847
  for (const f of factories)
@@ -24852,7 +24852,7 @@ function createObjectiveRegistry(factories) {
24852
24852
  };
24853
24853
  }
24854
24854
 
24855
- // ../core/src/sim/strategy/opt/objectives/params.ts
24855
+ // ../core/dist/sim/strategy/opt/objectives/params.js
24856
24856
  var ObjectiveEmptyObjectSchema = zodStandardSchema(object({}).strict());
24857
24857
  var ObjectiveEtaToWorthParamsSchema = zodStandardSchema(object({
24858
24858
  targetWorth: string2().min(1),
@@ -24864,7 +24864,7 @@ var ObjectivePacingParamsSchema = zodStandardSchema(object({
24864
24864
  droppedRateWeight: number2().nonnegative().optional()
24865
24865
  }));
24866
24866
 
24867
- // ../core/src/sim/strategy/opt/objectives/builtins.ts
24867
+ // ../core/dist/sim/strategy/opt/objectives/builtins.js
24868
24868
  function safeAbsLog10(E, x) {
24869
24869
  const v = E.absLog10(x);
24870
24870
  return Number.isFinite(v) ? v : -300;
@@ -25009,7 +25009,7 @@ var builtinObjectiveFactories = [
25009
25009
  }
25010
25010
  ];
25011
25011
 
25012
- // ../core/src/sim/strategy/opt/tuners/randomSearch.ts
25012
+ // ../core/dist/sim/strategy/opt/tuners/randomSearch.js
25013
25013
  function mulberry323(seed) {
25014
25014
  let a = seed >>> 0;
25015
25015
  return () => {
@@ -25176,7 +25176,7 @@ var RandomSearchTunerV1 = {
25176
25176
  }
25177
25177
  };
25178
25178
 
25179
- // ../core/src/sim/strategy/opt/runner.ts
25179
+ // ../core/dist/sim/strategy/opt/runner.js
25180
25180
  function runCandidateAndScore(args) {
25181
25181
  const stratFactory = args.strategyRegistry.get(args.strategyId);
25182
25182
  if (!stratFactory)
@@ -25245,7 +25245,7 @@ function runCandidateAndScore(args) {
25245
25245
  return { score, seedScores, seedResults };
25246
25246
  }
25247
25247
 
25248
- // ../core/src/sim/analysis/eta.ts
25248
+ // ../core/dist/sim/analysis/eta.js
25249
25249
  function targetReached(scenario, targetKind, threshold, run) {
25250
25250
  const { E } = scenario.ctx;
25251
25251
  if (targetKind === "money") {
@@ -25345,7 +25345,7 @@ function etaAnalytic(args) {
25345
25345
  };
25346
25346
  }
25347
25347
 
25348
- // ../core/src/sim/analysis/prestigeCycle.ts
25348
+ // ../core/dist/sim/analysis/prestigeCycle.js
25349
25349
  function metric(row, objective) {
25350
25350
  return Number(objective === "netWorthPerHour" ? row.netWorthPerHour : row.pointsPerHour);
25351
25351
  }
@@ -25410,7 +25410,7 @@ function analyzePrestigeCycle(args) {
25410
25410
  return { best, rows };
25411
25411
  }
25412
25412
 
25413
- // ../core/src/sim/analysis/growth.ts
25413
+ // ../core/dist/sim/analysis/growth.js
25414
25414
  function num(v) {
25415
25415
  if (typeof v === "number")
25416
25416
  return v;
@@ -25533,7 +25533,7 @@ function analyzeGrowth(args) {
25533
25533
  };
25534
25534
  }
25535
25535
 
25536
- // ../core/src/sim/analysis/milestones.ts
25536
+ // ../core/dist/sim/analysis/milestones.js
25537
25537
  function compareOccurrence(a, b) {
25538
25538
  if (a.firstSeenT !== b.firstSeenT)
25539
25539
  return a.firstSeenT - b.firstSeenT;
@@ -25639,7 +25639,7 @@ function analyzeMilestones(args) {
25639
25639
  };
25640
25640
  }
25641
25641
 
25642
- // ../core/src/report/timeline.ts
25642
+ // ../core/dist/report/timeline.js
25643
25643
  function nearestAt(trace, t) {
25644
25644
  if (trace.length === 0) {
25645
25645
  throw new Error("trace is empty");
@@ -25682,7 +25682,7 @@ function buildTimeline(args) {
25682
25682
  });
25683
25683
  }
25684
25684
 
25685
- // ../core/src/report/compare.ts
25685
+ // ../core/dist/report/compare.js
25686
25686
  function safeNum(input) {
25687
25687
  if (typeof input === "number")
25688
25688
  return input;
@@ -26630,7 +26630,7 @@ async function loadRegistries(pluginPaths = [], securityOptions = {}) {
26630
26630
  }
26631
26631
  delete pluginDigest[abs];
26632
26632
  pluginDigest[abs] = await pluginClosureDigest(abs, actualDigest);
26633
- const mod = await import(abs);
26633
+ const mod = await import(realpathSync(abs));
26634
26634
  const parsed = parsePluginModule(mod);
26635
26635
  if (parsed.models)
26636
26636
  modelFactories.push(...parsed.models);
@@ -33649,4 +33649,4 @@ export {
33649
33649
  cli2 as cli
33650
33650
  };
33651
33651
 
33652
- //# debugId=581258DCC8C8840864756E2164756E21
33652
+ //# debugId=5AB7805A129CE3DC64756E2164756E21