@onekeyfe/hd-core 1.2.0-alpha.46 → 1.2.0-alpha.48

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/index.js CHANGED
@@ -26252,8 +26252,6 @@ var nested = {
26252
26252
  MessageType_DeviceInfo: 60601,
26253
26253
  MessageType_DeviceStatusGet: 60602,
26254
26254
  MessageType_DeviceStatus: 60603,
26255
- MessageType_ResourceInventoryGet: 60604,
26256
- MessageType_ResourceInventory: 60605,
26257
26255
  MessageType_FilesystemPermissionFix: 60800,
26258
26256
  MessageType_FilesystemPathInfo: 60801,
26259
26257
  MessageType_FilesystemPathInfoQuery: 60802,
@@ -37846,16 +37844,6 @@ var nested = {
37846
37844
  APP: 85
37847
37845
  }
37848
37846
  },
37849
- ResourceBundleType: {
37850
- values: {
37851
- IMAGES: 0,
37852
- ANIMATION: 1,
37853
- WALLPAPER: 2,
37854
- TRANSLATIONS: 3,
37855
- ROOBERT: 4,
37856
- NOTO: 5
37857
- }
37858
- },
37859
37847
  DeviceFirmwareImageInfo: {
37860
37848
  fields: {
37861
37849
  version: {
@@ -38053,38 +38041,6 @@ var nested = {
38053
38041
  }
38054
38042
  }
38055
38043
  },
38056
- ResourceInventoryGet: {
38057
- fields: {
38058
- }
38059
- },
38060
- ResourceInventoryItem: {
38061
- fields: {
38062
- type: {
38063
- rule: "required",
38064
- type: "ResourceBundleType",
38065
- id: 1
38066
- },
38067
- size: {
38068
- rule: "required",
38069
- type: "uint32",
38070
- id: 2
38071
- },
38072
- header_hash: {
38073
- rule: "required",
38074
- type: "bytes",
38075
- id: 3
38076
- }
38077
- }
38078
- },
38079
- ResourceInventory: {
38080
- fields: {
38081
- items: {
38082
- rule: "repeated",
38083
- type: "ResourceInventoryItem",
38084
- id: 1
38085
- }
38086
- }
38087
- },
38088
38044
  DeviceSessionErrorCode: {
38089
38045
  values: {
38090
38046
  DeviceSessionError_None: 0,
@@ -39485,56 +39441,120 @@ const PROTOCOL_V2_RESOURCE_DEVICE_PATHS = {
39485
39441
  const RESOURCE_TYPE_SET = new Set(PROTOCOL_V2_RESOURCE_TYPES);
39486
39442
  const SHA256_HEX_LENGTH = 64;
39487
39443
  const SHA3_512_HEX_LENGTH = 128;
39444
+ const PROTOCOL_V2_OKPP_HEADER_SIZE$1 = 0x52a0;
39445
+ const PROTOCOL_V2_OKPP_TYPE_OFFSET = 0x08;
39446
+ const PROTOCOL_V2_OKPP_HEADER_LENGTH_OFFSET = 0x0c;
39447
+ const PROTOCOL_V2_OKPP_HEADER_HASH_OFFSET$1 = 0x240;
39448
+ const PROTOCOL_V2_OKPP_HASH_SIZE$1 = 64;
39449
+ const PROTOCOL_V2_RESOURCE_IDENTITY_READ_SIZE = PROTOCOL_V2_OKPP_HEADER_HASH_OFFSET$1 + PROTOCOL_V2_OKPP_HASH_SIZE$1;
39450
+ const PROTOCOL_V2_MIN_FILE_READ_CHUNK_SIZE = 64;
39488
39451
  const PROTOCOL_V2_RESOURCE_INVENTORY_TIMEOUT_MS = 5 * 1000;
39489
- const RESOURCE_TYPE_BY_DEVICE_VALUE = {
39490
- '0': 'images',
39491
- IMAGES: 'images',
39492
- '1': 'animation',
39493
- ANIMATION: 'animation',
39494
- '2': 'wallpaper',
39495
- WALLPAPER: 'wallpaper',
39496
- '3': 'translations',
39497
- TRANSLATIONS: 'translations',
39498
- '4': 'roobert',
39499
- ROOBERT: 'roobert',
39500
- '5': 'noto',
39501
- NOTO: 'noto',
39502
- };
39503
- function parseProtocolV2ResourceInventory(value) {
39504
- const items = value === null || value === void 0 ? void 0 : value.items;
39505
- if (!Array.isArray(items)) {
39506
- throw new Error('Invalid Pro2 resource inventory: items must be an array');
39507
- }
39508
- const inventory = items.map((item, index) => {
39509
- if (!item || typeof item !== 'object') {
39510
- throw new Error(`Invalid Pro2 resource inventory item at ${index}`);
39511
- }
39512
- const raw = item;
39513
- const type = RESOURCE_TYPE_BY_DEVICE_VALUE[String(raw.type).toUpperCase()];
39514
- if (!type) {
39515
- throw new Error(`Invalid Pro2 resource inventory type at ${index}`);
39516
- }
39517
- if (!Number.isSafeInteger(raw.size) || Number(raw.size) <= 0) {
39518
- throw new Error(`Invalid Pro2 resource inventory size at ${index}`);
39452
+ function toFiniteNumber(value) {
39453
+ if (typeof value === 'number' && Number.isFinite(value))
39454
+ return value;
39455
+ if (typeof value === 'string') {
39456
+ const numeric = Number(value);
39457
+ return Number.isFinite(numeric) ? numeric : undefined;
39458
+ }
39459
+ if (value && typeof value === 'object') {
39460
+ const longLike = value;
39461
+ if (typeof longLike.toNumber === 'function') {
39462
+ const numeric = longLike.toNumber();
39463
+ return Number.isFinite(numeric) ? numeric : undefined;
39519
39464
  }
39520
- return {
39521
- type,
39522
- size: Number(raw.size),
39523
- headerHash: normalizeHex$1(raw.header_hash, SHA3_512_HEX_LENGTH, 'inventory headerHash'),
39524
- };
39525
- });
39526
- if (new Set(inventory.map(item => item.type)).size !== inventory.length) {
39527
- throw new Error('Invalid Pro2 resource inventory: duplicate resource type');
39528
39465
  }
39529
- return PROTOCOL_V2_RESOURCE_TYPES.flatMap(type => {
39530
- const item = inventory.find(candidate => candidate.type === type);
39531
- return item ? [item] : [];
39466
+ return undefined;
39467
+ }
39468
+ function toUint8Array(value) {
39469
+ if (value instanceof Uint8Array)
39470
+ return value;
39471
+ if (value instanceof ArrayBuffer)
39472
+ return new Uint8Array(value);
39473
+ if (ArrayBuffer.isView(value)) {
39474
+ return new Uint8Array(value.buffer, value.byteOffset, value.byteLength);
39475
+ }
39476
+ if (typeof value === 'string') {
39477
+ const hex = value.replace(/^0x/i, '');
39478
+ if (!hex || hex.length % 2 !== 0 || /[^0-9a-f]/i.test(hex)) {
39479
+ return new Uint8Array(0);
39480
+ }
39481
+ const bytes = new Uint8Array(hex.length / 2);
39482
+ for (let index = 0; index < bytes.length; index += 1) {
39483
+ bytes[index] = Number.parseInt(hex.slice(index * 2, index * 2 + 2), 16);
39484
+ }
39485
+ return bytes;
39486
+ }
39487
+ return new Uint8Array(0);
39488
+ }
39489
+ function readAscii(bytes, offset, length) {
39490
+ return Array.from(bytes.slice(offset, offset + length), byte => String.fromCharCode(byte)).join('');
39491
+ }
39492
+ function parseProtocolV2ResourceHeaderHash(bytes) {
39493
+ if (bytes.byteLength < PROTOCOL_V2_RESOURCE_IDENTITY_READ_SIZE)
39494
+ return undefined;
39495
+ if (readAscii(bytes, 0, 4) !== 'OKPP')
39496
+ return undefined;
39497
+ if (readAscii(bytes, PROTOCOL_V2_OKPP_TYPE_OFFSET, 4) !== 'RESC')
39498
+ return undefined;
39499
+ const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
39500
+ if (view.getUint32(PROTOCOL_V2_OKPP_HEADER_LENGTH_OFFSET, true) !== PROTOCOL_V2_OKPP_HEADER_SIZE$1) {
39501
+ return undefined;
39502
+ }
39503
+ return bytesToHex$3(bytes.slice(PROTOCOL_V2_OKPP_HEADER_HASH_OFFSET$1, PROTOCOL_V2_OKPP_HEADER_HASH_OFFSET$1 + PROTOCOL_V2_OKPP_HASH_SIZE$1));
39504
+ }
39505
+ function readProtocolV2ResourceIdentity({ commands, resource, chunkSize, timeoutMs = PROTOCOL_V2_RESOURCE_INVENTORY_TIMEOUT_MS, }) {
39506
+ var _a, _b, _c, _d;
39507
+ return __awaiter(this, void 0, void 0, function* () {
39508
+ const path = PROTOCOL_V2_RESOURCE_DEVICE_PATHS[resource.type];
39509
+ const pathInfo = yield commands.typedCall('FilesystemPathInfoQuery', 'FilesystemPathInfo', { path }, { timeoutMs });
39510
+ const size = toFiniteNumber((_a = pathInfo.message) === null || _a === void 0 ? void 0 : _a.size);
39511
+ if (!((_b = pathInfo.message) === null || _b === void 0 ? void 0 : _b.exist) ||
39512
+ ((_c = pathInfo.message) === null || _c === void 0 ? void 0 : _c.directory) ||
39513
+ !Number.isSafeInteger(size) ||
39514
+ size !== resource.size ||
39515
+ size < PROTOCOL_V2_OKPP_HEADER_SIZE$1) {
39516
+ return undefined;
39517
+ }
39518
+ const header = new Uint8Array(PROTOCOL_V2_RESOURCE_IDENTITY_READ_SIZE);
39519
+ let offset = 0;
39520
+ while (offset < header.byteLength) {
39521
+ const readLength = Math.min(chunkSize, header.byteLength - offset);
39522
+ const response = yield commands.typedCall('FilesystemFileRead', 'FilesystemFile', {
39523
+ file: { path, offset, total_size: 0 },
39524
+ chunk_len: readLength,
39525
+ }, { timeoutMs });
39526
+ const data = toUint8Array((_d = response.message) === null || _d === void 0 ? void 0 : _d.data);
39527
+ if (data.byteLength === 0)
39528
+ return undefined;
39529
+ const copied = Math.min(data.byteLength, header.byteLength - offset);
39530
+ header.set(data.subarray(0, copied), offset);
39531
+ offset += copied;
39532
+ }
39533
+ const headerHash = parseProtocolV2ResourceHeaderHash(header);
39534
+ return headerHash ? { type: resource.type, size, headerHash } : undefined;
39532
39535
  });
39533
39536
  }
39534
- function requestProtocolV2ResourceInventory({ commands, timeoutMs = PROTOCOL_V2_RESOURCE_INVENTORY_TIMEOUT_MS, }) {
39537
+ function readProtocolV2ResourceInventory({ commands, resources, chunkSize = hdTransport.PROTOCOL_V2_BLE_FILE_READ_CHUNK_SIZE, timeoutMs = PROTOCOL_V2_RESOURCE_INVENTORY_TIMEOUT_MS, }) {
39535
39538
  return __awaiter(this, void 0, void 0, function* () {
39536
- const { message } = yield commands.typedCall('ResourceInventoryGet', 'ResourceInventory', {}, { timeoutMs });
39537
- return parseProtocolV2ResourceInventory(message);
39539
+ const normalizedChunkSize = Number.isFinite(chunkSize)
39540
+ ? Math.max(Math.floor(chunkSize), PROTOCOL_V2_MIN_FILE_READ_CHUNK_SIZE)
39541
+ : hdTransport.PROTOCOL_V2_BLE_FILE_READ_CHUNK_SIZE;
39542
+ const inventory = [];
39543
+ for (const resource of resources) {
39544
+ try {
39545
+ const item = yield readProtocolV2ResourceIdentity({
39546
+ commands,
39547
+ resource,
39548
+ chunkSize: normalizedChunkSize,
39549
+ timeoutMs,
39550
+ });
39551
+ if (item)
39552
+ inventory.push(item);
39553
+ }
39554
+ catch (_a) {
39555
+ }
39556
+ }
39557
+ return inventory;
39538
39558
  });
39539
39559
  }
39540
39560
  function normalizeHex$1(value, expectedLength, field) {
@@ -39569,6 +39589,33 @@ function validateResource(value, index) {
39569
39589
  headerHash: normalizeHex$1(resource.headerHash, SHA3_512_HEX_LENGTH, 'headerHash'),
39570
39590
  };
39571
39591
  }
39592
+ function validateBootResources(value) {
39593
+ if (!value || typeof value !== 'object') {
39594
+ throw new Error('Invalid Pro2 boot resources config');
39595
+ }
39596
+ const resource = value;
39597
+ if (resource.required !== false) {
39598
+ throw new Error('Invalid Pro2 boot resources required flag: expected false');
39599
+ }
39600
+ if (resource.target !== 'CRATE') {
39601
+ throw new Error('Invalid Pro2 boot resources target: expected CRATE');
39602
+ }
39603
+ if (typeof resource.url !== 'string' || !resource.url.startsWith('https://')) {
39604
+ throw new Error('Invalid Pro2 boot resources url');
39605
+ }
39606
+ if (!Number.isSafeInteger(resource.size) || Number(resource.size) <= 0) {
39607
+ throw new Error('Invalid Pro2 boot resources size');
39608
+ }
39609
+ return {
39610
+ required: false,
39611
+ target: 'CRATE',
39612
+ url: resource.url,
39613
+ size: Number(resource.size),
39614
+ fileHash: normalizeHex$1(resource.fileHash, SHA256_HEX_LENGTH, 'boot fileHash'),
39615
+ payloadHash: normalizeHex$1(resource.payloadHash, SHA3_512_HEX_LENGTH, 'boot payloadHash'),
39616
+ headerHash: normalizeHex$1(resource.headerHash, SHA3_512_HEX_LENGTH, 'boot headerHash'),
39617
+ };
39618
+ }
39572
39619
  function parseProtocolV2Resources(value) {
39573
39620
  if (value === undefined)
39574
39621
  return undefined;
@@ -39577,7 +39624,8 @@ function parseProtocolV2Resources(value) {
39577
39624
  !Array.isArray(value.stable)) {
39578
39625
  throw new Error('Invalid Pro2 resources config: stable must be an array');
39579
39626
  }
39580
- const stable = value.stable.map(validateResource);
39627
+ const config = value;
39628
+ const stable = config.stable.map(validateResource);
39581
39629
  const types = new Set(stable.map(resource => resource.type));
39582
39630
  if (stable.length !== PROTOCOL_V2_RESOURCE_TYPES.length || types.size !== stable.length) {
39583
39631
  throw new Error('Invalid Pro2 resources config: stable must contain six unique resource types');
@@ -39587,25 +39635,29 @@ function parseProtocolV2Resources(value) {
39587
39635
  throw new Error(`Invalid Pro2 resources config: stable is missing ${type}`);
39588
39636
  }
39589
39637
  }
39590
- return {
39591
- stable: PROTOCOL_V2_RESOURCE_TYPES.map(type => {
39638
+ const boot = config.boot === undefined ? undefined : validateBootResources(config.boot);
39639
+ return Object.assign({ stable: PROTOCOL_V2_RESOURCE_TYPES.map(type => {
39592
39640
  const resource = stable.find(item => item.type === type);
39593
39641
  if (!resource) {
39594
39642
  throw new Error(`Invalid Pro2 resources config: stable is missing ${type}`);
39595
39643
  }
39596
39644
  return resource;
39597
- }),
39598
- };
39645
+ }) }, (boot ? { boot } : undefined));
39599
39646
  }
39600
39647
  function buildProtocolV2ResourceUpdatePlan({ resources, inventory, mode, forced = false, }) {
39601
- if (mode === 'bootloader-recovery' || forced) {
39648
+ if (forced) {
39602
39649
  return {
39603
39650
  status: resources.length > 0 ? 'outdated' : 'valid',
39604
39651
  resources: [...resources],
39605
39652
  };
39606
39653
  }
39607
39654
  if (!inventory) {
39608
- return { status: 'unknown', resources: [] };
39655
+ return mode === 'bootloader-recovery'
39656
+ ? {
39657
+ status: resources.length > 0 ? 'outdated' : 'valid',
39658
+ resources: [...resources],
39659
+ }
39660
+ : { status: 'unknown', resources: [] };
39609
39661
  }
39610
39662
  const inventoryByType = new Map(inventory.map(item => [item.type, item]));
39611
39663
  const changedResources = resources.filter(resource => {
@@ -39777,6 +39829,10 @@ class DataManager {
39777
39829
  var _b, _c;
39778
39830
  return (_c = (_b = this.deviceMap[hdShared.EDeviceType.Pro2]) === null || _b === void 0 ? void 0 : _b.resources) === null || _c === void 0 ? void 0 : _c.stable;
39779
39831
  }
39832
+ static getProtocolV2BootResources() {
39833
+ var _b, _c;
39834
+ return (_c = (_b = this.deviceMap[hdShared.EDeviceType.Pro2]) === null || _b === void 0 ? void 0 : _b.resources) === null || _c === void 0 ? void 0 : _c.boot;
39835
+ }
39780
39836
  static getProtobufMessages(schema = 'v1CurrentSchema') {
39781
39837
  return this.messages[schema];
39782
39838
  }
@@ -46293,25 +46349,23 @@ class CheckAllFirmwareRelease extends BaseMethod {
46293
46349
  let resourceStatus = 'unknown';
46294
46350
  if (resources === null || resources === void 0 ? void 0 : resources.length) {
46295
46351
  const loaderMode = state.status.mode === 'bootloader' || state.status.mode === 'romloader';
46296
- if (loaderMode) {
46297
- resourceStatus = buildProtocolV2ResourceUpdatePlan({
46298
- resources,
46299
- mode: 'bootloader-recovery',
46300
- }).status;
46301
- }
46302
- else if (state.status.mode === 'normal') {
46352
+ if (loaderMode || state.status.mode === 'normal') {
46303
46353
  try {
46304
- const inventory = yield requestProtocolV2ResourceInventory({
46354
+ const inventory = yield readProtocolV2ResourceInventory({
46305
46355
  commands: this.device.getCommands(),
46356
+ resources,
46306
46357
  });
46307
46358
  resourceStatus = buildProtocolV2ResourceUpdatePlan({
46308
46359
  resources,
46309
46360
  inventory,
46310
- mode: 'application',
46361
+ mode: loaderMode ? 'bootloader-recovery' : 'application',
46311
46362
  }).status;
46312
46363
  }
46313
46364
  catch (_b) {
46314
- resourceStatus = 'unknown';
46365
+ resourceStatus = buildProtocolV2ResourceUpdatePlan({
46366
+ resources,
46367
+ mode: loaderMode ? 'bootloader-recovery' : 'application',
46368
+ }).status;
46315
46369
  }
46316
46370
  }
46317
46371
  }
@@ -49076,6 +49130,7 @@ const PROTOCOL_V2_OKPP_HEADER_SIZE = 0x52a0;
49076
49130
  const PROTOCOL_V2_OKPP_PAYLOAD_HASH_OFFSET = 0x200;
49077
49131
  const PROTOCOL_V2_OKPP_HEADER_HASH_OFFSET = 0x240;
49078
49132
  const PROTOCOL_V2_OKPP_HASH_SIZE = 64;
49133
+ const PROTOCOL_V2_BOOT_RESOURCES_FILE_NAME = 'boot_resources.crate.okpkg';
49079
49134
  const getProtocolV2DeviceTransferProgress = (bytesBeforeChunk, bytesAfterChunk, totalBytes) => {
49080
49135
  if (!Number.isFinite(totalBytes) || totalBytes <= 0) {
49081
49136
  return 100;
@@ -49300,6 +49355,7 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
49300
49355
  { name: 'chunkSize', type: 'number' },
49301
49356
  { name: 'forcedUpdateRes', type: 'boolean' },
49302
49357
  { name: 'bootloaderBinary', type: 'buffer' },
49358
+ { name: 'bootResourcesBinary', type: 'buffer' },
49303
49359
  { name: 'romloaderBinary', type: 'buffer' },
49304
49360
  { name: 'applicationP1Binary', type: 'buffer' },
49305
49361
  { name: 'applicationP2Binary', type: 'buffer' },
@@ -49317,6 +49373,7 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
49317
49373
  chunkSize: payload.chunkSize,
49318
49374
  forcedUpdateRes: payload.forcedUpdateRes,
49319
49375
  bootloaderBinary: payload.bootloaderBinary,
49376
+ bootResourcesBinary: payload.bootResourcesBinary,
49320
49377
  romloaderBinary: payload.romloaderBinary,
49321
49378
  applicationP1Binary: payload.applicationP1Binary,
49322
49379
  applicationP2Binary: payload.applicationP2Binary,
@@ -49352,7 +49409,7 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
49352
49409
  });
49353
49410
  }
49354
49411
  runProtocolV2() {
49355
- var _a, _b, _c, _d;
49412
+ var _a, _b, _c, _d, _e;
49356
49413
  return __awaiter(this, void 0, void 0, function* () {
49357
49414
  yield this.captureProtocolV2PhysicalIdentity();
49358
49415
  const deviceFeatures = yield this.getProtocolV2DeviceFeatures();
@@ -49361,6 +49418,7 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
49361
49418
  const resourceRecoveryMode = Boolean(this.isProtocolV2BootloaderMode() || this.isProtocolV2RomloaderMode());
49362
49419
  let fwBinaryMap = [];
49363
49420
  let bootloaderBinary = null;
49421
+ let bootResourcesInstallItem;
49364
49422
  let installItems;
49365
49423
  let resourceBundles;
49366
49424
  try {
@@ -49370,7 +49428,9 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
49370
49428
  const needsRemoteFirmware = !this.hasExplicitProtocolV2Payload(fwBinaryMap);
49371
49429
  const needsRemoteResources = !((_b = this.params.resourceBundleFiles) === null || _b === void 0 ? void 0 : _b.length) &&
49372
49430
  !!((_c = this.params.targetsToUpdate) === null || _c === void 0 ? void 0 : _c.includes('resource'));
49373
- if (needsRemoteFirmware || needsRemoteResources) {
49431
+ const needsRemoteBootResources = !this.params.bootResourcesBinary &&
49432
+ !!((_d = this.params.targetsToUpdate) === null || _d === void 0 ? void 0 : _d.includes('boot_resources'));
49433
+ if (needsRemoteFirmware || needsRemoteResources || needsRemoteBootResources) {
49374
49434
  yield DataManager.forceReloadData();
49375
49435
  }
49376
49436
  if (needsRemoteFirmware) {
@@ -49379,13 +49439,23 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
49379
49439
  fwBinaryMap = remoteBinaries.fwBinaryMap;
49380
49440
  installItems = remoteBinaries.installItems;
49381
49441
  }
49442
+ bootResourcesInstallItem = yield this.prepareProtocolV2BootResources();
49443
+ if (bootResourcesInstallItem) {
49444
+ installItems = [
49445
+ bootResourcesInstallItem,
49446
+ ...(installItems !== null && installItems !== void 0 ? installItems : this.buildProtocolV2InstallItems({ bootloaderBinary, fwBinaryMap })),
49447
+ ];
49448
+ }
49382
49449
  resourceBundles = yield this.prepareProtocolV2ResourceBundles(resourceRecoveryMode);
49383
49450
  this.postTipMessage(exports.FirmwareUpdateTipMessage.FinishDownloadFirmware);
49384
49451
  }
49385
49452
  catch (err) {
49386
- throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.FirmwareUpdateDownloadFailed, (_d = err.message) !== null && _d !== void 0 ? _d : err);
49453
+ throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.FirmwareUpdateDownloadFailed, (_e = err.message) !== null && _e !== void 0 ? _e : err);
49387
49454
  }
49388
- if (!bootloaderBinary && fwBinaryMap.length === 0 && !(resourceBundles === null || resourceBundles === void 0 ? void 0 : resourceBundles.length)) {
49455
+ if (!bootloaderBinary &&
49456
+ fwBinaryMap.length === 0 &&
49457
+ !(installItems === null || installItems === void 0 ? void 0 : installItems.length) &&
49458
+ !(resourceBundles === null || resourceBundles === void 0 ? void 0 : resourceBundles.length)) {
49389
49459
  if (resourceBundles !== undefined) {
49390
49460
  this.postTipMessage(exports.FirmwareUpdateTipMessage.FirmwareUpdateCompleted);
49391
49461
  return this.getProtocolV2VersionResult(deviceFeatures);
@@ -49454,6 +49524,7 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
49454
49524
  var _a;
49455
49525
  return (!!((_a = this.params.resourceBundleFiles) === null || _a === void 0 ? void 0 : _a.length) ||
49456
49526
  !!this.params.bootloaderBinary ||
49527
+ !!this.params.bootResourcesBinary ||
49457
49528
  fwBinaryMap.length > 0);
49458
49529
  }
49459
49530
  buildProtocolV2InstallItems({ bootloaderBinary, fwBinaryMap, }) {
@@ -49568,6 +49639,50 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
49568
49639
  };
49569
49640
  });
49570
49641
  }
49642
+ validateProtocolV2BootResourcesBinary(binary, resource) {
49643
+ if (resource && !isProtocolV2ResourceFileValid(binary, resource)) {
49644
+ throw new Error('Pro2 boot resources file verification failed');
49645
+ }
49646
+ const header = parseProtocolV2OkppHeader(toProtocolV2Bytes(binary));
49647
+ if (!header || header.type !== 'CRAT') {
49648
+ throw new Error('Invalid Pro2 boot resources CRATE header');
49649
+ }
49650
+ if (resource) {
49651
+ const expectedPayloadHash = normalizeProtocolV2Hex(resource.payloadHash);
49652
+ const expectedHeaderHash = normalizeProtocolV2Hex(resource.headerHash);
49653
+ if (header.payloadHash !== expectedPayloadHash) {
49654
+ throw new Error('Pro2 boot resources payload hash mismatch');
49655
+ }
49656
+ if (header.headerHash !== expectedHeaderHash) {
49657
+ throw new Error('Pro2 boot resources header hash mismatch');
49658
+ }
49659
+ }
49660
+ }
49661
+ prepareProtocolV2BootResources() {
49662
+ var _a;
49663
+ return __awaiter(this, void 0, void 0, function* () {
49664
+ let binary = this.params.bootResourcesBinary;
49665
+ let resource;
49666
+ if (!binary) {
49667
+ if (!((_a = this.params.targetsToUpdate) === null || _a === void 0 ? void 0 : _a.includes('boot_resources'))) {
49668
+ return undefined;
49669
+ }
49670
+ resource = DataManager.getProtocolV2BootResources();
49671
+ if (!resource) {
49672
+ throw new Error('Missing Pro2 boot resources configuration');
49673
+ }
49674
+ Log$5.log('[FirmwareUpdateV4] downloading Pro2 boot resources CRATE');
49675
+ ({ binary } = yield getSysResourceBinary(resource.url));
49676
+ }
49677
+ this.validateProtocolV2BootResourcesBinary(binary, resource);
49678
+ return {
49679
+ fileName: PROTOCOL_V2_BOOT_RESOURCES_FILE_NAME,
49680
+ binary,
49681
+ targetId: ProtocolV2FirmwareTargetType.FW_MGMT_TARGET_CRATE,
49682
+ kind: 'boot_resources',
49683
+ };
49684
+ });
49685
+ }
49571
49686
  prepareProtocolV2ResourceBundles(recoveryMode) {
49572
49687
  var _a, _b;
49573
49688
  return __awaiter(this, void 0, void 0, function* () {
@@ -49589,10 +49704,12 @@ class FirmwareUpdateV4 extends FirmwareUpdateBaseMethod {
49589
49704
  if (!(resources === null || resources === void 0 ? void 0 : resources.length)) {
49590
49705
  throw new Error('Missing Pro2 stable resource configuration');
49591
49706
  }
49592
- const inventory = recoveryMode
49707
+ const inventory = this.params.forcedUpdateRes
49593
49708
  ? undefined
49594
- : yield requestProtocolV2ResourceInventory({
49709
+ : yield readProtocolV2ResourceInventory({
49595
49710
  commands: this.device.getCommands(),
49711
+ resources,
49712
+ chunkSize: this.getProtocolV2FirmwareChunkSize(),
49596
49713
  timeoutMs: PROTOCOL_V2_SHORT_RESPONSE_TIMEOUT,
49597
49714
  });
49598
49715
  const plan = buildProtocolV2ResourceUpdatePlan({
@@ -1,6 +1,5 @@
1
1
  import type { IProtocolV2Resource, IProtocolV2ResourceType, IProtocolV2Resources } from '../../types';
2
2
  import type { DeviceCommands } from '../../device/DeviceCommands';
3
- import type { ResourceInventory } from '@onekeyfe/hd-transport';
4
3
  export declare const PROTOCOL_V2_RESOURCE_TYPES: readonly ["images", "animation", "wallpaper", "translations", "roobert", "noto"];
5
4
  export declare const PROTOCOL_V2_RESOURCE_DEVICE_PATHS: Readonly<Record<IProtocolV2ResourceType, string>>;
6
5
  export declare const PROTOCOL_V2_RESOURCE_INVENTORY_TIMEOUT_MS: number;
@@ -14,9 +13,10 @@ export type ProtocolV2ResourceUpdatePlan = {
14
13
  status: 'valid' | 'outdated' | 'unknown';
15
14
  resources: IProtocolV2Resource[];
16
15
  };
17
- export declare function parseProtocolV2ResourceInventory(value: ResourceInventory | unknown): ProtocolV2ResourceInventoryItem[];
18
- export declare function requestProtocolV2ResourceInventory({ commands, timeoutMs, }: {
19
- commands: DeviceCommands;
16
+ export declare function readProtocolV2ResourceInventory({ commands, resources, chunkSize, timeoutMs, }: {
17
+ commands: Pick<DeviceCommands, 'typedCall'>;
18
+ resources: readonly IProtocolV2Resource[];
19
+ chunkSize?: number;
20
20
  timeoutMs?: number;
21
21
  }): Promise<ProtocolV2ResourceInventoryItem[]>;
22
22
  export declare function parseProtocolV2Resources(value: unknown): IProtocolV2Resources | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../../../src/protocols/protocol-v2/resources.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,mBAAmB,EACnB,uBAAuB,EACvB,oBAAoB,EACrB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,eAAO,MAAM,0BAA0B,kFAOgB,CAAC;AAExD,eAAO,MAAM,iCAAiC,EAAE,QAAQ,CAAC,MAAM,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAQ7F,CAAC;AAKJ,eAAO,MAAM,yCAAyC,QAAW,CAAC;AAiBlE,MAAM,MAAM,+BAA+B,GAAG;IAC5C,IAAI,EAAE,uBAAuB,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG,aAAa,GAAG,qBAAqB,CAAC;AAEjF,MAAM,MAAM,4BAA4B,GAAG;IACzC,MAAM,EAAE,OAAO,GAAG,UAAU,GAAG,SAAS,CAAC;IACzC,SAAS,EAAE,mBAAmB,EAAE,CAAC;CAClC,CAAC;AAGF,wBAAgB,gCAAgC,CAC9C,KAAK,EAAE,iBAAiB,GAAG,OAAO,GACjC,+BAA+B,EAAE,CAgCnC;AAED,wBAAsB,kCAAkC,CAAC,EACvD,QAAQ,EACR,SAAqD,GACtD,EAAE;IACD,QAAQ,EAAE,cAAc,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,+BAA+B,EAAE,CAAC,CAQ7C;AAuCD,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,oBAAoB,GAAG,SAAS,CA6BzF;AAGD,wBAAgB,iCAAiC,CAAC,EAChD,SAAS,EACT,SAAS,EACT,IAAI,EACJ,MAAc,GACf,EAAE;IACD,SAAS,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC1C,SAAS,CAAC,EAAE,SAAS,+BAA+B,EAAE,CAAC;IACvD,IAAI,EAAE,4BAA4B,CAAC;IACnC,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,GAAG,4BAA4B,CAyB/B;AAOD,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,WAAW,EACnB,QAAQ,EAAE,IAAI,CAAC,mBAAmB,EAAE,MAAM,GAAG,UAAU,CAAC,GACvD,OAAO,CAGT"}
1
+ {"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../../../src/protocols/protocol-v2/resources.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,mBAAmB,EACnB,uBAAuB,EACvB,oBAAoB,EACrB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAElE,eAAO,MAAM,0BAA0B,kFAOgB,CAAC;AAExD,eAAO,MAAM,iCAAiC,EAAE,QAAQ,CAAC,MAAM,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAQ7F,CAAC;AAaJ,eAAO,MAAM,yCAAyC,QAAW,CAAC;AAElE,MAAM,MAAM,+BAA+B,GAAG;IAC5C,IAAI,EAAE,uBAAuB,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG,aAAa,GAAG,qBAAqB,CAAC;AAEjF,MAAM,MAAM,4BAA4B,GAAG;IACzC,MAAM,EAAE,OAAO,GAAG,UAAU,GAAG,SAAS,CAAC;IACzC,SAAS,EAAE,mBAAmB,EAAE,CAAC;CAClC,CAAC;AAwHF,wBAAsB,+BAA+B,CAAC,EACpD,QAAQ,EACR,SAAS,EACT,SAAgD,EAChD,SAAqD,GACtD,EAAE;IACD,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;IAC5C,SAAS,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,+BAA+B,EAAE,CAAC,CAmB7C;AAmED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,oBAAoB,GAAG,SAAS,CAgCzF;AAGD,wBAAgB,iCAAiC,CAAC,EAChD,SAAS,EACT,SAAS,EACT,IAAI,EACJ,MAAc,GACf,EAAE;IACD,SAAS,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC1C,SAAS,CAAC,EAAE,SAAS,+BAA+B,EAAE,CAAC;IACvD,IAAI,EAAE,4BAA4B,CAAC;IACnC,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,GAAG,4BAA4B,CA8B/B;AAOD,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,WAAW,EACnB,QAAQ,EAAE,IAAI,CAAC,mBAAmB,EAAE,MAAM,GAAG,UAAU,CAAC,GACvD,OAAO,CAGT"}
@@ -38,7 +38,7 @@ export interface FirmwareUpdateV3Params {
38
38
  firmwareType?: EFirmwareType;
39
39
  platform: IPlatform;
40
40
  }
41
- export type FirmwareUpdateV4Target = 'boot' | 'app_v1' | 'app_v2' | 'coprocessor' | 'resource' | 'se01' | 'se02' | 'se03' | 'se04';
41
+ export type FirmwareUpdateV4Target = 'boot' | 'boot_resources' | 'app_v1' | 'app_v2' | 'coprocessor' | 'resource' | 'se01' | 'se02' | 'se03' | 'se04';
42
42
  export interface FirmwareUpdateV4Params {
43
43
  platform: IPlatform;
44
44
  chunkSize?: number;
@@ -46,6 +46,7 @@ export interface FirmwareUpdateV4Params {
46
46
  targetsToUpdate?: FirmwareUpdateV4Target[];
47
47
  romloaderBinary?: ArrayBuffer;
48
48
  bootloaderBinary?: ArrayBuffer;
49
+ bootResourcesBinary?: ArrayBuffer;
49
50
  applicationP1Binary?: ArrayBuffer;
50
51
  applicationP2Binary?: ArrayBuffer;
51
52
  coprocessorBinary?: ArrayBuffer;
@@ -1 +1 @@
1
- {"version":3,"file":"firmwareUpdate.d.ts","sourceRoot":"","sources":["../../../src/types/api/firmwareUpdate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"firmwareUpdate.d.ts","sourceRoot":"","sources":["../../../src/types/api/firmwareUpdate.ts"],"names":[],"mappings":"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"}
@@ -40,8 +40,18 @@ export type IProtocolV2Resource = {
40
40
  fileHash: string;
41
41
  headerHash: string;
42
42
  };
43
+ export type IProtocolV2BootResources = {
44
+ required: false;
45
+ target: 'CRATE';
46
+ url: string;
47
+ size: number;
48
+ fileHash: string;
49
+ payloadHash: string;
50
+ headerHash: string;
51
+ };
43
52
  export type IProtocolV2Resources = {
44
53
  stable: IProtocolV2Resource[];
54
+ boot?: IProtocolV2BootResources;
45
55
  };
46
56
  export type IProtocolV2ResourceBundle = {
47
57
  name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../src/types/settings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../src/types/settings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C,MAAM,MAAM,YAAY,GACpB,MAAM,GACN,KAAK,GACL,cAAc,GACd,UAAU,GACV,cAAc,GACd,QAAQ,GACR,gBAAgB,GAChB,iBAAiB,GACjB,UAAU,GACV,UAAU,GACV,UAAU,CAAC;AACf,MAAM,MAAM,eAAe,GAAG;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;IACrB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,GAAG,EAAE,YAAY,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC;CACvE,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAErD,MAAM,MAAM,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;AAExC,MAAM,MAAM,kCAAkC,GAC1C,WAAW,GACX,YAAY,GACZ,gBAAgB,GAChB,gBAAgB,GAChB,aAAa,GACb,MAAM,GACN,MAAM,GACN,MAAM,GACN,MAAM,CAAC;AAEX,MAAM,MAAM,4BAA4B,GAAG;IACzC,MAAM,EAAE,kCAAkC,CAAC;IAC3C,GAAG,EAAE,MAAM,CAAC;IAEZ,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAC/B,QAAQ,GACR,WAAW,GACX,WAAW,GACX,cAAc,GACd,SAAS,GACT,MAAM,CAAC;AAGX,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,uBAAuB,CAAC;IAC9B,GAAG,EAAE,MAAM,CAAC;IAEZ,IAAI,EAAE,MAAM,CAAC;IAEb,QAAQ,EAAE,MAAM,CAAC;IAEjB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAGF,MAAM,MAAM,wBAAwB,GAAG;IACrC,QAAQ,EAAE,KAAK,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IAEZ,IAAI,EAAE,MAAM,CAAC;IAEb,QAAQ,EAAE,MAAM,CAAC;IAEjB,WAAW,EAAE,MAAM,CAAC;IAEpB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,EAAE,mBAAmB,EAAE,CAAC;IAC9B,IAAI,CAAC,EAAE,wBAAwB,CAAC;CACjC,CAAC;AAGF,MAAM,MAAM,yBAAyB,GAAG;IAEtC,IAAI,EAAE,MAAM,CAAC;IAEb,GAAG,EAAE,MAAM,CAAC;IAEZ,UAAU,EAAE,MAAM,CAAC;IAEnB,OAAO,CAAC,EAAE,aAAa,CAAC;IAExB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAGF,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,EAAE,OAAO,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IAKZ,YAAY,CAAC,EAAE,aAAa,CAAC;IAE7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iBAAiB,CAAC,EAAE,aAAa,CAAC;IAClC,wBAAwB,CAAC,EAAE,aAAa,CAAC;IACzC,gCAAgC,CAAC,EAAE,aAAa,CAAC;IACjD,WAAW,CAAC,EAAE,qBAAqB,GAAG,MAAM,CAAC;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,4BAA4B,CAAC,CAAC;IAC1D,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IAExB,eAAe,CAAC,EAAE,yBAAyB,EAAE,CAAC;IAC9C,mBAAmB,CAAC,EAAE;SACnB,CAAC,IAAI,OAAO,GAAG,MAAM;KACvB,CAAC;IACF,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,aAAa,CAAC;IACvB,SAAS,EAAE;SACR,CAAC,IAAI,OAAO,GAAG,MAAM;KACvB,CAAC;CACH,CAAC;AAGF,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,EAAE,OAAO,CAAC;IAElB,GAAG,EAAE,MAAM,CAAC;IAEZ,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,aAAa,CAAC;IACvB,SAAS,EAAE;SACR,CAAC,IAAI,OAAO,GAAG,MAAM;KACvB,CAAC;CACH,CAAC;AAEF,KAAK,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;AAEpD,MAAM,MAAM,aAAa,GAAG;KACzB,CAAC,IAAI,YAAY,GAAG;QACnB,QAAQ,EAAE,oBAAoB,EAAE,CAAC;QAEjC,aAAa,CAAC,EAAE,oBAAoB,EAAE,CAAC;QACvC,aAAa,CAAC,EAAE,oBAAoB,EAAE,CAAC;QACvC,aAAa,CAAC,EAAE,oBAAoB,EAAE,CAAC;QACvC,iBAAiB,CAAC,EAAE,oBAAoB,EAAE,CAAC;QAC3C,GAAG,EAAE,uBAAuB,EAAE,CAAC;QAE/B,SAAS,CAAC,EAAE,oBAAoB,CAAC;KAClC;CACF,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,MAAM,EAAE;QACN,OAAO,EAAE,aAAa,CAAC;QACvB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;QACZ,YAAY,EAAE,MAAM,CAAC;QACrB,SAAS,EAAE;aACR,CAAC,IAAI,OAAO,GAAG,MAAM;SACvB,CAAC;KACH,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;CAC7B,GAAG,aAAa,CAAC"}