@onekeyfe/hd-transport-react-native 1.2.0-alpha.68 → 1.2.0-alpha.69
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/BleTransport.d.ts +1 -1
- package/dist/BleTransport.d.ts.map +1 -1
- package/dist/bleStrategy.d.ts +6 -0
- package/dist/bleStrategy.d.ts.map +1 -1
- package/dist/constants.d.ts +2 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/index.d.ts +9 -80
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +210 -341
- package/jest.config.js +0 -5
- package/package.json +5 -5
- package/src/BleTransport.ts +1 -1
- package/src/__tests__/bleStrategy.test.ts +77 -7
- package/src/__tests__/protocolV2Link.test.ts +121 -28
- package/src/bleStrategy.ts +23 -10
- package/src/constants.ts +2 -1
- package/src/index.ts +229 -486
- package/src/__tests__/connectTimeout.test.ts +0 -281
- package/src/__tests__/protocolReprobe.test.ts +0 -132
- package/src/__tests__/protocolV1SchemaFixture.ts +0 -39
- package/src/__tests__/staleCallTimeout.test.ts +0 -210
- package/src/__tests__/writePacketTimeout.test.ts +0 -305
package/dist/BleTransport.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BleTransport.d.ts","sourceRoot":"","sources":["../src/BleTransport.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEjF,MAAM,CAAC,OAAO,OAAO,YAAY;IAC/B,EAAE,EAAE,MAAM,CAAC;IAEX,IAAI,SAA6B;IAEjC,MAAM,EAAE,MAAM,CAAC;IAEf,OAAO,
|
|
1
|
+
{"version":3,"file":"BleTransport.d.ts","sourceRoot":"","sources":["../src/BleTransport.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEjF,MAAM,CAAC,OAAO,OAAO,YAAY;IAC/B,EAAE,EAAE,MAAM,CAAC;IAEX,IAAI,SAA6B;IAEjC,MAAM,EAAE,MAAM,CAAC;IAEf,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAE5B,mBAAmB,EAAE,cAAc,CAAC;IAEpC,oBAAoB,EAAE,cAAc,CAAC;IAErC,kBAAkB,CAAC,EAAE,YAAY,CAAC;IAElC,sBAAsB,CAAC,EAAE,YAAY,CAAC;IAEtC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B,YAAY,CAAC,EAAE,MAAM,CAAC;gBAGpB,MAAM,EAAE,MAAM,EACd,mBAAmB,EAAE,cAAc,EACnC,oBAAoB,EAAE,cAAc;IAQhC,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAOlD"}
|
package/dist/bleStrategy.d.ts
CHANGED
|
@@ -10,4 +10,10 @@ export declare function resolveProtocolV2PacketCapacity({ platform, iosPacketLen
|
|
|
10
10
|
androidPacketLength?: number;
|
|
11
11
|
mtu?: number | null;
|
|
12
12
|
}): number;
|
|
13
|
+
export declare function shouldWriteProtocolV2WithResponse({ platform, highVolume, requestedWithResponse, characteristic, }: {
|
|
14
|
+
platform: BlePlatform;
|
|
15
|
+
highVolume: boolean;
|
|
16
|
+
requestedWithResponse?: boolean;
|
|
17
|
+
characteristic: BleWriteCapability;
|
|
18
|
+
}): boolean;
|
|
13
19
|
//# sourceMappingURL=bleStrategy.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bleStrategy.d.ts","sourceRoot":"","sources":["../src/bleStrategy.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,SAAS,GAAG,MAAM,CAAC;AAErD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,sBAAsB,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACxC,yBAAyB,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CAC5C,CAAC;AAEF,wBAAgB,qBAAqB,CAAC,cAAc,EAAE,kBAAkB,WAEvE;AAED,wBAAgB,+BAA+B,CAAC,EAC9C,QAAQ,EACR,
|
|
1
|
+
{"version":3,"file":"bleStrategy.d.ts","sourceRoot":"","sources":["../src/bleStrategy.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,SAAS,GAAG,MAAM,CAAC;AAErD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,sBAAsB,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACxC,yBAAyB,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CAC5C,CAAC;AAEF,wBAAgB,qBAAqB,CAAC,cAAc,EAAE,kBAAkB,WAEvE;AAED,wBAAgB,+BAA+B,CAAC,EAC9C,QAAQ,EACR,eAA+C,EAC/C,mBAAuD,EACvD,GAAG,GACJ,EAAE;IACD,QAAQ,EAAE,WAAW,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB,UAQA;AAED,wBAAgB,iCAAiC,CAAC,EAChD,QAAQ,EACR,UAAU,EACV,qBAAqB,EACrB,cAAc,GACf,EAAE;IACD,QAAQ,EAAE,WAAW,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,cAAc,EAAE,kBAAkB,CAAC;CACpC,WAIA"}
|
package/dist/constants.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export declare const IOS_PACKET_LENGTH = 128;
|
|
2
2
|
export declare const ANDROID_PACKET_LENGTH = 192;
|
|
3
|
-
export declare const
|
|
3
|
+
export declare const IOS_PROTOCOL_V2_PACKET_LENGTH = 244;
|
|
4
|
+
export declare const ANDROID_PROTOCOL_V2_PACKET_LENGTH = 514;
|
|
4
5
|
export declare const getBluetoothServiceUuids: () => string[];
|
|
5
6
|
export declare const getInfosForServiceUuid: (serviceUuid: string, deviceType: 'classic') => {
|
|
6
7
|
serviceUuid: string;
|
package/dist/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,iBAAiB,MAAM,CAAC;AACrC,eAAO,MAAM,qBAAqB,MAAM,CAAC;AACzC,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,iBAAiB,MAAM,CAAC;AACrC,eAAO,MAAM,qBAAqB,MAAM,CAAC;AACzC,eAAO,MAAM,6BAA6B,MAAM,CAAC;AACjD,eAAO,MAAM,iCAAiC,MAAM,CAAC;AA8BrD,eAAO,MAAM,wBAAwB,gBAA0B,CAAC;AAChE,eAAO,MAAM,sBAAsB,gBAAiB,MAAM,cAAc,SAAS;iBA1BhE,MAAM;;;QA2CtB,CAAC;AAEF,eAAO,MAAM,gBAAgB,UAAW,MAAM,GAAG,IAAI,WACP,CAAC;AAE/C,eAAO,MAAM,aAAa,UAAW,MAAM,GAAG,IAAI,UAAU,MAAM,GAAG,IAAI,YAGxE,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -8,7 +8,7 @@ declare class BleTransport {
|
|
|
8
8
|
id: string;
|
|
9
9
|
name: string;
|
|
10
10
|
device: Device;
|
|
11
|
-
mtuSize: number;
|
|
11
|
+
mtuSize: number | undefined;
|
|
12
12
|
writeCharacteristic: Characteristic;
|
|
13
13
|
notifyCharacteristic: Characteristic;
|
|
14
14
|
notifySubscription?: Subscription;
|
|
@@ -35,17 +35,6 @@ type ResolvedBleCharacteristics = {
|
|
|
35
35
|
notifyCharacteristic: Characteristic;
|
|
36
36
|
};
|
|
37
37
|
declare const getFirmwareUploadWriteRetryType: (error: unknown) => FirmwareUploadWriteRetryType | null;
|
|
38
|
-
/**
|
|
39
|
-
* Per-packet write budget. iOS only resolves writeWithoutResponse once CoreBluetooth
|
|
40
|
-
* reports the peripheral ready again; a peripheral wedged by its own firmware reboot
|
|
41
|
-
* stops reporting ready while staying connected, so the write promise never settles.
|
|
42
|
-
* Response timeouts cannot cover that — they are armed after the writes complete —
|
|
43
|
-
* and an unbounded write leaves the whole transport unusable until the process dies.
|
|
44
|
-
* A healthy packet completes in milliseconds, so this only fires on a dead link.
|
|
45
|
-
*/
|
|
46
|
-
declare const BLE_WRITE_PACKET_TIMEOUT_MS = 10000;
|
|
47
|
-
/** Consecutive wedged writes on one device before the BLE manager itself is recreated. */
|
|
48
|
-
declare const BLE_WRITE_TIMEOUT_MANAGER_RESET_THRESHOLD = 2;
|
|
49
38
|
type ProtocolV2BleTuning = {
|
|
50
39
|
iosPacketLength?: number;
|
|
51
40
|
androidPacketLength?: number;
|
|
@@ -56,31 +45,6 @@ declare function getProtocolV2BleTuning(): {
|
|
|
56
45
|
iosPacketLength: number;
|
|
57
46
|
androidPacketLength: number;
|
|
58
47
|
};
|
|
59
|
-
/**
|
|
60
|
-
* JS backstop for connect. The native adapter applies its own 3s budget, but it
|
|
61
|
-
* schedules that timeout on its serial queue, so a busy queue (e.g. right after a
|
|
62
|
-
* firmware install tears the link down) can leave the promise unsettled — observed
|
|
63
|
-
* blocking a reconnect for 61s until the app-level timeout. Healthy connects finish
|
|
64
|
-
* inside the native budget, so this only fires when the native timeout did not.
|
|
65
|
-
*/
|
|
66
|
-
declare const BLE_CONNECT_TIMEOUT_MS: number;
|
|
67
|
-
/**
|
|
68
|
-
* Service discovery and characteristic resolution run after connect() succeeds, but
|
|
69
|
-
* CoreBluetooth schedules them on the same serial queue. If that queue is wedged by a
|
|
70
|
-
* device reboot, these calls can remain pending forever unless they have their own
|
|
71
|
-
* budget.
|
|
72
|
-
*/
|
|
73
|
-
declare const BLE_GATT_SETUP_TIMEOUT_MS = 10000;
|
|
74
|
-
/**
|
|
75
|
-
* How many times a known device may fail its own protocol before we probe the others
|
|
76
|
-
* again. Reconnect polling during a device reboot repeats this every few seconds, and
|
|
77
|
-
* probing Protocol V2 costs a 10s Ping timeout, so paying it on every attempt for a
|
|
78
|
-
* device we just spoke V1 to dominates the wait. A firmware update can legitimately
|
|
79
|
-
* change a device's protocol, so the shortcut has to expire rather than stick.
|
|
80
|
-
*/
|
|
81
|
-
declare const PROTOCOL_REPROBE_FALLBACK_ATTEMPTS = 3;
|
|
82
|
-
/** BLE setup timeouts since the last successful setup before the manager is recreated. */
|
|
83
|
-
declare const BLE_CONNECT_TIMEOUT_MANAGER_RESET_THRESHOLD = 2;
|
|
84
48
|
type IOneKeyDevice = OneKeyDeviceInfoBase & Device;
|
|
85
49
|
declare class ReactNativeBleTransport {
|
|
86
50
|
blePlxManager: BleManager | undefined;
|
|
@@ -97,28 +61,16 @@ declare class ReactNativeBleTransport {
|
|
|
97
61
|
firmwareUploadWriteRecoveryIds: Set<string>;
|
|
98
62
|
/** Per-device protocol type detected by active wire-level probe after connect. */
|
|
99
63
|
private deviceProtocol;
|
|
100
|
-
/**
|
|
101
|
-
* Protocol a probe is currently trying, before the device has confirmed it. Calls
|
|
102
|
-
* must route with it, but acquire() must not treat it as a detected protocol: a
|
|
103
|
-
* probe that never answers would otherwise leave the reuse fast path handing out a
|
|
104
|
-
* transport that was never validated.
|
|
105
|
-
*/
|
|
106
|
-
private probingProtocols;
|
|
107
|
-
/** Consecutive write timeouts per device; reset by any write that completes. */
|
|
108
|
-
private writeTimeoutCounts;
|
|
109
|
-
/** BLE setup timeouts per device since the last complete characteristic resolution. */
|
|
110
|
-
private connectionSetupTimeoutCounts;
|
|
111
64
|
private deviceProtocolHints;
|
|
112
|
-
/** Protocol this device actually answered on, kept across reconnects of one session. */
|
|
113
|
-
private sessionProtocols;
|
|
114
|
-
/** Consecutive detections that failed while trusting sessionProtocols. */
|
|
115
|
-
private protocolReprobeFailures;
|
|
116
65
|
private protocolV2Assemblers;
|
|
117
66
|
private protocolV2FrameQueues;
|
|
118
67
|
private protocolV2FramePromises;
|
|
119
68
|
private protocolV2Links;
|
|
120
69
|
private monitorTokens;
|
|
121
70
|
private disconnectEventTokens;
|
|
71
|
+
private protocolV2HighVolumeLogSignatures;
|
|
72
|
+
private androidHighPriorityDevices;
|
|
73
|
+
private androidPriorityResetTimers;
|
|
122
74
|
private nextMonitorToken;
|
|
123
75
|
constructor(options: TransportOptions);
|
|
124
76
|
init(logger: any, emitter: EventEmitter): void;
|
|
@@ -150,37 +102,10 @@ declare class ReactNativeBleTransport {
|
|
|
150
102
|
stop(): void;
|
|
151
103
|
disconnect(session: string): Promise<void>;
|
|
152
104
|
cancel(): void;
|
|
153
|
-
/** Run a native connect under the JS backstop budget. */
|
|
154
|
-
private connectWithTimeout;
|
|
155
|
-
/** Resolve the complete GATT shape under a budget so acquire() always settles. */
|
|
156
|
-
private resolveCharacteristicsWithTimeout;
|
|
157
|
-
/**
|
|
158
|
-
* Give up on a BLE setup operation the native layer did not settle. The abandoned
|
|
159
|
-
* operation still owns native connection/GATT state that can poison the next attempt,
|
|
160
|
-
* so it is cleared here without awaiting the same queue that stopped responding.
|
|
161
|
-
*/
|
|
162
|
-
private abandonStalledConnection;
|
|
163
105
|
private getCachedTransport;
|
|
164
|
-
/**
|
|
165
|
-
* Write one packet under a bounded budget. A write that never settles means the
|
|
166
|
-
* peripheral is wedged even though the GATT link still reports connected, so the
|
|
167
|
-
* link is torn down: releasing JS state alone would leave the poisoned peripheral
|
|
168
|
-
* cached and every later call would hang on it again.
|
|
169
|
-
*/
|
|
170
|
-
private writeBlePacket;
|
|
171
|
-
/**
|
|
172
|
-
* Drop a link whose writes stopped completing. The JS state is purged synchronously
|
|
173
|
-
* so the next acquire() cannot reuse the dead transport, while the native teardown is
|
|
174
|
-
* intentionally NOT awaited: it talks to the very layer that just stopped settling
|
|
175
|
-
* promises, so awaiting it could hang exactly like the write it is recovering from.
|
|
176
|
-
*/
|
|
177
|
-
private tearDownWedgedLink;
|
|
178
|
-
private resetPlxManager;
|
|
179
106
|
private createProtocolMismatchError;
|
|
180
107
|
private createProtocolDetectionError;
|
|
181
108
|
private clearProbeProtocol;
|
|
182
|
-
/** Protocol to route a call with: confirmed if known, otherwise the one being probed. */
|
|
183
|
-
private getActiveProtocol;
|
|
184
109
|
private detectProtocol;
|
|
185
110
|
private resetProbeStateAfterProtocolProbe;
|
|
186
111
|
private probeProtocolV1;
|
|
@@ -194,8 +119,12 @@ declare class ReactNativeBleTransport {
|
|
|
194
119
|
private writeProtocolV2Packet;
|
|
195
120
|
private writeProtocolV2Frame;
|
|
196
121
|
private callProtocolV2;
|
|
122
|
+
private clearAndroidPriorityResetTimer;
|
|
123
|
+
private enableAndroidHighConnectionPriority;
|
|
124
|
+
private scheduleAndroidBalancedConnectionPriority;
|
|
125
|
+
private restoreAndroidConnectionPriority;
|
|
197
126
|
private createProtocolV2Adapter;
|
|
198
127
|
getProtocolType(path: string): ProtocolType | undefined;
|
|
199
128
|
}
|
|
200
129
|
|
|
201
|
-
export {
|
|
130
|
+
export { IOneKeyDevice, ProtocolV2BleTuning, configureProtocolV2BleTuning, ReactNativeBleTransport as default, getFirmwareUploadWriteRetryType, getProtocolV2BleTuning, resetProtocolV2BleTuning };
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAIL,UAAU,IAAI,aAAa,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAIL,UAAU,IAAI,aAAa,EAG5B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,SAAS,EAAE,EAEhB,KAAK,oBAAoB,EAIzB,KAAK,YAAY,EAKjB,KAAK,oBAAoB,EAG1B,MAAM,wBAAwB,CAAC;AA0BhC,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAK1C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACjF,OAAO,KAAK,YAAY,MAAM,QAAQ,CAAC;AACvC,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAgBjE,KAAK,4BAA4B,GAAG,WAAW,CAAC;AAChD,KAAK,0BAA0B,GAAG;IAChC,mBAAmB,EAAE,cAAc,CAAC;IACpC,oBAAoB,EAAE,cAAc,CAAC;CACtC,CAAC;AAkCF,eAAO,MAAM,+BAA+B,UACnC,OAAO,KACb,4BAA4B,GAAG,IAsBjC,CAAC;AASF,MAAM,MAAM,mBAAmB,GAAG;IAChC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;AAiBF,wBAAgB,4BAA4B,CAAC,MAAM,GAAE,mBAAwB,QAY5E;AAED,wBAAgB,wBAAwB,SAGvC;AAED,wBAAgB,sBAAsB;;;EAErC;AAyBD,MAAM,MAAM,aAAa,GAAG,oBAAoB,GAAG,MAAM,CAAC;AAqE1D,MAAM,CAAC,OAAO,OAAO,uBAAuB;IAC1C,aAAa,EAAE,aAAa,GAAG,SAAS,CAAC;IAEzC,SAAS,EAAE,UAAU,CAAC,OAAO,SAAS,CAAC,cAAc,CAAC,GAAG,SAAS,CAAC;IAEnE,WAAW,EAAE,UAAU,CAAC,OAAO,SAAS,CAAC,cAAc,CAAC,GAAG,SAAS,CAAC;IAErE,OAAO,CAAC,6BAA6B,CAAqB;IAE1D,IAAI,SAA6B;IAEjC,UAAU,UAAS;IAEnB,OAAO,UAAS;IAEhB,WAAW,SAA0B;IAErC,UAAU,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,IAAI,CAAQ;IAExC,OAAO,CAAC,kBAAkB,CAAuB;IAEjD,OAAO,CAAC,EAAE,YAAY,CAAC;IAEvB,8BAA8B,cAAqB;IAGnD,OAAO,CAAC,cAAc,CAAwC;IAE9D,OAAO,CAAC,mBAAmB,CAAwC;IAEnE,OAAO,CAAC,oBAAoB,CAAoD;IAEhF,OAAO,CAAC,qBAAqB,CAAwC;IAErE,OAAO,CAAC,uBAAuB,CAAgD;IAE/E,OAAO,CAAC,eAAe,CAmBpB;IAEH,OAAO,CAAC,aAAa,CAAkC;IAEvD,OAAO,CAAC,qBAAqB,CAAkC;IAE/D,OAAO,CAAC,iCAAiC,CAAuC;IAEhF,OAAO,CAAC,0BAA0B,CAA0B;IAE5D,OAAO,CAAC,0BAA0B,CAAyD;IAE3F,OAAO,CAAC,gBAAgB,CAAK;gBAEjB,OAAO,EAAE,gBAAgB;IAIrC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,YAAY;IAKvC,SAAS,CAAC,UAAU,EAAE,GAAG;IAMzB,mBAAmB,CAAC,UAAU,EAAE,GAAG;IAgBnC,MAAM;IAIN,aAAa,IAAI,OAAO,CAAC,aAAa,CAAC;IAMjC,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAmFjF,4BAA4B,CAAC,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAgClF,OAAO,CAAC,oBAAoB;IAgBtB,gCAAgC,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY;IAuDtE,SAAS;YAiJD,0BAA0B;IAyElC,OAAO,CAAC,KAAK,EAAE,eAAe;;;;IAsKpC,sBAAsB,CACpB,cAAc,EAAE,cAAc,EAC9B,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EACpB,mBAAmB,EAAE,MAAM,GAC1B,YAAY;IAsIT,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,UAAQ;YAK7B,aAAa;IAkErB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAIjE,IAAI,CACR,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,CAAC,EAAE,oBAAoB;YA+BlB,cAAc;IA2M5B,IAAI;IAIE,UAAU,CAAC,OAAO,EAAE,MAAM;IA8EhC,MAAM;IASN,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,2BAA2B;IAOnC,OAAO,CAAC,4BAA4B;IAOpC,OAAO,CAAC,kBAAkB;YAMZ,cAAc;YA4Ed,iCAAiC;YAoDjC,eAAe;YAkBf,eAAe;IAwB7B,OAAO,CAAC,4BAA4B;IA2BpC,OAAO,CAAC,uBAAuB;IAS/B,OAAO,CAAC,sBAAsB;IAU9B,OAAO,CAAC,qBAAqB;IAI7B,OAAO,CAAC,sBAAsB;YAShB,mBAAmB;YAiBnB,qBAAqB;YA6CrB,oBAAoB;YA8BpB,cAAc;IAoE5B,OAAO,CAAC,8BAA8B;YAQxB,mCAAmC;IAsBjD,OAAO,CAAC,yCAAyC;YAanC,gCAAgC;IAoB9C,OAAO,CAAC,uBAAuB;IA4C/B,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;CAGxD"}
|