Delete args.json
Browse files
args.json
DELETED
|
@@ -1,316 +0,0 @@
|
|
| 1 |
-
{
|
| 2 |
-
"model": "/data/Qwen3-VL-4B-Instruct",
|
| 3 |
-
"model_type": "qwen3_vl",
|
| 4 |
-
"model_revision": null,
|
| 5 |
-
"task_type": "causal_lm",
|
| 6 |
-
"torch_dtype": "bfloat16",
|
| 7 |
-
"attn_impl": null,
|
| 8 |
-
"new_special_tokens": [],
|
| 9 |
-
"num_labels": null,
|
| 10 |
-
"problem_type": "single_label_classification",
|
| 11 |
-
"rope_scaling": null,
|
| 12 |
-
"device_map": null,
|
| 13 |
-
"max_memory": {},
|
| 14 |
-
"max_model_len": null,
|
| 15 |
-
"local_repo_path": null,
|
| 16 |
-
"init_strategy": null,
|
| 17 |
-
"template": "qwen3_vl",
|
| 18 |
-
"system": null,
|
| 19 |
-
"max_length": 50176,
|
| 20 |
-
"truncation_strategy": "delete",
|
| 21 |
-
"max_pixels": null,
|
| 22 |
-
"agent_template": null,
|
| 23 |
-
"norm_bbox": null,
|
| 24 |
-
"use_chat_template": true,
|
| 25 |
-
"padding_free": true,
|
| 26 |
-
"padding_side": "right",
|
| 27 |
-
"loss_scale": "default",
|
| 28 |
-
"sequence_parallel_size": 1,
|
| 29 |
-
"response_prefix": null,
|
| 30 |
-
"template_backend": "swift",
|
| 31 |
-
"dataset": [],
|
| 32 |
-
"val_dataset": [],
|
| 33 |
-
"split_dataset_ratio": 0.0,
|
| 34 |
-
"data_seed": 42,
|
| 35 |
-
"dataset_num_proc": 8,
|
| 36 |
-
"load_from_cache_file": true,
|
| 37 |
-
"dataset_shuffle": true,
|
| 38 |
-
"val_dataset_shuffle": false,
|
| 39 |
-
"streaming": false,
|
| 40 |
-
"interleave_prob": null,
|
| 41 |
-
"stopping_strategy": "first_exhausted",
|
| 42 |
-
"shuffle_buffer_size": 1000,
|
| 43 |
-
"download_mode": "reuse_dataset_if_exists",
|
| 44 |
-
"columns": {},
|
| 45 |
-
"strict": false,
|
| 46 |
-
"remove_unused_columns": true,
|
| 47 |
-
"model_name": null,
|
| 48 |
-
"model_author": null,
|
| 49 |
-
"custom_dataset_info": [],
|
| 50 |
-
"quant_method": null,
|
| 51 |
-
"quant_bits": null,
|
| 52 |
-
"hqq_axis": null,
|
| 53 |
-
"bnb_4bit_compute_dtype": "bfloat16",
|
| 54 |
-
"bnb_4bit_quant_type": "nf4",
|
| 55 |
-
"bnb_4bit_use_double_quant": true,
|
| 56 |
-
"bnb_4bit_quant_storage": null,
|
| 57 |
-
"max_new_tokens": null,
|
| 58 |
-
"temperature": null,
|
| 59 |
-
"top_k": null,
|
| 60 |
-
"top_p": null,
|
| 61 |
-
"repetition_penalty": null,
|
| 62 |
-
"num_beams": 1,
|
| 63 |
-
"stream": false,
|
| 64 |
-
"stop_words": [],
|
| 65 |
-
"logprobs": false,
|
| 66 |
-
"top_logprobs": null,
|
| 67 |
-
"ckpt_dir": "/data/Qwen3-VL-4B-Instruct-mcore",
|
| 68 |
-
"lora_modules": [],
|
| 69 |
-
"tuner_backend": "peft",
|
| 70 |
-
"train_type": "lora",
|
| 71 |
-
"adapters": [],
|
| 72 |
-
"external_plugins": [],
|
| 73 |
-
"seed": 42,
|
| 74 |
-
"model_kwargs": {},
|
| 75 |
-
"load_args": false,
|
| 76 |
-
"load_data_args": false,
|
| 77 |
-
"packing": true,
|
| 78 |
-
"packing_length": 50176,
|
| 79 |
-
"lazy_tokenize": false,
|
| 80 |
-
"cached_dataset": [
|
| 81 |
-
"/data/qwen3vl_train_split_llava665k_part0",
|
| 82 |
-
"/data/qwen3vl_train_split_robobrain_part0",
|
| 83 |
-
"/data/qwen3vl_train_split_robobrain_part1",
|
| 84 |
-
"/data/qwen3vl_train_split_robobrain_part2",
|
| 85 |
-
"/data/qwen3vl_train_split_robobrain_part3",
|
| 86 |
-
"/data/qwen3vl_train_split_robovqa_part0",
|
| 87 |
-
"/data/qwen3vl_train_split_robovqa_part1",
|
| 88 |
-
"/data/qwen3vl_train_split_robovqa_part2",
|
| 89 |
-
"/data/qwen3vl_train_split_robovqa_part3",
|
| 90 |
-
"/data/qwen3vl_train_split_egoplanit_part0",
|
| 91 |
-
"/data/qwen3vl_train_split_pixmo-point-570k_part0",
|
| 92 |
-
"/data/qwen3vl_train_split_object-ref-340k_part0",
|
| 93 |
-
"/data/qwen3vl_train_split_region-ref-340k_part0",
|
| 94 |
-
"/data/qwen3vl_train_split_RefSpatial_vacant_qa_231K_part0",
|
| 95 |
-
"/data/qwen3vl_train_split_scanqa_train_25K_128frame_part0",
|
| 96 |
-
"/data/qwen3vl_train_split_sqa3d_train_79K_128frame_part0",
|
| 97 |
-
"/data/qwen3vl_train_split_scanvsiqa_train_90K_128frame_part0",
|
| 98 |
-
"/data/qwen3vl_train_split_imagebench_train_v3_part0"
|
| 99 |
-
],
|
| 100 |
-
"custom_register_path": [],
|
| 101 |
-
"use_hf": false,
|
| 102 |
-
"hub_token": null,
|
| 103 |
-
"ddp_timeout": 18000000,
|
| 104 |
-
"ddp_backend": null,
|
| 105 |
-
"ignore_args_error": false,
|
| 106 |
-
"use_swift_lora": false,
|
| 107 |
-
"freeze_llm": false,
|
| 108 |
-
"freeze_vit": true,
|
| 109 |
-
"freeze_aligner": true,
|
| 110 |
-
"freeze_parameters": [],
|
| 111 |
-
"freeze_parameters_regex": null,
|
| 112 |
-
"freeze_parameters_ratio": 0.0,
|
| 113 |
-
"trainable_parameters": [],
|
| 114 |
-
"trainable_parameters_regex": null,
|
| 115 |
-
"adapter_load": null,
|
| 116 |
-
"target_modules": [
|
| 117 |
-
"all-linear"
|
| 118 |
-
],
|
| 119 |
-
"target_regex": null,
|
| 120 |
-
"modules_to_save": [],
|
| 121 |
-
"lora_rank": 8,
|
| 122 |
-
"lora_alpha": 32,
|
| 123 |
-
"lora_dropout": 0.05,
|
| 124 |
-
"lora_bias": "none",
|
| 125 |
-
"lora_dtype": null,
|
| 126 |
-
"use_rslora": false,
|
| 127 |
-
"ref_load": null,
|
| 128 |
-
"ref_adapter_load": null,
|
| 129 |
-
"beta": 0.1,
|
| 130 |
-
"rpo_alpha": null,
|
| 131 |
-
"reference_free": false,
|
| 132 |
-
"label_smoothing": 0.0,
|
| 133 |
-
"f_divergence_type": "reverse_kl",
|
| 134 |
-
"loss_type": "sigmoid",
|
| 135 |
-
"padded_vocab_size": null,
|
| 136 |
-
"initialize_embedding": false,
|
| 137 |
-
"mlp_padding_free": false,
|
| 138 |
-
"dataloader_persistent_workers": true,
|
| 139 |
-
"dataloader_prefetch_factor": 10,
|
| 140 |
-
"architectures": null,
|
| 141 |
-
"llm_architectures": null,
|
| 142 |
-
"max_epochs": 2,
|
| 143 |
-
"enable_dft_loss": false,
|
| 144 |
-
"enable_channel_loss": false,
|
| 145 |
-
"original_max_position_embeddings": null,
|
| 146 |
-
"partial_rotary_factor": null,
|
| 147 |
-
"use_shared_expert_gate": null,
|
| 148 |
-
"vit_gradient_checkpointing": true,
|
| 149 |
-
"gradient_checkpointing_kwargs": null,
|
| 150 |
-
"linear_num_value_heads": null,
|
| 151 |
-
"linear_num_key_heads": null,
|
| 152 |
-
"linear_key_head_dim": null,
|
| 153 |
-
"linear_value_head_dim": null,
|
| 154 |
-
"linear_conv_kernel_dim": null,
|
| 155 |
-
"layer_types": null,
|
| 156 |
-
"mrope_interleaved": null,
|
| 157 |
-
"micro_batch_size": 1,
|
| 158 |
-
"global_batch_size": 32,
|
| 159 |
-
"recompute_granularity": "full",
|
| 160 |
-
"recompute_method": "uniform",
|
| 161 |
-
"recompute_num_layers": 1,
|
| 162 |
-
"recompute_modules": [
|
| 163 |
-
"core_attn"
|
| 164 |
-
],
|
| 165 |
-
"use_cpu_initialization": false,
|
| 166 |
-
"deterministic_mode": false,
|
| 167 |
-
"train_iters": null,
|
| 168 |
-
"log_interval": 5,
|
| 169 |
-
"tensorboard_dir": null,
|
| 170 |
-
"no_masked_softmax_fusion": false,
|
| 171 |
-
"no_bias_dropout_fusion": false,
|
| 172 |
-
"no_bias_swiglu_fusion": false,
|
| 173 |
-
"no_rope_fusion": null,
|
| 174 |
-
"no_gradient_accumulation_fusion": false,
|
| 175 |
-
"cross_entropy_loss_fusion": true,
|
| 176 |
-
"cross_entropy_fusion_impl": "native",
|
| 177 |
-
"calculate_per_token_loss": null,
|
| 178 |
-
"use_flash_attn": false,
|
| 179 |
-
"attention_backend": "flash",
|
| 180 |
-
"optimizer": "adam",
|
| 181 |
-
"optimizer_cpu_offload": false,
|
| 182 |
-
"optimizer_offload_fraction": 1.0,
|
| 183 |
-
"use_precision_aware_optimizer": false,
|
| 184 |
-
"main_grads_dtype": "fp32",
|
| 185 |
-
"main_params_dtype": "fp32",
|
| 186 |
-
"exp_avg_dtype": "fp32",
|
| 187 |
-
"exp_avg_sq_dtype": "fp32",
|
| 188 |
-
"dataloader_type": "cyclic",
|
| 189 |
-
"manual_gc": false,
|
| 190 |
-
"manual_gc_interval": 0,
|
| 191 |
-
"lr": 5e-05,
|
| 192 |
-
"lr_decay_style": "cosine",
|
| 193 |
-
"lr_decay_iters": null,
|
| 194 |
-
"lr_warmup_iters": 0,
|
| 195 |
-
"lr_warmup_fraction": 0.05,
|
| 196 |
-
"min_lr": 1e-06,
|
| 197 |
-
"weight_decay": 0.1,
|
| 198 |
-
"clip_grad": 1.0,
|
| 199 |
-
"adam_beta1": 0.9,
|
| 200 |
-
"adam_beta2": 0.95,
|
| 201 |
-
"adam_eps": 1e-08,
|
| 202 |
-
"sgd_momentum": 0.9,
|
| 203 |
-
"save": "/code1/train_logs/lora/thinker/v164-20251211-152343",
|
| 204 |
-
"save_interval": 250,
|
| 205 |
-
"no_save_optim": false,
|
| 206 |
-
"no_save_rng": false,
|
| 207 |
-
"load": "/data/Qwen3-VL-4B-Instruct-mcore",
|
| 208 |
-
"no_load_optim": false,
|
| 209 |
-
"no_load_rng": false,
|
| 210 |
-
"finetune": true,
|
| 211 |
-
"ckpt_format": "torch_dist",
|
| 212 |
-
"no_initialization": true,
|
| 213 |
-
"auto_detect_ckpt_format": true,
|
| 214 |
-
"exit_on_missing_checkpoint": true,
|
| 215 |
-
"distributed_backend": "nccl",
|
| 216 |
-
"local_rank": 0,
|
| 217 |
-
"use_distributed_optimizer": true,
|
| 218 |
-
"tensor_model_parallel_size": 1,
|
| 219 |
-
"pipeline_model_parallel_size": 1,
|
| 220 |
-
"decoder_first_pipeline_num_layers": null,
|
| 221 |
-
"decoder_last_pipeline_num_layers": null,
|
| 222 |
-
"sequence_parallel": true,
|
| 223 |
-
"context_parallel_size": 1,
|
| 224 |
-
"tp_comm_overlap": false,
|
| 225 |
-
"overlap_grad_reduce": false,
|
| 226 |
-
"overlap_param_gather": false,
|
| 227 |
-
"distributed_timeout_minutes": 300000,
|
| 228 |
-
"num_layers": null,
|
| 229 |
-
"hidden_size": null,
|
| 230 |
-
"ffn_hidden_size": null,
|
| 231 |
-
"num_attention_heads": null,
|
| 232 |
-
"group_query_attention": null,
|
| 233 |
-
"num_query_groups": null,
|
| 234 |
-
"max_position_embeddings": null,
|
| 235 |
-
"position_embedding_type": null,
|
| 236 |
-
"mrope_section": null,
|
| 237 |
-
"rotary_base": null,
|
| 238 |
-
"rotary_percent": 1.0,
|
| 239 |
-
"rotary_interleaved": null,
|
| 240 |
-
"normalization": "RMSNorm",
|
| 241 |
-
"norm_epsilon": null,
|
| 242 |
-
"swiglu": null,
|
| 243 |
-
"untie_embeddings_and_output_weights": null,
|
| 244 |
-
"disable_bias_linear": null,
|
| 245 |
-
"add_qkv_bias": null,
|
| 246 |
-
"attention_dropout": null,
|
| 247 |
-
"hidden_dropout": 0.0,
|
| 248 |
-
"kv_channels": null,
|
| 249 |
-
"qk_layernorm": null,
|
| 250 |
-
"transformer_impl": "transformer_engine",
|
| 251 |
-
"num_experts": null,
|
| 252 |
-
"moe_layer_freq": null,
|
| 253 |
-
"moe_ffn_hidden_size": null,
|
| 254 |
-
"moe_shared_expert_intermediate_size": null,
|
| 255 |
-
"moe_router_topk": null,
|
| 256 |
-
"moe_router_pre_softmax": null,
|
| 257 |
-
"moe_router_dtype": "fp32",
|
| 258 |
-
"moe_router_score_function": null,
|
| 259 |
-
"moe_router_bias_update_rate": 0.001,
|
| 260 |
-
"moe_router_enable_expert_bias": null,
|
| 261 |
-
"moe_router_topk_scaling_factor": null,
|
| 262 |
-
"moe_router_load_balancing_type": null,
|
| 263 |
-
"expert_model_parallel_size": 1,
|
| 264 |
-
"expert_tensor_parallel_size": 1,
|
| 265 |
-
"moe_token_dispatcher_type": null,
|
| 266 |
-
"moe_enable_deepep": false,
|
| 267 |
-
"moe_grouped_gemm": false,
|
| 268 |
-
"moe_permute_fusion": false,
|
| 269 |
-
"moe_aux_loss_coeff": 0.0,
|
| 270 |
-
"moe_z_loss_coeff": null,
|
| 271 |
-
"moe_expert_capacity_factor": null,
|
| 272 |
-
"moe_shared_expert_overlap": false,
|
| 273 |
-
"moe_layer_recompute": false,
|
| 274 |
-
"moe_token_drop_policy": null,
|
| 275 |
-
"multi_latent_attention": null,
|
| 276 |
-
"q_lora_rank": null,
|
| 277 |
-
"kv_lora_rank": null,
|
| 278 |
-
"qk_head_dim": null,
|
| 279 |
-
"qk_pos_emb_head_dim": null,
|
| 280 |
-
"fp8_format": null,
|
| 281 |
-
"fp8_recipe": "delayed",
|
| 282 |
-
"fp8_amax_history_len": 1024,
|
| 283 |
-
"fp8_amax_compute_algo": "max",
|
| 284 |
-
"fp8_param_gather": false,
|
| 285 |
-
"fp16": null,
|
| 286 |
-
"bf16": null,
|
| 287 |
-
"apply_query_key_layer_scaling": null,
|
| 288 |
-
"attention_softmax_in_fp32": true,
|
| 289 |
-
"log_params_norm": false,
|
| 290 |
-
"log_throughput": false,
|
| 291 |
-
"tensorboard_log_interval": 1,
|
| 292 |
-
"tensorboard_queue_size": 50,
|
| 293 |
-
"log_timers_to_tensorboard": true,
|
| 294 |
-
"no_log_learning_rate_to_tensorboard": false,
|
| 295 |
-
"log_validation_ppl_to_tensorboard": true,
|
| 296 |
-
"log_memory_to_tensorboard": true,
|
| 297 |
-
"logging_level": null,
|
| 298 |
-
"wandb_project": null,
|
| 299 |
-
"wandb_exp_name": null,
|
| 300 |
-
"wandb_save_dir": null,
|
| 301 |
-
"eval_iters": -1,
|
| 302 |
-
"eval_interval": null,
|
| 303 |
-
"seq_length": 50176,
|
| 304 |
-
"num_workers": 8,
|
| 305 |
-
"extra_megatron_kwargs": null,
|
| 306 |
-
"add_version": true,
|
| 307 |
-
"rank": 0,
|
| 308 |
-
"global_world_size": 16,
|
| 309 |
-
"local_world_size": 8,
|
| 310 |
-
"model_suffix": "Qwen3-VL-4B-Instruct",
|
| 311 |
-
"model_info": "ModelInfo(model_type='qwen3_vl', model_dir='/data/Qwen3-VL-4B-Instruct', torch_dtype=torch.bfloat16, max_model_len=262144, quant_method=None, quant_bits=None, rope_scaling={'mrope_interleaved': True, 'mrope_section': [24, 20, 20], 'rope_type': 'default'}, is_moe_model=False, config=None, task_type='causal_lm', num_labels=None)",
|
| 312 |
-
"model_meta": "ModelMeta(model_type='qwen3_vl', model_groups=[], template='qwen3_vl', get_function=<function get_model_tokenizer_qwen3_vl at 0x77a968617880>, model_arch=MultiModelKeys(arch_name='qwen3_vl', embedding=None, module_list=None, lm_head=None, q_proj=None, k_proj=None, v_proj=None, o_proj=None, attention=None, mlp=None, down_proj=None, qkv_proj=None, qk_proj=None, qa_proj=None, qb_proj=None, kv_proj=None, kva_proj=None, kvb_proj=None, language_model=['model.language_model'], aligner=['model.visual.merger', 'model.visual.deepstack_merger_list'], vision_tower=['model.visual'], generator=[]), architectures=['Qwen3VLForConditionalGeneration'], additional_saved_files=[], torch_dtype=None, is_multimodal=True, is_reward=False, task_type=None, ignore_patterns=None, requires=['transformers>=4.57.0.dev', 'qwen_vl_utils>=0.0.14', 'decord'], tags=['vision', 'video'])",
|
| 313 |
-
"model_dir": "/data/Qwen3-VL-4B-Instruct",
|
| 314 |
-
"hub": "<class 'swift.hub.hub.MSHub'>",
|
| 315 |
-
"megatron_model_meta": "MMGPTMegatronModelMeta(megatron_model_type='qwen3_vl', model_types=['qwen3_vl', 'qwen3_moe_vl'], convert_mcore2hf=<function convert_mcore2hf_qwen3_vl at 0x77a8fc831bc0>, convert_hf2mcore=<function convert_hf2mcore_qwen3_vl at 0x77a8fc831440>, model_cls=<class 'swift.megatron.model.mm_gpt.qwen3_vl.Qwen3VLGPTModel'>, convert_hf_config=<function convert_gpt_hf_config at 0x77a8fc9f60c0>, get_transformer_layer_spec=None, model_provider=<function model_provider at 0x77a8fc9f51c0>, visual_cls=<class 'swift.megatron.model.mm_gpt.qwen3_vl.Qwen3VL_Vit'>, extra_args_provider=None)"
|
| 316 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|