lim 0.28.5 → 0.29.0

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 (59) hide show
  1. package/README.md +34 -22
  2. package/dist/base-command.d.ts +1 -7
  3. package/dist/base-command.d.ts.map +1 -1
  4. package/dist/base-command.js +57 -68
  5. package/dist/base-command.js.map +1 -1
  6. package/dist/commands/gradle/build.d.ts +1 -0
  7. package/dist/commands/gradle/build.d.ts.map +1 -1
  8. package/dist/commands/gradle/build.js +4 -0
  9. package/dist/commands/gradle/build.js.map +1 -1
  10. package/dist/commands/ios/{stop-microphone-playback.d.ts → attach-xcode.d.ts} +6 -3
  11. package/dist/commands/ios/attach-xcode.d.ts.map +1 -0
  12. package/dist/commands/ios/attach-xcode.js +66 -0
  13. package/dist/commands/ios/attach-xcode.js.map +1 -0
  14. package/dist/commands/ios/create.d.ts.map +1 -1
  15. package/dist/commands/ios/create.js +62 -20
  16. package/dist/commands/ios/create.js.map +1 -1
  17. package/dist/commands/ios/{play-on-microphone.d.ts → microphone.d.ts} +4 -3
  18. package/dist/commands/ios/microphone.d.ts.map +1 -0
  19. package/dist/commands/ios/microphone.js +89 -0
  20. package/dist/commands/ios/microphone.js.map +1 -0
  21. package/dist/commands/run.d.ts +4 -0
  22. package/dist/commands/run.d.ts.map +1 -1
  23. package/dist/commands/run.js +61 -23
  24. package/dist/commands/run.js.map +1 -1
  25. package/dist/commands/xcode/attach-simulator.js +1 -1
  26. package/dist/commands/xcode/attach-simulator.js.map +1 -1
  27. package/dist/commands/xcode/build.d.ts +2 -0
  28. package/dist/commands/xcode/build.d.ts.map +1 -1
  29. package/dist/commands/xcode/build.js +25 -3
  30. package/dist/commands/xcode/build.js.map +1 -1
  31. package/dist/commands/xcode/create.d.ts.map +1 -1
  32. package/dist/commands/xcode/create.js +76 -101
  33. package/dist/commands/xcode/create.js.map +1 -1
  34. package/dist/commands/xcode/rbe/index.d.ts.map +1 -1
  35. package/dist/commands/xcode/rbe/index.js +1 -1
  36. package/dist/commands/xcode/rbe/index.js.map +1 -1
  37. package/dist/commands/xcode/rbe/upload.d.ts.map +1 -1
  38. package/dist/commands/xcode/rbe/upload.js +1 -1
  39. package/dist/commands/xcode/rbe/upload.js.map +1 -1
  40. package/dist/commands/xcode/set-instance.js +1 -1
  41. package/dist/commands/xcode/set-instance.js.map +1 -1
  42. package/dist/commands/xcode/sync.d.ts.map +1 -1
  43. package/dist/commands/xcode/sync.js +2 -2
  44. package/dist/commands/xcode/sync.js.map +1 -1
  45. package/dist/lib/gradle-build-options.d.ts +1 -0
  46. package/dist/lib/gradle-build-options.d.ts.map +1 -1
  47. package/dist/lib/gradle-build-options.js +4 -1
  48. package/dist/lib/gradle-build-options.js.map +1 -1
  49. package/dist/lib/telemetry-config.d.ts +1 -1
  50. package/dist/lib/telemetry-config.d.ts.map +1 -1
  51. package/dist/lib/telemetry-config.js +1 -1
  52. package/dist/lib/telemetry-config.js.map +1 -1
  53. package/package.json +2 -2
  54. package/dist/commands/ios/play-on-microphone.d.ts.map +0 -1
  55. package/dist/commands/ios/play-on-microphone.js +0 -69
  56. package/dist/commands/ios/play-on-microphone.js.map +0 -1
  57. package/dist/commands/ios/stop-microphone-playback.d.ts.map +0 -1
  58. package/dist/commands/ios/stop-microphone-playback.js +0 -41
  59. package/dist/commands/ios/stop-microphone-playback.js.map +0 -1
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const core_1 = require("@oclif/core");
4
+ const base_command_1 = require("../../base-command");
5
+ const config_1 = require("../../lib/config");
6
+ const simulator_attach_1 = require("../../lib/simulator-attach");
7
+ class IosAttachXcode extends base_command_1.BaseCommand {
8
+ async run() {
9
+ const { args, flags } = await this.parse(IosAttachXcode);
10
+ this.setParsedFlags(flags);
11
+ await this.withAuth(async () => {
12
+ const simulator = this.resolveIosInstance(flags.id);
13
+ const xcodeTarget = await this.resolveXcodeTarget(args.xcodeId);
14
+ const xcodeInstanceId = xcodeTarget.id;
15
+ const xcodeClient = await this.resolveXcodeClient(xcodeTarget);
16
+ let attachInput;
17
+ if (simulator.apiUrl && simulator.token) {
18
+ attachInput = { apiUrl: simulator.apiUrl, token: simulator.token };
19
+ }
20
+ else {
21
+ const instance = await this.client.iosInstances.get(simulator.id);
22
+ (0, config_1.registerCreatedInstance)(instance);
23
+ attachInput = instance;
24
+ }
25
+ this.info(`Attaching Xcode target ${xcodeInstanceId} to simulator ${simulator.id}...`);
26
+ const result = await xcodeClient.attachSimulator(attachInput);
27
+ if (flags.json) {
28
+ this.outputJson((0, simulator_attach_1.simulatorAttachJson)(simulator.id, xcodeInstanceId, result));
29
+ }
30
+ else if (this.isQuietEnabled()) {
31
+ this.output(xcodeInstanceId);
32
+ }
33
+ else {
34
+ this.output((0, simulator_attach_1.formatSimulatorAttachResult)(simulator.id, xcodeInstanceId, result));
35
+ }
36
+ });
37
+ }
38
+ }
39
+ IosAttachXcode.summary = 'Attach an Xcode instance to an iOS simulator';
40
+ IosAttachXcode.description = 'Attach an Xcode sandbox to an existing iOS simulator so future builds can auto-install on that simulator. ' +
41
+ 'When the Xcode target is omitted, the LIM_XCODE_INSTANCE_URL/LIM_XCODE_INSTANCE_TOKEN pair or the last used ' +
42
+ 'Xcode-capable target is attached; if the simulator credentials are known locally, no API key is needed.';
43
+ IosAttachXcode.examples = [
44
+ '<%= config.bin %> ios attach-xcode',
45
+ '<%= config.bin %> ios attach-xcode <xcode-instance-ID>',
46
+ '<%= config.bin %> ios attach-xcode <xcode-instance-ID> --id <ios-instance-ID>',
47
+ ];
48
+ IosAttachXcode.args = {
49
+ xcodeId: core_1.Args.string({
50
+ description: 'Xcode target to attach. Defaults to the environment-pinned or last used Xcode target.',
51
+ required: false,
52
+ }),
53
+ };
54
+ IosAttachXcode.flags = {
55
+ ...base_command_1.BaseCommand.baseFlags,
56
+ create: core_1.Flags.boolean({
57
+ hidden: true,
58
+ default: false,
59
+ allowNo: true,
60
+ }),
61
+ id: core_1.Flags.string({
62
+ description: 'iOS simulator instance ID to attach. Defaults to the last used iOS simulator.',
63
+ }),
64
+ };
65
+ exports.default = IosAttachXcode;
66
+ //# sourceMappingURL=attach-xcode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attach-xcode.js","sourceRoot":"","sources":["../../../src/commands/ios/attach-xcode.ts"],"names":[],"mappings":";;AAAA,sCAA0C;AAC1C,qDAAiD;AACjD,6CAA2D;AAC3D,iEAA8F;AAE9F,MAAqB,cAAe,SAAQ,0BAAW;IAgCrD,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QACzD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAE3B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;YAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACpD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAChE,MAAM,eAAe,GAAG,WAAW,CAAC,EAAE,CAAC;YACvC,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;YAE/D,IAAI,WAA8D,CAAC;YACnE,IAAI,SAAS,CAAC,MAAM,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;gBACxC,WAAW,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC;YACrE,CAAC;iBAAM,CAAC;gBACN,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;gBAClE,IAAA,gCAAuB,EAAC,QAAQ,CAAC,CAAC;gBAClC,WAAW,GAAG,QAAQ,CAAC;YACzB,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,0BAA0B,eAAe,iBAAiB,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC;YACvF,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;YAE9D,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBACf,IAAI,CAAC,UAAU,CAAC,IAAA,sCAAmB,EAAC,SAAS,CAAC,EAAE,EAAE,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC;YAC9E,CAAC;iBAAM,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;gBACjC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;YAC/B,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,MAAM,CAAC,IAAA,8CAA2B,EAAC,SAAS,CAAC,EAAE,EAAE,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC;YAClF,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;;AA7DM,sBAAO,GAAG,8CAA8C,CAAC;AACzD,0BAAW,GAChB,4GAA4G;IAC5G,8GAA8G;IAC9G,yGAAyG,CAAC;AAErG,uBAAQ,GAAG;IAChB,oCAAoC;IACpC,wDAAwD;IACxD,+EAA+E;CAChF,CAAC;AAEK,mBAAI,GAAG;IACZ,OAAO,EAAE,WAAI,CAAC,MAAM,CAAC;QACnB,WAAW,EAAE,uFAAuF;QACpG,QAAQ,EAAE,KAAK;KAChB,CAAC;CACH,CAAC;AAEK,oBAAK,GAAG;IACb,GAAG,0BAAW,CAAC,SAAS;IACxB,MAAM,EAAE,YAAK,CAAC,OAAO,CAAC;QACpB,MAAM,EAAE,IAAI;QACZ,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,IAAI;KACd,CAAC;IACF,EAAE,EAAE,YAAK,CAAC,MAAM,CAAC;QACf,WAAW,EAAE,+EAA+E;KAC7F,CAAC;CACH,CAAC;kBA9BiB,cAAc"}
@@ -1 +1 @@
1
- {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/commands/ios/create.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAWjD,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,WAAW;IAChD,MAAM,CAAC,OAAO,SAA+B;IAC7C,MAAM,CAAC,WAAW,SACiK;IAEnL,MAAM,CAAC,QAAQ,WASb;IAEF,MAAM,CAAC,IAAI;;MAKT;IAEF,MAAM,CAAC,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;MAgFV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAsM3B"}
1
+ {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/commands/ios/create.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAUjD,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,WAAW;IAChD,MAAM,CAAC,OAAO,SAA+B;IAC7C,MAAM,CAAC,WAAW,SAC4K;IAE9L,MAAM,CAAC,QAAQ,WASb;IAEF,MAAM,CAAC,IAAI;;MAKT;IAEF,MAAM,CAAC,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;MAgFV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAkP3B"}
@@ -9,7 +9,6 @@ const base_command_1 = require("../../base-command");
9
9
  const formatting_1 = require("../../lib/formatting");
10
10
  const config_1 = require("../../lib/config");
11
11
  const browser_1 = require("../../lib/browser");
12
- const xcode_sandbox_1 = require("../../lib/xcode-sandbox");
13
12
  const simulator_attach_1 = require("../../lib/simulator-attach");
14
13
  const duration_1 = require("../../lib/duration");
15
14
  const keychain_encryption_key_1 = require("../../lib/keychain-encryption-key");
@@ -107,9 +106,6 @@ class IosCreate extends base_command_1.BaseCommand {
107
106
  params.spec.inactivityTimeout = flags['inactivity-timeout'];
108
107
  if (flags['force-bundle-id'])
109
108
  params.spec.forceBundleId = flags['force-bundle-id'];
110
- if (flags.xcode) {
111
- params.spec.sandbox = { xcode: { enabled: true } };
112
- }
113
109
  const labels = (0, formatting_1.parseLabels)(flags.label);
114
110
  if (flags['display-name'] || labels) {
115
111
  params.metadata = {};
@@ -123,9 +119,8 @@ class IosCreate extends base_command_1.BaseCommand {
123
119
  const createDurationMs = Date.now() - createStart;
124
120
  const consoleUrl = this.consoleStreamUrl(instance.metadata.id);
125
121
  const signedStreamUrl = this.signedStreamUrl(instance.status);
126
- const xcodeSandboxUrl = instance.status.sandbox?.xcode?.url;
127
- const xcodeSandboxId = xcodeSandboxUrl ? (0, xcode_sandbox_1.xcodeSandboxIdFromUrl)(xcodeSandboxUrl) : undefined;
128
- (0, config_1.registerCreatedInstance)(instance, flags.xcode ? ['xcode'] : []);
122
+ (0, config_1.registerCreatedInstance)(instance);
123
+ let createdXcode;
129
124
  const cleanup = async () => {
130
125
  try {
131
126
  await this.client.iosInstances.delete(instance.metadata.id);
@@ -134,14 +129,25 @@ class IosCreate extends base_command_1.BaseCommand {
134
129
  catch (e) {
135
130
  this.info(`Failed to delete instance: ${e}`);
136
131
  }
132
+ if (createdXcode) {
133
+ try {
134
+ await this.client.xcodeInstances.delete(createdXcode.metadata.id);
135
+ this.info(`${createdXcode.metadata.id} is deleted`);
136
+ }
137
+ catch (e) {
138
+ this.info(`Failed to delete instance: ${e}`);
139
+ }
140
+ }
137
141
  };
138
142
  let attachResult;
139
143
  let attachDurationMs;
140
- if (attachClient) {
144
+ let attachedXcodeId;
145
+ if (attachClient && attachTarget) {
141
146
  try {
142
147
  const attachStart = Date.now();
143
148
  attachResult = await attachClient.attachSimulator(instance);
144
149
  attachDurationMs = Date.now() - attachStart;
150
+ attachedXcodeId = attachTarget.id;
145
151
  }
146
152
  catch (err) {
147
153
  this.info(`Created iOS instance ${instance.metadata.id}, but attach failed.`);
@@ -151,8 +157,43 @@ class IosCreate extends base_command_1.BaseCommand {
151
157
  throw err;
152
158
  }
153
159
  }
160
+ else if (flags.xcode) {
161
+ try {
162
+ createdXcode = await this.client.xcodeInstances.create({
163
+ wait: true,
164
+ reuseIfExists: flags['reuse-if-exists'] || undefined,
165
+ ...(params.metadata ? { metadata: params.metadata } : {}),
166
+ spec: {
167
+ ...(flags.region ? { region: flags.region } : {}),
168
+ ...(flags.jurisdiction ? { jurisdiction: flags.jurisdiction } : {}),
169
+ ...(flags['hard-timeout'] ? { hardTimeout: flags['hard-timeout'] } : {}),
170
+ ...(flags['inactivity-timeout'] ? { inactivityTimeout: flags['inactivity-timeout'] } : {}),
171
+ },
172
+ });
173
+ (0, config_1.registerCreatedInstance)(createdXcode);
174
+ const xcodeClient = await this.client.xcodeInstances.createClient({ instance: createdXcode });
175
+ const attachStart = Date.now();
176
+ attachResult = await xcodeClient.attachSimulator(instance);
177
+ attachDurationMs = Date.now() - attachStart;
178
+ attachedXcodeId = createdXcode.metadata.id;
179
+ }
180
+ catch (err) {
181
+ this.info(`Created iOS instance ${instance.metadata.id}, but creating or attaching an Xcode sandbox failed.`);
182
+ // The sandbox is useless without the attach; never leak a billed
183
+ // one. Reuse only matches this command's own labels, so a reused
184
+ // instance is part of the same workflow and fine to delete too.
185
+ if (createdXcode) {
186
+ await this.client.xcodeInstances.delete(createdXcode.metadata.id).catch(() => { });
187
+ createdXcode = undefined;
188
+ }
189
+ if (flags.rm) {
190
+ await cleanup();
191
+ }
192
+ throw err;
193
+ }
194
+ }
154
195
  const createdMessage = flags.xcode ?
155
- `Created a new iOS instance with Xcode sandbox in ${(0, duration_1.formatDurationMs)(createDurationMs)}.`
196
+ `Created a new iOS instance with an attached Xcode sandbox in ${(0, duration_1.formatDurationMs)(createDurationMs)}.`
156
197
  : `Created a new iOS instance in ${(0, duration_1.formatDurationMs)(createDurationMs)}.`;
157
198
  this.info(createdMessage);
158
199
  this.info('iOS Instance:');
@@ -163,18 +204,18 @@ class IosCreate extends base_command_1.BaseCommand {
163
204
  }
164
205
  this.info(` Region: ${instance.spec.region}`);
165
206
  this.info(` State: ${instance.status.state}`);
166
- if (xcodeSandboxUrl) {
167
- this.info('Xcode Sandbox:');
168
- if (xcodeSandboxId) {
169
- this.info(` ID: ${xcodeSandboxId}`);
207
+ if (createdXcode) {
208
+ this.info('Xcode Instance:');
209
+ this.info(` ID: ${createdXcode.metadata.id}`);
210
+ if (createdXcode.status.apiUrl) {
211
+ this.info(` URL: ${createdXcode.status.apiUrl}`);
170
212
  }
171
- this.info(` URL: ${xcodeSandboxUrl}`);
172
213
  }
173
- if (attachResult && attachTarget) {
214
+ if (attachResult && attachedXcodeId) {
174
215
  if (attachDurationMs !== undefined) {
175
216
  this.info(`Attach/install completed in ${(0, duration_1.formatDurationMs)(attachDurationMs)}.`);
176
217
  }
177
- this.info((0, simulator_attach_1.formatSimulatorAttachResult)(instance.metadata.id, attachTarget.id, attachResult));
218
+ this.info((0, simulator_attach_1.formatSimulatorAttachResult)(instance.metadata.id, attachedXcodeId, attachResult));
178
219
  }
179
220
  if (flags.open && signedStreamUrl && !this.shouldSuppressInfo()) {
180
221
  if (await (0, browser_1.openInBrowser)(signedStreamUrl)) {
@@ -182,10 +223,11 @@ class IosCreate extends base_command_1.BaseCommand {
182
223
  }
183
224
  }
184
225
  if (flags.json) {
185
- if (attachResult && attachTarget) {
226
+ if (attachResult && attachedXcodeId) {
186
227
  this.outputJson({
187
228
  ...instance,
188
- attach: (0, simulator_attach_1.simulatorAttachJson)(instance.metadata.id, attachTarget.id, attachResult),
229
+ ...(createdXcode ? { xcode: createdXcode } : {}),
230
+ attach: (0, simulator_attach_1.simulatorAttachJson)(instance.metadata.id, attachedXcodeId, attachResult),
189
231
  });
190
232
  }
191
233
  else {
@@ -212,7 +254,7 @@ class IosCreate extends base_command_1.BaseCommand {
212
254
  }
213
255
  }
214
256
  IosCreate.summary = 'Create a new iOS instance';
215
- IosCreate.description = 'Create a new cloud iOS simulator instance and wait for it to become ready. You can attach labels, install apps, choose a device model, and optionally enable an Xcode sandbox.';
257
+ IosCreate.description = 'Create a new cloud iOS simulator instance and wait for it to become ready. You can attach labels, install apps, choose a device model, and optionally create and attach an Xcode sandbox.';
216
258
  IosCreate.examples = [
217
259
  '<%= config.bin %> ios create',
218
260
  '<%= config.bin %> ios create --rm --model ipad',
@@ -291,7 +333,7 @@ IosCreate.flags = {
291
333
  description: 'Asset time-to-live for files uploaded via --install, as a Go duration (e.g. "24h", min 1m). Does not affect --install-asset. Defaults to no expiry.',
292
334
  }),
293
335
  xcode: core_1.Flags.boolean({
294
- description: 'Enable an attached Xcode sandbox for build and sync workflows',
336
+ description: 'Also create an Xcode sandbox and attach the simulator to it for build and sync workflows',
295
337
  default: false,
296
338
  }),
297
339
  attach: core_1.Flags.boolean({
@@ -1 +1 @@
1
- {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/ios/create.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/ios/create.ts"],"names":[],"mappings":";;;;;AAAA,gDAAwB;AACxB,sCAA0C;AAC1C,qDAAiD;AACjD,qDAAmD;AACnD,6CAA2D;AAC3D,+CAAkD;AAClD,iEAA8F;AAC9F,iDAAsD;AACtD,+EAAiF;AAIjF,MAAqB,SAAU,SAAQ,0BAAW;IAyGhD,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACpD,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC,IAAI,CACP,8FAA8F,CAC/F,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC3B,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAChC,IAAI,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC1D,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAClC,IAAI,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;QACzD,CAAC;QACD,MAAM,wBAAwB,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,CAAC;QAClG,IAAI,CAAC,wBAAwB,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC,EAAE,CAAC;YAC5F,IAAI,CAAC,KAAK,CAAC,wFAAwF,CAAC,CAAC;QACvG,CAAC;QAED,IAAI,qBAAyC,CAAC;QAC9C,IAAI,wBAAwB,EAAE,CAAC;YAC7B,IAAI,CAAC;gBACH,qBAAqB,GAAG,MAAM,IAAA,sDAA4B,EAAC;oBACzD,aAAa,EAAE,KAAK,CAAC,gBAAgB,CAAC;oBACtC,kBAAkB,EAAE,KAAK,CAAC,sBAAsB,CAAC;iBAClD,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,KAAK,CAAE,KAAe,CAAC,OAAO,CAAC,CAAC;YACvC,CAAC;QACH,CAAC;QAED,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;YAC7B,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC5F,IAAI,YAAY,IAAI,YAAY,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAClD,IAAI,CAAC,KAAK,CACR,4GAA4G,CAC7G,CAAC;YACJ,CAAC;YACD,MAAM,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAE5F,MAAM,UAAU,GAAa,CAAC,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YACjE,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;gBAClB,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;oBACrC,MAAM,QAAQ,GAAG,cAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;oBACxC,MAAM,IAAI,GAAG,cAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;oBACrC,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,KAAK,CAAC,CAAC;oBAClC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;wBACjD,IAAI,EAAE,QAAQ;wBACd,IAAI;wBACJ,GAAG,EAAE,KAAK,CAAC,WAAW,CAAC;qBACxB,CAAC,CAAC;oBACH,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC9B,CAAC;gBACD,IAAI,CAAC,IAAI,CAAC,yBAAyB,KAAK,CAAC,OAAO,CAAC,MAAM,UAAU,CAAC,CAAC;YACrE,CAAC;YAED,MAAM,MAAM,GAA4B;gBACtC,IAAI,EAAE,IAAI;gBACV,aAAa,EAAE,KAAK,CAAC,iBAAiB,CAAC,IAAI,SAAS;gBACpD,IAAI,EAAE,EAAE;aACT,CAAC;YAEF,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1B,MAAM,CAAC,IAAK,CAAC,aAAa,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;oBACrD,IAAI,EAAE,KAAc;oBACpB,MAAM,EAAE,WAAoB;oBAC5B,SAAS,EAAE,IAAI;iBAChB,CAAC,CAAC,CAAC;YACN,CAAC;YACD,IAAI,wBAAwB,EAAE,CAAC;gBAC7B,MAAM,aAAa,GAAG,qBAAsB,CAAC;gBAC7C,IAAI,CAAC,MAAM,CAAC,IAAI;oBAAE,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;gBACnC,MAAM,CAAC,IAAK,CAAC,aAAa,GAAG;oBAC3B,GAAG,CAAC,MAAM,CAAC,IAAK,CAAC,aAAa,IAAI,EAAE,CAAC;oBACrC,GAAG,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;wBACvC,IAAI,EAAE,UAAmB;wBACzB,MAAM,EAAE,WAAoB;wBAC5B,SAAS,EAAE,IAAI;wBACf,aAAa;qBACd,CAAC,CAAC;oBACH,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAC7C,IAAI,EAAE,UAAmB;wBACzB,MAAM,EAAE,KAAc;wBACtB,GAAG;wBACH,aAAa;qBACd,CAAC,CAAC;iBACJ,CAAC;YACJ,CAAC;YAED,IAAI,KAAK,CAAC,MAAM;gBAAE,MAAM,CAAC,IAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;YACrD,IAAI,KAAK,CAAC,YAAY;gBAAE,MAAM,CAAC,IAAK,CAAC,YAAY,GAAG,KAAK,CAAC,YAAkC,CAAC;YAC7F,IAAI,KAAK,CAAC,KAAK;gBAAE,MAAM,CAAC,IAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAoC,CAAC;YACjF,IAAI,KAAK,CAAC,cAAc,CAAC;gBAAE,MAAM,CAAC,IAAK,CAAC,WAAW,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC;YAC5E,IAAI,KAAK,CAAC,oBAAoB,CAAC;gBAAE,MAAM,CAAC,IAAK,CAAC,iBAAiB,GAAG,KAAK,CAAC,oBAAoB,CAAC,CAAC;YAC9F,IAAI,KAAK,CAAC,iBAAiB,CAAC;gBAAE,MAAM,CAAC,IAAK,CAAC,aAAa,GAAG,KAAK,CAAC,iBAAiB,CAAC,CAAC;YAEpF,MAAM,MAAM,GAAG,IAAA,wBAAW,EAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACxC,IAAI,KAAK,CAAC,cAAc,CAAC,IAAI,MAAM,EAAE,CAAC;gBACpC,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC;gBACrB,IAAI,KAAK,CAAC,cAAc,CAAC;oBAAE,MAAM,CAAC,QAAQ,CAAC,WAAW,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC;gBAC/E,IAAI,MAAM;oBAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC;YAC9C,CAAC;YAED,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC/B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC/D,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC;YAClD,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC/D,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC9D,IAAA,gCAAuB,EAAC,QAAQ,CAAC,CAAC;YAClC,IAAI,YAAuF,CAAC;YAC5F,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE;gBACzB,IAAI,CAAC;oBACH,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;oBAC5D,IAAI,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC,CAAC;gBAClD,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,IAAI,CAAC,IAAI,CAAC,8BAA8B,CAAC,EAAE,CAAC,CAAC;gBAC/C,CAAC;gBACD,IAAI,YAAY,EAAE,CAAC;oBACjB,IAAI,CAAC;wBACH,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;wBAClE,IAAI,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC,CAAC;oBACtD,CAAC;oBAAC,OAAO,CAAC,EAAE,CAAC;wBACX,IAAI,CAAC,IAAI,CAAC,8BAA8B,CAAC,EAAE,CAAC,CAAC;oBAC/C,CAAC;gBACH,CAAC;YACH,CAAC,CAAC;YACF,IAAI,YAA+C,CAAC;YACpD,IAAI,gBAAoC,CAAC;YACzC,IAAI,eAAmC,CAAC;YACxC,IAAI,YAAY,IAAI,YAAY,EAAE,CAAC;gBACjC,IAAI,CAAC;oBACH,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;oBAC/B,YAAY,GAAG,MAAM,YAAY,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;oBAC5D,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC;oBAC5C,eAAe,GAAG,YAAY,CAAC,EAAE,CAAC;gBACpC,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,IAAI,CAAC,IAAI,CAAC,wBAAwB,QAAQ,CAAC,QAAQ,CAAC,EAAE,sBAAsB,CAAC,CAAC;oBAC9E,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC;wBACb,MAAM,OAAO,EAAE,CAAC;oBAClB,CAAC;oBACD,MAAM,GAAG,CAAC;gBACZ,CAAC;YACH,CAAC;iBAAM,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;gBACvB,IAAI,CAAC;oBACH,YAAY,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC;wBACrD,IAAI,EAAE,IAAI;wBACV,aAAa,EAAE,KAAK,CAAC,iBAAiB,CAAC,IAAI,SAAS;wBACpD,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBACzD,IAAI,EAAE;4BACJ,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;4BACjD,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,YAAkC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;4BACzF,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;4BACxE,GAAG,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,KAAK,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;yBAC3F;qBACF,CAAC,CAAC;oBACH,IAAA,gCAAuB,EAAC,YAAY,CAAC,CAAC;oBACtC,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAC;oBAC9F,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;oBAC/B,YAAY,GAAG,MAAM,WAAW,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;oBAC3D,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC;oBAC5C,eAAe,GAAG,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC7C,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,IAAI,CAAC,IAAI,CACP,wBAAwB,QAAQ,CAAC,QAAQ,CAAC,EAAE,sDAAsD,CACnG,CAAC;oBACF,iEAAiE;oBACjE,iEAAiE;oBACjE,gEAAgE;oBAChE,IAAI,YAAY,EAAE,CAAC;wBACjB,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;wBAClF,YAAY,GAAG,SAAS,CAAC;oBAC3B,CAAC;oBACD,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC;wBACb,MAAM,OAAO,EAAE,CAAC;oBAClB,CAAC;oBACD,MAAM,GAAG,CAAC;gBACZ,CAAC;YACH,CAAC;YACD,MAAM,cAAc,GAClB,KAAK,CAAC,KAAK,CAAC,CAAC;gBACX,gEAAgE,IAAA,2BAAgB,EAC9E,gBAAgB,CACjB,GAAG;gBACN,CAAC,CAAC,iCAAiC,IAAA,2BAAgB,EAAC,gBAAgB,CAAC,GAAG,CAAC;YAC3E,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAC3B,IAAI,CAAC,IAAI,CAAC,SAAS,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;YAC3C,IAAI,CAAC,IAAI,CAAC,kBAAkB,UAAU,EAAE,CAAC,CAAC;YAC1C,IAAI,eAAe,EAAE,CAAC;gBACpB,IAAI,CAAC,IAAI,CAAC,wBAAwB,eAAe,EAAE,CAAC,CAAC;YACvD,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,aAAa,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YAC/C,IAAI,CAAC,IAAI,CAAC,YAAY,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YAC/C,IAAI,YAAY,EAAE,CAAC;gBACjB,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;gBAC7B,IAAI,CAAC,IAAI,CAAC,SAAS,YAAY,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC/C,IAAI,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;oBAC/B,IAAI,CAAC,IAAI,CAAC,UAAU,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;gBACpD,CAAC;YACH,CAAC;YACD,IAAI,YAAY,IAAI,eAAe,EAAE,CAAC;gBACpC,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;oBACnC,IAAI,CAAC,IAAI,CAAC,+BAA+B,IAAA,2BAAgB,EAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;gBAClF,CAAC;gBACD,IAAI,CAAC,IAAI,CAAC,IAAA,8CAA2B,EAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,eAAe,EAAE,YAAY,CAAC,CAAC,CAAC;YAC9F,CAAC;YAED,IAAI,KAAK,CAAC,IAAI,IAAI,eAAe,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;gBAChE,IAAI,MAAM,IAAA,uBAAa,EAAC,eAAe,CAAC,EAAE,CAAC;oBACzC,IAAI,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;gBAClD,CAAC;YACH,CAAC;YAED,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBACf,IAAI,YAAY,IAAI,eAAe,EAAE,CAAC;oBACpC,IAAI,CAAC,UAAU,CAAC;wBACd,GAAG,QAAQ;wBACX,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBAChD,MAAM,EAAE,IAAA,sCAAmB,EAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,eAAe,EAAE,YAAY,CAAC;qBACjF,CAAC,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;gBAC5B,CAAC;YACH,CAAC;iBAAM,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;gBACjC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YACpC,CAAC;YAED,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC;gBACb,IAAI,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;gBAChE,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;oBAClC,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,GAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;oBACjD,MAAM,QAAQ,GAAG,GAAG,EAAE;wBACpB,aAAa,CAAC,SAAS,CAAC,CAAC;wBACzB,OAAO,EAAE,CAAC;oBACZ,CAAC,CAAC;oBACF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;oBAC/B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;gBAClC,CAAC,CAAC,CAAC;gBACH,MAAM,OAAO,EAAE,CAAC;YAClB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;;AAzVM,iBAAO,GAAG,2BAA2B,CAAC;AACtC,qBAAW,GAChB,2LAA2L,CAAC;AAEvL,kBAAQ,GAAG;IAChB,8BAA8B;IAC9B,gDAAgD;IAChD,2EAA2E;IAC3E,qGAAqG;IACrG,uGAAuG;IACvG,oDAAoD;IACpD,2DAA2D;IAC3D,kEAAkE;CACnE,CAAC;AAEK,cAAI,GAAG;IACZ,OAAO,EAAE,WAAI,CAAC,MAAM,CAAC;QACnB,WAAW,EAAE,gFAAgF;QAC7F,QAAQ,EAAE,KAAK;KAChB,CAAC;CACH,CAAC;AAEK,eAAK,GAAG;IACb,GAAG,0BAAW,CAAC,SAAS;IACxB,EAAE,EAAE,YAAK,CAAC,OAAO,CAAC;QAChB,WAAW,EAAE,+DAA+D;QAC5E,OAAO,EAAE,KAAK;KACf,CAAC;IACF,cAAc,EAAE,YAAK,CAAC,MAAM,CAAC;QAC3B,WAAW,EAAE,+DAA+D;KAC7E,CAAC;IACF,MAAM,EAAE,YAAK,CAAC,MAAM,CAAC;QACnB,WAAW,EACT,kJAAkJ;KACrJ,CAAC;IACF,YAAY,EAAE,YAAK,CAAC,MAAM,CAAC;QACzB,WAAW,EACT,2JAA2J;QAC7J,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;KAC5B,CAAC;IACF,cAAc,EAAE,YAAK,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,sDAAsD,EAAE,CAAC;IACrG,oBAAoB,EAAE,YAAK,CAAC,MAAM,CAAC;QACjC,WAAW,EAAE,6EAA6E;KAC3F,CAAC;IACF,iBAAiB,EAAE,YAAK,CAAC,MAAM,CAAC;QAC9B,WAAW,EAAE,qEAAqE;KACnF,CAAC;IACF,KAAK,EAAE,YAAK,CAAC,MAAM,CAAC;QAClB,WAAW,EAAE,uEAAuE;QACpF,QAAQ,EAAE,IAAI;KACf,CAAC;IACF,KAAK,EAAE,YAAK,CAAC,MAAM,CAAC;QAClB,WAAW,EAAE,wBAAwB;QACrC,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC;KACrC,CAAC;IACF,iBAAiB,EAAE,YAAK,CAAC,OAAO,CAAC;QAC/B,WAAW,EAAE,mEAAmE;QAChF,OAAO,EAAE,KAAK;KACf,CAAC;IACF,eAAe,EAAE,YAAK,CAAC,MAAM,CAAC;QAC5B,WAAW,EAAE,iEAAiE;QAC9E,QAAQ,EAAE,IAAI;KACf,CAAC;IACF,QAAQ,EAAE,YAAK,CAAC,MAAM,CAAC;QACrB,WAAW,EAAE,mEAAmE;QAChF,QAAQ,EAAE,IAAI;KACf,CAAC;IACF,cAAc,EAAE,YAAK,CAAC,MAAM,CAAC;QAC3B,WAAW,EAAE,mEAAmE;QAChF,QAAQ,EAAE,IAAI;KACf,CAAC;IACF,gBAAgB,EAAE,YAAK,CAAC,MAAM,CAAC;QAC7B,WAAW,EAAE,wEAAwE;KACtF,CAAC;IACF,sBAAsB,EAAE,YAAK,CAAC,OAAO,CAAC;QACpC,WAAW,EACT,4FAA4F;QAC9F,OAAO,EAAE,KAAK;KACf,CAAC;IACF,OAAO,EAAE,YAAK,CAAC,MAAM,CAAC;QACpB,WAAW,EACT,+FAA+F;QACjG,QAAQ,EAAE,IAAI;KACf,CAAC;IACF,WAAW,EAAE,YAAK,CAAC,MAAM,CAAC;QACxB,WAAW,EACT,qJAAqJ;KACxJ,CAAC;IACF,KAAK,EAAE,YAAK,CAAC,OAAO,CAAC;QACnB,WAAW,EAAE,0FAA0F;QACvG,OAAO,EAAE,KAAK;KACf,CAAC;IACF,MAAM,EAAE,YAAK,CAAC,OAAO,CAAC;QACpB,WAAW,EAAE,0DAA0D;QACvE,OAAO,EAAE,KAAK;KACf,CAAC;IACF,IAAI,EAAE,YAAK,CAAC,OAAO,CAAC;QAClB,WAAW,EACT,+FAA+F;QACjG,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,IAAI;KACd,CAAC;CACH,CAAC;kBAvGiB,SAAS"}
@@ -1,10 +1,11 @@
1
1
  import { BaseCommand } from '../../base-command';
2
- export default class IosPlayOnMicrophone extends BaseCommand {
2
+ export default class IosMicrophone extends BaseCommand {
3
3
  static summary: string;
4
4
  static description: string;
5
5
  static examples: string[];
6
6
  static args: {
7
- path: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
7
+ action: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
8
+ path: import("@oclif/core/lib/interfaces").Arg<string | undefined, Record<string, unknown>>;
8
9
  };
9
10
  static flags: {
10
11
  id: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
@@ -18,4 +19,4 @@ export default class IosPlayOnMicrophone extends BaseCommand {
18
19
  };
19
20
  run(): Promise<void>;
20
21
  }
21
- //# sourceMappingURL=play-on-microphone.d.ts.map
22
+ //# sourceMappingURL=microphone.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"microphone.d.ts","sourceRoot":"","sources":["../../../src/commands/ios/microphone.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjD,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,WAAW;IACpD,MAAM,CAAC,OAAO,SAAgE;IAC9E,MAAM,CAAC,WAAW,SAG6C;IAE/D,MAAM,CAAC,QAAQ,WAKb;IAEF,MAAM,CAAC,IAAI;;;MAUT;IAEF,MAAM,CAAC,KAAK;;;;;;;;;MASV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA+C3B"}
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const fs_1 = __importDefault(require("fs"));
7
+ const path_1 = __importDefault(require("path"));
8
+ const core_1 = require("@oclif/core");
9
+ const base_command_1 = require("../../base-command");
10
+ const instance_client_factory_1 = require("../../lib/instance-client-factory");
11
+ class IosMicrophone extends base_command_1.BaseCommand {
12
+ async run() {
13
+ const { args, flags } = await this.parse(IosMicrophone);
14
+ this.setParsedFlags(flags);
15
+ await this.withAuth(async () => {
16
+ const resolvedInstance = this.resolveIosInstance(flags.id);
17
+ const { client, disconnect } = await (0, instance_client_factory_1.getIosInstanceClient)(this.client, resolvedInstance);
18
+ try {
19
+ if (args.action === 'stop') {
20
+ await client.stopMicrophonePlayback();
21
+ if (flags.json) {
22
+ this.outputJson({ stopped: true });
23
+ }
24
+ else {
25
+ this.output('Stopped microphone playback');
26
+ }
27
+ return;
28
+ }
29
+ if (!args.path) {
30
+ this.error('The `play` action requires an audio file path.');
31
+ }
32
+ const localPath = path_1.default.resolve(args.path);
33
+ if (!fs_1.default.existsSync(localPath)) {
34
+ this.error(`File not found: ${localPath}`);
35
+ }
36
+ const stat = fs_1.default.statSync(localPath);
37
+ if (!stat.isFile()) {
38
+ this.error(`Path is not a file: ${localPath}`);
39
+ }
40
+ const remoteName = path_1.default.basename(localPath);
41
+ this.info(`Uploading ${remoteName}...`);
42
+ await client.pushFile(localPath, remoteName);
43
+ const result = await client.playOnMicrophone(remoteName, { once: flags.once });
44
+ if (flags.json) {
45
+ this.outputJson(result);
46
+ }
47
+ else {
48
+ this.output(`Playing ${remoteName} on microphone (duration=${result.duration}us, once=${result.once})`);
49
+ }
50
+ }
51
+ finally {
52
+ disconnect();
53
+ }
54
+ });
55
+ }
56
+ }
57
+ IosMicrophone.summary = 'Control the simulated microphone of a running iOS instance';
58
+ IosMicrophone.description = 'Upload a local audio file (WAV/MP3/M4A/AAC) and play it as mocked microphone input on a running iOS instance. ' +
59
+ 'Playback loops until stopped by default; use --once to play a single pass. ' +
60
+ 'Use the `stop` action to return the microphone to silence.';
61
+ IosMicrophone.examples = [
62
+ '<%= config.bin %> ios microphone play ./sample.wav',
63
+ '<%= config.bin %> ios microphone play ./sample.mp3 --once',
64
+ '<%= config.bin %> ios microphone play ./sample.wav --id <instance-ID>',
65
+ '<%= config.bin %> ios microphone stop',
66
+ ];
67
+ IosMicrophone.args = {
68
+ action: core_1.Args.string({
69
+ description: 'Microphone action: `play` plays an audio file and `stop` stops mocked input',
70
+ required: true,
71
+ options: ['play', 'stop'],
72
+ }),
73
+ path: core_1.Args.string({
74
+ description: 'Local audio file to play as microphone input (required for the `play` action)',
75
+ required: false,
76
+ }),
77
+ };
78
+ IosMicrophone.flags = {
79
+ ...base_command_1.BaseCommand.baseFlags,
80
+ id: core_1.Flags.string({
81
+ description: 'iOS instance ID to target. Defaults to the last created iOS instance.',
82
+ }),
83
+ once: core_1.Flags.boolean({
84
+ description: 'Play the audio file once instead of looping it',
85
+ default: false,
86
+ }),
87
+ };
88
+ exports.default = IosMicrophone;
89
+ //# sourceMappingURL=microphone.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"microphone.js","sourceRoot":"","sources":["../../../src/commands/ios/microphone.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,16 @@
1
1
  import { BaseCommand } from '../base-command';
2
2
  export default class Run extends BaseCommand {
3
3
  static baseFlags: typeof BaseCommand.baseFlags;
4
+ static flags: {
5
+ 'ios-id': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
6
+ };
4
7
  static hiddenAliases: string[];
5
8
  static summary: string;
6
9
  static description: string;
7
10
  static examples: string[];
8
11
  private reporter;
9
12
  private runFailureStage;
13
+ private iosInstanceId;
10
14
  run(): Promise<void>;
11
15
  private runTelemetryProperties;
12
16
  private setupExistingProject;
@@ -1 +1 @@
1
- {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAiD9C,MAAM,CAAC,OAAO,OAAO,GAAI,SAAQ,WAAW;IAC1C,MAAM,CAAC,SAAS,EAGA,OAAO,WAAW,CAAC,SAAS,CAAC;IAC7C,MAAM,CAAC,aAAa,WAAU;IAC9B,MAAM,CAAC,OAAO,SAA6B;IAC3C,MAAM,CAAC,WAAW,SAAmF;IACrG,MAAM,CAAC,QAAQ,WAA6B;IAC5C,OAAO,CAAC,QAAQ,CAAyD;IACzE,OAAO,CAAC,eAAe,CAAqC;IAEtD,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAmE1B,OAAO,CAAC,sBAAsB;YAchB,oBAAoB;YAuCpB,wBAAwB;IAyBtC,OAAO,CAAC,iBAAiB;IAoBzB,OAAO,CAAC,gBAAgB;YAMV,YAAY;YAWZ,gBAAgB;YAwBhB,aAAa;YAoCb,qBAAqB;IAiFnC,OAAO,CAAC,qBAAqB;IAM7B,OAAO,CAAC,eAAe;CAQxB"}
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAkD9C,MAAM,CAAC,OAAO,OAAO,GAAI,SAAQ,WAAW;IAC1C,MAAM,CAAC,SAAS,EAGA,OAAO,WAAW,CAAC,SAAS,CAAC;IAC7C,MAAM,CAAC,KAAK;;MAKV;IACF,MAAM,CAAC,aAAa,WAAU;IAC9B,MAAM,CAAC,OAAO,SAA6B;IAC3C,MAAM,CAAC,WAAW,SAAmF;IACrG,MAAM,CAAC,QAAQ,WAA0E;IACzF,OAAO,CAAC,QAAQ,CAAyD;IACzE,OAAO,CAAC,eAAe,CAAqC;IAC5D,OAAO,CAAC,aAAa,CAAqB;IAEpC,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAqE1B,OAAO,CAAC,sBAAsB;YAchB,oBAAoB;YAuCpB,wBAAwB;IAyBtC,OAAO,CAAC,iBAAiB;IAoBzB,OAAO,CAAC,gBAAgB;YAMV,YAAY;YAWZ,gBAAgB;YAwBhB,aAAa;YAoCb,qBAAqB;IAiHnC,OAAO,CAAC,qBAAqB;IAM7B,OAAO,CAAC,eAAe;CAQxB"}
@@ -5,6 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const os_1 = __importDefault(require("os"));
7
7
  const path_1 = __importDefault(require("path"));
8
+ const core_1 = require("@oclif/core");
8
9
  const prompts_1 = __importDefault(require("prompts"));
9
10
  const base_command_1 = require("../base-command");
10
11
  const progress_1 = require("../lib/progress");
@@ -31,12 +32,14 @@ class Run extends base_command_1.BaseCommand {
31
32
  const { flags } = await this.parse(Run);
32
33
  this.setParsedFlags(flags);
33
34
  quiet = Boolean(flags.quiet);
35
+ this.iosInstanceId = flags['ios-id'];
34
36
  this.runFailureStage = 'project_detection';
35
37
  const detection = (0, project_detection_1.detectProject)(process.cwd());
36
38
  projectKind = detection.kind;
37
39
  await (0, telemetry_1.captureTelemetry)('cli_run_started', {
38
40
  project_kind: projectKind,
39
41
  quiet,
42
+ explicit_simulator: Boolean(this.iosInstanceId),
40
43
  });
41
44
  this.runFailureStage = 'project_selection';
42
45
  const useDetectedProject = detection.kind !== 'sample' ? await this.shouldUseDetectedProject(detection) : false;
@@ -217,33 +220,22 @@ class Run extends base_command_1.BaseCommand {
217
220
  let recoveryPrinted = false;
218
221
  try {
219
222
  return await this.withAuth(async () => {
223
+ // The simulator is created only after the build succeeds: a simulator
224
+ // that sits idle during a long build can hit its inactivity timeout
225
+ // and take the build sandbox down with it.
220
226
  this.runFailureStage = 'instance_create';
221
- const instance = await this.reporter.withProgress('Preparing a Limrun iOS simulator with Xcode', () => this.client.iosInstances.create({
227
+ const sandbox = await this.reporter.withProgress('Preparing a Limrun Xcode build sandbox', () => this.client.xcodeInstances.create({
222
228
  wait: true,
223
229
  reuseIfExists: true,
224
230
  metadata: {
225
231
  displayName,
226
232
  labels,
227
233
  },
228
- spec: {
229
- sandbox: {
230
- xcode: {
231
- enabled: true,
232
- },
233
- },
234
- },
235
234
  }));
236
- (0, config_1.registerCreatedInstance)(instance, ['xcode']);
237
- const xcodeUrl = instance.status.sandbox?.xcode?.url;
238
- if (!xcodeUrl) {
239
- this.error('The iOS instance is ready, but its Xcode sandbox URL is missing.');
240
- }
241
- const xcode = await this.client.xcodeInstances.createClient({
242
- apiUrl: xcodeUrl,
243
- token: instance.status.token,
244
- });
235
+ (0, config_1.registerCreatedInstance)(sandbox);
236
+ const xcode = await this.client.xcodeInstances.createClient({ instance: sandbox });
245
237
  this.runFailureStage = 'sync';
246
- await xcode.sync(projectRoot, { watch: false });
238
+ await this.reporter.withProgress('Syncing project to the sandbox', () => xcode.sync(projectRoot, { watch: false }));
247
239
  this.runFailureStage = 'build';
248
240
  const build = xcode.xcodebuild();
249
241
  this.reporter.start(progressLabel);
@@ -264,9 +256,50 @@ class Run extends base_command_1.BaseCommand {
264
256
  recoveryPrinted = true;
265
257
  this.error(`${failureLabel} with exit code ${result.exitCode}`, { exit: result.exitCode });
266
258
  }
267
- this.reporter.stop('success', `Built and launched in ${formatDurationMs(Date.now() - buildStart)}`);
259
+ this.reporter.stop('success', `Built in ${formatDurationMs(Date.now() - buildStart)}`);
260
+ // Attaching the simulator makes the sandbox install and launch the
261
+ // build it just produced.
262
+ this.runFailureStage = 'simulator_attach';
263
+ this.reporter.start('Launching app in a Limrun iOS simulator');
264
+ const launchStart = Date.now();
265
+ let simulator;
266
+ try {
267
+ if (this.iosInstanceId) {
268
+ simulator = await this.client.iosInstances.get(this.iosInstanceId);
269
+ }
270
+ else {
271
+ simulator = await this.client.iosInstances.create({
272
+ wait: true,
273
+ reuseIfExists: true,
274
+ metadata: {
275
+ displayName,
276
+ labels,
277
+ },
278
+ });
279
+ (0, config_1.registerCreatedInstance)(simulator);
280
+ }
281
+ const attach = await xcode.attachSimulator(simulator);
282
+ if (attach.installError) {
283
+ throw new Error(`Failed to install the built app on the simulator: ${attach.installError}`);
284
+ }
285
+ if (!attach.installedLastBuild &&
286
+ attach.latestBuild?.installState !== 'installedOnAttachedSimulator') {
287
+ throw new Error('The simulator is attached, but the built app was not installed on it.');
288
+ }
289
+ }
290
+ catch (err) {
291
+ this.reporter.stop('failure');
292
+ // The simulator is useless without the attach; never leak a billed
293
+ // one. Reuse only matches lim run's own labels, so a reused
294
+ // instance is part of this same workflow and fine to delete too.
295
+ if (simulator) {
296
+ await this.client.iosInstances.delete(simulator.metadata.id).catch(() => { });
297
+ }
298
+ throw err;
299
+ }
300
+ this.reporter.stop('success', `Launched app in ${formatDurationMs(Date.now() - launchStart)}`);
268
301
  this.runFailureStage = 'stream_url';
269
- const streamUrl = this.signedStreamUrl(instance.status);
302
+ const streamUrl = this.signedStreamUrl(simulator.status);
270
303
  if (!streamUrl) {
271
304
  this.error('The iOS instance is ready, but its signed stream URL is missing.');
272
305
  }
@@ -298,10 +331,15 @@ Run.baseFlags = {
298
331
  'api-key': base_command_1.BaseCommand.baseFlags['api-key'],
299
332
  quiet: base_command_1.BaseCommand.baseFlags.quiet,
300
333
  };
334
+ Run.flags = {
335
+ 'ios-id': core_1.Flags.string({
336
+ description: 'Launch the built app on this existing iOS simulator instance instead of creating a new one.',
337
+ }),
338
+ };
301
339
  Run.hiddenAliases = ['go'];
302
340
  Run.summary = 'Get started with Limrun';
303
341
  Run.description = 'Prepare your app for Limrun, or launch a working sample in a cloud simulator.';
304
- Run.examples = ['<%= config.bin %> run'];
342
+ Run.examples = ['<%= config.bin %> run', '<%= config.bin %> run --ios-id ios_abc123'];
305
343
  exports.default = Run;
306
344
  function humanPath(absolutePath, fromDir = process.cwd()) {
307
345
  const relative = path_1.default.relative(fromDir, absolutePath);
@@ -331,9 +369,9 @@ function interactivePathLabel(value) {
331
369
  }
332
370
  function buildProgressLabel(kind) {
333
371
  if (kind === 'expo') {
334
- return 'Building and launching app (est. 5-10m)';
372
+ return 'Building app (est. 5-10m)';
335
373
  }
336
- return 'Building and launching app (est. 30s-5m)';
374
+ return 'Building app (est. 30s-5m)';
337
375
  }
338
376
  function samplePrompt() {
339
377
  return `Change \`Hello, world!\` to \`Hello, ${environmentUserName()}!\` and use Limrun skills.`;