14af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/** @file
24af04335ac9aeb1802b995b102117b6f9de46809Dandan BiFormset guids, form id and VarStore data structure for Boot Maintenance Manager.
34af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
44af04335ac9aeb1802b995b102117b6f9de46809Dandan BiCopyright (c) 2004 - 2015, Intel Corporation. All rights reserved.<BR>
54af04335ac9aeb1802b995b102117b6f9de46809Dandan BiThis program and the accompanying materials
64af04335ac9aeb1802b995b102117b6f9de46809Dandan Biare licensed and made available under the terms and conditions of the BSD License
74af04335ac9aeb1802b995b102117b6f9de46809Dandan Biwhich accompanies this distribution.  The full text of the license may be found at
84af04335ac9aeb1802b995b102117b6f9de46809Dandan Bihttp://opensource.org/licenses/bsd-license.php
94af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
104af04335ac9aeb1802b995b102117b6f9de46809Dandan BiTHE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
114af04335ac9aeb1802b995b102117b6f9de46809Dandan BiWITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
124af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
134af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi**/
144af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#ifndef _FORM_GUID_H_
154af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define _FORM_GUID_H_
164af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
174af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define BOOT_MAINT_FORMSET_GUID \
184af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  { \
194af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  0x642237c7, 0x35d4, 0x472d, {0x83, 0x65, 0x12, 0xe0, 0xcc, 0xf2, 0x7a, 0x22} \
204af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  }
214af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
224af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define FORM_MAIN_ID                         0x1001
234af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define FORM_BOOT_ADD_ID                     0x1002
244af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define FORM_BOOT_DEL_ID                     0x1003
254af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define FORM_BOOT_CHG_ID                     0x1004
264af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define FORM_DRV_ADD_ID                      0x1005
274af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define FORM_DRV_DEL_ID                      0x1006
284af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define FORM_DRV_CHG_ID                      0x1007
294af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define FORM_CON_MAIN_ID                     0x1008
304af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define FORM_CON_IN_ID                       0x1009
314af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define FORM_CON_OUT_ID                      0x100A
324af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define FORM_CON_ERR_ID                      0x100B
334af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define FORM_FILE_SEEK_ID                    0x100C
344af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define FORM_FILE_NEW_SEEK_ID                0x100D
354af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define FORM_DRV_ADD_FILE_ID                 0x100E
364af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define FORM_DRV_ADD_HANDLE_ID               0x100F
374af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define FORM_DRV_ADD_HANDLE_DESC_ID          0x1010
384af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define FORM_BOOT_NEXT_ID                    0x1011
394af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define FORM_TIME_OUT_ID                     0x1012
404af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define FORM_BOOT_SETUP_ID                   0x1014
414af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define FORM_DRIVER_SETUP_ID                 0x1015
424af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define FORM_BOOT_LEGACY_DEVICE_ID           0x1016
434af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define FORM_CON_COM_ID                      0x1017
444af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define FORM_CON_COM_SETUP_ID                0x1018
454af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define FORM_BOOT_ADD_DESCRIPTION_ID         0x101F
464af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define FORM_DRIVER_ADD_FILE_DESCRIPTION_ID  0x1020
474af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define FORM_CON_MODE_ID                     0x1021
484af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define FORM_MEMORY_CHECK_ID                 0x1022
494af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define FORM_UEFI_OPTIMIZED_BOOT_ID          0x1023
504af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define FORM_BOOT_FROM_FILE_ID               0x1024
514af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
524af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
534af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define MAXIMUM_FORM_ID                      0x10FF
544af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
554af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define KEY_VALUE_COM_SET_BAUD_RATE          0x1101
564af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define KEY_VALUE_COM_SET_DATA_BITS          0x1102
574af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define KEY_VALUE_COM_SET_STOP_BITS          0x1103
584af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define KEY_VALUE_COM_SET_PARITY             0x1104
594af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define KEY_VALUE_COM_SET_TERMI_TYPE         0x1105
604af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define KEY_VALUE_MAIN_BOOT_NEXT             0x1106
614af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define KEY_VALUE_BOOT_ADD_DESC_DATA         0x1107
624af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define KEY_VALUE_BOOT_ADD_OPT_DATA          0x1108
634af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define KEY_VALUE_DRIVER_ADD_DESC_DATA       0x1109
644af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define KEY_VALUE_DRIVER_ADD_OPT_DATA        0x110A
654af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define KEY_VALUE_SAVE_AND_EXIT              0x110B
664af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define KEY_VALUE_NO_SAVE_AND_EXIT           0x110C
674af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define KEY_VALUE_BOOT_FROM_FILE             0x110D
684af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define FORM_RESET                           0x110E
694af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define KEY_VALUE_BOOT_DESCRIPTION           0x110F
704af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define KEY_VALUE_BOOT_OPTION                0x1110
714af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define KEY_VALUE_DRIVER_DESCRIPTION         0x1111
724af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define KEY_VALUE_DRIVER_OPTION              0x1112
734af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define KEY_VALUE_SAVE_AND_EXIT_BOOT         0x1113
744af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define KEY_VALUE_NO_SAVE_AND_EXIT_BOOT      0x1114
754af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define KEY_VALUE_SAVE_AND_EXIT_DRIVER       0x1115
764af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define KEY_VALUE_NO_SAVE_AND_EXIT_DRIVER    0x1116
774af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
784af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define MAXIMUM_NORMAL_KEY_VALUE             0x11FF
794af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
804af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi//
814af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi// Varstore ID defined for Buffer Storage
824af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi//
834af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define VARSTORE_ID_BOOT_MAINT               0x1000
844af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
854af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi//
864af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi// End Label
874af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi//
884af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define LABEL_BMM_PLATFORM_INFORMATION       0xfffe
894af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define LABEL_END                            0xffff
904af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#define MAX_MENU_NUMBER                      100
914af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
924af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi///
934af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/// This is the structure that will be used to store the
944af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/// question's current value. Use it at initialize time to
954af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/// set default value for each question. When using at run
964af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/// time, this map is returned by the callback function,
974af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/// so dynamically changing the question's value will be
984af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi/// possible through this mechanism
994af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi///
1004af04335ac9aeb1802b995b102117b6f9de46809Dandan Bitypedef struct {
1014af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  //
1024af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  // Three questions displayed at the main page
1034af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  // for Timeout, BootNext, Variables respectively
1044af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  //
1054af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINT16  BootTimeOut;
106f79865264f58cc12e3ace3b83cbea1ee289a5e55Dandan Bi  UINT32  BootNext;
1074af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
1084af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  //
1094af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  // This is the COM1 Attributes value storage
1104af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  //
1114af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINT8   COM1BaudRate;
1124af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINT8   COM1DataRate;
1134af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINT8   COM1StopBits;
1144af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINT8   COM1Parity;
1154af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINT8   COM1TerminalType;
1164af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
1174af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  //
1184af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  // This is the COM2 Attributes value storage
1194af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  //
1204af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINT8   COM2BaudRate;
1214af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINT8   COM2DataRate;
1224af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINT8   COM2StopBits;
1234af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINT8   COM2Parity;
1244af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINT8   COM2TerminalType;
1254af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
1264af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  //
1274af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  // Driver Option Add Handle page storage
1284af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  //
1294af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINT16  DriverAddHandleDesc[MAX_MENU_NUMBER];
1304af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINT16  DriverAddHandleOptionalData[MAX_MENU_NUMBER];
1314af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINT8   DriverAddActive;
1324af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINT8   DriverAddForceReconnect;
1334af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
1344af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  //
1354af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  // Console Input/Output/Errorout using COM port check storage
1364af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  //
1374af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINT8   ConsoleInputCOM1;
1384af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINT8   ConsoleInputCOM2;
1394af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINT8   ConsoleOutputCOM1;
1404af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINT8   ConsoleOutputCOM2;
1414af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINT8   ConsoleErrorCOM1;
1424af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINT8   ConsoleErrorCOM2;
1434af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
1444af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  //
1454af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  // At most 100 input/output/errorout device for console storage
1464af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  //
1474af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINT8   ConsoleCheck[MAX_MENU_NUMBER];
1484af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
1494af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  //
1504af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  // At most 100 input/output/errorout device for console storage
1514af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  //
1524af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINT8   ConsoleInCheck[MAX_MENU_NUMBER];
1534af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINT8   ConsoleOutCheck[MAX_MENU_NUMBER];
1544af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINT8   ConsoleErrCheck[MAX_MENU_NUMBER];
1554af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
1564af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  //
1574af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  // Boot or Driver Option Order storage
1584af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  // The value is the OptionNumber+1 because the order list value cannot be 0
1594af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  // Use UINT32 to hold the potential value 0xFFFF+1=0x10000
1604af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  //
1614af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINT32  BootOptionOrder[MAX_MENU_NUMBER];
1624af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINT32  DriverOptionOrder[MAX_MENU_NUMBER];
1634af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  //
1644af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  // Boot or Driver Option Delete storage
1654af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  //
1664af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  BOOLEAN BootOptionDel[MAX_MENU_NUMBER];
1674af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  BOOLEAN DriverOptionDel[MAX_MENU_NUMBER];
1684af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  BOOLEAN BootOptionDelMark[MAX_MENU_NUMBER];
1694af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  BOOLEAN DriverOptionDelMark[MAX_MENU_NUMBER];
1704af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
1714af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  //
1724af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  // This is the Terminal Attributes value storage
1734af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  //
1744af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINT8   COMBaudRate[MAX_MENU_NUMBER];
1754af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINT8   COMDataRate[MAX_MENU_NUMBER];
1764af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINT8   COMStopBits[MAX_MENU_NUMBER];
1774af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINT8   COMParity[MAX_MENU_NUMBER];
1784af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINT8   COMTerminalType[MAX_MENU_NUMBER];
1794af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINT8   COMFlowControl[MAX_MENU_NUMBER];
1804af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
1814af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  //
1824af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  // We use DisableMap array to record the enable/disable state of each boot device
1834af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  // It should be taken as a bit array, from left to right there are totally 256 bits
1844af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  // the most left one stands for BBS table item 0, and the most right one stands for item 256
1854af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  // If the bit is 1, it means the boot device has been disabled.
1864af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  //
1874af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINT8   DisableMap[32];
1884af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
1894af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  //
1904af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  // Console Output Text Mode
1914af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  //
1924af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINT16  ConsoleOutMode;
1934af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
1944af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  //
1954af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  //  UINT16                    PadArea[10];
1964af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  //
1974af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
1984af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINT16  BootDescriptionData[MAX_MENU_NUMBER];
1994af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINT16  BootOptionalData[127];
2004af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINT16  DriverDescriptionData[MAX_MENU_NUMBER];
2014af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINT16  DriverOptionalData[127];
2024af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  BOOLEAN BootOptionChanged;
2034af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  BOOLEAN DriverOptionChanged;
2044af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINT8   Active;
2054af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi  UINT8   ForceReconnect;
2064af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi} BMM_FAKE_NV_DATA;
2074af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
2084af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi#endif
2094af04335ac9aeb1802b995b102117b6f9de46809Dandan Bi
210