{ "_comment": "that's all", "model": { "shared_dict": { "type_map_all": [ "H", "He", "Li", "Be", "B", "C", "N", "O", "F", "Ne", "Na", "Mg", "Al", "Si", "P", "S", "Cl", "Ar", "K", "Ca", "Sc", "Ti", "V", "Cr", "Mn", "Fe", "Co", "Ni", "Cu", "Zn", "Ga", "Ge", "As", "Se", "Br", "Kr", "Rb", "Sr", "Y", "Zr", "Nb", "Mo", "Tc", "Ru", "Rh", "Pd", "Ag", "Cd", "In", "Sn", "Sb", "Te", "I", "Xe", "Cs", "Ba", "La", "Ce", "Pr", "Nd", "Pm", "Sm", "Eu", "Gd", "Tb", "Dy", "Ho", "Er", "Tm", "Yb", "Lu", "Hf", "Ta", "W", "Re", "Os", "Ir", "Pt", "Au", "Hg", "Tl", "Pb", "Bi", "Po", "At", "Rn", "Fr", "Ra", "Ac", "Th", "Pa", "U", "Np", "Pu", "Am", "Cm", "Bk", "Cf", "Es", "Fm", "Md", "No", "Lr", "Rf", "Db", "Sg", "Bh", "Hs", "Mt", "Ds", "Rg", "Cn", "Nh", "Fl", "Mc", "Lv", "Ts", "Og" ], "dpa3_descriptor": { "type": "dpa3", "repflow": { "n_dim": 128, "e_dim": 64, "a_dim": 32, "nlayers": 6, "e_rcut": 6.0, "e_rcut_smth": 5.3, "e_sel": 1200, "a_rcut": 4.0, "a_rcut_smth": 3.5, "a_sel": 300, "axis_neuron": 4, "skip_stat": true, "a_compress_rate": 1, "a_compress_e_rate": 2, "a_compress_use_split": true, "update_angle": true, "smooth_edge_update": true, "edge_use_dist": true, "use_dynamic_sel": true, "sel_reduce_factor": 10.0, "use_env_envelope": true, "update_style": "res_residual", "update_residual": 0.1, "update_residual_init": "const", "sequential_update": true }, "add_chg_spin_ebd": true, "default_chg_spin": [0.0, 1.0], "activation_function": "silut:3.0", "precision": "float32", "use_tebd_bias": false, "concat_output_tebd": false }, "shared_fitting": { "neuron": [ 240, 240, 240 ], "activation_function": "silut:3.0", "resnet_dt": true, "precision": "float32", "dim_case_embd": 23, "seed": 1, "_comment": " that's all" }, "_comment": "that's all" }, "model_dict": { "Domains_Alloy": { "type_map": "type_map_all", "descriptor": "dpa3_descriptor", "fitting_net": "shared_fitting" }, "Domains_Anode": { "type_map": "type_map_all", "descriptor": "dpa3_descriptor", "fitting_net": "shared_fitting" }, "Domains_Cluster": { "type_map": "type_map_all", "descriptor": "dpa3_descriptor", "fitting_net": "shared_fitting" }, "Domains_FerroEle": { "type_map": "type_map_all", "descriptor": "dpa3_descriptor", "fitting_net": "shared_fitting" }, "Domains_SSE_PBE": { "type_map": "type_map_all", "descriptor": "dpa3_descriptor", "fitting_net": "shared_fitting" }, "Domains_SemiCond": { "type_map": "type_map_all", "descriptor": "dpa3_descriptor", "fitting_net": "shared_fitting" }, "H2O_H2O_PD": { "type_map": "type_map_all", "descriptor": "dpa3_descriptor", "fitting_net": "shared_fitting" }, "Metals_AlMgCu": { "type_map": "type_map_all", "descriptor": "dpa3_descriptor", "fitting_net": "shared_fitting" }, "Metals_AgAu_PBED3": { "type_map": "type_map_all", "descriptor": "dpa3_descriptor", "fitting_net": "shared_fitting" }, "Others_In2Se3": { "type_map": "type_map_all", "descriptor": "dpa3_descriptor", "fitting_net": "shared_fitting" }, "MPGen_OpenCSP": { "type_map": "type_map_all", "descriptor": "dpa3_descriptor", "fitting_net": "shared_fitting" }, "Alloy_tongqi": { "type_map": "type_map_all", "descriptor": "dpa3_descriptor", "fitting_net": "shared_fitting" }, "SSE_ABACUS": { "type_map": "type_map_all", "descriptor": "dpa3_descriptor", "fitting_net": "shared_fitting" }, "Hybrid_Perovskite": { "type_map": "type_map_all", "descriptor": "dpa3_descriptor", "fitting_net": "shared_fitting" }, "Electrolyte": { "type_map": "type_map_all", "descriptor": "dpa3_descriptor", "fitting_net": "shared_fitting" }, "ODAC23": { "type_map": "type_map_all", "descriptor": "dpa3_descriptor", "fitting_net": "shared_fitting" }, "Alex2D": { "type_map": "type_map_all", "descriptor": "dpa3_descriptor", "fitting_net": "shared_fitting" }, "Omat24": { "type_map": "type_map_all", "descriptor": "dpa3_descriptor", "fitting_net": "shared_fitting" }, "OC20M": { "type_map": "type_map_all", "descriptor": "dpa3_descriptor", "fitting_net": "shared_fitting" }, "OC22": { "type_map": "type_map_all", "descriptor": "dpa3_descriptor", "fitting_net": "shared_fitting" }, "Organic_Reactions": { "type_map": "type_map_all", "descriptor": "dpa3_descriptor", "fitting_net": "shared_fitting" }, "OMol25": { "type_map": "type_map_all", "descriptor": "dpa3_descriptor", "fitting_net": "shared_fitting" }, "MPTrj": { "type_map": "type_map_all", "descriptor": "dpa3_descriptor", "fitting_net": "shared_fitting" } } }, "learning_rate": { "type": "exp", "decay_steps": 5000, "start_lr": 1e-3, "stop_lr": 1e-6, "_comment": "that's all" }, "loss_dict": { "Domains_Alloy": { "type": "ener", "start_pref_e": 0.2, "limit_pref_e": 20, "start_pref_f": 100, "limit_pref_f": 60, "start_pref_v": 0.02, "limit_pref_v": 1 }, "Domains_Anode": { "type": "ener", "start_pref_e": 0.2, "limit_pref_e": 20, "start_pref_f": 100, "limit_pref_f": 60, "start_pref_v": 0.02, "limit_pref_v": 1 }, "Domains_Cluster": { "type": "ener", "start_pref_e": 0.2, "limit_pref_e": 20, "start_pref_f": 100, "limit_pref_f": 60, "start_pref_v": 0.02, "limit_pref_v": 1 }, "Domains_FerroEle": { "type": "ener", "start_pref_e": 0.2, "limit_pref_e": 20, "start_pref_f": 100, "limit_pref_f": 60, "start_pref_v": 0.02, "limit_pref_v": 1 }, "Domains_SSE_PBE": { "type": "ener", "start_pref_e": 0.2, "limit_pref_e": 20, "start_pref_f": 100, "limit_pref_f": 60, "start_pref_v": 0.02, "limit_pref_v": 1 }, "Domains_SemiCond": { "type": "ener", "start_pref_e": 0.2, "limit_pref_e": 20, "start_pref_f": 100, "limit_pref_f": 60, "start_pref_v": 0.02, "limit_pref_v": 1 }, "H2O_H2O_PD": { "type": "ener", "start_pref_e": 0.2, "limit_pref_e": 20, "start_pref_f": 100, "limit_pref_f": 60, "start_pref_v": 0.02, "limit_pref_v": 1 }, "Metals_AlMgCu": { "type": "ener", "start_pref_e": 0.2, "limit_pref_e": 20, "start_pref_f": 100, "limit_pref_f": 60, "start_pref_v": 0.02, "limit_pref_v": 1 }, "Metals_AgAu_PBED3": { "type": "ener", "start_pref_e": 0.2, "limit_pref_e": 20, "start_pref_f": 100, "limit_pref_f": 60, "start_pref_v": 0.02, "limit_pref_v": 1 }, "Others_In2Se3": { "type": "ener", "start_pref_e": 0.2, "limit_pref_e": 20, "start_pref_f": 100, "limit_pref_f": 60, "start_pref_v": 0.02, "limit_pref_v": 1 }, "MPGen_OpenCSP": { "type": "ener", "start_pref_e": 0.2, "limit_pref_e": 20, "start_pref_f": 100, "limit_pref_f": 60, "start_pref_v": 0.02, "limit_pref_v": 1 }, "Alloy_tongqi": { "type": "ener", "start_pref_e": 0.2, "limit_pref_e": 20, "start_pref_f": 100, "limit_pref_f": 60, "start_pref_v": 0.02, "limit_pref_v": 1 }, "SSE_ABACUS": { "type": "ener", "start_pref_e": 0.2, "limit_pref_e": 20, "start_pref_f": 100, "limit_pref_f": 60, "start_pref_v": 0.02, "limit_pref_v": 1 }, "Hybrid_Perovskite": { "type": "ener", "start_pref_e": 0.2, "limit_pref_e": 20, "start_pref_f": 100, "limit_pref_f": 60, "start_pref_v": 0.02, "limit_pref_v": 1 }, "Electrolyte": { "type": "ener", "start_pref_e": 0.2, "limit_pref_e": 20, "start_pref_f": 100, "limit_pref_f": 60, "start_pref_v": 0.02, "limit_pref_v": 1 }, "ODAC23": { "type": "ener", "start_pref_e": 0.2, "limit_pref_e": 20, "start_pref_f": 100, "limit_pref_f": 60, "start_pref_v": 0.02, "limit_pref_v": 1 }, "Alex2D": { "type": "ener", "start_pref_e": 0.2, "limit_pref_e": 20, "start_pref_f": 100, "limit_pref_f": 60, "start_pref_v": 0.02, "limit_pref_v": 1 }, "Omat24": { "type": "ener", "start_pref_e": 0.2, "limit_pref_e": 20, "start_pref_f": 100, "limit_pref_f": 60, "start_pref_v": 0.02, "limit_pref_v": 1 }, "OC20M": { "type": "ener", "use_default_pf": true, "start_pref_e": 0.2, "limit_pref_e": 20, "start_pref_f": 0, "limit_pref_f": 0, "start_pref_pf": 100, "limit_pref_pf": 60, "start_pref_v": 0.02, "limit_pref_v": 1 }, "OC22": { "type": "ener", "start_pref_e": 0.2, "limit_pref_e": 20, "start_pref_f": 100, "limit_pref_f": 60, "start_pref_v": 0.02, "limit_pref_v": 1 }, "Organic_Reactions": { "type": "ener", "start_pref_e": 0.2, "limit_pref_e": 20, "start_pref_f": 100, "limit_pref_f": 60, "start_pref_v": 0.02, "limit_pref_v": 1 }, "OMol25": { "type": "ener", "start_pref_e": 0.2, "limit_pref_e": 20, "start_pref_f": 100, "limit_pref_f": 60, "start_pref_v": 0.02, "limit_pref_v": 1 }, "MPTrj": { "type": "ener", "start_pref_e": 0.2, "limit_pref_e": 20, "start_pref_f": 100, "limit_pref_f": 60, "start_pref_v": 0.02, "limit_pref_v": 1 } }, "training": { "model_prob": { "Domains_Alloy": 0.27, "Domains_Anode": 0.66, "Domains_Cluster": 0.27, "Domains_FerroEle": 0.31, "Domains_SSE_PBE": 0.7, "Domains_SemiCond": 0.79, "H2O_H2O_PD": 0.89, "Metals_AlMgCu": 0.21, "Metals_AgAu_PBED3": 0.11, "Others_In2Se3": 0.06, "MPGen_OpenCSP": 1.81, "Alloy_tongqi": 0.17, "SSE_ABACUS": 0.82, "Hybrid_Perovskite": 0.24, "Electrolyte": 2.37, "ODAC23": 0.48, "Alex2D": 0.74, "Omat24": 7.86, "OC20M": 16.9, "OC22": 2.1, "Organic_Reactions": 0.5, "OMol25": 15.2, "MPTrj": 1.89 }, "data_dict": { "Domains_Alloy": { "stat_file": "/mnt/data_nas/zhangd/workplace/stat_files/multitask/beta4/Domains_Alloy_with_fparam_0_1.hdf5", "training_data": { "systems": "/aisi-nas/public/public_data_arxiv/LMDB/Domains_Alloy/trn.lmdb", "batch_size": "auto:256", "_comment": "that's all" }, "validation_data": { "systems": "/aisi-nas/public/public_data_arxiv/LMDB/Domains_Alloy/val.lmdb", "batch_size": 1, "_comment": "that's all" } }, "Domains_Anode": { "stat_file": "/mnt/data_nas/zhangd/workplace/stat_files/multitask/beta4/Domains_Anode_full_with_fparam_0_1.hdf5", "training_data": { "systems": "/aisi-nas/public/public_data_arxiv/LMDB/Domains_Anode/trn.lmdb", "batch_size": "auto:256", "_comment": "that's all" }, "validation_data": { "systems": "/aisi-nas/public/public_data_arxiv/LMDB/Domains_Anode/val.lmdb", "batch_size": 1, "_comment": "that's all" } }, "Domains_Cluster": { "stat_file": "/mnt/data_nas/zhangd/workplace/stat_files/multitask/beta4/Domains_Cluster_full_with_fparam_0_1.hdf5", "training_data": { "systems": "/aisi-nas/public/public_data_arxiv/LMDB/Domains_Cluster/trn.lmdb", "batch_size": "auto:256", "_comment": "that's all" }, "validation_data": { "systems": "/aisi-nas/public/public_data_arxiv/LMDB/Domains_Cluster/val.lmdb", "batch_size": 1, "_comment": "that's all" } }, "OMol25":{ "stat_file": "/mnt/data_nas/public/public_training_data/raw_omol25/OMol25_with_fparam_0_1.hdf5", "training_data": { "systems": "/aisi-nas/public/public_data_arxiv/LMDB/OMol25_update/trn.lmdb", "batch_size": "auto:256", "_comment": "that's all" }, "validation_data": { "systems": "/aisi-nas/public/public_data_arxiv/LMDB/OMol25_update/val.lmdb", "batch_size": 1, "_comment": "that's all" } }, "Domains_FerroEle": { "stat_file": "/mnt/data_nas/zhangd/workplace/stat_files/multitask/beta4/Domains_FerroEle_full_with_fparam_0_1.hdf5", "training_data": { "systems": "/aisi-nas/public/public_data_arxiv/LMDB/Domains_FerroEle/trn.lmdb", "batch_size": "auto:256", "_comment": "that's all" }, "validation_data": { "systems": "/aisi-nas/public/public_data_arxiv/LMDB/Domains_FerroEle/val.lmdb", "batch_size": 1, "_comment": "that's all" } }, "Domains_SSE_PBE": { "stat_file": "/mnt/data_nas/zhangd/workplace/stat_files/multitask/beta4/Domains_SSE_PBE_full_with_fparam_0_1.hdf5", "training_data": { "systems": "/aisi-nas/public/public_data_arxiv/LMDB/Domains_SSE_PBE/trn.lmdb", "batch_size": "auto:256", "_comment": "that's all" }, "validation_data": { "systems": "/aisi-nas/public/public_data_arxiv/LMDB/Domains_SSE_PBE/val.lmdb", "batch_size": 1, "_comment": "that's all" } }, "Domains_SemiCond": { "stat_file": "/mnt/data_nas/zhangd/workplace/stat_files/multitask/beta4/Domains_SemiCond_full_with_fparam_0_1.hdf5", "training_data": { "systems": "/aisi-nas/public/public_data_arxiv/LMDB/Domains_SemiCond/trn.lmdb", "batch_size": "auto:256", "_comment": "that's all" }, "validation_data": { "systems": "/aisi-nas/public/public_data_arxiv/LMDB/Domains_SemiCond/val.lmdb", "batch_size": 1, "_comment": "that's all" } }, "H2O_H2O_PD": { "stat_file": "/mnt/data_nas/zhangd/workplace/stat_files/multitask/beta4/H2O_H2O_PD_with_fparam_0_1.hdf5", "training_data": { "systems": "/aisi-nas/public/public_data_arxiv/LMDB/H2O_H2O_PD/trn.lmdb", "batch_size": "filter:256", "_comment": "that's all" }, "validation_data": { "systems": "/aisi-nas/public/public_data_arxiv/LMDB/H2O_H2O_PD/val.lmdb", "batch_size": 1, "_comment": "that's all" } }, "Metals_AlMgCu": { "stat_file": "/mnt/data_nas/zhangd/workplace/stat_files/multitask/beta4/Metals_AlMgCu_full_with_fparam_0_1.hdf5", "training_data": { "systems": "/aisi-nas/public/public_data_arxiv/LMDB/Metals_AlMgCu/trn.lmdb", "batch_size": "auto:256", "_comment": "that's all" }, "validation_data": { "systems": "/aisi-nas/public/public_data_arxiv/LMDB/Metals_AlMgCu/val.lmdb", "batch_size": 1, "_comment": "that's all" } }, "Metals_AgAu_PBED3": { "stat_file": "/mnt/data_nas/zhangd/workplace/stat_files/multitask/beta4/Metals_AgAu_PBED3_with_fparam_0_1.hdf5", "training_data": { "systems": "/aisi-nas/public/public_data_arxiv/LMDB/Metals_AgAu_PBED3/trn.lmdb", "batch_size": "auto:256", "_comment": "that's all" }, "validation_data": { "systems": "/aisi-nas/public/public_data_arxiv/LMDB/Metals_AgAu_PBED3/val.lmdb", "batch_size": 1, "_comment": "that's all" } }, "Others_In2Se3": { "stat_file": "/mnt/data_nas/zhangd/workplace/stat_files/multitask/beta4/Others_In2Se3_with_fparam_0_1.hdf5", "training_data": { "systems": "/aisi-nas/public/public_data_arxiv/LMDB/Others_In2Se3/trn.lmdb", "batch_size": "auto:256", "_comment": "that's all" }, "validation_data": { "systems": "/aisi-nas/public/public_data_arxiv/LMDB/Others_In2Se3/val.lmdb", "batch_size": 1, "_comment": "that's all" } }, "MPGen_OpenCSP": { "stat_file": "/mnt/data_nas/penganyang/dpa2paper/stats/openlam/MPGen_OpenCSP_with_fparam_0_1.hdf5", "training_data": { "systems": "/aisi-nas/public/public_data_arxiv/LMDB/MPGen_OpenCSP/trn.lmdb", "batch_size": "auto:256", "_comment": "that's all" }, "validation_data": { "systems": "/aisi-nas/public/public_data_arxiv/LMDB/MPGen_OpenCSP/trn.lmdb", "batch_size": 1, "_comment": "that's all" } }, "Alloy_tongqi": { "stat_file": "/mnt/data_nas/zhangd/workplace/stat_files/multitask/beta4/Alloy_tongqi_with_fparam_0_1.hdf5", "training_data": { "systems": "/aisi-nas/public/public_data_arxiv/LMDB/Alloy_tongqi/trn.lmdb", "batch_size": "auto:256", "_comment": "that's all" }, "validation_data": { "systems": "/aisi-nas/public/public_data_arxiv/LMDB/Alloy_tongqi/val.lmdb", "batch_size": 1, "_comment": "that's all" } }, "SSE_ABACUS": { "stat_file": "/mnt/data_nas/zhangd/workplace/stat_files/multitask/beta4/SSE_ABACUS_with_fparam_0_1.hdf5", "training_data": { "systems": "/aisi-nas/public/public_data_arxiv/LMDB/SSE_ABACUS/trn.lmdb", "batch_size": "auto:256", "_comment": "that's all" }, "validation_data": { "systems": "/aisi-nas/public/public_data_arxiv/LMDB/SSE_ABACUS/val.lmdb", "batch_size": 1, "_comment": "that's all" } }, "Hybrid_Perovskite": { "stat_file": "/mnt/data_nas/zhangd/workplace/stat_files/multitask/beta4/Hybrid_Perovskite_with_fparam_0_1.hdf5", "training_data": { "systems": "/aisi-nas/public/public_data_arxiv/LMDB/Hybrid_Perovskite/trn.lmdb", "batch_size": "auto:256", "_comment": "that's all" }, "validation_data": { "systems": "/aisi-nas/public/public_data_arxiv/LMDB/Hybrid_Perovskite/val.lmdb", "batch_size": 1, "_comment": "that's all" } }, "Electrolyte": { "stat_file": "/mnt/data_nas/zhangd/workplace/stat_files/multitask/beta4/Electrolyte_with_fparam_0_1.hdf5", "training_data": { "systems": "/aisi-nas/public/public_data_arxiv/LMDB/Electrolyte/trn.lmdb", "batch_size": "auto:256", "_comment": "that's all" }, "validation_data": { "systems": "/aisi-nas/public/public_data_arxiv/LMDB/Electrolyte/val.lmdb", "batch_size": 1, "_comment": "that's all" } }, "ODAC23": { "stat_file": "/mnt/data_nas/penganyang/dpa2paper/stats/openlam/ODAC23_downsample_1108_with_fparam_0_1.hdf5", "training_data": { "systems": "/aisi-nas/public/public_data_arxiv/LMDB/ODAC23/trn.lmdb", "batch_size": "auto:256", "_comment": "that's all" }, "validation_data": { "systems": "/aisi-nas/public/public_data_arxiv/LMDB/ODAC23/val.lmdb", "batch_size": 1, "_comment": "that's all" } }, "Alex2D": { "stat_file": "/mnt/data_nas/penganyang/dpa2paper/stats/openlam/alexandria_split_1108_with_fparam_0_1.hdf5", "training_data": { "systems": "/aisi-nas/public/public_data_arxiv/LMDB/Alex2D/trn.lmdb", "batch_size": "auto:256", "_comment": "that's all" }, "validation_data": { "systems": "/aisi-nas/public/public_data_arxiv/LMDB/Alex2D/val.lmdb", "batch_size": 1, "_comment": "that's all" } }, "Omat24": { "stat_file": "/mnt/data_nas/penganyang/dpa2paper/stats/openlam/Omat24_with_fparam_0_1.hdf5", "training_data": { "systems": "/aisi-nas/public/public_data_arxiv/LMDB/OMat24/trn.lmdb", "batch_size": "auto:256", "_comment": "that's all" }, "validation_data": { "systems": "/aisi-nas/public/public_data_arxiv/LMDB/OMat24/val.lmdb", "batch_size": 1, "_comment": "that's all" } }, "OC20M": { "stat_file": "/mnt/data_nas/zhangd/workplace/stat_files/multitask/beta4/OC20M_with_fparam_0_1.hdf5", "training_data": { "systems": "/aisi-nas/public/public_data_arxiv/LMDB/OC20M/trn.lmdb", "batch_size": "auto:256", "_comment": "that's all" }, "validation_data": { "systems": "/aisi-nas/public/public_data_arxiv/LMDB/OC20M/val.lmdb", "batch_size": 1, "_comment": "that's all" } }, "OC22": { "stat_file": "/mnt/data_nas/zhangd/workplace/stat_files/multitask/beta4/OC22_CALM_with_fparam_0_1.hdf5", "training_data": { "systems": "/aisi-nas/public/public_data_arxiv/LMDB/OC22/trn.lmdb", "batch_size": "auto:256", "_comment": "that's all" }, "validation_data": { "systems": "/aisi-nas/public/public_data_arxiv/LMDB/OC22/val.lmdb", "batch_size": 1, "_comment": "that's all" } }, "Organic_Reactions": { "stat_file": "/mnt/data_nas/zhangd/workplace/stat_files/multitask/beta4/Organic_Reactions_with_fparam_0_1.hdf5", "training_data": { "systems": "/aisi-nas/public/public_data_arxiv/LMDB/Organic_Reactions/trn.lmdb", "batch_size": "auto:256", "_comment": "that's all" }, "validation_data": { "systems": "/aisi-nas/public/public_data_arxiv/LMDB/Organic_Reactions/val.lmdb", "batch_size": 1, "_comment": "that's all" } }, "MPTrj":{ "stat_file": "/mnt/data_nas/penganyang/dpa2paper/stats/openlam/MPTrj_with_fparam_0_1.hdf5", "training_data": { "systems": "/aisi-nas/public/public_data_arxiv/LMDB/MPTrj/trn.lmdb", "auto_prob": "prob_sys_size;0:422:0.5;422:839:0.5", "batch_size": "auto:256", "_comment": "that's all" }, "validation_data": { "systems": "/aisi-nas/public/public_data_arxiv/LMDB/MPTrj/val.lmdb", "batch_size": 1, "_comment": "that's all" } } }, "numb_steps": 8000000, "gradient_max_norm": 5.0, "max_ckpt_keep": 5000, "warmup_steps": 0, "seed": 10, "disp_file": "lcurve.out", "disp_freq": 2000, "save_freq": 20000, "_comment": "that's all" } }