@homebridge-plugins/homebridge-august 3.1.3 → 3.2.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.
@@ -3,8 +3,8 @@
3
3
  * lock.ts: homebridge-august.
4
4
  */
5
5
  import August from 'august-yale';
6
- import { interval, Subject } from 'rxjs';
7
- import { debounceTime, filter, tap } from 'rxjs/operators';
6
+ import { Subject } from 'rxjs';
7
+ import { debounceTime, tap } from 'rxjs/operators';
8
8
  import { deviceBase } from './device.js';
9
9
  /**
10
10
  * Platform Accessory
@@ -124,12 +124,11 @@ export class LockMechanism extends deviceBase {
124
124
  // needed. The August.subscribe() call uses its own internal August
125
125
  // instance dedicated to PubNub, separate from platform.augustConfig.
126
126
  this.subscribeAugust();
127
- // Start an update interval
128
- interval(this.deviceRefreshRate * 1000)
129
- .pipe(filter(() => !this.lockUpdateInProgress))
130
- .subscribe(async () => {
131
- await this.refreshStatus();
132
- });
127
+ // Polling is now owned by the platform. AugustPlatform.startPolling()
128
+ // iterates registered locks serially and short-circuits on the first
129
+ // failure, so a network outage produces ONE timeout per cycle instead
130
+ // of N (one per lock). The previous per-lock rxjs interval that lived
131
+ // here was the source of the log-spam cascade after router restarts.
133
132
  // Watch for Lock change events
134
133
  // We put in a debounce of 100ms so we don't make duplicate calls
135
134
  if (!device.lock?.hide_lock) {
@@ -273,116 +272,98 @@ export class LockMechanism extends deviceBase {
273
272
  }
274
273
  }
275
274
  /**
276
- * Asks the August Home API for the latest device information
275
+ * Asks the August Home API for the latest device information.
276
+ *
277
+ * Used for the initial fetch in the constructor. Periodic polling is
278
+ * driven by AugustPlatform.startPolling(), which calls applyRefresh()
279
+ * directly with details fetched serially across all registered locks.
280
+ *
281
+ * On failure: returns silently. The ConnectivityManager has already
282
+ * classified the error and (if it's a network error) put itself into
283
+ * 'degraded' state — a probe is scheduled and the next poll cycle
284
+ * will skip until the probe confirms recovery.
277
285
  */
278
286
  async refreshStatus() {
279
- if (this.deviceRefreshRate !== 0) {
280
- try {
281
- // Update Lock Details
282
- if (this.platform.augustConfig && this.platform.augustConfig.details) {
283
- const lockDetails = await this.platform.augustConfig.details(this.device.lockId);
284
- await this.debugSuccessLog(`(refreshStatus) lockDetails: ${JSON.stringify(lockDetails)}`);
285
- // Update HomeKit
286
- this.lockDetails = lockDetails;
287
- this.lockStatus = lockDetails.LockStatus;
288
- await this.parseStatus();
289
- await this.updateHomeKitCharacteristics();
290
- }
291
- else {
292
- await this.errorLog('(refreshStatus) lockDetails: No details');
293
- }
294
- }
295
- catch (e) {
296
- await this.statusCode('(refreshStatus) lockDetails', e);
297
- await this.errorLog(`(refreshStatus) lockDetails: ${e.message ?? e}`);
298
- // Check if this is a timeout error and retry once after session refresh
299
- if (this.isTimeoutError(e)) {
300
- try {
301
- await this.debugLog('Timeout detected, refreshing August session and retrying...');
302
- await this.platform.refreshAugustSession();
303
- // Retry the operation once
304
- if (this.platform.augustConfig && this.platform.augustConfig.details) {
305
- const lockDetails = await this.platform.augustConfig.details(this.device.lockId);
306
- await this.debugSuccessLog(`(refreshStatus retry) lockDetails: ${JSON.stringify(lockDetails)}`);
307
- // Update HomeKit
308
- this.lockDetails = lockDetails;
309
- this.lockStatus = lockDetails.LockStatus;
310
- await this.parseStatus();
311
- await this.updateHomeKitCharacteristics();
312
- }
313
- }
314
- catch (retryError) {
315
- await this.errorLog(`(refreshStatus retry) failed: ${retryError.message ?? retryError}`);
316
- }
317
- }
318
- }
319
- }
320
- else {
287
+ if (this.deviceRefreshRate === 0) {
321
288
  await this.debugLog(`(refreshStatus) deviceRefreshRate: ${this.deviceRefreshRate}`);
289
+ return;
290
+ }
291
+ if (!this.platform.connectivity) {
292
+ await this.debugLog('(refreshStatus) connectivity not initialized — skipping');
293
+ return;
294
+ }
295
+ const lockDetails = await this.platform.connectivity.execute(`refreshStatus ${this.accessory.displayName}`, client => client.details(this.device.lockId));
296
+ if (lockDetails === undefined) {
297
+ // Either offline, or the call failed. ConnectivityManager has the
298
+ // state machine; nothing to do here.
299
+ return;
322
300
  }
301
+ await this.applyRefresh(lockDetails);
302
+ }
303
+ /**
304
+ * Apply a freshly-fetched lockDetails payload to HomeKit characteristics.
305
+ *
306
+ * Public so AugustPlatform.startPolling() can hand-off the result of
307
+ * its serial details() call without going through refreshStatus()
308
+ * (which would re-fetch).
309
+ */
310
+ async applyRefresh(lockDetails) {
311
+ await this.debugSuccessLog(`(applyRefresh) lockDetails: ${JSON.stringify(lockDetails)}`);
312
+ this.lockDetails = lockDetails;
313
+ this.lockStatus = lockDetails.LockStatus;
314
+ await this.parseStatus();
315
+ await this.updateHomeKitCharacteristics();
323
316
  }
324
317
  /**
325
318
  * Pushes the requested changes to the August API
326
319
  */
327
320
  async pushChanges() {
321
+ if (!this.LockMechanism) {
322
+ await this.errorLog(`lockTargetState: ${JSON.stringify(this.LockMechanism)}`);
323
+ return;
324
+ }
325
+ const targetState = this.LockMechanism.LockTargetState;
326
+ const currentState = this.LockMechanism.LockCurrentState;
327
+ if (targetState === currentState) {
328
+ await this.debugLog(`No changes, LockTargetState: ${targetState}, LockCurrentState: ${currentState}`);
329
+ this.LockMechanism.LockTargetState = currentState === this.hap.Characteristic.LockCurrentState.SECURED
330
+ ? this.hap.Characteristic.LockTargetState.SECURED
331
+ : this.hap.Characteristic.LockTargetState.UNSECURED;
332
+ await this.updateHomeKitCharacteristics();
333
+ return;
334
+ }
335
+ await this.debugLog(`Making API call - Target: ${targetState}, Current: ${currentState}`);
336
+ if (!this.platform.connectivity) {
337
+ await this.errorLog('pushChanges: connectivity not initialized');
338
+ return;
339
+ }
328
340
  try {
329
- // await this.platform.augustCredentials();
330
- if (this.LockMechanism) {
331
- if (this.LockMechanism.LockTargetState !== this.LockMechanism.LockCurrentState) {
332
- // Double-check that we still need to make the API call
333
- const targetState = this.LockMechanism.LockTargetState;
334
- const currentState = this.LockMechanism.LockCurrentState;
335
- if (targetState !== currentState) {
336
- await this.debugLog(`Making API call - Target: ${targetState}, Current: ${currentState}`);
337
- if (targetState === this.hap.Characteristic.LockTargetState.UNSECURED) {
338
- await this.platform.augustConfig.unlock(this.device.lockId);
339
- }
340
- else {
341
- await this.platform.augustConfig.lock(this.device.lockId);
342
- }
343
- await this.successLog(`Sending request to August API: ${targetState === 1 ? 'Locked' : 'Unlocked'}`);
344
- }
345
- else {
346
- await this.debugLog(`States synchronized before API call - Target: ${targetState}, Current: ${currentState}`);
347
- }
341
+ // throwOnOffline:true: user-initiated lock/unlock should fail
342
+ // visibly to HomeKit when the network is down rather than
343
+ // silently dropping the request. The ConnectivityManager
344
+ // classifies the error and updates state, but we re-raise so
345
+ // HomeKit sees a real failure.
346
+ //
347
+ // The manager handles auth/network failures internally
348
+ // (rebuilds the client on auth, schedules a probe on network),
349
+ // so the explicit retry block that used to live here is gone.
350
+ // If the user retries the action, the manager will either be
351
+ // recovered by then or still offline (and throw OfflineError
352
+ // again).
353
+ await this.platform.connectivity.execute(`pushChanges ${this.device.lockId}`, async (client) => {
354
+ if (targetState === this.hap.Characteristic.LockTargetState.UNSECURED) {
355
+ await client.unlock(this.device.lockId);
348
356
  }
349
357
  else {
350
- await this.debugLog(`No changes, LockTargetState: ${this.LockMechanism.LockTargetState},`
351
- + ` LockCurrentState: ${this.LockMechanism.LockCurrentState}`);
352
- this.LockMechanism.LockTargetState = this.LockMechanism.LockCurrentState === this.hap.Characteristic.LockCurrentState.SECURED
353
- ? this.hap.Characteristic.LockTargetState.SECURED
354
- : this.hap.Characteristic.LockTargetState.UNSECURED;
358
+ await client.lock(this.device.lockId);
355
359
  }
356
- await this.updateHomeKitCharacteristics();
357
- }
358
- else {
359
- await this.errorLog(`lockTargetState: ${JSON.stringify(this.LockMechanism)}`);
360
- }
360
+ }, { throwOnOffline: true });
361
+ await this.successLog(`Sending request to August API: ${targetState === 1 ? 'Locked' : 'Unlocked'}`);
362
+ await this.updateHomeKitCharacteristics();
361
363
  }
362
364
  catch (e) {
363
365
  await this.statusCode('pushChanges', e);
364
- await this.debugLog(`pushChanges: ${e.message ?? e}`);
365
- // Check if this is a timeout error and retry once after session refresh
366
- if (this.isTimeoutError(e)) {
367
- try {
368
- await this.debugLog('Timeout detected in pushChanges, refreshing August session and retrying...');
369
- await this.platform.refreshAugustSession();
370
- // Retry the operation once
371
- if (this.LockMechanism && this.LockMechanism.LockTargetState !== this.LockMechanism.LockCurrentState) {
372
- if (this.LockMechanism.LockTargetState === this.hap.Characteristic.LockTargetState.UNSECURED) {
373
- await this.platform.augustConfig.unlock(this.device.lockId);
374
- }
375
- else {
376
- await this.platform.augustConfig.lock(this.device.lockId);
377
- }
378
- await this.successLog(`Retry: Sending request to August API: ${this.LockMechanism.LockTargetState === 1 ? 'Locked' : 'Unlocked'}`);
379
- await this.updateHomeKitCharacteristics();
380
- }
381
- }
382
- catch (retryError) {
383
- await this.errorLog(`(pushChanges retry) failed: ${retryError.message ?? retryError}`);
384
- }
385
- }
366
+ await this.errorLog(`pushChanges: ${e.message ?? e}`);
386
367
  }
387
368
  }
388
369
  /**
@@ -421,6 +402,15 @@ export class LockMechanism extends deviceBase {
421
402
  this.doLockUpdate.next();
422
403
  }
423
404
  }
405
+ // Holds the PubNub status-listener unsubscribe alongside the channel
406
+ // unsubscribe (this.pubnubUnsubscribe). Both are owned by the same
407
+ // August instance underneath; both need to be torn down on lock
408
+ // removal.
409
+ pubnubStatusUnsubscribe;
410
+ // The August instance that owns the PubNub WebSocket for THIS lock.
411
+ // Kept so we can register status listeners on it. Distinct from
412
+ // platform.connectivity's August (which is for HTTP only).
413
+ pubnubAugust;
424
414
  async subscribeAugust() {
425
415
  await this.debugLog('subscribeAugust');
426
416
  await this.platform.augustCredentials();
@@ -431,7 +421,29 @@ export class LockMechanism extends deviceBase {
431
421
  // to call again in the future.
432
422
  this.tearDownPubNubSubscription();
433
423
  const normalizedCredentials = await this.platform.getNormalizedCredentials();
434
- this.pubnubUnsubscribe = await August.subscribe(normalizedCredentials, this.device.lockId, async (AugustEvent, timestamp) => {
424
+ // Construct an August instance manually so we can register a
425
+ // PubNub status listener on the same instance that owns the
426
+ // channel subscription. The previous code used the static
427
+ // August.subscribe(), which hides the instance and made it
428
+ // impossible to register status listeners.
429
+ this.pubnubAugust = new August(normalizedCredentials);
430
+ // Status listener: feed PubNub reconnect events into the
431
+ // platform's ConnectivityManager. PubNub's WebSocket reconnects
432
+ // seconds before HTTP polling would notice the network is back,
433
+ // so this is the fastest signal connectivity has recovered.
434
+ // Defensive guard around connectivity in case this method is
435
+ // ever called before the manager is initialized.
436
+ this.pubnubStatusUnsubscribe = this.pubnubAugust.onPubNubStatus((status) => {
437
+ const category = status?.category;
438
+ if (category === 'PNConnectedCategory' || category === 'PNReconnectedCategory') {
439
+ this.debugLog(`PubNub status: ${category} — signalling connectivity recovery`);
440
+ this.platform.connectivity?.onPubNubReconnect();
441
+ }
442
+ else if (category === 'PNNetworkDownCategory' || category === 'PNDisconnectedCategory') {
443
+ this.debugLog(`PubNub status: ${category}`);
444
+ }
445
+ });
446
+ this.pubnubUnsubscribe = await this.pubnubAugust.subscribe(this.device.lockId, async (AugustEvent, timestamp) => {
435
447
  await this.debugLog(`AugustEvent: ${JSON.stringify(AugustEvent)}, ${JSON.stringify(timestamp)}`);
436
448
  // Update HomeKit
437
449
  this.lockEvent = AugustEvent;
@@ -449,6 +461,15 @@ export class LockMechanism extends deviceBase {
449
461
  * the PubNub instance, WebSocket connection, and listener.
450
462
  */
451
463
  tearDownPubNubSubscription() {
464
+ if (this.pubnubStatusUnsubscribe) {
465
+ try {
466
+ this.pubnubStatusUnsubscribe();
467
+ }
468
+ catch (e) {
469
+ this.debugLog(`Error tearing down PubNub status listener: ${e.message || e}`);
470
+ }
471
+ this.pubnubStatusUnsubscribe = undefined;
472
+ }
452
473
  if (this.pubnubUnsubscribe) {
453
474
  try {
454
475
  this.pubnubUnsubscribe();
@@ -458,6 +479,15 @@ export class LockMechanism extends deviceBase {
458
479
  }
459
480
  this.pubnubUnsubscribe = undefined;
460
481
  }
482
+ if (this.pubnubAugust) {
483
+ try {
484
+ this.pubnubAugust.destroy();
485
+ }
486
+ catch (e) {
487
+ this.debugLog(`Error destroying PubNub August instance: ${e.message || e}`);
488
+ }
489
+ this.pubnubAugust = undefined;
490
+ }
461
491
  }
462
492
  }
463
493
  //# sourceMappingURL=lock.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"lock.js","sourceRoot":"","sources":["../../src/devices/lock.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,OAAO,MAAM,MAAM,aAAa,CAAA;AAChC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AAE1D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC;;;;GAIG;AACH,MAAM,OAAO,aAAc,SAAQ,UAAU;IAsChC;IArCX,UAAU;IACF,aAAa,CAKpB;IAEO,OAAO,CAMd;IAEO,aAAa,CAIpB;IAED,iBAAiB;IACjB,SAAS,CAAY;IACrB,UAAU,CAAa;IACvB,WAAW,CAAc;IAEzB,eAAe;IACf,oBAAoB,CAAS;IAC7B,YAAY,CAAK;IAEjB,yEAAyE;IACzE,uEAAuE;IACvE,gEAAgE;IACxD,iBAAiB,CAAa;IAEtC,YACW,QAAwB,EACjC,SAA4B,EAC5B,MAA8B;QAE9B,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAA;QAJzB,aAAQ,GAAR,QAAQ,CAAgB;QAMjC,iFAAiF;QACjF,IAAI,CAAC,YAAY,GAAG,IAAI,OAAO,EAAE,CAAA;QACjC,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAA;QAEjC,oCAAoC;QACpC,IAAI,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC;YAC3B,IAAI,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE,CAAC;gBAChC,IAAI,CAAC,QAAQ,CAAC,iCAAiC,CAAC,CAAA;gBAChD,IAAI,CAAC,aAAa,CAAC,OAAO,GAAG,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,CAAY,CAAA;gBAC5F,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;gBACnD,SAAS,CAAC,OAAO,CAAC,aAAa,GAAG,EAAE,CAAA;YACtC,CAAC;QACH,CAAC;aAAM,CAAC;YACN,SAAS,CAAC,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,OAAO,CAAC,aAAa,IAAI,EAAE,CAAA;YACvE,IAAI,CAAC,aAAa,GAAG;gBACnB,IAAI,EAAE,SAAS,CAAC,WAAW;gBAC3B,OAAO,EAAE,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,CAAY;gBAChI,eAAe,EAAE,SAAS,CAAC,OAAO,CAAC,4BAA4B,IAAI,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,eAAe,CAAC,OAAO;gBAClH,gBAAgB,EAAE,SAAS,CAAC,OAAO,CAAC,6BAA6B,IAAI,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,gBAAgB,CAAC,OAAO;aACtH,CAAA;YACD,SAAS,CAAC,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,aAAuB,CAAA;YAC9D,8DAA8D;YAC9D,SAAS,CAAC,OAAO,CAAC,6BAA6B,KAAK,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAA;YACvF,SAAS,CAAC,OAAO,CAAC,4BAA4B,KAAK,IAAI,CAAC,aAAa,CAAC,eAAe,CAAA;YACrF,4CAA4C;YAC5C,IAAI,CAAC,aAAa,CAAC,OAAO;iBACvB,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;iBACxE,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,eAAe,CAAC;iBAC1D,KAAK,CAAC,GAAG,EAAE;gBACV,OAAO,IAAI,CAAC,aAAc,CAAC,eAAe,CAAA;YAC5C,CAAC,CAAC;iBACD,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;QAC9C,CAAC;QACD,oCAAoC;QACpC,IAAI,MAAM,CAAC,IAAI,EAAE,kBAAkB,EAAE,CAAC;YACpC,IAAI,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE,CAAC;gBAChC,IAAI,CAAC,QAAQ,CAAC,gCAAgC,CAAC,CAAA;gBAC/C,IAAI,CAAC,aAAa,CAAC,OAAO,GAAG,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,CAAY,CAAA;gBAC5F,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;gBACnD,SAAS,CAAC,OAAO,CAAC,aAAa,GAAG,EAAE,CAAA;YACtC,CAAC;QACH,CAAC;aAAM,CAAC;YACN,SAAS,CAAC,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,OAAO,CAAC,aAAa,IAAI,EAAE,CAAA;YACvE,IAAI,CAAC,aAAa,GAAG;gBACnB,IAAI,EAAE,GAAG,SAAS,CAAC,WAAW,iBAAiB;gBAC/C,OAAO,EAAE,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,CAAY;gBAChI,kBAAkB,EAAE,SAAS,CAAC,OAAO,CAAC,+BAA+B,IAAI,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,kBAAkB,CAAC,gBAAgB;aACrI,CAAA;YACD,SAAS,CAAC,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,aAAuB,CAAA;YAC9D,6DAA6D;YAC7D,SAAS,CAAC,OAAO,CAAC,+BAA+B,KAAK,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAA;YAC3F,2CAA2C;YAC3C,IAAI,CAAC,aAAa,CAAC,OAAO;iBACvB,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;iBACxE,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,kBAAkB,CAAC;iBAC7D,KAAK,CAAC,GAAG,EAAE;gBACV,OAAO,IAAI,CAAC,aAAc,CAAC,kBAAkB,CAAA;YAC/C,CAAC,CAAC,CAAA;QACN,CAAC;QAED,6BAA6B;QAC7B,SAAS,CAAC,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAA;QAC3D,IAAI,CAAC,OAAO,GAAG;YACb,IAAI,EAAE,GAAG,SAAS,CAAC,WAAW,UAAU;YACxC,OAAO,EAAE,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAY;YACpH,YAAY,EAAE,SAAS,CAAC,OAAO,CAAC,mBAAmB,IAAI,GAAG;YAC1D,gBAAgB,EAAE,SAAS,CAAC,OAAO,CAAC,uBAAuB,IAAI,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,gBAAgB,CAAC,oBAAoB;YAC5H,aAAa,EAAE,SAAS,CAAC,OAAO,CAAC,aAAa,IAAI,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,aAAa,CAAC,YAAY;SACrG,CAAA;QACD,SAAS,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,OAAiB,CAAA;QAClD,8DAA8D;QAC9D,SAAS,CAAC,OAAO,CAAC,mBAAmB,KAAK,IAAI,CAAC,OAAO,CAAC,YAAY,CAAA;QACnE,SAAS,CAAC,OAAO,CAAC,uBAAuB,KAAK,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAA;QAC3E,qCAAqC;QACrC,IAAI,CAAC,OAAO,CAAC,OAAO;aACjB,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;aAClE,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,aAAa,EAAE,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,aAAa,CAAC,cAAc,CAAC;aAC9G,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,YAAY,CAAC;aACvD,KAAK,CAAC,GAAG,EAAE;YACV,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAA;QAClC,CAAC,CAAC,CAAA;QAEJ,IAAI,CAAC,OAAO,CAAC,OAAO;aACjB,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,gBAAgB,CAAC;aAC3D,KAAK,CAAC,GAAG,EAAE;YACV,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAA;QACtC,CAAC,CAAC,CAAA;QAEJ,yBAAyB;QACzB,IAAI,CAAC,aAAa,EAAE,CAAA;QAEpB,uEAAuE;QACvE,uEAAuE;QACvE,mEAAmE;QACnE,qEAAqE;QACrE,IAAI,CAAC,eAAe,EAAE,CAAA;QAEtB,2BAA2B;QAC3B,QAAQ,CAAC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;aACpC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;aAC9C,SAAS,CAAC,KAAK,IAAI,EAAE;YACpB,MAAM,IAAI,CAAC,aAAa,EAAE,CAAA;QAC5B,CAAC,CAAC,CAAA;QAEJ,+BAA+B;QAC/B,iEAAiE;QACjE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC;YAC5B,IAAI,CAAC,YAAY;iBACd,IAAI,CACH,GAAG,CAAC,GAAG,EAAE;gBACP,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAA;YAClC,CAAC,CAAC,EACF,YAAY,CAAC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,CACzC;iBACA,SAAS,CAAC,KAAK,IAAI,EAAE;gBACpB,IAAI,CAAC;oBACH,MAAM,IAAI,CAAC,WAAW,EAAE,CAAA;gBAC1B,CAAC;gBAAC,OAAO,CAAM,EAAE,CAAC;oBAChB,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC,CAAA;oBACvC,MAAM,IAAI,CAAC,QAAQ,CAAC,6BAA6B,CAAC,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC,CAAA;gBACpE,CAAC;gBACD,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAA;YACnC,CAAC,CAAC,CAAA;QACN,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW;QACf,MAAM,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAA;QAClC,MAAM,UAAU,GAAG,CAAC,CAAA;QACpB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;gBAC5B,iBAAiB;gBACf,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;gBAC3D,IAAI,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC7F,MAAM,IAAI,CAAC,OAAO,CAAC,qBAAqB,IAAI,CAAC,aAAa,CAAC,gBAAgB,iCAAiC;0BACxG,gBAAgB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;gBACxD,CAAC;gBACD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,IAAI,IAAI,CAAC,aAAa,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACrI,IAAI,CAAC,aAAa,CAAC,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM;wBAChE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,gBAAgB,CAAC,OAAO;wBAClD,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ;4BAC9B,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,gBAAgB,CAAC,SAAS;4BACpD,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,gBAAgB,CAAC,OAAO,CAAA;oBACzH,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;wBAC/B,IAAI,CAAC,aAAa,CAAC,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAA;oBAC1E,CAAC;oBAED,IAAI,IAAI,CAAC,aAAa,CAAC,gBAAgB,KAAK,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;wBAC7F,MAAM,IAAI,CAAC,OAAO,CAAC,qBAAqB,IAAI,CAAC,aAAa,CAAC,gBAAgB,yBAAyB;8BAChG,gBAAgB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;oBACxD,CAAC;oBACD,MAAM,IAAI,CAAC,QAAQ,CAAC,qBAAqB,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,CAAC,CAAA;oBAC/E,MAAM,IAAI,CAAC,QAAQ,CAAC,oBAAoB,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE,CAAC,CAAA;gBAC/E,CAAC;gBACD,iBAAiB;gBACjB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,kBAAkB,IAAI,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE,CAAC;oBAC3E,qBAAqB;oBACnB,IAAI,CAAC,aAAa,CAAC,kBAAkB,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI;wBAChE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,kBAAkB,CAAC,oBAAoB;wBACjE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM;4BAC5B,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,kBAAkB,CAAC,gBAAgB;4BAC7D,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC;gCAC3C,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,kBAAkB,CAAC,oBAAoB;gCACjE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,QAAQ,CAAC,QAAQ,CAAC;oCAC7C,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,kBAAkB,CAAC,gBAAgB;oCAC7D,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAA;oBAC/C,MAAM,IAAI,CAAC,QAAQ,CAAC,uBAAuB,IAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE,CAAC,CAAA;gBACrF,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,CAAC,YAAY,CAAC,qBAAqB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;YACjF,CAAC;QACH,CAAC;QACD,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,eAAe;YACf,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;YAC1G,MAAM,IAAI,CAAC,QAAQ,CAAC,iBAAiB,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAA;YACjE,mBAAmB;YACnB,IAAI,CAAC,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,EAAE;gBAC5D,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,gBAAgB,CAAC,iBAAiB;gBAC5D,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,gBAAgB,CAAC,oBAAoB,CAAA;YACjE,MAAM,IAAI,CAAC,QAAQ,CAAC,qBAAqB,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAA;YACzE,mBAAmB;YACnB,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,sBAAsB,KAAK,IAAI,CAAC,WAAW,CAAC,sBAAsB,EAAE,CAAC;gBAC9F,MAAM,IAAI,CAAC,OAAO,CAAC,yDAAyD,IAAI,CAAC,WAAW,CAAC,sBAAsB,EAAE,CAAC,CAAA;gBACtH,IAAI,CAAC,SAAS;qBACX,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,oBAAoB,CAAE;qBAClD,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,gBAAgB,EAAE,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC;qBACpG,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,gBAAgB,EAAE,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC;qBACpG,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,gBAAgB,CAAC;qBAC3D,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAA;gBACvD,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAA;YACzF,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB;QACpB,MAAM,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAA;QACvC,MAAM,UAAU,GAAG,CAAC,CAAA;QACpB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;gBACzB,IAAI,CAAC,QAAQ,CAAC,cAAc,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;gBAC7D,iBAAiB;gBACjB,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;gBAC1D,IAAI,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC3F,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,oBAAoB;0BACvI,oBAAoB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;oBAC/D,OAAM;gBACR,CAAC;gBACD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,IAAI,IAAI,CAAC,aAAa,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACnI,IAAI,CAAC,aAAa,CAAC,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM;wBAC/D,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,gBAAgB,CAAC,OAAO;wBAClD,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ;4BAC7B,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,gBAAgB,CAAC,SAAS;4BACpD,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,gBAAgB,CAAC,OAAO,CAAA;oBACzH,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;wBAC/B,IAAI,CAAC,aAAa,CAAC,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAA;oBAC1E,CAAC;oBAED,IAAI,IAAI,CAAC,aAAa,CAAC,gBAAgB,KAAK,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;wBAC7F,MAAM,IAAI,CAAC,OAAO,CAAC,qBAAqB,IAAI,CAAC,aAAa,CAAC,gBAAgB,8BAA8B;8BACrG,eAAe,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;oBACtD,CAAC;oBACD,MAAM,IAAI,CAAC,QAAQ,CAAC,qBAAqB,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,CAAC,CAAA;oBAC/E,MAAM,IAAI,CAAC,QAAQ,CAAC,oBAAoB,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE,CAAC,CAAA;gBAC/E,CAAC;gBACD,iBAAiB;gBACjB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,kBAAkB,IAAI,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE,CAAC;oBAC3E,qBAAqB;oBACnB,IAAI,CAAC,aAAa,CAAC,kBAAkB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI;wBAC/D,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,kBAAkB,CAAC,oBAAoB;wBACjE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM;4BAC3B,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,kBAAkB,CAAC,gBAAgB;4BAC7D,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,KAAK,MAAM;gCACnC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,kBAAkB,CAAC,oBAAoB;gCACjE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,KAAK,QAAQ;oCACrC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,kBAAkB,CAAC,gBAAgB;oCAC7D,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAA;oBAC/C,MAAM,IAAI,CAAC,QAAQ,CAAC,uBAAuB,IAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE,CAAC,CAAA;gBACrF,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,CAAC,YAAY,CAAC,qBAAqB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;YACjF,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa;QACjB,IAAI,IAAI,CAAC,iBAAiB,KAAK,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC;gBACH,sBAAsB;gBACtB,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;oBACrE,MAAM,WAAW,GAAQ,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;oBACrF,MAAM,IAAI,CAAC,eAAe,CAAC,gCAAgC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;oBACzF,iBAAiB;oBACjB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;oBAC9B,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC,UAAU,CAAA;oBACxC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAA;oBACxB,MAAM,IAAI,CAAC,4BAA4B,EAAE,CAAA;gBAC3C,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,CAAC,QAAQ,CAAC,yCAAyC,CAAC,CAAA;gBAChE,CAAC;YACH,CAAC;YAAC,OAAO,CAAM,EAAE,CAAC;gBAChB,MAAM,IAAI,CAAC,UAAU,CAAC,6BAA6B,EAAE,CAAC,CAAC,CAAA;gBACvD,MAAM,IAAI,CAAC,QAAQ,CAAC,gCAAgC,CAAC,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC,CAAA;gBAErE,wEAAwE;gBACxE,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC3B,IAAI,CAAC;wBACH,MAAM,IAAI,CAAC,QAAQ,CAAC,6DAA6D,CAAC,CAAA;wBAClF,MAAM,IAAI,CAAC,QAAQ,CAAC,oBAAoB,EAAE,CAAA;wBAE1C,2BAA2B;wBAC3B,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;4BACrE,MAAM,WAAW,GAAQ,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;4BACrF,MAAM,IAAI,CAAC,eAAe,CAAC,sCAAsC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;4BAC/F,iBAAiB;4BACjB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;4BAC9B,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC,UAAU,CAAA;4BACxC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAA;4BACxB,MAAM,IAAI,CAAC,4BAA4B,EAAE,CAAA;wBAC3C,CAAC;oBACH,CAAC;oBAAC,OAAO,UAAe,EAAE,CAAC;wBACzB,MAAM,IAAI,CAAC,QAAQ,CAAC,iCAAiC,UAAU,CAAC,OAAO,IAAI,UAAU,EAAE,CAAC,CAAA;oBAC1F,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,CAAC,QAAQ,CAAC,sCAAsC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAA;QACrF,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW;QACf,IAAI,CAAC;YACH,2CAA2C;YAC3C,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;gBACvB,IAAI,IAAI,CAAC,aAAa,CAAC,eAAe,KAAK,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,CAAC;oBAC/E,uDAAuD;oBACvD,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,CAAA;oBACtD,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAA;oBAExD,IAAI,WAAW,KAAK,YAAY,EAAE,CAAC;wBACjC,MAAM,IAAI,CAAC,QAAQ,CAAC,6BAA6B,WAAW,cAAc,YAAY,EAAE,CAAC,CAAA;wBAEzF,IAAI,WAAW,KAAK,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC;4BACtE,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAa,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;wBAC9D,CAAC;6BAAM,CAAC;4BACN,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAa,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;wBAC5D,CAAC;wBACD,MAAM,IAAI,CAAC,UAAU,CAAC,kCAAkC,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAA;oBACtG,CAAC;yBAAM,CAAC;wBACN,MAAM,IAAI,CAAC,QAAQ,CAAC,iDAAiD,WAAW,cAAc,YAAY,EAAE,CAAC,CAAA;oBAC/G,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,CAAC,QAAQ,CAAC,gCAAgC,IAAI,CAAC,aAAa,CAAC,eAAe,GAAG;0BACrF,sBAAsB,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,CAAC,CAAA;oBAChE,IAAI,CAAC,aAAa,CAAC,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,gBAAgB,KAAK,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,gBAAgB,CAAC,OAAO;wBAC3H,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,eAAe,CAAC,OAAO;wBACjD,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,eAAe,CAAC,SAAS,CAAA;gBACvD,CAAC;gBACD,MAAM,IAAI,CAAC,4BAA4B,EAAE,CAAA;YAC3C,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,CAAC,QAAQ,CAAC,oBAAoB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAA;YAC/E,CAAC;QACH,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC,CAAA;YACvC,MAAM,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC,CAAA;YAErD,wEAAwE;YACxE,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3B,IAAI,CAAC;oBACH,MAAM,IAAI,CAAC,QAAQ,CAAC,4EAA4E,CAAC,CAAA;oBACjG,MAAM,IAAI,CAAC,QAAQ,CAAC,oBAAoB,EAAE,CAAA;oBAE1C,2BAA2B;oBAC3B,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,eAAe,KAAK,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,CAAC;wBACrG,IAAI,IAAI,CAAC,aAAa,CAAC,eAAe,KAAK,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC;4BAC7F,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAa,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;wBAC9D,CAAC;6BAAM,CAAC;4BACN,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAa,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;wBAC5D,CAAC;wBACD,MAAM,IAAI,CAAC,UAAU,CAAC,yCAAyC,IAAI,CAAC,aAAa,CAAC,eAAe,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAA;wBAClI,MAAM,IAAI,CAAC,4BAA4B,EAAE,CAAA;oBAC3C,CAAC;gBACH,CAAC;gBAAC,OAAO,UAAe,EAAE,CAAC;oBACzB,MAAM,IAAI,CAAC,QAAQ,CAAC,+BAA+B,UAAU,CAAC,OAAO,IAAI,UAAU,EAAE,CAAC,CAAA;gBACxF,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,4BAA4B;QAChC,MAAM,IAAI,CAAC,QAAQ,CAAC,8BAA8B,CAAC,CAAA;QACnD,iBAAiB;QACjB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,IAAI,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE,CAAC;YAChE,kBAAkB;YAClB,MAAM,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,eAAe,EAAE,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,eAAe,EAAE,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAA;YAC5K,mBAAmB;YACnB,MAAM,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,eAAe,EAAE,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,gBAAgB,EAAE,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,kBAAkB,EAAE,CAAC,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAA;QAC1M,CAAC;QACD,UAAU;QACV,eAAe;QACf,MAAM,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,cAAc,CAAC,CAAA;QACjJ,mBAAmB;QACnB,MAAM,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,CAAA;QAC7J,iBAAiB;QACjB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,kBAAkB,IAAI,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE,CAAC;YACzE,qBAAqB;YACrB,MAAM,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,eAAe,EAAE,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,kBAAkB,EAAE,IAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE,oBAAoB,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAA;QAC9M,CAAC;IACH,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,KAA0B;QACjD,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,IAAI,IAAI,CAAC,aAAa,CAAC,eAAe,KAAK,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,CAAC;gBAC/E,MAAM,IAAI,CAAC,QAAQ,CAAC,wBAAwB,KAAK,EAAE,CAAC,CAAA;YACtD,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,CAAC,QAAQ,CAAC,gCAAgC,IAAI,CAAC,aAAa,CAAC,eAAe,GAAG;sBACrF,sBAAsB,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,CAAC,CAAA;YAClE,CAAC;YAED,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,4BAA4B,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,GAAG,KAAK,CAAA;YAChG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAA;QAC1B,CAAC;IACH,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,MAAM,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAA;QACtC,MAAM,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAA;QACvC,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YAC5B,gEAAgE;YAChE,qEAAqE;YACrE,sEAAsE;YACtE,+BAA+B;YAC/B,IAAI,CAAC,0BAA0B,EAAE,CAAA;YAEjC,MAAM,qBAAqB,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,wBAAwB,EAAE,CAAA;YAC5E,IAAI,CAAC,iBAAiB,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,qBAAqB,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,WAAsB,EAAE,SAAe,EAAE,EAAE;gBAC3I,MAAM,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;gBAChG,iBAAiB;gBACjB,IAAI,CAAC,SAAS,GAAG,WAAW,CAAA;gBAC5B,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAA;gBAC7B,MAAM,IAAI,CAAC,4BAA4B,EAAE,CAAA;YAC3C,CAAC,CAAC,CAAA;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,CAAC,QAAQ,CAAC,iCAAiC,CAAC,CAAA;QACxD,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,0BAA0B;QACxB,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,IAAI,CAAC,iBAAiB,EAAE,CAAA;YAC1B,CAAC;YAAC,OAAO,CAAM,EAAE,CAAC;gBAChB,IAAI,CAAC,QAAQ,CAAC,2CAA2C,CAAC,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC,CAAA;YAC5E,CAAC;YACD,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAA;QACpC,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"lock.js","sourceRoot":"","sources":["../../src/devices/lock.ts"],"names":[],"mappings":"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"}
package/dist/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@homebridge-plugins/homebridge-august",
3
3
  "displayName": "August",
4
4
  "type": "module",
5
- "version": "3.1.3",
5
+ "version": "3.2.0",
6
6
  "description": "The August plugin allows you to access your August & Yale device(s) from HomeKit.",
7
7
  "author": {
8
8
  "name": "donavanbecker",
@@ -62,7 +62,7 @@
62
62
  },
63
63
  "dependencies": {
64
64
  "@homebridge/plugin-ui-utils": "^2.2.3",
65
- "august-yale": "^1.1.7",
65
+ "august-yale": "^1.2.0",
66
66
  "rxjs": "^7.8.2"
67
67
  },
68
68
  "devDependencies": {
@@ -80,4 +80,4 @@
80
80
  "typescript": "^6.0.3",
81
81
  "vitest": "^4.1.5"
82
82
  }
83
- }
83
+ }
@@ -1,6 +1,7 @@
1
1
  import type { API, DynamicPlatformPlugin, Logging, PlatformAccessory } from 'homebridge';
2
2
  import type { AugustPlatformConfig, credentials, device, devicesConfig, options } from './settings.js';
3
3
  import August from 'august-yale';
4
+ import { ConnectivityManager } from './connectivity-manager.js';
4
5
  /**
5
6
  * HomebridgePlatform
6
7
  * This class is the main constructor for your plugin, this is where you should
@@ -20,10 +21,9 @@ export declare class AugustPlatform implements DynamicPlatformPlugin {
20
21
  debugMode: boolean;
21
22
  version: string;
22
23
  augustConfig?: August;
23
- private sessionRefreshPromise?;
24
- private lastSessionRefresh;
25
- private static readonly SESSION_REFRESH_COOLDOWN_MS;
24
+ connectivity?: ConnectivityManager;
26
25
  private readonly lockMechanisms;
26
+ private pollTimer?;
27
27
  private normalizedCredentialsCache?;
28
28
  constructor(log: Logging, config: AugustPlatformConfig, api: API);
29
29
  /**
@@ -61,26 +61,33 @@ export declare class AugustPlatform implements DynamicPlatformPlugin {
61
61
  */
62
62
  getNormalizedCredentials(): Promise<credentials>;
63
63
  /**
64
- * Refresh the August session.
64
+ * Start the platform-level poll cycle. Iterates registered locks
65
+ * SERIALLY (not in parallel) and short-circuits on the first failure.
65
66
  *
66
- * Uses promise coalescing: if multiple locks hit 502 simultaneously,
67
- * they all await the same refresh promise instead of each triggering
68
- * their own. This prevents cascading refreshes where each lock destroys
69
- * the instance the previous lock just created.
67
+ * Why serial:
68
+ * - One outstanding request at a time on a healthy network is cheap
69
+ * enough (most cycles complete in <1s for a handful of locks) and
70
+ * avoids racing the August API.
71
+ * - On a failing network, a parallel cycle would produce N timeouts
72
+ * ~simultaneously, which is exactly the log-spam pattern the
73
+ * ConnectivityManager exists to prevent. Serial means one timeout,
74
+ * classified once, and the rest of the cycle aborts.
70
75
  *
71
- * Also enforces a cooldown period: refreshes within SESSION_REFRESH_COOLDOWN_MS
72
- * of the last attempt are skipped. This prevents wasted sequential refreshes
73
- * during prolonged network outages — without this, every poll cycle (default
74
- * 30s) would trigger a new POST /session call to August, risking rate limiting
75
- * and spamming logs.
76
+ * Why short-circuit on first failure:
77
+ * - If the first call fails with a network error, the manager has
78
+ * already entered 'degraded' state and scheduled a probe. The
79
+ * remaining N-1 calls would all hit the same dead network and
80
+ * produce identical errors. Aborting the cycle is the correct
81
+ * thing to do.
76
82
  *
77
- * PubNub subscriptions are independent of the HTTP session (August.subscribe
78
- * uses its own internal August instance), so they are NOT torn down or
79
- * rebuilt during a session refresh. Only the HTTP client (augustConfig)
80
- * is recreated.
83
+ * Why skip when offline:
84
+ * - The manager's state machine is already managing recovery via
85
+ * scheduled probes. Polling on top of that just wastes API calls
86
+ * and risks rate limiting.
81
87
  */
82
- refreshAugustSession(): Promise<void>;
83
- private executeSessionRefresh;
88
+ startPolling(): void;
89
+ /** Stop the platform poll cycle. Called from shutdown paths. */
90
+ stopPolling(): void;
84
91
  pluginConfig(): Promise<{
85
92
  pluginConfig: any;
86
93
  currentConfig: any;
@@ -1 +1 @@
1
- {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"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"}