├── LICENSE ├── README.md ├── bert_base └── README.md ├── checkpoint └── README.md ├── data ├── README.md ├── generate_pair.py └── process.sh ├── kgat ├── README.md ├── bert_model.py ├── data_loader.py ├── eval.sh ├── fever_score_test.py ├── file_utils.py ├── models.py ├── output │ ├── dev.json │ ├── predictions.jsonl │ ├── prepare.py │ ├── run_prepare.sh │ └── test.json ├── test.py ├── test.sh ├── train.py └── train.sh ├── model.png ├── pretrain ├── README.md ├── bert_model.py ├── data_loader.py ├── file_utils.py ├── models.py ├── train.py └── train.sh ├── retrieval_model ├── README.md ├── bert_model.py ├── data_loader.py ├── file_utils.py ├── models.py ├── process_data.py ├── test.py ├── test.sh ├── train.py └── train.sh └── scikgat ├── README.md ├── abstract_rerank ├── README.md ├── bert_dataloader.py ├── inference.py └── scibert.py ├── abstract_retrieval ├── evaluate.py ├── oracle.py └── tfidf.py ├── data ├── README.md ├── covid_data │ └── split_data.py ├── process_data.sh └── scifact_data │ ├── process_fever.py │ ├── process_scifact.py │ └── process_train.py ├── kgat ├── data_loader.py ├── models.py ├── test.py ├── train.py └── train_roberta.py ├── mlm_models └── README.md ├── model └── README.md ├── pipeline └── evaluate_paper_metrics.py ├── prediction ├── README.md ├── abstract_rerank_dev.jsonl ├── abstract_rerank_dev_mlm.jsonl ├── abstract_retrieval_dev_top100.jsonl ├── abstract_retrieval_dev_top3.jsonl ├── kgat_dev_roberta_base.jsonl ├── kgat_dev_roberta_base_mlm.jsonl ├── kgat_dev_roberta_base_rp.jsonl ├── kgat_dev_roberta_large.jsonl ├── kgat_dev_roberta_large_mlm.jsonl ├── kgat_dev_roberta_large_pretrain.jsonl ├── kgat_dev_roberta_large_rp.jsonl ├── kgat_dev_scibert.jsonl ├── kgat_dev_scibert_mlm.jsonl ├── kgat_dev_scibert_rp.jsonl ├── rationale_selection_dev_roberta_base.jsonl ├── rationale_selection_dev_roberta_base_mlm.jsonl ├── rationale_selection_dev_roberta_large.jsonl ├── rationale_selection_dev_roberta_large_mlm.jsonl ├── rationale_selection_dev_scibert.jsonl └── rationale_selection_dev_scibert_mlm.jsonl ├── rationale_selection ├── evaluate.py └── transformer.py ├── requirements.txt ├── script ├── eval.sh ├── inference.sh ├── train_kgat.sh └── train_rs.sh ├── submission ├── README.md ├── check.py ├── label_prediction_test.jsonl └── rationale_selection_test.jsonl └── training └── rationale_selection_scifact_train.py /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/README.md -------------------------------------------------------------------------------- /bert_base/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/bert_base/README.md -------------------------------------------------------------------------------- /checkpoint/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/checkpoint/README.md -------------------------------------------------------------------------------- /data/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/data/README.md -------------------------------------------------------------------------------- /data/generate_pair.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/data/generate_pair.py -------------------------------------------------------------------------------- /data/process.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/data/process.sh -------------------------------------------------------------------------------- /kgat/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/kgat/README.md -------------------------------------------------------------------------------- /kgat/bert_model.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/kgat/bert_model.py -------------------------------------------------------------------------------- /kgat/data_loader.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/kgat/data_loader.py -------------------------------------------------------------------------------- /kgat/eval.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/kgat/eval.sh -------------------------------------------------------------------------------- /kgat/fever_score_test.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/kgat/fever_score_test.py -------------------------------------------------------------------------------- /kgat/file_utils.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/kgat/file_utils.py -------------------------------------------------------------------------------- /kgat/models.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/kgat/models.py -------------------------------------------------------------------------------- /kgat/output/dev.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/kgat/output/dev.json -------------------------------------------------------------------------------- /kgat/output/predictions.jsonl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/kgat/output/predictions.jsonl -------------------------------------------------------------------------------- /kgat/output/prepare.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/kgat/output/prepare.py -------------------------------------------------------------------------------- /kgat/output/run_prepare.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/kgat/output/run_prepare.sh -------------------------------------------------------------------------------- /kgat/output/test.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/kgat/output/test.json -------------------------------------------------------------------------------- /kgat/test.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/kgat/test.py -------------------------------------------------------------------------------- /kgat/test.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/kgat/test.sh -------------------------------------------------------------------------------- /kgat/train.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/kgat/train.py -------------------------------------------------------------------------------- /kgat/train.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/kgat/train.sh -------------------------------------------------------------------------------- /model.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/model.png -------------------------------------------------------------------------------- /pretrain/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/pretrain/README.md -------------------------------------------------------------------------------- /pretrain/bert_model.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/pretrain/bert_model.py -------------------------------------------------------------------------------- /pretrain/data_loader.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/pretrain/data_loader.py -------------------------------------------------------------------------------- /pretrain/file_utils.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/pretrain/file_utils.py -------------------------------------------------------------------------------- /pretrain/models.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/pretrain/models.py -------------------------------------------------------------------------------- /pretrain/train.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/pretrain/train.py -------------------------------------------------------------------------------- /pretrain/train.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/pretrain/train.sh -------------------------------------------------------------------------------- /retrieval_model/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/retrieval_model/README.md -------------------------------------------------------------------------------- /retrieval_model/bert_model.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/retrieval_model/bert_model.py -------------------------------------------------------------------------------- /retrieval_model/data_loader.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/retrieval_model/data_loader.py -------------------------------------------------------------------------------- /retrieval_model/file_utils.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/retrieval_model/file_utils.py -------------------------------------------------------------------------------- /retrieval_model/models.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/retrieval_model/models.py -------------------------------------------------------------------------------- /retrieval_model/process_data.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/retrieval_model/process_data.py -------------------------------------------------------------------------------- /retrieval_model/test.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/retrieval_model/test.py -------------------------------------------------------------------------------- /retrieval_model/test.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/retrieval_model/test.sh -------------------------------------------------------------------------------- /retrieval_model/train.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/retrieval_model/train.py -------------------------------------------------------------------------------- /retrieval_model/train.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/retrieval_model/train.sh -------------------------------------------------------------------------------- /scikgat/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/scikgat/README.md -------------------------------------------------------------------------------- /scikgat/abstract_rerank/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/scikgat/abstract_rerank/README.md -------------------------------------------------------------------------------- /scikgat/abstract_rerank/bert_dataloader.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/scikgat/abstract_rerank/bert_dataloader.py -------------------------------------------------------------------------------- /scikgat/abstract_rerank/inference.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/scikgat/abstract_rerank/inference.py -------------------------------------------------------------------------------- /scikgat/abstract_rerank/scibert.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/scikgat/abstract_rerank/scibert.py -------------------------------------------------------------------------------- /scikgat/abstract_retrieval/evaluate.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/scikgat/abstract_retrieval/evaluate.py -------------------------------------------------------------------------------- /scikgat/abstract_retrieval/oracle.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/scikgat/abstract_retrieval/oracle.py -------------------------------------------------------------------------------- /scikgat/abstract_retrieval/tfidf.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/scikgat/abstract_retrieval/tfidf.py -------------------------------------------------------------------------------- /scikgat/data/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/scikgat/data/README.md -------------------------------------------------------------------------------- /scikgat/data/covid_data/split_data.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/scikgat/data/covid_data/split_data.py -------------------------------------------------------------------------------- /scikgat/data/process_data.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/scikgat/data/process_data.sh -------------------------------------------------------------------------------- /scikgat/data/scifact_data/process_fever.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/scikgat/data/scifact_data/process_fever.py -------------------------------------------------------------------------------- /scikgat/data/scifact_data/process_scifact.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/scikgat/data/scifact_data/process_scifact.py -------------------------------------------------------------------------------- /scikgat/data/scifact_data/process_train.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/scikgat/data/scifact_data/process_train.py -------------------------------------------------------------------------------- /scikgat/kgat/data_loader.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/scikgat/kgat/data_loader.py -------------------------------------------------------------------------------- /scikgat/kgat/models.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/scikgat/kgat/models.py -------------------------------------------------------------------------------- /scikgat/kgat/test.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/scikgat/kgat/test.py -------------------------------------------------------------------------------- /scikgat/kgat/train.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/scikgat/kgat/train.py -------------------------------------------------------------------------------- /scikgat/kgat/train_roberta.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/scikgat/kgat/train_roberta.py -------------------------------------------------------------------------------- /scikgat/mlm_models/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/scikgat/mlm_models/README.md -------------------------------------------------------------------------------- /scikgat/model/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/scikgat/model/README.md -------------------------------------------------------------------------------- /scikgat/pipeline/evaluate_paper_metrics.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/scikgat/pipeline/evaluate_paper_metrics.py -------------------------------------------------------------------------------- /scikgat/prediction/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/scikgat/prediction/README.md -------------------------------------------------------------------------------- /scikgat/prediction/abstract_rerank_dev.jsonl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/scikgat/prediction/abstract_rerank_dev.jsonl -------------------------------------------------------------------------------- /scikgat/prediction/abstract_rerank_dev_mlm.jsonl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/scikgat/prediction/abstract_rerank_dev_mlm.jsonl -------------------------------------------------------------------------------- /scikgat/prediction/abstract_retrieval_dev_top100.jsonl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/scikgat/prediction/abstract_retrieval_dev_top100.jsonl -------------------------------------------------------------------------------- /scikgat/prediction/abstract_retrieval_dev_top3.jsonl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/scikgat/prediction/abstract_retrieval_dev_top3.jsonl -------------------------------------------------------------------------------- /scikgat/prediction/kgat_dev_roberta_base.jsonl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/scikgat/prediction/kgat_dev_roberta_base.jsonl -------------------------------------------------------------------------------- /scikgat/prediction/kgat_dev_roberta_base_mlm.jsonl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/scikgat/prediction/kgat_dev_roberta_base_mlm.jsonl -------------------------------------------------------------------------------- /scikgat/prediction/kgat_dev_roberta_base_rp.jsonl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/scikgat/prediction/kgat_dev_roberta_base_rp.jsonl -------------------------------------------------------------------------------- /scikgat/prediction/kgat_dev_roberta_large.jsonl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/scikgat/prediction/kgat_dev_roberta_large.jsonl -------------------------------------------------------------------------------- /scikgat/prediction/kgat_dev_roberta_large_mlm.jsonl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/scikgat/prediction/kgat_dev_roberta_large_mlm.jsonl -------------------------------------------------------------------------------- /scikgat/prediction/kgat_dev_roberta_large_pretrain.jsonl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/scikgat/prediction/kgat_dev_roberta_large_pretrain.jsonl -------------------------------------------------------------------------------- /scikgat/prediction/kgat_dev_roberta_large_rp.jsonl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/scikgat/prediction/kgat_dev_roberta_large_rp.jsonl -------------------------------------------------------------------------------- /scikgat/prediction/kgat_dev_scibert.jsonl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/scikgat/prediction/kgat_dev_scibert.jsonl -------------------------------------------------------------------------------- /scikgat/prediction/kgat_dev_scibert_mlm.jsonl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/scikgat/prediction/kgat_dev_scibert_mlm.jsonl -------------------------------------------------------------------------------- /scikgat/prediction/kgat_dev_scibert_rp.jsonl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/scikgat/prediction/kgat_dev_scibert_rp.jsonl -------------------------------------------------------------------------------- /scikgat/prediction/rationale_selection_dev_roberta_base.jsonl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/scikgat/prediction/rationale_selection_dev_roberta_base.jsonl -------------------------------------------------------------------------------- /scikgat/prediction/rationale_selection_dev_roberta_base_mlm.jsonl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/scikgat/prediction/rationale_selection_dev_roberta_base_mlm.jsonl -------------------------------------------------------------------------------- /scikgat/prediction/rationale_selection_dev_roberta_large.jsonl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/scikgat/prediction/rationale_selection_dev_roberta_large.jsonl -------------------------------------------------------------------------------- /scikgat/prediction/rationale_selection_dev_roberta_large_mlm.jsonl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/scikgat/prediction/rationale_selection_dev_roberta_large_mlm.jsonl -------------------------------------------------------------------------------- /scikgat/prediction/rationale_selection_dev_scibert.jsonl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/scikgat/prediction/rationale_selection_dev_scibert.jsonl -------------------------------------------------------------------------------- /scikgat/prediction/rationale_selection_dev_scibert_mlm.jsonl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/scikgat/prediction/rationale_selection_dev_scibert_mlm.jsonl -------------------------------------------------------------------------------- /scikgat/rationale_selection/evaluate.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/scikgat/rationale_selection/evaluate.py -------------------------------------------------------------------------------- /scikgat/rationale_selection/transformer.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/scikgat/rationale_selection/transformer.py -------------------------------------------------------------------------------- /scikgat/requirements.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/scikgat/requirements.txt -------------------------------------------------------------------------------- /scikgat/script/eval.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/scikgat/script/eval.sh -------------------------------------------------------------------------------- /scikgat/script/inference.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/scikgat/script/inference.sh -------------------------------------------------------------------------------- /scikgat/script/train_kgat.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/scikgat/script/train_kgat.sh -------------------------------------------------------------------------------- /scikgat/script/train_rs.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/scikgat/script/train_rs.sh -------------------------------------------------------------------------------- /scikgat/submission/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/scikgat/submission/README.md -------------------------------------------------------------------------------- /scikgat/submission/check.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/scikgat/submission/check.py -------------------------------------------------------------------------------- /scikgat/submission/label_prediction_test.jsonl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/scikgat/submission/label_prediction_test.jsonl -------------------------------------------------------------------------------- /scikgat/submission/rationale_selection_test.jsonl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/scikgat/submission/rationale_selection_test.jsonl -------------------------------------------------------------------------------- /scikgat/training/rationale_selection_scifact_train.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thunlp/KernelGAT/HEAD/scikgat/training/rationale_selection_scifact_train.py --------------------------------------------------------------------------------