From efa7a8b903bf55737aa6255850c5656f8b7a6d8d Mon Sep 17 00:00:00 2001 From: breck7 Date: Wed, 19 Jun 2024 18:26:47 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20wws=20from=20@=20breck7/Cancer?= =?UTF-8?q?DB@65cc81e39272a8855c136cb879626068f62f9808=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 404.html | 6 +- ScrollSet.js | 40 +- cli.js | 2 +- code/measures.parsers | 2 +- concepts/3d-crt.html | 6 +- concepts/a-lucky-man-a-memoir.html | 6 +- concepts/a-new-war-on-cancer-book.html | 6 +- concepts/aaccr-et.html | 6 +- concepts/aaci.html | 6 +- concepts/aacr.html | 6 +- concepts/aad.html | 6 +- concepts/abbott.html | 6 +- concepts/abbvie.html | 6 +- concepts/abramson-cancer-center.html | 6 +- concepts/abraxane.html | 6 +- concepts/acd-au.html | 6 +- concepts/acinar-cell-carcinoma-nos.html | 6 +- ...acinar-cell-carcinoma-of-the-pancreas.html | 6 +- concepts/acinic-cell-carcinoma.html | 6 +- concepts/acral-melanoma.html | 6 +- concepts/acs-can.html | 6 +- concepts/acs-cancer-programs.html | 6 +- concepts/acs.html | 6 +- concepts/actcr-au.html | 6 +- concepts/actinomycin.html | 6 +- concepts/activated-b-cell-type.html | 6 +- concepts/acupressure.html | 6 +- concepts/acupuncture.html | 6 +- concepts/acute-basophilic-leukemia.html | 6 +- .../acute-leukemias-of-ambiguous-lineage.html | 6 +- concepts/acute-megakaryoblastic-leukemia.html | 6 +- .../acute-monoblastic-monocytic-leukemia.html | 6 +- concepts/acute-myeloid-leukemia.html | 6 +- concepts/acute-myelomonocytic-leukemia.html | 6 +- .../acute-panmyelosis-with-myelofibrosis.html | 6 +- concepts/acute-undifferentiated-leukemia.html | 6 +- concepts/adamantinoma.html | 6 +- concepts/adenocarcinoma-in-situ.html | 6 +- concepts/adenocarcinoma-nos.html | 6 +- ...noma-of-the-gastroesophageal-junction.html | 6 +- concepts/adenoid-cystic-breast-cancer.html | 6 +- .../adenoid-cystic-carcinoma-of-the-lung.html | 6 +- concepts/adenoid-cystic-carcinoma.html | 6 +- .../adenomyoepithelioma-of-the-breast.html | 6 +- ...squamous-carcinoma-of-the-gallbladder.html | 6 +- ...enosquamous-carcinoma-of-the-pancreas.html | 6 +- ...denosquamous-carcinoma-of-the-stomach.html | 6 +- ...adenosquamous-carcinoma-of-the-tongue.html | 6 +- concepts/adrenal-gland.html | 6 +- concepts/adrenalectomy.html | 6 +- concepts/adrenocortical-adenoma.html | 6 +- concepts/adrenocortical-carcinoma.html | 6 +- concepts/adult-t-cell-leukemia-lymphoma.html | 6 +- concepts/advent-health-orlando.html | 6 +- concepts/aecc.html | 6 +- concepts/aggressive-angiomyxoma.html | 6 +- ...sive-digital-papillary-adenocarcinoma.html | 6 +- concepts/aggressive-nk-cell-leukemia.html | 6 +- .../aggressive-systemic-mastocytosis.html | 6 +- concepts/aicr.html | 6 +- concepts/albert-b-chandler-hospital.html | 6 +- concepts/alitretinoin.html | 6 +- .../alk-positive-large-b-cell-lymphoma.html | 6 +- concepts/alkaline-diet.html | 6 +- concepts/all.html | 6 +- concepts/alpha-heavy-chain-disease.html | 6 +- concepts/altretamine.html | 6 +- concepts/alveolar-rhabdomyosarcoma.html | 6 +- concepts/alveolar-soft-part-sarcoma.html | 6 +- concepts/alvin-j-siteman-cancer-center.html | 6 +- concepts/american-cancer-society.html | 6 +- concepts/american-liver-foundation.html | 6 +- concepts/american-lung-association.html | 6 +- concepts/amgen.html | 6 +- ...blastic-with-t122p13.3q13.3rbm15-mkl1.html | 6 +- concepts/aml-nos.html | 6 +- concepts/aml-with-bcr-abl1.html | 6 +- ...aml-with-biallelic-mutations-of-cebpa.html | 6 +- ...16p13.1q22-or-t1616p13.1q22cbfb-myh11.html | 6 +- ...1.3q26.2-or-t33q21.3q26.2-gata2-mecom.html | 6 +- concepts/aml-with-maturation.html | 6 +- .../aml-with-minimal-differentiation.html | 6 +- concepts/aml-with-mutated-npm1.html | 6 +- concepts/aml-with-mutated-runx1.html | 6 +- ...l-with-myelodysplasia-related-changes.html | 6 +- ...-with-recurrent-genetic-abnormalities.html | 6 +- concepts/aml-with-t69p23q34.1dek-nup214.html | 6 +- .../aml-with-t821q22q22.1runx1-runx1t1.html | 6 +- .../aml-with-t911p21.3q23.3mllt3-kmt2a.html | 6 +- concepts/aml-without-maturation.html | 6 +- concepts/ampulla-of-vater.html | 6 +- concepts/ampullary-carcinoma.html | 6 +- concepts/amyloidosis.html | 6 +- concepts/anal-gland-adenocarcinoma.html | 6 +- concepts/anal-squamous-cell-carcinoma.html | 6 +- concepts/anaplastic-astrocytoma.html | 6 +- concepts/anaplastic-ependymoma.html | 6 +- concepts/anaplastic-ganglioglioma.html | 6 +- ...stic-large-cell-lymphoma-alk-negative.html | 6 +- ...stic-large-cell-lymphoma-alk-positive.html | 6 +- concepts/anaplastic-large-cell-lymphoma.html | 6 +- concepts/anaplastic-meningioma.html | 6 +- concepts/anaplastic-oligoastrocytoma.html | 6 +- concepts/anaplastic-oligodendroglioma.html | 6 +- ...plastic-pleomorphic-xanthoastrocytoma.html | 6 +- concepts/anaplastic-thyroid-cancer.html | 6 +- concepts/angiocentric-glioma.html | 6 +- .../angioimmunoblastic-t-cell-lymphoma.html | 6 +- .../angiomatoid-fibrous-histiocytoma.html | 6 +- concepts/angiosarcoma.html | 6 +- concepts/annals-of-oncology.html | 6 +- concepts/anorectal-mucosal-melanoma.html | 6 +- concepts/anticancer.html | 6 +- concepts/apl-with-pml-rara.html | 6 +- concepts/appendiceal-adenocarcinoma.html | 6 +- concepts/argentina-ncc.html | 6 +- concepts/arizona-cancer-center.html | 6 +- concepts/aromatherapy.html | 6 +- concepts/arpha-h.html | 6 +- concepts/asco.html | 6 +- concepts/astrazeneca.html | 6 +- concepts/astroblastoma.html | 6 +- concepts/astrocytoma.html | 6 +- concepts/atezolizumab.html | 6 +- .../atypical-choroid-plexus-papilloma.html | 6 +- ...al-chronic-myeloid-leukemia-bcr-abl1-.html | 6 +- concepts/atypical-fibroxanthoma.html | 6 +- concepts/atypical-lung-carcinoid.html | 6 +- concepts/atypical-meningioma.html | 6 +- concepts/atypical-nevus.html | 6 +- concepts/atypical-pituitary-adenoma.html | 6 +- .../atypical-teratoid-rhabdoid-tumor.html | 6 +- concepts/azacitidine.html | 6 +- concepts/azathioprine.html | 6 +- ...-dlbcl-and-classical-hodgkin-lymphoma.html | 6 +- concepts/b-cell-prolymphocytic-leukemia.html | 6 +- ...astic-leukemia-lymphoma-bcr-abl1-like.html | 6 +- ...b-lymphoblastic-leukemia-lymphoma-nos.html | 6 +- ...-leukemia-lymphoma-with-hyperdiploidy.html | 6 +- ...c-leukemia-lymphoma-with-hypodiploidy.html | 6 +- ...blastic-leukemia-lymphoma-with-iamp21.html | 6 +- ...-with-recurrent-genetic-abnormalities.html | 6 +- ...a-lymphoma-with-t119q23p13.3tcf3-pbx1.html | 6 +- ...phoma-with-t1221p13.2q22.1-etv6-runx1.html | 6 +- ...-lymphoma-with-t514q31.1q32.3-il3-igh.html | 6 +- ...-lymphoma-with-t922q34.1q11.2bcr-abl1.html | 6 +- ...mphoma-with-tv11q23.3kmt2a-rearranged.html | 6 +- .../b-lymphoblastic-leukemia-lymphoma.html | 6 +- concepts/basal-cell-carcinoma.html | 6 +- ...loid-large-cell-carcinoma-of-the-lung.html | 6 +- ...saloid-penile-squamous-cell-carcinoma.html | 6 +- concepts/baxter.html | 6 +- concepts/bayer.html | 6 +- concepts/bbcr-ar.html | 6 +- concepts/bccr-bn.html | 6 +- concepts/bcrisktool.html | 6 +- concepts/becton-dickinson-and-company.html | 6 +- concepts/beigene.html | 6 +- ...-medicine-and-what-matters-in-the-end.html | 6 +- concepts/belotecan.html | 6 +- concepts/bendamustine.html | 6 +- .../benign-phyllodes-tumor-of-the-breast.html | 6 +- concepts/beth-israel.html | 6 +- .../betrayed-by-nature-the-war-on-cancer.html | 6 +- concepts/bevacizumab.html | 6 +- concepts/bexarotene.html | 6 +- concepts/biliary-tract.html | 6 +- concepts/biogen.html | 6 +- concepts/biontech.html | 6 +- concepts/bladder-adenocarcinoma.html | 6 +- concepts/bladder-cancer-subreddit.html | 6 +- concepts/bladder-cancer.html | 6 +- concepts/bladder-squamous-cell-carcinoma.html | 6 +- concepts/bladder-urothelial-carcinoma.html | 6 +- ...-plasmacytoid-dendritic-cell-neoplasm.html | 6 +- concepts/bleomycin.html | 6 +- concepts/bncr-bt.html | 6 +- concepts/boehringer-ingelheim.html | 6 +- .../bone-marrow-and-cancer-foundation.html | 6 +- concepts/bone.html | 6 +- ...derline-phyllodes-tumor-of-the-breast.html | 6 +- concepts/bortezomib.html | 6 +- concepts/brachytherapy.html | 6 +- concepts/brain.html | 6 +- concepts/breast-angiosarcoma.html | 6 +- concepts/breast-book.html | 6 +- concepts/breast-cancer-awareness-month.html | 6 +- concepts/breast-cancer-subreddit.html | 6 +- .../breast-carcinoma-with-signet-ring.html | 6 +- concepts/breast-ductal-carcinoma-in-situ.html | 6 +- .../breast-fibroepithelial-neoplasms.html | 6 +- ...ciated-anaplastic-large-cell-lymphoma.html | 6 +- concepts/breast-invasive-cancer-nos.html | 6 +- concepts/breast-invasive-carcinoma-nos.html | 6 +- .../breast-invasive-carcinosarcoma-nos.html | 6 +- .../breast-invasive-ductal-carcinoma.html | 6 +- .../breast-invasive-lobular-carcinoma.html | 6 +- ...ast-invasive-mixed-mucinous-carcinoma.html | 6 +- .../breast-lobular-carcinoma-in-situ.html | 6 +- ...st-mixed-ductal-and-lobular-carcinoma.html | 6 +- concepts/breast-neoplasm-nos.html | 6 +- concepts/breast-prostheses.html | 6 +- concepts/breast-sarcoma.html | 6 +- concepts/breast.html | 6 +- concepts/breastcancer-dot-org.html | 6 +- concepts/brenner-tumor-benign.html | 6 +- concepts/brenner-tumor-borderline.html | 6 +- concepts/brenner-tumor-malignant.html | 6 +- concepts/brenner-tumor.html | 6 +- concepts/bristol-myers-squibb.html | 6 +- ...itt-like-lymphoma-with-11q-aberration.html | 6 +- concepts/burkitt-lymphoma.html | 6 +- concepts/busulfan.html | 6 +- concepts/cabazitaxel.html | 6 +- concepts/cabozantinib.html | 6 +- concepts/camptothecin.html | 6 +- concepts/canada-ccm.html | 6 +- concepts/canada-ohcc.html | 6 +- concepts/canadian-cancer-society.html | 6 +- .../canadian-partnership-against-cancer.html | 6 +- concepts/cancer-australia.html | 6 +- concepts/cancer-cell-journal.html | 6 +- concepts/cancer-council-australia.html | 6 +- concepts/cancer-crackdown.html | 6 +- ...d-victory-over-the-war-on-cancer-book.html | 6 +- concepts/cancer-discovery.html | 6 +- concepts/cancer-dot-net.html | 6 +- concepts/cancer-is-not-a-disease-book.html | 6 +- concepts/cancer-journal.html | 6 +- concepts/cancer-of-unknown-primary-nos.html | 6 +- concepts/cancer-of-unknown-primary.html | 6 +- concepts/cancer-research-journal.html | 6 +- concepts/cancer-research-uk.html | 6 +- concepts/cancer-risk-calculator.html | 6 +- concepts/cancer-society-of-finland.html | 6 +- concepts/cancer-statistics-center.html | 6 +- concepts/cancer-subreddit.html | 6 +- concepts/cancer-support-community.html | 6 +- .../cancer-the-emperor-of-all-maladies.html | 6 +- concepts/cancer-today.html | 6 +- concepts/cancer-ward.html | 6 +- concepts/cancerbuddy.html | 6 +- concepts/cancercare.html | 6 +- concepts/cancerdb.html | 6 +- concepts/cancerfonden.html | 6 +- concepts/canswer.html | 6 +- concepts/capecitabine.html | 6 +- concepts/carboplatin.html | 6 +- concepts/carboquone.html | 6 +- .../carcinoma-with-chondroid-metaplasia.html | 6 +- .../carcinoma-with-osseous-metaplasia.html | 6 +- concepts/carmustine.html | 6 +- .../case-comprehensive-cancer-center.html | 6 +- concepts/cbioportal.html | 6 +- concepts/ccan.html | 6 +- concepts/ccdi-annual-symposium.html | 6 +- concepts/ccdi.html | 6 +- concepts/ccr-ar.html | 6 +- concepts/ccrcal.html | 6 +- concepts/ccrisktool.html | 6 +- concepts/ccrn-ng.html | 6 +- ...sion-of-cancer-prevention-and-control.html | 6 +- concepts/cdc.html | 6 +- concepts/cedars-sinai.html | 6 +- concepts/cellular-schwannoma.html | 6 +- concepts/center-for-molecular-oncology.html | 6 +- concepts/central-neurocytoma.html | 6 +- concepts/cerebellar-liponeurocytoma.html | 6 +- concepts/cervical-adenocarcinoma-in-situ.html | 6 +- concepts/cervical-adenocarcinoma.html | 6 +- .../cervical-adenoid-basal-carcinoma.html | 6 +- .../cervical-adenoid-cystic-carcinoma.html | 6 +- .../cervical-adenosquamous-carcinoma.html | 6 +- concepts/cervical-cancer-subreddit.html | 6 +- concepts/cervical-clear-cell-carcinoma.html | 6 +- concepts/cervical-endometrioid-carcinoma.html | 6 +- concepts/cervical-leiomyosarcoma.html | 6 +- concepts/cervical-neuroendocrine-tumor.html | 6 +- concepts/cervical-rhabdomyosarcoma.html | 6 +- concepts/cervical-serous-carcinoma.html | 6 +- .../cervical-squamous-cell-carcinoma.html | 6 +- concepts/cervix.html | 6 +- ...ao-family-comprehensive-cancer-center.html | 6 +- ...ncers-theories-concerning-carcinogene.html | 6 +- concepts/chlorambucil.html | 6 +- concepts/chlormethine.html | 6 +- concepts/chlorozotocin.html | 6 +- concepts/cholangiocarcinoma.html | 6 +- concepts/chondroblastic-osteosarcoma.html | 6 +- concepts/chondroblastoma.html | 6 +- concepts/chondrosarcoma.html | 6 +- ...hordoid-glioma-of-the-third-ventricle.html | 6 +- concepts/chordoid-meningioma.html | 6 +- concepts/chordoma.html | 6 +- concepts/choriocarcinoma-testis.html | 6 +- concepts/choriocarcinoma-uterus.html | 6 +- concepts/choriocarcinoma.html | 6 +- concepts/choroid-plexus-carcinoma.html | 6 +- concepts/choroid-plexus-papilloma.html | 6 +- concepts/choroid-plexus-tumor.html | 6 +- concepts/chris-beat-cancer.html | 6 +- .../chromophobe-renal-cell-carcinoma.html | 6 +- .../chronic-eosinophilic-leukemia-nos.html | 6 +- ...c-leukemia-small-lymphocytic-lymphoma.html | 6 +- ...phoproliferative-disorder-of-nk-cells.html | 6 +- concepts/chronic-myelogenous-leukemia.html | 6 +- .../chronic-myeloid-leukemia-bcr-abl1p.html | 6 +- .../chronic-myelomonocytic-leukemia-0.html | 6 +- .../chronic-myelomonocytic-leukemia-1.html | 6 +- .../chronic-myelomonocytic-leukemia-2.html | 6 +- concepts/chronic-myelomonocytic-leukemia.html | 6 +- concepts/chronic-neutrophilic-leukemia.html | 6 +- ...conodular-papillary-tumor-of-the-lung.html | 6 +- concepts/cirm.html | 6 +- concepts/cisplatin.html | 6 +- ...y-of-hope-comprehensive-cancer-center.html | 6 +- ...-patient-and-family-education-library.html | 6 +- concepts/classical-hodgkin-lymphoma-ptld.html | 6 +- concepts/classical-hodgkin-lymphoma.html | 6 +- .../clear-cell-borderline-ovarian-tumor.html | 6 +- .../clear-cell-carcinoma-of-the-lung.html | 6 +- concepts/clear-cell-ependymoma.html | 6 +- concepts/clear-cell-meningioma.html | 6 +- .../clear-cell-odontogenic-carcinoma.html | 6 +- concepts/clear-cell-ovarian-cancer.html | 6 +- ...r-cell-papillary-renal-cell-carcinoma.html | 6 +- concepts/clear-cell-sarcoma-of-kidney.html | 6 +- concepts/clear-cell-sarcoma.html | 6 +- concepts/cleveland-clinic.html | 6 +- concepts/clinical-cancer-research.html | 6 +- concepts/clinical-trials-dot-gov.html | 6 +- concepts/cms.html | 6 +- concepts/cnio.html | 6 +- concepts/coc.html | 6 +- concepts/cocr-ar.html | 6 +- concepts/cognitive-behavioral-therapy.html | 6 +- ...pring-harbor-laboratory-cancer-center.html | 6 +- concepts/colectomy.html | 6 +- .../collecting-duct-renal-cell-carcinoma.html | 6 +- .../college-of-american-pathologists.html | 6 +- concepts/colon-adenocarcinoma-in-situ.html | 6 +- concepts/colon-adenocarcinoma.html | 6 +- concepts/colon-cancer-subreddit.html | 6 +- concepts/colon.html | 6 +- ...c-type-adenocarcinoma-of-the-appendix.html | 6 +- concepts/colonoscopy.html | 6 +- concepts/colorectal-adenocarcinoma.html | 6 +- concepts/colorectal.html | 6 +- .../combined-small-cell-lung-carcinoma.html | 6 +- concepts/complete-hydatidiform-mole.html | 6 +- concepts/congenital-nevus.html | 6 +- concepts/conjunctival-melanoma.html | 6 +- concepts/conventional-type-chordoma.html | 6 +- ...aniopharyngioma-adamantinomatous-type.html | 6 +- .../craniopharyngioma-papillary-type.html | 6 +- concepts/crptdf-ar.html | 6 +- concepts/crsba-dz.html | 6 +- concepts/crwb-dz.html | 6 +- concepts/cryoablation.html | 6 +- concepts/ct-colonoscopy.html | 6 +- concepts/ctca.html | 6 +- concepts/curium-pharma.html | 6 +- concepts/cutaneous-mastocytosis.html | 6 +- concepts/cutaneous-melanoma.html | 6 +- .../cutaneous-squamous-cell-carcinoma.html | 6 +- concepts/cyclophosphamide.html | 6 +- concepts/cystectomy.html | 6 +- concepts/cystic-tumor-of-the-pancreas.html | 6 +- concepts/cytarabine.html | 6 +- concepts/czechrepublic-ncc.html | 6 +- concepts/dacarbazine.html | 6 +- concepts/daiichi-sankyo.html | 6 +- ...mon-runyon-cancer-research-foundation.html | 6 +- ...-l-duncan-comprehensive-cancer-center.html | 6 +- .../dana-farber-harvard-cancer-center.html | 6 +- concepts/dana-farber.html | 6 +- concepts/dartmouth-cancer-center.html | 6 +- concepts/daunorubicin.html | 6 +- ...or-integrative-cancer-research-at-mit.html | 6 +- concepts/dedifferentiated-chondrosarcoma.html | 6 +- concepts/dedifferentiated-chordoma.html | 6 +- concepts/dedifferentiated-liposarcoma.html | 6 +- concepts/dendritic-cell-sarcoma.html | 6 +- concepts/dermatofibroma.html | 6 +- concepts/dermatofibrosarcoma-protuberans.html | 6 +- concepts/desmoid-aggressive-fibromatosis.html | 6 +- .../desmoplastic-infantile-astrocytoma.html | 6 +- .../desmoplastic-infantile-ganglioglioma.html | 6 +- concepts/desmoplastic-melanoma.html | 6 +- .../desmoplastic-nodular-medulloblastoma.html | 6 +- .../desmoplastic-small-round-cell-tumor.html | 6 +- concepts/desmoplastic-trichoepithelioma.html | 6 +- concepts/dicycloplatin.html | 6 +- concepts/diffuse-astrocytoma.html | 6 +- concepts/diffuse-glioma.html | 6 +- .../diffuse-intrinsic-pontine-glioma.html | 6 +- .../diffuse-large-b-cell-lymphoma-nos.html | 6 +- .../diffuse-type-stomach-adenocarcinoma.html | 6 +- ...disseminated-juvenile-xanthogranuloma.html | 6 +- ...-associated-with-chronic-inflammation.html | 6 +- concepts/docetaxel.html | 6 +- concepts/dominicanrepublic-ncc.html | 6 +- concepts/doxifluridine.html | 6 +- concepts/doxorubicin.html | 6 +- concepts/dr-sebi-cure-for-cancer.html | 6 +- concepts/dta-dz.html | 6 +- concepts/duke-cancer-institute.html | 6 +- concepts/duodenal-adenocarcinoma.html | 6 +- .../duodenal-type-follicular-lymphoma.html | 6 +- concepts/dutch-cancer-society.html | 6 +- ...ysembryoplastic-neuroepithelial-tumor.html | 6 +- concepts/dysgerminoma-vulva-vagina.html | 6 +- concepts/dysgerminoma.html | 6 +- ...e-cerebellum-lhermitte-duclos-disease.html | 6 +- concepts/early-detection-book.html | 6 +- ...cell-precursor-lymphoblastic-leukemia.html | 6 +- concepts/ebus.html | 6 +- concepts/ebv-positive-dlbcl-nos.html | 6 +- .../ebv-positive-mucocutaneous-ulcer.html | 6 +- concepts/egypt-ncc.html | 6 +- concepts/electroacupuncture.html | 6 +- concepts/eli-lilly-and-company.html | 6 +- concepts/elsevier.html | 6 +- concepts/embase.html | 6 +- concepts/embryonal-carcinoma-cns-brain.html | 6 +- concepts/embryonal-carcinoma-testis.html | 6 +- .../embryonal-carcinoma-vulva-vagina.html | 6 +- concepts/embryonal-carcinoma.html | 6 +- concepts/embryonal-rhabdomyosarcoma.html | 6 +- ...h-abundant-neuropil-and-true-rosettes.html | 6 +- concepts/embryonal-tumor.html | 6 +- concepts/emerging-med.html | 6 +- concepts/emperor-of-all-maladies.html | 6 +- concepts/encapsulated-glioma.html | 6 +- concepts/encr-sw.html | 6 +- concepts/endocervical-adenocarcinoma.html | 6 +- ...mucin-producing-sweat-gland-carcinoma.html | 6 +- concepts/endometrial-carcinoma.html | 6 +- concepts/endometrial-stromal-sarcoma.html | 6 +- .../endometrioid-borderlin-ovarian-tumor.html | 6 +- concepts/endometrioid-ovarian-cancer.html | 6 +- ...nteropathy-associated-t-cell-lymphoma.html | 6 +- concepts/ependymoma.html | 6 +- concepts/ependymomal-tumor.html | 6 +- concepts/epirubicin.html | 6 +- .../epithelial-myoepithelial-carcinoma.html | 6 +- ...helial-type-metaplastic-breast-cancer.html | 6 +- .../epithelioid-hemangioendothelioma.html | 6 +- concepts/epithelioid-sarcoma.html | 6 +- concepts/epithelioid-trophoblastic-tumor.html | 6 +- concepts/ercr-ar.html | 6 +- concepts/erdheim-chester-disease.html | 6 +- concepts/erlotinib.html | 6 +- concepts/esophageal-adenocarcinoma.html | 6 +- ...ageal-poorly-differentiated-carcinoma.html | 6 +- .../esophageal-squamous-cell-carcinoma.html | 6 +- concepts/esophagectomy.html | 6 +- concepts/esophagogastric-adenocarcinoma.html | 6 +- concepts/esophagus-stomach.html | 6 +- ...sential-thrombocythemia-myelofibrosis.html | 6 +- concepts/essential-thrombocythemia.html | 6 +- concepts/etoposide.html | 6 +- concepts/europa-donna-armenia.html | 6 +- concepts/ewing-sarcoma-of-soft-tissue.html | 6 +- concepts/ewing-sarcoma.html | 6 +- concepts/exatecan.html | 6 +- concepts/exercise.html | 6 +- concepts/extra-gonadal-germ-cell-tumor.html | 6 +- concepts/extrahepatic-cholangiocarcinoma.html | 6 +- concepts/extramammary-paget-disease.html | 6 +- ...ociated-lymphoid-tissue-malt-lymphoma.html | 6 +- ...anodal-nk--t-cell-lymphoma-nasal-type.html | 6 +- concepts/extraosseous-plasmacytoma.html | 6 +- .../extraskeletal-myxoid-chondrosarcoma.html | 6 +- concepts/extraventricular-neurocytoma.html | 6 +- concepts/eye.html | 6 +- concepts/fda.html | 6 +- concepts/fecal-immunochemical-test.html | 6 +- .../fh-deficient-renal-cell-carcinoma.html | 6 +- concepts/fibroadenoma.html | 6 +- concepts/fibroblastic-osteosarcoma.html | 6 +- .../fibroblastic-reticular-cell-tumor.html | 6 +- concepts/fibrolamellar-carcinoma.html | 6 +- concepts/fibrosarcoma.html | 6 +- concepts/fibrothecoma.html | 6 +- .../florid-follicular-hyperplasia-ptld.html | 6 +- concepts/fluorouracil.html | 6 +- .../follicular-dendritic-cell-sarcoma.html | 6 +- concepts/follicular-lymphoma.html | 6 +- concepts/follicular-t-cell-lymphoma.html | 6 +- concepts/follicular-thyroid-cancer.html | 6 +- concepts/fotemustine.html | 6 +- concepts/fox-chase-cancer-center.html | 6 +- ...fred-and-pamela-buffett-cancer-center.html | 6 +- concepts/fred-hutch.html | 6 +- ...rsity-of-washington-cancer-consortium.html | 6 +- concepts/free-diving.html | 6 +- .../french-national-cancer-institute.html | 6 +- concepts/gallbladder-adenocarcinoma-nos.html | 6 +- concepts/gallbladder-cancer.html | 6 +- concepts/gamma-heavy-chain-disease.html | 6 +- concepts/gangliocytoma.html | 6 +- concepts/ganglioglioma.html | 6 +- concepts/ganglioneuroblastoma.html | 6 +- concepts/ganglioneuroma.html | 6 +- concepts/gastrectomy.html | 6 +- concepts/gastric-remnant-adenocarcinoma.html | 6 +- concepts/gastric-type-mucinous-carcinoma.html | 6 +- ...crine-tumors-of-the-esophagus-stomach.html | 6 +- ...astrointestinal-neuroendocrine-tumors.html | 6 +- concepts/gastrointestinal-stromal-tumor.html | 6 +- concepts/gco.html | 6 +- concepts/gcr-ug.html | 6 +- concepts/gdc.html | 6 +- concepts/gefitinib.html | 6 +- concepts/gemcitabine.html | 6 +- concepts/genentech.html | 6 +- ...-lombardi-comprehensive-cancer-center.html | 6 +- concepts/georgia-ncc.html | 6 +- concepts/germ-cell-tumor-brain.html | 6 +- concepts/germ-cell-tumor-of-the-vulva.html | 6 +- ...ll-tumor-with-somatic-type-malignancy.html | 6 +- concepts/germany-ncc.html | 6 +- concepts/germinal-center-b-cell-type.html | 6 +- concepts/germinoma.html | 6 +- .../gestational-trophoblastic-disease.html | 6 +- concepts/gfobt.html | 6 +- .../giant-cell-carcinoma-of-the-lung.html | 6 +- concepts/giant-cell-tumor-of-bone.html | 6 +- concepts/gideon-burrows-dot-com.html | 6 +- concepts/gilead-sciences.html | 6 +- .../glassy-cell-carcinoma-of-the-cervix.html | 6 +- concepts/glioblastoma-multiforme.html | 6 +- concepts/glioblastoma.html | 6 +- concepts/glioma-nos.html | 6 +- concepts/gliosarcoma.html | 6 +- concepts/glomangiosarcoma.html | 6 +- ...goblet-cell-carcinoid-of-the-appendix.html | 6 +- concepts/gonadoblastoma.html | 6 +- concepts/granular-cell-tumor.html | 6 +- concepts/granulosa-cell-tumor.html | 6 +- concepts/gsk.html | 6 +- concepts/hairy-cell-leukemia-variant.html | 6 +- concepts/hairy-cell-leukemia.html | 6 +- ...c-simmons-comprehensive-cancer-center.html | 6 +- concepts/hawaii-tumor-registry.html | 6 +- concepts/head-and-neck-carcinoma-other.html | 6 +- concepts/head-and-neck-mucosal-melanoma.html | 6 +- ...ead-and-neck-neuroendocrine-carcinoma.html | 6 +- ...ous-cell-carcinoma-of-unknown-primary.html | 6 +- ...head-and-neck-squamous-cell-carcinoma.html | 6 +- concepts/head-and-neck.html | 6 +- concepts/healing-strong.html | 6 +- concepts/hemangioblastoma.html | 6 +- concepts/hemangioma.html | 6 +- ...icytoma-of-the-central-nervous-system.html | 6 +- concepts/hepatectomy.html | 6 +- concepts/hepatic-arterial-infusion.html | 6 +- concepts/hepatoblastoma.html | 6 +- concepts/hepatocellular-adenoma.html | 6 +- ...-plus-intrahepatic-cholangiocarcinoma.html | 6 +- concepts/hepatocellular-carcinoma.html | 6 +- concepts/hepatosplenic-t-cell-lymphoma.html | 6 +- ...rt-irving-comprehensive-cancer-center.html | 6 +- concepts/hhs.html | 6 +- concepts/hhv8-positive-dlbcl-nos.html | 6 +- concepts/high-grade-b-cell-lymphoma-nos.html | 6 +- ...c-and-bcl2-and-or-bcl6-rearrangements.html | 6 +- ...igh-grade-endometrial-stromal-sarcoma.html | 6 +- concepts/high-grade-glioma-nos.html | 6 +- ...ine-carcinoma-of-the-colon-and-rectum.html | 6 +- ...oendocrine-carcinoma-of-the-esophagus.html | 6 +- ...neuroendocrine-carcinoma-of-the-ovary.html | 6 +- ...uroendocrine-carcinoma-of-the-stomach.html | 6 +- .../high-grade-neuroepithelial-tumor.html | 6 +- ...gh-grade-serous-fallopian-tube-cancer.html | 6 +- .../high-grade-serous-ovarian-cancer.html | 6 +- concepts/high-grade-surface-osteosarcoma.html | 6 +- ...tiocytic-and-dendritic-cell-neoplasms.html | 6 +- .../histiocytic-dendritic-cell-sarcoma.html | 6 +- concepts/histiocytic-sarcoma.html | 6 +- concepts/hodgkin-lymphoma.html | 6 +- .../holden-comprehensive-cancer-center.html | 6 +- concepts/hollings-cancer-center.html | 6 +- concepts/hopa.html | 6 +- concepts/hope4cancer.html | 6 +- concepts/houston-methodist.html | 6 +- concepts/how-to-starve-cancer-book.html | 6 +- concepts/hungary-ncc.html | 6 +- concepts/huntsman-cancer-institute.html | 6 +- concepts/hurthle-cell-thyroid-cancer.html | 6 +- ...ing-trabecular-adenoma-of-the-thyroid.html | 6 +- ...rme-like-lymphoproliferative-disorder.html | 6 +- concepts/hydroxyurea.html | 6 +- concepts/hypnosis.html | 6 +- .../hypopharynx-squamous-cell-carcinoma.html | 6 +- concepts/hysterectomy.html | 6 +- concepts/iacc-ao.html | 6 +- concepts/iaea.html | 6 +- concepts/iarc.html | 6 +- concepts/ibcr-ng.html | 6 +- concepts/ican.html | 6 +- concepts/icd-10-pcs.html | 6 +- concepts/icelandic-cancer-society.html | 6 +- concepts/idarubicin.html | 6 +- concepts/ifosfamide.html | 6 +- concepts/iga.html | 6 +- concepts/igg.html | 6 +- concepts/igm.html | 6 +- concepts/imatinib.html | 6 +- concepts/imerman-angels.html | 6 +- concepts/immature-teratoma-cns-brain.html | 6 +- concepts/immature-teratoma-vulva-vagina.html | 6 +- concepts/immature-teratoma.html | 6 +- concepts/immunotherapy.html | 6 +- concepts/imrt.html | 6 +- concepts/in-situ-follicular-neoplasia.html | 6 +- concepts/in-situ-mantle-cell-neoplasia.html | 6 +- concepts/incan.html | 6 +- .../indeterminate-dendritic-cell-tumor.html | 6 +- concepts/index-medicus.html | 6 +- concepts/india-nci.html | 6 +- ...ren-simon-comprehensive-cancer-center.html | 6 +- concepts/indolent-systemic-mastocytosis.html | 6 +- ...roliferative-disorder-of-the-gi-tract.html | 6 +- concepts/infantile-fibrosarcoma.html | 6 +- concepts/infectious-mononucleosis-ptld.html | 6 +- concepts/inflammatory-breast-cancer.html | 6 +- ...mmatory-myofibroblastic-bladder-tumor.html | 6 +- ...flammatory-myofibroblastic-lung-tumor.html | 6 +- .../inflammatory-myofibroblastic-tumor.html | 6 +- ...nterdigitating-dendritic-cell-sarcoma.html | 6 +- concepts/intestinal-ampullary-carcinoma.html | 6 +- .../intestinal-type-mucinous-carcinoma.html | 6 +- ...ntestinal-type-stomach-adenocarcinoma.html | 6 +- concepts/intimal-sarcoma.html | 6 +- ...traductal-papillary-mucinous-neoplasm.html | 6 +- concepts/intrahepatic-cholangiocarcinoma.html | 6 +- concepts/intramuscular-injection.html | 6 +- .../intravascular-large-b-cell-lymphoma.html | 6 +- concepts/intravenous-therapy.html | 6 +- concepts/intravesical-therapy.html | 6 +- concepts/invasive-breast-carcinoma.html | 6 +- concepts/invasive-hydatidiform-mole.html | 6 +- concepts/inverted-urothelial-papilloma.html | 6 +- concepts/iran-ncc.html | 6 +- concepts/ireland-nrg.html | 6 +- concepts/irinotecan.html | 6 +- concepts/ixabepilone.html | 6 +- concepts/johnson-and-johnson.html | 6 +- .../jonsson-comprehensive-cancer-center.html | 6 +- concepts/jordan-ncc.html | 6 +- concepts/journal-of-clinical-oncology.html | 6 +- ...rnal-of-the-national-cancer-institute.html | 6 +- .../juvenile-myelomonocytic-leukemia.html | 6 +- ...ile-secretory-carcinoma-of-the-breast.html | 6 +- concepts/kaposi-sarcoma.html | 6 +- concepts/kazakhstan-ncc.html | 6 +- concepts/kcr-ug.html | 6 +- concepts/kecr-kn.html | 6 +- concepts/kegg.html | 6 +- concepts/kidney-cancer-subreddit.html | 6 +- concepts/kidney.html | 6 +- concepts/kncr-kn.html | 6 +- concepts/knight-cancer-institute.html | 6 +- concepts/kom-op-tegen-kanker.html | 6 +- concepts/kscr-gh.html | 6 +- concepts/langerhans-cell-histiocytosis.html | 6 +- concepts/langerhans-cell-sarcoma.html | 6 +- ...cell-lymphoma-with-irf4-rearrangement.html | 6 +- ...large-cell-anaplastic-medulloblastoma.html | 6 +- ...ung-carcinoma-with-rhabdoid-phenotype.html | 6 +- concepts/large-cell-lung-carcinoma.html | 6 +- .../large-cell-neuroendocrine-carcinoma.html | 6 +- concepts/larotaxel.html | 6 +- concepts/laryngeal-cancer.html | 6 +- concepts/laryngectomy.html | 6 +- concepts/larynx-squamous-cell-carcinoma.html | 6 +- ...r-cancer-center-at-nyu-langone-health.html | 6 +- concepts/leiomyoma.html | 6 +- concepts/leiomyosarcoma.html | 6 +- concepts/lentigo-maligna-melanoma.html | 6 +- concepts/lenvatinib.html | 6 +- concepts/leukapheresis.html | 6 +- concepts/leukemia-and-lymphoma-society.html | 6 +- concepts/leukemia.html | 6 +- concepts/liposarcoma.html | 6 +- concepts/lithuania-ncc.html | 6 +- concepts/liver-angiosarcoma.html | 6 +- concepts/liver-transplant.html | 6 +- concepts/liver.html | 6 +- concepts/lomustine.html | 6 +- .../low-dose-spiral-computed-tomography.html | 6 +- concepts/low-grade-central-osteosarcoma.html | 6 +- ...low-grade-endometrial-stromal-sarcoma.html | 6 +- concepts/low-grade-fibromyxoid-sarcoma.html | 6 +- concepts/low-grade-glioma-nos.html | 6 +- concepts/low-grade-neuroepithelial-tumor.html | 6 +- concepts/low-grade-serous-ovarian-cancer.html | 6 +- concepts/lumpectomy.html | 6 +- concepts/lung-adenocarcinoma-in-situ.html | 6 +- concepts/lung-adenocarcinoma.html | 6 +- concepts/lung-adenosquamous-carcinoma.html | 6 +- concepts/lung-cancer-subreddit.html | 6 +- concepts/lung-carcinoid.html | 6 +- concepts/lung-neuroendocrine-tumor.html | 6 +- concepts/lung-squamous-cell-carcinoma.html | 6 +- concepts/lung.html | 6 +- concepts/lymphedema-sleeve.html | 6 +- ...e-depleted-classical-hodgkin-lymphoma.html | 6 +- ...ocyte-rich-classical-hodgkin-lymphoma.html | 6 +- ...pithelioma-like-carcinoma-of-the-lung.html | 6 +- concepts/lymphoid-atypical.html | 6 +- concepts/lymphoid-benign.html | 6 +- concepts/lymphoid-neoplasm.html | 6 +- concepts/lymphoma-subreddit.html | 6 +- concepts/lymphoma.html | 6 +- concepts/lymphomatoid-granulomatosis.html | 6 +- concepts/lymphomatoid-papulosis.html | 6 +- concepts/lymphoplasmacytic-lymphoma.html | 6 +- concepts/male-breast-cancer.html | 6 +- concepts/malignant-glomus-tumor.html | 6 +- concepts/malignant-lymphoma.html | 6 +- ...nant-nonepithelial-tumor-of-the-liver.html | 6 +- ...lignant-peripheral-nerve-sheath-tumor.html | 6 +- ...lignant-phyllodes-tumor-of-the-breast.html | 6 +- ...malignant-rhabdoid-tumor-of-the-liver.html | 6 +- concepts/malignant-teratoma.html | 6 +- concepts/malignant-tumor.html | 6 +- ...ry-carcinoma-of-salivary-gland-origin.html | 6 +- concepts/mammogram.html | 6 +- concepts/mantle-cell-lymphoma.html | 6 +- concepts/margin-probe.html | 6 +- concepts/marginal-zone-lymphoma.html | 6 +- concepts/marijuana.html | 6 +- concepts/markey-cancer-center.html | 6 +- concepts/masonic-cancer-center.html | 6 +- concepts/massage.html | 6 +- concepts/massey-cancer-center.html | 6 +- concepts/massgeneral.html | 6 +- concepts/mast-cell-leukemia.html | 6 +- concepts/mast-cell-sarcoma.html | 6 +- concepts/mastectomy.html | 6 +- concepts/mastocytosis.html | 6 +- concepts/mature-b-cell-neoplasms.html | 6 +- concepts/mature-t-and-nk-neoplasms.html | 6 +- concepts/mature-teratoma-cns-brain.html | 6 +- concepts/mature-teratoma-vulva-vagina.html | 6 +- concepts/mature-teratoma.html | 6 +- concepts/mayo-clinic-jacksonville.html | 6 +- concepts/mayo-clinic-phoenix.html | 6 +- concepts/mayo-clinic-rochester.html | 6 +- ...ancer-center-at-ut-health-san-antonio.html | 6 +- concepts/mcr-tz.html | 6 +- concepts/mdanderson.html | 6 +- concepts/mds-mpn-unclassifiable.html | 6 +- ...-ring-sideroblasts-and-thrombocytosis.html | 6 +- concepts/mds-unclassifiable.html | 6 +- concepts/mds-with-excess-blasts-1.html | 6 +- concepts/mds-with-excess-blasts-2.html | 6 +- concepts/mds-with-excess-blasts.html | 6 +- concepts/mds-with-isolated-del5q.html | 6 +- concepts/mds-with-multilineage-dysplasia.html | 6 +- ...deroblasts-and-multilineage-dysplasia.html | 6 +- ...roblasts-and-single-lineage-dysplasia.html | 6 +- concepts/mds-with-ring-sideroblasts.html | 6 +- .../mds-with-single-lineage-dysplasia.html | 6 +- concepts/mediastinoscopy.html | 6 +- concepts/meditation.html | 6 +- concepts/medlars.html | 6 +- concepts/medline.html | 6 +- concepts/medlineplus.html | 6 +- .../medullary-carcinoma-of-the-colon.html | 6 +- concepts/medullary-thyroid-cancer.html | 6 +- ...lloblastoma-with-extensive-nodularity.html | 6 +- concepts/medulloblastoma.html | 6 +- concepts/medulloepithelioma.html | 6 +- concepts/medullomyoblastoma.html | 6 +- concepts/melanocytoma.html | 6 +- concepts/melanoma-of-unknown-primary.html | 6 +- concepts/melanoma.html | 6 +- concepts/melanotic-medulloblastoma.html | 6 +- concepts/melanotic-schwannoma.html | 6 +- concepts/melphalan-flufenamide.html | 6 +- concepts/melphalan.html | 6 +- ...emorial-sloan-kettering-cancer-center.html | 6 +- concepts/meningioma.html | 6 +- concepts/meningothelial-tumor.html | 6 +- concepts/mercaptopurine.html | 6 +- concepts/merck-and-co.html | 6 +- concepts/merck-group.html | 6 +- concepts/merkel-cell-carcinoma.html | 6 +- ...mesenchymal-chondrosarcoma-of-the-cns.html | 6 +- concepts/mesenchymal-chondrosarcoma.html | 6 +- concepts/mesonephric-carcinoma.html | 6 +- concepts/mesothelioma.html | 6 +- ...oma-with-spindle-cell-differentiation.html | 6 +- .../metaplastic-adenosquamous-carcinoma.html | 6 +- concepts/metaplastic-breast-cancer.html | 6 +- concepts/metaplastic-carcinosarcoma.html | 6 +- .../metaplastic-squamous-cell-carcinoma.html | 6 +- concepts/methotrexate.html | 6 +- concepts/miaderm-cream.html | 6 +- concepts/microcystic-adnexal-carcinoma.html | 6 +- concepts/microscope-confocal.html | 6 +- concepts/microscope-darkfield.html | 6 +- concepts/microscope-electron.html | 6 +- concepts/microscope-flourescence.html | 6 +- concepts/microscope-inverted.html | 6 +- concepts/microscope-optical.html | 6 +- concepts/microscope-phasecontrast.html | 6 +- concepts/microscope-polarizing.html | 6 +- concepts/microscope-scanningprobe.html | 6 +- concepts/microscope-stereo.html | 6 +- concepts/microscope-ultraviolet.html | 6 +- concepts/microwave-ablation.html | 6 +- concepts/miscellaneous-brain-tumor.html | 6 +- .../miscellaneous-neuroepithelial-tumor.html | 6 +- concepts/mitobronitol.html | 6 +- concepts/mitomycin.html | 6 +- concepts/mitoxantrone.html | 6 +- concepts/mixed-ampullary-carcinoma.html | 6 +- concepts/mixed-cancer-types.html | 6 +- ...ellularity-classical-hodgkin-lymphoma.html | 6 +- concepts/mixed-cervical-carcinoma.html | 6 +- concepts/mixed-germ-cell-tumor-cns-brain.html | 6 +- concepts/mixed-germ-cell-tumor-testis.html | 6 +- .../mixed-germ-cell-tumor-vulva-vagina.html | 6 +- concepts/mixed-germ-cell-tumor.html | 6 +- concepts/mixed-ovarian-carcinoma.html | 6 +- ...henotype-acute-leukemia-b-myeloid-nos.html | 6 +- ...henotype-acute-leukemia-t-myeloid-nos.html | 6 +- ...leukemia-with-t922q34.1q11.2-bcr-abl1.html | 6 +- ...kemia-with-tv11q23.3-kmt2a-rearranged.html | 6 +- .../mixed-type-metaplastic-breast-cancer.html | 6 +- concepts/mmcr-mo.html | 6 +- concepts/mncr-ma.html | 6 +- concepts/moderna.html | 6 +- concepts/moffitt-cancer-center.html | 6 +- concepts/molar-pregnancy.html | 6 +- concepts/monoclonal-b-cell-lymphocytosis.html | 6 +- ...mmopathy-of-undetermined-significance.html | 6 +- ...unoglobulin-deposition-diseases-other.html | 6 +- ...al-immunoglobulin-deposition-diseases.html | 6 +- ...eliotropic-intestinal-t-cell-lymphoma.html | 6 +- ...omorphic-ptld-b--and-t--nk-cell-types.html | 6 +- .../montefiore-einstein-cancer-center.html | 6 +- .../moores-comprehensive-cancer-center.html | 6 +- concepts/mrisktool.html | 6 +- concepts/mt-sdna.html | 6 +- concepts/mu-heavy-chain-disease.html | 6 +- ...cinous-adenocarcinoma-of-the-appendix.html | 6 +- ...denocarcinoma-of-the-colon-and-rectum.html | 6 +- ...us-adenocarcinoma-of-the-vulva-vagina.html | 6 +- .../mucinous-borderline-ovarian-tumor.html | 6 +- concepts/mucinous-carcinoma.html | 6 +- concepts/mucinous-cystic-neoplasm.html | 6 +- concepts/mucinous-ovarian-cancer.html | 6 +- concepts/mucinous-stomach-adenocarcinoma.html | 6 +- .../mucoepidermoid-carcinoma-of-the-lung.html | 6 +- concepts/mucoepidermoid-carcinoma.html | 6 +- .../mucosal-melanoma-of-the-esophagus.html | 6 +- concepts/mucosal-melanoma-of-the-urethra.html | 6 +- .../mucosal-melanoma-of-the-vulva-vagina.html | 6 +- concepts/multiple-myeloma.html | 6 +- concepts/multiplemyeloma-subreddit.html | 6 +- concepts/music-therapy.html | 6 +- concepts/mycanceriq.html | 6 +- concepts/mychart.html | 6 +- concepts/mycosis-fungoides.html | 6 +- ...splastic-myeloproliferative-neoplasms.html | 6 +- concepts/myelodysplastic-syndromes.html | 6 +- concepts/myeloid-atypical.html | 6 +- concepts/myeloid-benign.html | 6 +- ...eukemia-associated-with-down-syndrome.html | 6 +- ...fra-pdgfrb-or-fgfr1-or-with-pcm1-jak2.html | 6 +- ...id-neoplasms-with-fgfr1-rearrangement.html | 6 +- ...oid-lymphoid-neoplasms-with-pcm1-jak2.html | 6 +- ...d-neoplasms-with-pdgfra-rearrangement.html | 6 +- ...d-neoplasms-with-pdgfrb-rearrangement.html | 6 +- concepts/myeloid-neoplasm.html | 6 +- ...oplasms-with-germ-line-predisposition.html | 6 +- ...oliferations-related-to-down-syndrome.html | 6 +- concepts/myeloid-sarcoma.html | 6 +- concepts/myeloid.html | 6 +- ...roliferative-neoplasms-unclassifiable.html | 6 +- concepts/myeloproliferative-neoplasms.html | 6 +- concepts/myoepithelial-carcinoma.html | 6 +- concepts/myofibroma.html | 6 +- concepts/myofibromatosis.html | 6 +- concepts/myopericytoma.html | 6 +- concepts/myxofibrosarcoma.html | 6 +- concepts/myxoid-chondrosarcoma.html | 6 +- concepts/myxoid-round-cell-liposarcoma.html | 6 +- concepts/myxoma.html | 6 +- concepts/myxopapillary-ependymoma.html | 6 +- concepts/naaccr.html | 6 +- concepts/nacr-ng.html | 6 +- concepts/nasopharyngeal-carcinoma.html | 6 +- .../national-breast-cancer-foundation.html | 6 +- concepts/national-cancer-center-japan.html | 6 +- concepts/national-cancer-center-korea.html | 6 +- concepts/national-cancer-grid-india.html | 6 +- .../national-cancer-institute-brazil.html | 6 +- ...national-cancer-research-institute-uk.html | 6 +- ...ional-prostate-cancer-awareness-month.html | 6 +- ...-cell-lymphoblastic-leukemia-lymphoma.html | 6 +- ...atural-strategies-for-cancer-patients.html | 6 +- concepts/nature-reviews-cancer.html | 6 +- concepts/navigational-bronchoscopy.html | 6 +- concepts/ncbi-gene.html | 6 +- concepts/ncbi.html | 6 +- concepts/ncc.html | 6 +- concepts/nccn.html | 6 +- concepts/nccp-af.html | 6 +- concepts/nccp-al.html | 6 +- concepts/nccr.html | 6 +- concepts/nccs.html | 6 +- concepts/ncdb.html | 6 +- concepts/nci.html | 6 +- concepts/ncr-ar.html | 6 +- concepts/ncra.html | 6 +- concepts/ncrsa-za.html | 6 +- concepts/nedaplatin.html | 6 +- concepts/nephrectomy.html | 6 +- concepts/nerve-sheath-tumor.html | 6 +- concepts/netherlands-ncc.html | 6 +- concepts/neuroblastoma.html | 6 +- concepts/neuroendocrine-carcinoma-nos.html | 6 +- concepts/neuroendocrine-tumor-nos.html | 6 +- concepts/neurofibroma.html | 6 +- concepts/newyork-presbyterian-hospital.html | 6 +- concepts/nfr.html | 6 +- concepts/nhgri.html | 6 +- concepts/nicr.html | 6 +- concepts/nih.html | 6 +- concepts/nimustine.html | 6 +- concepts/nitrosoureas.html | 6 +- concepts/nivolumab.html | 6 +- concepts/nlm.html | 6 +- concepts/nncr-na.html | 6 +- concepts/nodal-marginal-zone-lymphoma.html | 6 +- ...al-t-cell-lymphoma-with-tfh-phenotype.html | 6 +- ...mphocyte-predominant-hodgkin-lymphoma.html | 6 +- ...-sclerosis-classical-hodgkin-lymphoma.html | 6 +- concepts/non-hodgkin-lymphoma.html | 6 +- .../non-seminomatous-germ-cell-tumor.html | 6 +- concepts/non-small-cell-lung-cancer.html | 6 +- concepts/norwegian-cancer-society.html | 6 +- concepts/novartis.html | 6 +- concepts/novo-nordisk.html | 6 +- concepts/nscr-ng.html | 6 +- concepts/nswcr-au.html | 6 +- concepts/ntcr-au.html | 6 +- concepts/nut-carcinoma-of-the-lung.html | 6 +- ...idline-carcinoma-of-the-head-and-neck.html | 6 +- concepts/nutrition.html | 6 +- concepts/ocular-melanoma.html | 6 +- concepts/odontogenic-carcinoma.html | 6 +- concepts/olfactory-neuroblastoma.html | 6 +- concepts/oligoastrocytoma.html | 6 +- concepts/oligodendroglioma.html | 6 +- concepts/onclive.html | 6 +- .../oncocytic-adenoma-of-the-thyroid.html | 6 +- concepts/oncokb.html | 6 +- concepts/oncotree.html | 6 +- concepts/one-plus-one-cars.html | 6 +- .../oneal-comprehensive-cancer-center.html | 6 +- concepts/oophorectomy.html | 6 +- concepts/oral-administration.html | 6 +- concepts/oral-cancer-foundation.html | 6 +- concepts/oral-cancer.html | 6 +- .../oral-cavity-squamous-cell-carcinoma.html | 6 +- concepts/orchiectomy.html | 6 +- concepts/oropharyngeal-cancer.html | 6 +- .../oropharynx-squamous-cell-carcinoma.html | 6 +- concepts/ossifying-fibromyxoid-tumor.html | 6 +- concepts/osteoblastic-osteosarcoma.html | 6 +- concepts/osteoclastic-giant-cell-tumor.html | 6 +- concepts/osteosarcoma.html | 6 +- concepts/other-uterine-tumor.html | 6 +- concepts/other.html | 6 +- concepts/our-world-in-data-cancer.html | 6 +- concepts/ovarian-cancer-other.html | 6 +- concepts/ovarian-cancer-subreddit.html | 6 +- concepts/ovarian-cancer.html | 6 +- ...coma-malignant-mixed-mesodermal-tumor.html | 6 +- concepts/ovarian-choriocarcinoma-nos.html | 6 +- concepts/ovarian-epithelial-tumor.html | 6 +- concepts/ovarian-germ-cell-tumor.html | 6 +- concepts/ovarian-seromucinous-adenoma.html | 6 +- ...ovarian-seromucinous-borderline-tumor.html | 6 +- concepts/ovarian-seromucinous-carcinoma.html | 6 +- concepts/oxaliplatin.html | 6 +- concepts/paclitaxel.html | 6 +- concepts/pact.html | 6 +- concepts/paget-disease-of-the-nipple.html | 6 +- concepts/paleo-diet.html | 6 +- concepts/panama-ncc.html | 6 +- concepts/pancreas.html | 6 +- concepts/pancreatectomy.html | 6 +- concepts/pancreatic-adenocarcinoma.html | 6 +- concepts/pancreatic-neuroendocrine-tumor.html | 6 +- .../pancreatobiliary-ampullary-carcinoma.html | 6 +- concepts/pancreatoblastoma.html | 6 +- concepts/papillary-glioneuronal-tumor.html | 6 +- concepts/papillary-meningioma.html | 6 +- concepts/papillary-renal-cell-carcinoma.html | 6 +- .../papillary-stomach-adenocarcinoma.html | 6 +- concepts/papillary-thyroid-cancer.html | 6 +- .../papillary-tumor-of-the-pineal-region.html | 6 +- concepts/paraganglioma.html | 6 +- concepts/parathyroid-cancer.html | 6 +- concepts/parathyroid-carcinoma.html | 6 +- concepts/parosteal-osteosarcoma.html | 6 +- concepts/partial-hydatidiform-mole.html | 6 +- .../pediatric-type-follicular-lymphoma.html | 6 +- concepts/pembrolizumab.html | 6 +- concepts/penile-squamous-cell-carcinoma.html | 6 +- concepts/penis.html | 6 +- concepts/perihilar-cholangiocarcinoma.html | 6 +- concepts/periosteal-osteosarcoma.html | 6 +- concepts/peripheral-nervous-system.html | 6 +- concepts/peripheral-t-cell-lymphoma-nos.html | 6 +- concepts/peritoneal-mesothelioma.html | 6 +- concepts/peritoneal-serous-carcinoma.html | 6 +- concepts/peritoneum.html | 6 +- .../perivascular-epithelioid-cell-tumor.html | 6 +- concepts/pfizer.html | 6 +- concepts/phac.html | 6 +- concepts/pheochromocytoma.html | 6 +- concepts/phyllodes-tumor-of-the-breast.html | 6 +- concepts/pilocytic-astrocytoma.html | 6 +- concepts/pilomyxoid-astrocytoma.html | 6 +- ...tumor-of-intermediate-differentiation.html | 6 +- concepts/pineal-tumor.html | 6 +- concepts/pineoblastoma.html | 6 +- concepts/pineocytoma.html | 6 +- concepts/pipobroman.html | 6 +- concepts/pirarubicin.html | 6 +- concepts/pituicytoma.html | 6 +- concepts/pituitary-adenoma.html | 6 +- concepts/pituitary-carcinoma.html | 6 +- .../placental-site-trophoblastic-tumor.html | 6 +- concepts/plasma-cell-myeloma.html | 6 +- concepts/plasmablastic-lymphoma.html | 6 +- concepts/plasmacytic-hyperplasia-ptld.html | 6 +- ...id-signet-ring-cell-bladder-carcinoma.html | 6 +- .../pleomorphic-carcinoma-of-the-lung.html | 6 +- concepts/pleomorphic-liposarcoma.html | 6 +- concepts/pleomorphic-rhabdomyosarcoma.html | 6 +- concepts/pleomorphic-xanthoastrocytoma.html | 6 +- concepts/pleura.html | 6 +- .../pleural-mesothelioma-biphasic-type.html | 6 +- ...pleural-mesothelioma-epithelioid-type.html | 6 +- ...pleural-mesothelioma-sarcomatoid-type.html | 6 +- concepts/pleural-mesothelioma.html | 6 +- concepts/pleuropulmonary-blastoma.html | 6 +- .../polycythaemia-vera-myelofibrosis.html | 6 +- concepts/polycythemia-vera.html | 6 +- concepts/polyembryoma-vulva-vagina.html | 6 +- concepts/polyembryoma.html | 6 +- concepts/polymorphic-ptld.html | 6 +- .../poorly-differentiated-carcinoma-nos.html | 6 +- ...fferentiated-carcinoma-of-the-stomach.html | 6 +- ...ifferentiated-carcinoma-of-the-uterus.html | 6 +- ...erentiated-non-small-cell-lung-cancer.html | 6 +- .../poorly-differentiated-thyroid-cancer.html | 6 +- ...orly-differentiated-vaginal-carcinoma.html | 6 +- .../porocarcinoma-spiroadenocarcinoma.html | 6 +- concepts/poroma-acrospiroma.html | 6 +- concepts/porphyria-cutania-tarda.html | 6 +- ...nsplant-lymphoproliferative-disorders.html | 6 +- concepts/prevent-cancer-foundation.html | 6 +- concepts/primary-brain-tumor.html | 6 +- concepts/primary-cns-melanocytic-tumors.html | 6 +- concepts/primary-cns-melanoma.html | 6 +- ...us-acral-cd8-positive-t-cell-lymphoma.html | 6 +- ...aneous-anaplastic-large-cell-lymphoma.html | 6 +- ...-t-cell-lymphoproliferative-disorders.html | 6 +- ...m-t-cell-lymphoproliferative-disorder.html | 6 +- ...dermotropic-cytotoxic-t-cell-lymphoma.html | 6 +- .../primary-cutaneous-dlbcl-leg-type.html | 6 +- ...ry-cutaneous-follicle-center-lymphoma.html | 6 +- ...cutaneous-gamma-delta-t-cell-lymphoma.html | 6 +- ...y-dlbcl-of-the-central-nervous-system.html | 6 +- concepts/primary-effusion-lymphoma.html | 6 +- ...iastinal-thymic-large-b-cell-lymphoma.html | 6 +- ...myelofibrosis-prefibrotic-early-stage.html | 6 +- concepts/primary-myelofibrosis.html | 6 +- ...ary-myelofibrosisovert-fibrotic-stage.html | 6 +- concepts/primary-neuroepithelial-tumor.html | 6 +- concepts/primitive-neuroectodermal-tumor.html | 6 +- concepts/princess-margaret-cancer-centre.html | 6 +- .../proliferating-pilar-cystic-tumor.html | 6 +- concepts/prostate-adenocarcinoma.html | 6 +- concepts/prostate-cancer-subreddit.html | 6 +- .../prostate-neuroendocrine-carcinoma.html | 6 +- concepts/prostate-small-cell-carcinoma.html | 6 +- .../prostate-squamous-cell-carcinoma.html | 6 +- concepts/prostate.html | 6 +- concepts/prostatectomy.html | 6 +- .../proximal-type-epithelioid-sarcoma.html | 6 +- .../pseudomyogenic-hemangioendothelioma.html | 6 +- concepts/pubmed-central.html | 6 +- concepts/pubmed.html | 6 +- concepts/pulmonary-lymphangiomyomatosis.html | 6 +- concepts/pulmonary-metastasectomy.html | 6 +- .../purdue-institute-for-cancer-research.html | 6 +- concepts/pure-erythroid-leukemia.html | 6 +- concepts/qatar-ncc.html | 6 +- concepts/qcancer.html | 6 +- concepts/qcr-au.html | 6 +- concepts/radiation-associated-sarcoma.html | 6 +- ...ion-surviving-cancer-against-all-odds.html | 6 +- concepts/radioembolization.html | 6 +- concepts/radiofrequency-ablation.html | 6 +- concepts/ranimustine.html | 6 +- concepts/rdca-ci.html | 6 +- concepts/rdca-dz.html | 6 +- concepts/rdcb-mo.html | 6 +- concepts/rdcdb-cg.html | 6 +- concepts/rdcg-gu.html | 6 +- concepts/rdclr.html | 6 +- concepts/rdcm-ma.html | 6 +- concepts/rectal-adenocarcinoma.html | 6 +- .../refractory-cytopenia-of-childhood.html | 6 +- concepts/regeneron.html | 6 +- concepts/regorafenib.html | 6 +- concepts/renal-angiomyolipoma.html | 6 +- concepts/renal-cell-carcinoma.html | 6 +- ...l-carcinoma-with-sarcomatoid-features.html | 6 +- concepts/renal-clear-cell-carcinoma.html | 6 +- concepts/renal-medullary-carcinoma.html | 6 +- ...cinous-tubular-spindle-cell-carcinoma.html | 6 +- concepts/renal-neuroendocrine-tumor.html | 6 +- concepts/renal-non-clear-cell-carcinoma.html | 6 +- concepts/renal-oncocytoma.html | 6 +- concepts/renal-small-cell-carcinoma.html | 6 +- concepts/retinoblastoma.html | 6 +- concepts/rhabdoid-cancer.html | 6 +- concepts/rhabdoid-meningioma.html | 6 +- concepts/rhabdomyosarcoma.html | 6 +- .../rivkin-center-risk-assessment-tool.html | 6 +- ...t-h-lurie-comprehensive-cancer-center.html | 6 +- concepts/robotic-assisted-bronchoscopy.html | 6 +- concepts/roche.html | 6 +- concepts/romidepsin.html | 6 +- concepts/rosai-dorfman-disease.html | 6 +- ...euronal-tumor-of-the-fourth-ventricle.html | 6 +- ...well-park-comprehensive-cancer-center.html | 6 +- concepts/round-cell-sarcoma-nos.html | 6 +- concepts/rpcc.html | 6 +- concepts/rpt-ar.html | 6 +- concepts/rush-university-medical-center.html | 6 +- ...utgers-cancer-institute-of-new-jersey.html | 6 +- concepts/sacr-au.html | 6 +- concepts/saecpcr-za.html | 6 +- concepts/salivary-adenocarcinoma.html | 6 +- concepts/salivary-carcinoma-other.html | 6 +- concepts/salivary-carcinoma.html | 6 +- concepts/salivary-duct-carcinoma.html | 6 +- concepts/salivary-gland-oncocytoma.html | 6 +- ...salivary-gland-type-tumor-of-the-lung.html | 6 +- concepts/salk-institute-cancer-center.html | 6 +- ...am-prebys-medical-discovery-institute.html | 6 +- concepts/sanofi.html | 6 +- concepts/sarcoma-nos.html | 6 +- .../sarcomatoid-carcinoma-of-the-lung.html | 6 +- ...toid-carcinoma-of-the-urinary-bladder.html | 6 +- .../sarcomatoid-renal-cell-carcinoma.html | 6 +- concepts/satraplatin.html | 6 +- concepts/sauna.html | 6 +- concepts/sbrt.html | 6 +- concepts/schwannoma.html | 6 +- .../sclerosing-epithelioid-fibrosarcoma.html | 6 +- concepts/scr-dz.html | 6 +- concepts/seattle-childrens-hospital.html | 6 +- concepts/sebaceous-carcinoma.html | 6 +- concepts/secondary-osteosarcoma.html | 6 +- concepts/seer.html | 6 +- concepts/sellar-tumor.html | 6 +- concepts/seminoma.html | 6 +- concepts/semustine.html | 6 +- concepts/serene-hospice-care.html | 6 +- ...rderline-ovarian-tumor-micropapillary.html | 6 +- concepts/serous-borderline-ovarian-tumor.html | 6 +- .../serous-cystadenoma-of-the-pancreas.html | 6 +- concepts/serous-ovarian-cancer.html | 6 +- concepts/sertoli-leydig-cell-tumor.html | 6 +- concepts/sex-cord-stromal-tumor-testis.html | 6 +- concepts/sex-cord-stromal-tumor.html | 6 +- concepts/sezary-syndrome.html | 6 +- concepts/sialoblastoma.html | 6 +- ...center-at-thomas-jefferson-university.html | 6 +- ...ey-kimmel-comprehensive-cancer-center.html | 6 +- concepts/sigmoidoscopy.html | 6 +- ...denocarcinoma-of-the-colon-and-rectum.html | 6 +- ...et-ring-cell-carcinoma-of-the-stomach.html | 6 +- ...signet-ring-cell-type-of-the-appendix.html | 6 +- concepts/signet-ring-mucinous-carcinoma.html | 6 +- concepts/sinonasal-adenocarcinoma.html | 6 +- .../sinonasal-squamous-cell-carcinoma.html | 6 +- .../sinonasal-undifferentiated-carcinoma.html | 6 +- concepts/sinopharm.html | 6 +- concepts/sitc.html | 6 +- concepts/skin-adnexal-carcinoma.html | 6 +- concepts/skin-cancer-subreddit.html | 6 +- concepts/skin.html | 6 +- concepts/sleep.html | 6 +- concepts/small-bowel-cancer.html | 6 +- ...l-differentiated-neuroendocrine-tumor.html | 6 +- concepts/small-cell-bladder-cancer.html | 6 +- .../small-cell-carcinoma-of-the-cervix.html | 6 +- .../small-cell-carcinoma-of-the-ovary.html | 6 +- .../small-cell-carcinoma-of-the-stomach.html | 6 +- ...all-cell-carcinoma-of-unknown-primary.html | 6 +- .../small-cell-gallbladder-carcinoma.html | 6 +- concepts/small-cell-glioblastoma.html | 6 +- concepts/small-cell-lung-cancer.html | 6 +- concepts/small-cell-osteosarcoma.html | 6 +- concepts/small-intestinal-carcinoma.html | 6 +- concepts/smoking-cessation.html | 6 +- .../smoldering-systemic-mastocytosis.html | 6 +- concepts/smooth-muscle-neoplasm-nos.html | 6 +- concepts/sncr-sy.html | 6 +- .../soft-tissue-myoepithelial-carcinoma.html | 6 +- concepts/soft-tissue.html | 6 +- ...lid-papillary-carcinoma-of-the-breast.html | 6 +- ...udopapillary-neoplasm-of-the-pancreas.html | 6 +- ...tary-fibrous-tumor-hemangiopericytoma.html | 6 +- ...s-tumor-of-the-central-nervous-system.html | 6 +- concepts/solitary-plasmacytoma-of-bone.html | 6 +- concepts/sorafenib.html | 6 +- .../spindle-cell-carcinoma-of-the-lung.html | 6 +- ...ell-oncocytoma-of-the-adenohypophysis.html | 6 +- concepts/spindle-cell-rhabdomyosarcoma.html | 6 +- ...ndle-cell-sclerosing-rhabdomyosarcoma.html | 6 +- concepts/spiroma-spiradenoma.html | 6 +- concepts/spitzoid-melanoma.html | 6 +- concepts/splenectomy.html | 6 +- ...cell-lymphoma-leukemia-unclassifiable.html | 6 +- ...iffuse-red-pulp-small-b-cell-lymphoma.html | 6 +- concepts/splenic-marginal-zone-lymphoma.html | 6 +- ...us-cell-carcinoma-of-the-vulva-vagina.html | 6 +- concepts/squamous-cell-carcinoma.html | 6 +- .../st-jude-childrens-research-hospital.html | 6 +- concepts/stanford-cancer-institute-sci.html | 6 +- concepts/steam-bath.html | 6 +- concepts/stephenson-cancer-center.html | 6 +- concepts/steroid-cell-tumor-nos.html | 6 +- concepts/stomach-adenocarcinoma.html | 6 +- concepts/stomach-cancer.html | 6 +- concepts/streptozotocin.html | 6 +- concepts/stress-management.html | 6 +- concepts/subcutaneous-administration.html | 6 +- ...ous-panniculitis-like-t-cell-lymphoma.html | 6 +- concepts/subependymoma.html | 6 +- concepts/susan-g-komen.html | 6 +- concepts/sweat-gland-adenocarcinoma.html | 6 +- ...-carcinoma-apocrine-eccrine-carcinoma.html | 6 +- concepts/sweden-nch.html | 6 +- concepts/swedish-cancer-institute.html | 6 +- .../swedish-national-cancer-register.html | 6 +- concepts/swiss-cancer-league.html | 6 +- concepts/swog.html | 6 +- ...sylvester-comprehensive-cancer-center.html | 6 +- concepts/synovial-sarcoma.html | 6 +- ...positive-t-cell-lymphoma-of-childhood.html | 6 +- ...-an-associated-hematological-neoplasm.html | 6 +- concepts/systemic-mastocytosis.html | 6 +- ...histiocyte-rich-large-b-cell-lymphoma.html | 6 +- ...l-large-granular-lymphocytic-leukemia.html | 6 +- concepts/t-cell-prolymphocytic-leukemia.html | 6 +- .../t-lymphoblastic-leukemia-lymphoma.html | 6 +- concepts/tai-chi.html | 6 +- concepts/takeda.html | 6 +- concepts/tamoxifen.html | 6 +- concepts/taxotere.html | 6 +- concepts/tcga.html | 6 +- concepts/tcr-au.html | 6 +- concepts/telangiectatic-osteosarcoma.html | 6 +- concepts/temozolomide.html | 6 +- concepts/teniposide.html | 6 +- ...ynovial-giant-cell-tumor-diffuse-type.html | 6 +- concepts/teratoma.html | 6 +- concepts/tesetaxel.html | 6 +- concepts/testicular-lymphoma.html | 6 +- concepts/testicular-mesothelioma.html | 6 +- concepts/testis.html | 6 +- concepts/teva.html | 6 +- ...barbara-ann-karmanos-cancer-institute.html | 6 +- concepts/the-biology-of-cancer.html | 6 +- ...ght-hour-a-memoir-of-living-and-dying.html | 6 +- concepts/the-c-word.html | 6 +- concepts/the-cancer-journals.html | 6 +- concepts/the-death-of-cancer-book.html | 6 +- concepts/the-dog-cancer-survival-guide.html | 6 +- concepts/the-eden-prescription-book.html | 6 +- ...ects-of-herbs-and-fruits-on-leukaemia.html | 6 +- concepts/the-hope-foundation.html | 6 +- concepts/the-hyve.html | 6 +- .../the-immortal-life-of-henrietta-lacks.html | 6 +- .../the-jackson-laboratory-cancer-center.html | 6 +- concepts/the-lancet-oncology.html | 6 +- .../the-metabolic-approach-to-cancer.html | 6 +- ...niversity-comprehensive-cancer-center.html | 6 +- concepts/the-skin-cancer-foundation.html | 6 +- concepts/the-truth-about-cancer.html | 6 +- concepts/the-truth-in-small-doses-book.html | 6 +- ...f-chicago-comprehensive-cancer-center.html | 6 +- ...he-university-of-kansas-cancer-center.html | 6 +- .../the-wistar-institute-cancer-center.html | 6 +- ...herapy-related-acute-myeloid-leukemia.html | 6 +- ...rapy-related-myelodysplastic-syndrome.html | 6 +- .../therapy-related-myeloid-neoplasms.html | 6 +- concepts/thiotepa.html | 6 +- concepts/thymic-carcinoma.html | 6 +- concepts/thymic-epithelial-tumor.html | 6 +- concepts/thymic-neuroendocrine-tumor.html | 6 +- concepts/thymoma.html | 6 +- concepts/thymus.html | 6 +- concepts/thyroid-cancer-subreddit.html | 6 +- concepts/thyroid.html | 6 +- concepts/thyroidectomy.html | 6 +- concepts/tioguanine.html | 6 +- concepts/tisch-cancer-institute.html | 6 +- concepts/tlcr-dz.html | 6 +- concepts/tocr-dz.html | 6 +- concepts/topical-medication.html | 6 +- concepts/topotecan.html | 6 +- concepts/toxin-avoidance.html | 6 +- concepts/transarterial-chemoembolization.html | 6 +- concepts/transarterial-embolization.html | 6 +- concepts/transient-abnormal-myelopoiesis.html | 6 +- ...ation-associated-renal-cell-carcinoma.html | 6 +- concepts/treosulfan.html | 6 +- concepts/tretinoin.html | 6 +- concepts/triaziquone.html | 6 +- concepts/triethylenemelamine.html | 6 +- concepts/trofosfamide.html | 6 +- concepts/tubular-adenoma-of-the-colon.html | 6 +- concepts/tubular-stomach-adenocarcinoma.html | 6 +- .../uc-davis-comprehensive-cancer-center.html | 6 +- concepts/uccc.html | 6 +- ...er-family-comprehensive-cancer-center.html | 6 +- concepts/ue-lifesciences.html | 6 +- concepts/uicc.html | 6 +- concepts/umls.html | 6 +- concepts/un.html | 6 +- ...ineberger-comprehensive-cancer-center.html | 6 +- .../unclassified-renal-cell-carcinoma.html | 6 +- ...ferentiated-carcinoma-of-the-pancreas.html | 6 +- ...tiated-embryonal-sarcoma-of-the-liver.html | 6 +- .../undifferentiated-malignant-neoplasm.html | 6 +- ...ytoma-high-grade-spindle-cell-sarcoma.html | 6 +- ...differentiated-stomach-adenocarcinoma.html | 6 +- .../undifferentiated-uterine-sarcoma.html | 6 +- concepts/unicancer.html | 6 +- .../university-of-colorado-cancer-center.html | 6 +- .../university-of-hawaii-cancer-center.html | 6 +- ...reenebaum-comprehensive-cancer-center.html | 6 +- ...rsity-of-michigan-rogel-cancer-center.html | 6 +- ...-cancer-research-and-treatment-center.html | 6 +- .../university-of-virginia-cancer-center.html | 6 +- ...ty-of-wisconsin-carbone-cancer-center.html | 6 +- concepts/upmc-hillman-cancer-center.html | 6 +- .../upper-tract-urothelial-carcinoma.html | 6 +- concepts/urachal-adenocarcinoma.html | 6 +- concepts/urachal-carcinoma.html | 6 +- concepts/uramustine.html | 6 +- concepts/urethral-adenocarcinoma.html | 6 +- concepts/urethral-cancer.html | 6 +- .../urethral-squamous-cell-carcinoma.html | 6 +- concepts/urethral-urothelial-carcinoma.html | 6 +- concepts/urothelial-papilloma.html | 6 +- ...sc-norris-comprehensive-cancer-center.html | 6 +- concepts/uscs.html | 6 +- concepts/uterine-adenosarcoma.html | 6 +- concepts/uterine-adenosquamous-carcinoma.html | 6 +- ...erine-malignant-mixed-mullerian-tumor.html | 6 +- concepts/uterine-clear-cell-carcinoma.html | 6 +- .../uterine-dedifferentiated-carcinoma.html | 6 +- concepts/uterine-endometrioid-carcinoma.html | 6 +- .../uterine-epithelioid-leiomyosarcoma.html | 6 +- concepts/uterine-leiomyoma.html | 6 +- concepts/uterine-leiomyosarcoma.html | 6 +- concepts/uterine-mesonephric-carcinoma.html | 6 +- .../uterine-mixed-endometrial-carcinoma.html | 6 +- concepts/uterine-mucinous-carcinoma.html | 6 +- concepts/uterine-myxoid-leiomyosarcoma.html | 6 +- .../uterine-neuroendocrine-carcinoma.html | 6 +- ...e-perivascular-epithelioid-cell-tumor.html | 6 +- concepts/uterine-sarcoma-mesenchymal.html | 6 +- concepts/uterine-sarcoma-other.html | 6 +- ...ma-uterine-papillary-serous-carcinoma.html | 6 +- ...umor-of-uncertain-malignant-potential.html | 6 +- concepts/uterine-smooth-muscle-tumor.html | 6 +- .../uterine-undifferentiated-carcinoma.html | 6 +- concepts/uterus.html | 6 +- concepts/uveal-melanoma.html | 6 +- concepts/vacf.html | 6 +- concepts/vaginal-adenocarcinoma.html | 6 +- concepts/valrubicin.html | 6 +- concepts/vanderbilt-ingram-cancer-center.html | 6 +- concepts/vats.html | 6 +- concepts/vcr-au.html | 6 +- concepts/veganism.html | 6 +- concepts/vegetarianism.html | 6 +- concepts/vemurafenib.html | 6 +- ...rucous-penile-squamous-cell-carcinoma.html | 6 +- concepts/viatris.html | 6 +- ...landular-adenocarcinoma-of-the-cervix.html | 6 +- concepts/villoglandular-carcinoma.html | 6 +- concepts/vinblastine.html | 6 +- concepts/vincristine.html | 6 +- concepts/vindesine.html | 6 +- concepts/vinorelbine.html | 6 +- concepts/vismodegib.html | 6 +- concepts/vitamin-a.html | 6 +- concepts/vitamin-b.html | 6 +- concepts/vitamin-c.html | 6 +- concepts/vitamin-d.html | 6 +- concepts/vorinostat.html | 6 +- concepts/vulva-vagina.html | 6 +- concepts/wacanreg.html | 6 +- ...t-baptist-comprehensive-cancer-center.html | 6 +- concepts/waldenstrom-macroglobulinemia.html | 6 +- .../warty-penile-squamous-cell-carcinoma.html | 6 +- concepts/wcrf-uk.html | 6 +- concepts/wcrf.html | 6 +- concepts/weight-loss.html | 6 +- concepts/well-differentiated-liposarcoma.html | 6 +- ...-neuroendocrine-tumor-of-the-appendix.html | 6 +- ...ed-neuroendocrine-tumor-of-the-rectum.html | 6 +- ...-neuroendocrine-tumors-of-the-stomach.html | 6 +- .../well-differentiated-thyroid-cancer.html | 6 +- concepts/when-breath-becomes-air.html | 6 +- concepts/who.html | 6 +- concepts/wilms-tumor.html | 6 +- concepts/wim-hof-method.html | 6 +- ...c-journey-towards-a-natural-cure-book.html | 6 +- concepts/winship-cancer-institute.html | 6 +- concepts/wkof.html | 6 +- concepts/world-cancer-day.html | 6 +- concepts/world-lymphoma-awareness-day.html | 6 +- concepts/yale-cancer-center.html | 6 +- .../yale-introduction-to-breast-cancer.html | 6 +- concepts/yoga.html | 6 +- concepts/yolk-sac-tumor-cns-brain.html | 6 +- concepts/yolk-sac-tumor-testis.html | 6 +- concepts/yolk-sac-tumor-vulva-vagina.html | 6 +- concepts/yolk-sac-tumor.html | 6 +- concepts/your-disease-risk.html | 6 +- concepts/zmncr-zm.html | 6 +- concepts/zncr-zw.html | 6 +- concepts/zorubicin.html | 6 +- csv.html | 6 +- download.html | 6 +- index.html | 6 +- list.html | 6 +- node_modules/.package-lock.json | 23 +- .../node_modules/scrollsdk/package.json | 61 - .../scrollsdk/products/Disk.node.js | 187 -- .../scrollsdk/products/GrammarLanguage.js | 2460 --------------- .../node_modules/scrollsdk/products/Path.js | 496 ---- .../scrollsdk/products/TestRacer.js | 247 -- .../scrollsdk/products/TreeFileSystem.js | 204 -- .../scrollsdk/products/TreeNode.js | 2628 ----------------- .../node_modules/scrollsdk/products/Utils.js | 655 ---- .../scrollsdk/products/hakon.nodejs.js | 428 --- .../scrollsdk/products/stamp.nodejs.js | 341 --- .../scrollsdk/products/stump.nodejs.js | 967 ------ .../scrollsdk/products/swarm.nodejs.js | 712 ----- .../node_modules/scrollsdk/readme.scroll | 126 - node_modules/scroll-cli/package.json | 4 +- .../scroll-cli/parsers/parsersNode.parsers | 4 +- node_modules/scroll-cli/readme.scroll | 6 +- node_modules/scroll-cli/scroll.js | 8 +- node_modules/scrollsdk/package.json | 10 +- node_modules/scrollsdk/products/Disk.node.js | 2 +- .../scrollsdk/products/GrammarCompiler.js | 75 - .../{GrammarLanguage.js => Parsers.js} | 678 ++--- .../products/ParsersCompiler.js} | 48 +- .../scrollsdk/products/TreeFileSystem.js | 55 +- node_modules/scrollsdk/products/TreeNode.js | 4 +- .../scrollsdk/products/grammar.nodejs.js | 975 ------ .../scrollsdk/products/hakon.nodejs.js | 22 +- .../products/parsers.nodejs.js} | 76 +- .../scrollsdk/products/stamp.nodejs.js | 28 +- .../scrollsdk/products/stump.nodejs.js | 26 +- .../scrollsdk/products/swarm.nodejs.js | 38 +- node_modules/scrollsdk/readme.scroll | 22 +- package-lock.json | 27 +- package.json | 4 +- pages/about.html | 6 +- pages/acknowledgements.html | 6 +- pages/explore.html | 6 +- posts/cancer-heatmaps.html | 6 +- posts/cat-food.html | 6 +- posts/commercials.html | 6 +- posts/feed.xml | 2 +- posts/funQuiz.html | 6 +- posts/hawaii-cancer-moonshot.html | 6 +- posts/holey-moley.html | 6 +- posts/humor.html | 6 +- posts/index.html | 6 +- posts/moonbathing.html | 6 +- posts/natureCalls.html | 6 +- posts/prostateExams.html | 6 +- posts/sayCheese.html | 6 +- readme.html | 2 +- readme.scroll | 2 +- search.html | 6 +- 1514 files changed, 4985 insertions(+), 15556 deletions(-) delete mode 100644 node_modules/scroll-cli/node_modules/scrollsdk/package.json delete mode 100644 node_modules/scroll-cli/node_modules/scrollsdk/products/Disk.node.js delete mode 100644 node_modules/scroll-cli/node_modules/scrollsdk/products/GrammarLanguage.js delete mode 100644 node_modules/scroll-cli/node_modules/scrollsdk/products/Path.js delete mode 100644 node_modules/scroll-cli/node_modules/scrollsdk/products/TestRacer.js delete mode 100644 node_modules/scroll-cli/node_modules/scrollsdk/products/TreeFileSystem.js delete mode 100644 node_modules/scroll-cli/node_modules/scrollsdk/products/TreeNode.js delete mode 100644 node_modules/scroll-cli/node_modules/scrollsdk/products/Utils.js delete mode 100755 node_modules/scroll-cli/node_modules/scrollsdk/products/hakon.nodejs.js delete mode 100755 node_modules/scroll-cli/node_modules/scrollsdk/products/stamp.nodejs.js delete mode 100755 node_modules/scroll-cli/node_modules/scrollsdk/products/stump.nodejs.js delete mode 100755 node_modules/scroll-cli/node_modules/scrollsdk/products/swarm.nodejs.js delete mode 100644 node_modules/scroll-cli/node_modules/scrollsdk/readme.scroll delete mode 100644 node_modules/scrollsdk/products/GrammarCompiler.js rename node_modules/scrollsdk/products/{GrammarLanguage.js => Parsers.js} (80%) rename node_modules/{scroll-cli/node_modules/scrollsdk/products/GrammarCompiler.js => scrollsdk/products/ParsersCompiler.js} (54%) delete mode 100755 node_modules/scrollsdk/products/grammar.nodejs.js rename node_modules/{scroll-cli/node_modules/scrollsdk/products/grammar.nodejs.js => scrollsdk/products/parsers.nodejs.js} (93%) diff --git a/404.html b/404.html index 4300d0f0bd..4b75714bc6 100644 --- a/404.html +++ b/404.html @@ -3,12 +3,12 @@ Page not found - + - + @@ -378,7 +378,7 @@ - Built with Scroll v96.0.0 + Built with Scroll v97.0.0 \ No newline at end of file diff --git a/ScrollSet.js b/ScrollSet.js index e008cef3b4..8105ef5e2a 100644 --- a/ScrollSet.js +++ b/ScrollSet.js @@ -4,6 +4,8 @@ const lodash = require("lodash") const { TreeNode } = require("scrollsdk/products/TreeNode.js") const { Utils } = require("scrollsdk/products/Utils.js") const { Disk } = require("scrollsdk/products/Disk.node.js") +const { ScrollFile, ScrollFileSystem } = require("scroll-cli") +const scrollFs = new ScrollFileSystem() class ScrollSetCLI { constructor() { @@ -48,12 +50,15 @@ class ScrollSetCLI { setAndSave(file, measurementPath, measurementValue) { const tree = this.getTree(file) tree.set(measurementPath, measurementValue) - return this.save(file, tree) + return this.formatAndSave(file, tree) } - save(file, tree) { - const dest = this.makeFilePath(file.id) - return Disk.write(dest, tree.toString()) + formatAndSave(file, tree) { + return new ScrollFile( + tree.toString(), + this.makeFilePath(file.id), + scrollFs + ).formatAndSave() } makeNameSearchIndex(files = this.concepts.slice(0).reverse()) { @@ -84,7 +89,7 @@ class ScrollSetCLI { console.log(lodash.pickBy(this.searchForConcept(query), lodash.identity)) } - grammarFile = "" + parsersFile = "" scrollSetName = "myScrollSet" get concepts() { @@ -93,7 +98,8 @@ class ScrollSetCLI { async updateIdsCommand() { this.concepts.forEach((file) => { - const tree = this.getTree(file) + const dest = path.join(this.conceptsFolder, file.filename) + const tree = new TreeNode(Disk.read(dest)) const newTree = tree.toString().replace( `import ../code/conceptPage.scroll id `, @@ -101,19 +107,19 @@ id `, id ${file.filename.replace(".scroll", "")} name ` ) - this.save(file, newTree.toString()) + Disk.write(dest, newTree.toString()) }) } - buildGrammarFileCommand() { - const code = `node_modules/scroll-cli/grammar/cellTypes.grammar -node_modules/scroll-cli/grammar/root.grammar -node_modules/scroll-cli/grammar/comments.grammar -node_modules/scroll-cli/grammar/blankLine.grammar -node_modules/scroll-cli/grammar/measures.grammar -node_modules/scroll-cli/grammar/import.grammar -node_modules/scroll-cli/grammar/errors.grammar -${this.grammarFile}` + buildParsersFile() { + const code = `node_modules/scroll-cli/parsers/cellTypes.parsers +node_modules/scroll-cli/parsers/root.parsers +node_modules/scroll-cli/parsers/comments.parsers +node_modules/scroll-cli/parsers/blankLine.parsers +node_modules/scroll-cli/parsers/measures.parsers +node_modules/scroll-cli/parsers/import.parsers +node_modules/scroll-cli/parsers/errors.parsers +${this.parsersFile}` .trim() .split("\n") .map((filepath) => Disk.read(path.join(__dirname, filepath))) @@ -124,7 +130,7 @@ ${this.grammarFile}` ) .replace(/^importOnly\n/gm, "") .replace(/^import .+/gm, "") - Disk.write(path.join(__dirname, `${this.scrollSetName}.grammar`), code) + Disk.write(path.join(__dirname, `${this.scrollSetName}.parsers`), code) } } diff --git a/cli.js b/cli.js index 0eaeb140c4..cab776a627 100755 --- a/cli.js +++ b/cli.js @@ -6,7 +6,7 @@ const { ScrollSetCLI } = require("./ScrollSet.js") class CancerDBCli extends ScrollSetCLI { conceptsFolder = path.join(__dirname, "concepts") - grammarFile = "code/measures.parsers" + parsersFile = "code/measures.parsers" scrollSetName = "cancerdb" compiledConcepts = "./cancerdb.json" } diff --git a/code/measures.parsers b/code/measures.parsers index f8c0dce969..d296c2788d 100644 --- a/code/measures.parsers +++ b/code/measures.parsers @@ -460,7 +460,7 @@ rumbleParser // socialMedia abstractSocialMediaParser extends abstractUrlMeasureParser - // todo remove the need for the below from grammar + // todo remove the need for the below from parsers string sortKey abstractSocialMediaParser contentKey url float sortIndex 10 diff --git a/concepts/3d-crt.html b/concepts/3d-crt.html index dc56de2db7..b1729f1094 100644 --- a/concepts/3d-crt.html +++ b/concepts/3d-crt.html @@ -11,12 +11,12 @@ 3D-CRT - + - + @@ -375,7 +375,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/a-lucky-man-a-memoir.html b/concepts/a-lucky-man-a-memoir.html index 845182397a..585eeb6cdf 100644 --- a/concepts/a-lucky-man-a-memoir.html +++ b/concepts/a-lucky-man-a-memoir.html @@ -11,12 +11,12 @@ A Lucky Man: A Memoir - + - + @@ -375,7 +375,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/a-new-war-on-cancer-book.html b/concepts/a-new-war-on-cancer-book.html index 62c7f33498..dfb8399e02 100644 --- a/concepts/a-new-war-on-cancer-book.html +++ b/concepts/a-new-war-on-cancer-book.html @@ -11,12 +11,12 @@ A New War on Cancer: The Unlikely Heroes Revolutionizing Prevention - + - + @@ -376,7 +376,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/aaccr-et.html b/concepts/aaccr-et.html index 735a53faa6..6e4bfe9c83 100644 --- a/concepts/aaccr-et.html +++ b/concepts/aaccr-et.html @@ -11,12 +11,12 @@ AACCR - + - + @@ -378,7 +378,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/aaci.html b/concepts/aaci.html index 8c93fd3d4b..0c68e01ffb 100644 --- a/concepts/aaci.html +++ b/concepts/aaci.html @@ -11,12 +11,12 @@ Association of American Cancer Institutes - + - + @@ -385,7 +385,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/aacr.html b/concepts/aacr.html index 0e9437b4df..1d00663fec 100644 --- a/concepts/aacr.html +++ b/concepts/aacr.html @@ -11,12 +11,12 @@ AACR - + - + @@ -386,7 +386,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/aad.html b/concepts/aad.html index 813ab88414..be72c80774 100644 --- a/concepts/aad.html +++ b/concepts/aad.html @@ -11,12 +11,12 @@ American Academy of Dermatology - + - + @@ -383,7 +383,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/abbott.html b/concepts/abbott.html index a1d0457021..114492ca8e 100644 --- a/concepts/abbott.html +++ b/concepts/abbott.html @@ -11,12 +11,12 @@ Abbott Laboratories - + - + @@ -378,7 +378,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/abbvie.html b/concepts/abbvie.html index 6fbb3c9eec..9e65273843 100644 --- a/concepts/abbvie.html +++ b/concepts/abbvie.html @@ -11,12 +11,12 @@ AbbVie - + - + @@ -388,7 +388,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/abramson-cancer-center.html b/concepts/abramson-cancer-center.html index 139a8a2a64..6552706228 100644 --- a/concepts/abramson-cancer-center.html +++ b/concepts/abramson-cancer-center.html @@ -11,12 +11,12 @@ Abramson Cancer Center - + - + @@ -391,7 +391,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/abraxane.html b/concepts/abraxane.html index 9d3d9bdd89..660ebd7da4 100644 --- a/concepts/abraxane.html +++ b/concepts/abraxane.html @@ -11,12 +11,12 @@ Abraxane - + - + @@ -381,7 +381,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/acd-au.html b/concepts/acd-au.html index d72384c94d..818e60ef29 100644 --- a/concepts/acd-au.html +++ b/concepts/acd-au.html @@ -11,12 +11,12 @@ ACD - + - + @@ -379,7 +379,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/acinar-cell-carcinoma-nos.html b/concepts/acinar-cell-carcinoma-nos.html index e8cbec1f89..78883ea635 100644 --- a/concepts/acinar-cell-carcinoma-nos.html +++ b/concepts/acinar-cell-carcinoma-nos.html @@ -11,12 +11,12 @@ Acinar Cell Carcinoma, NOS - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/acinar-cell-carcinoma-of-the-pancreas.html b/concepts/acinar-cell-carcinoma-of-the-pancreas.html index daeaf0e5ca..15878145b1 100644 --- a/concepts/acinar-cell-carcinoma-of-the-pancreas.html +++ b/concepts/acinar-cell-carcinoma-of-the-pancreas.html @@ -11,12 +11,12 @@ Acinar Cell Carcinoma of the Pancreas - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/acinic-cell-carcinoma.html b/concepts/acinic-cell-carcinoma.html index a7de2a1407..d236d31d23 100644 --- a/concepts/acinic-cell-carcinoma.html +++ b/concepts/acinic-cell-carcinoma.html @@ -11,12 +11,12 @@ Acinic Cell Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/acral-melanoma.html b/concepts/acral-melanoma.html index 6a7fc842ed..b55bf8fdb6 100644 --- a/concepts/acral-melanoma.html +++ b/concepts/acral-melanoma.html @@ -11,12 +11,12 @@ Acral Melanoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/acs-can.html b/concepts/acs-can.html index 6e01d31e2e..89ad5483d7 100644 --- a/concepts/acs-can.html +++ b/concepts/acs-can.html @@ -11,12 +11,12 @@ American Cancer Society Cancer Action Network - + - + @@ -384,7 +384,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/acs-cancer-programs.html b/concepts/acs-cancer-programs.html index e5574bad6f..1e4f7d48dd 100644 --- a/concepts/acs-cancer-programs.html +++ b/concepts/acs-cancer-programs.html @@ -11,12 +11,12 @@ ACS Cancer Programs - + - + @@ -376,7 +376,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/acs.html b/concepts/acs.html index fab9819a1a..3fc280d991 100644 --- a/concepts/acs.html +++ b/concepts/acs.html @@ -11,12 +11,12 @@ American College of Surgeons - + - + @@ -392,7 +392,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/actcr-au.html b/concepts/actcr-au.html index 556708aadd..27a7ba560c 100644 --- a/concepts/actcr-au.html +++ b/concepts/actcr-au.html @@ -11,12 +11,12 @@ ACTCR - + - + @@ -381,7 +381,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/actinomycin.html b/concepts/actinomycin.html index 9682cbc828..618f594c19 100644 --- a/concepts/actinomycin.html +++ b/concepts/actinomycin.html @@ -11,12 +11,12 @@ Actinomycin - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/activated-b-cell-type.html b/concepts/activated-b-cell-type.html index 4c3ed96e43..0b2c5d8e98 100644 --- a/concepts/activated-b-cell-type.html +++ b/concepts/activated-b-cell-type.html @@ -11,12 +11,12 @@ Activated B-cell Type - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/acupressure.html b/concepts/acupressure.html index 1694bf5177..a7471c0003 100644 --- a/concepts/acupressure.html +++ b/concepts/acupressure.html @@ -11,12 +11,12 @@ Acupressure - + - + @@ -376,7 +376,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/acupuncture.html b/concepts/acupuncture.html index 64dd41f262..0f2f972ad0 100644 --- a/concepts/acupuncture.html +++ b/concepts/acupuncture.html @@ -11,12 +11,12 @@ Acupuncture - + - + @@ -376,7 +376,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/acute-basophilic-leukemia.html b/concepts/acute-basophilic-leukemia.html index 39ec19e47c..c185fd59ed 100644 --- a/concepts/acute-basophilic-leukemia.html +++ b/concepts/acute-basophilic-leukemia.html @@ -11,12 +11,12 @@ Acute Basophilic Leukemia - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/acute-leukemias-of-ambiguous-lineage.html b/concepts/acute-leukemias-of-ambiguous-lineage.html index 94601c4103..7585696b8c 100644 --- a/concepts/acute-leukemias-of-ambiguous-lineage.html +++ b/concepts/acute-leukemias-of-ambiguous-lineage.html @@ -11,12 +11,12 @@ Acute Leukemias of Ambiguous Lineage - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/acute-megakaryoblastic-leukemia.html b/concepts/acute-megakaryoblastic-leukemia.html index 68c92a26fb..1862320378 100644 --- a/concepts/acute-megakaryoblastic-leukemia.html +++ b/concepts/acute-megakaryoblastic-leukemia.html @@ -11,12 +11,12 @@ Acute Megakaryoblastic Leukemia - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/acute-monoblastic-monocytic-leukemia.html b/concepts/acute-monoblastic-monocytic-leukemia.html index 2afe92a85a..bebf4f3cb6 100644 --- a/concepts/acute-monoblastic-monocytic-leukemia.html +++ b/concepts/acute-monoblastic-monocytic-leukemia.html @@ -11,12 +11,12 @@ Acute Monoblastic/Monocytic Leukemia - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/acute-myeloid-leukemia.html b/concepts/acute-myeloid-leukemia.html index 5e46879441..a8f5707b1c 100644 --- a/concepts/acute-myeloid-leukemia.html +++ b/concepts/acute-myeloid-leukemia.html @@ -11,12 +11,12 @@ Acute Myeloid Leukemia - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/acute-myelomonocytic-leukemia.html b/concepts/acute-myelomonocytic-leukemia.html index 24b6f442d0..c4137e0028 100644 --- a/concepts/acute-myelomonocytic-leukemia.html +++ b/concepts/acute-myelomonocytic-leukemia.html @@ -11,12 +11,12 @@ Acute Myelomonocytic Leukemia - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/acute-panmyelosis-with-myelofibrosis.html b/concepts/acute-panmyelosis-with-myelofibrosis.html index 996cba29ed..0b64a8403f 100644 --- a/concepts/acute-panmyelosis-with-myelofibrosis.html +++ b/concepts/acute-panmyelosis-with-myelofibrosis.html @@ -11,12 +11,12 @@ Acute Panmyelosis with Myelofibrosis - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/acute-undifferentiated-leukemia.html b/concepts/acute-undifferentiated-leukemia.html index 2773c95d8d..7788e04d30 100644 --- a/concepts/acute-undifferentiated-leukemia.html +++ b/concepts/acute-undifferentiated-leukemia.html @@ -11,12 +11,12 @@ Acute Undifferentiated Leukemia - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/adamantinoma.html b/concepts/adamantinoma.html index 523c1c9b82..d0b226aa11 100644 --- a/concepts/adamantinoma.html +++ b/concepts/adamantinoma.html @@ -11,12 +11,12 @@ Adamantinoma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/adenocarcinoma-in-situ.html b/concepts/adenocarcinoma-in-situ.html index 9e9887559c..83fb51434a 100644 --- a/concepts/adenocarcinoma-in-situ.html +++ b/concepts/adenocarcinoma-in-situ.html @@ -11,12 +11,12 @@ Adenocarcinoma In Situ - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/adenocarcinoma-nos.html b/concepts/adenocarcinoma-nos.html index e124ef3c63..321fd085fe 100644 --- a/concepts/adenocarcinoma-nos.html +++ b/concepts/adenocarcinoma-nos.html @@ -11,12 +11,12 @@ Adenocarcinoma, NOS - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/adenocarcinoma-of-the-gastroesophageal-junction.html b/concepts/adenocarcinoma-of-the-gastroesophageal-junction.html index f2ebd05ff3..2120d2b21f 100644 --- a/concepts/adenocarcinoma-of-the-gastroesophageal-junction.html +++ b/concepts/adenocarcinoma-of-the-gastroesophageal-junction.html @@ -11,12 +11,12 @@ Adenocarcinoma of the Gastroesophageal Junction - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/adenoid-cystic-breast-cancer.html b/concepts/adenoid-cystic-breast-cancer.html index 30a9d4d11d..0f1bedf697 100644 --- a/concepts/adenoid-cystic-breast-cancer.html +++ b/concepts/adenoid-cystic-breast-cancer.html @@ -11,12 +11,12 @@ Adenoid Cystic Breast Cancer - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/adenoid-cystic-carcinoma-of-the-lung.html b/concepts/adenoid-cystic-carcinoma-of-the-lung.html index ab99bf5c20..bc24ca0e27 100644 --- a/concepts/adenoid-cystic-carcinoma-of-the-lung.html +++ b/concepts/adenoid-cystic-carcinoma-of-the-lung.html @@ -11,12 +11,12 @@ Adenoid Cystic Carcinoma of the Lung - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/adenoid-cystic-carcinoma.html b/concepts/adenoid-cystic-carcinoma.html index c2d51589e6..f4e391843f 100644 --- a/concepts/adenoid-cystic-carcinoma.html +++ b/concepts/adenoid-cystic-carcinoma.html @@ -11,12 +11,12 @@ Adenoid Cystic Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/adenomyoepithelioma-of-the-breast.html b/concepts/adenomyoepithelioma-of-the-breast.html index 122c3abb8f..d278414110 100644 --- a/concepts/adenomyoepithelioma-of-the-breast.html +++ b/concepts/adenomyoepithelioma-of-the-breast.html @@ -11,12 +11,12 @@ Adenomyoepithelioma of the Breast - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/adenosquamous-carcinoma-of-the-gallbladder.html b/concepts/adenosquamous-carcinoma-of-the-gallbladder.html index b63149a748..4d72bda932 100644 --- a/concepts/adenosquamous-carcinoma-of-the-gallbladder.html +++ b/concepts/adenosquamous-carcinoma-of-the-gallbladder.html @@ -11,12 +11,12 @@ Adenosquamous Carcinoma of the Gallbladder - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/adenosquamous-carcinoma-of-the-pancreas.html b/concepts/adenosquamous-carcinoma-of-the-pancreas.html index 6577bb24a6..e3fa925c53 100644 --- a/concepts/adenosquamous-carcinoma-of-the-pancreas.html +++ b/concepts/adenosquamous-carcinoma-of-the-pancreas.html @@ -11,12 +11,12 @@ Adenosquamous Carcinoma of the Pancreas - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/adenosquamous-carcinoma-of-the-stomach.html b/concepts/adenosquamous-carcinoma-of-the-stomach.html index a389f182e6..50184f1f3b 100644 --- a/concepts/adenosquamous-carcinoma-of-the-stomach.html +++ b/concepts/adenosquamous-carcinoma-of-the-stomach.html @@ -11,12 +11,12 @@ Adenosquamous Carcinoma of the Stomach - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/adenosquamous-carcinoma-of-the-tongue.html b/concepts/adenosquamous-carcinoma-of-the-tongue.html index 57b60d6c1a..f0c70afd85 100644 --- a/concepts/adenosquamous-carcinoma-of-the-tongue.html +++ b/concepts/adenosquamous-carcinoma-of-the-tongue.html @@ -11,12 +11,12 @@ Adenosquamous Carcinoma of the Tongue - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/adrenal-gland.html b/concepts/adrenal-gland.html index 78bd5704e0..e4474e7713 100644 --- a/concepts/adrenal-gland.html +++ b/concepts/adrenal-gland.html @@ -11,12 +11,12 @@ Adrenal Cancer - + - + @@ -385,7 +385,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/adrenalectomy.html b/concepts/adrenalectomy.html index e69bad2ca5..4cd74001de 100644 --- a/concepts/adrenalectomy.html +++ b/concepts/adrenalectomy.html @@ -11,12 +11,12 @@ Adrenalectomy - + - + @@ -378,7 +378,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/adrenocortical-adenoma.html b/concepts/adrenocortical-adenoma.html index ff53094c5b..4d37bf032e 100644 --- a/concepts/adrenocortical-adenoma.html +++ b/concepts/adrenocortical-adenoma.html @@ -11,12 +11,12 @@ Adrenocortical Adenoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/adrenocortical-carcinoma.html b/concepts/adrenocortical-carcinoma.html index 294d88ca40..3f1028eb8f 100644 --- a/concepts/adrenocortical-carcinoma.html +++ b/concepts/adrenocortical-carcinoma.html @@ -11,12 +11,12 @@ Adrenocortical Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/adult-t-cell-leukemia-lymphoma.html b/concepts/adult-t-cell-leukemia-lymphoma.html index d415e56d81..94d9d21291 100644 --- a/concepts/adult-t-cell-leukemia-lymphoma.html +++ b/concepts/adult-t-cell-leukemia-lymphoma.html @@ -11,12 +11,12 @@ Adult T-Cell Leukemia/Lymphoma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/advent-health-orlando.html b/concepts/advent-health-orlando.html index 39f29e8056..6b8c87325e 100644 --- a/concepts/advent-health-orlando.html +++ b/concepts/advent-health-orlando.html @@ -11,12 +11,12 @@ AdventHealth Orlando - + - + @@ -384,7 +384,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/aecc.html b/concepts/aecc.html index 6d87cfe6fd..2d5b88c943 100644 --- a/concepts/aecc.html +++ b/concepts/aecc.html @@ -11,12 +11,12 @@ Asociación Española Contra el Cancer - + - + @@ -384,7 +384,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/aggressive-angiomyxoma.html b/concepts/aggressive-angiomyxoma.html index a276874f34..92c7a0643e 100644 --- a/concepts/aggressive-angiomyxoma.html +++ b/concepts/aggressive-angiomyxoma.html @@ -11,12 +11,12 @@ Aggressive Angiomyxoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/aggressive-digital-papillary-adenocarcinoma.html b/concepts/aggressive-digital-papillary-adenocarcinoma.html index b859c8f30a..50261280a9 100644 --- a/concepts/aggressive-digital-papillary-adenocarcinoma.html +++ b/concepts/aggressive-digital-papillary-adenocarcinoma.html @@ -11,12 +11,12 @@ Aggressive Digital Papillary Adenocarcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/aggressive-nk-cell-leukemia.html b/concepts/aggressive-nk-cell-leukemia.html index c62f0a6571..927b742c57 100644 --- a/concepts/aggressive-nk-cell-leukemia.html +++ b/concepts/aggressive-nk-cell-leukemia.html @@ -11,12 +11,12 @@ Aggressive NK-Cell Leukemia - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/aggressive-systemic-mastocytosis.html b/concepts/aggressive-systemic-mastocytosis.html index 89adeb13b1..385f70de79 100644 --- a/concepts/aggressive-systemic-mastocytosis.html +++ b/concepts/aggressive-systemic-mastocytosis.html @@ -11,12 +11,12 @@ Aggressive Systemic Mastocytosis - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/aicr.html b/concepts/aicr.html index 403cea4c00..b80e8e7337 100644 --- a/concepts/aicr.html +++ b/concepts/aicr.html @@ -11,12 +11,12 @@ AICR - + - + @@ -393,7 +393,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/albert-b-chandler-hospital.html b/concepts/albert-b-chandler-hospital.html index 0a5e10fd93..45668ed389 100644 --- a/concepts/albert-b-chandler-hospital.html +++ b/concepts/albert-b-chandler-hospital.html @@ -11,12 +11,12 @@ Albert B. Chandler Hospital - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/alitretinoin.html b/concepts/alitretinoin.html index fcffc9c9fd..8f3cee06c2 100644 --- a/concepts/alitretinoin.html +++ b/concepts/alitretinoin.html @@ -11,12 +11,12 @@ Alitretinoin - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/alk-positive-large-b-cell-lymphoma.html b/concepts/alk-positive-large-b-cell-lymphoma.html index 439062991d..0cc365fe74 100644 --- a/concepts/alk-positive-large-b-cell-lymphoma.html +++ b/concepts/alk-positive-large-b-cell-lymphoma.html @@ -11,12 +11,12 @@ ALK Positive Large B-Cell Lymphoma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/alkaline-diet.html b/concepts/alkaline-diet.html index e247db1a51..9956aa2aca 100644 --- a/concepts/alkaline-diet.html +++ b/concepts/alkaline-diet.html @@ -11,12 +11,12 @@ Alkaline diet - + - + @@ -375,7 +375,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/all.html b/concepts/all.html index df690d8e71..9fbfa4549e 100644 --- a/concepts/all.html +++ b/concepts/all.html @@ -11,12 +11,12 @@ Acute lymphoblastic leukemia - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/alpha-heavy-chain-disease.html b/concepts/alpha-heavy-chain-disease.html index ab8f769877..3839e99643 100644 --- a/concepts/alpha-heavy-chain-disease.html +++ b/concepts/alpha-heavy-chain-disease.html @@ -11,12 +11,12 @@ Alpha Heavy-Chain Disease - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/altretamine.html b/concepts/altretamine.html index 23ce26a7a3..ce61686914 100644 --- a/concepts/altretamine.html +++ b/concepts/altretamine.html @@ -11,12 +11,12 @@ Altretamine - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/alveolar-rhabdomyosarcoma.html b/concepts/alveolar-rhabdomyosarcoma.html index 3d01bbe358..47f4112a7f 100644 --- a/concepts/alveolar-rhabdomyosarcoma.html +++ b/concepts/alveolar-rhabdomyosarcoma.html @@ -11,12 +11,12 @@ Alveolar Rhabdomyosarcoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/alveolar-soft-part-sarcoma.html b/concepts/alveolar-soft-part-sarcoma.html index 7cffd6c956..9923227785 100644 --- a/concepts/alveolar-soft-part-sarcoma.html +++ b/concepts/alveolar-soft-part-sarcoma.html @@ -11,12 +11,12 @@ Alveolar Soft Part Sarcoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/alvin-j-siteman-cancer-center.html b/concepts/alvin-j-siteman-cancer-center.html index 74b0e7ec54..cba726670b 100644 --- a/concepts/alvin-j-siteman-cancer-center.html +++ b/concepts/alvin-j-siteman-cancer-center.html @@ -11,12 +11,12 @@ Alvin J. Siteman Cancer Center - + - + @@ -395,7 +395,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/american-cancer-society.html b/concepts/american-cancer-society.html index 6cebd5fdc3..5240f8d8ea 100644 --- a/concepts/american-cancer-society.html +++ b/concepts/american-cancer-society.html @@ -11,12 +11,12 @@ American Cancer Society - + - + @@ -383,7 +383,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/american-liver-foundation.html b/concepts/american-liver-foundation.html index d3a81c7862..ba2a8270b3 100644 --- a/concepts/american-liver-foundation.html +++ b/concepts/american-liver-foundation.html @@ -11,12 +11,12 @@ American Liver Foundation - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/american-lung-association.html b/concepts/american-lung-association.html index 904c2a5f85..78d0e1114c 100644 --- a/concepts/american-lung-association.html +++ b/concepts/american-lung-association.html @@ -11,12 +11,12 @@ American Lung Association - + - + @@ -388,7 +388,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/amgen.html b/concepts/amgen.html index 89072f1ea8..b079f83dbd 100644 --- a/concepts/amgen.html +++ b/concepts/amgen.html @@ -11,12 +11,12 @@ Amgen - + - + @@ -378,7 +378,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/aml-megakaryoblastic-with-t122p13.3q13.3rbm15-mkl1.html b/concepts/aml-megakaryoblastic-with-t122p13.3q13.3rbm15-mkl1.html index c08254b57e..59a9845867 100644 --- a/concepts/aml-megakaryoblastic-with-t122p13.3q13.3rbm15-mkl1.html +++ b/concepts/aml-megakaryoblastic-with-t122p13.3q13.3rbm15-mkl1.html @@ -11,12 +11,12 @@ AML (megakaryoblastic) with t(1;22)(p13.3;q13.3);RBM15-MKL1 - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/aml-nos.html b/concepts/aml-nos.html index c8b5a5368d..7d94ecadce 100644 --- a/concepts/aml-nos.html +++ b/concepts/aml-nos.html @@ -11,12 +11,12 @@ AML, NOS - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/aml-with-bcr-abl1.html b/concepts/aml-with-bcr-abl1.html index ddf2200dcf..8a7ea5b961 100644 --- a/concepts/aml-with-bcr-abl1.html +++ b/concepts/aml-with-bcr-abl1.html @@ -11,12 +11,12 @@ AML with BCR-ABL1 - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/aml-with-biallelic-mutations-of-cebpa.html b/concepts/aml-with-biallelic-mutations-of-cebpa.html index 83bb67cd05..dd47bde14a 100644 --- a/concepts/aml-with-biallelic-mutations-of-cebpa.html +++ b/concepts/aml-with-biallelic-mutations-of-cebpa.html @@ -11,12 +11,12 @@ AML with Biallelic Mutations of CEBPA - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/aml-with-inv16p13.1q22-or-t1616p13.1q22cbfb-myh11.html b/concepts/aml-with-inv16p13.1q22-or-t1616p13.1q22cbfb-myh11.html index 1a2fba84f6..df9d78a6dd 100644 --- a/concepts/aml-with-inv16p13.1q22-or-t1616p13.1q22cbfb-myh11.html +++ b/concepts/aml-with-inv16p13.1q22-or-t1616p13.1q22cbfb-myh11.html @@ -11,12 +11,12 @@ AML with inv(16)(p13.1q22) or t(16;16)(p13.1;q22);CBFB-MYH11 - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/aml-with-inv3q21.3q26.2-or-t33q21.3q26.2-gata2-mecom.html b/concepts/aml-with-inv3q21.3q26.2-or-t33q21.3q26.2-gata2-mecom.html index 25bc23bf8f..9c4e8fd207 100644 --- a/concepts/aml-with-inv3q21.3q26.2-or-t33q21.3q26.2-gata2-mecom.html +++ b/concepts/aml-with-inv3q21.3q26.2-or-t33q21.3q26.2-gata2-mecom.html @@ -11,12 +11,12 @@ AML with inv(3)(q21.3q26.2) or t(3;3)(q21.3;q26.2); GATA2, MECOM - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/aml-with-maturation.html b/concepts/aml-with-maturation.html index 167a7e08ca..65fa23d5e9 100644 --- a/concepts/aml-with-maturation.html +++ b/concepts/aml-with-maturation.html @@ -11,12 +11,12 @@ AML with Maturation - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/aml-with-minimal-differentiation.html b/concepts/aml-with-minimal-differentiation.html index e44a5458b1..861d388336 100644 --- a/concepts/aml-with-minimal-differentiation.html +++ b/concepts/aml-with-minimal-differentiation.html @@ -11,12 +11,12 @@ AML with Minimal Differentiation - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/aml-with-mutated-npm1.html b/concepts/aml-with-mutated-npm1.html index 1492d80a75..20044a179c 100644 --- a/concepts/aml-with-mutated-npm1.html +++ b/concepts/aml-with-mutated-npm1.html @@ -11,12 +11,12 @@ AML with Mutated NPM1 - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/aml-with-mutated-runx1.html b/concepts/aml-with-mutated-runx1.html index 788424963e..be1938c248 100644 --- a/concepts/aml-with-mutated-runx1.html +++ b/concepts/aml-with-mutated-runx1.html @@ -11,12 +11,12 @@ AML with Mutated RUNX1 - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/aml-with-myelodysplasia-related-changes.html b/concepts/aml-with-myelodysplasia-related-changes.html index 1677ba05a2..a275da5021 100644 --- a/concepts/aml-with-myelodysplasia-related-changes.html +++ b/concepts/aml-with-myelodysplasia-related-changes.html @@ -11,12 +11,12 @@ AML with Myelodysplasia-Related Changes - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/aml-with-recurrent-genetic-abnormalities.html b/concepts/aml-with-recurrent-genetic-abnormalities.html index 9dd3848e74..3c4eabd718 100644 --- a/concepts/aml-with-recurrent-genetic-abnormalities.html +++ b/concepts/aml-with-recurrent-genetic-abnormalities.html @@ -11,12 +11,12 @@ AML with Recurrent Genetic Abnormalities - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/aml-with-t69p23q34.1dek-nup214.html b/concepts/aml-with-t69p23q34.1dek-nup214.html index 6772f9019b..25b40ef3af 100644 --- a/concepts/aml-with-t69p23q34.1dek-nup214.html +++ b/concepts/aml-with-t69p23q34.1dek-nup214.html @@ -11,12 +11,12 @@ AML with t(6;9)(p23;q34.1);DEK-NUP214 - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/aml-with-t821q22q22.1runx1-runx1t1.html b/concepts/aml-with-t821q22q22.1runx1-runx1t1.html index 612c6717b7..64d57be996 100644 --- a/concepts/aml-with-t821q22q22.1runx1-runx1t1.html +++ b/concepts/aml-with-t821q22q22.1runx1-runx1t1.html @@ -11,12 +11,12 @@ AML with t(8;21)(q22;q22.1);RUNX1-RUNX1T1 - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/aml-with-t911p21.3q23.3mllt3-kmt2a.html b/concepts/aml-with-t911p21.3q23.3mllt3-kmt2a.html index 73680211df..9e2023f9ba 100644 --- a/concepts/aml-with-t911p21.3q23.3mllt3-kmt2a.html +++ b/concepts/aml-with-t911p21.3q23.3mllt3-kmt2a.html @@ -11,12 +11,12 @@ AML with t(9;11)(p21.3;q23.3);MLLT3-KMT2A - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/aml-without-maturation.html b/concepts/aml-without-maturation.html index fe263c73af..05afb20271 100644 --- a/concepts/aml-without-maturation.html +++ b/concepts/aml-without-maturation.html @@ -11,12 +11,12 @@ AML without Maturation - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/ampulla-of-vater.html b/concepts/ampulla-of-vater.html index 35f281c7dc..86ad6048f9 100644 --- a/concepts/ampulla-of-vater.html +++ b/concepts/ampulla-of-vater.html @@ -11,12 +11,12 @@ Ampulla of Vater - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/ampullary-carcinoma.html b/concepts/ampullary-carcinoma.html index 16015d517e..d954818136 100644 --- a/concepts/ampullary-carcinoma.html +++ b/concepts/ampullary-carcinoma.html @@ -11,12 +11,12 @@ Ampullary Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/amyloidosis.html b/concepts/amyloidosis.html index 65085576be..6e4fc9613e 100644 --- a/concepts/amyloidosis.html +++ b/concepts/amyloidosis.html @@ -11,12 +11,12 @@ Amyloidosis - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/anal-gland-adenocarcinoma.html b/concepts/anal-gland-adenocarcinoma.html index 4349981273..ddf5d256ad 100644 --- a/concepts/anal-gland-adenocarcinoma.html +++ b/concepts/anal-gland-adenocarcinoma.html @@ -11,12 +11,12 @@ Anal Gland Adenocarcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/anal-squamous-cell-carcinoma.html b/concepts/anal-squamous-cell-carcinoma.html index dbb407cd5d..027153c112 100644 --- a/concepts/anal-squamous-cell-carcinoma.html +++ b/concepts/anal-squamous-cell-carcinoma.html @@ -11,12 +11,12 @@ Anal Squamous Cell Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/anaplastic-astrocytoma.html b/concepts/anaplastic-astrocytoma.html index 627e4a7176..444837c05d 100644 --- a/concepts/anaplastic-astrocytoma.html +++ b/concepts/anaplastic-astrocytoma.html @@ -11,12 +11,12 @@ Anaplastic Astrocytoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/anaplastic-ependymoma.html b/concepts/anaplastic-ependymoma.html index ceea752db4..a4177719ac 100644 --- a/concepts/anaplastic-ependymoma.html +++ b/concepts/anaplastic-ependymoma.html @@ -11,12 +11,12 @@ Anaplastic Ependymoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/anaplastic-ganglioglioma.html b/concepts/anaplastic-ganglioglioma.html index 2f1000ad1b..373a99198f 100644 --- a/concepts/anaplastic-ganglioglioma.html +++ b/concepts/anaplastic-ganglioglioma.html @@ -11,12 +11,12 @@ Anaplastic Ganglioglioma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/anaplastic-large-cell-lymphoma-alk-negative.html b/concepts/anaplastic-large-cell-lymphoma-alk-negative.html index 6e3a9a54e9..5dca922eaa 100644 --- a/concepts/anaplastic-large-cell-lymphoma-alk-negative.html +++ b/concepts/anaplastic-large-cell-lymphoma-alk-negative.html @@ -11,12 +11,12 @@ Anaplastic Large-Cell Lymphoma ALK Negative - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/anaplastic-large-cell-lymphoma-alk-positive.html b/concepts/anaplastic-large-cell-lymphoma-alk-positive.html index ade9974c05..f8401e7321 100644 --- a/concepts/anaplastic-large-cell-lymphoma-alk-positive.html +++ b/concepts/anaplastic-large-cell-lymphoma-alk-positive.html @@ -11,12 +11,12 @@ Anaplastic Large-Cell Lymphoma ALK Positive - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/anaplastic-large-cell-lymphoma.html b/concepts/anaplastic-large-cell-lymphoma.html index fb2f2377a3..3d76f1198b 100644 --- a/concepts/anaplastic-large-cell-lymphoma.html +++ b/concepts/anaplastic-large-cell-lymphoma.html @@ -11,12 +11,12 @@ Anaplastic Large Cell Lymphoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/anaplastic-meningioma.html b/concepts/anaplastic-meningioma.html index 614dd44f44..e43afaa943 100644 --- a/concepts/anaplastic-meningioma.html +++ b/concepts/anaplastic-meningioma.html @@ -11,12 +11,12 @@ Anaplastic Meningioma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/anaplastic-oligoastrocytoma.html b/concepts/anaplastic-oligoastrocytoma.html index cfceeb3410..28993a9585 100644 --- a/concepts/anaplastic-oligoastrocytoma.html +++ b/concepts/anaplastic-oligoastrocytoma.html @@ -11,12 +11,12 @@ Anaplastic Oligoastrocytoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/anaplastic-oligodendroglioma.html b/concepts/anaplastic-oligodendroglioma.html index 59e815fbec..c579fc5914 100644 --- a/concepts/anaplastic-oligodendroglioma.html +++ b/concepts/anaplastic-oligodendroglioma.html @@ -11,12 +11,12 @@ Anaplastic Oligodendroglioma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/anaplastic-pleomorphic-xanthoastrocytoma.html b/concepts/anaplastic-pleomorphic-xanthoastrocytoma.html index 18bedc8b4f..39f22c64d0 100644 --- a/concepts/anaplastic-pleomorphic-xanthoastrocytoma.html +++ b/concepts/anaplastic-pleomorphic-xanthoastrocytoma.html @@ -11,12 +11,12 @@ Anaplastic Pleomorphic Xanthoastrocytoma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/anaplastic-thyroid-cancer.html b/concepts/anaplastic-thyroid-cancer.html index 228cb5dfb5..35d8eb5323 100644 --- a/concepts/anaplastic-thyroid-cancer.html +++ b/concepts/anaplastic-thyroid-cancer.html @@ -11,12 +11,12 @@ Anaplastic Thyroid Cancer - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/angiocentric-glioma.html b/concepts/angiocentric-glioma.html index bdc65f86e3..7f60daf185 100644 --- a/concepts/angiocentric-glioma.html +++ b/concepts/angiocentric-glioma.html @@ -11,12 +11,12 @@ Angiocentric Glioma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/angioimmunoblastic-t-cell-lymphoma.html b/concepts/angioimmunoblastic-t-cell-lymphoma.html index d15750bd09..47a760bcf1 100644 --- a/concepts/angioimmunoblastic-t-cell-lymphoma.html +++ b/concepts/angioimmunoblastic-t-cell-lymphoma.html @@ -11,12 +11,12 @@ Angioimmunoblastic T-Cell Lymphoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/angiomatoid-fibrous-histiocytoma.html b/concepts/angiomatoid-fibrous-histiocytoma.html index b8ab6e9316..d4750f8a7f 100644 --- a/concepts/angiomatoid-fibrous-histiocytoma.html +++ b/concepts/angiomatoid-fibrous-histiocytoma.html @@ -11,12 +11,12 @@ Angiomatoid Fibrous Histiocytoma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/angiosarcoma.html b/concepts/angiosarcoma.html index 0f32655b95..7ad810bda0 100644 --- a/concepts/angiosarcoma.html +++ b/concepts/angiosarcoma.html @@ -11,12 +11,12 @@ Angiosarcoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/annals-of-oncology.html b/concepts/annals-of-oncology.html index afbf050c98..e4da3746e4 100644 --- a/concepts/annals-of-oncology.html +++ b/concepts/annals-of-oncology.html @@ -11,12 +11,12 @@ Annals of Oncology - + - + @@ -379,7 +379,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/anorectal-mucosal-melanoma.html b/concepts/anorectal-mucosal-melanoma.html index 01449de69a..a0619b0761 100644 --- a/concepts/anorectal-mucosal-melanoma.html +++ b/concepts/anorectal-mucosal-melanoma.html @@ -11,12 +11,12 @@ Anorectal Mucosal Melanoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/anticancer.html b/concepts/anticancer.html index 2fe5a7f940..12771ec99d 100644 --- a/concepts/anticancer.html +++ b/concepts/anticancer.html @@ -11,12 +11,12 @@ Anticancer: A New Way of Life - + - + @@ -376,7 +376,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/apl-with-pml-rara.html b/concepts/apl-with-pml-rara.html index f3a770b9ca..597a1f0e29 100644 --- a/concepts/apl-with-pml-rara.html +++ b/concepts/apl-with-pml-rara.html @@ -11,12 +11,12 @@ APL with PML-RARA - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/appendiceal-adenocarcinoma.html b/concepts/appendiceal-adenocarcinoma.html index 806eb51c6e..20207d6c76 100644 --- a/concepts/appendiceal-adenocarcinoma.html +++ b/concepts/appendiceal-adenocarcinoma.html @@ -11,12 +11,12 @@ Appendiceal Adenocarcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/argentina-ncc.html b/concepts/argentina-ncc.html index 3ecb216e7d..4bc8eb6dce 100644 --- a/concepts/argentina-ncc.html +++ b/concepts/argentina-ncc.html @@ -11,12 +11,12 @@ Instituto Nacional del Cáncer - + - + @@ -376,7 +376,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/arizona-cancer-center.html b/concepts/arizona-cancer-center.html index 8ee98ccb05..48a686cab8 100644 --- a/concepts/arizona-cancer-center.html +++ b/concepts/arizona-cancer-center.html @@ -11,12 +11,12 @@ Arizona Cancer Center - + - + @@ -390,7 +390,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/aromatherapy.html b/concepts/aromatherapy.html index 978c5d9f5c..6a92b0d773 100644 --- a/concepts/aromatherapy.html +++ b/concepts/aromatherapy.html @@ -11,12 +11,12 @@ Aromatherapy - + - + @@ -376,7 +376,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/arpha-h.html b/concepts/arpha-h.html index 5e153beaf7..5f42daf999 100644 --- a/concepts/arpha-h.html +++ b/concepts/arpha-h.html @@ -11,12 +11,12 @@ ARPA-H - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/asco.html b/concepts/asco.html index d8c8edcb36..d3ab469f22 100644 --- a/concepts/asco.html +++ b/concepts/asco.html @@ -11,12 +11,12 @@ ASCO - + - + @@ -381,7 +381,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/astrazeneca.html b/concepts/astrazeneca.html index ef6fcc9ef4..180b585b80 100644 --- a/concepts/astrazeneca.html +++ b/concepts/astrazeneca.html @@ -11,12 +11,12 @@ AstraZeneca - + - + @@ -379,7 +379,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/astroblastoma.html b/concepts/astroblastoma.html index 5fe3166d16..423da878d4 100644 --- a/concepts/astroblastoma.html +++ b/concepts/astroblastoma.html @@ -11,12 +11,12 @@ Astroblastoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/astrocytoma.html b/concepts/astrocytoma.html index c6164468c6..bda5247478 100644 --- a/concepts/astrocytoma.html +++ b/concepts/astrocytoma.html @@ -11,12 +11,12 @@ Astrocytoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/atezolizumab.html b/concepts/atezolizumab.html index 6c13b4385c..466c554aa2 100644 --- a/concepts/atezolizumab.html +++ b/concepts/atezolizumab.html @@ -11,12 +11,12 @@ Atezolizumab - + - + @@ -375,7 +375,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/atypical-choroid-plexus-papilloma.html b/concepts/atypical-choroid-plexus-papilloma.html index ff36571de7..964f0cd302 100644 --- a/concepts/atypical-choroid-plexus-papilloma.html +++ b/concepts/atypical-choroid-plexus-papilloma.html @@ -11,12 +11,12 @@ Atypical Choroid Plexus Papilloma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/atypical-chronic-myeloid-leukemia-bcr-abl1-.html b/concepts/atypical-chronic-myeloid-leukemia-bcr-abl1-.html index e052b6b43f..f71fff7310 100644 --- a/concepts/atypical-chronic-myeloid-leukemia-bcr-abl1-.html +++ b/concepts/atypical-chronic-myeloid-leukemia-bcr-abl1-.html @@ -11,12 +11,12 @@ Atypical Chronic Myeloid Leukemia, BCR-ABL1- - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/atypical-fibroxanthoma.html b/concepts/atypical-fibroxanthoma.html index 3e91d35bfc..a1a887e230 100644 --- a/concepts/atypical-fibroxanthoma.html +++ b/concepts/atypical-fibroxanthoma.html @@ -11,12 +11,12 @@ Atypical Fibroxanthoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/atypical-lung-carcinoid.html b/concepts/atypical-lung-carcinoid.html index 50c0c3d133..ed96d0b597 100644 --- a/concepts/atypical-lung-carcinoid.html +++ b/concepts/atypical-lung-carcinoid.html @@ -11,12 +11,12 @@ Atypical Lung Carcinoid - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/atypical-meningioma.html b/concepts/atypical-meningioma.html index 303f3a0560..4c14c3ac96 100644 --- a/concepts/atypical-meningioma.html +++ b/concepts/atypical-meningioma.html @@ -11,12 +11,12 @@ Atypical Meningioma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/atypical-nevus.html b/concepts/atypical-nevus.html index cac3c9cf17..a402a7ec83 100644 --- a/concepts/atypical-nevus.html +++ b/concepts/atypical-nevus.html @@ -11,12 +11,12 @@ Atypical Nevus - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/atypical-pituitary-adenoma.html b/concepts/atypical-pituitary-adenoma.html index 567158b556..3e6c2d9cf9 100644 --- a/concepts/atypical-pituitary-adenoma.html +++ b/concepts/atypical-pituitary-adenoma.html @@ -11,12 +11,12 @@ Atypical Pituitary Adenoma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/atypical-teratoid-rhabdoid-tumor.html b/concepts/atypical-teratoid-rhabdoid-tumor.html index 485d804195..a445250dbb 100644 --- a/concepts/atypical-teratoid-rhabdoid-tumor.html +++ b/concepts/atypical-teratoid-rhabdoid-tumor.html @@ -11,12 +11,12 @@ Atypical Teratoid/Rhabdoid Tumor - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/azacitidine.html b/concepts/azacitidine.html index 9c3225b49f..8d208ce445 100644 --- a/concepts/azacitidine.html +++ b/concepts/azacitidine.html @@ -11,12 +11,12 @@ Azacitidine - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/azathioprine.html b/concepts/azathioprine.html index 6b4d973cb2..d77f5f9c98 100644 --- a/concepts/azathioprine.html +++ b/concepts/azathioprine.html @@ -11,12 +11,12 @@ Azathioprine - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/b-cell-lymphoma-unclassifiable-with-features-intermediate-between-dlbcl-and-classical-hodgkin-lymphoma.html b/concepts/b-cell-lymphoma-unclassifiable-with-features-intermediate-between-dlbcl-and-classical-hodgkin-lymphoma.html index b0f7ee678b..decad4c9de 100644 --- a/concepts/b-cell-lymphoma-unclassifiable-with-features-intermediate-between-dlbcl-and-classical-hodgkin-lymphoma.html +++ b/concepts/b-cell-lymphoma-unclassifiable-with-features-intermediate-between-dlbcl-and-classical-hodgkin-lymphoma.html @@ -11,12 +11,12 @@ B-Cell Lymphoma, Unclassifiable, with Features Intermediate between DLBCL and Classical Hodgkin lymphoma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/b-cell-prolymphocytic-leukemia.html b/concepts/b-cell-prolymphocytic-leukemia.html index 2d59f0a44e..844724ac03 100644 --- a/concepts/b-cell-prolymphocytic-leukemia.html +++ b/concepts/b-cell-prolymphocytic-leukemia.html @@ -11,12 +11,12 @@ B-Cell Prolymphocytic Leukemia - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/b-lymphoblastic-leukemia-lymphoma-bcr-abl1-like.html b/concepts/b-lymphoblastic-leukemia-lymphoma-bcr-abl1-like.html index 0061ad6399..7ec01cb928 100644 --- a/concepts/b-lymphoblastic-leukemia-lymphoma-bcr-abl1-like.html +++ b/concepts/b-lymphoblastic-leukemia-lymphoma-bcr-abl1-like.html @@ -11,12 +11,12 @@ B-Lymphoblastic Leukemia/Lymphoma, BCR-ABL1 Like - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/b-lymphoblastic-leukemia-lymphoma-nos.html b/concepts/b-lymphoblastic-leukemia-lymphoma-nos.html index 726f3a5a1c..753f12ce45 100644 --- a/concepts/b-lymphoblastic-leukemia-lymphoma-nos.html +++ b/concepts/b-lymphoblastic-leukemia-lymphoma-nos.html @@ -11,12 +11,12 @@ B-Lymphoblastic Leukemia/Lymphoma, NOS - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/b-lymphoblastic-leukemia-lymphoma-with-hyperdiploidy.html b/concepts/b-lymphoblastic-leukemia-lymphoma-with-hyperdiploidy.html index 5c91261d6d..3d1dfed789 100644 --- a/concepts/b-lymphoblastic-leukemia-lymphoma-with-hyperdiploidy.html +++ b/concepts/b-lymphoblastic-leukemia-lymphoma-with-hyperdiploidy.html @@ -11,12 +11,12 @@ B-Lymphoblastic Leukemia/Lymphoma with Hyperdiploidy - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/b-lymphoblastic-leukemia-lymphoma-with-hypodiploidy.html b/concepts/b-lymphoblastic-leukemia-lymphoma-with-hypodiploidy.html index c6e065810d..bb455d8d03 100644 --- a/concepts/b-lymphoblastic-leukemia-lymphoma-with-hypodiploidy.html +++ b/concepts/b-lymphoblastic-leukemia-lymphoma-with-hypodiploidy.html @@ -11,12 +11,12 @@ B-Lymphoblastic Leukemia/Lymphoma with Hypodiploidy - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/b-lymphoblastic-leukemia-lymphoma-with-iamp21.html b/concepts/b-lymphoblastic-leukemia-lymphoma-with-iamp21.html index d11da5c2dd..cedb4ac957 100644 --- a/concepts/b-lymphoblastic-leukemia-lymphoma-with-iamp21.html +++ b/concepts/b-lymphoblastic-leukemia-lymphoma-with-iamp21.html @@ -11,12 +11,12 @@ B-Lymphoblastic Leukemia/Lymphoma with iAMP21 - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/b-lymphoblastic-leukemia-lymphoma-with-recurrent-genetic-abnormalities.html b/concepts/b-lymphoblastic-leukemia-lymphoma-with-recurrent-genetic-abnormalities.html index c8c49bdda7..a80d548127 100644 --- a/concepts/b-lymphoblastic-leukemia-lymphoma-with-recurrent-genetic-abnormalities.html +++ b/concepts/b-lymphoblastic-leukemia-lymphoma-with-recurrent-genetic-abnormalities.html @@ -11,12 +11,12 @@ B-Lymphoblastic Leukemia/Lymphoma with Recurrent Genetic Abnormalities - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/b-lymphoblastic-leukemia-lymphoma-with-t119q23p13.3tcf3-pbx1.html b/concepts/b-lymphoblastic-leukemia-lymphoma-with-t119q23p13.3tcf3-pbx1.html index d96ed99a76..55cf9fffaf 100644 --- a/concepts/b-lymphoblastic-leukemia-lymphoma-with-t119q23p13.3tcf3-pbx1.html +++ b/concepts/b-lymphoblastic-leukemia-lymphoma-with-t119q23p13.3tcf3-pbx1.html @@ -11,12 +11,12 @@ B-Lymphoblastic Leukemia/Lymphoma with t(1;19)(q23;p13.3);TCF3-PBX1 - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/b-lymphoblastic-leukemia-lymphoma-with-t1221p13.2q22.1-etv6-runx1.html b/concepts/b-lymphoblastic-leukemia-lymphoma-with-t1221p13.2q22.1-etv6-runx1.html index e67d9f33bf..889cd3c2bf 100644 --- a/concepts/b-lymphoblastic-leukemia-lymphoma-with-t1221p13.2q22.1-etv6-runx1.html +++ b/concepts/b-lymphoblastic-leukemia-lymphoma-with-t1221p13.2q22.1-etv6-runx1.html @@ -11,12 +11,12 @@ B-Lymphoblastic Leukemia/Lymphoma with t(12;21)(p13.2;q22.1); ETV6-RUNX1 - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/b-lymphoblastic-leukemia-lymphoma-with-t514q31.1q32.3-il3-igh.html b/concepts/b-lymphoblastic-leukemia-lymphoma-with-t514q31.1q32.3-il3-igh.html index 0781adc089..97dd729876 100644 --- a/concepts/b-lymphoblastic-leukemia-lymphoma-with-t514q31.1q32.3-il3-igh.html +++ b/concepts/b-lymphoblastic-leukemia-lymphoma-with-t514q31.1q32.3-il3-igh.html @@ -11,12 +11,12 @@ B-Lymphoblastic Leukemia/Lymphoma with t(5;14)(q31.1;q32.3) IL3-IGH - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/b-lymphoblastic-leukemia-lymphoma-with-t922q34.1q11.2bcr-abl1.html b/concepts/b-lymphoblastic-leukemia-lymphoma-with-t922q34.1q11.2bcr-abl1.html index 4331ccdfb8..ba024ba1c8 100644 --- a/concepts/b-lymphoblastic-leukemia-lymphoma-with-t922q34.1q11.2bcr-abl1.html +++ b/concepts/b-lymphoblastic-leukemia-lymphoma-with-t922q34.1q11.2bcr-abl1.html @@ -11,12 +11,12 @@ B-Lymphoblastic Leukemia/Lymphoma with t(9;22)(q34.1;q11.2);BCR-ABL1 - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/b-lymphoblastic-leukemia-lymphoma-with-tv11q23.3kmt2a-rearranged.html b/concepts/b-lymphoblastic-leukemia-lymphoma-with-tv11q23.3kmt2a-rearranged.html index eaaefe5169..727e1eaea0 100644 --- a/concepts/b-lymphoblastic-leukemia-lymphoma-with-tv11q23.3kmt2a-rearranged.html +++ b/concepts/b-lymphoblastic-leukemia-lymphoma-with-tv11q23.3kmt2a-rearranged.html @@ -11,12 +11,12 @@ B-Lymphoblastic Leukemia/Lymphoma with t(v;11q23.3);KMT2A Rearranged - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/b-lymphoblastic-leukemia-lymphoma.html b/concepts/b-lymphoblastic-leukemia-lymphoma.html index f167629ac7..833ed76f1a 100644 --- a/concepts/b-lymphoblastic-leukemia-lymphoma.html +++ b/concepts/b-lymphoblastic-leukemia-lymphoma.html @@ -11,12 +11,12 @@ B-Lymphoblastic Leukemia/Lymphoma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/basal-cell-carcinoma.html b/concepts/basal-cell-carcinoma.html index 5a45cf4e60..a50a3f3f35 100644 --- a/concepts/basal-cell-carcinoma.html +++ b/concepts/basal-cell-carcinoma.html @@ -11,12 +11,12 @@ Basal Cell Carcinoma - + - + @@ -389,7 +389,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/basaloid-large-cell-carcinoma-of-the-lung.html b/concepts/basaloid-large-cell-carcinoma-of-the-lung.html index 98bee23bc1..6bda6d3e5e 100644 --- a/concepts/basaloid-large-cell-carcinoma-of-the-lung.html +++ b/concepts/basaloid-large-cell-carcinoma-of-the-lung.html @@ -11,12 +11,12 @@ Basaloid Large Cell Carcinoma of the Lung - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/basaloid-penile-squamous-cell-carcinoma.html b/concepts/basaloid-penile-squamous-cell-carcinoma.html index 02a040cbc1..10a6702608 100644 --- a/concepts/basaloid-penile-squamous-cell-carcinoma.html +++ b/concepts/basaloid-penile-squamous-cell-carcinoma.html @@ -11,12 +11,12 @@ Basaloid Penile Squamous Cell Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/baxter.html b/concepts/baxter.html index 72b83f6388..2d14c532cf 100644 --- a/concepts/baxter.html +++ b/concepts/baxter.html @@ -11,12 +11,12 @@ Baxter International - + - + @@ -378,7 +378,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/bayer.html b/concepts/bayer.html index adaf3bf9f8..e19de5a5b2 100644 --- a/concepts/bayer.html +++ b/concepts/bayer.html @@ -11,12 +11,12 @@ Bayer - + - + @@ -376,7 +376,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/bbcr-ar.html b/concepts/bbcr-ar.html index b9300e0426..f424750542 100644 --- a/concepts/bbcr-ar.html +++ b/concepts/bbcr-ar.html @@ -11,12 +11,12 @@ BBCR - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/bccr-bn.html b/concepts/bccr-bn.html index 9c6db5587c..65016a3ff9 100644 --- a/concepts/bccr-bn.html +++ b/concepts/bccr-bn.html @@ -11,12 +11,12 @@ BCCR - + - + @@ -378,7 +378,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/bcrisktool.html b/concepts/bcrisktool.html index c1a92ac3a2..024091f6f9 100644 --- a/concepts/bcrisktool.html +++ b/concepts/bcrisktool.html @@ -11,12 +11,12 @@ Breast Cancer Risk Assessment Tool - + - + @@ -374,7 +374,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/becton-dickinson-and-company.html b/concepts/becton-dickinson-and-company.html index 78367ec7ae..e34bbae655 100644 --- a/concepts/becton-dickinson-and-company.html +++ b/concepts/becton-dickinson-and-company.html @@ -11,12 +11,12 @@ Becton, Dickinson and Company - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/beigene.html b/concepts/beigene.html index 8b9ce83c41..24c1b15799 100644 --- a/concepts/beigene.html +++ b/concepts/beigene.html @@ -11,12 +11,12 @@ BeiGene - + - + @@ -383,7 +383,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/being-mortal-medicine-and-what-matters-in-the-end.html b/concepts/being-mortal-medicine-and-what-matters-in-the-end.html index f34cefd2a5..e9d4822202 100644 --- a/concepts/being-mortal-medicine-and-what-matters-in-the-end.html +++ b/concepts/being-mortal-medicine-and-what-matters-in-the-end.html @@ -11,12 +11,12 @@ Being Mortal: Medicine and What Matters in the End - + - + @@ -375,7 +375,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/belotecan.html b/concepts/belotecan.html index a8fb391098..45b1363c92 100644 --- a/concepts/belotecan.html +++ b/concepts/belotecan.html @@ -11,12 +11,12 @@ Belotecan - + - + @@ -379,7 +379,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/bendamustine.html b/concepts/bendamustine.html index 4be1d053b2..f6863509fe 100644 --- a/concepts/bendamustine.html +++ b/concepts/bendamustine.html @@ -11,12 +11,12 @@ Bendamustine - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/benign-phyllodes-tumor-of-the-breast.html b/concepts/benign-phyllodes-tumor-of-the-breast.html index 77d8f949f8..b332029b1d 100644 --- a/concepts/benign-phyllodes-tumor-of-the-breast.html +++ b/concepts/benign-phyllodes-tumor-of-the-breast.html @@ -11,12 +11,12 @@ Benign Phyllodes Tumor of the Breast - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/beth-israel.html b/concepts/beth-israel.html index 2f4bfa23ea..66a435ba4b 100644 --- a/concepts/beth-israel.html +++ b/concepts/beth-israel.html @@ -11,12 +11,12 @@ Beth Israel Deaconess Medical Center - + - + @@ -383,7 +383,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/betrayed-by-nature-the-war-on-cancer.html b/concepts/betrayed-by-nature-the-war-on-cancer.html index 276d8c4f38..cee33eb690 100644 --- a/concepts/betrayed-by-nature-the-war-on-cancer.html +++ b/concepts/betrayed-by-nature-the-war-on-cancer.html @@ -11,12 +11,12 @@ Betrayed by Nature: The War on Cancer - + - + @@ -376,7 +376,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/bevacizumab.html b/concepts/bevacizumab.html index eb0980f99c..6fa27d4c96 100644 --- a/concepts/bevacizumab.html +++ b/concepts/bevacizumab.html @@ -11,12 +11,12 @@ Bevacizumab - + - + @@ -375,7 +375,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/bexarotene.html b/concepts/bexarotene.html index deff669703..9a7cb42ec1 100644 --- a/concepts/bexarotene.html +++ b/concepts/bexarotene.html @@ -11,12 +11,12 @@ Bexarotene - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/biliary-tract.html b/concepts/biliary-tract.html index 251f7cb8d8..c0d017968e 100644 --- a/concepts/biliary-tract.html +++ b/concepts/biliary-tract.html @@ -11,12 +11,12 @@ Biliary Tract - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/biogen.html b/concepts/biogen.html index 42eef0ea93..92faa3abec 100644 --- a/concepts/biogen.html +++ b/concepts/biogen.html @@ -11,12 +11,12 @@ Biogen - + - + @@ -381,7 +381,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/biontech.html b/concepts/biontech.html index d50baf7221..bf75c921e7 100644 --- a/concepts/biontech.html +++ b/concepts/biontech.html @@ -11,12 +11,12 @@ BioNTech - + - + @@ -378,7 +378,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/bladder-adenocarcinoma.html b/concepts/bladder-adenocarcinoma.html index ac4bdadfd5..1ed44ff1c6 100644 --- a/concepts/bladder-adenocarcinoma.html +++ b/concepts/bladder-adenocarcinoma.html @@ -11,12 +11,12 @@ Bladder Adenocarcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/bladder-cancer-subreddit.html b/concepts/bladder-cancer-subreddit.html index 7e85733646..c97d351358 100644 --- a/concepts/bladder-cancer-subreddit.html +++ b/concepts/bladder-cancer-subreddit.html @@ -11,12 +11,12 @@ Bladder Cancer Subreddit - + - + @@ -377,7 +377,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/bladder-cancer.html b/concepts/bladder-cancer.html index 12886c7113..b8a3b329e3 100644 --- a/concepts/bladder-cancer.html +++ b/concepts/bladder-cancer.html @@ -11,12 +11,12 @@ Bladder Cancer - + - + @@ -435,7 +435,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/bladder-squamous-cell-carcinoma.html b/concepts/bladder-squamous-cell-carcinoma.html index d2d5b7a1e6..c327c0f4be 100644 --- a/concepts/bladder-squamous-cell-carcinoma.html +++ b/concepts/bladder-squamous-cell-carcinoma.html @@ -11,12 +11,12 @@ Bladder Squamous Cell Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/bladder-urothelial-carcinoma.html b/concepts/bladder-urothelial-carcinoma.html index 3c9b14405e..4acd942a27 100644 --- a/concepts/bladder-urothelial-carcinoma.html +++ b/concepts/bladder-urothelial-carcinoma.html @@ -11,12 +11,12 @@ Bladder Urothelial Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/blastic-plasmacytoid-dendritic-cell-neoplasm.html b/concepts/blastic-plasmacytoid-dendritic-cell-neoplasm.html index 62e467b49e..c118914f25 100644 --- a/concepts/blastic-plasmacytoid-dendritic-cell-neoplasm.html +++ b/concepts/blastic-plasmacytoid-dendritic-cell-neoplasm.html @@ -11,12 +11,12 @@ Blastic Plasmacytoid Dendritic Cell Neoplasm - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/bleomycin.html b/concepts/bleomycin.html index 852e76cf3e..dcb83d2095 100644 --- a/concepts/bleomycin.html +++ b/concepts/bleomycin.html @@ -11,12 +11,12 @@ Bleomycin - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/bncr-bt.html b/concepts/bncr-bt.html index 9012e1e784..166fdfebee 100644 --- a/concepts/bncr-bt.html +++ b/concepts/bncr-bt.html @@ -11,12 +11,12 @@ BNCR - + - + @@ -378,7 +378,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/boehringer-ingelheim.html b/concepts/boehringer-ingelheim.html index a22931fedd..2dd2593b41 100644 --- a/concepts/boehringer-ingelheim.html +++ b/concepts/boehringer-ingelheim.html @@ -11,12 +11,12 @@ Boehringer Ingelheim - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/bone-marrow-and-cancer-foundation.html b/concepts/bone-marrow-and-cancer-foundation.html index 4e1bcd8205..f0674d6f57 100644 --- a/concepts/bone-marrow-and-cancer-foundation.html +++ b/concepts/bone-marrow-and-cancer-foundation.html @@ -11,12 +11,12 @@ Bone Marrow & Cancer Foundation - + - + @@ -378,7 +378,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/bone.html b/concepts/bone.html index f8ccf68cb8..98786a7dca 100644 --- a/concepts/bone.html +++ b/concepts/bone.html @@ -11,12 +11,12 @@ Bone Cancer - + - + @@ -384,7 +384,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/borderline-phyllodes-tumor-of-the-breast.html b/concepts/borderline-phyllodes-tumor-of-the-breast.html index 18675267a7..aba5dbc67d 100644 --- a/concepts/borderline-phyllodes-tumor-of-the-breast.html +++ b/concepts/borderline-phyllodes-tumor-of-the-breast.html @@ -11,12 +11,12 @@ Borderline Phyllodes Tumor of the Breast - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/bortezomib.html b/concepts/bortezomib.html index ed6fa5e728..5cc602fcf3 100644 --- a/concepts/bortezomib.html +++ b/concepts/bortezomib.html @@ -11,12 +11,12 @@ Bortezomib - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/brachytherapy.html b/concepts/brachytherapy.html index b3b10a5e44..e71b371d4e 100644 --- a/concepts/brachytherapy.html +++ b/concepts/brachytherapy.html @@ -11,12 +11,12 @@ Brachytherapy - + - + @@ -375,7 +375,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/brain.html b/concepts/brain.html index bdca57cb3d..63c9c1e5e5 100644 --- a/concepts/brain.html +++ b/concepts/brain.html @@ -11,12 +11,12 @@ Brain Cancer - + - + @@ -428,7 +428,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/breast-angiosarcoma.html b/concepts/breast-angiosarcoma.html index fddcabdf1b..4ec7966f97 100644 --- a/concepts/breast-angiosarcoma.html +++ b/concepts/breast-angiosarcoma.html @@ -11,12 +11,12 @@ Breast Angiosarcoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/breast-book.html b/concepts/breast-book.html index ffb89f4e0e..efb66b765c 100644 --- a/concepts/breast-book.html +++ b/concepts/breast-book.html @@ -11,12 +11,12 @@ Dr. Susan Love’s Breast Book - + - + @@ -377,7 +377,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/breast-cancer-awareness-month.html b/concepts/breast-cancer-awareness-month.html index 4427427896..0e4354aa85 100644 --- a/concepts/breast-cancer-awareness-month.html +++ b/concepts/breast-cancer-awareness-month.html @@ -11,12 +11,12 @@ Breast Cancer Awareness Month - + - + @@ -377,7 +377,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/breast-cancer-subreddit.html b/concepts/breast-cancer-subreddit.html index 2e9b726d13..9f24ee4601 100644 --- a/concepts/breast-cancer-subreddit.html +++ b/concepts/breast-cancer-subreddit.html @@ -11,12 +11,12 @@ Breast Cancer Subreddit - + - + @@ -377,7 +377,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/breast-carcinoma-with-signet-ring.html b/concepts/breast-carcinoma-with-signet-ring.html index bc24890840..8f9f03b0fc 100644 --- a/concepts/breast-carcinoma-with-signet-ring.html +++ b/concepts/breast-carcinoma-with-signet-ring.html @@ -11,12 +11,12 @@ Breast Carcinoma with Signet Ring - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/breast-ductal-carcinoma-in-situ.html b/concepts/breast-ductal-carcinoma-in-situ.html index e5738ad5f3..8a29871d9c 100644 --- a/concepts/breast-ductal-carcinoma-in-situ.html +++ b/concepts/breast-ductal-carcinoma-in-situ.html @@ -11,12 +11,12 @@ Breast Ductal Carcinoma In Situ - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/breast-fibroepithelial-neoplasms.html b/concepts/breast-fibroepithelial-neoplasms.html index 041c8f232e..25caafce00 100644 --- a/concepts/breast-fibroepithelial-neoplasms.html +++ b/concepts/breast-fibroepithelial-neoplasms.html @@ -11,12 +11,12 @@ Breast Fibroepithelial Neoplasms - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/breast-implant-associated-anaplastic-large-cell-lymphoma.html b/concepts/breast-implant-associated-anaplastic-large-cell-lymphoma.html index 57830d811a..e77e407af4 100644 --- a/concepts/breast-implant-associated-anaplastic-large-cell-lymphoma.html +++ b/concepts/breast-implant-associated-anaplastic-large-cell-lymphoma.html @@ -11,12 +11,12 @@ Breast Implant-Associated Anaplastic Large-Cell Lymphoma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/breast-invasive-cancer-nos.html b/concepts/breast-invasive-cancer-nos.html index 158675679b..cf4b02ca18 100644 --- a/concepts/breast-invasive-cancer-nos.html +++ b/concepts/breast-invasive-cancer-nos.html @@ -11,12 +11,12 @@ Breast Invasive Cancer, NOS - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/breast-invasive-carcinoma-nos.html b/concepts/breast-invasive-carcinoma-nos.html index 97f0cbb3ec..bd5200022d 100644 --- a/concepts/breast-invasive-carcinoma-nos.html +++ b/concepts/breast-invasive-carcinoma-nos.html @@ -11,12 +11,12 @@ Breast Invasive Carcinoma, NOS - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/breast-invasive-carcinosarcoma-nos.html b/concepts/breast-invasive-carcinosarcoma-nos.html index b7e37b425a..d6f328acbb 100644 --- a/concepts/breast-invasive-carcinosarcoma-nos.html +++ b/concepts/breast-invasive-carcinosarcoma-nos.html @@ -11,12 +11,12 @@ Breast Invasive Carcinosarcoma, NOS - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/breast-invasive-ductal-carcinoma.html b/concepts/breast-invasive-ductal-carcinoma.html index 72d95b22d2..d0045d5e78 100644 --- a/concepts/breast-invasive-ductal-carcinoma.html +++ b/concepts/breast-invasive-ductal-carcinoma.html @@ -11,12 +11,12 @@ Breast Invasive Ductal Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/breast-invasive-lobular-carcinoma.html b/concepts/breast-invasive-lobular-carcinoma.html index 8fecbfe881..eb83146f0e 100644 --- a/concepts/breast-invasive-lobular-carcinoma.html +++ b/concepts/breast-invasive-lobular-carcinoma.html @@ -11,12 +11,12 @@ Breast Invasive Lobular Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/breast-invasive-mixed-mucinous-carcinoma.html b/concepts/breast-invasive-mixed-mucinous-carcinoma.html index e8623b2fc0..6cf5487f66 100644 --- a/concepts/breast-invasive-mixed-mucinous-carcinoma.html +++ b/concepts/breast-invasive-mixed-mucinous-carcinoma.html @@ -11,12 +11,12 @@ Breast Invasive Mixed Mucinous Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/breast-lobular-carcinoma-in-situ.html b/concepts/breast-lobular-carcinoma-in-situ.html index 71da198f89..9818fd4182 100644 --- a/concepts/breast-lobular-carcinoma-in-situ.html +++ b/concepts/breast-lobular-carcinoma-in-situ.html @@ -11,12 +11,12 @@ Breast Lobular Carcinoma In Situ - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/breast-mixed-ductal-and-lobular-carcinoma.html b/concepts/breast-mixed-ductal-and-lobular-carcinoma.html index 149c6b8e0c..ceb5532350 100644 --- a/concepts/breast-mixed-ductal-and-lobular-carcinoma.html +++ b/concepts/breast-mixed-ductal-and-lobular-carcinoma.html @@ -11,12 +11,12 @@ Breast Mixed Ductal and Lobular Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/breast-neoplasm-nos.html b/concepts/breast-neoplasm-nos.html index 0c9b24d9af..648ed56f07 100644 --- a/concepts/breast-neoplasm-nos.html +++ b/concepts/breast-neoplasm-nos.html @@ -11,12 +11,12 @@ Breast Neoplasm, NOS - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/breast-prostheses.html b/concepts/breast-prostheses.html index 5cf16e3237..2fe43110c6 100644 --- a/concepts/breast-prostheses.html +++ b/concepts/breast-prostheses.html @@ -11,12 +11,12 @@ Breast Prosthesis - + - + @@ -375,7 +375,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/breast-sarcoma.html b/concepts/breast-sarcoma.html index 62d41f5c54..c17da7dfc7 100644 --- a/concepts/breast-sarcoma.html +++ b/concepts/breast-sarcoma.html @@ -11,12 +11,12 @@ Breast Sarcoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/breast.html b/concepts/breast.html index e292556669..d18ed077c9 100644 --- a/concepts/breast.html +++ b/concepts/breast.html @@ -11,12 +11,12 @@ Breast Cancer - + - + @@ -416,7 +416,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/breastcancer-dot-org.html b/concepts/breastcancer-dot-org.html index 55c6c71314..ad71af862c 100644 --- a/concepts/breastcancer-dot-org.html +++ b/concepts/breastcancer-dot-org.html @@ -11,12 +11,12 @@ Breastcancer.org - + - + @@ -389,7 +389,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/brenner-tumor-benign.html b/concepts/brenner-tumor-benign.html index a6bb4e414d..ae0faa7b14 100644 --- a/concepts/brenner-tumor-benign.html +++ b/concepts/brenner-tumor-benign.html @@ -11,12 +11,12 @@ Brenner Tumor, Benign - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/brenner-tumor-borderline.html b/concepts/brenner-tumor-borderline.html index 193bf7e55d..ffeee80a76 100644 --- a/concepts/brenner-tumor-borderline.html +++ b/concepts/brenner-tumor-borderline.html @@ -11,12 +11,12 @@ Brenner Tumor, Borderline - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/brenner-tumor-malignant.html b/concepts/brenner-tumor-malignant.html index 02243fbd25..6574f04415 100644 --- a/concepts/brenner-tumor-malignant.html +++ b/concepts/brenner-tumor-malignant.html @@ -11,12 +11,12 @@ Brenner Tumor, Malignant - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/brenner-tumor.html b/concepts/brenner-tumor.html index 5933d0093b..babe0d7d8b 100644 --- a/concepts/brenner-tumor.html +++ b/concepts/brenner-tumor.html @@ -11,12 +11,12 @@ Brenner Tumor - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/bristol-myers-squibb.html b/concepts/bristol-myers-squibb.html index ede0668b47..81c6d71842 100644 --- a/concepts/bristol-myers-squibb.html +++ b/concepts/bristol-myers-squibb.html @@ -11,12 +11,12 @@ Bristol Myers Squibb - + - + @@ -390,7 +390,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/burkitt-like-lymphoma-with-11q-aberration.html b/concepts/burkitt-like-lymphoma-with-11q-aberration.html index 3e0110ada0..00926890c5 100644 --- a/concepts/burkitt-like-lymphoma-with-11q-aberration.html +++ b/concepts/burkitt-like-lymphoma-with-11q-aberration.html @@ -11,12 +11,12 @@ Burkitt-Like Lymphoma with 11q Aberration - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/burkitt-lymphoma.html b/concepts/burkitt-lymphoma.html index c38ae2a660..364c2526fe 100644 --- a/concepts/burkitt-lymphoma.html +++ b/concepts/burkitt-lymphoma.html @@ -11,12 +11,12 @@ Burkitt Lymphoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/busulfan.html b/concepts/busulfan.html index c3a81e1342..f5c6a7df54 100644 --- a/concepts/busulfan.html +++ b/concepts/busulfan.html @@ -11,12 +11,12 @@ Busulfan - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/cabazitaxel.html b/concepts/cabazitaxel.html index dd81912a57..b920ebdae5 100644 --- a/concepts/cabazitaxel.html +++ b/concepts/cabazitaxel.html @@ -11,12 +11,12 @@ Cabazitaxel - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/cabozantinib.html b/concepts/cabozantinib.html index 4722aac272..c8f6e7e68b 100644 --- a/concepts/cabozantinib.html +++ b/concepts/cabozantinib.html @@ -11,12 +11,12 @@ Cabozantinib - + - + @@ -375,7 +375,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/camptothecin.html b/concepts/camptothecin.html index a7978a1a33..64a1c26b47 100644 --- a/concepts/camptothecin.html +++ b/concepts/camptothecin.html @@ -11,12 +11,12 @@ Camptothecin - + - + @@ -379,7 +379,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/canada-ccm.html b/concepts/canada-ccm.html index dd83ce04f0..bd7063cf95 100644 --- a/concepts/canada-ccm.html +++ b/concepts/canada-ccm.html @@ -11,12 +11,12 @@ CancerCare Manitoba - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/canada-ohcc.html b/concepts/canada-ohcc.html index fee6206395..edd07caaf0 100644 --- a/concepts/canada-ohcc.html +++ b/concepts/canada-ohcc.html @@ -11,12 +11,12 @@ The Ottawa Hospital Cancer Centre - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/canadian-cancer-society.html b/concepts/canadian-cancer-society.html index 3f4ba989d2..5da3685251 100644 --- a/concepts/canadian-cancer-society.html +++ b/concepts/canadian-cancer-society.html @@ -11,12 +11,12 @@ Canadian Cancer Society - + - + @@ -379,7 +379,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/canadian-partnership-against-cancer.html b/concepts/canadian-partnership-against-cancer.html index 87bf0d17d5..489f6c8f0f 100644 --- a/concepts/canadian-partnership-against-cancer.html +++ b/concepts/canadian-partnership-against-cancer.html @@ -11,12 +11,12 @@ Canadian Partnership Against Cancer - + - + @@ -384,7 +384,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/cancer-australia.html b/concepts/cancer-australia.html index 39d2e197ce..d61a874be9 100644 --- a/concepts/cancer-australia.html +++ b/concepts/cancer-australia.html @@ -11,12 +11,12 @@ Cancer Australia - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/cancer-cell-journal.html b/concepts/cancer-cell-journal.html index 8dccfa5347..da3d660688 100644 --- a/concepts/cancer-cell-journal.html +++ b/concepts/cancer-cell-journal.html @@ -11,12 +11,12 @@ Cancer Cell - + - + @@ -376,7 +376,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/cancer-council-australia.html b/concepts/cancer-council-australia.html index 46b81b8227..bbaa5aca8d 100644 --- a/concepts/cancer-council-australia.html +++ b/concepts/cancer-council-australia.html @@ -11,12 +11,12 @@ Cancer Council Australia - + - + @@ -383,7 +383,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/cancer-crackdown.html b/concepts/cancer-crackdown.html index de52d1aaa2..784deec612 100644 --- a/concepts/cancer-crackdown.html +++ b/concepts/cancer-crackdown.html @@ -11,12 +11,12 @@ Cancer Crackdown - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/cancer-cured-victory-over-the-war-on-cancer-book.html b/concepts/cancer-cured-victory-over-the-war-on-cancer-book.html index aa0863ba27..8134d7459f 100644 --- a/concepts/cancer-cured-victory-over-the-war-on-cancer-book.html +++ b/concepts/cancer-cured-victory-over-the-war-on-cancer-book.html @@ -11,12 +11,12 @@ Cancer Cured: Victory Over The War On Cancer - + - + @@ -376,7 +376,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/cancer-discovery.html b/concepts/cancer-discovery.html index e8e9684b87..3629c34945 100644 --- a/concepts/cancer-discovery.html +++ b/concepts/cancer-discovery.html @@ -11,12 +11,12 @@ Cancer Discovery - + - + @@ -379,7 +379,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/cancer-dot-net.html b/concepts/cancer-dot-net.html index 1d5bcb412e..115c38efd5 100644 --- a/concepts/cancer-dot-net.html +++ b/concepts/cancer-dot-net.html @@ -11,12 +11,12 @@ Cancer.net - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/cancer-is-not-a-disease-book.html b/concepts/cancer-is-not-a-disease-book.html index 45ac3cea12..f52b8d0031 100644 --- a/concepts/cancer-is-not-a-disease-book.html +++ b/concepts/cancer-is-not-a-disease-book.html @@ -11,12 +11,12 @@ Cancer Is Not a Disease - It's a Healing Mechanism - + - + @@ -377,7 +377,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/cancer-journal.html b/concepts/cancer-journal.html index 39e9833f3f..3f69765845 100644 --- a/concepts/cancer-journal.html +++ b/concepts/cancer-journal.html @@ -11,12 +11,12 @@ Cancer - + - + @@ -377,7 +377,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/cancer-of-unknown-primary-nos.html b/concepts/cancer-of-unknown-primary-nos.html index 4ff2078403..1fb4238799 100644 --- a/concepts/cancer-of-unknown-primary-nos.html +++ b/concepts/cancer-of-unknown-primary-nos.html @@ -11,12 +11,12 @@ Cancer of Unknown Primary, NOS - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/cancer-of-unknown-primary.html b/concepts/cancer-of-unknown-primary.html index 6f20e639be..0709672500 100644 --- a/concepts/cancer-of-unknown-primary.html +++ b/concepts/cancer-of-unknown-primary.html @@ -11,12 +11,12 @@ Cancer of Unknown Primary - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/cancer-research-journal.html b/concepts/cancer-research-journal.html index 439c587ddb..a93b09a5c7 100644 --- a/concepts/cancer-research-journal.html +++ b/concepts/cancer-research-journal.html @@ -11,12 +11,12 @@ Cancer Research Journal - + - + @@ -379,7 +379,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/cancer-research-uk.html b/concepts/cancer-research-uk.html index 742ea68792..70a33a396b 100644 --- a/concepts/cancer-research-uk.html +++ b/concepts/cancer-research-uk.html @@ -11,12 +11,12 @@ Cancer Research UK - + - + @@ -385,7 +385,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/cancer-risk-calculator.html b/concepts/cancer-risk-calculator.html index 5c020dbc40..872a81556e 100644 --- a/concepts/cancer-risk-calculator.html +++ b/concepts/cancer-risk-calculator.html @@ -11,12 +11,12 @@ Cancer Risk Calculator - + - + @@ -376,7 +376,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/cancer-society-of-finland.html b/concepts/cancer-society-of-finland.html index 0e9e36593f..bb4f742441 100644 --- a/concepts/cancer-society-of-finland.html +++ b/concepts/cancer-society-of-finland.html @@ -11,12 +11,12 @@ Cancer Society of Finland - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/cancer-statistics-center.html b/concepts/cancer-statistics-center.html index 3da2277337..9ed355101d 100644 --- a/concepts/cancer-statistics-center.html +++ b/concepts/cancer-statistics-center.html @@ -11,12 +11,12 @@ Cancer Statistics Center - + - + @@ -377,7 +377,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/cancer-subreddit.html b/concepts/cancer-subreddit.html index 1cbd7c9584..c7d56e8f4d 100644 --- a/concepts/cancer-subreddit.html +++ b/concepts/cancer-subreddit.html @@ -11,12 +11,12 @@ Cancer Subreddit - + - + @@ -376,7 +376,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/cancer-support-community.html b/concepts/cancer-support-community.html index 303580906a..11cf16afc1 100644 --- a/concepts/cancer-support-community.html +++ b/concepts/cancer-support-community.html @@ -11,12 +11,12 @@ Cancer Support Community - + - + @@ -388,7 +388,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/cancer-the-emperor-of-all-maladies.html b/concepts/cancer-the-emperor-of-all-maladies.html index 313024bfa7..977e6b3be6 100644 --- a/concepts/cancer-the-emperor-of-all-maladies.html +++ b/concepts/cancer-the-emperor-of-all-maladies.html @@ -11,12 +11,12 @@ Cancer: The Emperor of All Maladies - + - + @@ -378,7 +378,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/cancer-today.html b/concepts/cancer-today.html index 4a7f6a0ebe..e7e482d56f 100644 --- a/concepts/cancer-today.html +++ b/concepts/cancer-today.html @@ -11,12 +11,12 @@ Cancer Today - + - + @@ -383,7 +383,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/cancer-ward.html b/concepts/cancer-ward.html index 9ff116e416..26d22bd9b6 100644 --- a/concepts/cancer-ward.html +++ b/concepts/cancer-ward.html @@ -11,12 +11,12 @@ Cancer Ward - + - + @@ -375,7 +375,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/cancerbuddy.html b/concepts/cancerbuddy.html index a26f877f4c..12e19b38cf 100644 --- a/concepts/cancerbuddy.html +++ b/concepts/cancerbuddy.html @@ -11,12 +11,12 @@ CancerBuddy - + - + @@ -375,7 +375,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/cancercare.html b/concepts/cancercare.html index b555b657bf..bb570ebd33 100644 --- a/concepts/cancercare.html +++ b/concepts/cancercare.html @@ -11,12 +11,12 @@ CancerCare - + - + @@ -391,7 +391,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/cancerdb.html b/concepts/cancerdb.html index 173083c7e0..0d1b5b4618 100644 --- a/concepts/cancerdb.html +++ b/concepts/cancerdb.html @@ -11,12 +11,12 @@ CancerDB - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/cancerfonden.html b/concepts/cancerfonden.html index 951243fe1c..658dfdca24 100644 --- a/concepts/cancerfonden.html +++ b/concepts/cancerfonden.html @@ -11,12 +11,12 @@ Cancerfonden - + - + @@ -386,7 +386,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/canswer.html b/concepts/canswer.html index d8c52a89a6..8eb3a20128 100644 --- a/concepts/canswer.html +++ b/concepts/canswer.html @@ -11,12 +11,12 @@ CAnswer - + - + @@ -375,7 +375,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/capecitabine.html b/concepts/capecitabine.html index 7012575081..74059289d0 100644 --- a/concepts/capecitabine.html +++ b/concepts/capecitabine.html @@ -11,12 +11,12 @@ Capecitabine - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/carboplatin.html b/concepts/carboplatin.html index b90d1c3d83..8f5fa8fabe 100644 --- a/concepts/carboplatin.html +++ b/concepts/carboplatin.html @@ -11,12 +11,12 @@ Carboplatin - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/carboquone.html b/concepts/carboquone.html index c036de4f3f..87de93cca2 100644 --- a/concepts/carboquone.html +++ b/concepts/carboquone.html @@ -11,12 +11,12 @@ Carboquone - + - + @@ -377,7 +377,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/carcinoma-with-chondroid-metaplasia.html b/concepts/carcinoma-with-chondroid-metaplasia.html index 990fc5ca33..7b02cfee5c 100644 --- a/concepts/carcinoma-with-chondroid-metaplasia.html +++ b/concepts/carcinoma-with-chondroid-metaplasia.html @@ -11,12 +11,12 @@ Carcinoma with Chondroid Metaplasia - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/carcinoma-with-osseous-metaplasia.html b/concepts/carcinoma-with-osseous-metaplasia.html index 01ae8aca34..cde01dbc18 100644 --- a/concepts/carcinoma-with-osseous-metaplasia.html +++ b/concepts/carcinoma-with-osseous-metaplasia.html @@ -11,12 +11,12 @@ Carcinoma with Osseous Metaplasia - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/carmustine.html b/concepts/carmustine.html index ced523db50..423aa170e1 100644 --- a/concepts/carmustine.html +++ b/concepts/carmustine.html @@ -11,12 +11,12 @@ Carmustine - + - + @@ -381,7 +381,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/case-comprehensive-cancer-center.html b/concepts/case-comprehensive-cancer-center.html index 2ea296d88f..e715b699d7 100644 --- a/concepts/case-comprehensive-cancer-center.html +++ b/concepts/case-comprehensive-cancer-center.html @@ -11,12 +11,12 @@ Case Comprehensive Cancer Center - + - + @@ -392,7 +392,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/cbioportal.html b/concepts/cbioportal.html index 5476005f45..6460f4a82b 100644 --- a/concepts/cbioportal.html +++ b/concepts/cbioportal.html @@ -11,12 +11,12 @@ cBioPortal - + - + @@ -381,7 +381,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/ccan.html b/concepts/ccan.html index a10822deea..275945e4e8 100644 --- a/concepts/ccan.html +++ b/concepts/ccan.html @@ -11,12 +11,12 @@ C/Can - + - + @@ -384,7 +384,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/ccdi-annual-symposium.html b/concepts/ccdi-annual-symposium.html index 99b6182c0b..4d9ba0b2c6 100644 --- a/concepts/ccdi-annual-symposium.html +++ b/concepts/ccdi-annual-symposium.html @@ -11,12 +11,12 @@ CCDI Annual Symposium - + - + @@ -377,7 +377,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/ccdi.html b/concepts/ccdi.html index a1492a1683..eefafc59f7 100644 --- a/concepts/ccdi.html +++ b/concepts/ccdi.html @@ -11,12 +11,12 @@ CCDI - + - + @@ -379,7 +379,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/ccr-ar.html b/concepts/ccr-ar.html index a7b96021ee..17e30c1726 100644 --- a/concepts/ccr-ar.html +++ b/concepts/ccr-ar.html @@ -11,12 +11,12 @@ CCRAR - + - + @@ -379,7 +379,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/ccrcal.html b/concepts/ccrcal.html index bc99138145..87c411a7f0 100644 --- a/concepts/ccrcal.html +++ b/concepts/ccrcal.html @@ -11,12 +11,12 @@ California Cancer Registry - + - + @@ -381,7 +381,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/ccrisktool.html b/concepts/ccrisktool.html index 6038329b28..369c73e6a1 100644 --- a/concepts/ccrisktool.html +++ b/concepts/ccrisktool.html @@ -11,12 +11,12 @@ The Colorectal Cancer Risk Assessment Tool - + - + @@ -376,7 +376,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/ccrn-ng.html b/concepts/ccrn-ng.html index fee2ca3139..a57afec912 100644 --- a/concepts/ccrn-ng.html +++ b/concepts/ccrn-ng.html @@ -11,12 +11,12 @@ CCRN - + - + @@ -379,7 +379,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/cdc-division-of-cancer-prevention-and-control.html b/concepts/cdc-division-of-cancer-prevention-and-control.html index e7fb10c7c3..81126fcfb9 100644 --- a/concepts/cdc-division-of-cancer-prevention-and-control.html +++ b/concepts/cdc-division-of-cancer-prevention-and-control.html @@ -11,12 +11,12 @@ CDC Division of Cancer Prevention and Control - + - + @@ -378,7 +378,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/cdc.html b/concepts/cdc.html index 9208b4c705..d0f507ddb3 100644 --- a/concepts/cdc.html +++ b/concepts/cdc.html @@ -11,12 +11,12 @@ CDC - + - + @@ -387,7 +387,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/cedars-sinai.html b/concepts/cedars-sinai.html index d7d8709fce..f6bbe18c61 100644 --- a/concepts/cedars-sinai.html +++ b/concepts/cedars-sinai.html @@ -11,12 +11,12 @@ Cedars-Sinai Medical Center - + - + @@ -385,7 +385,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/cellular-schwannoma.html b/concepts/cellular-schwannoma.html index 582fe4487e..460b711e98 100644 --- a/concepts/cellular-schwannoma.html +++ b/concepts/cellular-schwannoma.html @@ -11,12 +11,12 @@ Cellular Schwannoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/center-for-molecular-oncology.html b/concepts/center-for-molecular-oncology.html index ba32a49186..df6492092c 100644 --- a/concepts/center-for-molecular-oncology.html +++ b/concepts/center-for-molecular-oncology.html @@ -11,12 +11,12 @@ Marie-Josée and Henry R. Kravis Center for Molecular Oncology - + - + @@ -375,7 +375,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/central-neurocytoma.html b/concepts/central-neurocytoma.html index 54b9c0be37..d150fe1e37 100644 --- a/concepts/central-neurocytoma.html +++ b/concepts/central-neurocytoma.html @@ -11,12 +11,12 @@ Central Neurocytoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/cerebellar-liponeurocytoma.html b/concepts/cerebellar-liponeurocytoma.html index 8c6a5971eb..c1e136a2fc 100644 --- a/concepts/cerebellar-liponeurocytoma.html +++ b/concepts/cerebellar-liponeurocytoma.html @@ -11,12 +11,12 @@ Cerebellar Liponeurocytoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/cervical-adenocarcinoma-in-situ.html b/concepts/cervical-adenocarcinoma-in-situ.html index 4fa57eaa94..f41f254eac 100644 --- a/concepts/cervical-adenocarcinoma-in-situ.html +++ b/concepts/cervical-adenocarcinoma-in-situ.html @@ -11,12 +11,12 @@ Cervical Adenocarcinoma In Situ - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/cervical-adenocarcinoma.html b/concepts/cervical-adenocarcinoma.html index 5bbc20ca4b..0fbaf585f9 100644 --- a/concepts/cervical-adenocarcinoma.html +++ b/concepts/cervical-adenocarcinoma.html @@ -11,12 +11,12 @@ Cervical Adenocarcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/cervical-adenoid-basal-carcinoma.html b/concepts/cervical-adenoid-basal-carcinoma.html index 09797001a1..712d5acb55 100644 --- a/concepts/cervical-adenoid-basal-carcinoma.html +++ b/concepts/cervical-adenoid-basal-carcinoma.html @@ -11,12 +11,12 @@ Cervical Adenoid Basal Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/cervical-adenoid-cystic-carcinoma.html b/concepts/cervical-adenoid-cystic-carcinoma.html index 91bc1d0979..1b393433e1 100644 --- a/concepts/cervical-adenoid-cystic-carcinoma.html +++ b/concepts/cervical-adenoid-cystic-carcinoma.html @@ -11,12 +11,12 @@ Cervical Adenoid Cystic Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/cervical-adenosquamous-carcinoma.html b/concepts/cervical-adenosquamous-carcinoma.html index 838d862c51..26673d68cd 100644 --- a/concepts/cervical-adenosquamous-carcinoma.html +++ b/concepts/cervical-adenosquamous-carcinoma.html @@ -11,12 +11,12 @@ Cervical Adenosquamous Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/cervical-cancer-subreddit.html b/concepts/cervical-cancer-subreddit.html index ce9b3d0325..8aaee0dd8f 100644 --- a/concepts/cervical-cancer-subreddit.html +++ b/concepts/cervical-cancer-subreddit.html @@ -11,12 +11,12 @@ Cervical Cancer Subreddit - + - + @@ -377,7 +377,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/cervical-clear-cell-carcinoma.html b/concepts/cervical-clear-cell-carcinoma.html index 135657cdd2..d034177fe4 100644 --- a/concepts/cervical-clear-cell-carcinoma.html +++ b/concepts/cervical-clear-cell-carcinoma.html @@ -11,12 +11,12 @@ Cervical Clear Cell Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/cervical-endometrioid-carcinoma.html b/concepts/cervical-endometrioid-carcinoma.html index 387e9d3dba..8e546e2123 100644 --- a/concepts/cervical-endometrioid-carcinoma.html +++ b/concepts/cervical-endometrioid-carcinoma.html @@ -11,12 +11,12 @@ Cervical Endometrioid Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/cervical-leiomyosarcoma.html b/concepts/cervical-leiomyosarcoma.html index f6891cad57..6a734b3e9d 100644 --- a/concepts/cervical-leiomyosarcoma.html +++ b/concepts/cervical-leiomyosarcoma.html @@ -11,12 +11,12 @@ Cervical Leiomyosarcoma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/cervical-neuroendocrine-tumor.html b/concepts/cervical-neuroendocrine-tumor.html index 69659d0c3b..c9994b4ca6 100644 --- a/concepts/cervical-neuroendocrine-tumor.html +++ b/concepts/cervical-neuroendocrine-tumor.html @@ -11,12 +11,12 @@ Cervical Neuroendocrine Tumor - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/cervical-rhabdomyosarcoma.html b/concepts/cervical-rhabdomyosarcoma.html index b2db6590d0..17d0ca2a59 100644 --- a/concepts/cervical-rhabdomyosarcoma.html +++ b/concepts/cervical-rhabdomyosarcoma.html @@ -11,12 +11,12 @@ Cervical Rhabdomyosarcoma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/cervical-serous-carcinoma.html b/concepts/cervical-serous-carcinoma.html index 262c15a8db..a85eb2d825 100644 --- a/concepts/cervical-serous-carcinoma.html +++ b/concepts/cervical-serous-carcinoma.html @@ -11,12 +11,12 @@ Cervical Serous Carcinoma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/cervical-squamous-cell-carcinoma.html b/concepts/cervical-squamous-cell-carcinoma.html index eb99fc8c58..826e7adc29 100644 --- a/concepts/cervical-squamous-cell-carcinoma.html +++ b/concepts/cervical-squamous-cell-carcinoma.html @@ -11,12 +11,12 @@ Cervical Squamous Cell Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/cervix.html b/concepts/cervix.html index 77b33123eb..7dedcaf46b 100644 --- a/concepts/cervix.html +++ b/concepts/cervix.html @@ -11,12 +11,12 @@ Cervical Cancer - + - + @@ -411,7 +411,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/chao-family-comprehensive-cancer-center.html b/concepts/chao-family-comprehensive-cancer-center.html index 05d0db7d42..38a5e9d0b9 100644 --- a/concepts/chao-family-comprehensive-cancer-center.html +++ b/concepts/chao-family-comprehensive-cancer-center.html @@ -11,12 +11,12 @@ Chao Family Comprehensive Cancer Center - + - + @@ -387,7 +387,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/chaos-and-cancers-theories-concerning-carcinogene.html b/concepts/chaos-and-cancers-theories-concerning-carcinogene.html index 463d6f8dee..a6089ba9c9 100644 --- a/concepts/chaos-and-cancers-theories-concerning-carcinogene.html +++ b/concepts/chaos-and-cancers-theories-concerning-carcinogene.html @@ -11,12 +11,12 @@ Chaos and cancers. Theories concerning carcinogenesis - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/chlorambucil.html b/concepts/chlorambucil.html index f08c26ac19..4dfb10dedd 100644 --- a/concepts/chlorambucil.html +++ b/concepts/chlorambucil.html @@ -11,12 +11,12 @@ Chlorambucil - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/chlormethine.html b/concepts/chlormethine.html index 30844dcce9..b4dd8d7af6 100644 --- a/concepts/chlormethine.html +++ b/concepts/chlormethine.html @@ -11,12 +11,12 @@ Chlormethine - + - + @@ -379,7 +379,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/chlorozotocin.html b/concepts/chlorozotocin.html index 43aea6f61d..70c0f2131f 100644 --- a/concepts/chlorozotocin.html +++ b/concepts/chlorozotocin.html @@ -11,12 +11,12 @@ Chlorozotocin - + - + @@ -378,7 +378,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/cholangiocarcinoma.html b/concepts/cholangiocarcinoma.html index 8b82a6ece0..753d6e14df 100644 --- a/concepts/cholangiocarcinoma.html +++ b/concepts/cholangiocarcinoma.html @@ -11,12 +11,12 @@ Cholangiocarcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/chondroblastic-osteosarcoma.html b/concepts/chondroblastic-osteosarcoma.html index a5fc127af2..9e672222bf 100644 --- a/concepts/chondroblastic-osteosarcoma.html +++ b/concepts/chondroblastic-osteosarcoma.html @@ -11,12 +11,12 @@ Chondroblastic Osteosarcoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/chondroblastoma.html b/concepts/chondroblastoma.html index 0357f539e4..3e31799dcc 100644 --- a/concepts/chondroblastoma.html +++ b/concepts/chondroblastoma.html @@ -11,12 +11,12 @@ Chondroblastoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/chondrosarcoma.html b/concepts/chondrosarcoma.html index b805b3618c..e9952d52cf 100644 --- a/concepts/chondrosarcoma.html +++ b/concepts/chondrosarcoma.html @@ -11,12 +11,12 @@ Chondrosarcoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/chordoid-glioma-of-the-third-ventricle.html b/concepts/chordoid-glioma-of-the-third-ventricle.html index 313c4ae6f2..842d962594 100644 --- a/concepts/chordoid-glioma-of-the-third-ventricle.html +++ b/concepts/chordoid-glioma-of-the-third-ventricle.html @@ -11,12 +11,12 @@ Chordoid Glioma of the Third Ventricle - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/chordoid-meningioma.html b/concepts/chordoid-meningioma.html index 9f3371d3ee..da82d42939 100644 --- a/concepts/chordoid-meningioma.html +++ b/concepts/chordoid-meningioma.html @@ -11,12 +11,12 @@ Chordoid Meningioma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/chordoma.html b/concepts/chordoma.html index 06a891fa16..d72aa762a8 100644 --- a/concepts/chordoma.html +++ b/concepts/chordoma.html @@ -11,12 +11,12 @@ Chordoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/choriocarcinoma-testis.html b/concepts/choriocarcinoma-testis.html index 8bba935ec1..b63eb2561f 100644 --- a/concepts/choriocarcinoma-testis.html +++ b/concepts/choriocarcinoma-testis.html @@ -11,12 +11,12 @@ Choriocarcinoma Testis - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/choriocarcinoma-uterus.html b/concepts/choriocarcinoma-uterus.html index 189b678cc2..9db6b24d11 100644 --- a/concepts/choriocarcinoma-uterus.html +++ b/concepts/choriocarcinoma-uterus.html @@ -11,12 +11,12 @@ Choriocarcinoma Uterus - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/choriocarcinoma.html b/concepts/choriocarcinoma.html index ea4e368523..a1132571d0 100644 --- a/concepts/choriocarcinoma.html +++ b/concepts/choriocarcinoma.html @@ -11,12 +11,12 @@ Choriocarcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/choroid-plexus-carcinoma.html b/concepts/choroid-plexus-carcinoma.html index 382514b464..84d14ee795 100644 --- a/concepts/choroid-plexus-carcinoma.html +++ b/concepts/choroid-plexus-carcinoma.html @@ -11,12 +11,12 @@ Choroid Plexus Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/choroid-plexus-papilloma.html b/concepts/choroid-plexus-papilloma.html index 09c7eb60c6..adcc491278 100644 --- a/concepts/choroid-plexus-papilloma.html +++ b/concepts/choroid-plexus-papilloma.html @@ -11,12 +11,12 @@ Choroid Plexus Papilloma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/choroid-plexus-tumor.html b/concepts/choroid-plexus-tumor.html index 798e471041..33c50225dd 100644 --- a/concepts/choroid-plexus-tumor.html +++ b/concepts/choroid-plexus-tumor.html @@ -11,12 +11,12 @@ Choroid Plexus Tumor - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/chris-beat-cancer.html b/concepts/chris-beat-cancer.html index 9dc14012c9..5c3d0c65d7 100644 --- a/concepts/chris-beat-cancer.html +++ b/concepts/chris-beat-cancer.html @@ -11,12 +11,12 @@ Chris Beat Cancer - + - + @@ -381,7 +381,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/chromophobe-renal-cell-carcinoma.html b/concepts/chromophobe-renal-cell-carcinoma.html index f3f7ce83f7..8bd24924f0 100644 --- a/concepts/chromophobe-renal-cell-carcinoma.html +++ b/concepts/chromophobe-renal-cell-carcinoma.html @@ -11,12 +11,12 @@ Chromophobe Renal Cell Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/chronic-eosinophilic-leukemia-nos.html b/concepts/chronic-eosinophilic-leukemia-nos.html index 4cdcd3ab43..7f18c4a086 100644 --- a/concepts/chronic-eosinophilic-leukemia-nos.html +++ b/concepts/chronic-eosinophilic-leukemia-nos.html @@ -11,12 +11,12 @@ Chronic Eosinophilic Leukemia, NOS - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/chronic-lymphocytic-leukemia-small-lymphocytic-lymphoma.html b/concepts/chronic-lymphocytic-leukemia-small-lymphocytic-lymphoma.html index e985ac44a1..7b9e673699 100644 --- a/concepts/chronic-lymphocytic-leukemia-small-lymphocytic-lymphoma.html +++ b/concepts/chronic-lymphocytic-leukemia-small-lymphocytic-lymphoma.html @@ -11,12 +11,12 @@ Chronic Lymphocytic Leukemia/Small Lymphocytic Lymphoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/chronic-lymphoproliferative-disorder-of-nk-cells.html b/concepts/chronic-lymphoproliferative-disorder-of-nk-cells.html index 6755db2710..f602cc2897 100644 --- a/concepts/chronic-lymphoproliferative-disorder-of-nk-cells.html +++ b/concepts/chronic-lymphoproliferative-disorder-of-nk-cells.html @@ -11,12 +11,12 @@ Chronic Lymphoproliferative Disorder of NK Cells - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/chronic-myelogenous-leukemia.html b/concepts/chronic-myelogenous-leukemia.html index b7e34359df..13410d8f60 100644 --- a/concepts/chronic-myelogenous-leukemia.html +++ b/concepts/chronic-myelogenous-leukemia.html @@ -11,12 +11,12 @@ Chronic Myelogenous Leukemia - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/chronic-myeloid-leukemia-bcr-abl1p.html b/concepts/chronic-myeloid-leukemia-bcr-abl1p.html index 50d637775b..5441f20479 100644 --- a/concepts/chronic-myeloid-leukemia-bcr-abl1p.html +++ b/concepts/chronic-myeloid-leukemia-bcr-abl1p.html @@ -11,12 +11,12 @@ Chronic Myeloid Leukemia, BCR-ABL1+ - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/chronic-myelomonocytic-leukemia-0.html b/concepts/chronic-myelomonocytic-leukemia-0.html index a5aa6b361d..c9219d009c 100644 --- a/concepts/chronic-myelomonocytic-leukemia-0.html +++ b/concepts/chronic-myelomonocytic-leukemia-0.html @@ -11,12 +11,12 @@ Chronic Myelomonocytic Leukemia-0 - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/chronic-myelomonocytic-leukemia-1.html b/concepts/chronic-myelomonocytic-leukemia-1.html index 33dfce170b..b29f99bea4 100644 --- a/concepts/chronic-myelomonocytic-leukemia-1.html +++ b/concepts/chronic-myelomonocytic-leukemia-1.html @@ -11,12 +11,12 @@ Chronic Myelomonocytic Leukemia-1 - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/chronic-myelomonocytic-leukemia-2.html b/concepts/chronic-myelomonocytic-leukemia-2.html index a0e01e3281..6c8513a587 100644 --- a/concepts/chronic-myelomonocytic-leukemia-2.html +++ b/concepts/chronic-myelomonocytic-leukemia-2.html @@ -11,12 +11,12 @@ Chronic Myelomonocytic Leukemia-2 - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/chronic-myelomonocytic-leukemia.html b/concepts/chronic-myelomonocytic-leukemia.html index 57f8b16bcc..2aed1dec64 100644 --- a/concepts/chronic-myelomonocytic-leukemia.html +++ b/concepts/chronic-myelomonocytic-leukemia.html @@ -11,12 +11,12 @@ Chronic Myelomonocytic Leukemia - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/chronic-neutrophilic-leukemia.html b/concepts/chronic-neutrophilic-leukemia.html index 9a9f648dfc..d1619e13d5 100644 --- a/concepts/chronic-neutrophilic-leukemia.html +++ b/concepts/chronic-neutrophilic-leukemia.html @@ -11,12 +11,12 @@ Chronic Neutrophilic Leukemia - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/ciliated-muconodular-papillary-tumor-of-the-lung.html b/concepts/ciliated-muconodular-papillary-tumor-of-the-lung.html index a0a3ad84cc..495ef7f0e0 100644 --- a/concepts/ciliated-muconodular-papillary-tumor-of-the-lung.html +++ b/concepts/ciliated-muconodular-papillary-tumor-of-the-lung.html @@ -11,12 +11,12 @@ Ciliated Muconodular Papillary Tumor of the Lung - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/cirm.html b/concepts/cirm.html index 7e2545f356..71197b5ed7 100644 --- a/concepts/cirm.html +++ b/concepts/cirm.html @@ -11,12 +11,12 @@ CIRM - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/cisplatin.html b/concepts/cisplatin.html index 1ae88088e8..e1fcfca198 100644 --- a/concepts/cisplatin.html +++ b/concepts/cisplatin.html @@ -11,12 +11,12 @@ Cisplatin - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/city-of-hope-comprehensive-cancer-center.html b/concepts/city-of-hope-comprehensive-cancer-center.html index 45298420e2..8fc26c591e 100644 --- a/concepts/city-of-hope-comprehensive-cancer-center.html +++ b/concepts/city-of-hope-comprehensive-cancer-center.html @@ -11,12 +11,12 @@ City of Hope Comprehensive Cancer Center - + - + @@ -391,7 +391,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/city-of-hope-patient-and-family-education-library.html b/concepts/city-of-hope-patient-and-family-education-library.html index 7e862178e1..56c37e4f69 100644 --- a/concepts/city-of-hope-patient-and-family-education-library.html +++ b/concepts/city-of-hope-patient-and-family-education-library.html @@ -11,12 +11,12 @@ City of Hope Patient and Family Education Library - + - + @@ -376,7 +376,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/classical-hodgkin-lymphoma-ptld.html b/concepts/classical-hodgkin-lymphoma-ptld.html index 1e5b7549af..36b2e7f2c4 100644 --- a/concepts/classical-hodgkin-lymphoma-ptld.html +++ b/concepts/classical-hodgkin-lymphoma-ptld.html @@ -11,12 +11,12 @@ Classical Hodgkin Lymphoma PTLD - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/classical-hodgkin-lymphoma.html b/concepts/classical-hodgkin-lymphoma.html index f2b9f4ed58..b456c926c5 100644 --- a/concepts/classical-hodgkin-lymphoma.html +++ b/concepts/classical-hodgkin-lymphoma.html @@ -11,12 +11,12 @@ Classical Hodgkin Lymphoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/clear-cell-borderline-ovarian-tumor.html b/concepts/clear-cell-borderline-ovarian-tumor.html index 8da0aea6df..1e35e5236a 100644 --- a/concepts/clear-cell-borderline-ovarian-tumor.html +++ b/concepts/clear-cell-borderline-ovarian-tumor.html @@ -11,12 +11,12 @@ Clear Cell Borderline Ovarian Tumor - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/clear-cell-carcinoma-of-the-lung.html b/concepts/clear-cell-carcinoma-of-the-lung.html index 0f03214941..a2f3951411 100644 --- a/concepts/clear-cell-carcinoma-of-the-lung.html +++ b/concepts/clear-cell-carcinoma-of-the-lung.html @@ -11,12 +11,12 @@ Clear Cell Carcinoma of the Lung - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/clear-cell-ependymoma.html b/concepts/clear-cell-ependymoma.html index 054597e21d..833c3da2f9 100644 --- a/concepts/clear-cell-ependymoma.html +++ b/concepts/clear-cell-ependymoma.html @@ -11,12 +11,12 @@ Clear Cell Ependymoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/clear-cell-meningioma.html b/concepts/clear-cell-meningioma.html index 46f4c3f931..774fb3637e 100644 --- a/concepts/clear-cell-meningioma.html +++ b/concepts/clear-cell-meningioma.html @@ -11,12 +11,12 @@ Clear cell Meningioma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/clear-cell-odontogenic-carcinoma.html b/concepts/clear-cell-odontogenic-carcinoma.html index d80bf337ad..4bb70a8cfa 100644 --- a/concepts/clear-cell-odontogenic-carcinoma.html +++ b/concepts/clear-cell-odontogenic-carcinoma.html @@ -11,12 +11,12 @@ Clear Cell Odontogenic Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/clear-cell-ovarian-cancer.html b/concepts/clear-cell-ovarian-cancer.html index fa216bacc7..416b75f93b 100644 --- a/concepts/clear-cell-ovarian-cancer.html +++ b/concepts/clear-cell-ovarian-cancer.html @@ -11,12 +11,12 @@ Clear Cell Ovarian Cancer - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/clear-cell-papillary-renal-cell-carcinoma.html b/concepts/clear-cell-papillary-renal-cell-carcinoma.html index 885efd1e41..dff02bd8e2 100644 --- a/concepts/clear-cell-papillary-renal-cell-carcinoma.html +++ b/concepts/clear-cell-papillary-renal-cell-carcinoma.html @@ -11,12 +11,12 @@ Clear Cell Papillary Renal Cell Carcinoma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/clear-cell-sarcoma-of-kidney.html b/concepts/clear-cell-sarcoma-of-kidney.html index 48822023e3..fee37aacdb 100644 --- a/concepts/clear-cell-sarcoma-of-kidney.html +++ b/concepts/clear-cell-sarcoma-of-kidney.html @@ -11,12 +11,12 @@ Clear Cell Sarcoma of Kidney - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/clear-cell-sarcoma.html b/concepts/clear-cell-sarcoma.html index 0f5e28cae1..72fdad500f 100644 --- a/concepts/clear-cell-sarcoma.html +++ b/concepts/clear-cell-sarcoma.html @@ -11,12 +11,12 @@ Clear Cell Sarcoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/cleveland-clinic.html b/concepts/cleveland-clinic.html index 3b2496ee55..955fb5d210 100644 --- a/concepts/cleveland-clinic.html +++ b/concepts/cleveland-clinic.html @@ -11,12 +11,12 @@ Cleveland Clinic - + - + @@ -392,7 +392,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/clinical-cancer-research.html b/concepts/clinical-cancer-research.html index 8396c765f3..743ae8c0ad 100644 --- a/concepts/clinical-cancer-research.html +++ b/concepts/clinical-cancer-research.html @@ -11,12 +11,12 @@ Clinical Cancer Research - + - + @@ -379,7 +379,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/clinical-trials-dot-gov.html b/concepts/clinical-trials-dot-gov.html index 51895f202c..a89e32e118 100644 --- a/concepts/clinical-trials-dot-gov.html +++ b/concepts/clinical-trials-dot-gov.html @@ -11,12 +11,12 @@ ClinicalTrials.gov - + - + @@ -378,7 +378,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/cms.html b/concepts/cms.html index 96363bcbd2..a22943a965 100644 --- a/concepts/cms.html +++ b/concepts/cms.html @@ -11,12 +11,12 @@ The Centers for Medicare and Medicaid Services - + - + @@ -386,7 +386,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/cnio.html b/concepts/cnio.html index 298bd03e0a..74aedf7078 100644 --- a/concepts/cnio.html +++ b/concepts/cnio.html @@ -11,12 +11,12 @@ Spanish National Cancer Research Center - + - + @@ -384,7 +384,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/coc.html b/concepts/coc.html index e81c676a80..5419e4c333 100644 --- a/concepts/coc.html +++ b/concepts/coc.html @@ -11,12 +11,12 @@ CoC - + - + @@ -377,7 +377,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/cocr-ar.html b/concepts/cocr-ar.html index 648e0bd583..225b62149d 100644 --- a/concepts/cocr-ar.html +++ b/concepts/cocr-ar.html @@ -11,12 +11,12 @@ COCR - + - + @@ -379,7 +379,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/cognitive-behavioral-therapy.html b/concepts/cognitive-behavioral-therapy.html index e1f915a63f..4001aa80b1 100644 --- a/concepts/cognitive-behavioral-therapy.html +++ b/concepts/cognitive-behavioral-therapy.html @@ -11,12 +11,12 @@ Cognitive behavioral therapy - + - + @@ -375,7 +375,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/cold-spring-harbor-laboratory-cancer-center.html b/concepts/cold-spring-harbor-laboratory-cancer-center.html index 33c8b682d9..e5748ec9a4 100644 --- a/concepts/cold-spring-harbor-laboratory-cancer-center.html +++ b/concepts/cold-spring-harbor-laboratory-cancer-center.html @@ -11,12 +11,12 @@ Cold Spring Harbor Laboratory Cancer Center - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/colectomy.html b/concepts/colectomy.html index 992dbbd3f9..fb630d2294 100644 --- a/concepts/colectomy.html +++ b/concepts/colectomy.html @@ -11,12 +11,12 @@ Colectomy - + - + @@ -376,7 +376,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/collecting-duct-renal-cell-carcinoma.html b/concepts/collecting-duct-renal-cell-carcinoma.html index d576837107..59000916aa 100644 --- a/concepts/collecting-duct-renal-cell-carcinoma.html +++ b/concepts/collecting-duct-renal-cell-carcinoma.html @@ -11,12 +11,12 @@ Collecting Duct Renal Cell Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/college-of-american-pathologists.html b/concepts/college-of-american-pathologists.html index de497a030e..1a9d463e62 100644 --- a/concepts/college-of-american-pathologists.html +++ b/concepts/college-of-american-pathologists.html @@ -11,12 +11,12 @@ College of American Pathologists - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/colon-adenocarcinoma-in-situ.html b/concepts/colon-adenocarcinoma-in-situ.html index 58d5e5f102..dc9cb77f44 100644 --- a/concepts/colon-adenocarcinoma-in-situ.html +++ b/concepts/colon-adenocarcinoma-in-situ.html @@ -11,12 +11,12 @@ Colon Adenocarcinoma In Situ - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/colon-adenocarcinoma.html b/concepts/colon-adenocarcinoma.html index c6eb3aa6e2..4d8189dbc1 100644 --- a/concepts/colon-adenocarcinoma.html +++ b/concepts/colon-adenocarcinoma.html @@ -11,12 +11,12 @@ Colon Adenocarcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/colon-cancer-subreddit.html b/concepts/colon-cancer-subreddit.html index 5a661b7147..77505d7049 100644 --- a/concepts/colon-cancer-subreddit.html +++ b/concepts/colon-cancer-subreddit.html @@ -11,12 +11,12 @@ Colon Cancer Subreddit - + - + @@ -377,7 +377,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/colon.html b/concepts/colon.html index 8a1f90cedb..596460f040 100644 --- a/concepts/colon.html +++ b/concepts/colon.html @@ -11,12 +11,12 @@ Colon Cancer - + - + @@ -432,7 +432,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/colonic-type-adenocarcinoma-of-the-appendix.html b/concepts/colonic-type-adenocarcinoma-of-the-appendix.html index 43b66be0b6..0903274650 100644 --- a/concepts/colonic-type-adenocarcinoma-of-the-appendix.html +++ b/concepts/colonic-type-adenocarcinoma-of-the-appendix.html @@ -11,12 +11,12 @@ Colonic Type Adenocarcinoma of the Appendix - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/colonoscopy.html b/concepts/colonoscopy.html index 0032b78f21..d261833404 100644 --- a/concepts/colonoscopy.html +++ b/concepts/colonoscopy.html @@ -11,12 +11,12 @@ Colonoscopy - + - + @@ -378,7 +378,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/colorectal-adenocarcinoma.html b/concepts/colorectal-adenocarcinoma.html index 693561df45..65f05d94b4 100644 --- a/concepts/colorectal-adenocarcinoma.html +++ b/concepts/colorectal-adenocarcinoma.html @@ -11,12 +11,12 @@ Colorectal Adenocarcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/colorectal.html b/concepts/colorectal.html index ad3d7d6625..071c2a7615 100644 --- a/concepts/colorectal.html +++ b/concepts/colorectal.html @@ -11,12 +11,12 @@ Colorectal Cancer - + - + @@ -377,7 +377,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/combined-small-cell-lung-carcinoma.html b/concepts/combined-small-cell-lung-carcinoma.html index e927aabaf1..9a851aefdf 100644 --- a/concepts/combined-small-cell-lung-carcinoma.html +++ b/concepts/combined-small-cell-lung-carcinoma.html @@ -11,12 +11,12 @@ Combined Small Cell Lung Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/complete-hydatidiform-mole.html b/concepts/complete-hydatidiform-mole.html index 50b77b1e8b..039732f840 100644 --- a/concepts/complete-hydatidiform-mole.html +++ b/concepts/complete-hydatidiform-mole.html @@ -11,12 +11,12 @@ Complete Hydatidiform Mole - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/congenital-nevus.html b/concepts/congenital-nevus.html index 987a7978d4..6f77649972 100644 --- a/concepts/congenital-nevus.html +++ b/concepts/congenital-nevus.html @@ -11,12 +11,12 @@ Congenital Nevus - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/conjunctival-melanoma.html b/concepts/conjunctival-melanoma.html index 3953dc0aaa..05d625416e 100644 --- a/concepts/conjunctival-melanoma.html +++ b/concepts/conjunctival-melanoma.html @@ -11,12 +11,12 @@ Conjunctival Melanoma - + - + @@ -383,7 +383,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/conventional-type-chordoma.html b/concepts/conventional-type-chordoma.html index e4ebbb78c9..4b278da0a6 100644 --- a/concepts/conventional-type-chordoma.html +++ b/concepts/conventional-type-chordoma.html @@ -11,12 +11,12 @@ Conventional Type Chordoma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/craniopharyngioma-adamantinomatous-type.html b/concepts/craniopharyngioma-adamantinomatous-type.html index 76f4cb2cbf..a225df4848 100644 --- a/concepts/craniopharyngioma-adamantinomatous-type.html +++ b/concepts/craniopharyngioma-adamantinomatous-type.html @@ -11,12 +11,12 @@ Craniopharyngioma, Adamantinomatous Type - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/craniopharyngioma-papillary-type.html b/concepts/craniopharyngioma-papillary-type.html index 153497023d..75dcc6b836 100644 --- a/concepts/craniopharyngioma-papillary-type.html +++ b/concepts/craniopharyngioma-papillary-type.html @@ -11,12 +11,12 @@ Craniopharyngioma, Papillary Type - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/crptdf-ar.html b/concepts/crptdf-ar.html index eaea3605a8..4c17d2a1de 100644 --- a/concepts/crptdf-ar.html +++ b/concepts/crptdf-ar.html @@ -11,12 +11,12 @@ CRPTDF - + - + @@ -378,7 +378,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/crsba-dz.html b/concepts/crsba-dz.html index abd40e4b94..ec3d8f5141 100644 --- a/concepts/crsba-dz.html +++ b/concepts/crsba-dz.html @@ -11,12 +11,12 @@ CRSBA - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/crwb-dz.html b/concepts/crwb-dz.html index 9563ae6694..40a01afe3c 100644 --- a/concepts/crwb-dz.html +++ b/concepts/crwb-dz.html @@ -11,12 +11,12 @@ CRWB - + - + @@ -381,7 +381,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/cryoablation.html b/concepts/cryoablation.html index 3a653b96e1..abcc3716b8 100644 --- a/concepts/cryoablation.html +++ b/concepts/cryoablation.html @@ -11,12 +11,12 @@ Cryoablation - + - + @@ -375,7 +375,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/ct-colonoscopy.html b/concepts/ct-colonoscopy.html index 1a5d788130..4c8556d6ee 100644 --- a/concepts/ct-colonoscopy.html +++ b/concepts/ct-colonoscopy.html @@ -11,12 +11,12 @@ CT Colonoscopy - + - + @@ -376,7 +376,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/ctca.html b/concepts/ctca.html index 1e50272e52..7051bf5b6b 100644 --- a/concepts/ctca.html +++ b/concepts/ctca.html @@ -11,12 +11,12 @@ Cancer Treatment Centers of America - + - + @@ -379,7 +379,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/curium-pharma.html b/concepts/curium-pharma.html index fead5a2112..676dfe14de 100644 --- a/concepts/curium-pharma.html +++ b/concepts/curium-pharma.html @@ -11,12 +11,12 @@ Curium Pharma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/cutaneous-mastocytosis.html b/concepts/cutaneous-mastocytosis.html index 6886d9bd2f..a5bfc0772d 100644 --- a/concepts/cutaneous-mastocytosis.html +++ b/concepts/cutaneous-mastocytosis.html @@ -11,12 +11,12 @@ Cutaneous Mastocytosis - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/cutaneous-melanoma.html b/concepts/cutaneous-melanoma.html index 4fc8162de5..32d02d7ae1 100644 --- a/concepts/cutaneous-melanoma.html +++ b/concepts/cutaneous-melanoma.html @@ -11,12 +11,12 @@ Cutaneous Melanoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/cutaneous-squamous-cell-carcinoma.html b/concepts/cutaneous-squamous-cell-carcinoma.html index 481b1175d8..6bc1dd5587 100644 --- a/concepts/cutaneous-squamous-cell-carcinoma.html +++ b/concepts/cutaneous-squamous-cell-carcinoma.html @@ -11,12 +11,12 @@ Cutaneous Squamous Cell Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/cyclophosphamide.html b/concepts/cyclophosphamide.html index f2133b235d..ae713c1185 100644 --- a/concepts/cyclophosphamide.html +++ b/concepts/cyclophosphamide.html @@ -11,12 +11,12 @@ Cyclophosphamide - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/cystectomy.html b/concepts/cystectomy.html index 4eafb4db06..146605d07e 100644 --- a/concepts/cystectomy.html +++ b/concepts/cystectomy.html @@ -11,12 +11,12 @@ Cystectomy - + - + @@ -376,7 +376,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/cystic-tumor-of-the-pancreas.html b/concepts/cystic-tumor-of-the-pancreas.html index 67b0d26aae..d7f044ae2a 100644 --- a/concepts/cystic-tumor-of-the-pancreas.html +++ b/concepts/cystic-tumor-of-the-pancreas.html @@ -11,12 +11,12 @@ Cystic Tumor of the Pancreas - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/cytarabine.html b/concepts/cytarabine.html index e7fdb3cc49..4668bd3590 100644 --- a/concepts/cytarabine.html +++ b/concepts/cytarabine.html @@ -11,12 +11,12 @@ Cytarabine - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/czechrepublic-ncc.html b/concepts/czechrepublic-ncc.html index 12b9d024e0..f9cc64e781 100644 --- a/concepts/czechrepublic-ncc.html +++ b/concepts/czechrepublic-ncc.html @@ -11,12 +11,12 @@ National Cancer Institute - + - + @@ -376,7 +376,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/dacarbazine.html b/concepts/dacarbazine.html index 8e51867bf1..d68d1da6bb 100644 --- a/concepts/dacarbazine.html +++ b/concepts/dacarbazine.html @@ -11,12 +11,12 @@ Dacarbazine - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/daiichi-sankyo.html b/concepts/daiichi-sankyo.html index 4927ed4380..4dd675538a 100644 --- a/concepts/daiichi-sankyo.html +++ b/concepts/daiichi-sankyo.html @@ -11,12 +11,12 @@ Daiichi Sankyo - + - + @@ -379,7 +379,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/damon-runyon-cancer-research-foundation.html b/concepts/damon-runyon-cancer-research-foundation.html index f869404215..d5d7257423 100644 --- a/concepts/damon-runyon-cancer-research-foundation.html +++ b/concepts/damon-runyon-cancer-research-foundation.html @@ -11,12 +11,12 @@ Damon Runyon Cancer Research Foundation - + - + @@ -385,7 +385,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/dan-l-duncan-comprehensive-cancer-center.html b/concepts/dan-l-duncan-comprehensive-cancer-center.html index 5b10d55281..f2ec92aaa0 100644 --- a/concepts/dan-l-duncan-comprehensive-cancer-center.html +++ b/concepts/dan-l-duncan-comprehensive-cancer-center.html @@ -11,12 +11,12 @@ Dan L Duncan Comprehensive Cancer Center - + - + @@ -389,7 +389,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/dana-farber-harvard-cancer-center.html b/concepts/dana-farber-harvard-cancer-center.html index 5f07cd550c..56c2cf8c6e 100644 --- a/concepts/dana-farber-harvard-cancer-center.html +++ b/concepts/dana-farber-harvard-cancer-center.html @@ -11,12 +11,12 @@ Dana-Farber/Harvard Cancer Center - + - + @@ -384,7 +384,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/dana-farber.html b/concepts/dana-farber.html index 7ba92396c7..9033fe7a2f 100644 --- a/concepts/dana-farber.html +++ b/concepts/dana-farber.html @@ -11,12 +11,12 @@ Dana-Farber Cancer Institute - + - + @@ -389,7 +389,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/dartmouth-cancer-center.html b/concepts/dartmouth-cancer-center.html index a2ab4a738a..dcd142dd03 100644 --- a/concepts/dartmouth-cancer-center.html +++ b/concepts/dartmouth-cancer-center.html @@ -11,12 +11,12 @@ Dartmouth Cancer Center - + - + @@ -390,7 +390,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/daunorubicin.html b/concepts/daunorubicin.html index 9c3312f62e..bec2805581 100644 --- a/concepts/daunorubicin.html +++ b/concepts/daunorubicin.html @@ -11,12 +11,12 @@ Daunorubicin - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/david-h-koch-institute-for-integrative-cancer-research-at-mit.html b/concepts/david-h-koch-institute-for-integrative-cancer-research-at-mit.html index ac553d2d88..de6c9cf92c 100644 --- a/concepts/david-h-koch-institute-for-integrative-cancer-research-at-mit.html +++ b/concepts/david-h-koch-institute-for-integrative-cancer-research-at-mit.html @@ -11,12 +11,12 @@ David H. Koch Institute for Integrative Cancer Research at MIT - + - + @@ -394,7 +394,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/dedifferentiated-chondrosarcoma.html b/concepts/dedifferentiated-chondrosarcoma.html index e47bac9305..aae52c4bda 100644 --- a/concepts/dedifferentiated-chondrosarcoma.html +++ b/concepts/dedifferentiated-chondrosarcoma.html @@ -11,12 +11,12 @@ Dedifferentiated Chondrosarcoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/dedifferentiated-chordoma.html b/concepts/dedifferentiated-chordoma.html index 9597cf8f6f..de34b442e5 100644 --- a/concepts/dedifferentiated-chordoma.html +++ b/concepts/dedifferentiated-chordoma.html @@ -11,12 +11,12 @@ Dedifferentiated Chordoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/dedifferentiated-liposarcoma.html b/concepts/dedifferentiated-liposarcoma.html index 78ca275e03..cefed3f72b 100644 --- a/concepts/dedifferentiated-liposarcoma.html +++ b/concepts/dedifferentiated-liposarcoma.html @@ -11,12 +11,12 @@ Dedifferentiated Liposarcoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/dendritic-cell-sarcoma.html b/concepts/dendritic-cell-sarcoma.html index 90205c5596..b90fb0a07a 100644 --- a/concepts/dendritic-cell-sarcoma.html +++ b/concepts/dendritic-cell-sarcoma.html @@ -11,12 +11,12 @@ Dendritic Cell Sarcoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/dermatofibroma.html b/concepts/dermatofibroma.html index 48de4e1307..6490b25a3b 100644 --- a/concepts/dermatofibroma.html +++ b/concepts/dermatofibroma.html @@ -11,12 +11,12 @@ Dermatofibroma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/dermatofibrosarcoma-protuberans.html b/concepts/dermatofibrosarcoma-protuberans.html index 4331bca2a8..2c51af10dd 100644 --- a/concepts/dermatofibrosarcoma-protuberans.html +++ b/concepts/dermatofibrosarcoma-protuberans.html @@ -11,12 +11,12 @@ Dermatofibrosarcoma Protuberans - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/desmoid-aggressive-fibromatosis.html b/concepts/desmoid-aggressive-fibromatosis.html index 701caa2814..cff22b1a28 100644 --- a/concepts/desmoid-aggressive-fibromatosis.html +++ b/concepts/desmoid-aggressive-fibromatosis.html @@ -11,12 +11,12 @@ Desmoid/Aggressive Fibromatosis - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/desmoplastic-infantile-astrocytoma.html b/concepts/desmoplastic-infantile-astrocytoma.html index c90265e54b..692808a7d5 100644 --- a/concepts/desmoplastic-infantile-astrocytoma.html +++ b/concepts/desmoplastic-infantile-astrocytoma.html @@ -11,12 +11,12 @@ Desmoplastic Infantile Astrocytoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/desmoplastic-infantile-ganglioglioma.html b/concepts/desmoplastic-infantile-ganglioglioma.html index 3a4d555c98..a2bd7b2dbc 100644 --- a/concepts/desmoplastic-infantile-ganglioglioma.html +++ b/concepts/desmoplastic-infantile-ganglioglioma.html @@ -11,12 +11,12 @@ Desmoplastic Infantile Ganglioglioma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/desmoplastic-melanoma.html b/concepts/desmoplastic-melanoma.html index 553f4a316a..6bf8a1bf6c 100644 --- a/concepts/desmoplastic-melanoma.html +++ b/concepts/desmoplastic-melanoma.html @@ -11,12 +11,12 @@ Desmoplastic Melanoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/desmoplastic-nodular-medulloblastoma.html b/concepts/desmoplastic-nodular-medulloblastoma.html index a2fc5cbcaf..089c48bf2a 100644 --- a/concepts/desmoplastic-nodular-medulloblastoma.html +++ b/concepts/desmoplastic-nodular-medulloblastoma.html @@ -11,12 +11,12 @@ Desmoplastic/Nodular Medulloblastoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/desmoplastic-small-round-cell-tumor.html b/concepts/desmoplastic-small-round-cell-tumor.html index 162b145647..c90b620026 100644 --- a/concepts/desmoplastic-small-round-cell-tumor.html +++ b/concepts/desmoplastic-small-round-cell-tumor.html @@ -11,12 +11,12 @@ Desmoplastic Small-Round-Cell Tumor - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/desmoplastic-trichoepithelioma.html b/concepts/desmoplastic-trichoepithelioma.html index 8f80607cc1..fd57543013 100644 --- a/concepts/desmoplastic-trichoepithelioma.html +++ b/concepts/desmoplastic-trichoepithelioma.html @@ -11,12 +11,12 @@ Desmoplastic Trichoepithelioma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/dicycloplatin.html b/concepts/dicycloplatin.html index bb76b7eca8..ae11e93242 100644 --- a/concepts/dicycloplatin.html +++ b/concepts/dicycloplatin.html @@ -11,12 +11,12 @@ Dicycloplatin - + - + @@ -377,7 +377,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/diffuse-astrocytoma.html b/concepts/diffuse-astrocytoma.html index bc25dd1c7a..c8f7b4d7d7 100644 --- a/concepts/diffuse-astrocytoma.html +++ b/concepts/diffuse-astrocytoma.html @@ -11,12 +11,12 @@ Diffuse Astrocytoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/diffuse-glioma.html b/concepts/diffuse-glioma.html index fd836c7755..e40d7a863f 100644 --- a/concepts/diffuse-glioma.html +++ b/concepts/diffuse-glioma.html @@ -11,12 +11,12 @@ Diffuse Glioma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/diffuse-intrinsic-pontine-glioma.html b/concepts/diffuse-intrinsic-pontine-glioma.html index cafa5d3007..0b0ed9ba99 100644 --- a/concepts/diffuse-intrinsic-pontine-glioma.html +++ b/concepts/diffuse-intrinsic-pontine-glioma.html @@ -11,12 +11,12 @@ Diffuse Intrinsic Pontine Glioma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/diffuse-large-b-cell-lymphoma-nos.html b/concepts/diffuse-large-b-cell-lymphoma-nos.html index c748270b96..b3416d5519 100644 --- a/concepts/diffuse-large-b-cell-lymphoma-nos.html +++ b/concepts/diffuse-large-b-cell-lymphoma-nos.html @@ -11,12 +11,12 @@ Diffuse Large B-Cell Lymphoma, NOS - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/diffuse-type-stomach-adenocarcinoma.html b/concepts/diffuse-type-stomach-adenocarcinoma.html index e19c33b0f2..772b1d5a02 100644 --- a/concepts/diffuse-type-stomach-adenocarcinoma.html +++ b/concepts/diffuse-type-stomach-adenocarcinoma.html @@ -11,12 +11,12 @@ Diffuse Type Stomach Adenocarcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/disseminated-juvenile-xanthogranuloma.html b/concepts/disseminated-juvenile-xanthogranuloma.html index ee217d4ec0..1340123d5c 100644 --- a/concepts/disseminated-juvenile-xanthogranuloma.html +++ b/concepts/disseminated-juvenile-xanthogranuloma.html @@ -11,12 +11,12 @@ Disseminated Juvenile Xanthogranuloma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/dlbcl-associated-with-chronic-inflammation.html b/concepts/dlbcl-associated-with-chronic-inflammation.html index dd0037a527..30269e9a7d 100644 --- a/concepts/dlbcl-associated-with-chronic-inflammation.html +++ b/concepts/dlbcl-associated-with-chronic-inflammation.html @@ -11,12 +11,12 @@ DLBCL Associated with Chronic Inflammation - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/docetaxel.html b/concepts/docetaxel.html index 61e415f21e..d512aaf670 100644 --- a/concepts/docetaxel.html +++ b/concepts/docetaxel.html @@ -11,12 +11,12 @@ Docetaxel - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/dominicanrepublic-ncc.html b/concepts/dominicanrepublic-ncc.html index 6af79c539b..8545ea3b70 100644 --- a/concepts/dominicanrepublic-ncc.html +++ b/concepts/dominicanrepublic-ncc.html @@ -11,12 +11,12 @@ National Cancer Institute of the Dominican Republic - + - + @@ -379,7 +379,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/doxifluridine.html b/concepts/doxifluridine.html index af7d9ecea2..d9473a2250 100644 --- a/concepts/doxifluridine.html +++ b/concepts/doxifluridine.html @@ -11,12 +11,12 @@ Doxifluridine - + - + @@ -377,7 +377,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/doxorubicin.html b/concepts/doxorubicin.html index 47691f7722..b64e1386b8 100644 --- a/concepts/doxorubicin.html +++ b/concepts/doxorubicin.html @@ -11,12 +11,12 @@ Doxorubicin - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/dr-sebi-cure-for-cancer.html b/concepts/dr-sebi-cure-for-cancer.html index 855d9812f5..16998c57ef 100644 --- a/concepts/dr-sebi-cure-for-cancer.html +++ b/concepts/dr-sebi-cure-for-cancer.html @@ -11,12 +11,12 @@ Dr Sebi Cure For Cancer - + - + @@ -376,7 +376,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/dta-dz.html b/concepts/dta-dz.html index 20150b7e6d..91ae37b111 100644 --- a/concepts/dta-dz.html +++ b/concepts/dta-dz.html @@ -11,12 +11,12 @@ DTA - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/duke-cancer-institute.html b/concepts/duke-cancer-institute.html index e4193a03a2..bef392d258 100644 --- a/concepts/duke-cancer-institute.html +++ b/concepts/duke-cancer-institute.html @@ -11,12 +11,12 @@ Duke Cancer Institute - + - + @@ -391,7 +391,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/duodenal-adenocarcinoma.html b/concepts/duodenal-adenocarcinoma.html index 357d3c5caf..b2b1cd66b1 100644 --- a/concepts/duodenal-adenocarcinoma.html +++ b/concepts/duodenal-adenocarcinoma.html @@ -11,12 +11,12 @@ Duodenal Adenocarcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/duodenal-type-follicular-lymphoma.html b/concepts/duodenal-type-follicular-lymphoma.html index 6a047ceb48..0417ca164e 100644 --- a/concepts/duodenal-type-follicular-lymphoma.html +++ b/concepts/duodenal-type-follicular-lymphoma.html @@ -11,12 +11,12 @@ Duodenal-Type Follicular Lymphoma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/dutch-cancer-society.html b/concepts/dutch-cancer-society.html index 0bf412f3f6..64fa2c4c3c 100644 --- a/concepts/dutch-cancer-society.html +++ b/concepts/dutch-cancer-society.html @@ -11,12 +11,12 @@ Dutch Cancer Society - + - + @@ -384,7 +384,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/dysembryoplastic-neuroepithelial-tumor.html b/concepts/dysembryoplastic-neuroepithelial-tumor.html index 6ac0a3cf47..1594f19d84 100644 --- a/concepts/dysembryoplastic-neuroepithelial-tumor.html +++ b/concepts/dysembryoplastic-neuroepithelial-tumor.html @@ -11,12 +11,12 @@ Dysembryoplastic Neuroepithelial Tumor - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/dysgerminoma-vulva-vagina.html b/concepts/dysgerminoma-vulva-vagina.html index 6f5529b566..367f947f2a 100644 --- a/concepts/dysgerminoma-vulva-vagina.html +++ b/concepts/dysgerminoma-vulva-vagina.html @@ -11,12 +11,12 @@ Dysgerminoma Vulva/Vagina - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/dysgerminoma.html b/concepts/dysgerminoma.html index 89b0814019..4295dd19ed 100644 --- a/concepts/dysgerminoma.html +++ b/concepts/dysgerminoma.html @@ -11,12 +11,12 @@ Dysgerminoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/dysplastic-gangliocytoma-of-the-cerebellum-lhermitte-duclos-disease.html b/concepts/dysplastic-gangliocytoma-of-the-cerebellum-lhermitte-duclos-disease.html index 99fe28d80d..08d5eee4e6 100644 --- a/concepts/dysplastic-gangliocytoma-of-the-cerebellum-lhermitte-duclos-disease.html +++ b/concepts/dysplastic-gangliocytoma-of-the-cerebellum-lhermitte-duclos-disease.html @@ -11,12 +11,12 @@ Dysplastic Gangliocytoma of the Cerebellum/Lhermitte-Duclos Disease - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/early-detection-book.html b/concepts/early-detection-book.html index c428c28aa1..524984ca36 100644 --- a/concepts/early-detection-book.html +++ b/concepts/early-detection-book.html @@ -11,12 +11,12 @@ Early Detection: How America Can Win the War on Cancer - + - + @@ -376,7 +376,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/early-t-cell-precursor-lymphoblastic-leukemia.html b/concepts/early-t-cell-precursor-lymphoblastic-leukemia.html index 9363d0c1cc..18308fc56f 100644 --- a/concepts/early-t-cell-precursor-lymphoblastic-leukemia.html +++ b/concepts/early-t-cell-precursor-lymphoblastic-leukemia.html @@ -11,12 +11,12 @@ Early T-Cell Precursor Lymphoblastic Leukemia - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/ebus.html b/concepts/ebus.html index e256579c87..e3dfae5be3 100644 --- a/concepts/ebus.html +++ b/concepts/ebus.html @@ -11,12 +11,12 @@ EBUS - + - + @@ -378,7 +378,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/ebv-positive-dlbcl-nos.html b/concepts/ebv-positive-dlbcl-nos.html index a6f9b0b405..dae2af9c05 100644 --- a/concepts/ebv-positive-dlbcl-nos.html +++ b/concepts/ebv-positive-dlbcl-nos.html @@ -11,12 +11,12 @@ EBV Positive DLBCL, NOS - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/ebv-positive-mucocutaneous-ulcer.html b/concepts/ebv-positive-mucocutaneous-ulcer.html index bae439e2c5..35c26752eb 100644 --- a/concepts/ebv-positive-mucocutaneous-ulcer.html +++ b/concepts/ebv-positive-mucocutaneous-ulcer.html @@ -11,12 +11,12 @@ EBV Positive Mucocutaneous Ulcer - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/egypt-ncc.html b/concepts/egypt-ncc.html index 03046211b3..25fa37a6bc 100644 --- a/concepts/egypt-ncc.html +++ b/concepts/egypt-ncc.html @@ -11,12 +11,12 @@ National Cancer Institute Cairo University - + - + @@ -376,7 +376,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/electroacupuncture.html b/concepts/electroacupuncture.html index 8c2d6c6e5b..5a3c666e0b 100644 --- a/concepts/electroacupuncture.html +++ b/concepts/electroacupuncture.html @@ -11,12 +11,12 @@ Electroacupuncture - + - + @@ -374,7 +374,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/eli-lilly-and-company.html b/concepts/eli-lilly-and-company.html index 3b341f8635..53657cb70a 100644 --- a/concepts/eli-lilly-and-company.html +++ b/concepts/eli-lilly-and-company.html @@ -11,12 +11,12 @@ Eli Lilly and Company - + - + @@ -378,7 +378,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/elsevier.html b/concepts/elsevier.html index 7d0ec254f5..aa02501281 100644 --- a/concepts/elsevier.html +++ b/concepts/elsevier.html @@ -11,12 +11,12 @@ Elsevier - + - + @@ -379,7 +379,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/embase.html b/concepts/embase.html index 6d8c8368d8..c403443ccf 100644 --- a/concepts/embase.html +++ b/concepts/embase.html @@ -11,12 +11,12 @@ Embase - + - + @@ -379,7 +379,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/embryonal-carcinoma-cns-brain.html b/concepts/embryonal-carcinoma-cns-brain.html index cdba884237..dff7fefd4f 100644 --- a/concepts/embryonal-carcinoma-cns-brain.html +++ b/concepts/embryonal-carcinoma-cns-brain.html @@ -11,12 +11,12 @@ Embryonal Carcinoma CNS/Brain - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/embryonal-carcinoma-testis.html b/concepts/embryonal-carcinoma-testis.html index 72faab6b1a..3ba3c0d3b2 100644 --- a/concepts/embryonal-carcinoma-testis.html +++ b/concepts/embryonal-carcinoma-testis.html @@ -11,12 +11,12 @@ Embryonal Carcinoma Testis - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/embryonal-carcinoma-vulva-vagina.html b/concepts/embryonal-carcinoma-vulva-vagina.html index 6073474f8e..dd1cca10a6 100644 --- a/concepts/embryonal-carcinoma-vulva-vagina.html +++ b/concepts/embryonal-carcinoma-vulva-vagina.html @@ -11,12 +11,12 @@ Embryonal Carcinoma Vulva/Vagina - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/embryonal-carcinoma.html b/concepts/embryonal-carcinoma.html index 8744953aeb..c13c9e4760 100644 --- a/concepts/embryonal-carcinoma.html +++ b/concepts/embryonal-carcinoma.html @@ -11,12 +11,12 @@ Embryonal Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/embryonal-rhabdomyosarcoma.html b/concepts/embryonal-rhabdomyosarcoma.html index 4170a0bf69..d6ab1afbb0 100644 --- a/concepts/embryonal-rhabdomyosarcoma.html +++ b/concepts/embryonal-rhabdomyosarcoma.html @@ -11,12 +11,12 @@ Embryonal Rhabdomyosarcoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/embryonal-tumor-with-abundant-neuropil-and-true-rosettes.html b/concepts/embryonal-tumor-with-abundant-neuropil-and-true-rosettes.html index 6128c2f071..327896ac49 100644 --- a/concepts/embryonal-tumor-with-abundant-neuropil-and-true-rosettes.html +++ b/concepts/embryonal-tumor-with-abundant-neuropil-and-true-rosettes.html @@ -11,12 +11,12 @@ Embryonal Tumor with Abundant Neuropil and True Rosettes - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/embryonal-tumor.html b/concepts/embryonal-tumor.html index ff5dd36c53..7c43ca18c9 100644 --- a/concepts/embryonal-tumor.html +++ b/concepts/embryonal-tumor.html @@ -11,12 +11,12 @@ Embryonal Tumor - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/emerging-med.html b/concepts/emerging-med.html index ab0afca670..f914abf485 100644 --- a/concepts/emerging-med.html +++ b/concepts/emerging-med.html @@ -11,12 +11,12 @@ EmergingMed.com - + - + @@ -378,7 +378,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/emperor-of-all-maladies.html b/concepts/emperor-of-all-maladies.html index b6fe7a0c20..38dd3ada4f 100644 --- a/concepts/emperor-of-all-maladies.html +++ b/concepts/emperor-of-all-maladies.html @@ -11,12 +11,12 @@ The Emperor of All Maladies: A Biography of Cancer - + - + @@ -378,7 +378,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/encapsulated-glioma.html b/concepts/encapsulated-glioma.html index 0d8c317995..65da46f072 100644 --- a/concepts/encapsulated-glioma.html +++ b/concepts/encapsulated-glioma.html @@ -11,12 +11,12 @@ Encapsulated Glioma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/encr-sw.html b/concepts/encr-sw.html index 81259fb7cf..f4c5499196 100644 --- a/concepts/encr-sw.html +++ b/concepts/encr-sw.html @@ -11,12 +11,12 @@ ENCR - + - + @@ -378,7 +378,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/endocervical-adenocarcinoma.html b/concepts/endocervical-adenocarcinoma.html index a602c7d503..398b898b4d 100644 --- a/concepts/endocervical-adenocarcinoma.html +++ b/concepts/endocervical-adenocarcinoma.html @@ -11,12 +11,12 @@ Endocervical Adenocarcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/endocrine-mucin-producing-sweat-gland-carcinoma.html b/concepts/endocrine-mucin-producing-sweat-gland-carcinoma.html index 303845371b..39f29089b3 100644 --- a/concepts/endocrine-mucin-producing-sweat-gland-carcinoma.html +++ b/concepts/endocrine-mucin-producing-sweat-gland-carcinoma.html @@ -11,12 +11,12 @@ Endocrine Mucin Producing Sweat Gland Carcinoma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/endometrial-carcinoma.html b/concepts/endometrial-carcinoma.html index d08c28adca..0bb303bef5 100644 --- a/concepts/endometrial-carcinoma.html +++ b/concepts/endometrial-carcinoma.html @@ -11,12 +11,12 @@ Endometrial Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/endometrial-stromal-sarcoma.html b/concepts/endometrial-stromal-sarcoma.html index 762a15f64a..b986781827 100644 --- a/concepts/endometrial-stromal-sarcoma.html +++ b/concepts/endometrial-stromal-sarcoma.html @@ -11,12 +11,12 @@ Endometrial Stromal Sarcoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/endometrioid-borderlin-ovarian-tumor.html b/concepts/endometrioid-borderlin-ovarian-tumor.html index 115392f17d..8aee029e15 100644 --- a/concepts/endometrioid-borderlin-ovarian-tumor.html +++ b/concepts/endometrioid-borderlin-ovarian-tumor.html @@ -11,12 +11,12 @@ Endometrioid Borderlin Ovarian Tumor - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/endometrioid-ovarian-cancer.html b/concepts/endometrioid-ovarian-cancer.html index 61a29f435c..16d2a2b4d1 100644 --- a/concepts/endometrioid-ovarian-cancer.html +++ b/concepts/endometrioid-ovarian-cancer.html @@ -11,12 +11,12 @@ Endometrioid Ovarian Cancer - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/enteropathy-associated-t-cell-lymphoma.html b/concepts/enteropathy-associated-t-cell-lymphoma.html index b5de680d3b..a3b5c1fecd 100644 --- a/concepts/enteropathy-associated-t-cell-lymphoma.html +++ b/concepts/enteropathy-associated-t-cell-lymphoma.html @@ -11,12 +11,12 @@ Enteropathy-Associated T-Cell Lymphoma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/ependymoma.html b/concepts/ependymoma.html index f54d89411b..0cf8621ace 100644 --- a/concepts/ependymoma.html +++ b/concepts/ependymoma.html @@ -11,12 +11,12 @@ Ependymoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/ependymomal-tumor.html b/concepts/ependymomal-tumor.html index 01d0f3d49c..e8c412e550 100644 --- a/concepts/ependymomal-tumor.html +++ b/concepts/ependymomal-tumor.html @@ -11,12 +11,12 @@ Ependymomal Tumor - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/epirubicin.html b/concepts/epirubicin.html index bd4f625ee6..1a0e745332 100644 --- a/concepts/epirubicin.html +++ b/concepts/epirubicin.html @@ -11,12 +11,12 @@ Epirubicin - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/epithelial-myoepithelial-carcinoma.html b/concepts/epithelial-myoepithelial-carcinoma.html index 86b50cf658..a23733e6b7 100644 --- a/concepts/epithelial-myoepithelial-carcinoma.html +++ b/concepts/epithelial-myoepithelial-carcinoma.html @@ -11,12 +11,12 @@ Epithelial-Myoepithelial Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/epithelial-type-metaplastic-breast-cancer.html b/concepts/epithelial-type-metaplastic-breast-cancer.html index ae4768aa93..91a00ce858 100644 --- a/concepts/epithelial-type-metaplastic-breast-cancer.html +++ b/concepts/epithelial-type-metaplastic-breast-cancer.html @@ -11,12 +11,12 @@ Epithelial Type Metaplastic Breast Cancer - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/epithelioid-hemangioendothelioma.html b/concepts/epithelioid-hemangioendothelioma.html index 8f0d365257..72e184e0bf 100644 --- a/concepts/epithelioid-hemangioendothelioma.html +++ b/concepts/epithelioid-hemangioendothelioma.html @@ -11,12 +11,12 @@ Epithelioid Hemangioendothelioma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/epithelioid-sarcoma.html b/concepts/epithelioid-sarcoma.html index 827408e994..d6544a3036 100644 --- a/concepts/epithelioid-sarcoma.html +++ b/concepts/epithelioid-sarcoma.html @@ -11,12 +11,12 @@ Epithelioid Sarcoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/epithelioid-trophoblastic-tumor.html b/concepts/epithelioid-trophoblastic-tumor.html index a9b694f8eb..883f31a1c2 100644 --- a/concepts/epithelioid-trophoblastic-tumor.html +++ b/concepts/epithelioid-trophoblastic-tumor.html @@ -11,12 +11,12 @@ Epithelioid Trophoblastic Tumor - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/ercr-ar.html b/concepts/ercr-ar.html index 6cbcc88e0d..d26a1e7f93 100644 --- a/concepts/ercr-ar.html +++ b/concepts/ercr-ar.html @@ -11,12 +11,12 @@ ERCR - + - + @@ -379,7 +379,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/erdheim-chester-disease.html b/concepts/erdheim-chester-disease.html index 9be4e0b5b2..805e55c878 100644 --- a/concepts/erdheim-chester-disease.html +++ b/concepts/erdheim-chester-disease.html @@ -11,12 +11,12 @@ Erdheim-Chester Disease - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/erlotinib.html b/concepts/erlotinib.html index c960ac3bac..08b183eaf5 100644 --- a/concepts/erlotinib.html +++ b/concepts/erlotinib.html @@ -11,12 +11,12 @@ Erlotinib - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/esophageal-adenocarcinoma.html b/concepts/esophageal-adenocarcinoma.html index 6dc2adefbc..f80b4b3903 100644 --- a/concepts/esophageal-adenocarcinoma.html +++ b/concepts/esophageal-adenocarcinoma.html @@ -11,12 +11,12 @@ Esophageal Adenocarcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/esophageal-poorly-differentiated-carcinoma.html b/concepts/esophageal-poorly-differentiated-carcinoma.html index 735c073e3e..f8f7ac6d9a 100644 --- a/concepts/esophageal-poorly-differentiated-carcinoma.html +++ b/concepts/esophageal-poorly-differentiated-carcinoma.html @@ -11,12 +11,12 @@ Esophageal Poorly Differentiated Carcinoma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/esophageal-squamous-cell-carcinoma.html b/concepts/esophageal-squamous-cell-carcinoma.html index 0295557f16..2ecdb72f38 100644 --- a/concepts/esophageal-squamous-cell-carcinoma.html +++ b/concepts/esophageal-squamous-cell-carcinoma.html @@ -11,12 +11,12 @@ Esophageal Squamous Cell Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/esophagectomy.html b/concepts/esophagectomy.html index 5e6f01d1ed..854e320e71 100644 --- a/concepts/esophagectomy.html +++ b/concepts/esophagectomy.html @@ -11,12 +11,12 @@ Esophagectomy - + - + @@ -376,7 +376,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/esophagogastric-adenocarcinoma.html b/concepts/esophagogastric-adenocarcinoma.html index b0986c6663..0148fa3f3c 100644 --- a/concepts/esophagogastric-adenocarcinoma.html +++ b/concepts/esophagogastric-adenocarcinoma.html @@ -11,12 +11,12 @@ Esophagogastric Adenocarcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/esophagus-stomach.html b/concepts/esophagus-stomach.html index d868b51de8..d34edbd715 100644 --- a/concepts/esophagus-stomach.html +++ b/concepts/esophagus-stomach.html @@ -11,12 +11,12 @@ Esophagus/Stomach Cancer - + - + @@ -430,7 +430,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/essential-thrombocythemia-myelofibrosis.html b/concepts/essential-thrombocythemia-myelofibrosis.html index 33c76802f8..d6a0b1ba29 100644 --- a/concepts/essential-thrombocythemia-myelofibrosis.html +++ b/concepts/essential-thrombocythemia-myelofibrosis.html @@ -11,12 +11,12 @@ Essential Thrombocythemia Myelofibrosis - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/essential-thrombocythemia.html b/concepts/essential-thrombocythemia.html index 0613291ad9..737b312fea 100644 --- a/concepts/essential-thrombocythemia.html +++ b/concepts/essential-thrombocythemia.html @@ -11,12 +11,12 @@ Essential Thrombocythemia - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/etoposide.html b/concepts/etoposide.html index 49110b7f50..63e50888ee 100644 --- a/concepts/etoposide.html +++ b/concepts/etoposide.html @@ -11,12 +11,12 @@ Etoposide - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/europa-donna-armenia.html b/concepts/europa-donna-armenia.html index aa11fde666..ad4210bb0a 100644 --- a/concepts/europa-donna-armenia.html +++ b/concepts/europa-donna-armenia.html @@ -11,12 +11,12 @@ Europa Donna Armenia - + - + @@ -381,7 +381,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/ewing-sarcoma-of-soft-tissue.html b/concepts/ewing-sarcoma-of-soft-tissue.html index da2fdd6bfa..cc90ded511 100644 --- a/concepts/ewing-sarcoma-of-soft-tissue.html +++ b/concepts/ewing-sarcoma-of-soft-tissue.html @@ -11,12 +11,12 @@ Ewing Sarcoma of Soft Tissue - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/ewing-sarcoma.html b/concepts/ewing-sarcoma.html index 7992cd005a..e142e80186 100644 --- a/concepts/ewing-sarcoma.html +++ b/concepts/ewing-sarcoma.html @@ -11,12 +11,12 @@ Ewing Sarcoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/exatecan.html b/concepts/exatecan.html index b03b8565e3..aa744147cd 100644 --- a/concepts/exatecan.html +++ b/concepts/exatecan.html @@ -11,12 +11,12 @@ Exatecan - + - + @@ -377,7 +377,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/exercise.html b/concepts/exercise.html index d2e7d84f65..e6ecf5d078 100644 --- a/concepts/exercise.html +++ b/concepts/exercise.html @@ -11,12 +11,12 @@ Exercise - + - + @@ -373,7 +373,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/extra-gonadal-germ-cell-tumor.html b/concepts/extra-gonadal-germ-cell-tumor.html index 6a814bde79..156d0c64ba 100644 --- a/concepts/extra-gonadal-germ-cell-tumor.html +++ b/concepts/extra-gonadal-germ-cell-tumor.html @@ -11,12 +11,12 @@ Extra Gonadal Germ Cell Tumor - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/extrahepatic-cholangiocarcinoma.html b/concepts/extrahepatic-cholangiocarcinoma.html index 1a948c04c0..2c064483c4 100644 --- a/concepts/extrahepatic-cholangiocarcinoma.html +++ b/concepts/extrahepatic-cholangiocarcinoma.html @@ -11,12 +11,12 @@ Extrahepatic Cholangiocarcinoma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/extramammary-paget-disease.html b/concepts/extramammary-paget-disease.html index 7a2c5d5feb..e799384611 100644 --- a/concepts/extramammary-paget-disease.html +++ b/concepts/extramammary-paget-disease.html @@ -11,12 +11,12 @@ Extramammary Paget Disease - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/extranodal-marginal-zone-lymphoma-of-mucosa-associated-lymphoid-tissue-malt-lymphoma.html b/concepts/extranodal-marginal-zone-lymphoma-of-mucosa-associated-lymphoid-tissue-malt-lymphoma.html index 7e5180e2fa..6c73fe1452 100644 --- a/concepts/extranodal-marginal-zone-lymphoma-of-mucosa-associated-lymphoid-tissue-malt-lymphoma.html +++ b/concepts/extranodal-marginal-zone-lymphoma-of-mucosa-associated-lymphoid-tissue-malt-lymphoma.html @@ -11,12 +11,12 @@ Extranodal Marginal Zone Lymphoma of Mucosa-Associated Lymphoid Tissue (MALT lymphoma) - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/extranodal-nk--t-cell-lymphoma-nasal-type.html b/concepts/extranodal-nk--t-cell-lymphoma-nasal-type.html index 5b73be2907..b92c4f129d 100644 --- a/concepts/extranodal-nk--t-cell-lymphoma-nasal-type.html +++ b/concepts/extranodal-nk--t-cell-lymphoma-nasal-type.html @@ -11,12 +11,12 @@ Extranodal NK-/T-Cell Lymphoma, Nasal Type - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/extraosseous-plasmacytoma.html b/concepts/extraosseous-plasmacytoma.html index 9d087e1658..012e2573f2 100644 --- a/concepts/extraosseous-plasmacytoma.html +++ b/concepts/extraosseous-plasmacytoma.html @@ -11,12 +11,12 @@ Extraosseous Plasmacytoma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/extraskeletal-myxoid-chondrosarcoma.html b/concepts/extraskeletal-myxoid-chondrosarcoma.html index e11bb5f500..dc323ad72b 100644 --- a/concepts/extraskeletal-myxoid-chondrosarcoma.html +++ b/concepts/extraskeletal-myxoid-chondrosarcoma.html @@ -11,12 +11,12 @@ Extraskeletal Myxoid Chondrosarcoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/extraventricular-neurocytoma.html b/concepts/extraventricular-neurocytoma.html index a33016239c..6fde5b69cd 100644 --- a/concepts/extraventricular-neurocytoma.html +++ b/concepts/extraventricular-neurocytoma.html @@ -11,12 +11,12 @@ Extraventricular Neurocytoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/eye.html b/concepts/eye.html index 3eb278af72..8ed3b9ff60 100644 --- a/concepts/eye.html +++ b/concepts/eye.html @@ -11,12 +11,12 @@ Eye Cancer - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/fda.html b/concepts/fda.html index a864c3c2e4..a102c67a5e 100644 --- a/concepts/fda.html +++ b/concepts/fda.html @@ -11,12 +11,12 @@ FDA - + - + @@ -386,7 +386,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/fecal-immunochemical-test.html b/concepts/fecal-immunochemical-test.html index 825175916f..42b93739d9 100644 --- a/concepts/fecal-immunochemical-test.html +++ b/concepts/fecal-immunochemical-test.html @@ -11,12 +11,12 @@ Fecal immunochemical test - + - + @@ -376,7 +376,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/fh-deficient-renal-cell-carcinoma.html b/concepts/fh-deficient-renal-cell-carcinoma.html index 97c26c2b8c..cc0c90bef4 100644 --- a/concepts/fh-deficient-renal-cell-carcinoma.html +++ b/concepts/fh-deficient-renal-cell-carcinoma.html @@ -11,12 +11,12 @@ FH-Deficient Renal Cell Carcinoma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/fibroadenoma.html b/concepts/fibroadenoma.html index b6cada9d06..1f3a7ce390 100644 --- a/concepts/fibroadenoma.html +++ b/concepts/fibroadenoma.html @@ -11,12 +11,12 @@ Fibroadenoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/fibroblastic-osteosarcoma.html b/concepts/fibroblastic-osteosarcoma.html index ee31a77265..4b8390dcb0 100644 --- a/concepts/fibroblastic-osteosarcoma.html +++ b/concepts/fibroblastic-osteosarcoma.html @@ -11,12 +11,12 @@ Fibroblastic Osteosarcoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/fibroblastic-reticular-cell-tumor.html b/concepts/fibroblastic-reticular-cell-tumor.html index ab26aa5c31..b004942b6c 100644 --- a/concepts/fibroblastic-reticular-cell-tumor.html +++ b/concepts/fibroblastic-reticular-cell-tumor.html @@ -11,12 +11,12 @@ Fibroblastic Reticular Cell Tumor - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/fibrolamellar-carcinoma.html b/concepts/fibrolamellar-carcinoma.html index 0404c08004..4aeb030d07 100644 --- a/concepts/fibrolamellar-carcinoma.html +++ b/concepts/fibrolamellar-carcinoma.html @@ -11,12 +11,12 @@ Fibrolamellar Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/fibrosarcoma.html b/concepts/fibrosarcoma.html index c4c1ca6427..8f477ddb11 100644 --- a/concepts/fibrosarcoma.html +++ b/concepts/fibrosarcoma.html @@ -11,12 +11,12 @@ Fibrosarcoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/fibrothecoma.html b/concepts/fibrothecoma.html index 917db5b0a5..cfb304c613 100644 --- a/concepts/fibrothecoma.html +++ b/concepts/fibrothecoma.html @@ -11,12 +11,12 @@ Fibrothecoma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/florid-follicular-hyperplasia-ptld.html b/concepts/florid-follicular-hyperplasia-ptld.html index 52759a7e03..7b606a754d 100644 --- a/concepts/florid-follicular-hyperplasia-ptld.html +++ b/concepts/florid-follicular-hyperplasia-ptld.html @@ -11,12 +11,12 @@ Florid Follicular Hyperplasia PTLD - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/fluorouracil.html b/concepts/fluorouracil.html index 8880d23a71..8744274a6b 100644 --- a/concepts/fluorouracil.html +++ b/concepts/fluorouracil.html @@ -11,12 +11,12 @@ Fluorouracil - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/follicular-dendritic-cell-sarcoma.html b/concepts/follicular-dendritic-cell-sarcoma.html index 08230d314b..41625092a5 100644 --- a/concepts/follicular-dendritic-cell-sarcoma.html +++ b/concepts/follicular-dendritic-cell-sarcoma.html @@ -11,12 +11,12 @@ Follicular Dendritic Cell Sarcoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/follicular-lymphoma.html b/concepts/follicular-lymphoma.html index 35c09ac180..0b7b23ffff 100644 --- a/concepts/follicular-lymphoma.html +++ b/concepts/follicular-lymphoma.html @@ -11,12 +11,12 @@ Follicular Lymphoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/follicular-t-cell-lymphoma.html b/concepts/follicular-t-cell-lymphoma.html index b2ae8335dc..b350f142f3 100644 --- a/concepts/follicular-t-cell-lymphoma.html +++ b/concepts/follicular-t-cell-lymphoma.html @@ -11,12 +11,12 @@ Follicular T-Cell Lymphoma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/follicular-thyroid-cancer.html b/concepts/follicular-thyroid-cancer.html index 32e70ca5be..ae8ea1f3ec 100644 --- a/concepts/follicular-thyroid-cancer.html +++ b/concepts/follicular-thyroid-cancer.html @@ -11,12 +11,12 @@ Follicular Thyroid Cancer - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/fotemustine.html b/concepts/fotemustine.html index 7cd0099279..616f4047c3 100644 --- a/concepts/fotemustine.html +++ b/concepts/fotemustine.html @@ -11,12 +11,12 @@ Fotemustine - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/fox-chase-cancer-center.html b/concepts/fox-chase-cancer-center.html index 018039f162..d93fa73bb3 100644 --- a/concepts/fox-chase-cancer-center.html +++ b/concepts/fox-chase-cancer-center.html @@ -11,12 +11,12 @@ Fox Chase Cancer Center - + - + @@ -395,7 +395,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/fred-and-pamela-buffett-cancer-center.html b/concepts/fred-and-pamela-buffett-cancer-center.html index 86279e2da5..99478dff9a 100644 --- a/concepts/fred-and-pamela-buffett-cancer-center.html +++ b/concepts/fred-and-pamela-buffett-cancer-center.html @@ -11,12 +11,12 @@ Fred and Pamela Buffett Cancer Center - + - + @@ -383,7 +383,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/fred-hutch.html b/concepts/fred-hutch.html index d9182cfd67..711c1d0c82 100644 --- a/concepts/fred-hutch.html +++ b/concepts/fred-hutch.html @@ -11,12 +11,12 @@ Fred Hutchinson Cancer Center - + - + @@ -391,7 +391,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/fred-hutchinson-university-of-washington-cancer-consortium.html b/concepts/fred-hutchinson-university-of-washington-cancer-consortium.html index 4dc6caa070..bf2a5d5f4a 100644 --- a/concepts/fred-hutchinson-university-of-washington-cancer-consortium.html +++ b/concepts/fred-hutchinson-university-of-washington-cancer-consortium.html @@ -11,12 +11,12 @@ Fred Hutchinson/University of Washington Cancer Consortium - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/free-diving.html b/concepts/free-diving.html index bb32294aad..a5ffa10c56 100644 --- a/concepts/free-diving.html +++ b/concepts/free-diving.html @@ -11,12 +11,12 @@ Free Diving - + - + @@ -375,7 +375,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/french-national-cancer-institute.html b/concepts/french-national-cancer-institute.html index f74e8fee55..3df2f446d1 100644 --- a/concepts/french-national-cancer-institute.html +++ b/concepts/french-national-cancer-institute.html @@ -11,12 +11,12 @@ French National Cancer Institute - + - + @@ -379,7 +379,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/gallbladder-adenocarcinoma-nos.html b/concepts/gallbladder-adenocarcinoma-nos.html index 41f9a29f73..b60c991a84 100644 --- a/concepts/gallbladder-adenocarcinoma-nos.html +++ b/concepts/gallbladder-adenocarcinoma-nos.html @@ -11,12 +11,12 @@ Gallbladder Adenocarcinoma, NOS - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/gallbladder-cancer.html b/concepts/gallbladder-cancer.html index 26a2c3fe6e..7ad0699888 100644 --- a/concepts/gallbladder-cancer.html +++ b/concepts/gallbladder-cancer.html @@ -11,12 +11,12 @@ Gallbladder Cancer - + - + @@ -383,7 +383,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/gamma-heavy-chain-disease.html b/concepts/gamma-heavy-chain-disease.html index 7456243cb9..163287fb47 100644 --- a/concepts/gamma-heavy-chain-disease.html +++ b/concepts/gamma-heavy-chain-disease.html @@ -11,12 +11,12 @@ Gamma Heavy-Chain Disease - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/gangliocytoma.html b/concepts/gangliocytoma.html index 3039b13c1e..88ace637f3 100644 --- a/concepts/gangliocytoma.html +++ b/concepts/gangliocytoma.html @@ -11,12 +11,12 @@ Gangliocytoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/ganglioglioma.html b/concepts/ganglioglioma.html index b67a9af7fc..388b6b47c8 100644 --- a/concepts/ganglioglioma.html +++ b/concepts/ganglioglioma.html @@ -11,12 +11,12 @@ Ganglioglioma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/ganglioneuroblastoma.html b/concepts/ganglioneuroblastoma.html index 5125373561..bcae4d6828 100644 --- a/concepts/ganglioneuroblastoma.html +++ b/concepts/ganglioneuroblastoma.html @@ -11,12 +11,12 @@ Ganglioneuroblastoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/ganglioneuroma.html b/concepts/ganglioneuroma.html index d81e8febdb..97a7d28505 100644 --- a/concepts/ganglioneuroma.html +++ b/concepts/ganglioneuroma.html @@ -11,12 +11,12 @@ Ganglioneuroma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/gastrectomy.html b/concepts/gastrectomy.html index a67f6ef66f..2e9b91613b 100644 --- a/concepts/gastrectomy.html +++ b/concepts/gastrectomy.html @@ -11,12 +11,12 @@ Gastrectomy - + - + @@ -378,7 +378,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/gastric-remnant-adenocarcinoma.html b/concepts/gastric-remnant-adenocarcinoma.html index a9232be3ea..f9f4efb96c 100644 --- a/concepts/gastric-remnant-adenocarcinoma.html +++ b/concepts/gastric-remnant-adenocarcinoma.html @@ -11,12 +11,12 @@ Gastric Remnant Adenocarcinoma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/gastric-type-mucinous-carcinoma.html b/concepts/gastric-type-mucinous-carcinoma.html index e6b6417338..1035dd04d5 100644 --- a/concepts/gastric-type-mucinous-carcinoma.html +++ b/concepts/gastric-type-mucinous-carcinoma.html @@ -11,12 +11,12 @@ Gastric Type Mucinous Carcinoma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/gastrointestinal-neuroendocrine-tumors-of-the-esophagus-stomach.html b/concepts/gastrointestinal-neuroendocrine-tumors-of-the-esophagus-stomach.html index 5bc942080e..c86e27cf6e 100644 --- a/concepts/gastrointestinal-neuroendocrine-tumors-of-the-esophagus-stomach.html +++ b/concepts/gastrointestinal-neuroendocrine-tumors-of-the-esophagus-stomach.html @@ -11,12 +11,12 @@ Gastrointestinal Neuroendocrine Tumors of the Esophagus/Stomach - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/gastrointestinal-neuroendocrine-tumors.html b/concepts/gastrointestinal-neuroendocrine-tumors.html index c67e8c8ed8..40924a3357 100644 --- a/concepts/gastrointestinal-neuroendocrine-tumors.html +++ b/concepts/gastrointestinal-neuroendocrine-tumors.html @@ -11,12 +11,12 @@ Gastrointestinal Neuroendocrine Tumors - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/gastrointestinal-stromal-tumor.html b/concepts/gastrointestinal-stromal-tumor.html index b3938528f9..352d7e34ed 100644 --- a/concepts/gastrointestinal-stromal-tumor.html +++ b/concepts/gastrointestinal-stromal-tumor.html @@ -11,12 +11,12 @@ Gastrointestinal Stromal Tumor - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/gco.html b/concepts/gco.html index 67e150cd21..6bb0f65efb 100644 --- a/concepts/gco.html +++ b/concepts/gco.html @@ -11,12 +11,12 @@ GCO - + - + @@ -379,7 +379,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/gcr-ug.html b/concepts/gcr-ug.html index 4b29cf9846..731b8aba70 100644 --- a/concepts/gcr-ug.html +++ b/concepts/gcr-ug.html @@ -11,12 +11,12 @@ gcr - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/gdc.html b/concepts/gdc.html index 4568bf6d94..2ff034f7ea 100644 --- a/concepts/gdc.html +++ b/concepts/gdc.html @@ -11,12 +11,12 @@ GDC - + - + @@ -378,7 +378,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/gefitinib.html b/concepts/gefitinib.html index 7c72944d5e..93bf8e2d88 100644 --- a/concepts/gefitinib.html +++ b/concepts/gefitinib.html @@ -11,12 +11,12 @@ Gefitinib - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/gemcitabine.html b/concepts/gemcitabine.html index 36304053b5..98ac6bd7a2 100644 --- a/concepts/gemcitabine.html +++ b/concepts/gemcitabine.html @@ -11,12 +11,12 @@ Gemcitabine - + - + @@ -381,7 +381,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/genentech.html b/concepts/genentech.html index 1b38d9aae9..6a15e7d253 100644 --- a/concepts/genentech.html +++ b/concepts/genentech.html @@ -11,12 +11,12 @@ Genentech - + - + @@ -390,7 +390,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/georgetown-lombardi-comprehensive-cancer-center.html b/concepts/georgetown-lombardi-comprehensive-cancer-center.html index 331583fffb..1a9e9b1439 100644 --- a/concepts/georgetown-lombardi-comprehensive-cancer-center.html +++ b/concepts/georgetown-lombardi-comprehensive-cancer-center.html @@ -11,12 +11,12 @@ Georgetown Lombardi Comprehensive Cancer Center - + - + @@ -393,7 +393,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/georgia-ncc.html b/concepts/georgia-ncc.html index 04ff3d180e..81d5a6d205 100644 --- a/concepts/georgia-ncc.html +++ b/concepts/georgia-ncc.html @@ -11,12 +11,12 @@ National Cancer Center - + - + @@ -379,7 +379,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/germ-cell-tumor-brain.html b/concepts/germ-cell-tumor-brain.html index 32c864ddd8..b459cedc0b 100644 --- a/concepts/germ-cell-tumor-brain.html +++ b/concepts/germ-cell-tumor-brain.html @@ -11,12 +11,12 @@ Germ Cell Tumor, Brain - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/germ-cell-tumor-of-the-vulva.html b/concepts/germ-cell-tumor-of-the-vulva.html index 5dafa17192..0be956a71e 100644 --- a/concepts/germ-cell-tumor-of-the-vulva.html +++ b/concepts/germ-cell-tumor-of-the-vulva.html @@ -11,12 +11,12 @@ Germ Cell Tumor of the Vulva - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/germ-cell-tumor-with-somatic-type-malignancy.html b/concepts/germ-cell-tumor-with-somatic-type-malignancy.html index a4c9bd33a2..1ef97ed14c 100644 --- a/concepts/germ-cell-tumor-with-somatic-type-malignancy.html +++ b/concepts/germ-cell-tumor-with-somatic-type-malignancy.html @@ -11,12 +11,12 @@ Germ Cell Tumor with Somatic-Type Malignancy - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/germany-ncc.html b/concepts/germany-ncc.html index 5a097f3878..0365f0a83c 100644 --- a/concepts/germany-ncc.html +++ b/concepts/germany-ncc.html @@ -11,12 +11,12 @@ German Cancer Research Center - + - + @@ -378,7 +378,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/germinal-center-b-cell-type.html b/concepts/germinal-center-b-cell-type.html index 1732e59c5b..b2df169eab 100644 --- a/concepts/germinal-center-b-cell-type.html +++ b/concepts/germinal-center-b-cell-type.html @@ -11,12 +11,12 @@ Germinal Center B-Cell Type - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/germinoma.html b/concepts/germinoma.html index 86d45cf869..59dd82e893 100644 --- a/concepts/germinoma.html +++ b/concepts/germinoma.html @@ -11,12 +11,12 @@ Germinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/gestational-trophoblastic-disease.html b/concepts/gestational-trophoblastic-disease.html index 230063ac6e..cf4490990a 100644 --- a/concepts/gestational-trophoblastic-disease.html +++ b/concepts/gestational-trophoblastic-disease.html @@ -11,12 +11,12 @@ Gestational Trophoblastic Disease - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/gfobt.html b/concepts/gfobt.html index 13f4becd41..33f51ca758 100644 --- a/concepts/gfobt.html +++ b/concepts/gfobt.html @@ -11,12 +11,12 @@ gFOBT - + - + @@ -377,7 +377,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/giant-cell-carcinoma-of-the-lung.html b/concepts/giant-cell-carcinoma-of-the-lung.html index eb6e919dd7..7041a3d073 100644 --- a/concepts/giant-cell-carcinoma-of-the-lung.html +++ b/concepts/giant-cell-carcinoma-of-the-lung.html @@ -11,12 +11,12 @@ Giant Cell Carcinoma of the Lung - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/giant-cell-tumor-of-bone.html b/concepts/giant-cell-tumor-of-bone.html index 6327562d92..9a95c86c5c 100644 --- a/concepts/giant-cell-tumor-of-bone.html +++ b/concepts/giant-cell-tumor-of-bone.html @@ -11,12 +11,12 @@ Giant Cell Tumor of Bone - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/gideon-burrows-dot-com.html b/concepts/gideon-burrows-dot-com.html index 8b07958c41..6b3bc03ab7 100644 --- a/concepts/gideon-burrows-dot-com.html +++ b/concepts/gideon-burrows-dot-com.html @@ -11,12 +11,12 @@ Gideon Burrows: Brain Tumours and Cancer - + - + @@ -377,7 +377,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/gilead-sciences.html b/concepts/gilead-sciences.html index 95e90950d4..24e87d992d 100644 --- a/concepts/gilead-sciences.html +++ b/concepts/gilead-sciences.html @@ -11,12 +11,12 @@ Gilead Sciences - + - + @@ -377,7 +377,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/glassy-cell-carcinoma-of-the-cervix.html b/concepts/glassy-cell-carcinoma-of-the-cervix.html index b4ef0212ca..ce6cc70176 100644 --- a/concepts/glassy-cell-carcinoma-of-the-cervix.html +++ b/concepts/glassy-cell-carcinoma-of-the-cervix.html @@ -11,12 +11,12 @@ Glassy Cell Carcinoma of the Cervix - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/glioblastoma-multiforme.html b/concepts/glioblastoma-multiforme.html index 9daa2bce29..14530c284c 100644 --- a/concepts/glioblastoma-multiforme.html +++ b/concepts/glioblastoma-multiforme.html @@ -11,12 +11,12 @@ Glioblastoma Multiforme - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/glioblastoma.html b/concepts/glioblastoma.html index 65d00d7e4b..48e9639ec6 100644 --- a/concepts/glioblastoma.html +++ b/concepts/glioblastoma.html @@ -11,12 +11,12 @@ Glioblastoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/glioma-nos.html b/concepts/glioma-nos.html index bebdb1c5a5..5637539bbd 100644 --- a/concepts/glioma-nos.html +++ b/concepts/glioma-nos.html @@ -11,12 +11,12 @@ Glioma, NOS - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/gliosarcoma.html b/concepts/gliosarcoma.html index b72c10d8ab..c0b4902f78 100644 --- a/concepts/gliosarcoma.html +++ b/concepts/gliosarcoma.html @@ -11,12 +11,12 @@ Gliosarcoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/glomangiosarcoma.html b/concepts/glomangiosarcoma.html index bb51a234d8..6964419994 100644 --- a/concepts/glomangiosarcoma.html +++ b/concepts/glomangiosarcoma.html @@ -11,12 +11,12 @@ Glomangiosarcoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/goblet-cell-carcinoid-of-the-appendix.html b/concepts/goblet-cell-carcinoid-of-the-appendix.html index d52f245868..2a69698bac 100644 --- a/concepts/goblet-cell-carcinoid-of-the-appendix.html +++ b/concepts/goblet-cell-carcinoid-of-the-appendix.html @@ -11,12 +11,12 @@ Goblet Cell Carcinoid of the Appendix - + - + @@ -381,7 +381,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/gonadoblastoma.html b/concepts/gonadoblastoma.html index cc4c32be1a..e9825e1819 100644 --- a/concepts/gonadoblastoma.html +++ b/concepts/gonadoblastoma.html @@ -11,12 +11,12 @@ Gonadoblastoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/granular-cell-tumor.html b/concepts/granular-cell-tumor.html index d7b4483c5d..cbbefc5be5 100644 --- a/concepts/granular-cell-tumor.html +++ b/concepts/granular-cell-tumor.html @@ -11,12 +11,12 @@ Granular Cell Tumor - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/granulosa-cell-tumor.html b/concepts/granulosa-cell-tumor.html index ec5786b339..91a075f87a 100644 --- a/concepts/granulosa-cell-tumor.html +++ b/concepts/granulosa-cell-tumor.html @@ -11,12 +11,12 @@ Granulosa Cell Tumor - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/gsk.html b/concepts/gsk.html index 97107fd28d..565592ddba 100644 --- a/concepts/gsk.html +++ b/concepts/gsk.html @@ -11,12 +11,12 @@ GSK plc - + - + @@ -381,7 +381,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/hairy-cell-leukemia-variant.html b/concepts/hairy-cell-leukemia-variant.html index ac6315eb1d..f4e1869508 100644 --- a/concepts/hairy-cell-leukemia-variant.html +++ b/concepts/hairy-cell-leukemia-variant.html @@ -11,12 +11,12 @@ Hairy Cell Leukemia-Variant - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/hairy-cell-leukemia.html b/concepts/hairy-cell-leukemia.html index 9894f58e29..7b3287e8cf 100644 --- a/concepts/hairy-cell-leukemia.html +++ b/concepts/hairy-cell-leukemia.html @@ -11,12 +11,12 @@ Hairy Cell Leukemia - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/harold-c-simmons-comprehensive-cancer-center.html b/concepts/harold-c-simmons-comprehensive-cancer-center.html index b959bd7d7f..03a04b4df6 100644 --- a/concepts/harold-c-simmons-comprehensive-cancer-center.html +++ b/concepts/harold-c-simmons-comprehensive-cancer-center.html @@ -11,12 +11,12 @@ Harold C. Simmons Comprehensive Cancer Center - + - + @@ -384,7 +384,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/hawaii-tumor-registry.html b/concepts/hawaii-tumor-registry.html index 1de277b2ce..99ae81f890 100644 --- a/concepts/hawaii-tumor-registry.html +++ b/concepts/hawaii-tumor-registry.html @@ -11,12 +11,12 @@ Hawaiʻi Tumor Registry - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/head-and-neck-carcinoma-other.html b/concepts/head-and-neck-carcinoma-other.html index e720e27744..a81088a5cc 100644 --- a/concepts/head-and-neck-carcinoma-other.html +++ b/concepts/head-and-neck-carcinoma-other.html @@ -11,12 +11,12 @@ Head and Neck Carcinoma, Other - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/head-and-neck-mucosal-melanoma.html b/concepts/head-and-neck-mucosal-melanoma.html index eeb890b28e..8c648f8b5b 100644 --- a/concepts/head-and-neck-mucosal-melanoma.html +++ b/concepts/head-and-neck-mucosal-melanoma.html @@ -11,12 +11,12 @@ Head and Neck Mucosal Melanoma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/head-and-neck-neuroendocrine-carcinoma.html b/concepts/head-and-neck-neuroendocrine-carcinoma.html index b0a9ecc99c..142d670159 100644 --- a/concepts/head-and-neck-neuroendocrine-carcinoma.html +++ b/concepts/head-and-neck-neuroendocrine-carcinoma.html @@ -11,12 +11,12 @@ Head and Neck Neuroendocrine Carcinoma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/head-and-neck-squamous-cell-carcinoma-of-unknown-primary.html b/concepts/head-and-neck-squamous-cell-carcinoma-of-unknown-primary.html index df17f03a0a..1f9c40fa5a 100644 --- a/concepts/head-and-neck-squamous-cell-carcinoma-of-unknown-primary.html +++ b/concepts/head-and-neck-squamous-cell-carcinoma-of-unknown-primary.html @@ -11,12 +11,12 @@ Head and Neck Squamous Cell Carcinoma of Unknown Primary - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/head-and-neck-squamous-cell-carcinoma.html b/concepts/head-and-neck-squamous-cell-carcinoma.html index 38c7f59821..ce31d5c86f 100644 --- a/concepts/head-and-neck-squamous-cell-carcinoma.html +++ b/concepts/head-and-neck-squamous-cell-carcinoma.html @@ -11,12 +11,12 @@ Head and Neck Squamous Cell Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/head-and-neck.html b/concepts/head-and-neck.html index 6502a6af18..d377adc4e7 100644 --- a/concepts/head-and-neck.html +++ b/concepts/head-and-neck.html @@ -11,12 +11,12 @@ Head and Neck Cancer - + - + @@ -385,7 +385,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/healing-strong.html b/concepts/healing-strong.html index b3255c8888..434511d383 100644 --- a/concepts/healing-strong.html +++ b/concepts/healing-strong.html @@ -11,12 +11,12 @@ HealingStrong - + - + @@ -389,7 +389,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/hemangioblastoma.html b/concepts/hemangioblastoma.html index 0e4209393f..4d70b4cec6 100644 --- a/concepts/hemangioblastoma.html +++ b/concepts/hemangioblastoma.html @@ -11,12 +11,12 @@ Hemangioblastoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/hemangioma.html b/concepts/hemangioma.html index 2df52e92cc..1d4107a739 100644 --- a/concepts/hemangioma.html +++ b/concepts/hemangioma.html @@ -11,12 +11,12 @@ Hemangioma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/hemangiopericytoma-of-the-central-nervous-system.html b/concepts/hemangiopericytoma-of-the-central-nervous-system.html index 33c2ff4180..f8bf92a9e1 100644 --- a/concepts/hemangiopericytoma-of-the-central-nervous-system.html +++ b/concepts/hemangiopericytoma-of-the-central-nervous-system.html @@ -11,12 +11,12 @@ Hemangiopericytoma of the Central Nervous System - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/hepatectomy.html b/concepts/hepatectomy.html index b0ebd6cdd7..ab4f3369cb 100644 --- a/concepts/hepatectomy.html +++ b/concepts/hepatectomy.html @@ -11,12 +11,12 @@ Hepatectomy - + - + @@ -375,7 +375,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/hepatic-arterial-infusion.html b/concepts/hepatic-arterial-infusion.html index b6f73f5b36..1468eea198 100644 --- a/concepts/hepatic-arterial-infusion.html +++ b/concepts/hepatic-arterial-infusion.html @@ -11,12 +11,12 @@ Hepatic Arterial Infusion - + - + @@ -375,7 +375,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/hepatoblastoma.html b/concepts/hepatoblastoma.html index 00d42cfa24..c799932b44 100644 --- a/concepts/hepatoblastoma.html +++ b/concepts/hepatoblastoma.html @@ -11,12 +11,12 @@ Hepatoblastoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/hepatocellular-adenoma.html b/concepts/hepatocellular-adenoma.html index 1a97c10a36..62350cc420 100644 --- a/concepts/hepatocellular-adenoma.html +++ b/concepts/hepatocellular-adenoma.html @@ -11,12 +11,12 @@ Hepatocellular Adenoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/hepatocellular-carcinoma-plus-intrahepatic-cholangiocarcinoma.html b/concepts/hepatocellular-carcinoma-plus-intrahepatic-cholangiocarcinoma.html index f5a1a70de2..ef4f155448 100644 --- a/concepts/hepatocellular-carcinoma-plus-intrahepatic-cholangiocarcinoma.html +++ b/concepts/hepatocellular-carcinoma-plus-intrahepatic-cholangiocarcinoma.html @@ -11,12 +11,12 @@ Hepatocellular Carcinoma plus Intrahepatic Cholangiocarcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/hepatocellular-carcinoma.html b/concepts/hepatocellular-carcinoma.html index 765cb33a40..b75c4cff88 100644 --- a/concepts/hepatocellular-carcinoma.html +++ b/concepts/hepatocellular-carcinoma.html @@ -11,12 +11,12 @@ Hepatocellular Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/hepatosplenic-t-cell-lymphoma.html b/concepts/hepatosplenic-t-cell-lymphoma.html index 320ce96482..edf8e3d4cc 100644 --- a/concepts/hepatosplenic-t-cell-lymphoma.html +++ b/concepts/hepatosplenic-t-cell-lymphoma.html @@ -11,12 +11,12 @@ Hepatosplenic T-cell Lymphoma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/herbert-irving-comprehensive-cancer-center.html b/concepts/herbert-irving-comprehensive-cancer-center.html index 685ad70e66..4acc3784b8 100644 --- a/concepts/herbert-irving-comprehensive-cancer-center.html +++ b/concepts/herbert-irving-comprehensive-cancer-center.html @@ -11,12 +11,12 @@ Herbert Irving Comprehensive Cancer Center - + - + @@ -392,7 +392,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/hhs.html b/concepts/hhs.html index 4bb7832046..ab6ec8b12b 100644 --- a/concepts/hhs.html +++ b/concepts/hhs.html @@ -11,12 +11,12 @@ United States Department of Health and Human Services - + - + @@ -387,7 +387,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/hhv8-positive-dlbcl-nos.html b/concepts/hhv8-positive-dlbcl-nos.html index 7785d3d2ca..ac4673c473 100644 --- a/concepts/hhv8-positive-dlbcl-nos.html +++ b/concepts/hhv8-positive-dlbcl-nos.html @@ -11,12 +11,12 @@ HHV8 Positive DLBCL, NOS - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/high-grade-b-cell-lymphoma-nos.html b/concepts/high-grade-b-cell-lymphoma-nos.html index 814873afdb..6afa7864eb 100644 --- a/concepts/high-grade-b-cell-lymphoma-nos.html +++ b/concepts/high-grade-b-cell-lymphoma-nos.html @@ -11,12 +11,12 @@ High-Grade B-Cell Lymphoma, NOS - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/high-grade-b-cell-lymphoma-with-myc-and-bcl2-and-or-bcl6-rearrangements.html b/concepts/high-grade-b-cell-lymphoma-with-myc-and-bcl2-and-or-bcl6-rearrangements.html index 0cf254127e..86be3c09a8 100644 --- a/concepts/high-grade-b-cell-lymphoma-with-myc-and-bcl2-and-or-bcl6-rearrangements.html +++ b/concepts/high-grade-b-cell-lymphoma-with-myc-and-bcl2-and-or-bcl6-rearrangements.html @@ -11,12 +11,12 @@ High-Grade B-Cell Lymphoma, with MYC and BCL2 and/or BCL6 Rearrangements - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/high-grade-endometrial-stromal-sarcoma.html b/concepts/high-grade-endometrial-stromal-sarcoma.html index dbd123d76d..89d0d45bba 100644 --- a/concepts/high-grade-endometrial-stromal-sarcoma.html +++ b/concepts/high-grade-endometrial-stromal-sarcoma.html @@ -11,12 +11,12 @@ High-Grade Endometrial Stromal Sarcoma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/high-grade-glioma-nos.html b/concepts/high-grade-glioma-nos.html index 670d575a59..00441d8a4c 100644 --- a/concepts/high-grade-glioma-nos.html +++ b/concepts/high-grade-glioma-nos.html @@ -11,12 +11,12 @@ High-Grade Glioma, NOS - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/high-grade-neuroendocrine-carcinoma-of-the-colon-and-rectum.html b/concepts/high-grade-neuroendocrine-carcinoma-of-the-colon-and-rectum.html index 47adad2b87..becfb08105 100644 --- a/concepts/high-grade-neuroendocrine-carcinoma-of-the-colon-and-rectum.html +++ b/concepts/high-grade-neuroendocrine-carcinoma-of-the-colon-and-rectum.html @@ -11,12 +11,12 @@ High-Grade Neuroendocrine Carcinoma of the Colon and Rectum - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/high-grade-neuroendocrine-carcinoma-of-the-esophagus.html b/concepts/high-grade-neuroendocrine-carcinoma-of-the-esophagus.html index 475de7d4c4..84553da685 100644 --- a/concepts/high-grade-neuroendocrine-carcinoma-of-the-esophagus.html +++ b/concepts/high-grade-neuroendocrine-carcinoma-of-the-esophagus.html @@ -11,12 +11,12 @@ High-Grade Neuroendocrine Carcinoma of the Esophagus - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/high-grade-neuroendocrine-carcinoma-of-the-ovary.html b/concepts/high-grade-neuroendocrine-carcinoma-of-the-ovary.html index 246f41c5c8..459f148178 100644 --- a/concepts/high-grade-neuroendocrine-carcinoma-of-the-ovary.html +++ b/concepts/high-grade-neuroendocrine-carcinoma-of-the-ovary.html @@ -11,12 +11,12 @@ High-Grade Neuroendocrine Carcinoma of the Ovary - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/high-grade-neuroendocrine-carcinoma-of-the-stomach.html b/concepts/high-grade-neuroendocrine-carcinoma-of-the-stomach.html index efa277f636..a5d0dd6461 100644 --- a/concepts/high-grade-neuroendocrine-carcinoma-of-the-stomach.html +++ b/concepts/high-grade-neuroendocrine-carcinoma-of-the-stomach.html @@ -11,12 +11,12 @@ High-Grade Neuroendocrine Carcinoma of the Stomach - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/high-grade-neuroepithelial-tumor.html b/concepts/high-grade-neuroepithelial-tumor.html index 8c791ce013..b4d3dd8204 100644 --- a/concepts/high-grade-neuroepithelial-tumor.html +++ b/concepts/high-grade-neuroepithelial-tumor.html @@ -11,12 +11,12 @@ High-Grade Neuroepithelial Tumor - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/high-grade-serous-fallopian-tube-cancer.html b/concepts/high-grade-serous-fallopian-tube-cancer.html index 1005a7d887..8bdb7d0e6d 100644 --- a/concepts/high-grade-serous-fallopian-tube-cancer.html +++ b/concepts/high-grade-serous-fallopian-tube-cancer.html @@ -11,12 +11,12 @@ High-Grade Serous Fallopian Tube Cancer - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/high-grade-serous-ovarian-cancer.html b/concepts/high-grade-serous-ovarian-cancer.html index b28bc51a7a..287d2af0b0 100644 --- a/concepts/high-grade-serous-ovarian-cancer.html +++ b/concepts/high-grade-serous-ovarian-cancer.html @@ -11,12 +11,12 @@ High-Grade Serous Ovarian Cancer - + - + @@ -381,7 +381,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/high-grade-surface-osteosarcoma.html b/concepts/high-grade-surface-osteosarcoma.html index 39e0c2cee1..67cdea98ce 100644 --- a/concepts/high-grade-surface-osteosarcoma.html +++ b/concepts/high-grade-surface-osteosarcoma.html @@ -11,12 +11,12 @@ High-Grade Surface Osteosarcoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/histiocytic-and-dendritic-cell-neoplasms.html b/concepts/histiocytic-and-dendritic-cell-neoplasms.html index 410aea1bfd..0ab4545ff2 100644 --- a/concepts/histiocytic-and-dendritic-cell-neoplasms.html +++ b/concepts/histiocytic-and-dendritic-cell-neoplasms.html @@ -11,12 +11,12 @@ Histiocytic and Dendritic Cell Neoplasms - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/histiocytic-dendritic-cell-sarcoma.html b/concepts/histiocytic-dendritic-cell-sarcoma.html index 8ee866eac4..a96d0dbbe0 100644 --- a/concepts/histiocytic-dendritic-cell-sarcoma.html +++ b/concepts/histiocytic-dendritic-cell-sarcoma.html @@ -11,12 +11,12 @@ Histiocytic Dendritic Cell Sarcoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/histiocytic-sarcoma.html b/concepts/histiocytic-sarcoma.html index 03b245540f..c762a67fd6 100644 --- a/concepts/histiocytic-sarcoma.html +++ b/concepts/histiocytic-sarcoma.html @@ -11,12 +11,12 @@ Histiocytic Sarcoma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/hodgkin-lymphoma.html b/concepts/hodgkin-lymphoma.html index c60a933cb1..e46857e548 100644 --- a/concepts/hodgkin-lymphoma.html +++ b/concepts/hodgkin-lymphoma.html @@ -11,12 +11,12 @@ Hodgkin Lymphoma - + - + @@ -428,7 +428,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/holden-comprehensive-cancer-center.html b/concepts/holden-comprehensive-cancer-center.html index 4f47be4789..782b780509 100644 --- a/concepts/holden-comprehensive-cancer-center.html +++ b/concepts/holden-comprehensive-cancer-center.html @@ -11,12 +11,12 @@ Holden Comprehensive Cancer Center - + - + @@ -383,7 +383,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/hollings-cancer-center.html b/concepts/hollings-cancer-center.html index f6261953cf..da20b8305d 100644 --- a/concepts/hollings-cancer-center.html +++ b/concepts/hollings-cancer-center.html @@ -11,12 +11,12 @@ Hollings Cancer Center - + - + @@ -388,7 +388,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/hopa.html b/concepts/hopa.html index 19cdaa8571..e72aa1fac8 100644 --- a/concepts/hopa.html +++ b/concepts/hopa.html @@ -11,12 +11,12 @@ HOPA - + - + @@ -386,7 +386,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/hope4cancer.html b/concepts/hope4cancer.html index 8ed8a5f3d9..4d5ef3cfc2 100644 --- a/concepts/hope4cancer.html +++ b/concepts/hope4cancer.html @@ -11,12 +11,12 @@ Hope4Cancer - + - + @@ -383,7 +383,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/houston-methodist.html b/concepts/houston-methodist.html index e08c3ba155..2456885f4e 100644 --- a/concepts/houston-methodist.html +++ b/concepts/houston-methodist.html @@ -11,12 +11,12 @@ Houston Methodist Hospital - + - + @@ -388,7 +388,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/how-to-starve-cancer-book.html b/concepts/how-to-starve-cancer-book.html index 5c2d7d491e..e9ff4265ab 100644 --- a/concepts/how-to-starve-cancer-book.html +++ b/concepts/how-to-starve-cancer-book.html @@ -11,12 +11,12 @@ How to Starve Cancer: ...and Then Kill It With Ferroptosis - + - + @@ -378,7 +378,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/hungary-ncc.html b/concepts/hungary-ncc.html index 979e09097d..0710c126e4 100644 --- a/concepts/hungary-ncc.html +++ b/concepts/hungary-ncc.html @@ -11,12 +11,12 @@ National Institute of Oncology - + - + @@ -378,7 +378,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/huntsman-cancer-institute.html b/concepts/huntsman-cancer-institute.html index b4e6af9329..dbc1e356fb 100644 --- a/concepts/huntsman-cancer-institute.html +++ b/concepts/huntsman-cancer-institute.html @@ -11,12 +11,12 @@ Huntsman Cancer Institute - + - + @@ -395,7 +395,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/hurthle-cell-thyroid-cancer.html b/concepts/hurthle-cell-thyroid-cancer.html index df125c8cb4..5c8224b065 100644 --- a/concepts/hurthle-cell-thyroid-cancer.html +++ b/concepts/hurthle-cell-thyroid-cancer.html @@ -11,12 +11,12 @@ Hurthle Cell Thyroid Cancer - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/hyalinizing-trabecular-adenoma-of-the-thyroid.html b/concepts/hyalinizing-trabecular-adenoma-of-the-thyroid.html index 46fafd301b..e0eca196ad 100644 --- a/concepts/hyalinizing-trabecular-adenoma-of-the-thyroid.html +++ b/concepts/hyalinizing-trabecular-adenoma-of-the-thyroid.html @@ -11,12 +11,12 @@ Hyalinizing Trabecular Adenoma of the Thyroid - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/hydroa-vacciniforme-like-lymphoproliferative-disorder.html b/concepts/hydroa-vacciniforme-like-lymphoproliferative-disorder.html index 1b509c4775..bc7e155fc7 100644 --- a/concepts/hydroa-vacciniforme-like-lymphoproliferative-disorder.html +++ b/concepts/hydroa-vacciniforme-like-lymphoproliferative-disorder.html @@ -11,12 +11,12 @@ Hydroa Vacciniforme Like Lymphoproliferative Disorder - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/hydroxyurea.html b/concepts/hydroxyurea.html index 17f7504629..5c9a1fc918 100644 --- a/concepts/hydroxyurea.html +++ b/concepts/hydroxyurea.html @@ -11,12 +11,12 @@ Hydroxyurea - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/hypnosis.html b/concepts/hypnosis.html index ab6990206c..d21f089eaf 100644 --- a/concepts/hypnosis.html +++ b/concepts/hypnosis.html @@ -11,12 +11,12 @@ Hypnosis - + - + @@ -375,7 +375,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/hypopharynx-squamous-cell-carcinoma.html b/concepts/hypopharynx-squamous-cell-carcinoma.html index d9e1cce460..8819904a0e 100644 --- a/concepts/hypopharynx-squamous-cell-carcinoma.html +++ b/concepts/hypopharynx-squamous-cell-carcinoma.html @@ -11,12 +11,12 @@ Hypopharynx Squamous Cell Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/hysterectomy.html b/concepts/hysterectomy.html index 6a26809d9c..7c70b2c6a8 100644 --- a/concepts/hysterectomy.html +++ b/concepts/hysterectomy.html @@ -11,12 +11,12 @@ Hysterectomy - + - + @@ -378,7 +378,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/iacc-ao.html b/concepts/iacc-ao.html index 0cb20988f2..bc9f72f40e 100644 --- a/concepts/iacc-ao.html +++ b/concepts/iacc-ao.html @@ -11,12 +11,12 @@ IACC - + - + @@ -379,7 +379,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/iaea.html b/concepts/iaea.html index 249cbef033..06ca9f30b8 100644 --- a/concepts/iaea.html +++ b/concepts/iaea.html @@ -11,12 +11,12 @@ International Atomic Energy Agency - + - + @@ -375,7 +375,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/iarc.html b/concepts/iarc.html index df2e8518cb..e4fc86c6f8 100644 --- a/concepts/iarc.html +++ b/concepts/iarc.html @@ -11,12 +11,12 @@ IARC - + - + @@ -384,7 +384,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/ibcr-ng.html b/concepts/ibcr-ng.html index 4aa6a2a2bd..3cdc2ff267 100644 --- a/concepts/ibcr-ng.html +++ b/concepts/ibcr-ng.html @@ -11,12 +11,12 @@ IBCR - + - + @@ -379,7 +379,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/ican.html b/concepts/ican.html index b19e6d15ad..e608f5cc5d 100644 --- a/concepts/ican.html +++ b/concepts/ican.html @@ -11,12 +11,12 @@ ICAN - + - + @@ -384,7 +384,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/icd-10-pcs.html b/concepts/icd-10-pcs.html index 58d1f38f9e..a4418cc8a1 100644 --- a/concepts/icd-10-pcs.html +++ b/concepts/icd-10-pcs.html @@ -11,12 +11,12 @@ ICD-10-PCS - + - + @@ -377,7 +377,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/icelandic-cancer-society.html b/concepts/icelandic-cancer-society.html index e6c3239c9e..da34610aa3 100644 --- a/concepts/icelandic-cancer-society.html +++ b/concepts/icelandic-cancer-society.html @@ -11,12 +11,12 @@ Icelandic Cancer Society - + - + @@ -378,7 +378,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/idarubicin.html b/concepts/idarubicin.html index 43cfb5a7b6..8df30916f4 100644 --- a/concepts/idarubicin.html +++ b/concepts/idarubicin.html @@ -11,12 +11,12 @@ Idarubicin - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/ifosfamide.html b/concepts/ifosfamide.html index 536e395d9f..625401bb2c 100644 --- a/concepts/ifosfamide.html +++ b/concepts/ifosfamide.html @@ -11,12 +11,12 @@ Ifosfamide - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/iga.html b/concepts/iga.html index 375c55ebbd..6a11c82cd7 100644 --- a/concepts/iga.html +++ b/concepts/iga.html @@ -11,12 +11,12 @@ IgA - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/igg.html b/concepts/igg.html index ce8caebc13..2983baed51 100644 --- a/concepts/igg.html +++ b/concepts/igg.html @@ -11,12 +11,12 @@ IgG - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/igm.html b/concepts/igm.html index 5f1546c774..3a8a52f0eb 100644 --- a/concepts/igm.html +++ b/concepts/igm.html @@ -11,12 +11,12 @@ IgM - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/imatinib.html b/concepts/imatinib.html index 4e80fe1d85..6d5de2cf49 100644 --- a/concepts/imatinib.html +++ b/concepts/imatinib.html @@ -11,12 +11,12 @@ Imatinib - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/imerman-angels.html b/concepts/imerman-angels.html index 521f7f5f38..a62192827b 100644 --- a/concepts/imerman-angels.html +++ b/concepts/imerman-angels.html @@ -11,12 +11,12 @@ Imerman Angels - + - + @@ -376,7 +376,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/immature-teratoma-cns-brain.html b/concepts/immature-teratoma-cns-brain.html index 2a9687a16d..07fbc513b1 100644 --- a/concepts/immature-teratoma-cns-brain.html +++ b/concepts/immature-teratoma-cns-brain.html @@ -11,12 +11,12 @@ Immature Teratoma CNS/Brain - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/immature-teratoma-vulva-vagina.html b/concepts/immature-teratoma-vulva-vagina.html index ab8c36000a..13d7a6a8e5 100644 --- a/concepts/immature-teratoma-vulva-vagina.html +++ b/concepts/immature-teratoma-vulva-vagina.html @@ -11,12 +11,12 @@ Immature Teratoma Vulva/Vagina - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/immature-teratoma.html b/concepts/immature-teratoma.html index 0963f29938..72ddaf7814 100644 --- a/concepts/immature-teratoma.html +++ b/concepts/immature-teratoma.html @@ -11,12 +11,12 @@ Immature Teratoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/immunotherapy.html b/concepts/immunotherapy.html index d621c53fb8..cd07dbc000 100644 --- a/concepts/immunotherapy.html +++ b/concepts/immunotherapy.html @@ -11,12 +11,12 @@ Immunotherapy - + - + @@ -375,7 +375,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/imrt.html b/concepts/imrt.html index 4ec32c7385..5d6d70d7b3 100644 --- a/concepts/imrt.html +++ b/concepts/imrt.html @@ -11,12 +11,12 @@ Intensity-Modulated Radiation Therapy - + - + @@ -375,7 +375,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/in-situ-follicular-neoplasia.html b/concepts/in-situ-follicular-neoplasia.html index 19a1e348cd..8d59f109be 100644 --- a/concepts/in-situ-follicular-neoplasia.html +++ b/concepts/in-situ-follicular-neoplasia.html @@ -11,12 +11,12 @@ In Situ Follicular Neoplasia - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/in-situ-mantle-cell-neoplasia.html b/concepts/in-situ-mantle-cell-neoplasia.html index 9e9629d4e9..3a9c7a84c9 100644 --- a/concepts/in-situ-mantle-cell-neoplasia.html +++ b/concepts/in-situ-mantle-cell-neoplasia.html @@ -11,12 +11,12 @@ In Situ Mantle Cell Neoplasia - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/incan.html b/concepts/incan.html index 88c4879d95..4a5ea65af9 100644 --- a/concepts/incan.html +++ b/concepts/incan.html @@ -11,12 +11,12 @@ Instituto Nacional de Cancerología (Mexico) - + - + @@ -383,7 +383,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/indeterminate-dendritic-cell-tumor.html b/concepts/indeterminate-dendritic-cell-tumor.html index d326f45d0e..39c1bf4d88 100644 --- a/concepts/indeterminate-dendritic-cell-tumor.html +++ b/concepts/indeterminate-dendritic-cell-tumor.html @@ -11,12 +11,12 @@ Indeterminate Dendritic Cell Tumor - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/index-medicus.html b/concepts/index-medicus.html index 2496cef533..438163e25a 100644 --- a/concepts/index-medicus.html +++ b/concepts/index-medicus.html @@ -11,12 +11,12 @@ Index Medicus - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/india-nci.html b/concepts/india-nci.html index ef936b957a..30c4306b94 100644 --- a/concepts/india-nci.html +++ b/concepts/india-nci.html @@ -11,12 +11,12 @@ Rajiv Gandhi Cancer Institute and Research Centre - + - + @@ -385,7 +385,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/indiana-university-melvin-and-bren-simon-comprehensive-cancer-center.html b/concepts/indiana-university-melvin-and-bren-simon-comprehensive-cancer-center.html index 98c984a87f..a69f3c0606 100644 --- a/concepts/indiana-university-melvin-and-bren-simon-comprehensive-cancer-center.html +++ b/concepts/indiana-university-melvin-and-bren-simon-comprehensive-cancer-center.html @@ -11,12 +11,12 @@ Indiana University Melvin and Bren Simon Comprehensive Cancer Center - + - + @@ -393,7 +393,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/indolent-systemic-mastocytosis.html b/concepts/indolent-systemic-mastocytosis.html index 6f5338de13..170917d2ed 100644 --- a/concepts/indolent-systemic-mastocytosis.html +++ b/concepts/indolent-systemic-mastocytosis.html @@ -11,12 +11,12 @@ Indolent Systemic Mastocytosis - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/indolent-t-cell-lymphoproliferative-disorder-of-the-gi-tract.html b/concepts/indolent-t-cell-lymphoproliferative-disorder-of-the-gi-tract.html index ccb14bf90b..903d272f22 100644 --- a/concepts/indolent-t-cell-lymphoproliferative-disorder-of-the-gi-tract.html +++ b/concepts/indolent-t-cell-lymphoproliferative-disorder-of-the-gi-tract.html @@ -11,12 +11,12 @@ Indolent T-Cell Lymphoproliferative Disorder of the GI Tract - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/infantile-fibrosarcoma.html b/concepts/infantile-fibrosarcoma.html index e197c723c4..fad3d11698 100644 --- a/concepts/infantile-fibrosarcoma.html +++ b/concepts/infantile-fibrosarcoma.html @@ -11,12 +11,12 @@ Infantile Fibrosarcoma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/infectious-mononucleosis-ptld.html b/concepts/infectious-mononucleosis-ptld.html index 4883384b11..7dbe6d2ac8 100644 --- a/concepts/infectious-mononucleosis-ptld.html +++ b/concepts/infectious-mononucleosis-ptld.html @@ -11,12 +11,12 @@ Infectious Mononucleosis PTLD - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/inflammatory-breast-cancer.html b/concepts/inflammatory-breast-cancer.html index e8213182ef..18f07b12fd 100644 --- a/concepts/inflammatory-breast-cancer.html +++ b/concepts/inflammatory-breast-cancer.html @@ -11,12 +11,12 @@ Inflammatory Breast Cancer - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/inflammatory-myofibroblastic-bladder-tumor.html b/concepts/inflammatory-myofibroblastic-bladder-tumor.html index c99aa3152d..86be10ef68 100644 --- a/concepts/inflammatory-myofibroblastic-bladder-tumor.html +++ b/concepts/inflammatory-myofibroblastic-bladder-tumor.html @@ -11,12 +11,12 @@ Inflammatory Myofibroblastic Bladder Tumor - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/inflammatory-myofibroblastic-lung-tumor.html b/concepts/inflammatory-myofibroblastic-lung-tumor.html index 80d9a3018d..03dd77ebe1 100644 --- a/concepts/inflammatory-myofibroblastic-lung-tumor.html +++ b/concepts/inflammatory-myofibroblastic-lung-tumor.html @@ -11,12 +11,12 @@ Inflammatory Myofibroblastic Lung Tumor - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/inflammatory-myofibroblastic-tumor.html b/concepts/inflammatory-myofibroblastic-tumor.html index 08d80b8867..9e4bc06155 100644 --- a/concepts/inflammatory-myofibroblastic-tumor.html +++ b/concepts/inflammatory-myofibroblastic-tumor.html @@ -11,12 +11,12 @@ Inflammatory Myofibroblastic Tumor - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/interdigitating-dendritic-cell-sarcoma.html b/concepts/interdigitating-dendritic-cell-sarcoma.html index 7148c53a12..430e7a7483 100644 --- a/concepts/interdigitating-dendritic-cell-sarcoma.html +++ b/concepts/interdigitating-dendritic-cell-sarcoma.html @@ -11,12 +11,12 @@ Interdigitating Dendritic Cell Sarcoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/intestinal-ampullary-carcinoma.html b/concepts/intestinal-ampullary-carcinoma.html index a8fe7a5174..1995a72173 100644 --- a/concepts/intestinal-ampullary-carcinoma.html +++ b/concepts/intestinal-ampullary-carcinoma.html @@ -11,12 +11,12 @@ Intestinal Ampullary Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/intestinal-type-mucinous-carcinoma.html b/concepts/intestinal-type-mucinous-carcinoma.html index d50407e105..60280940b7 100644 --- a/concepts/intestinal-type-mucinous-carcinoma.html +++ b/concepts/intestinal-type-mucinous-carcinoma.html @@ -11,12 +11,12 @@ Intestinal Type Mucinous Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/intestinal-type-stomach-adenocarcinoma.html b/concepts/intestinal-type-stomach-adenocarcinoma.html index 25d97ce180..ac6ea05713 100644 --- a/concepts/intestinal-type-stomach-adenocarcinoma.html +++ b/concepts/intestinal-type-stomach-adenocarcinoma.html @@ -11,12 +11,12 @@ Intestinal Type Stomach Adenocarcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/intimal-sarcoma.html b/concepts/intimal-sarcoma.html index db8b83c923..b2edb2688f 100644 --- a/concepts/intimal-sarcoma.html +++ b/concepts/intimal-sarcoma.html @@ -11,12 +11,12 @@ Intimal Sarcoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/intraductal-papillary-mucinous-neoplasm.html b/concepts/intraductal-papillary-mucinous-neoplasm.html index f71af161c4..c4b93423ec 100644 --- a/concepts/intraductal-papillary-mucinous-neoplasm.html +++ b/concepts/intraductal-papillary-mucinous-neoplasm.html @@ -11,12 +11,12 @@ Intraductal Papillary Mucinous Neoplasm - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/intrahepatic-cholangiocarcinoma.html b/concepts/intrahepatic-cholangiocarcinoma.html index 5781db29f0..960c156e5a 100644 --- a/concepts/intrahepatic-cholangiocarcinoma.html +++ b/concepts/intrahepatic-cholangiocarcinoma.html @@ -11,12 +11,12 @@ Intrahepatic Cholangiocarcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/intramuscular-injection.html b/concepts/intramuscular-injection.html index 39c0e7c30b..f1f465b2ac 100644 --- a/concepts/intramuscular-injection.html +++ b/concepts/intramuscular-injection.html @@ -11,12 +11,12 @@ Intramuscular injection - + - + @@ -375,7 +375,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/intravascular-large-b-cell-lymphoma.html b/concepts/intravascular-large-b-cell-lymphoma.html index 67928cbcdb..1d7f21b9fa 100644 --- a/concepts/intravascular-large-b-cell-lymphoma.html +++ b/concepts/intravascular-large-b-cell-lymphoma.html @@ -11,12 +11,12 @@ Intravascular Large B-Cell Lymphoma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/intravenous-therapy.html b/concepts/intravenous-therapy.html index fbb364ae44..b690ab76c9 100644 --- a/concepts/intravenous-therapy.html +++ b/concepts/intravenous-therapy.html @@ -11,12 +11,12 @@ Intravenous therapy - + - + @@ -375,7 +375,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/intravesical-therapy.html b/concepts/intravesical-therapy.html index de371a40a8..5c75e39d85 100644 --- a/concepts/intravesical-therapy.html +++ b/concepts/intravesical-therapy.html @@ -11,12 +11,12 @@ Intravesical Therapy - + - + @@ -374,7 +374,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/invasive-breast-carcinoma.html b/concepts/invasive-breast-carcinoma.html index 878d6ade54..8f5e961ea7 100644 --- a/concepts/invasive-breast-carcinoma.html +++ b/concepts/invasive-breast-carcinoma.html @@ -11,12 +11,12 @@ Invasive Breast Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/invasive-hydatidiform-mole.html b/concepts/invasive-hydatidiform-mole.html index 787940f141..c5e572c95e 100644 --- a/concepts/invasive-hydatidiform-mole.html +++ b/concepts/invasive-hydatidiform-mole.html @@ -11,12 +11,12 @@ Invasive Hydatidiform Mole - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/inverted-urothelial-papilloma.html b/concepts/inverted-urothelial-papilloma.html index 4e9ec29c60..929619e1c0 100644 --- a/concepts/inverted-urothelial-papilloma.html +++ b/concepts/inverted-urothelial-papilloma.html @@ -11,12 +11,12 @@ Inverted Urothelial Papilloma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/iran-ncc.html b/concepts/iran-ncc.html index ddc580778b..c78e01b323 100644 --- a/concepts/iran-ncc.html +++ b/concepts/iran-ncc.html @@ -11,12 +11,12 @@ Iranian National Cancer Institute - + - + @@ -376,7 +376,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/ireland-nrg.html b/concepts/ireland-nrg.html index a5093ba0dd..b41c3e56e5 100644 --- a/concepts/ireland-nrg.html +++ b/concepts/ireland-nrg.html @@ -11,12 +11,12 @@ National Cancer Control Programme - + - + @@ -376,7 +376,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/irinotecan.html b/concepts/irinotecan.html index 4b8777f9f0..6be58d4775 100644 --- a/concepts/irinotecan.html +++ b/concepts/irinotecan.html @@ -11,12 +11,12 @@ Irinotecan - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/ixabepilone.html b/concepts/ixabepilone.html index b2cc41af09..e9d08c9812 100644 --- a/concepts/ixabepilone.html +++ b/concepts/ixabepilone.html @@ -11,12 +11,12 @@ Ixabepilone - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/johnson-and-johnson.html b/concepts/johnson-and-johnson.html index da8d5fd658..aafa582c59 100644 --- a/concepts/johnson-and-johnson.html +++ b/concepts/johnson-and-johnson.html @@ -11,12 +11,12 @@ Johnson & Johnson - + - + @@ -378,7 +378,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/jonsson-comprehensive-cancer-center.html b/concepts/jonsson-comprehensive-cancer-center.html index 93d2f06426..e8bbbf3229 100644 --- a/concepts/jonsson-comprehensive-cancer-center.html +++ b/concepts/jonsson-comprehensive-cancer-center.html @@ -11,12 +11,12 @@ Jonsson Comprehensive Cancer Center - + - + @@ -397,7 +397,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/jordan-ncc.html b/concepts/jordan-ncc.html index 6d05f2f56a..942668ddd9 100644 --- a/concepts/jordan-ncc.html +++ b/concepts/jordan-ncc.html @@ -11,12 +11,12 @@ King Hussein Cancer Center - + - + @@ -376,7 +376,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/journal-of-clinical-oncology.html b/concepts/journal-of-clinical-oncology.html index 6f187d8d17..c66ee265de 100644 --- a/concepts/journal-of-clinical-oncology.html +++ b/concepts/journal-of-clinical-oncology.html @@ -11,12 +11,12 @@ Journal of Clinical Oncology - + - + @@ -376,7 +376,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/journal-of-the-national-cancer-institute.html b/concepts/journal-of-the-national-cancer-institute.html index 7f97c20e57..371419c7d8 100644 --- a/concepts/journal-of-the-national-cancer-institute.html +++ b/concepts/journal-of-the-national-cancer-institute.html @@ -11,12 +11,12 @@ Journal of the National Cancer Institute - + - + @@ -376,7 +376,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/juvenile-myelomonocytic-leukemia.html b/concepts/juvenile-myelomonocytic-leukemia.html index 1d19d89615..78ce2e44b1 100644 --- a/concepts/juvenile-myelomonocytic-leukemia.html +++ b/concepts/juvenile-myelomonocytic-leukemia.html @@ -11,12 +11,12 @@ Juvenile Myelomonocytic Leukemia - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/juvenile-secretory-carcinoma-of-the-breast.html b/concepts/juvenile-secretory-carcinoma-of-the-breast.html index 87907e2bcf..7b73e596a5 100644 --- a/concepts/juvenile-secretory-carcinoma-of-the-breast.html +++ b/concepts/juvenile-secretory-carcinoma-of-the-breast.html @@ -11,12 +11,12 @@ Juvenile Secretory Carcinoma of the Breast - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/kaposi-sarcoma.html b/concepts/kaposi-sarcoma.html index a80c1986c9..de6a3d42c6 100644 --- a/concepts/kaposi-sarcoma.html +++ b/concepts/kaposi-sarcoma.html @@ -11,12 +11,12 @@ Karposi's Sarcoma - + - + @@ -420,7 +420,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/kazakhstan-ncc.html b/concepts/kazakhstan-ncc.html index a60ac48cb5..d79c30c68e 100644 --- a/concepts/kazakhstan-ncc.html +++ b/concepts/kazakhstan-ncc.html @@ -11,12 +11,12 @@ Institute of Oncology and Radiology of Kazakhstan - + - + @@ -376,7 +376,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/kcr-ug.html b/concepts/kcr-ug.html index 4e44114cc0..1db73d3a7f 100644 --- a/concepts/kcr-ug.html +++ b/concepts/kcr-ug.html @@ -11,12 +11,12 @@ kcr - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/kecr-kn.html b/concepts/kecr-kn.html index 5f43d65c86..7124b0b233 100644 --- a/concepts/kecr-kn.html +++ b/concepts/kecr-kn.html @@ -11,12 +11,12 @@ KECR - + - + @@ -378,7 +378,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/kegg.html b/concepts/kegg.html index a942ca67e9..788670a506 100644 --- a/concepts/kegg.html +++ b/concepts/kegg.html @@ -11,12 +11,12 @@ KEGG - + - + @@ -376,7 +376,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/kidney-cancer-subreddit.html b/concepts/kidney-cancer-subreddit.html index 8451426dcb..14f8ea21d0 100644 --- a/concepts/kidney-cancer-subreddit.html +++ b/concepts/kidney-cancer-subreddit.html @@ -11,12 +11,12 @@ Kidney Cancer Subreddit - + - + @@ -377,7 +377,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/kidney.html b/concepts/kidney.html index 2b5fb9f218..08cc93e3ce 100644 --- a/concepts/kidney.html +++ b/concepts/kidney.html @@ -11,12 +11,12 @@ Kidney Cancer - + - + @@ -431,7 +431,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/kncr-kn.html b/concepts/kncr-kn.html index cf3c7bde2f..024eba9bab 100644 --- a/concepts/kncr-kn.html +++ b/concepts/kncr-kn.html @@ -11,12 +11,12 @@ KNCR - + - + @@ -378,7 +378,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/knight-cancer-institute.html b/concepts/knight-cancer-institute.html index ba5fb4c570..e0c97faa2e 100644 --- a/concepts/knight-cancer-institute.html +++ b/concepts/knight-cancer-institute.html @@ -11,12 +11,12 @@ Knight Cancer Institute - + - + @@ -386,7 +386,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/kom-op-tegen-kanker.html b/concepts/kom-op-tegen-kanker.html index 71410f62a5..8d09f80392 100644 --- a/concepts/kom-op-tegen-kanker.html +++ b/concepts/kom-op-tegen-kanker.html @@ -11,12 +11,12 @@ Kom op tegen Kanker - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/kscr-gh.html b/concepts/kscr-gh.html index 9f56e40099..9cc1602819 100644 --- a/concepts/kscr-gh.html +++ b/concepts/kscr-gh.html @@ -11,12 +11,12 @@ KsCR - + - + @@ -378,7 +378,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/langerhans-cell-histiocytosis.html b/concepts/langerhans-cell-histiocytosis.html index bbe2f8402b..64bb3dabd1 100644 --- a/concepts/langerhans-cell-histiocytosis.html +++ b/concepts/langerhans-cell-histiocytosis.html @@ -11,12 +11,12 @@ Langerhans Cell Histiocytosis - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/langerhans-cell-sarcoma.html b/concepts/langerhans-cell-sarcoma.html index b1261691cb..ccfd289766 100644 --- a/concepts/langerhans-cell-sarcoma.html +++ b/concepts/langerhans-cell-sarcoma.html @@ -11,12 +11,12 @@ Langerhans Cell Sarcoma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/large-b-cell-lymphoma-with-irf4-rearrangement.html b/concepts/large-b-cell-lymphoma-with-irf4-rearrangement.html index 8ad103b3f1..df3f2a8468 100644 --- a/concepts/large-b-cell-lymphoma-with-irf4-rearrangement.html +++ b/concepts/large-b-cell-lymphoma-with-irf4-rearrangement.html @@ -11,12 +11,12 @@ Large B-Cell Lymphoma with IRF4 Rearrangement - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/large-cell-anaplastic-medulloblastoma.html b/concepts/large-cell-anaplastic-medulloblastoma.html index d0b8be74c7..27411c366f 100644 --- a/concepts/large-cell-anaplastic-medulloblastoma.html +++ b/concepts/large-cell-anaplastic-medulloblastoma.html @@ -11,12 +11,12 @@ Large Cell/Anaplastic Medulloblastoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/large-cell-lung-carcinoma-with-rhabdoid-phenotype.html b/concepts/large-cell-lung-carcinoma-with-rhabdoid-phenotype.html index 29b3c1b753..516c4d3f6d 100644 --- a/concepts/large-cell-lung-carcinoma-with-rhabdoid-phenotype.html +++ b/concepts/large-cell-lung-carcinoma-with-rhabdoid-phenotype.html @@ -11,12 +11,12 @@ Large Cell Lung Carcinoma With Rhabdoid Phenotype - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/large-cell-lung-carcinoma.html b/concepts/large-cell-lung-carcinoma.html index dc00ddd276..62914375c5 100644 --- a/concepts/large-cell-lung-carcinoma.html +++ b/concepts/large-cell-lung-carcinoma.html @@ -11,12 +11,12 @@ Large Cell Lung Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/large-cell-neuroendocrine-carcinoma.html b/concepts/large-cell-neuroendocrine-carcinoma.html index 7d2edfeaaa..495ad55d03 100644 --- a/concepts/large-cell-neuroendocrine-carcinoma.html +++ b/concepts/large-cell-neuroendocrine-carcinoma.html @@ -11,12 +11,12 @@ Large Cell Neuroendocrine Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/larotaxel.html b/concepts/larotaxel.html index edf5989395..ef735e3658 100644 --- a/concepts/larotaxel.html +++ b/concepts/larotaxel.html @@ -11,12 +11,12 @@ Larotaxel - + - + @@ -377,7 +377,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/laryngeal-cancer.html b/concepts/laryngeal-cancer.html index 1bfe8eb0af..7f0593d85c 100644 --- a/concepts/laryngeal-cancer.html +++ b/concepts/laryngeal-cancer.html @@ -11,12 +11,12 @@ Laryngeal cancer - + - + @@ -422,7 +422,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/laryngectomy.html b/concepts/laryngectomy.html index 28bbd91f80..59ed8019fb 100644 --- a/concepts/laryngectomy.html +++ b/concepts/laryngectomy.html @@ -11,12 +11,12 @@ Laryngectomy - + - + @@ -378,7 +378,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/larynx-squamous-cell-carcinoma.html b/concepts/larynx-squamous-cell-carcinoma.html index 4dfc26bfcd..fb3704ec68 100644 --- a/concepts/larynx-squamous-cell-carcinoma.html +++ b/concepts/larynx-squamous-cell-carcinoma.html @@ -11,12 +11,12 @@ Larynx Squamous Cell Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/laura-and-isaac-perlmutter-cancer-center-at-nyu-langone-health.html b/concepts/laura-and-isaac-perlmutter-cancer-center-at-nyu-langone-health.html index 10ecf55738..5eb19bb1fb 100644 --- a/concepts/laura-and-isaac-perlmutter-cancer-center-at-nyu-langone-health.html +++ b/concepts/laura-and-isaac-perlmutter-cancer-center-at-nyu-langone-health.html @@ -11,12 +11,12 @@ Laura and Isaac Perlmutter Cancer Center at NYU Langone Health - + - + @@ -383,7 +383,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/leiomyoma.html b/concepts/leiomyoma.html index 628762975b..01c2af7374 100644 --- a/concepts/leiomyoma.html +++ b/concepts/leiomyoma.html @@ -11,12 +11,12 @@ Leiomyoma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/leiomyosarcoma.html b/concepts/leiomyosarcoma.html index ab8cc2ee49..7d69b67eff 100644 --- a/concepts/leiomyosarcoma.html +++ b/concepts/leiomyosarcoma.html @@ -11,12 +11,12 @@ Leiomyosarcoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/lentigo-maligna-melanoma.html b/concepts/lentigo-maligna-melanoma.html index 58dd58a634..325acf8755 100644 --- a/concepts/lentigo-maligna-melanoma.html +++ b/concepts/lentigo-maligna-melanoma.html @@ -11,12 +11,12 @@ Lentigo Maligna Melanoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/lenvatinib.html b/concepts/lenvatinib.html index c28465d6ca..65859a9439 100644 --- a/concepts/lenvatinib.html +++ b/concepts/lenvatinib.html @@ -11,12 +11,12 @@ Lenvatinib - + - + @@ -375,7 +375,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/leukapheresis.html b/concepts/leukapheresis.html index 726abecfc5..c53a7e5f3f 100644 --- a/concepts/leukapheresis.html +++ b/concepts/leukapheresis.html @@ -11,12 +11,12 @@ Leukapheresis - + - + @@ -376,7 +376,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/leukemia-and-lymphoma-society.html b/concepts/leukemia-and-lymphoma-society.html index f2bb720b44..fc89fd28c4 100644 --- a/concepts/leukemia-and-lymphoma-society.html +++ b/concepts/leukemia-and-lymphoma-society.html @@ -11,12 +11,12 @@ Leukemia & Lymphoma Society - + - + @@ -387,7 +387,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/leukemia.html b/concepts/leukemia.html index 563883136c..680ba93bd3 100644 --- a/concepts/leukemia.html +++ b/concepts/leukemia.html @@ -11,12 +11,12 @@ Leukemia - + - + @@ -422,7 +422,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/liposarcoma.html b/concepts/liposarcoma.html index 115664dbbc..d9fd0da385 100644 --- a/concepts/liposarcoma.html +++ b/concepts/liposarcoma.html @@ -11,12 +11,12 @@ Liposarcoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/lithuania-ncc.html b/concepts/lithuania-ncc.html index 0150c44468..a538e357a8 100644 --- a/concepts/lithuania-ncc.html +++ b/concepts/lithuania-ncc.html @@ -11,12 +11,12 @@ National Cancer Institute - + - + @@ -376,7 +376,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/liver-angiosarcoma.html b/concepts/liver-angiosarcoma.html index 47305db10f..ea952735ba 100644 --- a/concepts/liver-angiosarcoma.html +++ b/concepts/liver-angiosarcoma.html @@ -11,12 +11,12 @@ Liver Angiosarcoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/liver-transplant.html b/concepts/liver-transplant.html index 9423261ce6..0a9af15b72 100644 --- a/concepts/liver-transplant.html +++ b/concepts/liver-transplant.html @@ -11,12 +11,12 @@ Liver transplant - + - + @@ -375,7 +375,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/liver.html b/concepts/liver.html index 7020b1abf5..e719c6345a 100644 --- a/concepts/liver.html +++ b/concepts/liver.html @@ -11,12 +11,12 @@ Liver Cancer - + - + @@ -432,7 +432,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/lomustine.html b/concepts/lomustine.html index f303a4b516..09cb5c831a 100644 --- a/concepts/lomustine.html +++ b/concepts/lomustine.html @@ -11,12 +11,12 @@ Lomustine - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/low-dose-spiral-computed-tomography.html b/concepts/low-dose-spiral-computed-tomography.html index 12c2d9a61e..c635767278 100644 --- a/concepts/low-dose-spiral-computed-tomography.html +++ b/concepts/low-dose-spiral-computed-tomography.html @@ -11,12 +11,12 @@ LDCT - + - + @@ -378,7 +378,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/low-grade-central-osteosarcoma.html b/concepts/low-grade-central-osteosarcoma.html index 49887791b0..6f4efe5544 100644 --- a/concepts/low-grade-central-osteosarcoma.html +++ b/concepts/low-grade-central-osteosarcoma.html @@ -11,12 +11,12 @@ Low-Grade Central Osteosarcoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/low-grade-endometrial-stromal-sarcoma.html b/concepts/low-grade-endometrial-stromal-sarcoma.html index 7c4c4fac77..bed33653bb 100644 --- a/concepts/low-grade-endometrial-stromal-sarcoma.html +++ b/concepts/low-grade-endometrial-stromal-sarcoma.html @@ -11,12 +11,12 @@ Low-Grade Endometrial Stromal Sarcoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/low-grade-fibromyxoid-sarcoma.html b/concepts/low-grade-fibromyxoid-sarcoma.html index b3ed53e31a..549d81d332 100644 --- a/concepts/low-grade-fibromyxoid-sarcoma.html +++ b/concepts/low-grade-fibromyxoid-sarcoma.html @@ -11,12 +11,12 @@ Low-Grade Fibromyxoid Sarcoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/low-grade-glioma-nos.html b/concepts/low-grade-glioma-nos.html index d9bb652c9a..21c35059a5 100644 --- a/concepts/low-grade-glioma-nos.html +++ b/concepts/low-grade-glioma-nos.html @@ -11,12 +11,12 @@ Low-Grade Glioma, NOS - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/low-grade-neuroepithelial-tumor.html b/concepts/low-grade-neuroepithelial-tumor.html index 06a7492e8d..1beb2f50a3 100644 --- a/concepts/low-grade-neuroepithelial-tumor.html +++ b/concepts/low-grade-neuroepithelial-tumor.html @@ -11,12 +11,12 @@ Low-Grade Neuroepithelial Tumor - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/low-grade-serous-ovarian-cancer.html b/concepts/low-grade-serous-ovarian-cancer.html index b0d9a52d6b..e524b5f9e5 100644 --- a/concepts/low-grade-serous-ovarian-cancer.html +++ b/concepts/low-grade-serous-ovarian-cancer.html @@ -11,12 +11,12 @@ Low-Grade Serous Ovarian Cancer - + - + @@ -381,7 +381,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/lumpectomy.html b/concepts/lumpectomy.html index e0848bd4fc..ee3c97ae6e 100644 --- a/concepts/lumpectomy.html +++ b/concepts/lumpectomy.html @@ -11,12 +11,12 @@ Lumpectomy - + - + @@ -376,7 +376,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/lung-adenocarcinoma-in-situ.html b/concepts/lung-adenocarcinoma-in-situ.html index e39c23b7a9..12eae746ff 100644 --- a/concepts/lung-adenocarcinoma-in-situ.html +++ b/concepts/lung-adenocarcinoma-in-situ.html @@ -11,12 +11,12 @@ Lung Adenocarcinoma In Situ - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/lung-adenocarcinoma.html b/concepts/lung-adenocarcinoma.html index 8875fe420b..f2befb0287 100644 --- a/concepts/lung-adenocarcinoma.html +++ b/concepts/lung-adenocarcinoma.html @@ -11,12 +11,12 @@ Lung Adenocarcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/lung-adenosquamous-carcinoma.html b/concepts/lung-adenosquamous-carcinoma.html index bf071f6c02..55aa43203a 100644 --- a/concepts/lung-adenosquamous-carcinoma.html +++ b/concepts/lung-adenosquamous-carcinoma.html @@ -11,12 +11,12 @@ Lung Adenosquamous Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/lung-cancer-subreddit.html b/concepts/lung-cancer-subreddit.html index fa9e4368c3..fcc66ad65e 100644 --- a/concepts/lung-cancer-subreddit.html +++ b/concepts/lung-cancer-subreddit.html @@ -11,12 +11,12 @@ Lung Cancer Subreddit - + - + @@ -377,7 +377,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/lung-carcinoid.html b/concepts/lung-carcinoid.html index 804616335f..ecf1bdac72 100644 --- a/concepts/lung-carcinoid.html +++ b/concepts/lung-carcinoid.html @@ -11,12 +11,12 @@ Lung Carcinoid - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/lung-neuroendocrine-tumor.html b/concepts/lung-neuroendocrine-tumor.html index 7e0cb0c818..06a152db7f 100644 --- a/concepts/lung-neuroendocrine-tumor.html +++ b/concepts/lung-neuroendocrine-tumor.html @@ -11,12 +11,12 @@ Lung Neuroendocrine Tumor - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/lung-squamous-cell-carcinoma.html b/concepts/lung-squamous-cell-carcinoma.html index 5d6fde16a7..3f7da4f187 100644 --- a/concepts/lung-squamous-cell-carcinoma.html +++ b/concepts/lung-squamous-cell-carcinoma.html @@ -11,12 +11,12 @@ Lung Squamous Cell Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/lung.html b/concepts/lung.html index c9ca93db09..5f5b014663 100644 --- a/concepts/lung.html +++ b/concepts/lung.html @@ -11,12 +11,12 @@ Lung Cancer - + - + @@ -435,7 +435,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/lymphedema-sleeve.html b/concepts/lymphedema-sleeve.html index e1243de38c..bed42240d6 100644 --- a/concepts/lymphedema-sleeve.html +++ b/concepts/lymphedema-sleeve.html @@ -11,12 +11,12 @@ Lymphedema Sleeve - + - + @@ -376,7 +376,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/lymphocyte-depleted-classical-hodgkin-lymphoma.html b/concepts/lymphocyte-depleted-classical-hodgkin-lymphoma.html index 231e040add..c41adafd6a 100644 --- a/concepts/lymphocyte-depleted-classical-hodgkin-lymphoma.html +++ b/concepts/lymphocyte-depleted-classical-hodgkin-lymphoma.html @@ -11,12 +11,12 @@ Lymphocyte-Depleted Classical Hodgkin Lymphoma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/lymphocyte-rich-classical-hodgkin-lymphoma.html b/concepts/lymphocyte-rich-classical-hodgkin-lymphoma.html index 8921d14c42..c5820fc777 100644 --- a/concepts/lymphocyte-rich-classical-hodgkin-lymphoma.html +++ b/concepts/lymphocyte-rich-classical-hodgkin-lymphoma.html @@ -11,12 +11,12 @@ Lymphocyte-Rich Classical Hodgkin Lymphoma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/lymphoepithelioma-like-carcinoma-of-the-lung.html b/concepts/lymphoepithelioma-like-carcinoma-of-the-lung.html index 7ea0fa44ab..4e91144e57 100644 --- a/concepts/lymphoepithelioma-like-carcinoma-of-the-lung.html +++ b/concepts/lymphoepithelioma-like-carcinoma-of-the-lung.html @@ -11,12 +11,12 @@ Lymphoepithelioma-like Carcinoma of the Lung - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/lymphoid-atypical.html b/concepts/lymphoid-atypical.html index 3538a2824a..384c823ee8 100644 --- a/concepts/lymphoid-atypical.html +++ b/concepts/lymphoid-atypical.html @@ -11,12 +11,12 @@ Lymphoid Atypical - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/lymphoid-benign.html b/concepts/lymphoid-benign.html index 15522772eb..8b2d07066b 100644 --- a/concepts/lymphoid-benign.html +++ b/concepts/lymphoid-benign.html @@ -11,12 +11,12 @@ Lymphoid Benign - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/lymphoid-neoplasm.html b/concepts/lymphoid-neoplasm.html index dcfcc91013..b52c46ae36 100644 --- a/concepts/lymphoid-neoplasm.html +++ b/concepts/lymphoid-neoplasm.html @@ -11,12 +11,12 @@ Lymphoid Neoplasm - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/lymphoma-subreddit.html b/concepts/lymphoma-subreddit.html index e5dc0a63fb..35ca43de01 100644 --- a/concepts/lymphoma-subreddit.html +++ b/concepts/lymphoma-subreddit.html @@ -11,12 +11,12 @@ Lymphoma Subreddit - + - + @@ -377,7 +377,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/lymphoma.html b/concepts/lymphoma.html index fde12d991e..5fd58e9613 100644 --- a/concepts/lymphoma.html +++ b/concepts/lymphoma.html @@ -11,12 +11,12 @@ Lymphoma - + - + @@ -386,7 +386,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/lymphomatoid-granulomatosis.html b/concepts/lymphomatoid-granulomatosis.html index c99d267e95..ef8eee336e 100644 --- a/concepts/lymphomatoid-granulomatosis.html +++ b/concepts/lymphomatoid-granulomatosis.html @@ -11,12 +11,12 @@ Lymphomatoid Granulomatosis - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/lymphomatoid-papulosis.html b/concepts/lymphomatoid-papulosis.html index 0da84acdf5..1a340d7c09 100644 --- a/concepts/lymphomatoid-papulosis.html +++ b/concepts/lymphomatoid-papulosis.html @@ -11,12 +11,12 @@ Lymphomatoid Papulosis - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/lymphoplasmacytic-lymphoma.html b/concepts/lymphoplasmacytic-lymphoma.html index 20971c8efa..6eb15e33e0 100644 --- a/concepts/lymphoplasmacytic-lymphoma.html +++ b/concepts/lymphoplasmacytic-lymphoma.html @@ -11,12 +11,12 @@ Lymphoplasmacytic Lymphoma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/male-breast-cancer.html b/concepts/male-breast-cancer.html index 18d7db2634..0a4f3fbb6e 100644 --- a/concepts/male-breast-cancer.html +++ b/concepts/male-breast-cancer.html @@ -11,12 +11,12 @@ Male Breast Cancer - + - + @@ -399,7 +399,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/malignant-glomus-tumor.html b/concepts/malignant-glomus-tumor.html index 7f128992c8..333b443be0 100644 --- a/concepts/malignant-glomus-tumor.html +++ b/concepts/malignant-glomus-tumor.html @@ -11,12 +11,12 @@ Malignant Glomus Tumor - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/malignant-lymphoma.html b/concepts/malignant-lymphoma.html index 1660a7f2ee..e9fbff4d88 100644 --- a/concepts/malignant-lymphoma.html +++ b/concepts/malignant-lymphoma.html @@ -11,12 +11,12 @@ Malignant Lymphoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/malignant-nonepithelial-tumor-of-the-liver.html b/concepts/malignant-nonepithelial-tumor-of-the-liver.html index 99bfaadb43..b354645859 100644 --- a/concepts/malignant-nonepithelial-tumor-of-the-liver.html +++ b/concepts/malignant-nonepithelial-tumor-of-the-liver.html @@ -11,12 +11,12 @@ Malignant Nonepithelial Tumor of the Liver - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/malignant-peripheral-nerve-sheath-tumor.html b/concepts/malignant-peripheral-nerve-sheath-tumor.html index ecea4c062d..22b886d8f7 100644 --- a/concepts/malignant-peripheral-nerve-sheath-tumor.html +++ b/concepts/malignant-peripheral-nerve-sheath-tumor.html @@ -11,12 +11,12 @@ Malignant Peripheral Nerve Sheath Tumor - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/malignant-phyllodes-tumor-of-the-breast.html b/concepts/malignant-phyllodes-tumor-of-the-breast.html index d38b963577..3779840e10 100644 --- a/concepts/malignant-phyllodes-tumor-of-the-breast.html +++ b/concepts/malignant-phyllodes-tumor-of-the-breast.html @@ -11,12 +11,12 @@ Malignant Phyllodes Tumor of the Breast - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/malignant-rhabdoid-tumor-of-the-liver.html b/concepts/malignant-rhabdoid-tumor-of-the-liver.html index f3c15876b7..2f0bdc4fd8 100644 --- a/concepts/malignant-rhabdoid-tumor-of-the-liver.html +++ b/concepts/malignant-rhabdoid-tumor-of-the-liver.html @@ -11,12 +11,12 @@ Malignant Rhabdoid Tumor of the Liver - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/malignant-teratoma.html b/concepts/malignant-teratoma.html index d96812643d..358d7ce2b1 100644 --- a/concepts/malignant-teratoma.html +++ b/concepts/malignant-teratoma.html @@ -11,12 +11,12 @@ Malignant Teratoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/malignant-tumor.html b/concepts/malignant-tumor.html index 78fec56a47..cfae6b530c 100644 --- a/concepts/malignant-tumor.html +++ b/concepts/malignant-tumor.html @@ -11,12 +11,12 @@ Malignant Tumor - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mammary-analogue-secretory-carcinoma-of-salivary-gland-origin.html b/concepts/mammary-analogue-secretory-carcinoma-of-salivary-gland-origin.html index 7f79788da1..b5094f2d78 100644 --- a/concepts/mammary-analogue-secretory-carcinoma-of-salivary-gland-origin.html +++ b/concepts/mammary-analogue-secretory-carcinoma-of-salivary-gland-origin.html @@ -11,12 +11,12 @@ Mammary Analogue Secretory Carcinoma of Salivary Gland Origin - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mammogram.html b/concepts/mammogram.html index ec83fb096e..a4c867284a 100644 --- a/concepts/mammogram.html +++ b/concepts/mammogram.html @@ -11,12 +11,12 @@ Mammogram - + - + @@ -379,7 +379,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mantle-cell-lymphoma.html b/concepts/mantle-cell-lymphoma.html index 6cb76039a2..cb19df7525 100644 --- a/concepts/mantle-cell-lymphoma.html +++ b/concepts/mantle-cell-lymphoma.html @@ -11,12 +11,12 @@ Mantle Cell Lymphoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/margin-probe.html b/concepts/margin-probe.html index f56a24cf7b..0dbad6b83a 100644 --- a/concepts/margin-probe.html +++ b/concepts/margin-probe.html @@ -11,12 +11,12 @@ MarginProbe - + - + @@ -377,7 +377,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/marginal-zone-lymphoma.html b/concepts/marginal-zone-lymphoma.html index 22e21bae2d..6e9db7903a 100644 --- a/concepts/marginal-zone-lymphoma.html +++ b/concepts/marginal-zone-lymphoma.html @@ -11,12 +11,12 @@ Marginal Zone Lymphoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/marijuana.html b/concepts/marijuana.html index 7d0f1c60f4..bf05f03c91 100644 --- a/concepts/marijuana.html +++ b/concepts/marijuana.html @@ -11,12 +11,12 @@ Marijuana - + - + @@ -374,7 +374,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/markey-cancer-center.html b/concepts/markey-cancer-center.html index f2d70dcd67..e0b5fdce43 100644 --- a/concepts/markey-cancer-center.html +++ b/concepts/markey-cancer-center.html @@ -11,12 +11,12 @@ Markey Cancer Center - + - + @@ -383,7 +383,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/masonic-cancer-center.html b/concepts/masonic-cancer-center.html index 8cc0d2194c..faa92a38e5 100644 --- a/concepts/masonic-cancer-center.html +++ b/concepts/masonic-cancer-center.html @@ -11,12 +11,12 @@ Masonic Cancer Center - + - + @@ -385,7 +385,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/massage.html b/concepts/massage.html index 67507869c0..43567cde4a 100644 --- a/concepts/massage.html +++ b/concepts/massage.html @@ -11,12 +11,12 @@ Massage - + - + @@ -375,7 +375,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/massey-cancer-center.html b/concepts/massey-cancer-center.html index c6268c88bc..a4168fcd85 100644 --- a/concepts/massey-cancer-center.html +++ b/concepts/massey-cancer-center.html @@ -11,12 +11,12 @@ Massey Cancer Center - + - + @@ -389,7 +389,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/massgeneral.html b/concepts/massgeneral.html index bf735b19b9..7b3d74ad36 100644 --- a/concepts/massgeneral.html +++ b/concepts/massgeneral.html @@ -11,12 +11,12 @@ Massachusetts General Hospital - + - + @@ -389,7 +389,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mast-cell-leukemia.html b/concepts/mast-cell-leukemia.html index c7986ab983..e40b3fb963 100644 --- a/concepts/mast-cell-leukemia.html +++ b/concepts/mast-cell-leukemia.html @@ -11,12 +11,12 @@ Mast Cell Leukemia - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mast-cell-sarcoma.html b/concepts/mast-cell-sarcoma.html index e6db75d2ae..66674b5907 100644 --- a/concepts/mast-cell-sarcoma.html +++ b/concepts/mast-cell-sarcoma.html @@ -11,12 +11,12 @@ Mast Cell Sarcoma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mastectomy.html b/concepts/mastectomy.html index 68ec2885ac..1a1da58d0b 100644 --- a/concepts/mastectomy.html +++ b/concepts/mastectomy.html @@ -11,12 +11,12 @@ Mastectomy - + - + @@ -378,7 +378,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mastocytosis.html b/concepts/mastocytosis.html index 1f0954246f..df99d3c0d8 100644 --- a/concepts/mastocytosis.html +++ b/concepts/mastocytosis.html @@ -11,12 +11,12 @@ Mastocytosis - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mature-b-cell-neoplasms.html b/concepts/mature-b-cell-neoplasms.html index deb11ef6bd..daba81b182 100644 --- a/concepts/mature-b-cell-neoplasms.html +++ b/concepts/mature-b-cell-neoplasms.html @@ -11,12 +11,12 @@ Mature B-Cell Neoplasms - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mature-t-and-nk-neoplasms.html b/concepts/mature-t-and-nk-neoplasms.html index 7a14874086..6164171615 100644 --- a/concepts/mature-t-and-nk-neoplasms.html +++ b/concepts/mature-t-and-nk-neoplasms.html @@ -11,12 +11,12 @@ Mature T and NK Neoplasms - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mature-teratoma-cns-brain.html b/concepts/mature-teratoma-cns-brain.html index 7053fdad00..dca7c0daa3 100644 --- a/concepts/mature-teratoma-cns-brain.html +++ b/concepts/mature-teratoma-cns-brain.html @@ -11,12 +11,12 @@ Mature Teratoma CNS/Brain - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mature-teratoma-vulva-vagina.html b/concepts/mature-teratoma-vulva-vagina.html index 1a22e6a305..9ff21dc3fe 100644 --- a/concepts/mature-teratoma-vulva-vagina.html +++ b/concepts/mature-teratoma-vulva-vagina.html @@ -11,12 +11,12 @@ Mature Teratoma Vulva/Vagina - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mature-teratoma.html b/concepts/mature-teratoma.html index 2b1752a215..1e553c2248 100644 --- a/concepts/mature-teratoma.html +++ b/concepts/mature-teratoma.html @@ -11,12 +11,12 @@ Mature Teratoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mayo-clinic-jacksonville.html b/concepts/mayo-clinic-jacksonville.html index f57d2333d0..e4c49be558 100644 --- a/concepts/mayo-clinic-jacksonville.html +++ b/concepts/mayo-clinic-jacksonville.html @@ -11,12 +11,12 @@ Mayo Clinic Jacksonville - + - + @@ -385,7 +385,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mayo-clinic-phoenix.html b/concepts/mayo-clinic-phoenix.html index b5eef5641b..44a4bc1bf4 100644 --- a/concepts/mayo-clinic-phoenix.html +++ b/concepts/mayo-clinic-phoenix.html @@ -11,12 +11,12 @@ Mayo Clinic Phoenix - + - + @@ -386,7 +386,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mayo-clinic-rochester.html b/concepts/mayo-clinic-rochester.html index 8a558613fd..4cf10d604a 100644 --- a/concepts/mayo-clinic-rochester.html +++ b/concepts/mayo-clinic-rochester.html @@ -11,12 +11,12 @@ Mayo Clinic Rochester - + - + @@ -383,7 +383,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mays-cancer-center-at-ut-health-san-antonio.html b/concepts/mays-cancer-center-at-ut-health-san-antonio.html index 089e348a99..67764a009e 100644 --- a/concepts/mays-cancer-center-at-ut-health-san-antonio.html +++ b/concepts/mays-cancer-center-at-ut-health-san-antonio.html @@ -11,12 +11,12 @@ Mays Cancer Center at UT Health San Antonio - + - + @@ -385,7 +385,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mcr-tz.html b/concepts/mcr-tz.html index ee683516a7..5f0b850b99 100644 --- a/concepts/mcr-tz.html +++ b/concepts/mcr-tz.html @@ -11,12 +11,12 @@ mcr - + - + @@ -379,7 +379,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mdanderson.html b/concepts/mdanderson.html index 65db623857..527324af96 100644 --- a/concepts/mdanderson.html +++ b/concepts/mdanderson.html @@ -11,12 +11,12 @@ The University of Texas MD Anderson Cancer Center - + - + @@ -394,7 +394,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mds-mpn-unclassifiable.html b/concepts/mds-mpn-unclassifiable.html index e2b119f34f..ac420a075d 100644 --- a/concepts/mds-mpn-unclassifiable.html +++ b/concepts/mds-mpn-unclassifiable.html @@ -11,12 +11,12 @@ MDS/MPN, Unclassifiable - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mds-mpn-with-ring-sideroblasts-and-thrombocytosis.html b/concepts/mds-mpn-with-ring-sideroblasts-and-thrombocytosis.html index e9b9f76508..d916ee28b5 100644 --- a/concepts/mds-mpn-with-ring-sideroblasts-and-thrombocytosis.html +++ b/concepts/mds-mpn-with-ring-sideroblasts-and-thrombocytosis.html @@ -11,12 +11,12 @@ MDS/MPN with Ring Sideroblasts and Thrombocytosis - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mds-unclassifiable.html b/concepts/mds-unclassifiable.html index 3a1bc64bf2..1989829075 100644 --- a/concepts/mds-unclassifiable.html +++ b/concepts/mds-unclassifiable.html @@ -11,12 +11,12 @@ MDS, Unclassifiable - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mds-with-excess-blasts-1.html b/concepts/mds-with-excess-blasts-1.html index b6434d961c..7095172a21 100644 --- a/concepts/mds-with-excess-blasts-1.html +++ b/concepts/mds-with-excess-blasts-1.html @@ -11,12 +11,12 @@ MDS with excess blasts-1 - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mds-with-excess-blasts-2.html b/concepts/mds-with-excess-blasts-2.html index c8585f743b..3d692debab 100644 --- a/concepts/mds-with-excess-blasts-2.html +++ b/concepts/mds-with-excess-blasts-2.html @@ -11,12 +11,12 @@ MDS with excess blasts-2 - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mds-with-excess-blasts.html b/concepts/mds-with-excess-blasts.html index c94eed4f33..39a9378be4 100644 --- a/concepts/mds-with-excess-blasts.html +++ b/concepts/mds-with-excess-blasts.html @@ -11,12 +11,12 @@ MDS with Excess Blasts - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mds-with-isolated-del5q.html b/concepts/mds-with-isolated-del5q.html index db94ca3cc0..73f97ac791 100644 --- a/concepts/mds-with-isolated-del5q.html +++ b/concepts/mds-with-isolated-del5q.html @@ -11,12 +11,12 @@ MDS with Isolated Del(5q) - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mds-with-multilineage-dysplasia.html b/concepts/mds-with-multilineage-dysplasia.html index df0c7fb40a..c4c25289e3 100644 --- a/concepts/mds-with-multilineage-dysplasia.html +++ b/concepts/mds-with-multilineage-dysplasia.html @@ -11,12 +11,12 @@ MDS with Multilineage Dysplasia - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mds-with-ring-sideroblasts-and-multilineage-dysplasia.html b/concepts/mds-with-ring-sideroblasts-and-multilineage-dysplasia.html index 2f0dda5af0..48a9a01b03 100644 --- a/concepts/mds-with-ring-sideroblasts-and-multilineage-dysplasia.html +++ b/concepts/mds-with-ring-sideroblasts-and-multilineage-dysplasia.html @@ -11,12 +11,12 @@ MDS with Ring Sideroblasts and Multilineage Dysplasia - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mds-with-ring-sideroblasts-and-single-lineage-dysplasia.html b/concepts/mds-with-ring-sideroblasts-and-single-lineage-dysplasia.html index 54ffd5931b..0ea9de8386 100644 --- a/concepts/mds-with-ring-sideroblasts-and-single-lineage-dysplasia.html +++ b/concepts/mds-with-ring-sideroblasts-and-single-lineage-dysplasia.html @@ -11,12 +11,12 @@ MDS with Ring Sideroblasts and Single Lineage Dysplasia - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mds-with-ring-sideroblasts.html b/concepts/mds-with-ring-sideroblasts.html index 714e4b05e2..74c7716110 100644 --- a/concepts/mds-with-ring-sideroblasts.html +++ b/concepts/mds-with-ring-sideroblasts.html @@ -11,12 +11,12 @@ MDS with Ring Sideroblasts - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mds-with-single-lineage-dysplasia.html b/concepts/mds-with-single-lineage-dysplasia.html index 4b73cc643a..c49dda83fb 100644 --- a/concepts/mds-with-single-lineage-dysplasia.html +++ b/concepts/mds-with-single-lineage-dysplasia.html @@ -11,12 +11,12 @@ MDS with Single Lineage Dysplasia - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mediastinoscopy.html b/concepts/mediastinoscopy.html index ebf2cee5bc..f16a2cc681 100644 --- a/concepts/mediastinoscopy.html +++ b/concepts/mediastinoscopy.html @@ -11,12 +11,12 @@ Mediastinoscopy - + - + @@ -375,7 +375,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/meditation.html b/concepts/meditation.html index 8e78f47f96..f2cdf5a272 100644 --- a/concepts/meditation.html +++ b/concepts/meditation.html @@ -11,12 +11,12 @@ Meditation - + - + @@ -375,7 +375,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/medlars.html b/concepts/medlars.html index 2fb0c61c7a..14dd1c1af9 100644 --- a/concepts/medlars.html +++ b/concepts/medlars.html @@ -11,12 +11,12 @@ MEDLARS - + - + @@ -379,7 +379,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/medline.html b/concepts/medline.html index a0f10fc9bc..5bb5240be7 100644 --- a/concepts/medline.html +++ b/concepts/medline.html @@ -11,12 +11,12 @@ MEDLINE - + - + @@ -379,7 +379,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/medlineplus.html b/concepts/medlineplus.html index 5d981c106a..ac4aaebfbd 100644 --- a/concepts/medlineplus.html +++ b/concepts/medlineplus.html @@ -11,12 +11,12 @@ MedlinePlus - + - + @@ -381,7 +381,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/medullary-carcinoma-of-the-colon.html b/concepts/medullary-carcinoma-of-the-colon.html index ad601f18b7..19b6a93810 100644 --- a/concepts/medullary-carcinoma-of-the-colon.html +++ b/concepts/medullary-carcinoma-of-the-colon.html @@ -11,12 +11,12 @@ Medullary Carcinoma of the Colon - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/medullary-thyroid-cancer.html b/concepts/medullary-thyroid-cancer.html index 25ca382fdc..94f20de413 100644 --- a/concepts/medullary-thyroid-cancer.html +++ b/concepts/medullary-thyroid-cancer.html @@ -11,12 +11,12 @@ Medullary Thyroid Cancer - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/medulloblastoma-with-extensive-nodularity.html b/concepts/medulloblastoma-with-extensive-nodularity.html index 553b0b5314..e604335452 100644 --- a/concepts/medulloblastoma-with-extensive-nodularity.html +++ b/concepts/medulloblastoma-with-extensive-nodularity.html @@ -11,12 +11,12 @@ Medulloblastoma with Extensive Nodularity - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/medulloblastoma.html b/concepts/medulloblastoma.html index d36bdd1baf..f67e121fca 100644 --- a/concepts/medulloblastoma.html +++ b/concepts/medulloblastoma.html @@ -11,12 +11,12 @@ Medulloblastoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/medulloepithelioma.html b/concepts/medulloepithelioma.html index 97a091384c..7c688111f4 100644 --- a/concepts/medulloepithelioma.html +++ b/concepts/medulloepithelioma.html @@ -11,12 +11,12 @@ Medulloepithelioma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/medullomyoblastoma.html b/concepts/medullomyoblastoma.html index 42f58c8bb2..3a8bc6368b 100644 --- a/concepts/medullomyoblastoma.html +++ b/concepts/medullomyoblastoma.html @@ -11,12 +11,12 @@ Medullomyoblastoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/melanocytoma.html b/concepts/melanocytoma.html index 18b194c852..d0a5b08a02 100644 --- a/concepts/melanocytoma.html +++ b/concepts/melanocytoma.html @@ -11,12 +11,12 @@ Melanocytoma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/melanoma-of-unknown-primary.html b/concepts/melanoma-of-unknown-primary.html index a88578a3ab..06695789fe 100644 --- a/concepts/melanoma-of-unknown-primary.html +++ b/concepts/melanoma-of-unknown-primary.html @@ -11,12 +11,12 @@ Melanoma of Unknown Primary - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/melanoma.html b/concepts/melanoma.html index d00a15ea14..45a12b146a 100644 --- a/concepts/melanoma.html +++ b/concepts/melanoma.html @@ -11,12 +11,12 @@ Melanoma - + - + @@ -388,7 +388,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/melanotic-medulloblastoma.html b/concepts/melanotic-medulloblastoma.html index 838d8e0d70..4ea390d386 100644 --- a/concepts/melanotic-medulloblastoma.html +++ b/concepts/melanotic-medulloblastoma.html @@ -11,12 +11,12 @@ Melanotic Medulloblastoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/melanotic-schwannoma.html b/concepts/melanotic-schwannoma.html index e8b90ba372..25cf39d5d5 100644 --- a/concepts/melanotic-schwannoma.html +++ b/concepts/melanotic-schwannoma.html @@ -11,12 +11,12 @@ Melanotic Schwannoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/melphalan-flufenamide.html b/concepts/melphalan-flufenamide.html index ad9c927363..40f46e9bd7 100644 --- a/concepts/melphalan-flufenamide.html +++ b/concepts/melphalan-flufenamide.html @@ -11,12 +11,12 @@ Melphalan flufenamide - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/melphalan.html b/concepts/melphalan.html index 31c211693d..b747a4a87e 100644 --- a/concepts/melphalan.html +++ b/concepts/melphalan.html @@ -11,12 +11,12 @@ Melphalan - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/memorial-sloan-kettering-cancer-center.html b/concepts/memorial-sloan-kettering-cancer-center.html index 3c12f026b5..ab409e1b13 100644 --- a/concepts/memorial-sloan-kettering-cancer-center.html +++ b/concepts/memorial-sloan-kettering-cancer-center.html @@ -11,12 +11,12 @@ Memorial Sloan-Kettering Cancer Center - + - + @@ -390,7 +390,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/meningioma.html b/concepts/meningioma.html index 86b242c46b..b7b8653603 100644 --- a/concepts/meningioma.html +++ b/concepts/meningioma.html @@ -11,12 +11,12 @@ Meningioma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/meningothelial-tumor.html b/concepts/meningothelial-tumor.html index 9f99f2a68f..014d6a5c5f 100644 --- a/concepts/meningothelial-tumor.html +++ b/concepts/meningothelial-tumor.html @@ -11,12 +11,12 @@ Meningothelial Tumor - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mercaptopurine.html b/concepts/mercaptopurine.html index 7ccd6118a4..d6f0446a7f 100644 --- a/concepts/mercaptopurine.html +++ b/concepts/mercaptopurine.html @@ -11,12 +11,12 @@ Mercaptopurine - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/merck-and-co.html b/concepts/merck-and-co.html index 0e76906822..3f3aab48a2 100644 --- a/concepts/merck-and-co.html +++ b/concepts/merck-and-co.html @@ -11,12 +11,12 @@ Merck & Co. - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/merck-group.html b/concepts/merck-group.html index 566bd128da..112da4ee68 100644 --- a/concepts/merck-group.html +++ b/concepts/merck-group.html @@ -11,12 +11,12 @@ Merck Group - + - + @@ -376,7 +376,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/merkel-cell-carcinoma.html b/concepts/merkel-cell-carcinoma.html index 74c8c25083..e7dafed09e 100644 --- a/concepts/merkel-cell-carcinoma.html +++ b/concepts/merkel-cell-carcinoma.html @@ -11,12 +11,12 @@ Merkel Cell Carcinoma - + - + @@ -384,7 +384,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mesenchymal-chondrosarcoma-of-the-cns.html b/concepts/mesenchymal-chondrosarcoma-of-the-cns.html index f90555d299..959a46dce0 100644 --- a/concepts/mesenchymal-chondrosarcoma-of-the-cns.html +++ b/concepts/mesenchymal-chondrosarcoma-of-the-cns.html @@ -11,12 +11,12 @@ Mesenchymal Chondrosarcoma of the CNS - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mesenchymal-chondrosarcoma.html b/concepts/mesenchymal-chondrosarcoma.html index 56529ab8c7..bd5c800205 100644 --- a/concepts/mesenchymal-chondrosarcoma.html +++ b/concepts/mesenchymal-chondrosarcoma.html @@ -11,12 +11,12 @@ Mesenchymal Chondrosarcoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mesonephric-carcinoma.html b/concepts/mesonephric-carcinoma.html index f1970f4028..3174c52014 100644 --- a/concepts/mesonephric-carcinoma.html +++ b/concepts/mesonephric-carcinoma.html @@ -11,12 +11,12 @@ Mesonephric Carcinoma - + - + @@ -381,7 +381,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mesothelioma.html b/concepts/mesothelioma.html index afac945667..8072a6acfa 100644 --- a/concepts/mesothelioma.html +++ b/concepts/mesothelioma.html @@ -11,12 +11,12 @@ Mesothelioma - + - + @@ -422,7 +422,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/metaplastic-adenocarcinoma-with-spindle-cell-differentiation.html b/concepts/metaplastic-adenocarcinoma-with-spindle-cell-differentiation.html index eaff9dcd10..37c68382ad 100644 --- a/concepts/metaplastic-adenocarcinoma-with-spindle-cell-differentiation.html +++ b/concepts/metaplastic-adenocarcinoma-with-spindle-cell-differentiation.html @@ -11,12 +11,12 @@ Metaplastic Adenocarcinoma with Spindle Cell Differentiation - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/metaplastic-adenosquamous-carcinoma.html b/concepts/metaplastic-adenosquamous-carcinoma.html index 24879ee73e..2d0c09f2e3 100644 --- a/concepts/metaplastic-adenosquamous-carcinoma.html +++ b/concepts/metaplastic-adenosquamous-carcinoma.html @@ -11,12 +11,12 @@ Metaplastic Adenosquamous Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/metaplastic-breast-cancer.html b/concepts/metaplastic-breast-cancer.html index ba18979885..1a4f07e036 100644 --- a/concepts/metaplastic-breast-cancer.html +++ b/concepts/metaplastic-breast-cancer.html @@ -11,12 +11,12 @@ Metaplastic Breast Cancer - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/metaplastic-carcinosarcoma.html b/concepts/metaplastic-carcinosarcoma.html index 66da1ef4f4..1ce1919083 100644 --- a/concepts/metaplastic-carcinosarcoma.html +++ b/concepts/metaplastic-carcinosarcoma.html @@ -11,12 +11,12 @@ Metaplastic Carcinosarcoma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/metaplastic-squamous-cell-carcinoma.html b/concepts/metaplastic-squamous-cell-carcinoma.html index 7b535e5615..f269ba7246 100644 --- a/concepts/metaplastic-squamous-cell-carcinoma.html +++ b/concepts/metaplastic-squamous-cell-carcinoma.html @@ -11,12 +11,12 @@ Metaplastic Squamous Cell Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/methotrexate.html b/concepts/methotrexate.html index d8e2c50c24..c463eef484 100644 --- a/concepts/methotrexate.html +++ b/concepts/methotrexate.html @@ -11,12 +11,12 @@ Methotrexate - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/miaderm-cream.html b/concepts/miaderm-cream.html index 59087e1351..2d81bc5655 100644 --- a/concepts/miaderm-cream.html +++ b/concepts/miaderm-cream.html @@ -11,12 +11,12 @@ Miaderm Creme - + - + @@ -381,7 +381,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/microcystic-adnexal-carcinoma.html b/concepts/microcystic-adnexal-carcinoma.html index aa6f606cbd..75fe955740 100644 --- a/concepts/microcystic-adnexal-carcinoma.html +++ b/concepts/microcystic-adnexal-carcinoma.html @@ -11,12 +11,12 @@ Microcystic Adnexal Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/microscope-confocal.html b/concepts/microscope-confocal.html index 820fa4966f..bace63ff7e 100644 --- a/concepts/microscope-confocal.html +++ b/concepts/microscope-confocal.html @@ -11,12 +11,12 @@ Confocal Microscope - + - + @@ -376,7 +376,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/microscope-darkfield.html b/concepts/microscope-darkfield.html index 1a5d93e709..a741fe52ec 100644 --- a/concepts/microscope-darkfield.html +++ b/concepts/microscope-darkfield.html @@ -11,12 +11,12 @@ Darkfield Microscope - + - + @@ -376,7 +376,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/microscope-electron.html b/concepts/microscope-electron.html index 6762555f13..8874aec3f9 100644 --- a/concepts/microscope-electron.html +++ b/concepts/microscope-electron.html @@ -11,12 +11,12 @@ Electron Microscope - + - + @@ -376,7 +376,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/microscope-flourescence.html b/concepts/microscope-flourescence.html index 8978d6e5e2..480bfccd06 100644 --- a/concepts/microscope-flourescence.html +++ b/concepts/microscope-flourescence.html @@ -11,12 +11,12 @@ Flourescence Microscope - + - + @@ -376,7 +376,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/microscope-inverted.html b/concepts/microscope-inverted.html index da767fd27e..7506c1ba6e 100644 --- a/concepts/microscope-inverted.html +++ b/concepts/microscope-inverted.html @@ -11,12 +11,12 @@ Inverted Microscope - + - + @@ -374,7 +374,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/microscope-optical.html b/concepts/microscope-optical.html index 4f17590828..f719e22bcb 100644 --- a/concepts/microscope-optical.html +++ b/concepts/microscope-optical.html @@ -11,12 +11,12 @@ Optical Microscope - + - + @@ -376,7 +376,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/microscope-phasecontrast.html b/concepts/microscope-phasecontrast.html index 82f15879e2..0a64fd7c8c 100644 --- a/concepts/microscope-phasecontrast.html +++ b/concepts/microscope-phasecontrast.html @@ -11,12 +11,12 @@ Phase Contrast Microscope - + - + @@ -376,7 +376,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/microscope-polarizing.html b/concepts/microscope-polarizing.html index 8e048afbff..eda0edc416 100644 --- a/concepts/microscope-polarizing.html +++ b/concepts/microscope-polarizing.html @@ -11,12 +11,12 @@ Polarizing Microscope - + - + @@ -376,7 +376,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/microscope-scanningprobe.html b/concepts/microscope-scanningprobe.html index b17045926c..3dd3f9e2af 100644 --- a/concepts/microscope-scanningprobe.html +++ b/concepts/microscope-scanningprobe.html @@ -11,12 +11,12 @@ Scanning Probe Microscope - + - + @@ -376,7 +376,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/microscope-stereo.html b/concepts/microscope-stereo.html index aadf5658b2..0205cb8d7a 100644 --- a/concepts/microscope-stereo.html +++ b/concepts/microscope-stereo.html @@ -11,12 +11,12 @@ Stereo Microscope - + - + @@ -374,7 +374,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/microscope-ultraviolet.html b/concepts/microscope-ultraviolet.html index cad08ea17a..aafa0980a7 100644 --- a/concepts/microscope-ultraviolet.html +++ b/concepts/microscope-ultraviolet.html @@ -11,12 +11,12 @@ Ultraviolet Microscope - + - + @@ -376,7 +376,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/microwave-ablation.html b/concepts/microwave-ablation.html index d9004c55ba..872e8fb035 100644 --- a/concepts/microwave-ablation.html +++ b/concepts/microwave-ablation.html @@ -11,12 +11,12 @@ Microwave ablation - + - + @@ -375,7 +375,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/miscellaneous-brain-tumor.html b/concepts/miscellaneous-brain-tumor.html index e95581f71b..0d86bc7ecc 100644 --- a/concepts/miscellaneous-brain-tumor.html +++ b/concepts/miscellaneous-brain-tumor.html @@ -11,12 +11,12 @@ Miscellaneous Brain Tumor - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/miscellaneous-neuroepithelial-tumor.html b/concepts/miscellaneous-neuroepithelial-tumor.html index c17a885a41..e9c90405ea 100644 --- a/concepts/miscellaneous-neuroepithelial-tumor.html +++ b/concepts/miscellaneous-neuroepithelial-tumor.html @@ -11,12 +11,12 @@ Miscellaneous Neuroepithelial Tumor - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mitobronitol.html b/concepts/mitobronitol.html index 9547035c10..f0494854eb 100644 --- a/concepts/mitobronitol.html +++ b/concepts/mitobronitol.html @@ -11,12 +11,12 @@ Mitobronitol - + - + @@ -378,7 +378,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mitomycin.html b/concepts/mitomycin.html index c35c37d0f1..d2ef2d83b7 100644 --- a/concepts/mitomycin.html +++ b/concepts/mitomycin.html @@ -11,12 +11,12 @@ Mitomycin - + - + @@ -375,7 +375,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mitoxantrone.html b/concepts/mitoxantrone.html index 6ffb118be3..a19d9487f2 100644 --- a/concepts/mitoxantrone.html +++ b/concepts/mitoxantrone.html @@ -11,12 +11,12 @@ Mitoxantrone - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mixed-ampullary-carcinoma.html b/concepts/mixed-ampullary-carcinoma.html index 8bae1f84a5..442c298088 100644 --- a/concepts/mixed-ampullary-carcinoma.html +++ b/concepts/mixed-ampullary-carcinoma.html @@ -11,12 +11,12 @@ Mixed Ampullary Carcinoma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mixed-cancer-types.html b/concepts/mixed-cancer-types.html index 83e24e0404..bb12695c39 100644 --- a/concepts/mixed-cancer-types.html +++ b/concepts/mixed-cancer-types.html @@ -11,12 +11,12 @@ Mixed Cancer Types - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mixed-cellularity-classical-hodgkin-lymphoma.html b/concepts/mixed-cellularity-classical-hodgkin-lymphoma.html index c9e70b87b6..9ff1bbbe4f 100644 --- a/concepts/mixed-cellularity-classical-hodgkin-lymphoma.html +++ b/concepts/mixed-cellularity-classical-hodgkin-lymphoma.html @@ -11,12 +11,12 @@ Mixed Cellularity Classical Hodgkin Lymphoma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mixed-cervical-carcinoma.html b/concepts/mixed-cervical-carcinoma.html index f58e64d9b7..c8df7f69f9 100644 --- a/concepts/mixed-cervical-carcinoma.html +++ b/concepts/mixed-cervical-carcinoma.html @@ -11,12 +11,12 @@ Mixed Cervical Carcinoma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mixed-germ-cell-tumor-cns-brain.html b/concepts/mixed-germ-cell-tumor-cns-brain.html index 8139579937..c6de814610 100644 --- a/concepts/mixed-germ-cell-tumor-cns-brain.html +++ b/concepts/mixed-germ-cell-tumor-cns-brain.html @@ -11,12 +11,12 @@ Mixed Germ Cell Tumor CNS/Brain - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mixed-germ-cell-tumor-testis.html b/concepts/mixed-germ-cell-tumor-testis.html index 1ba516874b..afd167c39a 100644 --- a/concepts/mixed-germ-cell-tumor-testis.html +++ b/concepts/mixed-germ-cell-tumor-testis.html @@ -11,12 +11,12 @@ Mixed Germ Cell Tumor Testis - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mixed-germ-cell-tumor-vulva-vagina.html b/concepts/mixed-germ-cell-tumor-vulva-vagina.html index 695c033107..021385909e 100644 --- a/concepts/mixed-germ-cell-tumor-vulva-vagina.html +++ b/concepts/mixed-germ-cell-tumor-vulva-vagina.html @@ -11,12 +11,12 @@ Mixed Germ Cell Tumor Vulva/Vagina - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mixed-germ-cell-tumor.html b/concepts/mixed-germ-cell-tumor.html index 4b53108158..8171d150bc 100644 --- a/concepts/mixed-germ-cell-tumor.html +++ b/concepts/mixed-germ-cell-tumor.html @@ -11,12 +11,12 @@ Mixed Germ Cell Tumor - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mixed-ovarian-carcinoma.html b/concepts/mixed-ovarian-carcinoma.html index b66c9fe274..7718a04bd6 100644 --- a/concepts/mixed-ovarian-carcinoma.html +++ b/concepts/mixed-ovarian-carcinoma.html @@ -11,12 +11,12 @@ Mixed Ovarian Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mixed-phenotype-acute-leukemia-b-myeloid-nos.html b/concepts/mixed-phenotype-acute-leukemia-b-myeloid-nos.html index ae2044e276..be9296bf00 100644 --- a/concepts/mixed-phenotype-acute-leukemia-b-myeloid-nos.html +++ b/concepts/mixed-phenotype-acute-leukemia-b-myeloid-nos.html @@ -11,12 +11,12 @@ Mixed Phenotype Acute Leukemia, B/Myeloid, NOS - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mixed-phenotype-acute-leukemia-t-myeloid-nos.html b/concepts/mixed-phenotype-acute-leukemia-t-myeloid-nos.html index f5c573ac69..f984e4e1ce 100644 --- a/concepts/mixed-phenotype-acute-leukemia-t-myeloid-nos.html +++ b/concepts/mixed-phenotype-acute-leukemia-t-myeloid-nos.html @@ -11,12 +11,12 @@ Mixed Phenotype Acute Leukemia, T/Myeloid, NOS - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mixed-phenotype-acute-leukemia-with-t922q34.1q11.2-bcr-abl1.html b/concepts/mixed-phenotype-acute-leukemia-with-t922q34.1q11.2-bcr-abl1.html index 7932391d8e..7d236502d2 100644 --- a/concepts/mixed-phenotype-acute-leukemia-with-t922q34.1q11.2-bcr-abl1.html +++ b/concepts/mixed-phenotype-acute-leukemia-with-t922q34.1q11.2-bcr-abl1.html @@ -11,12 +11,12 @@ Mixed Phenotype Acute Leukemia with t(9;22)(q34.1;q11.2); BCR-ABL1 - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mixed-phenotype-acute-leukemia-with-tv11q23.3-kmt2a-rearranged.html b/concepts/mixed-phenotype-acute-leukemia-with-tv11q23.3-kmt2a-rearranged.html index 1f766d42b1..cc3cacdbab 100644 --- a/concepts/mixed-phenotype-acute-leukemia-with-tv11q23.3-kmt2a-rearranged.html +++ b/concepts/mixed-phenotype-acute-leukemia-with-tv11q23.3-kmt2a-rearranged.html @@ -11,12 +11,12 @@ Mixed Phenotype Acute Leukemia with t(v;11q23.3); KMT2A Rearranged - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mixed-type-metaplastic-breast-cancer.html b/concepts/mixed-type-metaplastic-breast-cancer.html index 51fdcdbaed..bceaf30bed 100644 --- a/concepts/mixed-type-metaplastic-breast-cancer.html +++ b/concepts/mixed-type-metaplastic-breast-cancer.html @@ -11,12 +11,12 @@ Mixed Type Metaplastic Breast Cancer - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mmcr-mo.html b/concepts/mmcr-mo.html index 0baa6ada0a..f531f633dd 100644 --- a/concepts/mmcr-mo.html +++ b/concepts/mmcr-mo.html @@ -11,12 +11,12 @@ MMCR - + - + @@ -378,7 +378,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mncr-ma.html b/concepts/mncr-ma.html index 72d0382571..2daa1e4c30 100644 --- a/concepts/mncr-ma.html +++ b/concepts/mncr-ma.html @@ -11,12 +11,12 @@ MNCR - + - + @@ -378,7 +378,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/moderna.html b/concepts/moderna.html index f865f51fec..68b0e2679c 100644 --- a/concepts/moderna.html +++ b/concepts/moderna.html @@ -11,12 +11,12 @@ Moderna - + - + @@ -381,7 +381,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/moffitt-cancer-center.html b/concepts/moffitt-cancer-center.html index e124db4825..04facefde6 100644 --- a/concepts/moffitt-cancer-center.html +++ b/concepts/moffitt-cancer-center.html @@ -11,12 +11,12 @@ Moffitt Cancer Center - + - + @@ -387,7 +387,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/molar-pregnancy.html b/concepts/molar-pregnancy.html index 3476bb918c..9ddc0e6480 100644 --- a/concepts/molar-pregnancy.html +++ b/concepts/molar-pregnancy.html @@ -11,12 +11,12 @@ Molar Pregnancy - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/monoclonal-b-cell-lymphocytosis.html b/concepts/monoclonal-b-cell-lymphocytosis.html index 903628277e..404779b612 100644 --- a/concepts/monoclonal-b-cell-lymphocytosis.html +++ b/concepts/monoclonal-b-cell-lymphocytosis.html @@ -11,12 +11,12 @@ Monoclonal B-Cell Lymphocytosis - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/monoclonal-gammopathy-of-undetermined-significance.html b/concepts/monoclonal-gammopathy-of-undetermined-significance.html index 2dc2601447..a05328a7e3 100644 --- a/concepts/monoclonal-gammopathy-of-undetermined-significance.html +++ b/concepts/monoclonal-gammopathy-of-undetermined-significance.html @@ -11,12 +11,12 @@ Monoclonal Gammopathy of Undetermined Significance - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/monoclonal-immunoglobulin-deposition-diseases-other.html b/concepts/monoclonal-immunoglobulin-deposition-diseases-other.html index 3df998a4be..1172bf8abe 100644 --- a/concepts/monoclonal-immunoglobulin-deposition-diseases-other.html +++ b/concepts/monoclonal-immunoglobulin-deposition-diseases-other.html @@ -11,12 +11,12 @@ Monoclonal Immunoglobulin Deposition Diseases, Other - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/monoclonal-immunoglobulin-deposition-diseases.html b/concepts/monoclonal-immunoglobulin-deposition-diseases.html index cf0a239c95..d57dd13741 100644 --- a/concepts/monoclonal-immunoglobulin-deposition-diseases.html +++ b/concepts/monoclonal-immunoglobulin-deposition-diseases.html @@ -11,12 +11,12 @@ Monoclonal Immunoglobulin Deposition Diseases - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/monomorphic-epitheliotropic-intestinal-t-cell-lymphoma.html b/concepts/monomorphic-epitheliotropic-intestinal-t-cell-lymphoma.html index 4d1b960189..2111889771 100644 --- a/concepts/monomorphic-epitheliotropic-intestinal-t-cell-lymphoma.html +++ b/concepts/monomorphic-epitheliotropic-intestinal-t-cell-lymphoma.html @@ -11,12 +11,12 @@ Monomorphic Epitheliotropic Intestinal T-Cell Lymphoma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/monomorphic-ptld-b--and-t--nk-cell-types.html b/concepts/monomorphic-ptld-b--and-t--nk-cell-types.html index 67019bb11f..94361157e3 100644 --- a/concepts/monomorphic-ptld-b--and-t--nk-cell-types.html +++ b/concepts/monomorphic-ptld-b--and-t--nk-cell-types.html @@ -11,12 +11,12 @@ Monomorphic PTLD (B- and T-/NK-cell types) - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/montefiore-einstein-cancer-center.html b/concepts/montefiore-einstein-cancer-center.html index 69459b7b08..91dcc9ae93 100644 --- a/concepts/montefiore-einstein-cancer-center.html +++ b/concepts/montefiore-einstein-cancer-center.html @@ -11,12 +11,12 @@ Montefiore Einstein Cancer Center - + - + @@ -384,7 +384,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/moores-comprehensive-cancer-center.html b/concepts/moores-comprehensive-cancer-center.html index feafa20efb..8baeaf6f18 100644 --- a/concepts/moores-comprehensive-cancer-center.html +++ b/concepts/moores-comprehensive-cancer-center.html @@ -11,12 +11,12 @@ Moores Comprehensive Cancer Center - + - + @@ -386,7 +386,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mrisktool.html b/concepts/mrisktool.html index ca6171fff3..06a6164fd2 100644 --- a/concepts/mrisktool.html +++ b/concepts/mrisktool.html @@ -11,12 +11,12 @@ The Melanoma Risk Assessment Tool - + - + @@ -376,7 +376,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mt-sdna.html b/concepts/mt-sdna.html index b9e0c5f9e3..976677f04d 100644 --- a/concepts/mt-sdna.html +++ b/concepts/mt-sdna.html @@ -11,12 +11,12 @@ MT-sDNA - + - + @@ -377,7 +377,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mu-heavy-chain-disease.html b/concepts/mu-heavy-chain-disease.html index e4c6099ce7..fb31961d15 100644 --- a/concepts/mu-heavy-chain-disease.html +++ b/concepts/mu-heavy-chain-disease.html @@ -11,12 +11,12 @@ Mu Heavy-Chain Disease - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mucinous-adenocarcinoma-of-the-appendix.html b/concepts/mucinous-adenocarcinoma-of-the-appendix.html index 6b98d86fa9..48a6d54038 100644 --- a/concepts/mucinous-adenocarcinoma-of-the-appendix.html +++ b/concepts/mucinous-adenocarcinoma-of-the-appendix.html @@ -11,12 +11,12 @@ Mucinous Adenocarcinoma of the Appendix - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mucinous-adenocarcinoma-of-the-colon-and-rectum.html b/concepts/mucinous-adenocarcinoma-of-the-colon-and-rectum.html index 7986380981..2c06c7d383 100644 --- a/concepts/mucinous-adenocarcinoma-of-the-colon-and-rectum.html +++ b/concepts/mucinous-adenocarcinoma-of-the-colon-and-rectum.html @@ -11,12 +11,12 @@ Mucinous Adenocarcinoma of the Colon and Rectum - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mucinous-adenocarcinoma-of-the-vulva-vagina.html b/concepts/mucinous-adenocarcinoma-of-the-vulva-vagina.html index 7593f101af..3de9e7be03 100644 --- a/concepts/mucinous-adenocarcinoma-of-the-vulva-vagina.html +++ b/concepts/mucinous-adenocarcinoma-of-the-vulva-vagina.html @@ -11,12 +11,12 @@ Mucinous Adenocarcinoma of the Vulva/Vagina - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mucinous-borderline-ovarian-tumor.html b/concepts/mucinous-borderline-ovarian-tumor.html index 6f29b18918..4d4e8eae88 100644 --- a/concepts/mucinous-borderline-ovarian-tumor.html +++ b/concepts/mucinous-borderline-ovarian-tumor.html @@ -11,12 +11,12 @@ Mucinous Borderline Ovarian Tumor - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mucinous-carcinoma.html b/concepts/mucinous-carcinoma.html index 87d53a323c..93c592fd91 100644 --- a/concepts/mucinous-carcinoma.html +++ b/concepts/mucinous-carcinoma.html @@ -11,12 +11,12 @@ Mucinous Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mucinous-cystic-neoplasm.html b/concepts/mucinous-cystic-neoplasm.html index c553cfde51..0dbb3d7a13 100644 --- a/concepts/mucinous-cystic-neoplasm.html +++ b/concepts/mucinous-cystic-neoplasm.html @@ -11,12 +11,12 @@ Mucinous Cystic Neoplasm - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mucinous-ovarian-cancer.html b/concepts/mucinous-ovarian-cancer.html index 420052177b..11b881b64c 100644 --- a/concepts/mucinous-ovarian-cancer.html +++ b/concepts/mucinous-ovarian-cancer.html @@ -11,12 +11,12 @@ Mucinous Ovarian Cancer - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mucinous-stomach-adenocarcinoma.html b/concepts/mucinous-stomach-adenocarcinoma.html index cdefcec09d..248388d62b 100644 --- a/concepts/mucinous-stomach-adenocarcinoma.html +++ b/concepts/mucinous-stomach-adenocarcinoma.html @@ -11,12 +11,12 @@ Mucinous Stomach Adenocarcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mucoepidermoid-carcinoma-of-the-lung.html b/concepts/mucoepidermoid-carcinoma-of-the-lung.html index b6a12f3541..ff683c58f8 100644 --- a/concepts/mucoepidermoid-carcinoma-of-the-lung.html +++ b/concepts/mucoepidermoid-carcinoma-of-the-lung.html @@ -11,12 +11,12 @@ Mucoepidermoid Carcinoma of the Lung - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mucoepidermoid-carcinoma.html b/concepts/mucoepidermoid-carcinoma.html index 0b82e86c55..802ca34783 100644 --- a/concepts/mucoepidermoid-carcinoma.html +++ b/concepts/mucoepidermoid-carcinoma.html @@ -11,12 +11,12 @@ Mucoepidermoid Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mucosal-melanoma-of-the-esophagus.html b/concepts/mucosal-melanoma-of-the-esophagus.html index 02c114da08..5c1da65458 100644 --- a/concepts/mucosal-melanoma-of-the-esophagus.html +++ b/concepts/mucosal-melanoma-of-the-esophagus.html @@ -11,12 +11,12 @@ Mucosal Melanoma of the Esophagus - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mucosal-melanoma-of-the-urethra.html b/concepts/mucosal-melanoma-of-the-urethra.html index fab83b196e..13362e7779 100644 --- a/concepts/mucosal-melanoma-of-the-urethra.html +++ b/concepts/mucosal-melanoma-of-the-urethra.html @@ -11,12 +11,12 @@ Mucosal Melanoma of the Urethra - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mucosal-melanoma-of-the-vulva-vagina.html b/concepts/mucosal-melanoma-of-the-vulva-vagina.html index 7980659a12..20be7420fa 100644 --- a/concepts/mucosal-melanoma-of-the-vulva-vagina.html +++ b/concepts/mucosal-melanoma-of-the-vulva-vagina.html @@ -11,12 +11,12 @@ Mucosal Melanoma of the Vulva/Vagina - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/multiple-myeloma.html b/concepts/multiple-myeloma.html index a7f1908bb5..2c99185dbf 100644 --- a/concepts/multiple-myeloma.html +++ b/concepts/multiple-myeloma.html @@ -11,12 +11,12 @@ Multiple Myeloma - + - + @@ -422,7 +422,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/multiplemyeloma-subreddit.html b/concepts/multiplemyeloma-subreddit.html index 67e9ac5412..a072e3588f 100644 --- a/concepts/multiplemyeloma-subreddit.html +++ b/concepts/multiplemyeloma-subreddit.html @@ -11,12 +11,12 @@ Multiplemyeloma Subreddit - + - + @@ -377,7 +377,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/music-therapy.html b/concepts/music-therapy.html index fec9a4726c..32f29c8be7 100644 --- a/concepts/music-therapy.html +++ b/concepts/music-therapy.html @@ -11,12 +11,12 @@ Music therapy - + - + @@ -375,7 +375,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mycanceriq.html b/concepts/mycanceriq.html index 32522018f5..5670e6a806 100644 --- a/concepts/mycanceriq.html +++ b/concepts/mycanceriq.html @@ -11,12 +11,12 @@ My CancerIQ: Cancer Risk Assessment - + - + @@ -378,7 +378,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mychart.html b/concepts/mychart.html index 6dba1512cd..522cd2eceb 100644 --- a/concepts/mychart.html +++ b/concepts/mychart.html @@ -11,12 +11,12 @@ MyChart - + - + @@ -375,7 +375,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/mycosis-fungoides.html b/concepts/mycosis-fungoides.html index 795eb38ac9..6a778c92bd 100644 --- a/concepts/mycosis-fungoides.html +++ b/concepts/mycosis-fungoides.html @@ -11,12 +11,12 @@ Mycosis Fungoides - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/myelodysplastic-myeloproliferative-neoplasms.html b/concepts/myelodysplastic-myeloproliferative-neoplasms.html index 62aeabae78..a1dc880340 100644 --- a/concepts/myelodysplastic-myeloproliferative-neoplasms.html +++ b/concepts/myelodysplastic-myeloproliferative-neoplasms.html @@ -11,12 +11,12 @@ Myelodysplastic/Myeloproliferative Neoplasms - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/myelodysplastic-syndromes.html b/concepts/myelodysplastic-syndromes.html index 76b5186797..5f8943bba0 100644 --- a/concepts/myelodysplastic-syndromes.html +++ b/concepts/myelodysplastic-syndromes.html @@ -11,12 +11,12 @@ Myelodysplastic Syndromes - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/myeloid-atypical.html b/concepts/myeloid-atypical.html index 9075869c8b..951d676677 100644 --- a/concepts/myeloid-atypical.html +++ b/concepts/myeloid-atypical.html @@ -11,12 +11,12 @@ Myeloid Atypical - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/myeloid-benign.html b/concepts/myeloid-benign.html index f121e7774c..a6642dcc26 100644 --- a/concepts/myeloid-benign.html +++ b/concepts/myeloid-benign.html @@ -11,12 +11,12 @@ Myeloid Benign - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/myeloid-leukemia-associated-with-down-syndrome.html b/concepts/myeloid-leukemia-associated-with-down-syndrome.html index 3f8ec7ade5..ef613932fc 100644 --- a/concepts/myeloid-leukemia-associated-with-down-syndrome.html +++ b/concepts/myeloid-leukemia-associated-with-down-syndrome.html @@ -11,12 +11,12 @@ Myeloid Leukemia Associated with Down Syndrome - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/myeloid-lymphoid-neoplasms-with-eosinophilia-and-rearrangement-of-pdgfra-pdgfrb-or-fgfr1-or-with-pcm1-jak2.html b/concepts/myeloid-lymphoid-neoplasms-with-eosinophilia-and-rearrangement-of-pdgfra-pdgfrb-or-fgfr1-or-with-pcm1-jak2.html index 4a649f8cbd..ef3b878e9b 100644 --- a/concepts/myeloid-lymphoid-neoplasms-with-eosinophilia-and-rearrangement-of-pdgfra-pdgfrb-or-fgfr1-or-with-pcm1-jak2.html +++ b/concepts/myeloid-lymphoid-neoplasms-with-eosinophilia-and-rearrangement-of-pdgfra-pdgfrb-or-fgfr1-or-with-pcm1-jak2.html @@ -11,12 +11,12 @@ Myeloid/Lymphoid Neoplasms with Eosinophilia and Rearrangement of PDGFRA/PDGFRB or FGFR1 or with PCM1-JAK2 - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/myeloid-lymphoid-neoplasms-with-fgfr1-rearrangement.html b/concepts/myeloid-lymphoid-neoplasms-with-fgfr1-rearrangement.html index bd36c6d530..573d5b6ad1 100644 --- a/concepts/myeloid-lymphoid-neoplasms-with-fgfr1-rearrangement.html +++ b/concepts/myeloid-lymphoid-neoplasms-with-fgfr1-rearrangement.html @@ -11,12 +11,12 @@ Myeloid/Lymphoid Neoplasms with FGFR1 Rearrangement - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/myeloid-lymphoid-neoplasms-with-pcm1-jak2.html b/concepts/myeloid-lymphoid-neoplasms-with-pcm1-jak2.html index 734af42a47..7953c7dda0 100644 --- a/concepts/myeloid-lymphoid-neoplasms-with-pcm1-jak2.html +++ b/concepts/myeloid-lymphoid-neoplasms-with-pcm1-jak2.html @@ -11,12 +11,12 @@ Myeloid/Lymphoid Neoplasms with PCM1-JAK2 - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/myeloid-lymphoid-neoplasms-with-pdgfra-rearrangement.html b/concepts/myeloid-lymphoid-neoplasms-with-pdgfra-rearrangement.html index 5a02b86340..a28f78c884 100644 --- a/concepts/myeloid-lymphoid-neoplasms-with-pdgfra-rearrangement.html +++ b/concepts/myeloid-lymphoid-neoplasms-with-pdgfra-rearrangement.html @@ -11,12 +11,12 @@ Myeloid/Lymphoid Neoplasms with PDGFRA Rearrangement - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/myeloid-lymphoid-neoplasms-with-pdgfrb-rearrangement.html b/concepts/myeloid-lymphoid-neoplasms-with-pdgfrb-rearrangement.html index 346bd04830..7b3ce48006 100644 --- a/concepts/myeloid-lymphoid-neoplasms-with-pdgfrb-rearrangement.html +++ b/concepts/myeloid-lymphoid-neoplasms-with-pdgfrb-rearrangement.html @@ -11,12 +11,12 @@ Myeloid/Lymphoid Neoplasms with PDGFRB Rearrangement - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/myeloid-neoplasm.html b/concepts/myeloid-neoplasm.html index 8a44d2f8db..495493b3a4 100644 --- a/concepts/myeloid-neoplasm.html +++ b/concepts/myeloid-neoplasm.html @@ -11,12 +11,12 @@ Myeloid Neoplasm - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/myeloid-neoplasms-with-germ-line-predisposition.html b/concepts/myeloid-neoplasms-with-germ-line-predisposition.html index 4de634de20..3b6f7364cb 100644 --- a/concepts/myeloid-neoplasms-with-germ-line-predisposition.html +++ b/concepts/myeloid-neoplasms-with-germ-line-predisposition.html @@ -11,12 +11,12 @@ Myeloid Neoplasms with Germ Line Predisposition - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/myeloid-proliferations-related-to-down-syndrome.html b/concepts/myeloid-proliferations-related-to-down-syndrome.html index 952a92f377..b9d90975a8 100644 --- a/concepts/myeloid-proliferations-related-to-down-syndrome.html +++ b/concepts/myeloid-proliferations-related-to-down-syndrome.html @@ -11,12 +11,12 @@ Myeloid Proliferations Related to Down Syndrome - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/myeloid-sarcoma.html b/concepts/myeloid-sarcoma.html index 45938c7e6e..7556bf8392 100644 --- a/concepts/myeloid-sarcoma.html +++ b/concepts/myeloid-sarcoma.html @@ -11,12 +11,12 @@ Myeloid Sarcoma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/myeloid.html b/concepts/myeloid.html index b01fa0e83b..d5f23bfe62 100644 --- a/concepts/myeloid.html +++ b/concepts/myeloid.html @@ -11,12 +11,12 @@ Myeloid - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/myeloproliferative-neoplasms-unclassifiable.html b/concepts/myeloproliferative-neoplasms-unclassifiable.html index 86a70be66c..ac02b15980 100644 --- a/concepts/myeloproliferative-neoplasms-unclassifiable.html +++ b/concepts/myeloproliferative-neoplasms-unclassifiable.html @@ -11,12 +11,12 @@ Myeloproliferative Neoplasms, Unclassifiable - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/myeloproliferative-neoplasms.html b/concepts/myeloproliferative-neoplasms.html index fbb4d3bb3d..a5ce3f40a6 100644 --- a/concepts/myeloproliferative-neoplasms.html +++ b/concepts/myeloproliferative-neoplasms.html @@ -11,12 +11,12 @@ Myeloproliferative Neoplasms - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/myoepithelial-carcinoma.html b/concepts/myoepithelial-carcinoma.html index 2b0a5eaac1..f013c7de4e 100644 --- a/concepts/myoepithelial-carcinoma.html +++ b/concepts/myoepithelial-carcinoma.html @@ -11,12 +11,12 @@ Myoepithelial Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/myofibroma.html b/concepts/myofibroma.html index 4dd051d769..4f6f36c444 100644 --- a/concepts/myofibroma.html +++ b/concepts/myofibroma.html @@ -11,12 +11,12 @@ Myofibroma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/myofibromatosis.html b/concepts/myofibromatosis.html index aa01ffc3f3..2efe41a14d 100644 --- a/concepts/myofibromatosis.html +++ b/concepts/myofibromatosis.html @@ -11,12 +11,12 @@ Myofibromatosis - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/myopericytoma.html b/concepts/myopericytoma.html index 1b211fb168..2b54c2dd9c 100644 --- a/concepts/myopericytoma.html +++ b/concepts/myopericytoma.html @@ -11,12 +11,12 @@ Myopericytoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/myxofibrosarcoma.html b/concepts/myxofibrosarcoma.html index 7c46e3ce21..c68d72a050 100644 --- a/concepts/myxofibrosarcoma.html +++ b/concepts/myxofibrosarcoma.html @@ -11,12 +11,12 @@ Myxofibrosarcoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/myxoid-chondrosarcoma.html b/concepts/myxoid-chondrosarcoma.html index 3b67b8943d..4a2d15309c 100644 --- a/concepts/myxoid-chondrosarcoma.html +++ b/concepts/myxoid-chondrosarcoma.html @@ -11,12 +11,12 @@ Myxoid Chondrosarcoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/myxoid-round-cell-liposarcoma.html b/concepts/myxoid-round-cell-liposarcoma.html index daa132a761..62572549e6 100644 --- a/concepts/myxoid-round-cell-liposarcoma.html +++ b/concepts/myxoid-round-cell-liposarcoma.html @@ -11,12 +11,12 @@ Myxoid/Round-Cell Liposarcoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/myxoma.html b/concepts/myxoma.html index d5024093fe..b3cab61b9f 100644 --- a/concepts/myxoma.html +++ b/concepts/myxoma.html @@ -11,12 +11,12 @@ Myxoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/myxopapillary-ependymoma.html b/concepts/myxopapillary-ependymoma.html index af2d6ea620..a1e79ba783 100644 --- a/concepts/myxopapillary-ependymoma.html +++ b/concepts/myxopapillary-ependymoma.html @@ -11,12 +11,12 @@ Myxopapillary Ependymoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/naaccr.html b/concepts/naaccr.html index 2146bb5a92..9743d17866 100644 --- a/concepts/naaccr.html +++ b/concepts/naaccr.html @@ -11,12 +11,12 @@ NAACCR - + - + @@ -390,7 +390,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/nacr-ng.html b/concepts/nacr-ng.html index 7a7f2aa6ac..0d436d06cd 100644 --- a/concepts/nacr-ng.html +++ b/concepts/nacr-ng.html @@ -11,12 +11,12 @@ NACR - + - + @@ -378,7 +378,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/nasopharyngeal-carcinoma.html b/concepts/nasopharyngeal-carcinoma.html index 6c58fa683d..b92fc6b8e2 100644 --- a/concepts/nasopharyngeal-carcinoma.html +++ b/concepts/nasopharyngeal-carcinoma.html @@ -11,12 +11,12 @@ Nasopharyngeal Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/national-breast-cancer-foundation.html b/concepts/national-breast-cancer-foundation.html index b294e5c2e0..76b6f0a680 100644 --- a/concepts/national-breast-cancer-foundation.html +++ b/concepts/national-breast-cancer-foundation.html @@ -11,12 +11,12 @@ National Breast Cancer Foundation - + - + @@ -383,7 +383,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/national-cancer-center-japan.html b/concepts/national-cancer-center-japan.html index 25c8e5b940..0ed5a2d562 100644 --- a/concepts/national-cancer-center-japan.html +++ b/concepts/national-cancer-center-japan.html @@ -11,12 +11,12 @@ National Cancer Center Japan - + - + @@ -376,7 +376,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/national-cancer-center-korea.html b/concepts/national-cancer-center-korea.html index df6a4cc18d..a570ed9378 100644 --- a/concepts/national-cancer-center-korea.html +++ b/concepts/national-cancer-center-korea.html @@ -11,12 +11,12 @@ National Cancer Center Korea - + - + @@ -377,7 +377,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/national-cancer-grid-india.html b/concepts/national-cancer-grid-india.html index bc3fbb6161..ae3fa6911d 100644 --- a/concepts/national-cancer-grid-india.html +++ b/concepts/national-cancer-grid-india.html @@ -11,12 +11,12 @@ National Cancer Grid India - + - + @@ -376,7 +376,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/national-cancer-institute-brazil.html b/concepts/national-cancer-institute-brazil.html index cc9555e6ab..4345022f97 100644 --- a/concepts/national-cancer-institute-brazil.html +++ b/concepts/national-cancer-institute-brazil.html @@ -11,12 +11,12 @@ National Cancer Institute Brazil - + - + @@ -378,7 +378,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/national-cancer-research-institute-uk.html b/concepts/national-cancer-research-institute-uk.html index c401dd33d9..6a94cdd1e4 100644 --- a/concepts/national-cancer-research-institute-uk.html +++ b/concepts/national-cancer-research-institute-uk.html @@ -11,12 +11,12 @@ National Cancer Research Institute UK - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/national-prostate-cancer-awareness-month.html b/concepts/national-prostate-cancer-awareness-month.html index f7d69e0205..21c008ceeb 100644 --- a/concepts/national-prostate-cancer-awareness-month.html +++ b/concepts/national-prostate-cancer-awareness-month.html @@ -11,12 +11,12 @@ National Prostate Cancer Awareness Month - + - + @@ -376,7 +376,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/natural-killer-nk-cell-lymphoblastic-leukemia-lymphoma.html b/concepts/natural-killer-nk-cell-lymphoblastic-leukemia-lymphoma.html index afe58031c9..fa3506b358 100644 --- a/concepts/natural-killer-nk-cell-lymphoblastic-leukemia-lymphoma.html +++ b/concepts/natural-killer-nk-cell-lymphoblastic-leukemia-lymphoma.html @@ -11,12 +11,12 @@ Natural Killer (NK) Cell Lymphoblastic Leukemia/Lymphoma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/natural-strategies-for-cancer-patients.html b/concepts/natural-strategies-for-cancer-patients.html index 624b8515ae..b71067509b 100644 --- a/concepts/natural-strategies-for-cancer-patients.html +++ b/concepts/natural-strategies-for-cancer-patients.html @@ -11,12 +11,12 @@ Natural Strategies for Cancer Patients - + - + @@ -377,7 +377,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/nature-reviews-cancer.html b/concepts/nature-reviews-cancer.html index 9de877f54a..2dc6535fe9 100644 --- a/concepts/nature-reviews-cancer.html +++ b/concepts/nature-reviews-cancer.html @@ -11,12 +11,12 @@ Nature Reviews Cancer - + - + @@ -376,7 +376,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/navigational-bronchoscopy.html b/concepts/navigational-bronchoscopy.html index 3297a4103a..cabab105f4 100644 --- a/concepts/navigational-bronchoscopy.html +++ b/concepts/navigational-bronchoscopy.html @@ -11,12 +11,12 @@ Navigational Bronchoscopy - + - + @@ -377,7 +377,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/ncbi-gene.html b/concepts/ncbi-gene.html index 4ed0e3e498..1b9af35e42 100644 --- a/concepts/ncbi-gene.html +++ b/concepts/ncbi-gene.html @@ -11,12 +11,12 @@ NCBI Gene - + - + @@ -376,7 +376,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/ncbi.html b/concepts/ncbi.html index e41984566a..3230ef451c 100644 --- a/concepts/ncbi.html +++ b/concepts/ncbi.html @@ -11,12 +11,12 @@ National Center for Biotechnology Information - + - + @@ -385,7 +385,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/ncc.html b/concepts/ncc.html index 2fa0dcbed4..b6490fee77 100644 --- a/concepts/ncc.html +++ b/concepts/ncc.html @@ -11,12 +11,12 @@ NCC - + - + @@ -387,7 +387,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/nccn.html b/concepts/nccn.html index 4fec27711b..f863ee9875 100644 --- a/concepts/nccn.html +++ b/concepts/nccn.html @@ -11,12 +11,12 @@ National Comprehensive Cancer Network - + - + @@ -391,7 +391,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/nccp-af.html b/concepts/nccp-af.html index 11405da898..70e5bbad7c 100644 --- a/concepts/nccp-af.html +++ b/concepts/nccp-af.html @@ -11,12 +11,12 @@ NCCPA - + - + @@ -379,7 +379,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/nccp-al.html b/concepts/nccp-al.html index 98ad1a17fe..5472d94d6d 100644 --- a/concepts/nccp-al.html +++ b/concepts/nccp-al.html @@ -11,12 +11,12 @@ NCCP-AL - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/nccr.html b/concepts/nccr.html index 444c89dc44..d93f3701f9 100644 --- a/concepts/nccr.html +++ b/concepts/nccr.html @@ -11,12 +11,12 @@ NCCR - + - + @@ -378,7 +378,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/nccs.html b/concepts/nccs.html index e660656386..7fe7590fd9 100644 --- a/concepts/nccs.html +++ b/concepts/nccs.html @@ -11,12 +11,12 @@ NCCS - + - + @@ -381,7 +381,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/ncdb.html b/concepts/ncdb.html index a18cf1262c..e7972d8a45 100644 --- a/concepts/ncdb.html +++ b/concepts/ncdb.html @@ -11,12 +11,12 @@ NCDB - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/nci.html b/concepts/nci.html index 5bedca861b..fc1061e0a3 100644 --- a/concepts/nci.html +++ b/concepts/nci.html @@ -11,12 +11,12 @@ NCI - + - + @@ -386,7 +386,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/ncr-ar.html b/concepts/ncr-ar.html index 38b7c92896..a4a443f0a1 100644 --- a/concepts/ncr-ar.html +++ b/concepts/ncr-ar.html @@ -11,12 +11,12 @@ NCR-AR - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/ncra.html b/concepts/ncra.html index dac380cca9..4b40260922 100644 --- a/concepts/ncra.html +++ b/concepts/ncra.html @@ -11,12 +11,12 @@ National Cancer Registrars Association - + - + @@ -386,7 +386,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/ncrsa-za.html b/concepts/ncrsa-za.html index e35ece4397..3f4481aa42 100644 --- a/concepts/ncrsa-za.html +++ b/concepts/ncrsa-za.html @@ -11,12 +11,12 @@ ncr-sa - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/nedaplatin.html b/concepts/nedaplatin.html index a54b7f439a..8c494a763c 100644 --- a/concepts/nedaplatin.html +++ b/concepts/nedaplatin.html @@ -11,12 +11,12 @@ Nedaplatin - + - + @@ -379,7 +379,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/nephrectomy.html b/concepts/nephrectomy.html index 763772bc0f..d9cfd016cb 100644 --- a/concepts/nephrectomy.html +++ b/concepts/nephrectomy.html @@ -11,12 +11,12 @@ Nephrectomy - + - + @@ -376,7 +376,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/nerve-sheath-tumor.html b/concepts/nerve-sheath-tumor.html index 284ae0aa62..a3527d0028 100644 --- a/concepts/nerve-sheath-tumor.html +++ b/concepts/nerve-sheath-tumor.html @@ -11,12 +11,12 @@ Nerve Sheath Tumor - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/netherlands-ncc.html b/concepts/netherlands-ncc.html index 1fc1b9504d..da968797b4 100644 --- a/concepts/netherlands-ncc.html +++ b/concepts/netherlands-ncc.html @@ -11,12 +11,12 @@ Netherlands Cancer Institute - + - + @@ -379,7 +379,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/neuroblastoma.html b/concepts/neuroblastoma.html index 479e86ec8e..a956c764ac 100644 --- a/concepts/neuroblastoma.html +++ b/concepts/neuroblastoma.html @@ -11,12 +11,12 @@ Neuroblastoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/neuroendocrine-carcinoma-nos.html b/concepts/neuroendocrine-carcinoma-nos.html index 4fb01cbb33..b0764c0995 100644 --- a/concepts/neuroendocrine-carcinoma-nos.html +++ b/concepts/neuroendocrine-carcinoma-nos.html @@ -11,12 +11,12 @@ Neuroendocrine Carcinoma, NOS - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/neuroendocrine-tumor-nos.html b/concepts/neuroendocrine-tumor-nos.html index d09cfcfc61..50c2c73d4d 100644 --- a/concepts/neuroendocrine-tumor-nos.html +++ b/concepts/neuroendocrine-tumor-nos.html @@ -11,12 +11,12 @@ Neuroendocrine Tumor, NOS - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/neurofibroma.html b/concepts/neurofibroma.html index ee0fafeee0..1f25849e8e 100644 --- a/concepts/neurofibroma.html +++ b/concepts/neurofibroma.html @@ -11,12 +11,12 @@ Neurofibroma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/newyork-presbyterian-hospital.html b/concepts/newyork-presbyterian-hospital.html index fa1de896a6..ec2c8ff069 100644 --- a/concepts/newyork-presbyterian-hospital.html +++ b/concepts/newyork-presbyterian-hospital.html @@ -11,12 +11,12 @@ NewYork-Presbyterian Hospital - + - + @@ -385,7 +385,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/nfr.html b/concepts/nfr.html index 805063fd10..150a73e459 100644 --- a/concepts/nfr.html +++ b/concepts/nfr.html @@ -11,12 +11,12 @@ NFR - + - + @@ -379,7 +379,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/nhgri.html b/concepts/nhgri.html index 02ce7327c4..0dc7a2ca7f 100644 --- a/concepts/nhgri.html +++ b/concepts/nhgri.html @@ -11,12 +11,12 @@ NHGRI - + - + @@ -383,7 +383,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/nicr.html b/concepts/nicr.html index 61d3fa2846..d80209d02c 100644 --- a/concepts/nicr.html +++ b/concepts/nicr.html @@ -11,12 +11,12 @@ Northern Ireland Cancer Registry - + - + @@ -379,7 +379,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/nih.html b/concepts/nih.html index c9e0ef6391..1b8647f767 100644 --- a/concepts/nih.html +++ b/concepts/nih.html @@ -11,12 +11,12 @@ NIH - + - + @@ -388,7 +388,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/nimustine.html b/concepts/nimustine.html index e609ef838d..6ff753bc3d 100644 --- a/concepts/nimustine.html +++ b/concepts/nimustine.html @@ -11,12 +11,12 @@ Nimustine - + - + @@ -379,7 +379,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/nitrosoureas.html b/concepts/nitrosoureas.html index 6884125966..5955dda121 100644 --- a/concepts/nitrosoureas.html +++ b/concepts/nitrosoureas.html @@ -11,12 +11,12 @@ Nitrosoureas - + - + @@ -377,7 +377,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/nivolumab.html b/concepts/nivolumab.html index 9eb63a3a44..8d8b85d100 100644 --- a/concepts/nivolumab.html +++ b/concepts/nivolumab.html @@ -11,12 +11,12 @@ Nivolumab - + - + @@ -375,7 +375,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/nlm.html b/concepts/nlm.html index fff9edd7ff..e62347fd1a 100644 --- a/concepts/nlm.html +++ b/concepts/nlm.html @@ -11,12 +11,12 @@ United States National Library of Medicine - + - + @@ -384,7 +384,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/nncr-na.html b/concepts/nncr-na.html index f4abd3ea71..b6d1dfd69f 100644 --- a/concepts/nncr-na.html +++ b/concepts/nncr-na.html @@ -11,12 +11,12 @@ NNCR - + - + @@ -378,7 +378,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/nodal-marginal-zone-lymphoma.html b/concepts/nodal-marginal-zone-lymphoma.html index 7950ddc35c..eeb15c748c 100644 --- a/concepts/nodal-marginal-zone-lymphoma.html +++ b/concepts/nodal-marginal-zone-lymphoma.html @@ -11,12 +11,12 @@ Nodal Marginal Zone Lymphoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/nodal-peripheral-t-cell-lymphoma-with-tfh-phenotype.html b/concepts/nodal-peripheral-t-cell-lymphoma-with-tfh-phenotype.html index 7f8f340070..c6a4b31888 100644 --- a/concepts/nodal-peripheral-t-cell-lymphoma-with-tfh-phenotype.html +++ b/concepts/nodal-peripheral-t-cell-lymphoma-with-tfh-phenotype.html @@ -11,12 +11,12 @@ Nodal Peripheral T-Cell Lymphoma with TFH Phenotype - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/nodular-lymphocyte-predominant-hodgkin-lymphoma.html b/concepts/nodular-lymphocyte-predominant-hodgkin-lymphoma.html index 1d191b92ba..f26f6bf1f2 100644 --- a/concepts/nodular-lymphocyte-predominant-hodgkin-lymphoma.html +++ b/concepts/nodular-lymphocyte-predominant-hodgkin-lymphoma.html @@ -11,12 +11,12 @@ Nodular Lymphocyte-Predominant Hodgkin Lymphoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/nodular-sclerosis-classical-hodgkin-lymphoma.html b/concepts/nodular-sclerosis-classical-hodgkin-lymphoma.html index 97df928f8c..2f2a378040 100644 --- a/concepts/nodular-sclerosis-classical-hodgkin-lymphoma.html +++ b/concepts/nodular-sclerosis-classical-hodgkin-lymphoma.html @@ -11,12 +11,12 @@ Nodular Sclerosis Classical Hodgkin Lymphoma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/non-hodgkin-lymphoma.html b/concepts/non-hodgkin-lymphoma.html index 88dc1d35ec..f9a578dc12 100644 --- a/concepts/non-hodgkin-lymphoma.html +++ b/concepts/non-hodgkin-lymphoma.html @@ -11,12 +11,12 @@ Non-Hodgkin Lymphoma - + - + @@ -428,7 +428,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/non-seminomatous-germ-cell-tumor.html b/concepts/non-seminomatous-germ-cell-tumor.html index 21163e4eb3..6164d1a090 100644 --- a/concepts/non-seminomatous-germ-cell-tumor.html +++ b/concepts/non-seminomatous-germ-cell-tumor.html @@ -11,12 +11,12 @@ Non-Seminomatous Germ Cell Tumor - + - + @@ -381,7 +381,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/non-small-cell-lung-cancer.html b/concepts/non-small-cell-lung-cancer.html index 40ead94a5d..2c8f1407f2 100644 --- a/concepts/non-small-cell-lung-cancer.html +++ b/concepts/non-small-cell-lung-cancer.html @@ -11,12 +11,12 @@ Non-Small Cell Lung Cancer - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/norwegian-cancer-society.html b/concepts/norwegian-cancer-society.html index 294dee288b..35220e2b87 100644 --- a/concepts/norwegian-cancer-society.html +++ b/concepts/norwegian-cancer-society.html @@ -11,12 +11,12 @@ Norwegian Cancer Society - + - + @@ -378,7 +378,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/novartis.html b/concepts/novartis.html index 2db2124150..baa37cf5bb 100644 --- a/concepts/novartis.html +++ b/concepts/novartis.html @@ -11,12 +11,12 @@ Novartis - + - + @@ -385,7 +385,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/novo-nordisk.html b/concepts/novo-nordisk.html index 7c9403a633..a434374b30 100644 --- a/concepts/novo-nordisk.html +++ b/concepts/novo-nordisk.html @@ -11,12 +11,12 @@ Novo Nordisk - + - + @@ -379,7 +379,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/nscr-ng.html b/concepts/nscr-ng.html index 69b22745f7..70ffdf94ce 100644 --- a/concepts/nscr-ng.html +++ b/concepts/nscr-ng.html @@ -11,12 +11,12 @@ NSCR - + - + @@ -379,7 +379,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/nswcr-au.html b/concepts/nswcr-au.html index 11ccb86874..c6972c0d8a 100644 --- a/concepts/nswcr-au.html +++ b/concepts/nswcr-au.html @@ -11,12 +11,12 @@ NSWCR - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/ntcr-au.html b/concepts/ntcr-au.html index a888e8af10..ce3bde28a9 100644 --- a/concepts/ntcr-au.html +++ b/concepts/ntcr-au.html @@ -11,12 +11,12 @@ NTCR - + - + @@ -379,7 +379,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/nut-carcinoma-of-the-lung.html b/concepts/nut-carcinoma-of-the-lung.html index 225fe4c13d..a8ac91bc01 100644 --- a/concepts/nut-carcinoma-of-the-lung.html +++ b/concepts/nut-carcinoma-of-the-lung.html @@ -11,12 +11,12 @@ NUT Carcinoma of the Lung - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/nut-midline-carcinoma-of-the-head-and-neck.html b/concepts/nut-midline-carcinoma-of-the-head-and-neck.html index 1b917f95b3..b0e5ec13ed 100644 --- a/concepts/nut-midline-carcinoma-of-the-head-and-neck.html +++ b/concepts/nut-midline-carcinoma-of-the-head-and-neck.html @@ -11,12 +11,12 @@ NUT Midline Carcinoma of the Head and Neck - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/nutrition.html b/concepts/nutrition.html index 7c6357b2ee..0e8fc5a8d6 100644 --- a/concepts/nutrition.html +++ b/concepts/nutrition.html @@ -11,12 +11,12 @@ Nutrition - + - + @@ -373,7 +373,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/ocular-melanoma.html b/concepts/ocular-melanoma.html index e7bef7e377..a3835dbef3 100644 --- a/concepts/ocular-melanoma.html +++ b/concepts/ocular-melanoma.html @@ -11,12 +11,12 @@ Ocular Melanoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/odontogenic-carcinoma.html b/concepts/odontogenic-carcinoma.html index 1e4714dc56..8fe2b4e422 100644 --- a/concepts/odontogenic-carcinoma.html +++ b/concepts/odontogenic-carcinoma.html @@ -11,12 +11,12 @@ Odontogenic Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/olfactory-neuroblastoma.html b/concepts/olfactory-neuroblastoma.html index 7ea9714360..268cb6337b 100644 --- a/concepts/olfactory-neuroblastoma.html +++ b/concepts/olfactory-neuroblastoma.html @@ -11,12 +11,12 @@ Olfactory Neuroblastoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/oligoastrocytoma.html b/concepts/oligoastrocytoma.html index 21846acc1b..c05483ea5f 100644 --- a/concepts/oligoastrocytoma.html +++ b/concepts/oligoastrocytoma.html @@ -11,12 +11,12 @@ Oligoastrocytoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/oligodendroglioma.html b/concepts/oligodendroglioma.html index 0405eb0510..7e79725490 100644 --- a/concepts/oligodendroglioma.html +++ b/concepts/oligodendroglioma.html @@ -11,12 +11,12 @@ Oligodendroglioma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/onclive.html b/concepts/onclive.html index b4357d5b42..b09ae9523f 100644 --- a/concepts/onclive.html +++ b/concepts/onclive.html @@ -11,12 +11,12 @@ OncLive - + - + @@ -374,7 +374,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/oncocytic-adenoma-of-the-thyroid.html b/concepts/oncocytic-adenoma-of-the-thyroid.html index 27a50b2362..04e5868d91 100644 --- a/concepts/oncocytic-adenoma-of-the-thyroid.html +++ b/concepts/oncocytic-adenoma-of-the-thyroid.html @@ -11,12 +11,12 @@ Oncocytic Adenoma of the Thyroid - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/oncokb.html b/concepts/oncokb.html index cfc9f1c294..5dac8d6c81 100644 --- a/concepts/oncokb.html +++ b/concepts/oncokb.html @@ -11,12 +11,12 @@ OncoKB - + - + @@ -379,7 +379,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/oncotree.html b/concepts/oncotree.html index 9d3b5862d5..fd45a1785e 100644 --- a/concepts/oncotree.html +++ b/concepts/oncotree.html @@ -11,12 +11,12 @@ OncoTree - + - + @@ -375,7 +375,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/one-plus-one-cars.html b/concepts/one-plus-one-cars.html index 33ae173252..d94fb39e5a 100644 --- a/concepts/one-plus-one-cars.html +++ b/concepts/one-plus-one-cars.html @@ -11,12 +11,12 @@ 1+1 Cares - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/oneal-comprehensive-cancer-center.html b/concepts/oneal-comprehensive-cancer-center.html index 27b421615e..bd465847a2 100644 --- a/concepts/oneal-comprehensive-cancer-center.html +++ b/concepts/oneal-comprehensive-cancer-center.html @@ -11,12 +11,12 @@ O’Neal Comprehensive Cancer Center - + - + @@ -385,7 +385,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/oophorectomy.html b/concepts/oophorectomy.html index 9e6c3dfe47..d9025a246e 100644 --- a/concepts/oophorectomy.html +++ b/concepts/oophorectomy.html @@ -11,12 +11,12 @@ Oophorectomy - + - + @@ -376,7 +376,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/oral-administration.html b/concepts/oral-administration.html index 6994cdb534..5f673c4661 100644 --- a/concepts/oral-administration.html +++ b/concepts/oral-administration.html @@ -11,12 +11,12 @@ Oral administration - + - + @@ -375,7 +375,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/oral-cancer-foundation.html b/concepts/oral-cancer-foundation.html index df35734776..c664e2ea48 100644 --- a/concepts/oral-cancer-foundation.html +++ b/concepts/oral-cancer-foundation.html @@ -11,12 +11,12 @@ Oral Cancer Foundation - + - + @@ -384,7 +384,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/oral-cancer.html b/concepts/oral-cancer.html index 6bbbe5dceb..4e1f4d13e2 100644 --- a/concepts/oral-cancer.html +++ b/concepts/oral-cancer.html @@ -11,12 +11,12 @@ Oral Cancer - + - + @@ -422,7 +422,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/oral-cavity-squamous-cell-carcinoma.html b/concepts/oral-cavity-squamous-cell-carcinoma.html index c4e091fc42..a20992e1f9 100644 --- a/concepts/oral-cavity-squamous-cell-carcinoma.html +++ b/concepts/oral-cavity-squamous-cell-carcinoma.html @@ -11,12 +11,12 @@ Oral Cavity Squamous Cell Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/orchiectomy.html b/concepts/orchiectomy.html index 296c0250ba..2fd101d5ae 100644 --- a/concepts/orchiectomy.html +++ b/concepts/orchiectomy.html @@ -11,12 +11,12 @@ Orchiectomy - + - + @@ -376,7 +376,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/oropharyngeal-cancer.html b/concepts/oropharyngeal-cancer.html index 9c3e2b0516..29b9723618 100644 --- a/concepts/oropharyngeal-cancer.html +++ b/concepts/oropharyngeal-cancer.html @@ -11,12 +11,12 @@ Oropharyngeal cancer - + - + @@ -377,7 +377,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/oropharynx-squamous-cell-carcinoma.html b/concepts/oropharynx-squamous-cell-carcinoma.html index c8e5dc7773..bf2b36c0f3 100644 --- a/concepts/oropharynx-squamous-cell-carcinoma.html +++ b/concepts/oropharynx-squamous-cell-carcinoma.html @@ -11,12 +11,12 @@ Oropharynx Squamous Cell Carcinoma - + - + @@ -381,7 +381,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/ossifying-fibromyxoid-tumor.html b/concepts/ossifying-fibromyxoid-tumor.html index 1543347a96..170fda9255 100644 --- a/concepts/ossifying-fibromyxoid-tumor.html +++ b/concepts/ossifying-fibromyxoid-tumor.html @@ -11,12 +11,12 @@ Ossifying Fibromyxoid Tumor - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/osteoblastic-osteosarcoma.html b/concepts/osteoblastic-osteosarcoma.html index e1348dc610..28f4f236fa 100644 --- a/concepts/osteoblastic-osteosarcoma.html +++ b/concepts/osteoblastic-osteosarcoma.html @@ -11,12 +11,12 @@ Osteoblastic Osteosarcoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/osteoclastic-giant-cell-tumor.html b/concepts/osteoclastic-giant-cell-tumor.html index 38b976ca80..ab6c68520d 100644 --- a/concepts/osteoclastic-giant-cell-tumor.html +++ b/concepts/osteoclastic-giant-cell-tumor.html @@ -11,12 +11,12 @@ Osteoclastic Giant Cell Tumor - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/osteosarcoma.html b/concepts/osteosarcoma.html index 425213bbdb..f141ba8707 100644 --- a/concepts/osteosarcoma.html +++ b/concepts/osteosarcoma.html @@ -11,12 +11,12 @@ Osteosarcoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/other-uterine-tumor.html b/concepts/other-uterine-tumor.html index fbe1b6f191..9b4316e99d 100644 --- a/concepts/other-uterine-tumor.html +++ b/concepts/other-uterine-tumor.html @@ -11,12 +11,12 @@ Other Uterine Tumor - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/other.html b/concepts/other.html index e0a5146585..a41d01046d 100644 --- a/concepts/other.html +++ b/concepts/other.html @@ -11,12 +11,12 @@ Other - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/our-world-in-data-cancer.html b/concepts/our-world-in-data-cancer.html index b7dd8067a7..794b02ad9e 100644 --- a/concepts/our-world-in-data-cancer.html +++ b/concepts/our-world-in-data-cancer.html @@ -11,12 +11,12 @@ Our World in Data Cancer Page - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/ovarian-cancer-other.html b/concepts/ovarian-cancer-other.html index 9ddc1e5557..7711f32adc 100644 --- a/concepts/ovarian-cancer-other.html +++ b/concepts/ovarian-cancer-other.html @@ -11,12 +11,12 @@ Ovarian Cancer, Other - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/ovarian-cancer-subreddit.html b/concepts/ovarian-cancer-subreddit.html index b1c6db27bc..0e43e85dff 100644 --- a/concepts/ovarian-cancer-subreddit.html +++ b/concepts/ovarian-cancer-subreddit.html @@ -11,12 +11,12 @@ Ovarian Cancer Subreddit - + - + @@ -377,7 +377,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/ovarian-cancer.html b/concepts/ovarian-cancer.html index 9e9d9536fe..9fc4de2bf0 100644 --- a/concepts/ovarian-cancer.html +++ b/concepts/ovarian-cancer.html @@ -11,12 +11,12 @@ Ovarian Cancer - + - + @@ -415,7 +415,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/ovarian-carcinosarcoma-malignant-mixed-mesodermal-tumor.html b/concepts/ovarian-carcinosarcoma-malignant-mixed-mesodermal-tumor.html index 39e21c1242..a069a56a85 100644 --- a/concepts/ovarian-carcinosarcoma-malignant-mixed-mesodermal-tumor.html +++ b/concepts/ovarian-carcinosarcoma-malignant-mixed-mesodermal-tumor.html @@ -11,12 +11,12 @@ Ovarian Carcinosarcoma/Malignant Mixed Mesodermal Tumor - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/ovarian-choriocarcinoma-nos.html b/concepts/ovarian-choriocarcinoma-nos.html index 7fd26affa0..a0763c6802 100644 --- a/concepts/ovarian-choriocarcinoma-nos.html +++ b/concepts/ovarian-choriocarcinoma-nos.html @@ -11,12 +11,12 @@ Ovarian Choriocarcinoma, NOS - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/ovarian-epithelial-tumor.html b/concepts/ovarian-epithelial-tumor.html index 18b72b4922..bb002ff4a1 100644 --- a/concepts/ovarian-epithelial-tumor.html +++ b/concepts/ovarian-epithelial-tumor.html @@ -11,12 +11,12 @@ Ovarian Epithelial Tumor - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/ovarian-germ-cell-tumor.html b/concepts/ovarian-germ-cell-tumor.html index f97f0901e3..e00a5169b2 100644 --- a/concepts/ovarian-germ-cell-tumor.html +++ b/concepts/ovarian-germ-cell-tumor.html @@ -11,12 +11,12 @@ Ovarian Germ Cell Tumor - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/ovarian-seromucinous-adenoma.html b/concepts/ovarian-seromucinous-adenoma.html index 88f4b27a89..71b94e9037 100644 --- a/concepts/ovarian-seromucinous-adenoma.html +++ b/concepts/ovarian-seromucinous-adenoma.html @@ -11,12 +11,12 @@ Ovarian Seromucinous Adenoma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/ovarian-seromucinous-borderline-tumor.html b/concepts/ovarian-seromucinous-borderline-tumor.html index 5ccf15c2d8..268843b43b 100644 --- a/concepts/ovarian-seromucinous-borderline-tumor.html +++ b/concepts/ovarian-seromucinous-borderline-tumor.html @@ -11,12 +11,12 @@ Ovarian Seromucinous Borderline Tumor - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/ovarian-seromucinous-carcinoma.html b/concepts/ovarian-seromucinous-carcinoma.html index a302467d60..ff2cf3c194 100644 --- a/concepts/ovarian-seromucinous-carcinoma.html +++ b/concepts/ovarian-seromucinous-carcinoma.html @@ -11,12 +11,12 @@ Ovarian Seromucinous Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/oxaliplatin.html b/concepts/oxaliplatin.html index 49285f17ec..cbb92ff862 100644 --- a/concepts/oxaliplatin.html +++ b/concepts/oxaliplatin.html @@ -11,12 +11,12 @@ Oxaliplatin - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/paclitaxel.html b/concepts/paclitaxel.html index b495717e42..7410aa4cf0 100644 --- a/concepts/paclitaxel.html +++ b/concepts/paclitaxel.html @@ -11,12 +11,12 @@ Paclitaxel - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/pact.html b/concepts/pact.html index 0d18334fa3..6a133a50a4 100644 --- a/concepts/pact.html +++ b/concepts/pact.html @@ -11,12 +11,12 @@ PACT - + - + @@ -383,7 +383,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/paget-disease-of-the-nipple.html b/concepts/paget-disease-of-the-nipple.html index 8abb9b0dc8..77906ed205 100644 --- a/concepts/paget-disease-of-the-nipple.html +++ b/concepts/paget-disease-of-the-nipple.html @@ -11,12 +11,12 @@ Paget Disease of the Nipple - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/paleo-diet.html b/concepts/paleo-diet.html index 55733f7f13..82e7554ab7 100644 --- a/concepts/paleo-diet.html +++ b/concepts/paleo-diet.html @@ -11,12 +11,12 @@ Paleo Diet - + - + @@ -375,7 +375,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/panama-ncc.html b/concepts/panama-ncc.html index 348b1c00d4..4153e78bec 100644 --- a/concepts/panama-ncc.html +++ b/concepts/panama-ncc.html @@ -11,12 +11,12 @@ National Institute of Cancer - + - + @@ -376,7 +376,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/pancreas.html b/concepts/pancreas.html index 61895e5c6b..ee56439878 100644 --- a/concepts/pancreas.html +++ b/concepts/pancreas.html @@ -11,12 +11,12 @@ Pancreatic Cancer - + - + @@ -433,7 +433,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/pancreatectomy.html b/concepts/pancreatectomy.html index 7b3469b3d4..ec0bd74d5f 100644 --- a/concepts/pancreatectomy.html +++ b/concepts/pancreatectomy.html @@ -11,12 +11,12 @@ Pancreatectomy - + - + @@ -376,7 +376,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/pancreatic-adenocarcinoma.html b/concepts/pancreatic-adenocarcinoma.html index 04d4a0c869..e3d7f976eb 100644 --- a/concepts/pancreatic-adenocarcinoma.html +++ b/concepts/pancreatic-adenocarcinoma.html @@ -11,12 +11,12 @@ Pancreatic Adenocarcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/pancreatic-neuroendocrine-tumor.html b/concepts/pancreatic-neuroendocrine-tumor.html index 9f7258874a..1c6cbbda68 100644 --- a/concepts/pancreatic-neuroendocrine-tumor.html +++ b/concepts/pancreatic-neuroendocrine-tumor.html @@ -11,12 +11,12 @@ Pancreatic Neuroendocrine Tumor - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/pancreatobiliary-ampullary-carcinoma.html b/concepts/pancreatobiliary-ampullary-carcinoma.html index e532d5b677..c7f624ce7d 100644 --- a/concepts/pancreatobiliary-ampullary-carcinoma.html +++ b/concepts/pancreatobiliary-ampullary-carcinoma.html @@ -11,12 +11,12 @@ Pancreatobiliary Ampullary Carcinoma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/pancreatoblastoma.html b/concepts/pancreatoblastoma.html index 3cff69d70d..023c2835de 100644 --- a/concepts/pancreatoblastoma.html +++ b/concepts/pancreatoblastoma.html @@ -11,12 +11,12 @@ Pancreatoblastoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/papillary-glioneuronal-tumor.html b/concepts/papillary-glioneuronal-tumor.html index 094a1d5498..bb3e8f0e0c 100644 --- a/concepts/papillary-glioneuronal-tumor.html +++ b/concepts/papillary-glioneuronal-tumor.html @@ -11,12 +11,12 @@ Papillary Glioneuronal Tumor - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/papillary-meningioma.html b/concepts/papillary-meningioma.html index 8ce0cd7254..a7d7315de8 100644 --- a/concepts/papillary-meningioma.html +++ b/concepts/papillary-meningioma.html @@ -11,12 +11,12 @@ Papillary Meningioma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/papillary-renal-cell-carcinoma.html b/concepts/papillary-renal-cell-carcinoma.html index 1cea0078c4..f6f22cf9fb 100644 --- a/concepts/papillary-renal-cell-carcinoma.html +++ b/concepts/papillary-renal-cell-carcinoma.html @@ -11,12 +11,12 @@ Papillary Renal Cell Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/papillary-stomach-adenocarcinoma.html b/concepts/papillary-stomach-adenocarcinoma.html index e7057cf55a..fcf1febeec 100644 --- a/concepts/papillary-stomach-adenocarcinoma.html +++ b/concepts/papillary-stomach-adenocarcinoma.html @@ -11,12 +11,12 @@ Papillary Stomach Adenocarcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/papillary-thyroid-cancer.html b/concepts/papillary-thyroid-cancer.html index 80c82018e5..28bc8411fd 100644 --- a/concepts/papillary-thyroid-cancer.html +++ b/concepts/papillary-thyroid-cancer.html @@ -11,12 +11,12 @@ Papillary Thyroid Cancer - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/papillary-tumor-of-the-pineal-region.html b/concepts/papillary-tumor-of-the-pineal-region.html index 4f07c32033..e7deae1ed2 100644 --- a/concepts/papillary-tumor-of-the-pineal-region.html +++ b/concepts/papillary-tumor-of-the-pineal-region.html @@ -11,12 +11,12 @@ Papillary Tumor of the Pineal Region - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/paraganglioma.html b/concepts/paraganglioma.html index 7afbe5e610..0c05c06645 100644 --- a/concepts/paraganglioma.html +++ b/concepts/paraganglioma.html @@ -11,12 +11,12 @@ Paraganglioma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/parathyroid-cancer.html b/concepts/parathyroid-cancer.html index 7d52d65cf0..910f54f523 100644 --- a/concepts/parathyroid-cancer.html +++ b/concepts/parathyroid-cancer.html @@ -11,12 +11,12 @@ Parathyroid Cancer - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/parathyroid-carcinoma.html b/concepts/parathyroid-carcinoma.html index 4259ece7f3..61c718c4af 100644 --- a/concepts/parathyroid-carcinoma.html +++ b/concepts/parathyroid-carcinoma.html @@ -11,12 +11,12 @@ Parathyroid Carcinoma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/parosteal-osteosarcoma.html b/concepts/parosteal-osteosarcoma.html index a38b711493..6b2801cc45 100644 --- a/concepts/parosteal-osteosarcoma.html +++ b/concepts/parosteal-osteosarcoma.html @@ -11,12 +11,12 @@ Parosteal Osteosarcoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/partial-hydatidiform-mole.html b/concepts/partial-hydatidiform-mole.html index bb41fdfe96..219d6fda32 100644 --- a/concepts/partial-hydatidiform-mole.html +++ b/concepts/partial-hydatidiform-mole.html @@ -11,12 +11,12 @@ Partial Hydatidiform Mole - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/pediatric-type-follicular-lymphoma.html b/concepts/pediatric-type-follicular-lymphoma.html index 58481f161b..398f2efe27 100644 --- a/concepts/pediatric-type-follicular-lymphoma.html +++ b/concepts/pediatric-type-follicular-lymphoma.html @@ -11,12 +11,12 @@ Pediatric-Type Follicular Lymphoma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/pembrolizumab.html b/concepts/pembrolizumab.html index 476d39ee37..106c4dc109 100644 --- a/concepts/pembrolizumab.html +++ b/concepts/pembrolizumab.html @@ -11,12 +11,12 @@ Pembrolizumab - + - + @@ -375,7 +375,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/penile-squamous-cell-carcinoma.html b/concepts/penile-squamous-cell-carcinoma.html index 1c6aa77006..62eeb3b3b1 100644 --- a/concepts/penile-squamous-cell-carcinoma.html +++ b/concepts/penile-squamous-cell-carcinoma.html @@ -11,12 +11,12 @@ Penile Squamous Cell Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/penis.html b/concepts/penis.html index 77da26fcd5..09701b5c17 100644 --- a/concepts/penis.html +++ b/concepts/penis.html @@ -11,12 +11,12 @@ Penile Cancer - + - + @@ -385,7 +385,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/perihilar-cholangiocarcinoma.html b/concepts/perihilar-cholangiocarcinoma.html index 452b07912f..679d8a8649 100644 --- a/concepts/perihilar-cholangiocarcinoma.html +++ b/concepts/perihilar-cholangiocarcinoma.html @@ -11,12 +11,12 @@ Perihilar Cholangiocarcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/periosteal-osteosarcoma.html b/concepts/periosteal-osteosarcoma.html index fe39c2bdd7..2bd444db2a 100644 --- a/concepts/periosteal-osteosarcoma.html +++ b/concepts/periosteal-osteosarcoma.html @@ -11,12 +11,12 @@ Periosteal Osteosarcoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/peripheral-nervous-system.html b/concepts/peripheral-nervous-system.html index b8e3b3731e..04815f2ffa 100644 --- a/concepts/peripheral-nervous-system.html +++ b/concepts/peripheral-nervous-system.html @@ -11,12 +11,12 @@ Peripheral Nervous System - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/peripheral-t-cell-lymphoma-nos.html b/concepts/peripheral-t-cell-lymphoma-nos.html index 7c01ddffcb..ee98917565 100644 --- a/concepts/peripheral-t-cell-lymphoma-nos.html +++ b/concepts/peripheral-t-cell-lymphoma-nos.html @@ -11,12 +11,12 @@ Peripheral T-Cell lymphoma, NOS - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/peritoneal-mesothelioma.html b/concepts/peritoneal-mesothelioma.html index ab6496bdf9..7b304d08fc 100644 --- a/concepts/peritoneal-mesothelioma.html +++ b/concepts/peritoneal-mesothelioma.html @@ -11,12 +11,12 @@ Peritoneal Mesothelioma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/peritoneal-serous-carcinoma.html b/concepts/peritoneal-serous-carcinoma.html index d0f0025304..a55c1f0652 100644 --- a/concepts/peritoneal-serous-carcinoma.html +++ b/concepts/peritoneal-serous-carcinoma.html @@ -11,12 +11,12 @@ Peritoneal Serous Carcinoma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/peritoneum.html b/concepts/peritoneum.html index 6fb324b89d..a8237ca2ff 100644 --- a/concepts/peritoneum.html +++ b/concepts/peritoneum.html @@ -11,12 +11,12 @@ Peritoneal Cancer - + - + @@ -384,7 +384,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/perivascular-epithelioid-cell-tumor.html b/concepts/perivascular-epithelioid-cell-tumor.html index af652c8605..5c8e54d6b3 100644 --- a/concepts/perivascular-epithelioid-cell-tumor.html +++ b/concepts/perivascular-epithelioid-cell-tumor.html @@ -11,12 +11,12 @@ Perivascular Epithelioid Cell Tumor - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/pfizer.html b/concepts/pfizer.html index 53299a508a..07fff5f3d5 100644 --- a/concepts/pfizer.html +++ b/concepts/pfizer.html @@ -11,12 +11,12 @@ Pfizer - + - + @@ -386,7 +386,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/phac.html b/concepts/phac.html index fa34fc1148..e48c70927e 100644 --- a/concepts/phac.html +++ b/concepts/phac.html @@ -11,12 +11,12 @@ Public Health Agency of Canada - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/pheochromocytoma.html b/concepts/pheochromocytoma.html index 1bcae058a9..8a3e611101 100644 --- a/concepts/pheochromocytoma.html +++ b/concepts/pheochromocytoma.html @@ -11,12 +11,12 @@ Pheochromocytoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/phyllodes-tumor-of-the-breast.html b/concepts/phyllodes-tumor-of-the-breast.html index fbfc4479c7..50cfdf8fec 100644 --- a/concepts/phyllodes-tumor-of-the-breast.html +++ b/concepts/phyllodes-tumor-of-the-breast.html @@ -11,12 +11,12 @@ Phyllodes Tumor of the Breast - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/pilocytic-astrocytoma.html b/concepts/pilocytic-astrocytoma.html index af133d079b..339e7a795e 100644 --- a/concepts/pilocytic-astrocytoma.html +++ b/concepts/pilocytic-astrocytoma.html @@ -11,12 +11,12 @@ Pilocytic Astrocytoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/pilomyxoid-astrocytoma.html b/concepts/pilomyxoid-astrocytoma.html index 30c5a49b60..704eb554c9 100644 --- a/concepts/pilomyxoid-astrocytoma.html +++ b/concepts/pilomyxoid-astrocytoma.html @@ -11,12 +11,12 @@ Pilomyxoid Astrocytoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/pineal-parenchymal-tumor-of-intermediate-differentiation.html b/concepts/pineal-parenchymal-tumor-of-intermediate-differentiation.html index 99d7695683..4b71ddbe1a 100644 --- a/concepts/pineal-parenchymal-tumor-of-intermediate-differentiation.html +++ b/concepts/pineal-parenchymal-tumor-of-intermediate-differentiation.html @@ -11,12 +11,12 @@ Pineal Parenchymal Tumor of Intermediate Differentiation - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/pineal-tumor.html b/concepts/pineal-tumor.html index 995ff78151..6987bef5c8 100644 --- a/concepts/pineal-tumor.html +++ b/concepts/pineal-tumor.html @@ -11,12 +11,12 @@ Pineal Tumor - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/pineoblastoma.html b/concepts/pineoblastoma.html index e9061ef900..b2090fcef9 100644 --- a/concepts/pineoblastoma.html +++ b/concepts/pineoblastoma.html @@ -11,12 +11,12 @@ Pineoblastoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/pineocytoma.html b/concepts/pineocytoma.html index c91d5f2ed6..8736b2acd2 100644 --- a/concepts/pineocytoma.html +++ b/concepts/pineocytoma.html @@ -11,12 +11,12 @@ Pineocytoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/pipobroman.html b/concepts/pipobroman.html index 220866a77d..f1b4135ed5 100644 --- a/concepts/pipobroman.html +++ b/concepts/pipobroman.html @@ -11,12 +11,12 @@ Pipobroman - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/pirarubicin.html b/concepts/pirarubicin.html index 62d3b2a6c4..cc0ef130fc 100644 --- a/concepts/pirarubicin.html +++ b/concepts/pirarubicin.html @@ -11,12 +11,12 @@ Pirarubicin - + - + @@ -378,7 +378,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/pituicytoma.html b/concepts/pituicytoma.html index 9ea03508ef..fa0ca5f88f 100644 --- a/concepts/pituicytoma.html +++ b/concepts/pituicytoma.html @@ -11,12 +11,12 @@ Pituicytoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/pituitary-adenoma.html b/concepts/pituitary-adenoma.html index 2cffeb3996..5b8914474f 100644 --- a/concepts/pituitary-adenoma.html +++ b/concepts/pituitary-adenoma.html @@ -11,12 +11,12 @@ Pituitary Adenoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/pituitary-carcinoma.html b/concepts/pituitary-carcinoma.html index 11758b4135..4cc09ade27 100644 --- a/concepts/pituitary-carcinoma.html +++ b/concepts/pituitary-carcinoma.html @@ -11,12 +11,12 @@ Pituitary Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/placental-site-trophoblastic-tumor.html b/concepts/placental-site-trophoblastic-tumor.html index 2acbf51088..7661a780fa 100644 --- a/concepts/placental-site-trophoblastic-tumor.html +++ b/concepts/placental-site-trophoblastic-tumor.html @@ -11,12 +11,12 @@ Placental Site Trophoblastic Tumor - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/plasma-cell-myeloma.html b/concepts/plasma-cell-myeloma.html index 0f47a79a0e..32719b6ad4 100644 --- a/concepts/plasma-cell-myeloma.html +++ b/concepts/plasma-cell-myeloma.html @@ -11,12 +11,12 @@ Plasma Cell Myeloma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/plasmablastic-lymphoma.html b/concepts/plasmablastic-lymphoma.html index a67d76b34b..55806e0cd6 100644 --- a/concepts/plasmablastic-lymphoma.html +++ b/concepts/plasmablastic-lymphoma.html @@ -11,12 +11,12 @@ Plasmablastic Lymphoma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/plasmacytic-hyperplasia-ptld.html b/concepts/plasmacytic-hyperplasia-ptld.html index e57e43790b..3af4a92a22 100644 --- a/concepts/plasmacytic-hyperplasia-ptld.html +++ b/concepts/plasmacytic-hyperplasia-ptld.html @@ -11,12 +11,12 @@ Plasmacytic Hyperplasia PTLD - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/plasmacytoid-signet-ring-cell-bladder-carcinoma.html b/concepts/plasmacytoid-signet-ring-cell-bladder-carcinoma.html index 84e4f8f000..6b9412c552 100644 --- a/concepts/plasmacytoid-signet-ring-cell-bladder-carcinoma.html +++ b/concepts/plasmacytoid-signet-ring-cell-bladder-carcinoma.html @@ -11,12 +11,12 @@ Plasmacytoid/Signet Ring Cell Bladder Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/pleomorphic-carcinoma-of-the-lung.html b/concepts/pleomorphic-carcinoma-of-the-lung.html index c8a324619f..3d1bdca1c2 100644 --- a/concepts/pleomorphic-carcinoma-of-the-lung.html +++ b/concepts/pleomorphic-carcinoma-of-the-lung.html @@ -11,12 +11,12 @@ Pleomorphic Carcinoma of the Lung - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/pleomorphic-liposarcoma.html b/concepts/pleomorphic-liposarcoma.html index b2e3de86af..1e0156a297 100644 --- a/concepts/pleomorphic-liposarcoma.html +++ b/concepts/pleomorphic-liposarcoma.html @@ -11,12 +11,12 @@ Pleomorphic Liposarcoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/pleomorphic-rhabdomyosarcoma.html b/concepts/pleomorphic-rhabdomyosarcoma.html index c5d6ce039c..f81b2454eb 100644 --- a/concepts/pleomorphic-rhabdomyosarcoma.html +++ b/concepts/pleomorphic-rhabdomyosarcoma.html @@ -11,12 +11,12 @@ Pleomorphic Rhabdomyosarcoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/pleomorphic-xanthoastrocytoma.html b/concepts/pleomorphic-xanthoastrocytoma.html index b101708c09..f0340c6d23 100644 --- a/concepts/pleomorphic-xanthoastrocytoma.html +++ b/concepts/pleomorphic-xanthoastrocytoma.html @@ -11,12 +11,12 @@ Pleomorphic Xanthoastrocytoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/pleura.html b/concepts/pleura.html index 6427a735a3..606c8ad669 100644 --- a/concepts/pleura.html +++ b/concepts/pleura.html @@ -11,12 +11,12 @@ Pleura - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/pleural-mesothelioma-biphasic-type.html b/concepts/pleural-mesothelioma-biphasic-type.html index 33217bcf5f..4510cd4c8a 100644 --- a/concepts/pleural-mesothelioma-biphasic-type.html +++ b/concepts/pleural-mesothelioma-biphasic-type.html @@ -11,12 +11,12 @@ Pleural Mesothelioma, Biphasic Type - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/pleural-mesothelioma-epithelioid-type.html b/concepts/pleural-mesothelioma-epithelioid-type.html index d1771a8f8c..0dcc55f40c 100644 --- a/concepts/pleural-mesothelioma-epithelioid-type.html +++ b/concepts/pleural-mesothelioma-epithelioid-type.html @@ -11,12 +11,12 @@ Pleural Mesothelioma, Epithelioid Type - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/pleural-mesothelioma-sarcomatoid-type.html b/concepts/pleural-mesothelioma-sarcomatoid-type.html index 866f666196..efde5c13db 100644 --- a/concepts/pleural-mesothelioma-sarcomatoid-type.html +++ b/concepts/pleural-mesothelioma-sarcomatoid-type.html @@ -11,12 +11,12 @@ Pleural Mesothelioma, Sarcomatoid Type - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/pleural-mesothelioma.html b/concepts/pleural-mesothelioma.html index dc2e2c2571..ef9dbf1e08 100644 --- a/concepts/pleural-mesothelioma.html +++ b/concepts/pleural-mesothelioma.html @@ -11,12 +11,12 @@ Pleural Mesothelioma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/pleuropulmonary-blastoma.html b/concepts/pleuropulmonary-blastoma.html index ce410921da..7545b73a4c 100644 --- a/concepts/pleuropulmonary-blastoma.html +++ b/concepts/pleuropulmonary-blastoma.html @@ -11,12 +11,12 @@ Pleuropulmonary Blastoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/polycythaemia-vera-myelofibrosis.html b/concepts/polycythaemia-vera-myelofibrosis.html index 17549fcbd7..aff52c741d 100644 --- a/concepts/polycythaemia-vera-myelofibrosis.html +++ b/concepts/polycythaemia-vera-myelofibrosis.html @@ -11,12 +11,12 @@ Polycythaemia Vera Myelofibrosis - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/polycythemia-vera.html b/concepts/polycythemia-vera.html index b0474460a4..b295e0d6f0 100644 --- a/concepts/polycythemia-vera.html +++ b/concepts/polycythemia-vera.html @@ -11,12 +11,12 @@ Polycythemia Vera - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/polyembryoma-vulva-vagina.html b/concepts/polyembryoma-vulva-vagina.html index 7529ad0d4a..4c5b5a4474 100644 --- a/concepts/polyembryoma-vulva-vagina.html +++ b/concepts/polyembryoma-vulva-vagina.html @@ -11,12 +11,12 @@ Polyembryoma Vulva/Vagina - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/polyembryoma.html b/concepts/polyembryoma.html index bb4583d517..65da228c24 100644 --- a/concepts/polyembryoma.html +++ b/concepts/polyembryoma.html @@ -11,12 +11,12 @@ Polyembryoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/polymorphic-ptld.html b/concepts/polymorphic-ptld.html index 02a68192cc..9ec1cedf68 100644 --- a/concepts/polymorphic-ptld.html +++ b/concepts/polymorphic-ptld.html @@ -11,12 +11,12 @@ Polymorphic PTLD - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/poorly-differentiated-carcinoma-nos.html b/concepts/poorly-differentiated-carcinoma-nos.html index 410d7b7b2e..d323d2950a 100644 --- a/concepts/poorly-differentiated-carcinoma-nos.html +++ b/concepts/poorly-differentiated-carcinoma-nos.html @@ -11,12 +11,12 @@ Poorly Differentiated Carcinoma, NOS - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/poorly-differentiated-carcinoma-of-the-stomach.html b/concepts/poorly-differentiated-carcinoma-of-the-stomach.html index 3c38e66ee3..9f72f08f42 100644 --- a/concepts/poorly-differentiated-carcinoma-of-the-stomach.html +++ b/concepts/poorly-differentiated-carcinoma-of-the-stomach.html @@ -11,12 +11,12 @@ Poorly Differentiated Carcinoma of the Stomach - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/poorly-differentiated-carcinoma-of-the-uterus.html b/concepts/poorly-differentiated-carcinoma-of-the-uterus.html index ea60e23349..3de5c3b86a 100644 --- a/concepts/poorly-differentiated-carcinoma-of-the-uterus.html +++ b/concepts/poorly-differentiated-carcinoma-of-the-uterus.html @@ -11,12 +11,12 @@ Poorly Differentiated Carcinoma of the Uterus - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/poorly-differentiated-non-small-cell-lung-cancer.html b/concepts/poorly-differentiated-non-small-cell-lung-cancer.html index 01e5706051..f4628503fb 100644 --- a/concepts/poorly-differentiated-non-small-cell-lung-cancer.html +++ b/concepts/poorly-differentiated-non-small-cell-lung-cancer.html @@ -11,12 +11,12 @@ Poorly Differentiated Non-Small Cell Lung Cancer - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/poorly-differentiated-thyroid-cancer.html b/concepts/poorly-differentiated-thyroid-cancer.html index 68e8ed0aeb..cdddfcae49 100644 --- a/concepts/poorly-differentiated-thyroid-cancer.html +++ b/concepts/poorly-differentiated-thyroid-cancer.html @@ -11,12 +11,12 @@ Poorly Differentiated Thyroid Cancer - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/poorly-differentiated-vaginal-carcinoma.html b/concepts/poorly-differentiated-vaginal-carcinoma.html index 84e2eb4bab..696f580665 100644 --- a/concepts/poorly-differentiated-vaginal-carcinoma.html +++ b/concepts/poorly-differentiated-vaginal-carcinoma.html @@ -11,12 +11,12 @@ Poorly Differentiated Vaginal Carcinoma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/porocarcinoma-spiroadenocarcinoma.html b/concepts/porocarcinoma-spiroadenocarcinoma.html index 89941f3e45..a1c9e886af 100644 --- a/concepts/porocarcinoma-spiroadenocarcinoma.html +++ b/concepts/porocarcinoma-spiroadenocarcinoma.html @@ -11,12 +11,12 @@ Porocarcinoma/Spiroadenocarcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/poroma-acrospiroma.html b/concepts/poroma-acrospiroma.html index d16d205639..8b134c8046 100644 --- a/concepts/poroma-acrospiroma.html +++ b/concepts/poroma-acrospiroma.html @@ -11,12 +11,12 @@ Poroma/Acrospiroma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/porphyria-cutania-tarda.html b/concepts/porphyria-cutania-tarda.html index 8294128654..8a20633920 100644 --- a/concepts/porphyria-cutania-tarda.html +++ b/concepts/porphyria-cutania-tarda.html @@ -11,12 +11,12 @@ Porphyria Cutania Tarda - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/posttransplant-lymphoproliferative-disorders.html b/concepts/posttransplant-lymphoproliferative-disorders.html index 3ee8d87b33..9ff39c9d99 100644 --- a/concepts/posttransplant-lymphoproliferative-disorders.html +++ b/concepts/posttransplant-lymphoproliferative-disorders.html @@ -11,12 +11,12 @@ Posttransplant Lymphoproliferative Disorders - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/prevent-cancer-foundation.html b/concepts/prevent-cancer-foundation.html index 86f6b34d79..fdf236169e 100644 --- a/concepts/prevent-cancer-foundation.html +++ b/concepts/prevent-cancer-foundation.html @@ -11,12 +11,12 @@ Prevent Cancer Foundation - + - + @@ -389,7 +389,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/primary-brain-tumor.html b/concepts/primary-brain-tumor.html index 7654e5e9a4..c7d6ce41aa 100644 --- a/concepts/primary-brain-tumor.html +++ b/concepts/primary-brain-tumor.html @@ -11,12 +11,12 @@ Primary Brain Tumor - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/primary-cns-melanocytic-tumors.html b/concepts/primary-cns-melanocytic-tumors.html index 70db0f00ab..99851d8422 100644 --- a/concepts/primary-cns-melanocytic-tumors.html +++ b/concepts/primary-cns-melanocytic-tumors.html @@ -11,12 +11,12 @@ Primary CNS Melanocytic Tumors - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/primary-cns-melanoma.html b/concepts/primary-cns-melanoma.html index 1476a15f92..d28c5ead2c 100644 --- a/concepts/primary-cns-melanoma.html +++ b/concepts/primary-cns-melanoma.html @@ -11,12 +11,12 @@ Primary CNS Melanoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/primary-cutaneous-acral-cd8-positive-t-cell-lymphoma.html b/concepts/primary-cutaneous-acral-cd8-positive-t-cell-lymphoma.html index 7e6727a711..33c8166e85 100644 --- a/concepts/primary-cutaneous-acral-cd8-positive-t-cell-lymphoma.html +++ b/concepts/primary-cutaneous-acral-cd8-positive-t-cell-lymphoma.html @@ -11,12 +11,12 @@ Primary Cutaneous Acral CD8 Positive T-Cell Lymphoma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/primary-cutaneous-anaplastic-large-cell-lymphoma.html b/concepts/primary-cutaneous-anaplastic-large-cell-lymphoma.html index 6a1cf897b1..553533cf23 100644 --- a/concepts/primary-cutaneous-anaplastic-large-cell-lymphoma.html +++ b/concepts/primary-cutaneous-anaplastic-large-cell-lymphoma.html @@ -11,12 +11,12 @@ Primary Cutaneous Anaplastic Large Cell Lymphoma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/primary-cutaneous-cd30-positive-t-cell-lymphoproliferative-disorders.html b/concepts/primary-cutaneous-cd30-positive-t-cell-lymphoproliferative-disorders.html index cf36ed53f0..7dc61aa27f 100644 --- a/concepts/primary-cutaneous-cd30-positive-t-cell-lymphoproliferative-disorders.html +++ b/concepts/primary-cutaneous-cd30-positive-t-cell-lymphoproliferative-disorders.html @@ -11,12 +11,12 @@ Primary Cutaneous CD30 Positive T-Cell Lymphoproliferative Disorders - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/primary-cutaneous-cd4-positive-small-medium-t-cell-lymphoproliferative-disorder.html b/concepts/primary-cutaneous-cd4-positive-small-medium-t-cell-lymphoproliferative-disorder.html index a1f2e924c7..4647655b18 100644 --- a/concepts/primary-cutaneous-cd4-positive-small-medium-t-cell-lymphoproliferative-disorder.html +++ b/concepts/primary-cutaneous-cd4-positive-small-medium-t-cell-lymphoproliferative-disorder.html @@ -11,12 +11,12 @@ Primary Cutaneous CD4 Positive Small/Medium T-Cell Lymphoproliferative Disorder - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/primary-cutaneous-cd8-positive-aggressive-epidermotropic-cytotoxic-t-cell-lymphoma.html b/concepts/primary-cutaneous-cd8-positive-aggressive-epidermotropic-cytotoxic-t-cell-lymphoma.html index 41d1040a33..3c995e8853 100644 --- a/concepts/primary-cutaneous-cd8-positive-aggressive-epidermotropic-cytotoxic-t-cell-lymphoma.html +++ b/concepts/primary-cutaneous-cd8-positive-aggressive-epidermotropic-cytotoxic-t-cell-lymphoma.html @@ -11,12 +11,12 @@ Primary Cutaneous CD8 Positive Aggressive Epidermotropic Cytotoxic T-Cell Lymphoma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/primary-cutaneous-dlbcl-leg-type.html b/concepts/primary-cutaneous-dlbcl-leg-type.html index 8fe7fef5b4..13fdb2303a 100644 --- a/concepts/primary-cutaneous-dlbcl-leg-type.html +++ b/concepts/primary-cutaneous-dlbcl-leg-type.html @@ -11,12 +11,12 @@ Primary Cutaneous DLBCL, Leg Type - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/primary-cutaneous-follicle-center-lymphoma.html b/concepts/primary-cutaneous-follicle-center-lymphoma.html index 76799e0ab2..7a63b12223 100644 --- a/concepts/primary-cutaneous-follicle-center-lymphoma.html +++ b/concepts/primary-cutaneous-follicle-center-lymphoma.html @@ -11,12 +11,12 @@ Primary Cutaneous Follicle Center Lymphoma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/primary-cutaneous-gamma-delta-t-cell-lymphoma.html b/concepts/primary-cutaneous-gamma-delta-t-cell-lymphoma.html index cf0ae7a357..18879a79d7 100644 --- a/concepts/primary-cutaneous-gamma-delta-t-cell-lymphoma.html +++ b/concepts/primary-cutaneous-gamma-delta-t-cell-lymphoma.html @@ -11,12 +11,12 @@ Primary Cutaneous Gamma Delta T-Cell Lymphoma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/primary-dlbcl-of-the-central-nervous-system.html b/concepts/primary-dlbcl-of-the-central-nervous-system.html index ea2466ee58..a2dddb6c02 100644 --- a/concepts/primary-dlbcl-of-the-central-nervous-system.html +++ b/concepts/primary-dlbcl-of-the-central-nervous-system.html @@ -11,12 +11,12 @@ Primary DLBCL of the central nervous system - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/primary-effusion-lymphoma.html b/concepts/primary-effusion-lymphoma.html index c04a71eacc..3e02c09bd1 100644 --- a/concepts/primary-effusion-lymphoma.html +++ b/concepts/primary-effusion-lymphoma.html @@ -11,12 +11,12 @@ Primary Effusion Lymphoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/primary-mediastinal-thymic-large-b-cell-lymphoma.html b/concepts/primary-mediastinal-thymic-large-b-cell-lymphoma.html index 91d2e5ac82..3c34dd8e61 100644 --- a/concepts/primary-mediastinal-thymic-large-b-cell-lymphoma.html +++ b/concepts/primary-mediastinal-thymic-large-b-cell-lymphoma.html @@ -11,12 +11,12 @@ Primary Mediastinal (Thymic) Large B-Cell Lymphoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/primary-myelofibrosis-prefibrotic-early-stage.html b/concepts/primary-myelofibrosis-prefibrotic-early-stage.html index 5fad09d367..07a65cb39f 100644 --- a/concepts/primary-myelofibrosis-prefibrotic-early-stage.html +++ b/concepts/primary-myelofibrosis-prefibrotic-early-stage.html @@ -11,12 +11,12 @@ Primary Myelofibrosis, Prefibrotic/Early Stage - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/primary-myelofibrosis.html b/concepts/primary-myelofibrosis.html index b140430d7b..fc78d4f256 100644 --- a/concepts/primary-myelofibrosis.html +++ b/concepts/primary-myelofibrosis.html @@ -11,12 +11,12 @@ Primary Myelofibrosis - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/primary-myelofibrosisovert-fibrotic-stage.html b/concepts/primary-myelofibrosisovert-fibrotic-stage.html index d567952bac..1333091fe6 100644 --- a/concepts/primary-myelofibrosisovert-fibrotic-stage.html +++ b/concepts/primary-myelofibrosisovert-fibrotic-stage.html @@ -11,12 +11,12 @@ Primary Myelofibrosis,Overt Fibrotic Stage - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/primary-neuroepithelial-tumor.html b/concepts/primary-neuroepithelial-tumor.html index 5f41f4bf7f..1aabbe6ecf 100644 --- a/concepts/primary-neuroepithelial-tumor.html +++ b/concepts/primary-neuroepithelial-tumor.html @@ -11,12 +11,12 @@ Primary Neuroepithelial Tumor - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/primitive-neuroectodermal-tumor.html b/concepts/primitive-neuroectodermal-tumor.html index 7c4cab578e..f865a87590 100644 --- a/concepts/primitive-neuroectodermal-tumor.html +++ b/concepts/primitive-neuroectodermal-tumor.html @@ -11,12 +11,12 @@ Primitive Neuroectodermal Tumor - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/princess-margaret-cancer-centre.html b/concepts/princess-margaret-cancer-centre.html index f4019e06e0..de56e9cb78 100644 --- a/concepts/princess-margaret-cancer-centre.html +++ b/concepts/princess-margaret-cancer-centre.html @@ -11,12 +11,12 @@ Princess Margaret Cancer Centre - + - + @@ -383,7 +383,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/proliferating-pilar-cystic-tumor.html b/concepts/proliferating-pilar-cystic-tumor.html index f4a8ac34a3..7841e00801 100644 --- a/concepts/proliferating-pilar-cystic-tumor.html +++ b/concepts/proliferating-pilar-cystic-tumor.html @@ -11,12 +11,12 @@ Proliferating Pilar Cystic Tumor - + - + @@ -381,7 +381,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/prostate-adenocarcinoma.html b/concepts/prostate-adenocarcinoma.html index 8c0cc95750..0f52c82a08 100644 --- a/concepts/prostate-adenocarcinoma.html +++ b/concepts/prostate-adenocarcinoma.html @@ -11,12 +11,12 @@ Prostate Adenocarcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/prostate-cancer-subreddit.html b/concepts/prostate-cancer-subreddit.html index 64ade51262..5b8df8fa16 100644 --- a/concepts/prostate-cancer-subreddit.html +++ b/concepts/prostate-cancer-subreddit.html @@ -11,12 +11,12 @@ Prostate Cancer Subreddit - + - + @@ -377,7 +377,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/prostate-neuroendocrine-carcinoma.html b/concepts/prostate-neuroendocrine-carcinoma.html index 18c71d94a9..a839f2136a 100644 --- a/concepts/prostate-neuroendocrine-carcinoma.html +++ b/concepts/prostate-neuroendocrine-carcinoma.html @@ -11,12 +11,12 @@ Prostate Neuroendocrine Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/prostate-small-cell-carcinoma.html b/concepts/prostate-small-cell-carcinoma.html index 0f0e758340..b6f15f79b4 100644 --- a/concepts/prostate-small-cell-carcinoma.html +++ b/concepts/prostate-small-cell-carcinoma.html @@ -11,12 +11,12 @@ Prostate Small Cell Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/prostate-squamous-cell-carcinoma.html b/concepts/prostate-squamous-cell-carcinoma.html index 6405e69c57..0b81a08577 100644 --- a/concepts/prostate-squamous-cell-carcinoma.html +++ b/concepts/prostate-squamous-cell-carcinoma.html @@ -11,12 +11,12 @@ Prostate Squamous Cell Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/prostate.html b/concepts/prostate.html index 6e3d8dc386..06a41f8c86 100644 --- a/concepts/prostate.html +++ b/concepts/prostate.html @@ -11,12 +11,12 @@ Prostate Cancer - + - + @@ -415,7 +415,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/prostatectomy.html b/concepts/prostatectomy.html index f03fb450d0..b60bbbbefb 100644 --- a/concepts/prostatectomy.html +++ b/concepts/prostatectomy.html @@ -11,12 +11,12 @@ Prostatectomy - + - + @@ -376,7 +376,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/proximal-type-epithelioid-sarcoma.html b/concepts/proximal-type-epithelioid-sarcoma.html index 3eaa740d7f..e0fdb7a2bd 100644 --- a/concepts/proximal-type-epithelioid-sarcoma.html +++ b/concepts/proximal-type-epithelioid-sarcoma.html @@ -11,12 +11,12 @@ Proximal-Type Epithelioid Sarcoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/pseudomyogenic-hemangioendothelioma.html b/concepts/pseudomyogenic-hemangioendothelioma.html index 0c98f2e5c6..af6b6b70b6 100644 --- a/concepts/pseudomyogenic-hemangioendothelioma.html +++ b/concepts/pseudomyogenic-hemangioendothelioma.html @@ -11,12 +11,12 @@ Pseudomyogenic Hemangioendothelioma - + - + @@ -381,7 +381,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/pubmed-central.html b/concepts/pubmed-central.html index 615d49b028..41a98a5dfc 100644 --- a/concepts/pubmed-central.html +++ b/concepts/pubmed-central.html @@ -11,12 +11,12 @@ PubMed Central - + - + @@ -379,7 +379,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/pubmed.html b/concepts/pubmed.html index 2dd6ba813f..30fb091a95 100644 --- a/concepts/pubmed.html +++ b/concepts/pubmed.html @@ -11,12 +11,12 @@ PubMed - + - + @@ -379,7 +379,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/pulmonary-lymphangiomyomatosis.html b/concepts/pulmonary-lymphangiomyomatosis.html index 71d2b8866d..7eedd3d28f 100644 --- a/concepts/pulmonary-lymphangiomyomatosis.html +++ b/concepts/pulmonary-lymphangiomyomatosis.html @@ -11,12 +11,12 @@ Pulmonary Lymphangiomyomatosis - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/pulmonary-metastasectomy.html b/concepts/pulmonary-metastasectomy.html index e0394ce702..da5fdb51de 100644 --- a/concepts/pulmonary-metastasectomy.html +++ b/concepts/pulmonary-metastasectomy.html @@ -11,12 +11,12 @@ Pulmonary metastasectomy - + - + @@ -375,7 +375,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/purdue-institute-for-cancer-research.html b/concepts/purdue-institute-for-cancer-research.html index bdf1ab50ce..2a261f7bc1 100644 --- a/concepts/purdue-institute-for-cancer-research.html +++ b/concepts/purdue-institute-for-cancer-research.html @@ -11,12 +11,12 @@ Purdue Institute for Cancer Research - + - + @@ -384,7 +384,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/pure-erythroid-leukemia.html b/concepts/pure-erythroid-leukemia.html index a3d588b280..d365f5cb0d 100644 --- a/concepts/pure-erythroid-leukemia.html +++ b/concepts/pure-erythroid-leukemia.html @@ -11,12 +11,12 @@ Pure Erythroid Leukemia - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/qatar-ncc.html b/concepts/qatar-ncc.html index 606a31501f..126125f484 100644 --- a/concepts/qatar-ncc.html +++ b/concepts/qatar-ncc.html @@ -11,12 +11,12 @@ National Center for Cancer Care and Research - + - + @@ -376,7 +376,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/qcancer.html b/concepts/qcancer.html index 76ca37f878..e294738435 100644 --- a/concepts/qcancer.html +++ b/concepts/qcancer.html @@ -11,12 +11,12 @@ QCancer - + - + @@ -381,7 +381,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/qcr-au.html b/concepts/qcr-au.html index c84ddc11dd..4affb8a81d 100644 --- a/concepts/qcr-au.html +++ b/concepts/qcr-au.html @@ -11,12 +11,12 @@ QCR - + - + @@ -379,7 +379,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/radiation-associated-sarcoma.html b/concepts/radiation-associated-sarcoma.html index 7896d00cc3..7c4289614c 100644 --- a/concepts/radiation-associated-sarcoma.html +++ b/concepts/radiation-associated-sarcoma.html @@ -11,12 +11,12 @@ Radiation-Associated Sarcoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/radical-remission-surviving-cancer-against-all-odds.html b/concepts/radical-remission-surviving-cancer-against-all-odds.html index 6fd3714c60..ac65834fc7 100644 --- a/concepts/radical-remission-surviving-cancer-against-all-odds.html +++ b/concepts/radical-remission-surviving-cancer-against-all-odds.html @@ -11,12 +11,12 @@ Radical Remission: Surviving Cancer Against All Odds - + - + @@ -375,7 +375,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/radioembolization.html b/concepts/radioembolization.html index 1a890ef5f4..da1b39131a 100644 --- a/concepts/radioembolization.html +++ b/concepts/radioembolization.html @@ -11,12 +11,12 @@ Radioembolization - + - + @@ -375,7 +375,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/radiofrequency-ablation.html b/concepts/radiofrequency-ablation.html index a5bf3af4a1..0bb220414e 100644 --- a/concepts/radiofrequency-ablation.html +++ b/concepts/radiofrequency-ablation.html @@ -11,12 +11,12 @@ Radiofrequency ablation - + - + @@ -377,7 +377,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/ranimustine.html b/concepts/ranimustine.html index a31278cd6b..ca9ffff0e0 100644 --- a/concepts/ranimustine.html +++ b/concepts/ranimustine.html @@ -11,12 +11,12 @@ Ranimustine - + - + @@ -379,7 +379,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/rdca-ci.html b/concepts/rdca-ci.html index 822d04ff63..d1bd296fa5 100644 --- a/concepts/rdca-ci.html +++ b/concepts/rdca-ci.html @@ -11,12 +11,12 @@ RDCA - + - + @@ -378,7 +378,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/rdca-dz.html b/concepts/rdca-dz.html index c6775254e6..6df444b3d3 100644 --- a/concepts/rdca-dz.html +++ b/concepts/rdca-dz.html @@ -11,12 +11,12 @@ RDCA-DZ - + - + @@ -379,7 +379,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/rdcb-mo.html b/concepts/rdcb-mo.html index e20fe717e7..91e4f19eb1 100644 --- a/concepts/rdcb-mo.html +++ b/concepts/rdcb-mo.html @@ -11,12 +11,12 @@ RDCB - + - + @@ -378,7 +378,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/rdcdb-cg.html b/concepts/rdcdb-cg.html index a5b46680c8..7f9317920b 100644 --- a/concepts/rdcdb-cg.html +++ b/concepts/rdcdb-cg.html @@ -11,12 +11,12 @@ RDCDB - + - + @@ -378,7 +378,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/rdcg-gu.html b/concepts/rdcg-gu.html index 8cce8f6531..b06cdfa480 100644 --- a/concepts/rdcg-gu.html +++ b/concepts/rdcg-gu.html @@ -11,12 +11,12 @@ RDCG - + - + @@ -378,7 +378,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/rdclr.html b/concepts/rdclr.html index 3cb59fe001..360156fd84 100644 --- a/concepts/rdclr.html +++ b/concepts/rdclr.html @@ -11,12 +11,12 @@ rdclr - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/rdcm-ma.html b/concepts/rdcm-ma.html index 6d74d2c219..e93f5547aa 100644 --- a/concepts/rdcm-ma.html +++ b/concepts/rdcm-ma.html @@ -11,12 +11,12 @@ RDCM - + - + @@ -378,7 +378,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/rectal-adenocarcinoma.html b/concepts/rectal-adenocarcinoma.html index 3f9d6d0a64..6c3ae17ead 100644 --- a/concepts/rectal-adenocarcinoma.html +++ b/concepts/rectal-adenocarcinoma.html @@ -11,12 +11,12 @@ Rectal Adenocarcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/refractory-cytopenia-of-childhood.html b/concepts/refractory-cytopenia-of-childhood.html index 7e497b3272..6e0a0efe33 100644 --- a/concepts/refractory-cytopenia-of-childhood.html +++ b/concepts/refractory-cytopenia-of-childhood.html @@ -11,12 +11,12 @@ Refractory Cytopenia of Childhood - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/regeneron.html b/concepts/regeneron.html index d9b36c4f60..510bde5821 100644 --- a/concepts/regeneron.html +++ b/concepts/regeneron.html @@ -11,12 +11,12 @@ Regeneron - + - + @@ -379,7 +379,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/regorafenib.html b/concepts/regorafenib.html index 7ad64deaeb..179a7ebcf7 100644 --- a/concepts/regorafenib.html +++ b/concepts/regorafenib.html @@ -11,12 +11,12 @@ Regorafenib - + - + @@ -375,7 +375,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/renal-angiomyolipoma.html b/concepts/renal-angiomyolipoma.html index 42003173be..c4e7b10872 100644 --- a/concepts/renal-angiomyolipoma.html +++ b/concepts/renal-angiomyolipoma.html @@ -11,12 +11,12 @@ Renal Angiomyolipoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/renal-cell-carcinoma.html b/concepts/renal-cell-carcinoma.html index 87ccec3562..c1fdd6d4c3 100644 --- a/concepts/renal-cell-carcinoma.html +++ b/concepts/renal-cell-carcinoma.html @@ -11,12 +11,12 @@ Renal Cell Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/renal-clear-cell-carcinoma-with-sarcomatoid-features.html b/concepts/renal-clear-cell-carcinoma-with-sarcomatoid-features.html index fd9cc8f71d..ed46fc2053 100644 --- a/concepts/renal-clear-cell-carcinoma-with-sarcomatoid-features.html +++ b/concepts/renal-clear-cell-carcinoma-with-sarcomatoid-features.html @@ -11,12 +11,12 @@ Renal Clear Cell Carcinoma with Sarcomatoid Features - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/renal-clear-cell-carcinoma.html b/concepts/renal-clear-cell-carcinoma.html index e16d3e74a0..ece50edefe 100644 --- a/concepts/renal-clear-cell-carcinoma.html +++ b/concepts/renal-clear-cell-carcinoma.html @@ -11,12 +11,12 @@ Renal Clear Cell Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/renal-medullary-carcinoma.html b/concepts/renal-medullary-carcinoma.html index 2bdf7fe4e0..b7deb91aae 100644 --- a/concepts/renal-medullary-carcinoma.html +++ b/concepts/renal-medullary-carcinoma.html @@ -11,12 +11,12 @@ Renal Medullary Carcinoma - + - + @@ -381,7 +381,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/renal-mucinous-tubular-spindle-cell-carcinoma.html b/concepts/renal-mucinous-tubular-spindle-cell-carcinoma.html index 880d0c8d0c..c126f35c00 100644 --- a/concepts/renal-mucinous-tubular-spindle-cell-carcinoma.html +++ b/concepts/renal-mucinous-tubular-spindle-cell-carcinoma.html @@ -11,12 +11,12 @@ Renal Mucinous Tubular Spindle Cell Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/renal-neuroendocrine-tumor.html b/concepts/renal-neuroendocrine-tumor.html index 1511492458..10c465b58b 100644 --- a/concepts/renal-neuroendocrine-tumor.html +++ b/concepts/renal-neuroendocrine-tumor.html @@ -11,12 +11,12 @@ Renal Neuroendocrine Tumor - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/renal-non-clear-cell-carcinoma.html b/concepts/renal-non-clear-cell-carcinoma.html index 2da9b1d531..9c42148451 100644 --- a/concepts/renal-non-clear-cell-carcinoma.html +++ b/concepts/renal-non-clear-cell-carcinoma.html @@ -11,12 +11,12 @@ Renal Non-Clear Cell Carcinoma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/renal-oncocytoma.html b/concepts/renal-oncocytoma.html index c381036b96..3a8a00e0c0 100644 --- a/concepts/renal-oncocytoma.html +++ b/concepts/renal-oncocytoma.html @@ -11,12 +11,12 @@ Renal Oncocytoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/renal-small-cell-carcinoma.html b/concepts/renal-small-cell-carcinoma.html index 26c76337e0..f70fb9d0c5 100644 --- a/concepts/renal-small-cell-carcinoma.html +++ b/concepts/renal-small-cell-carcinoma.html @@ -11,12 +11,12 @@ Renal Small Cell Carcinoma - + - + @@ -381,7 +381,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/retinoblastoma.html b/concepts/retinoblastoma.html index ab1e2a03ab..6db08331b6 100644 --- a/concepts/retinoblastoma.html +++ b/concepts/retinoblastoma.html @@ -11,12 +11,12 @@ Retinoblastoma - + - + @@ -384,7 +384,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/rhabdoid-cancer.html b/concepts/rhabdoid-cancer.html index c6fd349210..6521ea490d 100644 --- a/concepts/rhabdoid-cancer.html +++ b/concepts/rhabdoid-cancer.html @@ -11,12 +11,12 @@ Rhabdoid Cancer - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/rhabdoid-meningioma.html b/concepts/rhabdoid-meningioma.html index 774416814e..d5d38a096d 100644 --- a/concepts/rhabdoid-meningioma.html +++ b/concepts/rhabdoid-meningioma.html @@ -11,12 +11,12 @@ Rhabdoid Meningioma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/rhabdomyosarcoma.html b/concepts/rhabdomyosarcoma.html index 9a94a0f60c..370866a5fd 100644 --- a/concepts/rhabdomyosarcoma.html +++ b/concepts/rhabdomyosarcoma.html @@ -11,12 +11,12 @@ Rhabdomyosarcoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/rivkin-center-risk-assessment-tool.html b/concepts/rivkin-center-risk-assessment-tool.html index 28c186f4ae..2a6829dd17 100644 --- a/concepts/rivkin-center-risk-assessment-tool.html +++ b/concepts/rivkin-center-risk-assessment-tool.html @@ -11,12 +11,12 @@ Rivkin Center Risk Assessment Tool - + - + @@ -375,7 +375,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/robert-h-lurie-comprehensive-cancer-center.html b/concepts/robert-h-lurie-comprehensive-cancer-center.html index bb6f54f517..a5cfd74f43 100644 --- a/concepts/robert-h-lurie-comprehensive-cancer-center.html +++ b/concepts/robert-h-lurie-comprehensive-cancer-center.html @@ -11,12 +11,12 @@ Robert H. Lurie Comprehensive Cancer Center - + - + @@ -386,7 +386,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/robotic-assisted-bronchoscopy.html b/concepts/robotic-assisted-bronchoscopy.html index b5e6cac2a7..8216dc72f6 100644 --- a/concepts/robotic-assisted-bronchoscopy.html +++ b/concepts/robotic-assisted-bronchoscopy.html @@ -11,12 +11,12 @@ Robotic-Assisted Bronchoscopy - + - + @@ -375,7 +375,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/roche.html b/concepts/roche.html index 5a03c74193..bce3a993ec 100644 --- a/concepts/roche.html +++ b/concepts/roche.html @@ -11,12 +11,12 @@ Roche - + - + @@ -393,7 +393,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/romidepsin.html b/concepts/romidepsin.html index 12db3c914d..ad8e524dbe 100644 --- a/concepts/romidepsin.html +++ b/concepts/romidepsin.html @@ -11,12 +11,12 @@ Romidepsin - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/rosai-dorfman-disease.html b/concepts/rosai-dorfman-disease.html index dcc0cbea9d..8e47ba92fb 100644 --- a/concepts/rosai-dorfman-disease.html +++ b/concepts/rosai-dorfman-disease.html @@ -11,12 +11,12 @@ Rosai-Dorfman Disease - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/rosette-forming-glioneuronal-tumor-of-the-fourth-ventricle.html b/concepts/rosette-forming-glioneuronal-tumor-of-the-fourth-ventricle.html index 6da0da58ff..6e149c6fb0 100644 --- a/concepts/rosette-forming-glioneuronal-tumor-of-the-fourth-ventricle.html +++ b/concepts/rosette-forming-glioneuronal-tumor-of-the-fourth-ventricle.html @@ -11,12 +11,12 @@ Rosette-forming Glioneuronal Tumor of the Fourth Ventricle - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/roswell-park-comprehensive-cancer-center.html b/concepts/roswell-park-comprehensive-cancer-center.html index 19732d0e2c..e632d02632 100644 --- a/concepts/roswell-park-comprehensive-cancer-center.html +++ b/concepts/roswell-park-comprehensive-cancer-center.html @@ -11,12 +11,12 @@ Roswell Park Comprehensive Cancer Center - + - + @@ -391,7 +391,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/round-cell-sarcoma-nos.html b/concepts/round-cell-sarcoma-nos.html index 481ae6b71f..a5ebc9ecc5 100644 --- a/concepts/round-cell-sarcoma-nos.html +++ b/concepts/round-cell-sarcoma-nos.html @@ -11,12 +11,12 @@ Round Cell Sarcoma, NOS - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/rpcc.html b/concepts/rpcc.html index 3a90891a82..f5c582ca08 100644 --- a/concepts/rpcc.html +++ b/concepts/rpcc.html @@ -11,12 +11,12 @@ RPCC - + - + @@ -379,7 +379,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/rpt-ar.html b/concepts/rpt-ar.html index 6c8c326290..3ca68ad588 100644 --- a/concepts/rpt-ar.html +++ b/concepts/rpt-ar.html @@ -11,12 +11,12 @@ RPT - + - + @@ -379,7 +379,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/rush-university-medical-center.html b/concepts/rush-university-medical-center.html index fab68979f5..18d381de3e 100644 --- a/concepts/rush-university-medical-center.html +++ b/concepts/rush-university-medical-center.html @@ -11,12 +11,12 @@ Rush University Medical Center - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/rutgers-cancer-institute-of-new-jersey.html b/concepts/rutgers-cancer-institute-of-new-jersey.html index f626683980..f4612f94eb 100644 --- a/concepts/rutgers-cancer-institute-of-new-jersey.html +++ b/concepts/rutgers-cancer-institute-of-new-jersey.html @@ -11,12 +11,12 @@ Rutgers Cancer Institute of New Jersey - + - + @@ -385,7 +385,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/sacr-au.html b/concepts/sacr-au.html index 4c7543461a..15604f9866 100644 --- a/concepts/sacr-au.html +++ b/concepts/sacr-au.html @@ -11,12 +11,12 @@ SACR - + - + @@ -379,7 +379,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/saecpcr-za.html b/concepts/saecpcr-za.html index 16fe4a805b..5e644281af 100644 --- a/concepts/saecpcr-za.html +++ b/concepts/saecpcr-za.html @@ -11,12 +11,12 @@ saecpcr - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/salivary-adenocarcinoma.html b/concepts/salivary-adenocarcinoma.html index 0d696a223e..d6d113686a 100644 --- a/concepts/salivary-adenocarcinoma.html +++ b/concepts/salivary-adenocarcinoma.html @@ -11,12 +11,12 @@ Salivary Adenocarcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/salivary-carcinoma-other.html b/concepts/salivary-carcinoma-other.html index e65a949d54..f88c889a99 100644 --- a/concepts/salivary-carcinoma-other.html +++ b/concepts/salivary-carcinoma-other.html @@ -11,12 +11,12 @@ Salivary Carcinoma, Other - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/salivary-carcinoma.html b/concepts/salivary-carcinoma.html index f1d4080def..90f6c08e54 100644 --- a/concepts/salivary-carcinoma.html +++ b/concepts/salivary-carcinoma.html @@ -11,12 +11,12 @@ Salivary Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/salivary-duct-carcinoma.html b/concepts/salivary-duct-carcinoma.html index a75e3f1697..fc1003df26 100644 --- a/concepts/salivary-duct-carcinoma.html +++ b/concepts/salivary-duct-carcinoma.html @@ -11,12 +11,12 @@ Salivary Duct Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/salivary-gland-oncocytoma.html b/concepts/salivary-gland-oncocytoma.html index 6c2c53cbf8..0e0dfef1b4 100644 --- a/concepts/salivary-gland-oncocytoma.html +++ b/concepts/salivary-gland-oncocytoma.html @@ -11,12 +11,12 @@ Salivary Gland Oncocytoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/salivary-gland-type-tumor-of-the-lung.html b/concepts/salivary-gland-type-tumor-of-the-lung.html index 4b06184722..3a81d0fdad 100644 --- a/concepts/salivary-gland-type-tumor-of-the-lung.html +++ b/concepts/salivary-gland-type-tumor-of-the-lung.html @@ -11,12 +11,12 @@ Salivary Gland-Type Tumor of the Lung - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/salk-institute-cancer-center.html b/concepts/salk-institute-cancer-center.html index e5bab2a815..c49b43fc0c 100644 --- a/concepts/salk-institute-cancer-center.html +++ b/concepts/salk-institute-cancer-center.html @@ -11,12 +11,12 @@ Salk Institute Cancer Center - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/sanford-burnham-prebys-medical-discovery-institute.html b/concepts/sanford-burnham-prebys-medical-discovery-institute.html index 4ba6de9a93..60a08f8a0f 100644 --- a/concepts/sanford-burnham-prebys-medical-discovery-institute.html +++ b/concepts/sanford-burnham-prebys-medical-discovery-institute.html @@ -11,12 +11,12 @@ Sanford Burnham Prebys Medical Discovery Institute - + - + @@ -390,7 +390,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/sanofi.html b/concepts/sanofi.html index fba331f1b4..c2d10864b0 100644 --- a/concepts/sanofi.html +++ b/concepts/sanofi.html @@ -11,12 +11,12 @@ Sanofi - + - + @@ -387,7 +387,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/sarcoma-nos.html b/concepts/sarcoma-nos.html index 60f5835111..ea498bee32 100644 --- a/concepts/sarcoma-nos.html +++ b/concepts/sarcoma-nos.html @@ -11,12 +11,12 @@ Sarcoma, NOS - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/sarcomatoid-carcinoma-of-the-lung.html b/concepts/sarcomatoid-carcinoma-of-the-lung.html index 3628d61592..24f7e66f4f 100644 --- a/concepts/sarcomatoid-carcinoma-of-the-lung.html +++ b/concepts/sarcomatoid-carcinoma-of-the-lung.html @@ -11,12 +11,12 @@ Sarcomatoid Carcinoma of the Lung - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/sarcomatoid-carcinoma-of-the-urinary-bladder.html b/concepts/sarcomatoid-carcinoma-of-the-urinary-bladder.html index 52ccc08747..09142e05b9 100644 --- a/concepts/sarcomatoid-carcinoma-of-the-urinary-bladder.html +++ b/concepts/sarcomatoid-carcinoma-of-the-urinary-bladder.html @@ -11,12 +11,12 @@ Sarcomatoid Carcinoma of the Urinary Bladder - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/sarcomatoid-renal-cell-carcinoma.html b/concepts/sarcomatoid-renal-cell-carcinoma.html index fbf0e2a7b8..675772907d 100644 --- a/concepts/sarcomatoid-renal-cell-carcinoma.html +++ b/concepts/sarcomatoid-renal-cell-carcinoma.html @@ -11,12 +11,12 @@ Sarcomatoid Renal Cell Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/satraplatin.html b/concepts/satraplatin.html index 802b10cab9..dc9ca80746 100644 --- a/concepts/satraplatin.html +++ b/concepts/satraplatin.html @@ -11,12 +11,12 @@ Satraplatin - + - + @@ -378,7 +378,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/sauna.html b/concepts/sauna.html index 3ad5c50cc4..6c0d966691 100644 --- a/concepts/sauna.html +++ b/concepts/sauna.html @@ -11,12 +11,12 @@ Sauna - + - + @@ -375,7 +375,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/sbrt.html b/concepts/sbrt.html index ff30df2dd0..ce8eefba71 100644 --- a/concepts/sbrt.html +++ b/concepts/sbrt.html @@ -11,12 +11,12 @@ Stereotactic Body Radiation Therapy - + - + @@ -375,7 +375,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/schwannoma.html b/concepts/schwannoma.html index b4cb37f911..fd6ad75313 100644 --- a/concepts/schwannoma.html +++ b/concepts/schwannoma.html @@ -11,12 +11,12 @@ Schwannoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/sclerosing-epithelioid-fibrosarcoma.html b/concepts/sclerosing-epithelioid-fibrosarcoma.html index 125d3e9691..956df6f004 100644 --- a/concepts/sclerosing-epithelioid-fibrosarcoma.html +++ b/concepts/sclerosing-epithelioid-fibrosarcoma.html @@ -11,12 +11,12 @@ Sclerosing Epithelioid Fibrosarcoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/scr-dz.html b/concepts/scr-dz.html index 9804797770..bcd7239a93 100644 --- a/concepts/scr-dz.html +++ b/concepts/scr-dz.html @@ -11,12 +11,12 @@ SCR - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/seattle-childrens-hospital.html b/concepts/seattle-childrens-hospital.html index e3d483b777..6e342ad3ae 100644 --- a/concepts/seattle-childrens-hospital.html +++ b/concepts/seattle-childrens-hospital.html @@ -11,12 +11,12 @@ Seattle Children's Hospital - + - + @@ -384,7 +384,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/sebaceous-carcinoma.html b/concepts/sebaceous-carcinoma.html index 424e5ef77f..7f251f4333 100644 --- a/concepts/sebaceous-carcinoma.html +++ b/concepts/sebaceous-carcinoma.html @@ -11,12 +11,12 @@ Sebaceous Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/secondary-osteosarcoma.html b/concepts/secondary-osteosarcoma.html index f5abb0465c..d6375dff1d 100644 --- a/concepts/secondary-osteosarcoma.html +++ b/concepts/secondary-osteosarcoma.html @@ -11,12 +11,12 @@ Secondary Osteosarcoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/seer.html b/concepts/seer.html index 25fda1ae8d..c7e09244cb 100644 --- a/concepts/seer.html +++ b/concepts/seer.html @@ -11,12 +11,12 @@ SEER - + - + @@ -379,7 +379,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/sellar-tumor.html b/concepts/sellar-tumor.html index 55a94e7908..ba26041cec 100644 --- a/concepts/sellar-tumor.html +++ b/concepts/sellar-tumor.html @@ -11,12 +11,12 @@ Sellar Tumor - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/seminoma.html b/concepts/seminoma.html index 2fb8493edc..0e374d8848 100644 --- a/concepts/seminoma.html +++ b/concepts/seminoma.html @@ -11,12 +11,12 @@ Seminoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/semustine.html b/concepts/semustine.html index c69c94035b..366c85d928 100644 --- a/concepts/semustine.html +++ b/concepts/semustine.html @@ -11,12 +11,12 @@ Semustine - + - + @@ -378,7 +378,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/serene-hospice-care.html b/concepts/serene-hospice-care.html index ff206d7e14..60e0bcd57e 100644 --- a/concepts/serene-hospice-care.html +++ b/concepts/serene-hospice-care.html @@ -11,12 +11,12 @@ Serene Hospice Care - + - + @@ -377,7 +377,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/serous-borderline-ovarian-tumor-micropapillary.html b/concepts/serous-borderline-ovarian-tumor-micropapillary.html index 3b6efa9f60..97bc5109e7 100644 --- a/concepts/serous-borderline-ovarian-tumor-micropapillary.html +++ b/concepts/serous-borderline-ovarian-tumor-micropapillary.html @@ -11,12 +11,12 @@ Serous Borderline Ovarian Tumor, Micropapillary - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/serous-borderline-ovarian-tumor.html b/concepts/serous-borderline-ovarian-tumor.html index 26ee5d2032..45727a12ee 100644 --- a/concepts/serous-borderline-ovarian-tumor.html +++ b/concepts/serous-borderline-ovarian-tumor.html @@ -11,12 +11,12 @@ Serous Borderline Ovarian Tumor - + - + @@ -381,7 +381,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/serous-cystadenoma-of-the-pancreas.html b/concepts/serous-cystadenoma-of-the-pancreas.html index fbbe6aa1d9..ac63a95c71 100644 --- a/concepts/serous-cystadenoma-of-the-pancreas.html +++ b/concepts/serous-cystadenoma-of-the-pancreas.html @@ -11,12 +11,12 @@ Serous Cystadenoma of the Pancreas - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/serous-ovarian-cancer.html b/concepts/serous-ovarian-cancer.html index 5738fd8f9a..e0aa81096f 100644 --- a/concepts/serous-ovarian-cancer.html +++ b/concepts/serous-ovarian-cancer.html @@ -11,12 +11,12 @@ Serous Ovarian Cancer - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/sertoli-leydig-cell-tumor.html b/concepts/sertoli-leydig-cell-tumor.html index 7a24d19825..3b82686181 100644 --- a/concepts/sertoli-leydig-cell-tumor.html +++ b/concepts/sertoli-leydig-cell-tumor.html @@ -11,12 +11,12 @@ Sertoli-Leydig Cell Tumor - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/sex-cord-stromal-tumor-testis.html b/concepts/sex-cord-stromal-tumor-testis.html index b4de58a107..ffe1dbb2a7 100644 --- a/concepts/sex-cord-stromal-tumor-testis.html +++ b/concepts/sex-cord-stromal-tumor-testis.html @@ -11,12 +11,12 @@ Sex Cord Stromal Tumor Testis - + - + @@ -381,7 +381,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/sex-cord-stromal-tumor.html b/concepts/sex-cord-stromal-tumor.html index a7dd3edfff..cb0528c89c 100644 --- a/concepts/sex-cord-stromal-tumor.html +++ b/concepts/sex-cord-stromal-tumor.html @@ -11,12 +11,12 @@ Sex Cord Stromal Tumor - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/sezary-syndrome.html b/concepts/sezary-syndrome.html index e18fe3c3a0..c37e6367da 100644 --- a/concepts/sezary-syndrome.html +++ b/concepts/sezary-syndrome.html @@ -11,12 +11,12 @@ Sezary Syndrome - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/sialoblastoma.html b/concepts/sialoblastoma.html index 8adac23abd..4b0cd69157 100644 --- a/concepts/sialoblastoma.html +++ b/concepts/sialoblastoma.html @@ -11,12 +11,12 @@ Sialoblastoma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/sidney-kimmel-cancer-center-at-thomas-jefferson-university.html b/concepts/sidney-kimmel-cancer-center-at-thomas-jefferson-university.html index 787897b139..7bef388273 100644 --- a/concepts/sidney-kimmel-cancer-center-at-thomas-jefferson-university.html +++ b/concepts/sidney-kimmel-cancer-center-at-thomas-jefferson-university.html @@ -11,12 +11,12 @@ Sidney Kimmel Cancer Center at Thomas Jefferson University - + - + @@ -383,7 +383,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/sidney-kimmel-comprehensive-cancer-center.html b/concepts/sidney-kimmel-comprehensive-cancer-center.html index 7aef7aa075..fb8dfc4973 100644 --- a/concepts/sidney-kimmel-comprehensive-cancer-center.html +++ b/concepts/sidney-kimmel-comprehensive-cancer-center.html @@ -11,12 +11,12 @@ Sidney Kimmel Comprehensive Cancer Center - + - + @@ -386,7 +386,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/sigmoidoscopy.html b/concepts/sigmoidoscopy.html index 43201feb88..c15b54eac1 100644 --- a/concepts/sigmoidoscopy.html +++ b/concepts/sigmoidoscopy.html @@ -11,12 +11,12 @@ Sigmoidoscopy - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/signet-ring-cell-adenocarcinoma-of-the-colon-and-rectum.html b/concepts/signet-ring-cell-adenocarcinoma-of-the-colon-and-rectum.html index f2fa7c4dd9..82d6f096a9 100644 --- a/concepts/signet-ring-cell-adenocarcinoma-of-the-colon-and-rectum.html +++ b/concepts/signet-ring-cell-adenocarcinoma-of-the-colon-and-rectum.html @@ -11,12 +11,12 @@ Signet Ring Cell Adenocarcinoma of the Colon and Rectum - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/signet-ring-cell-carcinoma-of-the-stomach.html b/concepts/signet-ring-cell-carcinoma-of-the-stomach.html index 3da7cdc547..94bb2a4fef 100644 --- a/concepts/signet-ring-cell-carcinoma-of-the-stomach.html +++ b/concepts/signet-ring-cell-carcinoma-of-the-stomach.html @@ -11,12 +11,12 @@ Signet Ring Cell Carcinoma of the Stomach - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/signet-ring-cell-type-of-the-appendix.html b/concepts/signet-ring-cell-type-of-the-appendix.html index e83deacbb5..7de08a7ea4 100644 --- a/concepts/signet-ring-cell-type-of-the-appendix.html +++ b/concepts/signet-ring-cell-type-of-the-appendix.html @@ -11,12 +11,12 @@ Signet Ring Cell Type of the Appendix - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/signet-ring-mucinous-carcinoma.html b/concepts/signet-ring-mucinous-carcinoma.html index 6b47523e1b..abfa37ecaa 100644 --- a/concepts/signet-ring-mucinous-carcinoma.html +++ b/concepts/signet-ring-mucinous-carcinoma.html @@ -11,12 +11,12 @@ Signet Ring Mucinous Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/sinonasal-adenocarcinoma.html b/concepts/sinonasal-adenocarcinoma.html index 47c79e74c3..8afa24aed3 100644 --- a/concepts/sinonasal-adenocarcinoma.html +++ b/concepts/sinonasal-adenocarcinoma.html @@ -11,12 +11,12 @@ Sinonasal Adenocarcinoma - + - + @@ -381,7 +381,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/sinonasal-squamous-cell-carcinoma.html b/concepts/sinonasal-squamous-cell-carcinoma.html index 01a5ff2743..45d1aefae8 100644 --- a/concepts/sinonasal-squamous-cell-carcinoma.html +++ b/concepts/sinonasal-squamous-cell-carcinoma.html @@ -11,12 +11,12 @@ Sinonasal Squamous Cell Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/sinonasal-undifferentiated-carcinoma.html b/concepts/sinonasal-undifferentiated-carcinoma.html index 66accca32a..84d7f11d78 100644 --- a/concepts/sinonasal-undifferentiated-carcinoma.html +++ b/concepts/sinonasal-undifferentiated-carcinoma.html @@ -11,12 +11,12 @@ Sinonasal Undifferentiated Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/sinopharm.html b/concepts/sinopharm.html index 2957ab46c4..b4ca202fb0 100644 --- a/concepts/sinopharm.html +++ b/concepts/sinopharm.html @@ -11,12 +11,12 @@ Sinopharm - + - + @@ -378,7 +378,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/sitc.html b/concepts/sitc.html index 8ea2bd49ad..0be99f8d0f 100644 --- a/concepts/sitc.html +++ b/concepts/sitc.html @@ -11,12 +11,12 @@ SITC - + - + @@ -392,7 +392,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/skin-adnexal-carcinoma.html b/concepts/skin-adnexal-carcinoma.html index a24903b9fe..61c78ba2e4 100644 --- a/concepts/skin-adnexal-carcinoma.html +++ b/concepts/skin-adnexal-carcinoma.html @@ -11,12 +11,12 @@ Skin Adnexal Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/skin-cancer-subreddit.html b/concepts/skin-cancer-subreddit.html index b40f4391a8..847afbeec6 100644 --- a/concepts/skin-cancer-subreddit.html +++ b/concepts/skin-cancer-subreddit.html @@ -11,12 +11,12 @@ Skin Cancer Subreddit - + - + @@ -377,7 +377,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/skin.html b/concepts/skin.html index a32486af2b..9e01438025 100644 --- a/concepts/skin.html +++ b/concepts/skin.html @@ -11,12 +11,12 @@ Skin Cancer - + - + @@ -436,7 +436,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/sleep.html b/concepts/sleep.html index de1f41c679..18af9aa5d7 100644 --- a/concepts/sleep.html +++ b/concepts/sleep.html @@ -11,12 +11,12 @@ Sleep - + - + @@ -373,7 +373,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/small-bowel-cancer.html b/concepts/small-bowel-cancer.html index 9d6a6802e7..14cca0fb1e 100644 --- a/concepts/small-bowel-cancer.html +++ b/concepts/small-bowel-cancer.html @@ -11,12 +11,12 @@ Small Bowel Cancer - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/small-bowel-well-differentiated-neuroendocrine-tumor.html b/concepts/small-bowel-well-differentiated-neuroendocrine-tumor.html index 80cddc8f2b..6b50e26215 100644 --- a/concepts/small-bowel-well-differentiated-neuroendocrine-tumor.html +++ b/concepts/small-bowel-well-differentiated-neuroendocrine-tumor.html @@ -11,12 +11,12 @@ Small Bowel Well-Differentiated Neuroendocrine Tumor - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/small-cell-bladder-cancer.html b/concepts/small-cell-bladder-cancer.html index 46bee19fe0..0796a69c01 100644 --- a/concepts/small-cell-bladder-cancer.html +++ b/concepts/small-cell-bladder-cancer.html @@ -11,12 +11,12 @@ Small Cell Bladder Cancer - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/small-cell-carcinoma-of-the-cervix.html b/concepts/small-cell-carcinoma-of-the-cervix.html index 7d93167113..8d8e833057 100644 --- a/concepts/small-cell-carcinoma-of-the-cervix.html +++ b/concepts/small-cell-carcinoma-of-the-cervix.html @@ -11,12 +11,12 @@ Small Cell Carcinoma of the Cervix - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/small-cell-carcinoma-of-the-ovary.html b/concepts/small-cell-carcinoma-of-the-ovary.html index ae9e7bd610..02cd0f0b02 100644 --- a/concepts/small-cell-carcinoma-of-the-ovary.html +++ b/concepts/small-cell-carcinoma-of-the-ovary.html @@ -11,12 +11,12 @@ Small Cell Carcinoma of the Ovary - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/small-cell-carcinoma-of-the-stomach.html b/concepts/small-cell-carcinoma-of-the-stomach.html index c74c4ef853..3cdb7beaeb 100644 --- a/concepts/small-cell-carcinoma-of-the-stomach.html +++ b/concepts/small-cell-carcinoma-of-the-stomach.html @@ -11,12 +11,12 @@ Small Cell Carcinoma of the Stomach - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/small-cell-carcinoma-of-unknown-primary.html b/concepts/small-cell-carcinoma-of-unknown-primary.html index a88eaa507f..5ece7d5371 100644 --- a/concepts/small-cell-carcinoma-of-unknown-primary.html +++ b/concepts/small-cell-carcinoma-of-unknown-primary.html @@ -11,12 +11,12 @@ Small Cell Carcinoma of Unknown Primary - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/small-cell-gallbladder-carcinoma.html b/concepts/small-cell-gallbladder-carcinoma.html index ae28a7867e..7a48569497 100644 --- a/concepts/small-cell-gallbladder-carcinoma.html +++ b/concepts/small-cell-gallbladder-carcinoma.html @@ -11,12 +11,12 @@ Small Cell Gallbladder Carcinoma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/small-cell-glioblastoma.html b/concepts/small-cell-glioblastoma.html index f7afde3a9c..e0fed47b19 100644 --- a/concepts/small-cell-glioblastoma.html +++ b/concepts/small-cell-glioblastoma.html @@ -11,12 +11,12 @@ Small Cell Glioblastoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/small-cell-lung-cancer.html b/concepts/small-cell-lung-cancer.html index 459c0aab18..9dc561fc97 100644 --- a/concepts/small-cell-lung-cancer.html +++ b/concepts/small-cell-lung-cancer.html @@ -11,12 +11,12 @@ Small Cell Lung Cancer - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/small-cell-osteosarcoma.html b/concepts/small-cell-osteosarcoma.html index 8778abe708..14ccc730d5 100644 --- a/concepts/small-cell-osteosarcoma.html +++ b/concepts/small-cell-osteosarcoma.html @@ -11,12 +11,12 @@ Small Cell Osteosarcoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/small-intestinal-carcinoma.html b/concepts/small-intestinal-carcinoma.html index bf394df27b..75fac63b31 100644 --- a/concepts/small-intestinal-carcinoma.html +++ b/concepts/small-intestinal-carcinoma.html @@ -11,12 +11,12 @@ Small Intestinal Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/smoking-cessation.html b/concepts/smoking-cessation.html index 5429bfb4f6..08cf5d7e67 100644 --- a/concepts/smoking-cessation.html +++ b/concepts/smoking-cessation.html @@ -11,12 +11,12 @@ Smoking Cessation - + - + @@ -376,7 +376,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/smoldering-systemic-mastocytosis.html b/concepts/smoldering-systemic-mastocytosis.html index 1b4484dd6e..d848f383e2 100644 --- a/concepts/smoldering-systemic-mastocytosis.html +++ b/concepts/smoldering-systemic-mastocytosis.html @@ -11,12 +11,12 @@ Smoldering Systemic Mastocytosis - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/smooth-muscle-neoplasm-nos.html b/concepts/smooth-muscle-neoplasm-nos.html index 4a2296afe6..9b1f235c52 100644 --- a/concepts/smooth-muscle-neoplasm-nos.html +++ b/concepts/smooth-muscle-neoplasm-nos.html @@ -11,12 +11,12 @@ Smooth Muscle Neoplasm, NOS - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/sncr-sy.html b/concepts/sncr-sy.html index 19f7693027..9f0f6ea3c8 100644 --- a/concepts/sncr-sy.html +++ b/concepts/sncr-sy.html @@ -11,12 +11,12 @@ sncr - + - + @@ -379,7 +379,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/soft-tissue-myoepithelial-carcinoma.html b/concepts/soft-tissue-myoepithelial-carcinoma.html index 653e478bfb..6cb600d553 100644 --- a/concepts/soft-tissue-myoepithelial-carcinoma.html +++ b/concepts/soft-tissue-myoepithelial-carcinoma.html @@ -11,12 +11,12 @@ Soft Tissue Myoepithelial Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/soft-tissue.html b/concepts/soft-tissue.html index 8df0a6d4c8..b30278824b 100644 --- a/concepts/soft-tissue.html +++ b/concepts/soft-tissue.html @@ -11,12 +11,12 @@ Soft Tissue - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/solid-papillary-carcinoma-of-the-breast.html b/concepts/solid-papillary-carcinoma-of-the-breast.html index d6e160d1e6..6db6510e59 100644 --- a/concepts/solid-papillary-carcinoma-of-the-breast.html +++ b/concepts/solid-papillary-carcinoma-of-the-breast.html @@ -11,12 +11,12 @@ Solid Papillary Carcinoma of the Breast - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/solid-pseudopapillary-neoplasm-of-the-pancreas.html b/concepts/solid-pseudopapillary-neoplasm-of-the-pancreas.html index 00b774a95e..622eee8474 100644 --- a/concepts/solid-pseudopapillary-neoplasm-of-the-pancreas.html +++ b/concepts/solid-pseudopapillary-neoplasm-of-the-pancreas.html @@ -11,12 +11,12 @@ Solid Pseudopapillary Neoplasm of the Pancreas - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/solitary-fibrous-tumor-hemangiopericytoma.html b/concepts/solitary-fibrous-tumor-hemangiopericytoma.html index 8a29a35576..08b4181b33 100644 --- a/concepts/solitary-fibrous-tumor-hemangiopericytoma.html +++ b/concepts/solitary-fibrous-tumor-hemangiopericytoma.html @@ -11,12 +11,12 @@ Solitary Fibrous Tumor/Hemangiopericytoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/solitary-fibrous-tumor-of-the-central-nervous-system.html b/concepts/solitary-fibrous-tumor-of-the-central-nervous-system.html index fde2f1a390..1935676d3c 100644 --- a/concepts/solitary-fibrous-tumor-of-the-central-nervous-system.html +++ b/concepts/solitary-fibrous-tumor-of-the-central-nervous-system.html @@ -11,12 +11,12 @@ Solitary Fibrous Tumor of the Central Nervous System - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/solitary-plasmacytoma-of-bone.html b/concepts/solitary-plasmacytoma-of-bone.html index dbb1d123a0..2a733b8174 100644 --- a/concepts/solitary-plasmacytoma-of-bone.html +++ b/concepts/solitary-plasmacytoma-of-bone.html @@ -11,12 +11,12 @@ Solitary Plasmacytoma of Bone - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/sorafenib.html b/concepts/sorafenib.html index 22de572e38..da5869171f 100644 --- a/concepts/sorafenib.html +++ b/concepts/sorafenib.html @@ -11,12 +11,12 @@ Sorafenib - + - + @@ -375,7 +375,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/spindle-cell-carcinoma-of-the-lung.html b/concepts/spindle-cell-carcinoma-of-the-lung.html index a747b26c82..54e55341c7 100644 --- a/concepts/spindle-cell-carcinoma-of-the-lung.html +++ b/concepts/spindle-cell-carcinoma-of-the-lung.html @@ -11,12 +11,12 @@ Spindle Cell Carcinoma of the Lung - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/spindle-cell-oncocytoma-of-the-adenohypophysis.html b/concepts/spindle-cell-oncocytoma-of-the-adenohypophysis.html index a0b3f51a53..81fb5ef739 100644 --- a/concepts/spindle-cell-oncocytoma-of-the-adenohypophysis.html +++ b/concepts/spindle-cell-oncocytoma-of-the-adenohypophysis.html @@ -11,12 +11,12 @@ Spindle Cell Oncocytoma of the Adenohypophysis - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/spindle-cell-rhabdomyosarcoma.html b/concepts/spindle-cell-rhabdomyosarcoma.html index dda85e6a91..17e18a12c1 100644 --- a/concepts/spindle-cell-rhabdomyosarcoma.html +++ b/concepts/spindle-cell-rhabdomyosarcoma.html @@ -11,12 +11,12 @@ Spindle Cell Rhabdomyosarcoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/spindle-cell-sclerosing-rhabdomyosarcoma.html b/concepts/spindle-cell-sclerosing-rhabdomyosarcoma.html index e684d7b0bf..9b1da0c52a 100644 --- a/concepts/spindle-cell-sclerosing-rhabdomyosarcoma.html +++ b/concepts/spindle-cell-sclerosing-rhabdomyosarcoma.html @@ -11,12 +11,12 @@ Spindle Cell/Sclerosing Rhabdomyosarcoma - + - + @@ -381,7 +381,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/spiroma-spiradenoma.html b/concepts/spiroma-spiradenoma.html index ab37b1f314..364f729cbe 100644 --- a/concepts/spiroma-spiradenoma.html +++ b/concepts/spiroma-spiradenoma.html @@ -11,12 +11,12 @@ Spiroma/Spiradenoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/spitzoid-melanoma.html b/concepts/spitzoid-melanoma.html index 08292d8a43..5a33dc715e 100644 --- a/concepts/spitzoid-melanoma.html +++ b/concepts/spitzoid-melanoma.html @@ -11,12 +11,12 @@ Spitzoid Melanoma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/splenectomy.html b/concepts/splenectomy.html index cfc06465bb..9824c1d6d1 100644 --- a/concepts/splenectomy.html +++ b/concepts/splenectomy.html @@ -11,12 +11,12 @@ Splenectomy - + - + @@ -376,7 +376,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/splenic-b-cell-lymphoma-leukemia-unclassifiable.html b/concepts/splenic-b-cell-lymphoma-leukemia-unclassifiable.html index 00aa7f5b59..63913cb5c9 100644 --- a/concepts/splenic-b-cell-lymphoma-leukemia-unclassifiable.html +++ b/concepts/splenic-b-cell-lymphoma-leukemia-unclassifiable.html @@ -11,12 +11,12 @@ Splenic B-Cell Lymphoma/Leukemia, Unclassifiable - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/splenic-diffuse-red-pulp-small-b-cell-lymphoma.html b/concepts/splenic-diffuse-red-pulp-small-b-cell-lymphoma.html index abcfa3819b..b62e3081d9 100644 --- a/concepts/splenic-diffuse-red-pulp-small-b-cell-lymphoma.html +++ b/concepts/splenic-diffuse-red-pulp-small-b-cell-lymphoma.html @@ -11,12 +11,12 @@ Splenic Diffuse Red Pulp Small B-Cell Lymphoma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/splenic-marginal-zone-lymphoma.html b/concepts/splenic-marginal-zone-lymphoma.html index 00bd9186bb..f102e8fd9f 100644 --- a/concepts/splenic-marginal-zone-lymphoma.html +++ b/concepts/splenic-marginal-zone-lymphoma.html @@ -11,12 +11,12 @@ Splenic Marginal Zone Lymphoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/squamous-cell-carcinoma-of-the-vulva-vagina.html b/concepts/squamous-cell-carcinoma-of-the-vulva-vagina.html index dd315221ed..befcac5a5c 100644 --- a/concepts/squamous-cell-carcinoma-of-the-vulva-vagina.html +++ b/concepts/squamous-cell-carcinoma-of-the-vulva-vagina.html @@ -11,12 +11,12 @@ Squamous Cell Carcinoma of the Vulva/Vagina - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/squamous-cell-carcinoma.html b/concepts/squamous-cell-carcinoma.html index a747dd0aaa..14b250e411 100644 --- a/concepts/squamous-cell-carcinoma.html +++ b/concepts/squamous-cell-carcinoma.html @@ -11,12 +11,12 @@ Squamous Cell Carcinoma - + - + @@ -386,7 +386,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/st-jude-childrens-research-hospital.html b/concepts/st-jude-childrens-research-hospital.html index 6e56c3b64a..9931dafc27 100644 --- a/concepts/st-jude-childrens-research-hospital.html +++ b/concepts/st-jude-childrens-research-hospital.html @@ -11,12 +11,12 @@ St. Jude Children's Research Hospital - + - + @@ -394,7 +394,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/stanford-cancer-institute-sci.html b/concepts/stanford-cancer-institute-sci.html index 3c3cdd9346..d8e5c5781d 100644 --- a/concepts/stanford-cancer-institute-sci.html +++ b/concepts/stanford-cancer-institute-sci.html @@ -11,12 +11,12 @@ Stanford Cancer Institute (SCI) - + - + @@ -388,7 +388,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/steam-bath.html b/concepts/steam-bath.html index b87731f351..9f361d5d2d 100644 --- a/concepts/steam-bath.html +++ b/concepts/steam-bath.html @@ -11,12 +11,12 @@ Steam Bath - + - + @@ -375,7 +375,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/stephenson-cancer-center.html b/concepts/stephenson-cancer-center.html index 58e4d91326..ff8a56d3ba 100644 --- a/concepts/stephenson-cancer-center.html +++ b/concepts/stephenson-cancer-center.html @@ -11,12 +11,12 @@ Stephenson Cancer Center - + - + @@ -383,7 +383,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/steroid-cell-tumor-nos.html b/concepts/steroid-cell-tumor-nos.html index 83d746353e..69f8fe1d88 100644 --- a/concepts/steroid-cell-tumor-nos.html +++ b/concepts/steroid-cell-tumor-nos.html @@ -11,12 +11,12 @@ Steroid Cell Tumor, NOS - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/stomach-adenocarcinoma.html b/concepts/stomach-adenocarcinoma.html index 7a6f0df6ed..55bb4fbe4d 100644 --- a/concepts/stomach-adenocarcinoma.html +++ b/concepts/stomach-adenocarcinoma.html @@ -11,12 +11,12 @@ Stomach Adenocarcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/stomach-cancer.html b/concepts/stomach-cancer.html index 77bf874a41..8797d8442f 100644 --- a/concepts/stomach-cancer.html +++ b/concepts/stomach-cancer.html @@ -11,12 +11,12 @@ Stomach Cancer - + - + @@ -425,7 +425,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/streptozotocin.html b/concepts/streptozotocin.html index c5e46e7511..372a53a268 100644 --- a/concepts/streptozotocin.html +++ b/concepts/streptozotocin.html @@ -11,12 +11,12 @@ Streptozotocin - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/stress-management.html b/concepts/stress-management.html index 3829c1f7fa..5478bc1a22 100644 --- a/concepts/stress-management.html +++ b/concepts/stress-management.html @@ -11,12 +11,12 @@ Stress Management - + - + @@ -373,7 +373,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/subcutaneous-administration.html b/concepts/subcutaneous-administration.html index 811d86e5f2..5ad1d3631a 100644 --- a/concepts/subcutaneous-administration.html +++ b/concepts/subcutaneous-administration.html @@ -11,12 +11,12 @@ Subcutaneous administration - + - + @@ -375,7 +375,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/subcutaneous-panniculitis-like-t-cell-lymphoma.html b/concepts/subcutaneous-panniculitis-like-t-cell-lymphoma.html index 21b70f2159..ca61dbafc7 100644 --- a/concepts/subcutaneous-panniculitis-like-t-cell-lymphoma.html +++ b/concepts/subcutaneous-panniculitis-like-t-cell-lymphoma.html @@ -11,12 +11,12 @@ Subcutaneous Panniculitis-Like T-Cell Lymphoma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/subependymoma.html b/concepts/subependymoma.html index d1807c6337..c81b0342cb 100644 --- a/concepts/subependymoma.html +++ b/concepts/subependymoma.html @@ -11,12 +11,12 @@ Subependymoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/susan-g-komen.html b/concepts/susan-g-komen.html index 396b893311..e904502021 100644 --- a/concepts/susan-g-komen.html +++ b/concepts/susan-g-komen.html @@ -11,12 +11,12 @@ Susan G. Komen Breast Cancer Foundation - + - + @@ -386,7 +386,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/sweat-gland-adenocarcinoma.html b/concepts/sweat-gland-adenocarcinoma.html index 1875b212b6..4dc7071c71 100644 --- a/concepts/sweat-gland-adenocarcinoma.html +++ b/concepts/sweat-gland-adenocarcinoma.html @@ -11,12 +11,12 @@ Sweat Gland Adenocarcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/sweat-gland-carcinoma-apocrine-eccrine-carcinoma.html b/concepts/sweat-gland-carcinoma-apocrine-eccrine-carcinoma.html index f2ac29b251..89b0e86e3e 100644 --- a/concepts/sweat-gland-carcinoma-apocrine-eccrine-carcinoma.html +++ b/concepts/sweat-gland-carcinoma-apocrine-eccrine-carcinoma.html @@ -11,12 +11,12 @@ Sweat Gland Carcinoma/Apocrine Eccrine Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/sweden-nch.html b/concepts/sweden-nch.html index 1b6846a66f..e733508dec 100644 --- a/concepts/sweden-nch.html +++ b/concepts/sweden-nch.html @@ -11,12 +11,12 @@ Karolinska Institutet - + - + @@ -376,7 +376,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/swedish-cancer-institute.html b/concepts/swedish-cancer-institute.html index 8072861289..04051dbae8 100644 --- a/concepts/swedish-cancer-institute.html +++ b/concepts/swedish-cancer-institute.html @@ -11,12 +11,12 @@ Swedish Cancer Institute - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/swedish-national-cancer-register.html b/concepts/swedish-national-cancer-register.html index c0ed049abe..cd9dca7c6f 100644 --- a/concepts/swedish-national-cancer-register.html +++ b/concepts/swedish-national-cancer-register.html @@ -11,12 +11,12 @@ SNCR - + - + @@ -381,7 +381,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/swiss-cancer-league.html b/concepts/swiss-cancer-league.html index 062c5aa3b8..612f492b7e 100644 --- a/concepts/swiss-cancer-league.html +++ b/concepts/swiss-cancer-league.html @@ -11,12 +11,12 @@ Swiss Cancer League - + - + @@ -383,7 +383,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/swog.html b/concepts/swog.html index b99ac10a1e..298e86b206 100644 --- a/concepts/swog.html +++ b/concepts/swog.html @@ -11,12 +11,12 @@ SWOG Cancer Research Network - + - + @@ -392,7 +392,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/sylvester-comprehensive-cancer-center.html b/concepts/sylvester-comprehensive-cancer-center.html index 4827ecce8a..ca6711329b 100644 --- a/concepts/sylvester-comprehensive-cancer-center.html +++ b/concepts/sylvester-comprehensive-cancer-center.html @@ -11,12 +11,12 @@ Sylvester Comprehensive Cancer Center - + - + @@ -384,7 +384,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/synovial-sarcoma.html b/concepts/synovial-sarcoma.html index 252bf26c9b..9905e553e1 100644 --- a/concepts/synovial-sarcoma.html +++ b/concepts/synovial-sarcoma.html @@ -11,12 +11,12 @@ Synovial Sarcoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/systemic-ebv-positive-t-cell-lymphoma-of-childhood.html b/concepts/systemic-ebv-positive-t-cell-lymphoma-of-childhood.html index 2999618764..987589c815 100644 --- a/concepts/systemic-ebv-positive-t-cell-lymphoma-of-childhood.html +++ b/concepts/systemic-ebv-positive-t-cell-lymphoma-of-childhood.html @@ -11,12 +11,12 @@ Systemic EBV Positive T-Cell Lymphoma of Childhood - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/systemic-mastocytosis-with-an-associated-hematological-neoplasm.html b/concepts/systemic-mastocytosis-with-an-associated-hematological-neoplasm.html index b1da69546b..9497b8a472 100644 --- a/concepts/systemic-mastocytosis-with-an-associated-hematological-neoplasm.html +++ b/concepts/systemic-mastocytosis-with-an-associated-hematological-neoplasm.html @@ -11,12 +11,12 @@ Systemic Mastocytosis with an Associated Hematological Neoplasm - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/systemic-mastocytosis.html b/concepts/systemic-mastocytosis.html index 9b6903b07e..89c91ff9b8 100644 --- a/concepts/systemic-mastocytosis.html +++ b/concepts/systemic-mastocytosis.html @@ -11,12 +11,12 @@ Systemic Mastocytosis - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/t-cell-histiocyte-rich-large-b-cell-lymphoma.html b/concepts/t-cell-histiocyte-rich-large-b-cell-lymphoma.html index 0d656f283f..b02f3c9332 100644 --- a/concepts/t-cell-histiocyte-rich-large-b-cell-lymphoma.html +++ b/concepts/t-cell-histiocyte-rich-large-b-cell-lymphoma.html @@ -11,12 +11,12 @@ T-Cell/Histiocyte-Rich Large B-Cell Lymphoma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/t-cell-large-granular-lymphocytic-leukemia.html b/concepts/t-cell-large-granular-lymphocytic-leukemia.html index e2df449e7b..40bc89468b 100644 --- a/concepts/t-cell-large-granular-lymphocytic-leukemia.html +++ b/concepts/t-cell-large-granular-lymphocytic-leukemia.html @@ -11,12 +11,12 @@ T-Cell Large Granular Lymphocytic Leukemia - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/t-cell-prolymphocytic-leukemia.html b/concepts/t-cell-prolymphocytic-leukemia.html index 0531826d5c..f791bcf59f 100644 --- a/concepts/t-cell-prolymphocytic-leukemia.html +++ b/concepts/t-cell-prolymphocytic-leukemia.html @@ -11,12 +11,12 @@ T-Cell Prolymphocytic Leukemia - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/t-lymphoblastic-leukemia-lymphoma.html b/concepts/t-lymphoblastic-leukemia-lymphoma.html index 39b69723d9..5a5343e0c2 100644 --- a/concepts/t-lymphoblastic-leukemia-lymphoma.html +++ b/concepts/t-lymphoblastic-leukemia-lymphoma.html @@ -11,12 +11,12 @@ T-Lymphoblastic Leukemia/Lymphoma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/tai-chi.html b/concepts/tai-chi.html index a9b59e9f13..c24a40b18c 100644 --- a/concepts/tai-chi.html +++ b/concepts/tai-chi.html @@ -11,12 +11,12 @@ Tai chi - + - + @@ -375,7 +375,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/takeda.html b/concepts/takeda.html index 262ec46fb6..a4f9d7c6d3 100644 --- a/concepts/takeda.html +++ b/concepts/takeda.html @@ -11,12 +11,12 @@ Takeda Pharmaceutical Company - + - + @@ -378,7 +378,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/tamoxifen.html b/concepts/tamoxifen.html index 5e381bf2be..4e3342e4e6 100644 --- a/concepts/tamoxifen.html +++ b/concepts/tamoxifen.html @@ -11,12 +11,12 @@ Tamoxifen - + - + @@ -383,7 +383,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/taxotere.html b/concepts/taxotere.html index 55ee0efb63..4d369c557d 100644 --- a/concepts/taxotere.html +++ b/concepts/taxotere.html @@ -11,12 +11,12 @@ Taxotere - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/tcga.html b/concepts/tcga.html index 6371ca2493..af29e18a67 100644 --- a/concepts/tcga.html +++ b/concepts/tcga.html @@ -11,12 +11,12 @@ TCGA - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/tcr-au.html b/concepts/tcr-au.html index 7ebbb5778a..8d77aca99b 100644 --- a/concepts/tcr-au.html +++ b/concepts/tcr-au.html @@ -11,12 +11,12 @@ TCR - + - + @@ -379,7 +379,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/telangiectatic-osteosarcoma.html b/concepts/telangiectatic-osteosarcoma.html index f3d730973c..985f9d5302 100644 --- a/concepts/telangiectatic-osteosarcoma.html +++ b/concepts/telangiectatic-osteosarcoma.html @@ -11,12 +11,12 @@ Telangiectatic Osteosarcoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/temozolomide.html b/concepts/temozolomide.html index f246b521ee..ded9fb4c3a 100644 --- a/concepts/temozolomide.html +++ b/concepts/temozolomide.html @@ -11,12 +11,12 @@ Temozolomide - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/teniposide.html b/concepts/teniposide.html index e476b93d8e..f136b55922 100644 --- a/concepts/teniposide.html +++ b/concepts/teniposide.html @@ -11,12 +11,12 @@ Teniposide - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/tenosynovial-giant-cell-tumor-diffuse-type.html b/concepts/tenosynovial-giant-cell-tumor-diffuse-type.html index 4325eb7ef6..1968e7ee48 100644 --- a/concepts/tenosynovial-giant-cell-tumor-diffuse-type.html +++ b/concepts/tenosynovial-giant-cell-tumor-diffuse-type.html @@ -11,12 +11,12 @@ Tenosynovial Giant Cell Tumor Diffuse Type - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/teratoma.html b/concepts/teratoma.html index 309affca5d..13e924badc 100644 --- a/concepts/teratoma.html +++ b/concepts/teratoma.html @@ -11,12 +11,12 @@ Teratoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/tesetaxel.html b/concepts/tesetaxel.html index 19f73a92c5..0bc913c460 100644 --- a/concepts/tesetaxel.html +++ b/concepts/tesetaxel.html @@ -11,12 +11,12 @@ Tesetaxel - + - + @@ -377,7 +377,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/testicular-lymphoma.html b/concepts/testicular-lymphoma.html index 893184dbb4..c0ba830c05 100644 --- a/concepts/testicular-lymphoma.html +++ b/concepts/testicular-lymphoma.html @@ -11,12 +11,12 @@ Testicular Lymphoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/testicular-mesothelioma.html b/concepts/testicular-mesothelioma.html index db3270e5fe..2b91b9eef2 100644 --- a/concepts/testicular-mesothelioma.html +++ b/concepts/testicular-mesothelioma.html @@ -11,12 +11,12 @@ Testicular Mesothelioma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/testis.html b/concepts/testis.html index c2770bc6cf..3df9b94424 100644 --- a/concepts/testis.html +++ b/concepts/testis.html @@ -11,12 +11,12 @@ Testicular Cancer - + - + @@ -409,7 +409,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/teva.html b/concepts/teva.html index cca4ebaf38..6ead288c22 100644 --- a/concepts/teva.html +++ b/concepts/teva.html @@ -11,12 +11,12 @@ Teva Pharmaceutical Industries Ltd. - + - + @@ -385,7 +385,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/the-barbara-ann-karmanos-cancer-institute.html b/concepts/the-barbara-ann-karmanos-cancer-institute.html index 941125624f..7c12e2dba4 100644 --- a/concepts/the-barbara-ann-karmanos-cancer-institute.html +++ b/concepts/the-barbara-ann-karmanos-cancer-institute.html @@ -11,12 +11,12 @@ The Barbara Ann Karmanos Cancer Institute - + - + @@ -385,7 +385,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/the-biology-of-cancer.html b/concepts/the-biology-of-cancer.html index 63d5041c3d..9e0cf6c78b 100644 --- a/concepts/the-biology-of-cancer.html +++ b/concepts/the-biology-of-cancer.html @@ -11,12 +11,12 @@ The Biology of Cancer - + - + @@ -375,7 +375,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/the-bright-hour-a-memoir-of-living-and-dying.html b/concepts/the-bright-hour-a-memoir-of-living-and-dying.html index 3d4f209183..e1fd6649da 100644 --- a/concepts/the-bright-hour-a-memoir-of-living-and-dying.html +++ b/concepts/the-bright-hour-a-memoir-of-living-and-dying.html @@ -11,12 +11,12 @@ The Bright Hour: A Memoir of Living and Dying - + - + @@ -375,7 +375,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/the-c-word.html b/concepts/the-c-word.html index 2b56dd7884..c141d9e90f 100644 --- a/concepts/the-c-word.html +++ b/concepts/the-c-word.html @@ -11,12 +11,12 @@ The C Word - + - + @@ -386,7 +386,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/the-cancer-journals.html b/concepts/the-cancer-journals.html index 6849344313..d258dba3cb 100644 --- a/concepts/the-cancer-journals.html +++ b/concepts/the-cancer-journals.html @@ -11,12 +11,12 @@ The Cancer Journals - + - + @@ -375,7 +375,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/the-death-of-cancer-book.html b/concepts/the-death-of-cancer-book.html index 160d9734cf..6e1e5b7997 100644 --- a/concepts/the-death-of-cancer-book.html +++ b/concepts/the-death-of-cancer-book.html @@ -11,12 +11,12 @@ The Death of Cancer: After Fifty Years on the Front Lines of Medicine, a Pioneering Oncologist Reveals Why the War on Cancer Is Winnable--and How We Can Get There - + - + @@ -376,7 +376,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/the-dog-cancer-survival-guide.html b/concepts/the-dog-cancer-survival-guide.html index bdee189dc0..eadb98a141 100644 --- a/concepts/the-dog-cancer-survival-guide.html +++ b/concepts/the-dog-cancer-survival-guide.html @@ -11,12 +11,12 @@ The Dog Cancer Survival Guide - + - + @@ -377,7 +377,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/the-eden-prescription-book.html b/concepts/the-eden-prescription-book.html index a72a3eb563..0489e7787c 100644 --- a/concepts/the-eden-prescription-book.html +++ b/concepts/the-eden-prescription-book.html @@ -11,12 +11,12 @@ The Eden Prescription: The war on cancer is not what you think... - + - + @@ -377,7 +377,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/the-effects-of-herbs-and-fruits-on-leukaemia.html b/concepts/the-effects-of-herbs-and-fruits-on-leukaemia.html index 0d10c05f6b..1ad87642cb 100644 --- a/concepts/the-effects-of-herbs-and-fruits-on-leukaemia.html +++ b/concepts/the-effects-of-herbs-and-fruits-on-leukaemia.html @@ -11,12 +11,12 @@ The Effects of Herbs and Fruits on Leukaemia - + - + @@ -379,7 +379,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/the-hope-foundation.html b/concepts/the-hope-foundation.html index 644bf8e76c..eb4d1a0691 100644 --- a/concepts/the-hope-foundation.html +++ b/concepts/the-hope-foundation.html @@ -11,12 +11,12 @@ The Hope Foundation For Cancer Research - + - + @@ -387,7 +387,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/the-hyve.html b/concepts/the-hyve.html index d8a1ae2b6e..d2615f5c5f 100644 --- a/concepts/the-hyve.html +++ b/concepts/the-hyve.html @@ -11,12 +11,12 @@ The Hyve - + - + @@ -384,7 +384,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/the-immortal-life-of-henrietta-lacks.html b/concepts/the-immortal-life-of-henrietta-lacks.html index b6c7b07226..1d484cbd39 100644 --- a/concepts/the-immortal-life-of-henrietta-lacks.html +++ b/concepts/the-immortal-life-of-henrietta-lacks.html @@ -11,12 +11,12 @@ The Immortal Life of Henrietta Lacks - + - + @@ -375,7 +375,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/the-jackson-laboratory-cancer-center.html b/concepts/the-jackson-laboratory-cancer-center.html index d75fc82416..e96fff39b1 100644 --- a/concepts/the-jackson-laboratory-cancer-center.html +++ b/concepts/the-jackson-laboratory-cancer-center.html @@ -11,12 +11,12 @@ The Jackson Laboratory Cancer Center - + - + @@ -385,7 +385,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/the-lancet-oncology.html b/concepts/the-lancet-oncology.html index d0e31a9eb7..a8c718f0b1 100644 --- a/concepts/the-lancet-oncology.html +++ b/concepts/the-lancet-oncology.html @@ -11,12 +11,12 @@ The Lancet Oncology - + - + @@ -377,7 +377,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/the-metabolic-approach-to-cancer.html b/concepts/the-metabolic-approach-to-cancer.html index 9529eea021..bb98a37873 100644 --- a/concepts/the-metabolic-approach-to-cancer.html +++ b/concepts/the-metabolic-approach-to-cancer.html @@ -11,12 +11,12 @@ The Metabolic Approach to Cancer - + - + @@ -377,7 +377,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/the-ohio-state-university-comprehensive-cancer-center.html b/concepts/the-ohio-state-university-comprehensive-cancer-center.html index add08c2dc3..e6822c6781 100644 --- a/concepts/the-ohio-state-university-comprehensive-cancer-center.html +++ b/concepts/the-ohio-state-university-comprehensive-cancer-center.html @@ -11,12 +11,12 @@ The Ohio State University Comprehensive Cancer Center - + - + @@ -387,7 +387,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/the-skin-cancer-foundation.html b/concepts/the-skin-cancer-foundation.html index 77efd08697..8cdc6970c5 100644 --- a/concepts/the-skin-cancer-foundation.html +++ b/concepts/the-skin-cancer-foundation.html @@ -11,12 +11,12 @@ The Skin Cancer Foundation - + - + @@ -388,7 +388,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/the-truth-about-cancer.html b/concepts/the-truth-about-cancer.html index 507fafabe1..5afaf8533f 100644 --- a/concepts/the-truth-about-cancer.html +++ b/concepts/the-truth-about-cancer.html @@ -11,12 +11,12 @@ The Truth About Cancer - + - + @@ -386,7 +386,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/the-truth-in-small-doses-book.html b/concepts/the-truth-in-small-doses-book.html index a00761f6da..0fd35b3bbc 100644 --- a/concepts/the-truth-in-small-doses-book.html +++ b/concepts/the-truth-in-small-doses-book.html @@ -11,12 +11,12 @@ The Truth in Small Doses: Why We're Losing the War on Cancer-and How to Win It - + - + @@ -376,7 +376,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/the-university-of-chicago-comprehensive-cancer-center.html b/concepts/the-university-of-chicago-comprehensive-cancer-center.html index 664616ab54..efb2cb0c69 100644 --- a/concepts/the-university-of-chicago-comprehensive-cancer-center.html +++ b/concepts/the-university-of-chicago-comprehensive-cancer-center.html @@ -11,12 +11,12 @@ The University of Chicago Comprehensive Cancer Center - + - + @@ -385,7 +385,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/the-university-of-kansas-cancer-center.html b/concepts/the-university-of-kansas-cancer-center.html index f6a6eb9121..870c8ea16b 100644 --- a/concepts/the-university-of-kansas-cancer-center.html +++ b/concepts/the-university-of-kansas-cancer-center.html @@ -11,12 +11,12 @@ The University of Kansas Cancer Center - + - + @@ -390,7 +390,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/the-wistar-institute-cancer-center.html b/concepts/the-wistar-institute-cancer-center.html index 7bbf121bca..dd81c38fef 100644 --- a/concepts/the-wistar-institute-cancer-center.html +++ b/concepts/the-wistar-institute-cancer-center.html @@ -11,12 +11,12 @@ The Wistar Institute Cancer Center - + - + @@ -386,7 +386,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/therapy-related-acute-myeloid-leukemia.html b/concepts/therapy-related-acute-myeloid-leukemia.html index c1da500bfc..6f3ab433fb 100644 --- a/concepts/therapy-related-acute-myeloid-leukemia.html +++ b/concepts/therapy-related-acute-myeloid-leukemia.html @@ -11,12 +11,12 @@ Therapy-Related Acute Myeloid Leukemia - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/therapy-related-myelodysplastic-syndrome.html b/concepts/therapy-related-myelodysplastic-syndrome.html index 2ab292cecb..663938f066 100644 --- a/concepts/therapy-related-myelodysplastic-syndrome.html +++ b/concepts/therapy-related-myelodysplastic-syndrome.html @@ -11,12 +11,12 @@ Therapy-Related Myelodysplastic Syndrome - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/therapy-related-myeloid-neoplasms.html b/concepts/therapy-related-myeloid-neoplasms.html index 58aaf41a44..e1bcf935d2 100644 --- a/concepts/therapy-related-myeloid-neoplasms.html +++ b/concepts/therapy-related-myeloid-neoplasms.html @@ -11,12 +11,12 @@ Therapy-Related Myeloid Neoplasms - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/thiotepa.html b/concepts/thiotepa.html index ab07047315..817e6894c8 100644 --- a/concepts/thiotepa.html +++ b/concepts/thiotepa.html @@ -11,12 +11,12 @@ Thiotepa - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/thymic-carcinoma.html b/concepts/thymic-carcinoma.html index 815e68971e..bda794c27e 100644 --- a/concepts/thymic-carcinoma.html +++ b/concepts/thymic-carcinoma.html @@ -11,12 +11,12 @@ Thymic Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/thymic-epithelial-tumor.html b/concepts/thymic-epithelial-tumor.html index 102eb837a9..3db654e971 100644 --- a/concepts/thymic-epithelial-tumor.html +++ b/concepts/thymic-epithelial-tumor.html @@ -11,12 +11,12 @@ Thymic Epithelial Tumor - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/thymic-neuroendocrine-tumor.html b/concepts/thymic-neuroendocrine-tumor.html index de5de5369d..9125bb9738 100644 --- a/concepts/thymic-neuroendocrine-tumor.html +++ b/concepts/thymic-neuroendocrine-tumor.html @@ -11,12 +11,12 @@ Thymic Neuroendocrine Tumor - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/thymoma.html b/concepts/thymoma.html index 4658b62f9f..aa0b50d6e0 100644 --- a/concepts/thymoma.html +++ b/concepts/thymoma.html @@ -11,12 +11,12 @@ Thymoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/thymus.html b/concepts/thymus.html index 7dcf5c29d7..d78aca6897 100644 --- a/concepts/thymus.html +++ b/concepts/thymus.html @@ -11,12 +11,12 @@ Thymus Cancer - + - + @@ -387,7 +387,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/thyroid-cancer-subreddit.html b/concepts/thyroid-cancer-subreddit.html index ae4b3ea31b..3ce90b10e6 100644 --- a/concepts/thyroid-cancer-subreddit.html +++ b/concepts/thyroid-cancer-subreddit.html @@ -11,12 +11,12 @@ Thyroid Cancer Subreddit - + - + @@ -377,7 +377,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/thyroid.html b/concepts/thyroid.html index 106defed51..fc65159806 100644 --- a/concepts/thyroid.html +++ b/concepts/thyroid.html @@ -11,12 +11,12 @@ Thyroid Cancer - + - + @@ -430,7 +430,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/thyroidectomy.html b/concepts/thyroidectomy.html index cececbb5e5..5b7e82c7f9 100644 --- a/concepts/thyroidectomy.html +++ b/concepts/thyroidectomy.html @@ -11,12 +11,12 @@ Thyroidectomy - + - + @@ -376,7 +376,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/tioguanine.html b/concepts/tioguanine.html index fa8f05464c..5ce7b4fa72 100644 --- a/concepts/tioguanine.html +++ b/concepts/tioguanine.html @@ -11,12 +11,12 @@ Tioguanine - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/tisch-cancer-institute.html b/concepts/tisch-cancer-institute.html index fdb2b2eda1..09da7724a0 100644 --- a/concepts/tisch-cancer-institute.html +++ b/concepts/tisch-cancer-institute.html @@ -11,12 +11,12 @@ Tisch Cancer Institute - + - + @@ -384,7 +384,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/tlcr-dz.html b/concepts/tlcr-dz.html index fb53e8b721..e36040ccef 100644 --- a/concepts/tlcr-dz.html +++ b/concepts/tlcr-dz.html @@ -11,12 +11,12 @@ TLCR - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/tocr-dz.html b/concepts/tocr-dz.html index 96881d52a9..3e4cac383a 100644 --- a/concepts/tocr-dz.html +++ b/concepts/tocr-dz.html @@ -11,12 +11,12 @@ TOCR - + - + @@ -379,7 +379,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/topical-medication.html b/concepts/topical-medication.html index 403a9bb825..5eead7cb4a 100644 --- a/concepts/topical-medication.html +++ b/concepts/topical-medication.html @@ -11,12 +11,12 @@ Topical medication - + - + @@ -375,7 +375,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/topotecan.html b/concepts/topotecan.html index 43eb1df412..f321d3935b 100644 --- a/concepts/topotecan.html +++ b/concepts/topotecan.html @@ -11,12 +11,12 @@ Topotecan - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/toxin-avoidance.html b/concepts/toxin-avoidance.html index 1362f25dc8..dc2d641905 100644 --- a/concepts/toxin-avoidance.html +++ b/concepts/toxin-avoidance.html @@ -11,12 +11,12 @@ Toxin Advoidance - + - + @@ -373,7 +373,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/transarterial-chemoembolization.html b/concepts/transarterial-chemoembolization.html index a20a627f5e..f964ff940e 100644 --- a/concepts/transarterial-chemoembolization.html +++ b/concepts/transarterial-chemoembolization.html @@ -11,12 +11,12 @@ Transarterial Chemoembolization - + - + @@ -376,7 +376,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/transarterial-embolization.html b/concepts/transarterial-embolization.html index 7fd4a35af2..89f0b21127 100644 --- a/concepts/transarterial-embolization.html +++ b/concepts/transarterial-embolization.html @@ -11,12 +11,12 @@ Transarterial Embolization - + - + @@ -377,7 +377,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/transient-abnormal-myelopoiesis.html b/concepts/transient-abnormal-myelopoiesis.html index 94eecb0faa..0f7e0dbea9 100644 --- a/concepts/transient-abnormal-myelopoiesis.html +++ b/concepts/transient-abnormal-myelopoiesis.html @@ -11,12 +11,12 @@ Transient Abnormal Myelopoiesis - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/translocation-associated-renal-cell-carcinoma.html b/concepts/translocation-associated-renal-cell-carcinoma.html index e4a4fc2a02..e39380bb7f 100644 --- a/concepts/translocation-associated-renal-cell-carcinoma.html +++ b/concepts/translocation-associated-renal-cell-carcinoma.html @@ -11,12 +11,12 @@ Translocation-Associated Renal Cell Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/treosulfan.html b/concepts/treosulfan.html index 8cf539b611..c71779c968 100644 --- a/concepts/treosulfan.html +++ b/concepts/treosulfan.html @@ -11,12 +11,12 @@ Treosulfan - + - + @@ -381,7 +381,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/tretinoin.html b/concepts/tretinoin.html index d51ec82627..c68d705698 100644 --- a/concepts/tretinoin.html +++ b/concepts/tretinoin.html @@ -11,12 +11,12 @@ Tretinoin - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/triaziquone.html b/concepts/triaziquone.html index 2a99d859f2..0c0b9fb5e9 100644 --- a/concepts/triaziquone.html +++ b/concepts/triaziquone.html @@ -11,12 +11,12 @@ Triaziquone - + - + @@ -378,7 +378,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/triethylenemelamine.html b/concepts/triethylenemelamine.html index 0c27728d13..c657dac943 100644 --- a/concepts/triethylenemelamine.html +++ b/concepts/triethylenemelamine.html @@ -11,12 +11,12 @@ Triethylenemelamine - + - + @@ -378,7 +378,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/trofosfamide.html b/concepts/trofosfamide.html index e74e7e3b3f..fee443abb9 100644 --- a/concepts/trofosfamide.html +++ b/concepts/trofosfamide.html @@ -11,12 +11,12 @@ Trofosfamide - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/tubular-adenoma-of-the-colon.html b/concepts/tubular-adenoma-of-the-colon.html index a12d469b93..2cfdc60db7 100644 --- a/concepts/tubular-adenoma-of-the-colon.html +++ b/concepts/tubular-adenoma-of-the-colon.html @@ -11,12 +11,12 @@ Tubular Adenoma of the Colon - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/tubular-stomach-adenocarcinoma.html b/concepts/tubular-stomach-adenocarcinoma.html index 857be2eae6..94db9f7902 100644 --- a/concepts/tubular-stomach-adenocarcinoma.html +++ b/concepts/tubular-stomach-adenocarcinoma.html @@ -11,12 +11,12 @@ Tubular Stomach Adenocarcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/uc-davis-comprehensive-cancer-center.html b/concepts/uc-davis-comprehensive-cancer-center.html index f7db8a02a5..558d93811c 100644 --- a/concepts/uc-davis-comprehensive-cancer-center.html +++ b/concepts/uc-davis-comprehensive-cancer-center.html @@ -11,12 +11,12 @@ UC Davis Comprehensive Cancer Center - + - + @@ -386,7 +386,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/uccc.html b/concepts/uccc.html index 80db5cfcbb..586f98d0a3 100644 --- a/concepts/uccc.html +++ b/concepts/uccc.html @@ -11,12 +11,12 @@ UCCC - + - + @@ -379,7 +379,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/ucsf-helen-diller-family-comprehensive-cancer-center.html b/concepts/ucsf-helen-diller-family-comprehensive-cancer-center.html index 979c637273..a0eacf9ac6 100644 --- a/concepts/ucsf-helen-diller-family-comprehensive-cancer-center.html +++ b/concepts/ucsf-helen-diller-family-comprehensive-cancer-center.html @@ -11,12 +11,12 @@ UCSF Helen Diller Family Comprehensive Cancer Center - + - + @@ -386,7 +386,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/ue-lifesciences.html b/concepts/ue-lifesciences.html index a667a18052..1a34eab8cf 100644 --- a/concepts/ue-lifesciences.html +++ b/concepts/ue-lifesciences.html @@ -11,12 +11,12 @@ UE LifeSciences - + - + @@ -381,7 +381,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/uicc.html b/concepts/uicc.html index e6e4533502..845de5cf98 100644 --- a/concepts/uicc.html +++ b/concepts/uicc.html @@ -11,12 +11,12 @@ UICC - + - + @@ -386,7 +386,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/umls.html b/concepts/umls.html index c987f1c57f..1459548dac 100644 --- a/concepts/umls.html +++ b/concepts/umls.html @@ -11,12 +11,12 @@ Unified Medical Language System - + - + @@ -378,7 +378,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/un.html b/concepts/un.html index 683cd679ff..7f828eb075 100644 --- a/concepts/un.html +++ b/concepts/un.html @@ -11,12 +11,12 @@ United Nations - + - + @@ -379,7 +379,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/unc-lineberger-comprehensive-cancer-center.html b/concepts/unc-lineberger-comprehensive-cancer-center.html index cbd6e4b653..47b8a56b50 100644 --- a/concepts/unc-lineberger-comprehensive-cancer-center.html +++ b/concepts/unc-lineberger-comprehensive-cancer-center.html @@ -11,12 +11,12 @@ UNC Lineberger Comprehensive Cancer Center - + - + @@ -389,7 +389,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/unclassified-renal-cell-carcinoma.html b/concepts/unclassified-renal-cell-carcinoma.html index 6662cc444b..d7309f5564 100644 --- a/concepts/unclassified-renal-cell-carcinoma.html +++ b/concepts/unclassified-renal-cell-carcinoma.html @@ -11,12 +11,12 @@ Unclassified Renal Cell Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/undifferentiated-carcinoma-of-the-pancreas.html b/concepts/undifferentiated-carcinoma-of-the-pancreas.html index 1c017bf9e8..bd3e5591b4 100644 --- a/concepts/undifferentiated-carcinoma-of-the-pancreas.html +++ b/concepts/undifferentiated-carcinoma-of-the-pancreas.html @@ -11,12 +11,12 @@ Undifferentiated Carcinoma of the Pancreas - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/undifferentiated-embryonal-sarcoma-of-the-liver.html b/concepts/undifferentiated-embryonal-sarcoma-of-the-liver.html index 2321a6ebbc..b74bda9540 100644 --- a/concepts/undifferentiated-embryonal-sarcoma-of-the-liver.html +++ b/concepts/undifferentiated-embryonal-sarcoma-of-the-liver.html @@ -11,12 +11,12 @@ Undifferentiated Embryonal Sarcoma of the Liver - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/undifferentiated-malignant-neoplasm.html b/concepts/undifferentiated-malignant-neoplasm.html index 27447ea669..a419434053 100644 --- a/concepts/undifferentiated-malignant-neoplasm.html +++ b/concepts/undifferentiated-malignant-neoplasm.html @@ -11,12 +11,12 @@ Undifferentiated Malignant Neoplasm - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/undifferentiated-pleomorphic-sarcoma-malignant-fibrous-histiocytoma-high-grade-spindle-cell-sarcoma.html b/concepts/undifferentiated-pleomorphic-sarcoma-malignant-fibrous-histiocytoma-high-grade-spindle-cell-sarcoma.html index b177b15b60..0061ce22e6 100644 --- a/concepts/undifferentiated-pleomorphic-sarcoma-malignant-fibrous-histiocytoma-high-grade-spindle-cell-sarcoma.html +++ b/concepts/undifferentiated-pleomorphic-sarcoma-malignant-fibrous-histiocytoma-high-grade-spindle-cell-sarcoma.html @@ -11,12 +11,12 @@ Undifferentiated Pleomorphic Sarcoma/Malignant Fibrous Histiocytoma/High-Grade Spindle Cell Sarcoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/undifferentiated-stomach-adenocarcinoma.html b/concepts/undifferentiated-stomach-adenocarcinoma.html index 1b37961927..0095dc3cb0 100644 --- a/concepts/undifferentiated-stomach-adenocarcinoma.html +++ b/concepts/undifferentiated-stomach-adenocarcinoma.html @@ -11,12 +11,12 @@ Undifferentiated Stomach Adenocarcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/undifferentiated-uterine-sarcoma.html b/concepts/undifferentiated-uterine-sarcoma.html index 44c6be3dd0..4a04501480 100644 --- a/concepts/undifferentiated-uterine-sarcoma.html +++ b/concepts/undifferentiated-uterine-sarcoma.html @@ -11,12 +11,12 @@ Undifferentiated Uterine Sarcoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/unicancer.html b/concepts/unicancer.html index 36d7cd1ea2..b8d9fd7dbc 100644 --- a/concepts/unicancer.html +++ b/concepts/unicancer.html @@ -11,12 +11,12 @@ Unicancer - + - + @@ -384,7 +384,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/university-of-colorado-cancer-center.html b/concepts/university-of-colorado-cancer-center.html index 3ddc733c02..a0f1110411 100644 --- a/concepts/university-of-colorado-cancer-center.html +++ b/concepts/university-of-colorado-cancer-center.html @@ -11,12 +11,12 @@ University of Colorado Cancer Center - + - + @@ -384,7 +384,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/university-of-hawaii-cancer-center.html b/concepts/university-of-hawaii-cancer-center.html index a3e93e4ac9..9819d56b1c 100644 --- a/concepts/university-of-hawaii-cancer-center.html +++ b/concepts/university-of-hawaii-cancer-center.html @@ -11,12 +11,12 @@ University of Hawaii Cancer Center - + - + @@ -391,7 +391,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/university-of-maryland-marlene-and-stewart-greenebaum-comprehensive-cancer-center.html b/concepts/university-of-maryland-marlene-and-stewart-greenebaum-comprehensive-cancer-center.html index d2224c7c2d..55fb18c73a 100644 --- a/concepts/university-of-maryland-marlene-and-stewart-greenebaum-comprehensive-cancer-center.html +++ b/concepts/university-of-maryland-marlene-and-stewart-greenebaum-comprehensive-cancer-center.html @@ -11,12 +11,12 @@ University of Maryland Marlene and Stewart Greenebaum Comprehensive Cancer Center - + - + @@ -388,7 +388,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/university-of-michigan-rogel-cancer-center.html b/concepts/university-of-michigan-rogel-cancer-center.html index 36a482d8d2..38b21c962f 100644 --- a/concepts/university-of-michigan-rogel-cancer-center.html +++ b/concepts/university-of-michigan-rogel-cancer-center.html @@ -11,12 +11,12 @@ University of Michigan Rogel Cancer Center - + - + @@ -385,7 +385,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/university-of-new-mexico-cancer-research-and-treatment-center.html b/concepts/university-of-new-mexico-cancer-research-and-treatment-center.html index e763bcf746..7194fbce96 100644 --- a/concepts/university-of-new-mexico-cancer-research-and-treatment-center.html +++ b/concepts/university-of-new-mexico-cancer-research-and-treatment-center.html @@ -11,12 +11,12 @@ University of New Mexico Cancer Research and Treatment Center - + - + @@ -385,7 +385,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/university-of-virginia-cancer-center.html b/concepts/university-of-virginia-cancer-center.html index 59338dae09..e36625187d 100644 --- a/concepts/university-of-virginia-cancer-center.html +++ b/concepts/university-of-virginia-cancer-center.html @@ -11,12 +11,12 @@ University of Virginia Cancer Center - + - + @@ -384,7 +384,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/university-of-wisconsin-carbone-cancer-center.html b/concepts/university-of-wisconsin-carbone-cancer-center.html index 664f8091f9..39b6c8b9e4 100644 --- a/concepts/university-of-wisconsin-carbone-cancer-center.html +++ b/concepts/university-of-wisconsin-carbone-cancer-center.html @@ -11,12 +11,12 @@ University of Wisconsin Carbone Cancer Center - + - + @@ -388,7 +388,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/upmc-hillman-cancer-center.html b/concepts/upmc-hillman-cancer-center.html index fad647f6da..d2a3bad1de 100644 --- a/concepts/upmc-hillman-cancer-center.html +++ b/concepts/upmc-hillman-cancer-center.html @@ -11,12 +11,12 @@ UPMC Hillman Cancer Center - + - + @@ -385,7 +385,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/upper-tract-urothelial-carcinoma.html b/concepts/upper-tract-urothelial-carcinoma.html index cbb5d4e2f7..35ed572b4f 100644 --- a/concepts/upper-tract-urothelial-carcinoma.html +++ b/concepts/upper-tract-urothelial-carcinoma.html @@ -11,12 +11,12 @@ Upper Tract Urothelial Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/urachal-adenocarcinoma.html b/concepts/urachal-adenocarcinoma.html index 5d3b74917d..3460a99b30 100644 --- a/concepts/urachal-adenocarcinoma.html +++ b/concepts/urachal-adenocarcinoma.html @@ -11,12 +11,12 @@ Urachal Adenocarcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/urachal-carcinoma.html b/concepts/urachal-carcinoma.html index 7a3d5c2897..fb9dc801c5 100644 --- a/concepts/urachal-carcinoma.html +++ b/concepts/urachal-carcinoma.html @@ -11,12 +11,12 @@ Urachal Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/uramustine.html b/concepts/uramustine.html index a80cd6c7b9..0e26ecd7ef 100644 --- a/concepts/uramustine.html +++ b/concepts/uramustine.html @@ -11,12 +11,12 @@ Uramustine - + - + @@ -379,7 +379,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/urethral-adenocarcinoma.html b/concepts/urethral-adenocarcinoma.html index 3773de4c3c..397ddcae62 100644 --- a/concepts/urethral-adenocarcinoma.html +++ b/concepts/urethral-adenocarcinoma.html @@ -11,12 +11,12 @@ Urethral Adenocarcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/urethral-cancer.html b/concepts/urethral-cancer.html index 216a1686d4..d1aa1e618d 100644 --- a/concepts/urethral-cancer.html +++ b/concepts/urethral-cancer.html @@ -11,12 +11,12 @@ Urethral Cancer - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/urethral-squamous-cell-carcinoma.html b/concepts/urethral-squamous-cell-carcinoma.html index bcfcab61ca..a161e444b8 100644 --- a/concepts/urethral-squamous-cell-carcinoma.html +++ b/concepts/urethral-squamous-cell-carcinoma.html @@ -11,12 +11,12 @@ Urethral Squamous Cell Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/urethral-urothelial-carcinoma.html b/concepts/urethral-urothelial-carcinoma.html index 08c99d5748..7e5f1d23ca 100644 --- a/concepts/urethral-urothelial-carcinoma.html +++ b/concepts/urethral-urothelial-carcinoma.html @@ -11,12 +11,12 @@ Urethral Urothelial Carcinoma - + - + @@ -381,7 +381,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/urothelial-papilloma.html b/concepts/urothelial-papilloma.html index 83cbc24102..ec8fb19644 100644 --- a/concepts/urothelial-papilloma.html +++ b/concepts/urothelial-papilloma.html @@ -11,12 +11,12 @@ Urothelial Papilloma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/usc-norris-comprehensive-cancer-center.html b/concepts/usc-norris-comprehensive-cancer-center.html index 38a8dcce30..f311338436 100644 --- a/concepts/usc-norris-comprehensive-cancer-center.html +++ b/concepts/usc-norris-comprehensive-cancer-center.html @@ -11,12 +11,12 @@ USC Norris Comprehensive Cancer Center - + - + @@ -389,7 +389,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/uscs.html b/concepts/uscs.html index c4690226f4..2bd7832f6f 100644 --- a/concepts/uscs.html +++ b/concepts/uscs.html @@ -11,12 +11,12 @@ USCS - + - + @@ -377,7 +377,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/uterine-adenosarcoma.html b/concepts/uterine-adenosarcoma.html index 941319c57e..f2fb5ceee4 100644 --- a/concepts/uterine-adenosarcoma.html +++ b/concepts/uterine-adenosarcoma.html @@ -11,12 +11,12 @@ Uterine Adenosarcoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/uterine-adenosquamous-carcinoma.html b/concepts/uterine-adenosquamous-carcinoma.html index 4c7c0a5485..53301838f6 100644 --- a/concepts/uterine-adenosquamous-carcinoma.html +++ b/concepts/uterine-adenosquamous-carcinoma.html @@ -11,12 +11,12 @@ Uterine Adenosquamous Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/uterine-carcinosarcoma-uterine-malignant-mixed-mullerian-tumor.html b/concepts/uterine-carcinosarcoma-uterine-malignant-mixed-mullerian-tumor.html index 09d2351a81..dde189abd4 100644 --- a/concepts/uterine-carcinosarcoma-uterine-malignant-mixed-mullerian-tumor.html +++ b/concepts/uterine-carcinosarcoma-uterine-malignant-mixed-mullerian-tumor.html @@ -11,12 +11,12 @@ Uterine Carcinosarcoma/Uterine Malignant Mixed Mullerian Tumor - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/uterine-clear-cell-carcinoma.html b/concepts/uterine-clear-cell-carcinoma.html index 91d0e615e5..ff0759aeab 100644 --- a/concepts/uterine-clear-cell-carcinoma.html +++ b/concepts/uterine-clear-cell-carcinoma.html @@ -11,12 +11,12 @@ Uterine Clear Cell Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/uterine-dedifferentiated-carcinoma.html b/concepts/uterine-dedifferentiated-carcinoma.html index 12254c3e92..54e39fdba5 100644 --- a/concepts/uterine-dedifferentiated-carcinoma.html +++ b/concepts/uterine-dedifferentiated-carcinoma.html @@ -11,12 +11,12 @@ Uterine Dedifferentiated Carcinoma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/uterine-endometrioid-carcinoma.html b/concepts/uterine-endometrioid-carcinoma.html index 6d94fb720b..8378c31b1c 100644 --- a/concepts/uterine-endometrioid-carcinoma.html +++ b/concepts/uterine-endometrioid-carcinoma.html @@ -11,12 +11,12 @@ Uterine Endometrioid Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/uterine-epithelioid-leiomyosarcoma.html b/concepts/uterine-epithelioid-leiomyosarcoma.html index 24074a8e9f..da6c80f71d 100644 --- a/concepts/uterine-epithelioid-leiomyosarcoma.html +++ b/concepts/uterine-epithelioid-leiomyosarcoma.html @@ -11,12 +11,12 @@ Uterine Epithelioid Leiomyosarcoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/uterine-leiomyoma.html b/concepts/uterine-leiomyoma.html index 81891f496a..29e41018b5 100644 --- a/concepts/uterine-leiomyoma.html +++ b/concepts/uterine-leiomyoma.html @@ -11,12 +11,12 @@ Uterine Leiomyoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/uterine-leiomyosarcoma.html b/concepts/uterine-leiomyosarcoma.html index a83fed31a5..d7173e2c5e 100644 --- a/concepts/uterine-leiomyosarcoma.html +++ b/concepts/uterine-leiomyosarcoma.html @@ -11,12 +11,12 @@ Uterine Leiomyosarcoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/uterine-mesonephric-carcinoma.html b/concepts/uterine-mesonephric-carcinoma.html index 0ebe2a0915..d8b2a7e178 100644 --- a/concepts/uterine-mesonephric-carcinoma.html +++ b/concepts/uterine-mesonephric-carcinoma.html @@ -11,12 +11,12 @@ Uterine Mesonephric Carcinoma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/uterine-mixed-endometrial-carcinoma.html b/concepts/uterine-mixed-endometrial-carcinoma.html index 3148b8b213..cfaa00ac9b 100644 --- a/concepts/uterine-mixed-endometrial-carcinoma.html +++ b/concepts/uterine-mixed-endometrial-carcinoma.html @@ -11,12 +11,12 @@ Uterine Mixed Endometrial Carcinoma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/uterine-mucinous-carcinoma.html b/concepts/uterine-mucinous-carcinoma.html index d7f1cb9c06..15f5ffa60a 100644 --- a/concepts/uterine-mucinous-carcinoma.html +++ b/concepts/uterine-mucinous-carcinoma.html @@ -11,12 +11,12 @@ Uterine Mucinous Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/uterine-myxoid-leiomyosarcoma.html b/concepts/uterine-myxoid-leiomyosarcoma.html index b22da79db3..ee9268b0fb 100644 --- a/concepts/uterine-myxoid-leiomyosarcoma.html +++ b/concepts/uterine-myxoid-leiomyosarcoma.html @@ -11,12 +11,12 @@ Uterine Myxoid Leiomyosarcoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/uterine-neuroendocrine-carcinoma.html b/concepts/uterine-neuroendocrine-carcinoma.html index 9377aa6496..35637ca4ef 100644 --- a/concepts/uterine-neuroendocrine-carcinoma.html +++ b/concepts/uterine-neuroendocrine-carcinoma.html @@ -11,12 +11,12 @@ Uterine Neuroendocrine Carcinoma - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/uterine-perivascular-epithelioid-cell-tumor.html b/concepts/uterine-perivascular-epithelioid-cell-tumor.html index 5f75d39be1..aa3f23a0e1 100644 --- a/concepts/uterine-perivascular-epithelioid-cell-tumor.html +++ b/concepts/uterine-perivascular-epithelioid-cell-tumor.html @@ -11,12 +11,12 @@ Uterine Perivascular Epithelioid Cell Tumor - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/uterine-sarcoma-mesenchymal.html b/concepts/uterine-sarcoma-mesenchymal.html index 65ed503c98..e1f00d4afb 100644 --- a/concepts/uterine-sarcoma-mesenchymal.html +++ b/concepts/uterine-sarcoma-mesenchymal.html @@ -11,12 +11,12 @@ Uterine Sarcoma/Mesenchymal - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/uterine-sarcoma-other.html b/concepts/uterine-sarcoma-other.html index f2c29cd3e6..aebaeea6b2 100644 --- a/concepts/uterine-sarcoma-other.html +++ b/concepts/uterine-sarcoma-other.html @@ -11,12 +11,12 @@ Uterine Sarcoma, Other - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/uterine-serous-carcinoma-uterine-papillary-serous-carcinoma.html b/concepts/uterine-serous-carcinoma-uterine-papillary-serous-carcinoma.html index c3364b15ae..a88c1c390e 100644 --- a/concepts/uterine-serous-carcinoma-uterine-papillary-serous-carcinoma.html +++ b/concepts/uterine-serous-carcinoma-uterine-papillary-serous-carcinoma.html @@ -11,12 +11,12 @@ Uterine Serous Carcinoma/Uterine Papillary Serous Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/uterine-smooth-muscle-tumor-of-uncertain-malignant-potential.html b/concepts/uterine-smooth-muscle-tumor-of-uncertain-malignant-potential.html index 7dd6e3e300..e975f9bbdc 100644 --- a/concepts/uterine-smooth-muscle-tumor-of-uncertain-malignant-potential.html +++ b/concepts/uterine-smooth-muscle-tumor-of-uncertain-malignant-potential.html @@ -11,12 +11,12 @@ Uterine Smooth Muscle Tumor of Uncertain Malignant Potential - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/uterine-smooth-muscle-tumor.html b/concepts/uterine-smooth-muscle-tumor.html index ef1aca0d1e..bdc81ceecd 100644 --- a/concepts/uterine-smooth-muscle-tumor.html +++ b/concepts/uterine-smooth-muscle-tumor.html @@ -11,12 +11,12 @@ Uterine Smooth Muscle Tumor - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/uterine-undifferentiated-carcinoma.html b/concepts/uterine-undifferentiated-carcinoma.html index 1950491de2..57a104adfa 100644 --- a/concepts/uterine-undifferentiated-carcinoma.html +++ b/concepts/uterine-undifferentiated-carcinoma.html @@ -11,12 +11,12 @@ Uterine Undifferentiated Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/uterus.html b/concepts/uterus.html index ea3e5eba04..8d2186bcde 100644 --- a/concepts/uterus.html +++ b/concepts/uterus.html @@ -11,12 +11,12 @@ Uterine Cancer - + - + @@ -411,7 +411,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/uveal-melanoma.html b/concepts/uveal-melanoma.html index c007032afd..fcca774c0a 100644 --- a/concepts/uveal-melanoma.html +++ b/concepts/uveal-melanoma.html @@ -11,12 +11,12 @@ Uveal Melanoma - + - + @@ -384,7 +384,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/vacf.html b/concepts/vacf.html index 9c662a8644..d87234879c 100644 --- a/concepts/vacf.html +++ b/concepts/vacf.html @@ -11,12 +11,12 @@ VACF - + - + @@ -381,7 +381,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/vaginal-adenocarcinoma.html b/concepts/vaginal-adenocarcinoma.html index ca1d1a9895..b84dd56614 100644 --- a/concepts/vaginal-adenocarcinoma.html +++ b/concepts/vaginal-adenocarcinoma.html @@ -11,12 +11,12 @@ Vaginal Adenocarcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/valrubicin.html b/concepts/valrubicin.html index 1362c57209..9884c3febb 100644 --- a/concepts/valrubicin.html +++ b/concepts/valrubicin.html @@ -11,12 +11,12 @@ Valrubicin - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/vanderbilt-ingram-cancer-center.html b/concepts/vanderbilt-ingram-cancer-center.html index 6c37260b95..530c5ae32a 100644 --- a/concepts/vanderbilt-ingram-cancer-center.html +++ b/concepts/vanderbilt-ingram-cancer-center.html @@ -11,12 +11,12 @@ Vanderbilt-Ingram Cancer Center - + - + @@ -387,7 +387,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/vats.html b/concepts/vats.html index b63b5c8528..d40fc91a81 100644 --- a/concepts/vats.html +++ b/concepts/vats.html @@ -11,12 +11,12 @@ VATS - + - + @@ -376,7 +376,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/vcr-au.html b/concepts/vcr-au.html index 77c34520bd..83a28d6d37 100644 --- a/concepts/vcr-au.html +++ b/concepts/vcr-au.html @@ -11,12 +11,12 @@ VCR - + - + @@ -379,7 +379,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/veganism.html b/concepts/veganism.html index 44aef3b1e8..9607c98580 100644 --- a/concepts/veganism.html +++ b/concepts/veganism.html @@ -11,12 +11,12 @@ Veganism - + - + @@ -375,7 +375,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/vegetarianism.html b/concepts/vegetarianism.html index 25ba5cd379..1eb842fc5f 100644 --- a/concepts/vegetarianism.html +++ b/concepts/vegetarianism.html @@ -11,12 +11,12 @@ Vegetarianism - + - + @@ -375,7 +375,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/vemurafenib.html b/concepts/vemurafenib.html index 5b93fd2eb1..8612ecce18 100644 --- a/concepts/vemurafenib.html +++ b/concepts/vemurafenib.html @@ -11,12 +11,12 @@ Vemurafenib - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/verrucous-penile-squamous-cell-carcinoma.html b/concepts/verrucous-penile-squamous-cell-carcinoma.html index bde267e2bc..ca6a5896e5 100644 --- a/concepts/verrucous-penile-squamous-cell-carcinoma.html +++ b/concepts/verrucous-penile-squamous-cell-carcinoma.html @@ -11,12 +11,12 @@ Verrucous Penile Squamous Cell Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/viatris.html b/concepts/viatris.html index f93ad51e7f..6f688c22c2 100644 --- a/concepts/viatris.html +++ b/concepts/viatris.html @@ -11,12 +11,12 @@ Viatris - + - + @@ -385,7 +385,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/villoglandular-adenocarcinoma-of-the-cervix.html b/concepts/villoglandular-adenocarcinoma-of-the-cervix.html index f05f88df4b..cc0d5d045e 100644 --- a/concepts/villoglandular-adenocarcinoma-of-the-cervix.html +++ b/concepts/villoglandular-adenocarcinoma-of-the-cervix.html @@ -11,12 +11,12 @@ Villoglandular Adenocarcinoma of the Cervix - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/villoglandular-carcinoma.html b/concepts/villoglandular-carcinoma.html index b8d03ef9c8..e4f6946d53 100644 --- a/concepts/villoglandular-carcinoma.html +++ b/concepts/villoglandular-carcinoma.html @@ -11,12 +11,12 @@ Villoglandular Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/vinblastine.html b/concepts/vinblastine.html index 2e513f59d2..fae030a641 100644 --- a/concepts/vinblastine.html +++ b/concepts/vinblastine.html @@ -11,12 +11,12 @@ Vinblastine - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/vincristine.html b/concepts/vincristine.html index ae7f428f93..c95ca8db12 100644 --- a/concepts/vincristine.html +++ b/concepts/vincristine.html @@ -11,12 +11,12 @@ Vincristine - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/vindesine.html b/concepts/vindesine.html index 2e2b65078a..b7fd28024d 100644 --- a/concepts/vindesine.html +++ b/concepts/vindesine.html @@ -11,12 +11,12 @@ Vindesine - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/vinorelbine.html b/concepts/vinorelbine.html index 53695b4039..c334c2524a 100644 --- a/concepts/vinorelbine.html +++ b/concepts/vinorelbine.html @@ -11,12 +11,12 @@ Vinorelbine - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/vismodegib.html b/concepts/vismodegib.html index 142e19646f..ca107e93ce 100644 --- a/concepts/vismodegib.html +++ b/concepts/vismodegib.html @@ -11,12 +11,12 @@ Vismodegib - + - + @@ -381,7 +381,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/vitamin-a.html b/concepts/vitamin-a.html index e5c85a309f..f1313205cd 100644 --- a/concepts/vitamin-a.html +++ b/concepts/vitamin-a.html @@ -11,12 +11,12 @@ Vitamin A - + - + @@ -378,7 +378,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/vitamin-b.html b/concepts/vitamin-b.html index e76bd40b1f..1127f50916 100644 --- a/concepts/vitamin-b.html +++ b/concepts/vitamin-b.html @@ -11,12 +11,12 @@ Vitamin B - + - + @@ -375,7 +375,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/vitamin-c.html b/concepts/vitamin-c.html index 2dbe63b067..1dc491f7c0 100644 --- a/concepts/vitamin-c.html +++ b/concepts/vitamin-c.html @@ -11,12 +11,12 @@ Vitamin C - + - + @@ -384,7 +384,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/vitamin-d.html b/concepts/vitamin-d.html index 01bd62c498..0588081c15 100644 --- a/concepts/vitamin-d.html +++ b/concepts/vitamin-d.html @@ -11,12 +11,12 @@ Vitamin D - + - + @@ -375,7 +375,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/vorinostat.html b/concepts/vorinostat.html index 13f5316635..2041c971f6 100644 --- a/concepts/vorinostat.html +++ b/concepts/vorinostat.html @@ -11,12 +11,12 @@ Vorinostat - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/vulva-vagina.html b/concepts/vulva-vagina.html index 4261714cdb..94328eb1ce 100644 --- a/concepts/vulva-vagina.html +++ b/concepts/vulva-vagina.html @@ -11,12 +11,12 @@ Vulva and Vaginal Cancers - + - + @@ -388,7 +388,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/wacanreg.html b/concepts/wacanreg.html index 57aa7241e3..c4c05ff730 100644 --- a/concepts/wacanreg.html +++ b/concepts/wacanreg.html @@ -11,12 +11,12 @@ WACANREG - + - + @@ -379,7 +379,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/wake-forest-baptist-comprehensive-cancer-center.html b/concepts/wake-forest-baptist-comprehensive-cancer-center.html index 3e4b637e8c..60dbaa99e2 100644 --- a/concepts/wake-forest-baptist-comprehensive-cancer-center.html +++ b/concepts/wake-forest-baptist-comprehensive-cancer-center.html @@ -11,12 +11,12 @@ Wake Forest Baptist Comprehensive Cancer Center - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/waldenstrom-macroglobulinemia.html b/concepts/waldenstrom-macroglobulinemia.html index c9aed5e644..a8c0f0a5ec 100644 --- a/concepts/waldenstrom-macroglobulinemia.html +++ b/concepts/waldenstrom-macroglobulinemia.html @@ -11,12 +11,12 @@ Waldenstrom Macroglobulinemia - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/warty-penile-squamous-cell-carcinoma.html b/concepts/warty-penile-squamous-cell-carcinoma.html index ace6bdf699..0cb3660c64 100644 --- a/concepts/warty-penile-squamous-cell-carcinoma.html +++ b/concepts/warty-penile-squamous-cell-carcinoma.html @@ -11,12 +11,12 @@ Warty Penile Squamous Cell Carcinoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/wcrf-uk.html b/concepts/wcrf-uk.html index 8143195688..6f35819e0f 100644 --- a/concepts/wcrf-uk.html +++ b/concepts/wcrf-uk.html @@ -11,12 +11,12 @@ World Cancer Research Fund UK - + - + @@ -387,7 +387,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/wcrf.html b/concepts/wcrf.html index 4a0f0b1fe0..8510cb1992 100644 --- a/concepts/wcrf.html +++ b/concepts/wcrf.html @@ -11,12 +11,12 @@ WCRF - + - + @@ -388,7 +388,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/weight-loss.html b/concepts/weight-loss.html index fbcd35ad35..88c6a1e1f6 100644 --- a/concepts/weight-loss.html +++ b/concepts/weight-loss.html @@ -11,12 +11,12 @@ Weight loss - + - + @@ -375,7 +375,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/well-differentiated-liposarcoma.html b/concepts/well-differentiated-liposarcoma.html index 664260258a..0e757b0a88 100644 --- a/concepts/well-differentiated-liposarcoma.html +++ b/concepts/well-differentiated-liposarcoma.html @@ -11,12 +11,12 @@ Well-Differentiated Liposarcoma - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/well-differentiated-neuroendocrine-tumor-of-the-appendix.html b/concepts/well-differentiated-neuroendocrine-tumor-of-the-appendix.html index d5d86c7bf1..536644336e 100644 --- a/concepts/well-differentiated-neuroendocrine-tumor-of-the-appendix.html +++ b/concepts/well-differentiated-neuroendocrine-tumor-of-the-appendix.html @@ -11,12 +11,12 @@ Well-Differentiated Neuroendocrine Tumor of the Appendix - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/well-differentiated-neuroendocrine-tumor-of-the-rectum.html b/concepts/well-differentiated-neuroendocrine-tumor-of-the-rectum.html index 61c2b79999..fd076d429a 100644 --- a/concepts/well-differentiated-neuroendocrine-tumor-of-the-rectum.html +++ b/concepts/well-differentiated-neuroendocrine-tumor-of-the-rectum.html @@ -11,12 +11,12 @@ Well-Differentiated Neuroendocrine Tumor of the Rectum - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/well-differentiated-neuroendocrine-tumors-of-the-stomach.html b/concepts/well-differentiated-neuroendocrine-tumors-of-the-stomach.html index 8d90d43294..08eb659f67 100644 --- a/concepts/well-differentiated-neuroendocrine-tumors-of-the-stomach.html +++ b/concepts/well-differentiated-neuroendocrine-tumors-of-the-stomach.html @@ -11,12 +11,12 @@ Well-Differentiated Neuroendocrine Tumors of the Stomach - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/well-differentiated-thyroid-cancer.html b/concepts/well-differentiated-thyroid-cancer.html index eb90542ba4..855a348ed4 100644 --- a/concepts/well-differentiated-thyroid-cancer.html +++ b/concepts/well-differentiated-thyroid-cancer.html @@ -11,12 +11,12 @@ Well-Differentiated Thyroid Cancer - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/when-breath-becomes-air.html b/concepts/when-breath-becomes-air.html index 5e3fe7ae9b..1ed87b591d 100644 --- a/concepts/when-breath-becomes-air.html +++ b/concepts/when-breath-becomes-air.html @@ -11,12 +11,12 @@ When Breath Becomes Air - + - + @@ -375,7 +375,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/who.html b/concepts/who.html index 82fd924ea4..a98f6c6a37 100644 --- a/concepts/who.html +++ b/concepts/who.html @@ -11,12 +11,12 @@ World Health Organization - + - + @@ -377,7 +377,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/wilms-tumor.html b/concepts/wilms-tumor.html index 7b8afadafe..73c63115cd 100644 --- a/concepts/wilms-tumor.html +++ b/concepts/wilms-tumor.html @@ -11,12 +11,12 @@ Wilms' Tumor - + - + @@ -381,7 +381,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/wim-hof-method.html b/concepts/wim-hof-method.html index c8a682e71c..f4eafe0799 100644 --- a/concepts/wim-hof-method.html +++ b/concepts/wim-hof-method.html @@ -11,12 +11,12 @@ Wim Hof Method - + - + @@ -375,7 +375,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/winning-the-war-on-cancer-the-epic-journey-towards-a-natural-cure-book.html b/concepts/winning-the-war-on-cancer-the-epic-journey-towards-a-natural-cure-book.html index 98026703dd..9e56db183c 100644 --- a/concepts/winning-the-war-on-cancer-the-epic-journey-towards-a-natural-cure-book.html +++ b/concepts/winning-the-war-on-cancer-the-epic-journey-towards-a-natural-cure-book.html @@ -11,12 +11,12 @@ Winning the War on Cancer: The Epic Journey Towards a Natural Cure - + - + @@ -375,7 +375,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/winship-cancer-institute.html b/concepts/winship-cancer-institute.html index f462abe13d..3e4b40ac79 100644 --- a/concepts/winship-cancer-institute.html +++ b/concepts/winship-cancer-institute.html @@ -11,12 +11,12 @@ Winship Cancer Institute - + - + @@ -389,7 +389,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/wkof.html b/concepts/wkof.html index 85543c5824..f3a625bc01 100644 --- a/concepts/wkof.html +++ b/concepts/wkof.html @@ -11,12 +11,12 @@ WKOF - + - + @@ -381,7 +381,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/world-cancer-day.html b/concepts/world-cancer-day.html index f98c648e46..5c9daeb1f6 100644 --- a/concepts/world-cancer-day.html +++ b/concepts/world-cancer-day.html @@ -11,12 +11,12 @@ World Cancer Day - + - + @@ -384,7 +384,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/world-lymphoma-awareness-day.html b/concepts/world-lymphoma-awareness-day.html index 7ff5c19dea..0189f7707d 100644 --- a/concepts/world-lymphoma-awareness-day.html +++ b/concepts/world-lymphoma-awareness-day.html @@ -11,12 +11,12 @@ World Lymphoma Awareness Day - + - + @@ -377,7 +377,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/yale-cancer-center.html b/concepts/yale-cancer-center.html index 8cc8b39b4a..367568b713 100644 --- a/concepts/yale-cancer-center.html +++ b/concepts/yale-cancer-center.html @@ -11,12 +11,12 @@ Yale Cancer Center - + - + @@ -390,7 +390,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/yale-introduction-to-breast-cancer.html b/concepts/yale-introduction-to-breast-cancer.html index be8b75525c..55ba891e42 100644 --- a/concepts/yale-introduction-to-breast-cancer.html +++ b/concepts/yale-introduction-to-breast-cancer.html @@ -11,12 +11,12 @@ Introduction to Breast Cancer - + - + @@ -375,7 +375,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/yoga.html b/concepts/yoga.html index 98ca4b1aec..6175455073 100644 --- a/concepts/yoga.html +++ b/concepts/yoga.html @@ -11,12 +11,12 @@ Yoga - + - + @@ -375,7 +375,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/yolk-sac-tumor-cns-brain.html b/concepts/yolk-sac-tumor-cns-brain.html index 1912b6a3aa..6458ac8ae9 100644 --- a/concepts/yolk-sac-tumor-cns-brain.html +++ b/concepts/yolk-sac-tumor-cns-brain.html @@ -11,12 +11,12 @@ Yolk Sac Tumor CNS/Brain - + - + @@ -380,7 +380,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/yolk-sac-tumor-testis.html b/concepts/yolk-sac-tumor-testis.html index a8a93901a9..de2467982b 100644 --- a/concepts/yolk-sac-tumor-testis.html +++ b/concepts/yolk-sac-tumor-testis.html @@ -11,12 +11,12 @@ Yolk Sac Tumor Testis - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/yolk-sac-tumor-vulva-vagina.html b/concepts/yolk-sac-tumor-vulva-vagina.html index c11a70e273..c37d6b53c9 100644 --- a/concepts/yolk-sac-tumor-vulva-vagina.html +++ b/concepts/yolk-sac-tumor-vulva-vagina.html @@ -11,12 +11,12 @@ Yolk Sac Tumor Vulva/Vagina - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/yolk-sac-tumor.html b/concepts/yolk-sac-tumor.html index 7a59398127..cec4cf8766 100644 --- a/concepts/yolk-sac-tumor.html +++ b/concepts/yolk-sac-tumor.html @@ -11,12 +11,12 @@ Yolk Sac Tumor - + - + @@ -382,7 +382,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/your-disease-risk.html b/concepts/your-disease-risk.html index 1f384e3c6f..cdbf2f27b3 100644 --- a/concepts/your-disease-risk.html +++ b/concepts/your-disease-risk.html @@ -11,12 +11,12 @@ Your Disease Risk - + - + @@ -376,7 +376,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/zmncr-zm.html b/concepts/zmncr-zm.html index 2baa09ed84..1c103905ec 100644 --- a/concepts/zmncr-zm.html +++ b/concepts/zmncr-zm.html @@ -11,12 +11,12 @@ zmncr - + - + @@ -379,7 +379,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/zncr-zw.html b/concepts/zncr-zw.html index 9cfb31fe62..876480ecd8 100644 --- a/concepts/zncr-zw.html +++ b/concepts/zncr-zw.html @@ -11,12 +11,12 @@ zncr - + - + @@ -379,7 +379,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/concepts/zorubicin.html b/concepts/zorubicin.html index a8f36abe3d..1a81602653 100644 --- a/concepts/zorubicin.html +++ b/concepts/zorubicin.html @@ -11,12 +11,12 @@ Zorubicin - + - + @@ -377,7 +377,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/csv.html b/csv.html index 15369ada17..704356f441 100644 --- a/csv.html +++ b/csv.html @@ -3,12 +3,12 @@ CancerDB.CSV - + - + @@ -1450,7 +1450,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/download.html b/download.html index ec0f71fba1..3a50fb4a41 100644 --- a/download.html +++ b/download.html @@ -3,12 +3,12 @@ Download CancerDB - + - + @@ -364,7 +364,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/index.html b/index.html index 096cf9af5e..4f15516ca1 100644 --- a/index.html +++ b/index.html @@ -3,12 +3,12 @@ CancerDB - + - + @@ -365,7 +365,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/list.html b/list.html index d7a4f3f1fc..2d956782ca 100644 --- a/list.html +++ b/list.html @@ -3,12 +3,12 @@ CancerDB - All Concepts - + - + @@ -31837,7 +31837,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/node_modules/.package-lock.json b/node_modules/.package-lock.json index 17f58c3b42..de0ae83446 100644 --- a/node_modules/.package-lock.json +++ b/node_modules/.package-lock.json @@ -56,16 +56,16 @@ } }, "node_modules/scroll-cli": { - "version": "96.0.0", - "resolved": "https://registry.npmjs.org/scroll-cli/-/scroll-cli-96.0.0.tgz", - "integrity": "sha512-y8L/GKgVr9WteNWpObe26dStgj/tmS9HUDlW/DUceiRRtgt1j1QSQFk1eE7Bh5kMpalUPPJoLpvs7e7M5ONguA==", + "version": "97.0.0", + "resolved": "https://registry.npmjs.org/scroll-cli/-/scroll-cli-97.0.0.tgz", + "integrity": "sha512-TXn7S1aP6ulhHxn8X1RJ6W1BiYQwQl65IKajMlfe0MHlgAq5ghQ9f1SlXkdkrI8M7qnF+XjOJCD7pAt+ZnMqgg==", "dev": true, "dependencies": { "dayjs": "^1.11.7", "image-size": "^1.0.2", "lodash": "^4.17.21", "minimist": "^1.2.5", - "scrollsdk": "^79.0.0" + "scrollsdk": "^80.0.0" }, "bin": { "scroll": "scroll.js", @@ -75,19 +75,10 @@ "node": ">=16.0" } }, - "node_modules/scroll-cli/node_modules/scrollsdk": { - "version": "79.0.0", - "resolved": "https://registry.npmjs.org/scrollsdk/-/scrollsdk-79.0.0.tgz", - "integrity": "sha512-Eej9BCNNkgp3zo59m5NV+FAcIxpizjIEENvPq9wn/PLoLcNQvIGHirig5fqJyk6AwNaQZPbBE3g7gT6AIL+i5g==", - "dev": true, - "engines": { - "node": ">=16.0" - } - }, "node_modules/scrollsdk": { - "version": "78.0.0", - "resolved": "https://registry.npmjs.org/scrollsdk/-/scrollsdk-78.0.0.tgz", - "integrity": "sha512-p36V/A0xQ2/jmQyHoqh5RVm5KeogamYp5njEmcTKLEMkezJFMCgM1S9a5xx1mZka8kT/VxWwRPBuDm3j5tuLAg==", + "version": "80.0.0", + "resolved": "https://registry.npmjs.org/scrollsdk/-/scrollsdk-80.0.0.tgz", + "integrity": "sha512-DZ+ZM+WJx85vsWYJWJgsdr+shBDV9bvv4aaJ71fGtPH0HlzRGmC37cgv240DeWblhrNeSR0cINrnLeyc80aM5A==", "dev": true, "engines": { "node": ">=16.0" diff --git a/node_modules/scroll-cli/node_modules/scrollsdk/package.json b/node_modules/scroll-cli/node_modules/scrollsdk/package.json deleted file mode 100644 index 7b398ed980..0000000000 --- a/node_modules/scroll-cli/node_modules/scrollsdk/package.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "name": "scrollsdk", - "version": "79.0.0", - "description": "This npm package includes the Scroll Notation class, the Scroll Parser compiler-compiler, a Scroll IDE, and more, all implemented in TypeScript.", - "types": "./built/scrollsdk.node.d.ts", - "main": "./products/TreeNode.js", - "prettier": { - "parser": "babel", - "useTabs": false, - "tabWidth": 2, - "semi": false, - "printWidth": 240, - "trailingComma": "none", - "arrowParens": "avoid", - "quoteProps": "as-needed" - }, - "files": [ - "products/Disk.node.js", - "products/grammar.nodejs.js", - "products/GrammarCompiler.js", - "products/GrammarLanguage.js", - "products/hakon.nodejs.js", - "products/Path.js", - "products/stamp.nodejs.js", - "products/stump.nodejs.js", - "products/swarm.nodejs.js", - "products/TestRacer.js", - "products/TreeFileSystem.js", - "products/TreeNode.js", - "products/Utils.js" - ], - "engineStrict": true, - "engines": { - "node": ">=16.0" - }, - "scripts": { - "local": "node ./products/Kitchen.node.js", - "build": "./builder.ts produceAll; ./builder.ts produceAllLangs", - "updateVersion": "./builder.ts updateVersion", - "test": "ts-node builder.ts test", - "cloc": "cloc $(git ls-files | grep --extended-regexp --invert-match 'products|lib|package-lock')", - "checkLinks": "linkinator -r https://sdk.scroll.pub", - "coverage": "tap --cov --coverage-report=lcov ${__filename} test" - }, - "repository": { - "type": "git", - "url": "git://github.com/breck7/scrollsdk" - }, - "keywords": "scroll", - "devDependencies": { - "@types/codemirror": "^5.60.7", - "@types/glob": "^8.1.0", - "@types/node": "^18.15.11", - "ts-node": "^10.9.1", - "typescript": "^5.0.3", - "express": "^4.18.2", - "glob": "^9.3.4", - "prettier": "^2.8.7", - "superagent": "^8.0.9" - } -} \ No newline at end of file diff --git a/node_modules/scroll-cli/node_modules/scrollsdk/products/Disk.node.js b/node_modules/scroll-cli/node_modules/scrollsdk/products/Disk.node.js deleted file mode 100644 index 0a97d219c4..0000000000 --- a/node_modules/scroll-cli/node_modules/scrollsdk/products/Disk.node.js +++ /dev/null @@ -1,187 +0,0 @@ -var _a -const fs = require("fs") -const path = require("path") -class Disk {} -_a = Disk -Disk.getTreeNode = () => require("../products/TreeNode.js").TreeNode // todo: cleanup -Disk.rm = path => fs.unlinkSync(path) -Disk.getCleanedString = str => str.replace(/[\,\t\n]/g, " ") -Disk.makeExecutable = path => fs.chmodSync(path, 0o755) -Disk.strCount = (str, reg) => (str.match(new RegExp(reg, "gi")) || []).length -Disk.read = path => { - try { - return fs.readFileSync(path, "utf8") - } catch (err) { - console.error(`Error reading '$path'`) - throw err - } -} -Disk.touch = path => (Disk.exists(path) ? true : Disk.write(path, "")) -Disk.copy = (source, destination) => Disk.write(destination, Disk.read(source)) -Disk.mkdir = path => fs.mkdirSync(path, { recursive: true }) -Disk.getRecursive = path => Disk.recursiveReaddirSyncSimple(path) -Disk.readJson = path => JSON.parse(Disk.read(path)) -Disk.getFileNameWithoutExtension = filepath => path.parse(filepath).name -Disk.write = (path, content) => fs.writeFileSync(path, content, "utf8") -// Do not overwrite to preserve mtimes for cache -Disk.writeIfChanged = (filepath, content) => { - if (!Disk.exists(filepath) || Disk.read(filepath) !== content) Disk.write(filepath, content) -} -Disk.writeJson = (path, content) => fs.writeFileSync(path, JSON.stringify(content, null, 2), "utf8") -Disk.createFileIfDoesNotExist = (path, initialString = "") => { - if (!fs.existsSync(path)) Disk.write(path, initialString) -} -Disk.exists = path => fs.existsSync(path) -Disk.dir = dir => fs.readdirSync(dir).filter(file => file !== ".DS_Store") -Disk.getFullPaths = dir => Disk.dir(dir).map(file => path.join(dir, file)) -Disk.getFiles = dir => Disk.getFullPaths(dir).filter(file => fs.statSync(file).isFile()) -Disk.getFolders = dir => Disk.getFullPaths(dir).filter(file => fs.statSync(file).isDirectory()) -Disk.isDir = path => fs.statSync(path).isDirectory() -Disk.getFileName = fileName => path.parse(fileName).base -Disk.append = (path, content) => fs.appendFileSync(path, content, "utf8") -Disk.appendAsync = (path, content, callback) => fs.appendFile(path, content, "utf8", callback) -Disk.readCsvAsTree = path => Disk.getTreeNode().fromCsv(Disk.read(path)) -Disk.readSsvAsTree = path => Disk.getTreeNode().fromSsv(Disk.read(path)) -Disk.readTsvAsTree = path => Disk.getTreeNode().fromTsv(Disk.read(path)) -Disk.insertIntoFile = (path, content, delimiter) => Disk.write(path, Disk.stickBetween(content, Disk.read(path), delimiter)) -Disk.detectAndReadAsTree = path => Disk.detectDelimiterAndReadAsTree(Disk.read(path)) -Disk.getAllOf = (node, prop) => node.filter(node => node.getWord(0) === prop) -Disk.getDelimitedChildrenAsTree = (node, delimiter = undefined) => Disk.detectDelimiterAndReadAsTree(node.childrenToString()) -Disk.sleep = ms => new Promise(resolve => setTimeout(resolve, ms)) -Disk.readTree = path => new (Disk.getTreeNode())(Disk.read(path)) -Disk.sizeOf = path => fs.statSync(path).size -Disk.stripHtml = text => (text && text.replace ? text.replace(/<(?:.|\n)*?>/gm, "") : text) -Disk.stripParentheticals = text => (text && text.replace ? text.replace(/\((?:.|\n)*?\)/gm, "") : text) -Disk.escape = str => str.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&") -Disk.hasLine = (path, line) => Disk.read(path).includes(line) -Disk.mv = (source, dest) => { - if (Disk.exists(dest) && false) { - console.log(`${dest} exists. Skipping`) - } else { - Disk.write(dest, Disk.read(source)) - Disk.rm(source) - } -} -Disk.stickBetween = (content, dest, delimiter) => { - const parts = dest.split(delimiter) - return [parts[0], content, parts[2]].join(delimiter) -} -// todo: move to tree base class -Disk.detectDelimiterAndReadAsTree = str => { - const line1 = str.split("\n")[0] - const TreeNode = Disk.getTreeNode() - if (line1.includes("\t")) return TreeNode.fromTsv(str) - else if (line1.includes(",")) return TreeNode.fromCsv(str) - else if (line1.includes("|")) return TreeNode.fromDelimited(str, "|") - else if (line1.includes(";")) return TreeNode.fromDelimited(str, ";") - // todo: add more robust. align with choose delimiter - return TreeNode.fromSsv(str) -} -Disk.deleteDuplicates = (node, prop1, prop2, reverse = false) => { - const map = {} - Disk.getAllOf(node, prop1).forEach(node => { - const val = node.get(prop2) - console.log(val) - if (map[val] && reverse) { - map[val].destroy() - map[val] = node - } else if (map[val]) { - node.destroy() - } else map[val] = node - }) -} -// todo: remove. -Disk.getLastFolderName = path => { - const parts = path.replace(/\/$/, "").split("/") - const last = parts.pop() - return fs.statSync(path).isDirectory() ? last : parts.pop() -} -Disk.appendUniqueLine = (path, line) => { - const file = Disk.read(path) - if (file.match(new RegExp("^" + Disk.escape(line), "m"))) return true - const prefix = !file || file.endsWith("\n") ? "" : "\n" - return Disk.append(path, prefix + line + "\n") -} -Disk.move = (node, newPosition) => { - node.parent.insertLineAndChildren(node.getLine(), node.childrenToString(), newPosition) - node.destroy() -} -Disk._getTextUrl = async url => { - // todo: https://visionmedia.github.io/superagent/ - // build well tested version of this. - // have a mock server returning with all sorts of things. - const res = await Disk.getUrl(url) - // todo: leave it up to user to specfiy text ro body - return res.body || res.text || "" -} -Disk.getUrl = async url => { - const superagent = require("superagent") - const agent = superagent.agent() - const res = await agent.get(url) - return res -} -Disk.download = async (url, destination) => { - const result = await Disk._getTextUrl(url) - Disk.write(destination, result) -} -Disk.downloadPlain = async (url, destination) => { - const result = await Disk.getUrl(url) - Disk.write(destination, result.text) -} -Disk.downloadJson = async (url, destination) => { - const result = await Disk._getTextUrl(url) - if (destination) Disk.writeJson(destination, result) - return result -} -Disk.buildMapFrom = (tree, key, value) => { - const map = {} - tree.forEach(child => { - map[child.get(key)] = child.get(value) - }) - return map -} -Disk.csvToMap = (path, columnName) => { - const tree = Disk.readCsvAsTree(path) - const map = {} - tree.forEach(child => { - const key = child.get(columnName) - map[key] = child.toObject() - }) - return map -} -/** - * Take an object like {".gitignore" : "ignore/", "grammar/root.grammar": "foo"} - * and recreate on the filesystem as files and folders. Each key is 1 file. - * */ -Disk.writeObjectToDisk = (baseFolder, obj) => { - Object.keys(obj).forEach(filename => { - const filePath = path.join(baseFolder, filename) - if (filename.includes("/")) Disk.mkdir(path.dirname(filePath)) - if (!fs.existsSync(filePath)) Disk.writeIfChanged(filePath, obj[filename]) - }) -} -Disk.recursiveReaddirSyncSimple = filepath => { - let list = [] - const files = fs.readdirSync(filepath) - let stats - files.forEach(function (file) { - stats = fs.lstatSync(path.join(filepath, file)) - if (stats.isDirectory()) list = list.concat(Disk.recursiveReaddirSyncSimple(path.join(filepath, file))) - else list.push(path.join(filepath, file)) - }) - return list -} -Disk.recursiveReaddirSync = (folder, callback) => - fs.readdirSync(folder).forEach(filename => { - try { - const fullPath = path.join(folder, filename) - const isDir = fs.lstatSync(fullPath).isDirectory() - if (filename.includes("node_modules")) return // Do not recurse into node_modules folders - if (isDir) Disk.recursiveReaddirSync(fullPath, callback) - else callback(fullPath) - } catch (err) { - // Ignore errors - } - }) - -module.exports = { Disk } diff --git a/node_modules/scroll-cli/node_modules/scrollsdk/products/GrammarLanguage.js b/node_modules/scroll-cli/node_modules/scrollsdk/products/GrammarLanguage.js deleted file mode 100644 index f052a0b9d7..0000000000 --- a/node_modules/scroll-cli/node_modules/scrollsdk/products/GrammarLanguage.js +++ /dev/null @@ -1,2460 +0,0 @@ -const { Utils } = require("../products/Utils.js") -const { TreeNode, TreeWord, ExtendibleTreeNode, AbstractExtendibleTreeNode } = require("../products/TreeNode.js") -// Compiled language parsers will include these files: -const GlobalNamespaceAdditions = { - Utils: "Utils.js", - TreeNode: "TreeNode.js", - HandGrammarProgram: "GrammarLanguage.js", - GrammarBackedNode: "GrammarLanguage.js" -} -var GrammarConstantsCompiler -;(function (GrammarConstantsCompiler) { - GrammarConstantsCompiler["stringTemplate"] = "stringTemplate" - GrammarConstantsCompiler["indentCharacter"] = "indentCharacter" - GrammarConstantsCompiler["catchAllCellDelimiter"] = "catchAllCellDelimiter" - GrammarConstantsCompiler["openChildren"] = "openChildren" - GrammarConstantsCompiler["joinChildrenWith"] = "joinChildrenWith" - GrammarConstantsCompiler["closeChildren"] = "closeChildren" -})(GrammarConstantsCompiler || (GrammarConstantsCompiler = {})) -var GrammarConstantsMisc -;(function (GrammarConstantsMisc) { - GrammarConstantsMisc["doNotSynthesize"] = "doNotSynthesize" -})(GrammarConstantsMisc || (GrammarConstantsMisc = {})) -var PreludeCellTypeIds -;(function (PreludeCellTypeIds) { - PreludeCellTypeIds["anyCell"] = "anyCell" - PreludeCellTypeIds["keywordCell"] = "keywordCell" - PreludeCellTypeIds["extraWordCell"] = "extraWordCell" - PreludeCellTypeIds["floatCell"] = "floatCell" - PreludeCellTypeIds["numberCell"] = "numberCell" - PreludeCellTypeIds["bitCell"] = "bitCell" - PreludeCellTypeIds["boolCell"] = "boolCell" - PreludeCellTypeIds["intCell"] = "intCell" -})(PreludeCellTypeIds || (PreludeCellTypeIds = {})) -var GrammarConstantsConstantTypes -;(function (GrammarConstantsConstantTypes) { - GrammarConstantsConstantTypes["boolean"] = "boolean" - GrammarConstantsConstantTypes["string"] = "string" - GrammarConstantsConstantTypes["int"] = "int" - GrammarConstantsConstantTypes["float"] = "float" -})(GrammarConstantsConstantTypes || (GrammarConstantsConstantTypes = {})) -var GrammarBundleFiles -;(function (GrammarBundleFiles) { - GrammarBundleFiles["package"] = "package.json" - GrammarBundleFiles["readme"] = "readme.md" - GrammarBundleFiles["indexHtml"] = "index.html" - GrammarBundleFiles["indexJs"] = "index.js" - GrammarBundleFiles["testJs"] = "test.js" -})(GrammarBundleFiles || (GrammarBundleFiles = {})) -var GrammarCellParser -;(function (GrammarCellParser) { - GrammarCellParser["prefix"] = "prefix" - GrammarCellParser["postfix"] = "postfix" - GrammarCellParser["omnifix"] = "omnifix" -})(GrammarCellParser || (GrammarCellParser = {})) -var GrammarConstants -;(function (GrammarConstants) { - // node types - GrammarConstants["extensions"] = "extensions" - GrammarConstants["comment"] = "//" - GrammarConstants["version"] = "version" - GrammarConstants["parser"] = "parser" - GrammarConstants["cellType"] = "cellType" - GrammarConstants["grammarFileExtension"] = "grammar" - GrammarConstants["abstractParserPrefix"] = "abstract" - GrammarConstants["parserSuffix"] = "Parser" - GrammarConstants["cellTypeSuffix"] = "Cell" - // error check time - GrammarConstants["regex"] = "regex" - GrammarConstants["reservedWords"] = "reservedWords" - GrammarConstants["enumFromCellTypes"] = "enumFromCellTypes" - GrammarConstants["enum"] = "enum" - GrammarConstants["examples"] = "examples" - GrammarConstants["min"] = "min" - GrammarConstants["max"] = "max" - // baseParsers - GrammarConstants["baseParser"] = "baseParser" - GrammarConstants["blobParser"] = "blobParser" - GrammarConstants["errorParser"] = "errorParser" - // parse time - GrammarConstants["extends"] = "extends" - GrammarConstants["root"] = "root" - GrammarConstants["crux"] = "crux" - GrammarConstants["cruxFromId"] = "cruxFromId" - GrammarConstants["pattern"] = "pattern" - GrammarConstants["inScope"] = "inScope" - GrammarConstants["cells"] = "cells" - GrammarConstants["listDelimiter"] = "listDelimiter" - GrammarConstants["contentKey"] = "contentKey" - GrammarConstants["childrenKey"] = "childrenKey" - GrammarConstants["uniqueFirstWord"] = "uniqueFirstWord" - GrammarConstants["catchAllCellType"] = "catchAllCellType" - GrammarConstants["cellParser"] = "cellParser" - GrammarConstants["catchAllParser"] = "catchAllParser" - GrammarConstants["constants"] = "constants" - GrammarConstants["required"] = "required" - GrammarConstants["single"] = "single" - GrammarConstants["uniqueLine"] = "uniqueLine" - GrammarConstants["tags"] = "tags" - GrammarConstants["_extendsJsClass"] = "_extendsJsClass" - GrammarConstants["_rootNodeJsHeader"] = "_rootNodeJsHeader" - // default catchAll parser - GrammarConstants["BlobParser"] = "BlobParser" - GrammarConstants["DefaultRootParser"] = "DefaultRootParser" - // code - GrammarConstants["javascript"] = "javascript" - // compile time - GrammarConstants["compilerParser"] = "compiler" - GrammarConstants["compilesTo"] = "compilesTo" - // develop time - GrammarConstants["description"] = "description" - GrammarConstants["example"] = "example" - GrammarConstants["sortTemplate"] = "sortTemplate" - GrammarConstants["frequency"] = "frequency" - GrammarConstants["highlightScope"] = "highlightScope" -})(GrammarConstants || (GrammarConstants = {})) -class TypedWord extends TreeWord { - constructor(node, cellIndex, type) { - super(node, cellIndex) - this._type = type - } - get type() { - return this._type - } - toString() { - return this.word + ":" + this.type - } -} -// todo: can we merge these methods into base TreeNode and ditch this class? -class GrammarBackedNode extends TreeNode { - get definition() { - if (this._definition) return this._definition - this._definition = this.isRoot() ? this.handGrammarProgram : this.parent.definition.getParserDefinitionByParserId(this.constructor.name) - return this._definition - } - get rootGrammarTree() { - return this.definition.root - } - getAutocompleteResults(partialWord, cellIndex) { - return cellIndex === 0 ? this._getAutocompleteResultsForFirstWord(partialWord) : this._getAutocompleteResultsForCell(partialWord, cellIndex) - } - get nodeIndex() { - // StringMap {firstWord: index} - // When there are multiple tails with the same firstWord, _index stores the last content. - // todo: change the above behavior: when a collision occurs, create an array. - return this._nodeIndex || this._makeNodeIndex() - } - _clearIndex() { - delete this._nodeIndex - return super._clearIndex() - } - _makeIndex(startAt = 0) { - if (this._nodeIndex) this._makeNodeIndex(startAt) - return super._makeIndex(startAt) - } - _makeNodeIndex(startAt = 0) { - if (!this._nodeIndex || !startAt) this._nodeIndex = {} - const nodes = this._getChildrenArray() - const newIndex = this._nodeIndex - const length = nodes.length - for (let index = startAt; index < length; index++) { - const node = nodes[index] - const ancestors = Array.from(node.definition._getAncestorSet()).forEach(id => { - if (!newIndex[id]) newIndex[id] = [] - newIndex[id].push(node) - }) - } - return newIndex - } - getChildInstancesOfParserId(parserId) { - return this.nodeIndex[parserId] || [] - } - doesExtend(parserId) { - return this.definition._doesExtend(parserId) - } - _getErrorParserErrors() { - return [this.firstWord ? new UnknownParserError(this) : new BlankLineError(this)] - } - _getBlobParserCatchAllParser() { - return BlobParser - } - _getAutocompleteResultsForFirstWord(partialWord) { - const keywordMap = this.definition.firstWordMapWithDefinitions - let keywords = Object.keys(keywordMap) - if (partialWord) keywords = keywords.filter(keyword => keyword.includes(partialWord)) - return keywords - .map(keyword => { - const def = keywordMap[keyword] - if (def.suggestInAutocomplete === false) return false - const description = def.description - return { - text: keyword, - displayText: keyword + (description ? " " + description : "") - } - }) - .filter(i => i) - } - _getAutocompleteResultsForCell(partialWord, cellIndex) { - // todo: root should be [] correct? - const cell = this.parsedCells[cellIndex] - return cell ? cell.getAutoCompleteWords(partialWord) : [] - } - // note: this is overwritten by the root node of a runtime grammar program. - // some of the magic that makes this all work. but maybe there's a better way. - get handGrammarProgram() { - if (this.isRoot()) throw new Error(`Root node without getHandGrammarProgram defined.`) - return this.root.handGrammarProgram - } - getRunTimeEnumOptions(cell) { - return undefined - } - _sortNodesByInScopeOrder() { - const parserOrder = this.definition._getMyInScopeParserIds() - if (!parserOrder.length) return this - const orderMap = {} - parserOrder.forEach((word, index) => (orderMap[word] = index)) - this.sort(Utils.makeSortByFn(runtimeNode => orderMap[runtimeNode.definition.parserIdFromDefinition])) - return this - } - get requiredNodeErrors() { - const errors = [] - Object.values(this.definition.firstWordMapWithDefinitions).forEach(def => { - if (def.isRequired() && !this.nodeIndex[def.id]) errors.push(new MissingRequiredParserError(this, def.id)) - }) - return errors - } - get programAsCells() { - // todo: what is this? - return this.topDownArray.map(node => { - const cells = node.parsedCells - let indents = node.getIndentLevel() - 1 - while (indents) { - cells.unshift(undefined) - indents-- - } - return cells - }) - } - get programWidth() { - return Math.max(...this.programAsCells.map(line => line.length)) - } - get allTypedWords() { - const words = [] - this.topDownArray.forEach(node => node.wordTypes.forEach((cell, index) => words.push(new TypedWord(node, index, cell.cellTypeId)))) - return words - } - findAllWordsWithCellType(cellTypeId) { - return this.allTypedWords.filter(typedWord => typedWord.type === cellTypeId) - } - findAllNodesWithParser(parserId) { - return this.topDownArray.filter(node => node.definition.parserIdFromDefinition === parserId) - } - toCellTypeTree() { - return this.topDownArray.map(child => child.indentation + child.lineCellTypes).join("\n") - } - getParseTable(maxColumnWidth = 40) { - const tree = new TreeNode(this.toCellTypeTree()) - return new TreeNode( - tree.topDownArray.map((node, lineNumber) => { - const sourceNode = this.nodeAtLine(lineNumber) - const errs = sourceNode.getErrors() - const errorCount = errs.length - const obj = { - lineNumber: lineNumber, - source: sourceNode.indentation + sourceNode.getLine(), - parser: sourceNode.constructor.name, - cellTypes: node.content, - errorCount: errorCount - } - if (errorCount) obj.errorMessages = errs.map(err => err.message).join(";") - return obj - }) - ).toFormattedTable(maxColumnWidth) - } - // Helper method for selecting potential parsers needed to update grammar file. - get invalidParsers() { - return Array.from( - new Set( - this.getAllErrors() - .filter(err => err instanceof UnknownParserError) - .map(err => err.getNode().firstWord) - ) - ) - } - _getAllAutoCompleteWords() { - return this.getAllWordBoundaryCoordinates().map(coordinate => { - const results = this.getAutocompleteResultsAt(coordinate.lineIndex, coordinate.charIndex) - return { - lineIndex: coordinate.lineIndex, - charIndex: coordinate.charIndex, - wordIndex: coordinate.wordIndex, - word: results.word, - suggestions: results.matches - } - }) - } - toAutoCompleteCube(fillChar = "") { - const trees = [this.clone()] - const filled = this.clone().fill(fillChar) - this._getAllAutoCompleteWords().forEach(hole => { - hole.suggestions.forEach((suggestion, index) => { - if (!trees[index + 1]) trees[index + 1] = filled.clone() - trees[index + 1].nodeAtLine(hole.lineIndex).setWord(hole.wordIndex, suggestion.text) - }) - }) - return new TreeNode(trees) - } - toAutoCompleteTable() { - return new TreeNode( - this._getAllAutoCompleteWords().map(result => { - result.suggestions = result.suggestions.map(node => node.text).join(" ") - return result - }) - ).asTable - } - getAutocompleteResultsAt(lineIndex, charIndex) { - const lineNode = this.nodeAtLine(lineIndex) || this - const nodeInScope = lineNode.getNodeInScopeAtCharIndex(charIndex) - // todo: add more tests - // todo: second param this.childrenToString() - // todo: change to getAutocomplete definitions - const wordIndex = lineNode.getWordIndexAtCharacterIndex(charIndex) - const wordProperties = lineNode.getWordProperties(wordIndex) - return { - startCharIndex: wordProperties.startCharIndex, - endCharIndex: wordProperties.endCharIndex, - word: wordProperties.word, - matches: nodeInScope.getAutocompleteResults(wordProperties.word, wordIndex) - } - } - _sortWithParentParsersUpTop() { - const familyTree = new HandGrammarProgram(this.toString()).parserFamilyTree - const rank = {} - familyTree.topDownArray.forEach((node, index) => { - rank[node.getWord(0)] = index - }) - const nodeAFirst = -1 - const nodeBFirst = 1 - this.sort((nodeA, nodeB) => { - const nodeARank = rank[nodeA.getWord(0)] - const nodeBRank = rank[nodeB.getWord(0)] - return nodeARank < nodeBRank ? nodeAFirst : nodeBFirst - }) - return this - } - format() { - if (this.isRoot()) { - this._sortNodesByInScopeOrder() - try { - this._sortWithParentParsersUpTop() - } catch (err) { - console.log(`Warning: ${err}`) - } - } - this.topDownArray.forEach(child => { - child.format() - }) - return this - } - sortFromSortTemplate() { - if (!this.length) return this - // Recurse - this.forEach(node => node.sortFromSortTemplate()) - const def = this.isRoot() ? this.definition.rootParserDefinition : this.definition - const { sortIndices, sortSections } = def.sortSpec - // Sort and insert section breaks - if (sortIndices.size) { - // Sort keywords - this.sort((nodeA, nodeB) => { - var _a, _b - const aIndex = (_a = sortIndices.get(nodeA.firstWord)) !== null && _a !== void 0 ? _a : sortIndices.get(nodeA.sortKey) - const bIndex = (_b = sortIndices.get(nodeB.firstWord)) !== null && _b !== void 0 ? _b : sortIndices.get(nodeB.sortKey) - if (aIndex === undefined) console.error(`sortTemplate is missing "${nodeA.firstWord}"`) - const a = aIndex !== null && aIndex !== void 0 ? aIndex : 1000 - const b = bIndex !== null && bIndex !== void 0 ? bIndex : 1000 - return a > b ? 1 : a < b ? -1 : nodeA.getLine() > nodeB.getLine() - }) - // pad sections - let currentSection = 0 - this.forEach(node => { - var _a - const nodeSection = (_a = sortSections.get(node.firstWord)) !== null && _a !== void 0 ? _a : sortSections.get(node.sortKey) - const sectionHasAdvanced = nodeSection > currentSection - if (sectionHasAdvanced) { - currentSection = nodeSection - node.prependSibling("") // Put a blank line before this section - } - }) - } - return this - } - getParserUsage(filepath = "") { - // returns a report on what parsers from its language the program uses - const usage = new TreeNode() - const handGrammarProgram = this.handGrammarProgram - handGrammarProgram.validConcreteAndAbstractParserDefinitions.forEach(def => { - const requiredCellTypeIds = def.cellParser.getRequiredCellTypeIds() - usage.appendLine([def.parserIdFromDefinition, "line-id", "parser", requiredCellTypeIds.join(" ")].join(" ")) - }) - this.topDownArray.forEach((node, lineNumber) => { - const stats = usage.getNode(node.parserId) - stats.appendLine([filepath + "-" + lineNumber, node.words.join(" ")].join(" ")) - }) - return usage - } - toHighlightScopeTree() { - return this.topDownArray.map(child => child.indentation + child.getLineHighlightScopes()).join("\n") - } - toDefinitionLineNumberTree() { - return this.topDownArray.map(child => child.definition.lineNumber + " " + child.indentation + child.cellDefinitionLineNumbers.join(" ")).join("\n") - } - get asCellTypeTreeWithParserIds() { - return this.topDownArray.map(child => child.constructor.name + this.wordBreakSymbol + child.indentation + child.lineCellTypes).join("\n") - } - toPreludeCellTypeTreeWithParserIds() { - return this.topDownArray.map(child => child.constructor.name + this.wordBreakSymbol + child.indentation + child.getLineCellPreludeTypes()).join("\n") - } - get asTreeWithParsers() { - return this.topDownArray.map(child => child.constructor.name + this.wordBreakSymbol + child.indentation + child.getLine()).join("\n") - } - getCellHighlightScopeAtPosition(lineIndex, wordIndex) { - this._initCellTypeCache() - const typeNode = this._cache_highlightScopeTree.topDownArray[lineIndex - 1] - return typeNode ? typeNode.getWord(wordIndex - 1) : undefined - } - _initCellTypeCache() { - const treeMTime = this.getLineOrChildrenModifiedTime() - if (this._cache_programCellTypeStringMTime === treeMTime) return undefined - this._cache_typeTree = new TreeNode(this.toCellTypeTree()) - this._cache_highlightScopeTree = new TreeNode(this.toHighlightScopeTree()) - this._cache_programCellTypeStringMTime = treeMTime - } - createParserCombinator() { - return this.isRoot() ? new TreeNode.ParserCombinator(BlobParser) : new TreeNode.ParserCombinator(this.parent._getParser()._getCatchAllParser(this.parent), {}) - } - get parserId() { - return this.definition.parserIdFromDefinition - } - get wordTypes() { - return this.parsedCells.filter(cell => cell.getWord() !== undefined) - } - get cellErrors() { - return this.parsedCells.map(check => check.getErrorIfAny()).filter(identity => identity) - } - get singleParserUsedTwiceErrors() { - const errors = [] - const parent = this.parent - const hits = parent.getChildInstancesOfParserId(this.definition.id) - if (hits.length > 1) - hits.forEach((node, index) => { - if (node === this) errors.push(new ParserUsedMultipleTimesError(node)) - }) - return errors - } - get uniqueLineAppearsTwiceErrors() { - const errors = [] - const parent = this.parent - const hits = parent.getChildInstancesOfParserId(this.definition.id) - if (hits.length > 1) { - const set = new Set() - hits.forEach((node, index) => { - const line = node.getLine() - if (set.has(line)) errors.push(new ParserUsedMultipleTimesError(node)) - set.add(line) - }) - } - return errors - } - get scopeErrors() { - let errors = [] - const def = this.definition - if (def.isSingle) errors = errors.concat(this.singleParserUsedTwiceErrors) - if (def.isUniqueLine) errors = errors.concat(this.uniqueLineAppearsTwiceErrors) - const { requiredNodeErrors } = this - if (requiredNodeErrors.length) errors = errors.concat(requiredNodeErrors) - return errors - } - getErrors() { - return this.cellErrors.concat(this.scopeErrors) - } - get parsedCells() { - return this.definition.cellParser.getCellArray(this) - } - // todo: just make a fn that computes proper spacing and then is given a node to print - get lineCellTypes() { - return this.parsedCells.map(slot => slot.cellTypeId).join(" ") - } - getLineCellPreludeTypes() { - return this.parsedCells - .map(slot => { - const def = slot.cellTypeDefinition - //todo: cleanup - return def ? def.preludeKindId : PreludeCellTypeIds.anyCell - }) - .join(" ") - } - getLineHighlightScopes(defaultScope = "source") { - return this.parsedCells.map(slot => slot.highlightScope || defaultScope).join(" ") - } - get cellDefinitionLineNumbers() { - return this.parsedCells.map(cell => cell.definitionLineNumber) - } - _getCompiledIndentation() { - const indentCharacter = this.definition._getCompilerObject()[GrammarConstantsCompiler.indentCharacter] - const indent = this.indentation - return indentCharacter !== undefined ? indentCharacter.repeat(indent.length) : indent - } - _getFields() { - // fields are like cells - const fields = {} - this.forEach(node => { - const def = node.definition - if (def.isRequired() || def.isSingle) fields[node.getWord(0)] = node.content - }) - return fields - } - _getCompiledLine() { - const compiler = this.definition._getCompilerObject() - const catchAllCellDelimiter = compiler[GrammarConstantsCompiler.catchAllCellDelimiter] - const str = compiler[GrammarConstantsCompiler.stringTemplate] - return str !== undefined ? Utils.formatStr(str, catchAllCellDelimiter, Object.assign(this._getFields(), this.cells)) : this.getLine() - } - get listDelimiter() { - return this.definition._getFromExtended(GrammarConstants.listDelimiter) - } - get contentKey() { - return this.definition._getFromExtended(GrammarConstants.contentKey) - } - get childrenKey() { - return this.definition._getFromExtended(GrammarConstants.childrenKey) - } - get childrenAreTextBlob() { - return this.definition._isBlobParser() - } - get isArrayElement() { - return this.definition._hasFromExtended(GrammarConstants.uniqueFirstWord) ? false : !this.definition.isSingle - } - get list() { - return this.listDelimiter ? this.content.split(this.listDelimiter) : super.list - } - get typedContent() { - // todo: probably a better way to do this, perhaps by defining a cellDelimiter at the node level - // todo: this currently parse anything other than string types - if (this.listDelimiter) return this.content.split(this.listDelimiter) - const cells = this.parsedCells - if (cells.length === 2) return cells[1].parsed - return this.content - } - get typedTuple() { - const key = this.firstWord - if (this.childrenAreTextBlob) return [key, this.childrenToString()] - const { typedContent, contentKey, childrenKey } = this - if (contentKey || childrenKey) { - let obj = {} - if (childrenKey) obj[childrenKey] = this.childrenToString() - else obj = this.typedMap - if (contentKey) { - obj[contentKey] = typedContent - } - return [key, obj] - } - const hasChildren = this.length > 0 - const hasChildrenNoContent = typedContent === undefined && hasChildren - const shouldReturnValueAsObject = hasChildrenNoContent - if (shouldReturnValueAsObject) return [key, this.typedMap] - const hasChildrenAndContent = typedContent !== undefined && hasChildren - const shouldReturnValueAsContentPlusChildren = hasChildrenAndContent - // If the node has a content and a subtree return it as a string, as - // Javascript object values can't be both a leaf and a tree. - if (shouldReturnValueAsContentPlusChildren) return [key, this.contentWithChildren] - return [key, typedContent] - } - get _shouldSerialize() { - const should = this.shouldSerialize - return should === undefined ? true : should - } - get typedMap() { - const obj = {} - this.forEach(node => { - if (!node._shouldSerialize) return true - const tuple = node.typedTuple - if (!node.isArrayElement) obj[tuple[0]] = tuple[1] - else { - if (!obj[tuple[0]]) obj[tuple[0]] = [] - obj[tuple[0]].push(tuple[1]) - } - }) - return obj - } - fromTypedMap() {} - compile() { - if (this.isRoot()) return super.compile() - const def = this.definition - const indent = this._getCompiledIndentation() - const compiledLine = this._getCompiledLine() - if (def.isTerminalParser()) return indent + compiledLine - const compiler = def._getCompilerObject() - const openChildrenString = compiler[GrammarConstantsCompiler.openChildren] || "" - const closeChildrenString = compiler[GrammarConstantsCompiler.closeChildren] || "" - const childJoinCharacter = compiler[GrammarConstantsCompiler.joinChildrenWith] || "\n" - const compiledChildren = this.map(child => child.compile()).join(childJoinCharacter) - return `${indent + compiledLine}${openChildrenString} -${compiledChildren} -${indent}${closeChildrenString}` - } - // todo: remove - get cells() { - const cells = {} - this.parsedCells.forEach(cell => { - const cellTypeId = cell.cellTypeId - if (!cell.isCatchAll()) cells[cellTypeId] = cell.parsed - else { - if (!cells[cellTypeId]) cells[cellTypeId] = [] - cells[cellTypeId].push(cell.parsed) - } - }) - return cells - } -} -class BlobParser extends GrammarBackedNode { - createParserCombinator() { - return new TreeNode.ParserCombinator(BlobParser, {}) - } - getErrors() { - return [] - } -} -// todo: can we remove this? hard to extend. -class UnknownParserNode extends GrammarBackedNode { - createParserCombinator() { - return new TreeNode.ParserCombinator(UnknownParserNode, {}) - } - getErrors() { - return [new UnknownParserError(this)] - } -} -/* -A cell contains a word but also the type information for that word. -*/ -class AbstractGrammarBackedCell { - constructor(node, index, typeDef, cellTypeId, isCatchAll, parserDefinitionParser) { - this._typeDef = typeDef - this._node = node - this._isCatchAll = isCatchAll - this._index = index - this._cellTypeId = cellTypeId - this._parserDefinitionParser = parserDefinitionParser - } - getWord() { - return this._node.getWord(this._index) - } - get definitionLineNumber() { - return this._typeDef.lineNumber - } - get cellTypeId() { - return this._cellTypeId - } - getNode() { - return this._node - } - get cellIndex() { - return this._index - } - isCatchAll() { - return this._isCatchAll - } - get min() { - return this.cellTypeDefinition.get(GrammarConstants.min) || "0" - } - get max() { - return this.cellTypeDefinition.get(GrammarConstants.max) || "100" - } - get placeholder() { - return this.cellTypeDefinition.get(GrammarConstants.examples) || "" - } - get highlightScope() { - const definition = this.cellTypeDefinition - if (definition) return definition.highlightScope // todo: why the undefined? - } - getAutoCompleteWords(partialWord = "") { - const cellDef = this.cellTypeDefinition - let words = cellDef ? cellDef._getAutocompleteWordOptions(this.getNode().root) : [] - const runTimeOptions = this.getNode().getRunTimeEnumOptions(this) - if (runTimeOptions) words = runTimeOptions.concat(words) - if (partialWord) words = words.filter(word => word.includes(partialWord)) - return words.map(word => { - return { - text: word, - displayText: word - } - }) - } - synthesizeCell(seed = Date.now()) { - // todo: cleanup - const cellDef = this.cellTypeDefinition - const enumOptions = cellDef._getFromExtended(GrammarConstants.enum) - if (enumOptions) return Utils.getRandomString(1, enumOptions.split(" ")) - return this._synthesizeCell(seed) - } - _getStumpEnumInput(crux) { - const cellDef = this.cellTypeDefinition - const enumOptions = cellDef._getFromExtended(GrammarConstants.enum) - if (!enumOptions) return undefined - const options = new TreeNode( - enumOptions - .split(" ") - .map(option => `option ${option}`) - .join("\n") - ) - return `select - name ${crux} -${options.toString(1)}` - } - _toStumpInput(crux) { - // todo: remove - const enumInput = this._getStumpEnumInput(crux) - if (enumInput) return enumInput - // todo: cleanup. We shouldn't have these dual cellType classes. - return `input - name ${crux} - placeholder ${this.placeholder}` - } - get cellTypeDefinition() { - return this._typeDef - } - _getErrorContext() { - return this.getNode().getLine().split(" ")[0] // todo: WordBreakSymbol - } - isValid() { - const runTimeOptions = this.getNode().getRunTimeEnumOptions(this) - const word = this.getWord() - if (runTimeOptions) return runTimeOptions.includes(word) - return this.cellTypeDefinition.isValid(word, this.getNode().root) && this._isValid() - } - getErrorIfAny() { - const word = this.getWord() - if (word !== undefined && this.isValid()) return undefined - // todo: refactor invalidwordError. We want better error messages. - return word === undefined || word === "" ? new MissingWordError(this) : new InvalidWordError(this) - } -} -AbstractGrammarBackedCell.parserFunctionName = "" -class GrammarBitCell extends AbstractGrammarBackedCell { - _isValid() { - const word = this.getWord() - return word === "0" || word === "1" - } - _synthesizeCell() { - return Utils.getRandomString(1, "01".split("")) - } - get regexString() { - return "[01]" - } - get parsed() { - const word = this.getWord() - return !!parseInt(word) - } -} -GrammarBitCell.defaultHighlightScope = "constant.numeric" -class GrammarNumericCell extends AbstractGrammarBackedCell { - _toStumpInput(crux) { - return `input - name ${crux} - type number - placeholder ${this.placeholder} - min ${this.min} - max ${this.max}` - } -} -class GrammarIntCell extends GrammarNumericCell { - _isValid() { - const word = this.getWord() - const num = parseInt(word) - if (isNaN(num)) return false - return num.toString() === word - } - _synthesizeCell(seed) { - return Utils.randomUniformInt(parseInt(this.min), parseInt(this.max), seed).toString() - } - get regexString() { - return "-?[0-9]+" - } - get parsed() { - const word = this.getWord() - return parseInt(word) - } -} -GrammarIntCell.defaultHighlightScope = "constant.numeric.integer" -GrammarIntCell.parserFunctionName = "parseInt" -class GrammarFloatCell extends GrammarNumericCell { - _isValid() { - const word = this.getWord() - const num = parseFloat(word) - return !isNaN(num) && /^-?\d*(\.\d+)?$/.test(word) - } - _synthesizeCell(seed) { - return Utils.randomUniformFloat(parseFloat(this.min), parseFloat(this.max), seed).toString() - } - get regexString() { - return "-?d*(.d+)?" - } - get parsed() { - const word = this.getWord() - return parseFloat(word) - } -} -GrammarFloatCell.defaultHighlightScope = "constant.numeric.float" -GrammarFloatCell.parserFunctionName = "parseFloat" -// ErrorCellType => grammar asks for a '' cell type here but the grammar does not specify a '' cell type. (todo: bring in didyoumean?) -class GrammarBoolCell extends AbstractGrammarBackedCell { - constructor() { - super(...arguments) - this._trues = new Set(["1", "true", "t", "yes"]) - this._falses = new Set(["0", "false", "f", "no"]) - } - _isValid() { - const word = this.getWord() - const str = word.toLowerCase() - return this._trues.has(str) || this._falses.has(str) - } - _synthesizeCell() { - return Utils.getRandomString(1, ["1", "true", "t", "yes", "0", "false", "f", "no"]) - } - _getOptions() { - return Array.from(this._trues).concat(Array.from(this._falses)) - } - get regexString() { - return "(?:" + this._getOptions().join("|") + ")" - } - get parsed() { - const word = this.getWord() - return this._trues.has(word.toLowerCase()) - } -} -GrammarBoolCell.defaultHighlightScope = "constant.numeric" -class GrammarAnyCell extends AbstractGrammarBackedCell { - _isValid() { - return true - } - _synthesizeCell() { - const examples = this.cellTypeDefinition._getFromExtended(GrammarConstants.examples) - if (examples) return Utils.getRandomString(1, examples.split(" ")) - return this._parserDefinitionParser.parserIdFromDefinition + "-" + this.constructor.name - } - get regexString() { - return "[^ ]+" - } - get parsed() { - return this.getWord() - } -} -class GrammarKeywordCell extends GrammarAnyCell { - _synthesizeCell() { - return this._parserDefinitionParser.cruxIfAny - } -} -GrammarKeywordCell.defaultHighlightScope = "keyword" -class GrammarExtraWordCellTypeCell extends AbstractGrammarBackedCell { - _isValid() { - return false - } - synthesizeCell() { - throw new Error(`Trying to synthesize a GrammarExtraWordCellTypeCell`) - return this._synthesizeCell() - } - _synthesizeCell() { - return "extraWord" // should never occur? - } - get parsed() { - return this.getWord() - } - getErrorIfAny() { - return new ExtraWordError(this) - } -} -class GrammarUnknownCellTypeCell extends AbstractGrammarBackedCell { - _isValid() { - return false - } - synthesizeCell() { - throw new Error(`Trying to synthesize an GrammarUnknownCellTypeCell`) - return this._synthesizeCell() - } - _synthesizeCell() { - return "extraWord" // should never occur? - } - get parsed() { - return this.getWord() - } - getErrorIfAny() { - return new UnknownCellTypeError(this) - } -} -class AbstractTreeError { - constructor(node) { - this._node = node - } - getLineIndex() { - return this.lineNumber - 1 - } - get lineNumber() { - return this.getNode()._getLineNumber() // todo: handle sourcemaps - } - isCursorOnWord(lineIndex, characterIndex) { - return lineIndex === this.getLineIndex() && this._doesCharacterIndexFallOnWord(characterIndex) - } - _doesCharacterIndexFallOnWord(characterIndex) { - return this.cellIndex === this.getNode().getWordIndexAtCharacterIndex(characterIndex) - } - // convenience method. may be removed. - isBlankLineError() { - return false - } - // convenience method. may be removed. - isMissingWordError() { - return false - } - getIndent() { - return this.getNode().indentation - } - getCodeMirrorLineWidgetElement(onApplySuggestionCallBack = () => {}) { - const suggestion = this.suggestionMessage - if (this.isMissingWordError()) return this._getCodeMirrorLineWidgetElementCellTypeHints() - if (suggestion) return this._getCodeMirrorLineWidgetElementWithSuggestion(onApplySuggestionCallBack, suggestion) - return this._getCodeMirrorLineWidgetElementWithoutSuggestion() - } - get parserId() { - return this.getNode().definition.parserIdFromDefinition - } - _getCodeMirrorLineWidgetElementCellTypeHints() { - const el = document.createElement("div") - el.appendChild(document.createTextNode(this.getIndent() + this.getNode().definition.lineHints)) - el.className = "LintCellTypeHints" - return el - } - _getCodeMirrorLineWidgetElementWithoutSuggestion() { - const el = document.createElement("div") - el.appendChild(document.createTextNode(this.getIndent() + this.message)) - el.className = "LintError" - return el - } - _getCodeMirrorLineWidgetElementWithSuggestion(onApplySuggestionCallBack, suggestion) { - const el = document.createElement("div") - el.appendChild(document.createTextNode(this.getIndent() + `${this.errorTypeName}. Suggestion: ${suggestion}`)) - el.className = "LintErrorWithSuggestion" - el.onclick = () => { - this.applySuggestion() - onApplySuggestionCallBack() - } - return el - } - getLine() { - return this.getNode().getLine() - } - getExtension() { - return this.getNode().handGrammarProgram.extensionName - } - getNode() { - return this._node - } - get errorTypeName() { - return this.constructor.name.replace("Error", "") - } - get cellIndex() { - return 0 - } - toObject() { - return { - type: this.errorTypeName, - line: this.lineNumber, - cell: this.cellIndex, - suggestion: this.suggestionMessage, - path: this.getNode().getFirstWordPath(), - message: this.message - } - } - hasSuggestion() { - return this.suggestionMessage !== "" - } - get suggestionMessage() { - return "" - } - toString() { - return this.message - } - applySuggestion() {} - get message() { - return `${this.errorTypeName} at line ${this.lineNumber} cell ${this.cellIndex}.` - } -} -class AbstractCellError extends AbstractTreeError { - constructor(cell) { - super(cell.getNode()) - this._cell = cell - } - get cell() { - return this._cell - } - get cellIndex() { - return this._cell.cellIndex - } - get wordSuggestion() { - return Utils.didYouMean( - this.cell.getWord(), - this.cell.getAutoCompleteWords().map(option => option.text) - ) - } -} -class UnknownParserError extends AbstractTreeError { - get message() { - const node = this.getNode() - const parentNode = node.parent - const options = parentNode._getParser().getFirstWordOptions() - return super.message + ` Invalid parser "${node.firstWord}". Valid parsers are: ${Utils._listToEnglishText(options, 7)}.` - } - get wordSuggestion() { - const node = this.getNode() - const parentNode = node.parent - return Utils.didYouMean( - node.firstWord, - parentNode.getAutocompleteResults("", 0).map(option => option.text) - ) - } - get suggestionMessage() { - const suggestion = this.wordSuggestion - const node = this.getNode() - if (suggestion) return `Change "${node.firstWord}" to "${suggestion}"` - return "" - } - applySuggestion() { - const suggestion = this.wordSuggestion - if (suggestion) this.getNode().setWord(this.cellIndex, suggestion) - return this - } -} -class BlankLineError extends UnknownParserError { - get message() { - return super.message + ` Line: "${this.getNode().getLine()}". Blank lines are errors.` - } - // convenience method - isBlankLineError() { - return true - } - get suggestionMessage() { - return `Delete line ${this.lineNumber}` - } - applySuggestion() { - this.getNode().destroy() - return this - } -} -class MissingRequiredParserError extends AbstractTreeError { - constructor(node, missingParserId) { - super(node) - this._missingParserId = missingParserId - } - get message() { - return super.message + ` A "${this._missingParserId}" is required.` - } -} -class ParserUsedMultipleTimesError extends AbstractTreeError { - get message() { - return super.message + ` Multiple "${this.getNode().firstWord}" found.` - } - get suggestionMessage() { - return `Delete line ${this.lineNumber}` - } - applySuggestion() { - return this.getNode().destroy() - } -} -class LineAppearsMultipleTimesError extends AbstractTreeError { - get message() { - return super.message + ` "${this.getNode().getLine()}" appears multiple times.` - } - get suggestionMessage() { - return `Delete line ${this.lineNumber}` - } - applySuggestion() { - return this.getNode().destroy() - } -} -class UnknownCellTypeError extends AbstractCellError { - get message() { - return super.message + ` No cellType "${this.cell.cellTypeId}" found. Language grammar for "${this.getExtension()}" may need to be fixed.` - } -} -class InvalidWordError extends AbstractCellError { - get message() { - return super.message + ` "${this.cell.getWord()}" does not fit in cellType "${this.cell.cellTypeId}".` - } - get suggestionMessage() { - const suggestion = this.wordSuggestion - if (suggestion) return `Change "${this.cell.getWord()}" to "${suggestion}"` - return "" - } - applySuggestion() { - const suggestion = this.wordSuggestion - if (suggestion) this.getNode().setWord(this.cellIndex, suggestion) - return this - } -} -class ExtraWordError extends AbstractCellError { - get message() { - return super.message + ` Extra word "${this.cell.getWord()}" in ${this.parserId}.` - } - get suggestionMessage() { - return `Delete word "${this.cell.getWord()}" at cell ${this.cellIndex}` - } - applySuggestion() { - return this.getNode().deleteWordAt(this.cellIndex) - } -} -class MissingWordError extends AbstractCellError { - // todo: autocomplete suggestion - get message() { - return super.message + ` Missing word for cell "${this.cell.cellTypeId}".` - } - isMissingWordError() { - return true - } -} -// todo: add standard types, enum types, from disk types -class AbstractGrammarWordTestParser extends TreeNode {} -class GrammarRegexTestParser extends AbstractGrammarWordTestParser { - isValid(str) { - if (!this._regex) this._regex = new RegExp("^" + this.content + "$") - return !!str.match(this._regex) - } -} -class GrammarReservedWordsTestParser extends AbstractGrammarWordTestParser { - isValid(str) { - if (!this._set) this._set = new Set(this.content.split(" ")) - return !this._set.has(str) - } -} -// todo: remove in favor of custom word type constructors -class EnumFromCellTypesTestParser extends AbstractGrammarWordTestParser { - _getEnumFromCellTypes(programRootNode) { - const cellTypeIds = this.getWordsFrom(1) - const enumGroup = cellTypeIds.join(" ") - // note: hack where we store it on the program. otherwise has global effects. - if (!programRootNode._enumMaps) programRootNode._enumMaps = {} - if (programRootNode._enumMaps[enumGroup]) return programRootNode._enumMaps[enumGroup] - const wordIndex = 1 - const map = {} - const cellTypeMap = {} - cellTypeIds.forEach(typeId => (cellTypeMap[typeId] = true)) - programRootNode.allTypedWords - .filter(typedWord => cellTypeMap[typedWord.type]) - .forEach(typedWord => { - map[typedWord.word] = true - }) - programRootNode._enumMaps[enumGroup] = map - return map - } - // todo: remove - isValid(str, programRootNode) { - return this._getEnumFromCellTypes(programRootNode)[str] === true - } -} -class GrammarEnumTestNode extends AbstractGrammarWordTestParser { - isValid(str) { - // enum c c++ java - return !!this.getOptions()[str] - } - getOptions() { - if (!this._map) this._map = Utils.arrayToMap(this.getWordsFrom(1)) - return this._map - } -} -class cellTypeDefinitionParser extends AbstractExtendibleTreeNode { - createParserCombinator() { - const types = {} - types[GrammarConstants.regex] = GrammarRegexTestParser - types[GrammarConstants.reservedWords] = GrammarReservedWordsTestParser - types[GrammarConstants.enumFromCellTypes] = EnumFromCellTypesTestParser - types[GrammarConstants.enum] = GrammarEnumTestNode - types[GrammarConstants.highlightScope] = TreeNode - types[GrammarConstants.comment] = TreeNode - types[GrammarConstants.examples] = TreeNode - types[GrammarConstants.min] = TreeNode - types[GrammarConstants.max] = TreeNode - types[GrammarConstants.description] = TreeNode - types[GrammarConstants.extends] = TreeNode - return new TreeNode.ParserCombinator(undefined, types) - } - get id() { - return this.getWord(0) - } - get idToNodeMap() { - return this.parent.cellTypeDefinitions - } - getGetter(wordIndex) { - const wordToNativeJavascriptTypeParser = this.getCellConstructor().parserFunctionName - return `get ${this.cellTypeId}() { - return ${wordToNativeJavascriptTypeParser ? wordToNativeJavascriptTypeParser + `(this.getWord(${wordIndex}))` : `this.getWord(${wordIndex})`} - }` - } - getCatchAllGetter(wordIndex) { - const wordToNativeJavascriptTypeParser = this.getCellConstructor().parserFunctionName - return `get ${this.cellTypeId}() { - return ${wordToNativeJavascriptTypeParser ? `this.getWordsFrom(${wordIndex}).map(val => ${wordToNativeJavascriptTypeParser}(val))` : `this.getWordsFrom(${wordIndex})`} - }` - } - // `this.getWordsFrom(${requireds.length + 1})` - // todo: cleanup typings. todo: remove this hidden logic. have a "baseType" property? - getCellConstructor() { - return this.preludeKind || GrammarAnyCell - } - get preludeKind() { - return PreludeKinds[this.getWord(0)] || PreludeKinds[this._getExtendedCellTypeId()] - } - get preludeKindId() { - if (PreludeKinds[this.getWord(0)]) return this.getWord(0) - else if (PreludeKinds[this._getExtendedCellTypeId()]) return this._getExtendedCellTypeId() - return PreludeCellTypeIds.anyCell - } - _getExtendedCellTypeId() { - const arr = this._getAncestorsArray() - return arr[arr.length - 1].id - } - get highlightScope() { - const hs = this._getFromExtended(GrammarConstants.highlightScope) - if (hs) return hs - const preludeKind = this.preludeKind - if (preludeKind) return preludeKind.defaultHighlightScope - } - _getEnumOptions() { - const enumNode = this._getNodeFromExtended(GrammarConstants.enum) - if (!enumNode) return undefined - // we sort by longest first to capture longest match first. todo: add test - const options = Object.keys(enumNode.getNode(GrammarConstants.enum).getOptions()) - options.sort((a, b) => b.length - a.length) - return options - } - _getEnumFromCellTypeOptions(program) { - const node = this._getNodeFromExtended(GrammarConstants.enumFromCellTypes) - return node ? Object.keys(node.getNode(GrammarConstants.enumFromCellTypes)._getEnumFromCellTypes(program)) : undefined - } - _getAutocompleteWordOptions(program) { - return this._getEnumOptions() || this._getEnumFromCellTypeOptions(program) || [] - } - get regexString() { - // todo: enum - const enumOptions = this._getEnumOptions() - return this._getFromExtended(GrammarConstants.regex) || (enumOptions ? "(?:" + enumOptions.join("|") + ")" : "[^ ]*") - } - _getAllTests() { - return this._getChildrenByParserInExtended(AbstractGrammarWordTestParser) - } - isValid(str, programRootNode) { - return this._getAllTests().every(node => node.isValid(str, programRootNode)) - } - get cellTypeId() { - return this.getWord(0) - } -} -class AbstractCellParser { - constructor(definition) { - this._definition = definition - } - get catchAllCellTypeId() { - return this._definition._getFromExtended(GrammarConstants.catchAllCellType) - } - // todo: improve layout (use bold?) - get lineHints() { - const catchAllCellTypeId = this.catchAllCellTypeId - const parserId = this._definition.cruxIfAny || this._definition.id // todo: cleanup - return `${parserId}: ${this.getRequiredCellTypeIds().join(" ")}${catchAllCellTypeId ? ` ${catchAllCellTypeId}...` : ""}` - } - getRequiredCellTypeIds() { - if (!this._requiredCellTypeIds) { - const parameters = this._definition._getFromExtended(GrammarConstants.cells) - this._requiredCellTypeIds = parameters ? parameters.split(" ") : [] - } - return this._requiredCellTypeIds - } - _getCellTypeId(cellIndex, requiredCellTypeIds, totalWordCount) { - return requiredCellTypeIds[cellIndex] - } - _isCatchAllCell(cellIndex, numberOfRequiredCells, totalWordCount) { - return cellIndex >= numberOfRequiredCells - } - getCellArray(node = undefined) { - const wordCount = node ? node.words.length : 0 - const def = this._definition - const grammarProgram = def.languageDefinitionProgram - const requiredCellTypeIds = this.getRequiredCellTypeIds() - const numberOfRequiredCells = requiredCellTypeIds.length - const actualWordCountOrRequiredCellCount = Math.max(wordCount, numberOfRequiredCells) - const cells = [] - // A for loop instead of map because "numberOfCellsToFill" can be longer than words.length - for (let cellIndex = 0; cellIndex < actualWordCountOrRequiredCellCount; cellIndex++) { - const isCatchAll = this._isCatchAllCell(cellIndex, numberOfRequiredCells, wordCount) - let cellTypeId = isCatchAll ? this.catchAllCellTypeId : this._getCellTypeId(cellIndex, requiredCellTypeIds, wordCount) - let cellTypeDefinition = grammarProgram.getCellTypeDefinitionById(cellTypeId) - let cellConstructor - if (cellTypeDefinition) cellConstructor = cellTypeDefinition.getCellConstructor() - else if (cellTypeId) cellConstructor = GrammarUnknownCellTypeCell - else { - cellConstructor = GrammarExtraWordCellTypeCell - cellTypeId = PreludeCellTypeIds.extraWordCell - cellTypeDefinition = grammarProgram.getCellTypeDefinitionById(cellTypeId) - } - const anyCellConstructor = cellConstructor - cells[cellIndex] = new anyCellConstructor(node, cellIndex, cellTypeDefinition, cellTypeId, isCatchAll, def) - } - return cells - } -} -class PrefixCellParser extends AbstractCellParser {} -class PostfixCellParser extends AbstractCellParser { - _isCatchAllCell(cellIndex, numberOfRequiredCells, totalWordCount) { - return cellIndex < totalWordCount - numberOfRequiredCells - } - _getCellTypeId(cellIndex, requiredCellTypeIds, totalWordCount) { - const catchAllWordCount = Math.max(totalWordCount - requiredCellTypeIds.length, 0) - return requiredCellTypeIds[cellIndex - catchAllWordCount] - } -} -class OmnifixCellParser extends AbstractCellParser { - getCellArray(node = undefined) { - const cells = [] - const def = this._definition - const program = node ? node.root : undefined - const grammarProgram = def.languageDefinitionProgram - const words = node ? node.words : [] - const requiredCellTypeDefs = this.getRequiredCellTypeIds().map(cellTypeId => grammarProgram.getCellTypeDefinitionById(cellTypeId)) - const catchAllCellTypeId = this.catchAllCellTypeId - const catchAllCellTypeDef = catchAllCellTypeId && grammarProgram.getCellTypeDefinitionById(catchAllCellTypeId) - words.forEach((word, wordIndex) => { - let cellConstructor - for (let index = 0; index < requiredCellTypeDefs.length; index++) { - const cellTypeDefinition = requiredCellTypeDefs[index] - if (cellTypeDefinition.isValid(word, program)) { - // todo: cleanup cellIndex/wordIndex stuff - cellConstructor = cellTypeDefinition.getCellConstructor() - cells.push(new cellConstructor(node, wordIndex, cellTypeDefinition, cellTypeDefinition.id, false, def)) - requiredCellTypeDefs.splice(index, 1) - return true - } - } - if (catchAllCellTypeDef && catchAllCellTypeDef.isValid(word, program)) { - cellConstructor = catchAllCellTypeDef.getCellConstructor() - cells.push(new cellConstructor(node, wordIndex, catchAllCellTypeDef, catchAllCellTypeId, true, def)) - return true - } - cells.push(new GrammarUnknownCellTypeCell(node, wordIndex, undefined, undefined, false, def)) - }) - const wordCount = words.length - requiredCellTypeDefs.forEach((cellTypeDef, index) => { - let cellConstructor = cellTypeDef.getCellConstructor() - cells.push(new cellConstructor(node, wordCount + index, cellTypeDef, cellTypeDef.id, false, def)) - }) - return cells - } -} -class GrammarExampleParser extends TreeNode {} -class GrammarCompilerParser extends TreeNode { - createParserCombinator() { - const types = [ - GrammarConstantsCompiler.stringTemplate, - GrammarConstantsCompiler.indentCharacter, - GrammarConstantsCompiler.catchAllCellDelimiter, - GrammarConstantsCompiler.joinChildrenWith, - GrammarConstantsCompiler.openChildren, - GrammarConstantsCompiler.closeChildren - ] - const map = {} - types.forEach(type => { - map[type] = TreeNode - }) - return new TreeNode.ParserCombinator(undefined, map) - } -} -class AbstractParserConstantParser extends TreeNode { - constructor(children, line, parent) { - super(children, line, parent) - parent[this.identifier] = this.constantValue - } - getGetter() { - return `get ${this.identifier}() { return ${this.constantValueAsJsText} }` - } - get identifier() { - return this.getWord(1) - } - get constantValueAsJsText() { - const words = this.getWordsFrom(2) - return words.length > 1 ? `[${words.join(",")}]` : words[0] - } - get constantValue() { - return JSON.parse(this.constantValueAsJsText) - } -} -class GrammarParserConstantInt extends AbstractParserConstantParser {} -class GrammarParserConstantString extends AbstractParserConstantParser { - get constantValueAsJsText() { - return "`" + Utils.escapeBackTicks(this.constantValue) + "`" - } - get constantValue() { - return this.length ? this.childrenToString() : this.getWordsFrom(2).join(" ") - } -} -class GrammarParserConstantFloat extends AbstractParserConstantParser {} -class GrammarParserConstantBoolean extends AbstractParserConstantParser {} -class AbstractParserDefinitionParser extends AbstractExtendibleTreeNode { - createParserCombinator() { - // todo: some of these should just be on nonRootNodes - const types = [ - GrammarConstants.frequency, - GrammarConstants.inScope, - GrammarConstants.cells, - GrammarConstants.extends, - GrammarConstants.description, - GrammarConstants.catchAllParser, - GrammarConstants.catchAllCellType, - GrammarConstants.cellParser, - GrammarConstants.extensions, - GrammarConstants.version, - GrammarConstants.sortTemplate, - GrammarConstants.tags, - GrammarConstants.crux, - GrammarConstants.cruxFromId, - GrammarConstants.listDelimiter, - GrammarConstants.contentKey, - GrammarConstants.childrenKey, - GrammarConstants.uniqueFirstWord, - GrammarConstants.uniqueLine, - GrammarConstants.pattern, - GrammarConstants.baseParser, - GrammarConstants.required, - GrammarConstants.root, - GrammarConstants._extendsJsClass, - GrammarConstants._rootNodeJsHeader, - GrammarConstants.javascript, - GrammarConstants.compilesTo, - GrammarConstants.javascript, - GrammarConstants.single, - GrammarConstants.comment - ] - const map = {} - types.forEach(type => { - map[type] = TreeNode - }) - map[GrammarConstantsConstantTypes.boolean] = GrammarParserConstantBoolean - map[GrammarConstantsConstantTypes.int] = GrammarParserConstantInt - map[GrammarConstantsConstantTypes.string] = GrammarParserConstantString - map[GrammarConstantsConstantTypes.float] = GrammarParserConstantFloat - map[GrammarConstants.compilerParser] = GrammarCompilerParser - map[GrammarConstants.example] = GrammarExampleParser - return new TreeNode.ParserCombinator(undefined, map, [{ regex: HandGrammarProgram.parserFullRegex, parser: parserDefinitionParser }]) - } - get sortSpec() { - const sortSections = new Map() - const sortIndices = new Map() - const sortTemplate = this.get(GrammarConstants.sortTemplate) - if (!sortTemplate) return { sortSections, sortIndices } - sortTemplate.split(" ").forEach((section, sectionIndex) => section.split(" ").forEach(word => sortSections.set(word, sectionIndex))) - sortTemplate.split(" ").forEach((word, index) => sortIndices.set(word, index)) - return { sortSections, sortIndices } - } - toTypeScriptInterface(used = new Set()) { - let childrenInterfaces = [] - let properties = [] - const inScope = this.firstWordMapWithDefinitions - const thisId = this.id - used.add(thisId) - Object.keys(inScope).forEach(key => { - const def = inScope[key] - const map = def.firstWordMapWithDefinitions - const id = def.id - const optionalTag = def.isRequired() ? "" : "?" - const escapedKey = key.match(/\?/) ? `"${key}"` : key - const description = def.description - if (Object.keys(map).length && !used.has(id)) { - childrenInterfaces.push(def.toTypeScriptInterface(used)) - properties.push(` ${escapedKey}${optionalTag}: ${id}`) - } else properties.push(` ${escapedKey}${optionalTag}: any${description ? " // " + description : ""}`) - }) - properties.sort() - const description = this.description - const myInterface = "" - return `${childrenInterfaces.join("\n")} -${description ? "// " + description : ""} -interface ${thisId} { -${properties.join("\n")} -}`.trim() - } - get id() { - return this.getWord(0) - } - get idWithoutSuffix() { - return this.id.replace(HandGrammarProgram.parserSuffixRegex, "") - } - get constantsObject() { - const obj = this._getUniqueConstantNodes() - Object.keys(obj).forEach(key => (obj[key] = obj[key].constantValue)) - return obj - } - _getUniqueConstantNodes(extended = true) { - const obj = {} - const items = extended ? this._getChildrenByParserInExtended(AbstractParserConstantParser) : this.getChildrenByParser(AbstractParserConstantParser) - items.reverse() // Last definition wins. - items.forEach(node => (obj[node.identifier] = node)) - return obj - } - get examples() { - return this._getChildrenByParserInExtended(GrammarExampleParser) - } - get parserIdFromDefinition() { - return this.getWord(0) - } - // todo: remove? just reused parserId - get generatedClassName() { - return this.parserIdFromDefinition - } - _hasValidParserId() { - return !!this.generatedClassName - } - _isAbstract() { - return this.id.startsWith(GrammarConstants.abstractParserPrefix) - } - get cruxIfAny() { - return this.get(GrammarConstants.crux) || (this._hasFromExtended(GrammarConstants.cruxFromId) ? this.idWithoutSuffix : undefined) - } - get regexMatch() { - return this.get(GrammarConstants.pattern) - } - get firstCellEnumOptions() { - const firstCellDef = this._getMyCellTypeDefs()[0] - return firstCellDef ? firstCellDef._getEnumOptions() : undefined - } - get languageDefinitionProgram() { - return this.root - } - get customJavascriptMethods() { - const hasJsCode = this.has(GrammarConstants.javascript) - return hasJsCode ? this.getNode(GrammarConstants.javascript).childrenToString() : "" - } - get firstWordMapWithDefinitions() { - if (!this._cache_firstWordToNodeDefMap) this._cache_firstWordToNodeDefMap = this._createParserInfo(this._getInScopeParserIds()).firstWordMap - return this._cache_firstWordToNodeDefMap - } - // todo: remove - get runTimeFirstWordsInScope() { - return this._getParser().getFirstWordOptions() - } - _getMyCellTypeDefs() { - const requiredCells = this.get(GrammarConstants.cells) - if (!requiredCells) return [] - const grammarProgram = this.languageDefinitionProgram - return requiredCells.split(" ").map(cellTypeId => { - const cellTypeDef = grammarProgram.getCellTypeDefinitionById(cellTypeId) - if (!cellTypeDef) throw new Error(`No cellType "${cellTypeId}" found`) - return cellTypeDef - }) - } - // todo: what happens when you have a cell getter and constant with same name? - get cellGettersAndParserConstants() { - // todo: add cellType parsings - const grammarProgram = this.languageDefinitionProgram - const getters = this._getMyCellTypeDefs().map((cellTypeDef, index) => cellTypeDef.getGetter(index)) - const catchAllCellTypeId = this.get(GrammarConstants.catchAllCellType) - if (catchAllCellTypeId) getters.push(grammarProgram.getCellTypeDefinitionById(catchAllCellTypeId).getCatchAllGetter(getters.length)) - // Constants - Object.values(this._getUniqueConstantNodes(false)).forEach(node => getters.push(node.getGetter())) - return getters.join("\n") - } - _createParserInfo(parserIdsInScope) { - const result = { - firstWordMap: {}, - regexTests: [] - } - if (!parserIdsInScope.length) return result - const allProgramParserDefinitionsMap = this.programParserDefinitionCache - Object.keys(allProgramParserDefinitionsMap) - .filter(parserId => { - const def = allProgramParserDefinitionsMap[parserId] - return def.isOrExtendsAParserInScope(parserIdsInScope) && !def._isAbstract() - }) - .forEach(parserId => { - const def = allProgramParserDefinitionsMap[parserId] - const regex = def.regexMatch - const crux = def.cruxIfAny - const enumOptions = def.firstCellEnumOptions - if (regex) result.regexTests.push({ regex: regex, parser: def.parserIdFromDefinition }) - else if (crux) result.firstWordMap[crux] = def - else if (enumOptions) { - enumOptions.forEach(option => (result.firstWordMap[option] = def)) - } - }) - return result - } - get topParserDefinitions() { - const arr = Object.values(this.firstWordMapWithDefinitions) - arr.sort(Utils.makeSortByFn(definition => definition.frequency)) - arr.reverse() - return arr - } - _getMyInScopeParserIds(target = this) { - const parsersNode = target.getNode(GrammarConstants.inScope) - const scopedDefinitionIds = target.myScopedParserDefinitions.map(def => def.id) - return parsersNode ? parsersNode.getWordsFrom(1).concat(scopedDefinitionIds) : scopedDefinitionIds - } - _getInScopeParserIds() { - // todo: allow multiple of these if we allow mixins? - const ids = this._getMyInScopeParserIds() - const parentDef = this._getExtendedParent() - return parentDef ? ids.concat(parentDef._getInScopeParserIds()) : ids - } - get isSingle() { - const hit = this._getNodeFromExtended(GrammarConstants.single) - return hit && hit.get(GrammarConstants.single) !== "false" - } - get isUniqueLine() { - const hit = this._getNodeFromExtended(GrammarConstants.uniqueLine) - return hit && hit.get(GrammarConstants.uniqueLine) !== "false" - } - isRequired() { - return this._hasFromExtended(GrammarConstants.required) - } - getParserDefinitionByParserId(parserId) { - // todo: return catch all? - const def = this.programParserDefinitionCache[parserId] - if (def) return def - this.languageDefinitionProgram._addDefaultCatchAllBlobParser() // todo: cleanup. Why did I do this? Needs to be removed or documented. - const nodeDef = this.languageDefinitionProgram.programParserDefinitionCache[parserId] - if (!nodeDef) throw new Error(`No definition found for parser id "${parserId}". Node: \n---\n${this.asString}\n---`) - return nodeDef - } - isDefined(parserId) { - return !!this.programParserDefinitionCache[parserId] - } - get idToNodeMap() { - return this.programParserDefinitionCache - } - _amIRoot() { - if (this._cache_isRoot === undefined) this._cache_isRoot = this._languageRootNode === this - return this._cache_isRoot - } - get _languageRootNode() { - return this.root.rootParserDefinition - } - _isErrorParser() { - return this.get(GrammarConstants.baseParser) === GrammarConstants.errorParser - } - _isBlobParser() { - // Do not check extended classes. Only do once. - return this._getFromExtended(GrammarConstants.baseParser) === GrammarConstants.blobParser - } - get errorMethodToJavascript() { - if (this._isBlobParser()) return "getErrors() { return [] }" // Skips parsing child nodes for perf gains. - if (this._isErrorParser()) return "getErrors() { return this._getErrorParserErrors() }" - return "" - } - get parserAsJavascript() { - if (this._isBlobParser()) - // todo: do we need this? - return "createParserCombinator() { return new TreeNode.ParserCombinator(this._getBlobParserCatchAllParser())}" - const parserInfo = this._createParserInfo(this._getMyInScopeParserIds()) - const myFirstWordMap = parserInfo.firstWordMap - const regexRules = parserInfo.regexTests - // todo: use constants in first word maps? - // todo: cache the super extending? - const firstWords = Object.keys(myFirstWordMap) - const hasFirstWords = firstWords.length - const catchAllParser = this.catchAllParserToJavascript - if (!hasFirstWords && !catchAllParser && !regexRules.length) return "" - const firstWordsStr = hasFirstWords - ? `Object.assign(Object.assign({}, super.createParserCombinator()._getFirstWordMapAsObject()), {` + firstWords.map(firstWord => `"${firstWord}" : ${myFirstWordMap[firstWord].parserIdFromDefinition}`).join(",\n") + "})" - : "undefined" - const regexStr = regexRules.length - ? `[${regexRules - .map(rule => { - return `{regex: /${rule.regex}/, parser: ${rule.parser}}` - }) - .join(",")}]` - : "undefined" - const catchAllStr = catchAllParser ? catchAllParser : this._amIRoot() ? `this._getBlobParserCatchAllParser()` : "undefined" - const scopedParserJavascript = this.myScopedParserDefinitions.map(def => def.asJavascriptClass).join("\n\n") - return `createParserCombinator() {${scopedParserJavascript} - return new TreeNode.ParserCombinator(${catchAllStr}, ${firstWordsStr}, ${regexStr}) - }` - } - get myScopedParserDefinitions() { - return this.getChildrenByParser(parserDefinitionParser) - } - get catchAllParserToJavascript() { - if (this._isBlobParser()) return "this._getBlobParserCatchAllParser()" - const parserId = this.get(GrammarConstants.catchAllParser) - if (!parserId) return "" - const nodeDef = this.getParserDefinitionByParserId(parserId) - return nodeDef.generatedClassName - } - get asJavascriptClass() { - const components = [this.parserAsJavascript, this.errorMethodToJavascript, this.cellGettersAndParserConstants, this.customJavascriptMethods].filter(identity => identity) - const thisClassName = this.generatedClassName - if (this._amIRoot()) { - components.push(`static cachedHandGrammarProgramRoot = new HandGrammarProgram(\`${Utils.escapeBackTicks(this.parent.toString().replace(/\\/g, "\\\\"))}\`) - get handGrammarProgram() { - return this.constructor.cachedHandGrammarProgramRoot - }`) - components.push(`static rootParser = ${thisClassName}`) - } - return `class ${thisClassName} extends ${this._getExtendsClassName()} { - ${components.join("\n")} - }` - } - _getExtendsClassName() { - // todo: this is hopefully a temporary line in place for now for the case where you want your base class to extend something other than another treeclass - const hardCodedExtend = this.get(GrammarConstants._extendsJsClass) - if (hardCodedExtend) return hardCodedExtend - const extendedDef = this._getExtendedParent() - return extendedDef ? extendedDef.generatedClassName : "GrammarBackedNode" - } - _getCompilerObject() { - let obj = {} - const items = this._getChildrenByParserInExtended(GrammarCompilerParser) - items.reverse() // Last definition wins. - items.forEach(node => { - obj = Object.assign(obj, node.toObject()) // todo: what about multiline strings? - }) - return obj - } - // todo: improve layout (use bold?) - get lineHints() { - return this.cellParser.lineHints - } - isOrExtendsAParserInScope(firstWordsInScope) { - const chain = this._getParserInheritanceSet() - return firstWordsInScope.some(firstWord => chain.has(firstWord)) - } - isTerminalParser() { - return !this._getFromExtended(GrammarConstants.inScope) && !this._getFromExtended(GrammarConstants.catchAllParser) - } - get sublimeMatchLine() { - const regexMatch = this.regexMatch - if (regexMatch) return `'${regexMatch}'` - const cruxMatch = this.cruxIfAny - if (cruxMatch) return `'^ *${Utils.escapeRegExp(cruxMatch)}(?: |$)'` - const enumOptions = this.firstCellEnumOptions - if (enumOptions) return `'^ *(${Utils.escapeRegExp(enumOptions.join("|"))})(?: |$)'` - } - // todo: refactor. move some parts to cellParser? - _toSublimeMatchBlock() { - const defaultHighlightScope = "source" - const program = this.languageDefinitionProgram - const cellParser = this.cellParser - const requiredCellTypeIds = cellParser.getRequiredCellTypeIds() - const catchAllCellTypeId = cellParser.catchAllCellTypeId - const firstCellTypeDef = program.getCellTypeDefinitionById(requiredCellTypeIds[0]) - const firstWordHighlightScope = (firstCellTypeDef ? firstCellTypeDef.highlightScope : defaultHighlightScope) + "." + this.parserIdFromDefinition - const topHalf = ` '${this.parserIdFromDefinition}': - - match: ${this.sublimeMatchLine} - scope: ${firstWordHighlightScope}` - if (catchAllCellTypeId) requiredCellTypeIds.push(catchAllCellTypeId) - if (!requiredCellTypeIds.length) return topHalf - const captures = requiredCellTypeIds - .map((cellTypeId, index) => { - const cellTypeDefinition = program.getCellTypeDefinitionById(cellTypeId) // todo: cleanup - if (!cellTypeDefinition) throw new Error(`No ${GrammarConstants.cellType} ${cellTypeId} found`) // todo: standardize error/capture error at grammar time - return ` ${index + 1}: ${(cellTypeDefinition.highlightScope || defaultHighlightScope) + "." + cellTypeDefinition.cellTypeId}` - }) - .join("\n") - const cellTypesToRegex = cellTypeIds => cellTypeIds.map(cellTypeId => `({{${cellTypeId}}})?`).join(" ?") - return `${topHalf} - push: - - match: ${cellTypesToRegex(requiredCellTypeIds)} - captures: -${captures} - - match: $ - pop: true` - } - _getParserInheritanceSet() { - if (!this._cache_parserInheritanceSet) this._cache_parserInheritanceSet = new Set(this.ancestorParserIdsArray) - return this._cache_parserInheritanceSet - } - get ancestorParserIdsArray() { - if (!this._cache_ancestorParserIdsArray) { - this._cache_ancestorParserIdsArray = this._getAncestorsArray().map(def => def.parserIdFromDefinition) - this._cache_ancestorParserIdsArray.reverse() - } - return this._cache_ancestorParserIdsArray - } - get programParserDefinitionCache() { - if (!this._cache_parserDefinitionParsers) this._cache_parserDefinitionParsers = this.isRoot || this.hasParserDefinitions ? this.makeProgramParserDefinitionCache() : this.parent.programParserDefinitionCache - return this._cache_parserDefinitionParsers - } - get hasParserDefinitions() { - return !!this.getChildrenByParser(parserDefinitionParser).length - } - makeProgramParserDefinitionCache() { - const scopedParsers = this.getChildrenByParser(parserDefinitionParser) - const cache = Object.assign({}, this.parent.programParserDefinitionCache) // todo. We don't really need this. we should just lookup the parent if no local hits. - scopedParsers.forEach(parserDefinitionParser => (cache[parserDefinitionParser.parserIdFromDefinition] = parserDefinitionParser)) - return cache - } - get description() { - return this._getFromExtended(GrammarConstants.description) || "" - } - get frequency() { - const val = this._getFromExtended(GrammarConstants.frequency) - return val ? parseFloat(val) : 0 - } - _getExtendedParserId() { - const ancestorIds = this.ancestorParserIdsArray - if (ancestorIds.length > 1) return ancestorIds[ancestorIds.length - 2] - } - _toStumpString() { - const crux = this.cruxIfAny - const cellArray = this.cellParser.getCellArray().filter((item, index) => index) // for now this only works for keyword langs - if (!cellArray.length) - // todo: remove this! just doing it for now until we refactor getCellArray to handle catchAlls better. - return "" - const cells = new TreeNode(cellArray.map((cell, index) => cell._toStumpInput(crux)).join("\n")) - return `div - label ${crux} -${cells.toString(1)}` - } - toStumpString() { - const nodeBreakSymbol = "\n" - return this._getConcreteNonErrorInScopeNodeDefinitions(this._getInScopeParserIds()) - .map(def => def._toStumpString()) - .filter(identity => identity) - .join(nodeBreakSymbol) - } - _generateSimulatedLine(seed) { - // todo: generate simulated data from catch all - const crux = this.cruxIfAny - return this.cellParser - .getCellArray() - .map((cell, index) => (!index && crux ? crux : cell.synthesizeCell(seed))) - .join(" ") - } - _shouldSynthesize(def, parserChain) { - if (def._isErrorParser() || def._isAbstract()) return false - if (parserChain.includes(def.id)) return false - const tags = def.get(GrammarConstants.tags) - if (tags && tags.includes(GrammarConstantsMisc.doNotSynthesize)) return false - return true - } - // Get all definitions in this current scope down, even ones that are scoped inside other definitions. - get inScopeAndDescendantDefinitions() { - return this.languageDefinitionProgram._collectAllDefinitions(Object.values(this.programParserDefinitionCache), []) - } - _collectAllDefinitions(defs, collection = []) { - defs.forEach(def => { - collection.push(def) - def._collectAllDefinitions(def.getChildrenByParser(parserDefinitionParser), collection) - }) - return collection - } - get cruxPath() { - const parentPath = this.parent.cruxPath - return (parentPath ? parentPath + " " : "") + this.cruxIfAny - } - get cruxPathAsColumnName() { - return this.cruxPath.replace(/ /g, "_") - } - // Get every definition that extends from this one, even ones that are scoped inside other definitions. - get concreteDescendantDefinitions() { - const { inScopeAndDescendantDefinitions, id } = this - return Object.values(inScopeAndDescendantDefinitions).filter(def => def._doesExtend(id) && !def._isAbstract()) - } - get concreteInScopeDescendantDefinitions() { - // Note: non-recursive. - const defs = this.programParserDefinitionCache - const id = this.id - return Object.values(defs).filter(def => def._doesExtend(id) && !def._isAbstract()) - } - _getConcreteNonErrorInScopeNodeDefinitions(parserIds) { - const defs = [] - parserIds.forEach(parserId => { - const def = this.getParserDefinitionByParserId(parserId) - if (def._isErrorParser()) return - else if (def._isAbstract()) def.concreteInScopeDescendantDefinitions.forEach(def => defs.push(def)) - else defs.push(def) - }) - return defs - } - // todo: refactor - synthesizeNode(nodeCount = 1, indentCount = -1, parsersAlreadySynthesized = [], seed = Date.now()) { - let inScopeParserIds = this._getInScopeParserIds() - const catchAllParserId = this._getFromExtended(GrammarConstants.catchAllParser) - if (catchAllParserId) inScopeParserIds.push(catchAllParserId) - const thisId = this.id - if (!parsersAlreadySynthesized.includes(thisId)) parsersAlreadySynthesized.push(thisId) - const lines = [] - while (nodeCount) { - const line = this._generateSimulatedLine(seed) - if (line) lines.push(" ".repeat(indentCount >= 0 ? indentCount : 0) + line) - this._getConcreteNonErrorInScopeNodeDefinitions(inScopeParserIds.filter(parserId => !parsersAlreadySynthesized.includes(parserId))) - .filter(def => this._shouldSynthesize(def, parsersAlreadySynthesized)) - .forEach(def => { - const chain = parsersAlreadySynthesized // .slice(0) - chain.push(def.id) - def.synthesizeNode(1, indentCount + 1, chain, seed).forEach(line => lines.push(line)) - }) - nodeCount-- - } - return lines - } - get cellParser() { - if (!this._cellParser) { - const cellParsingStrategy = this._getFromExtended(GrammarConstants.cellParser) - if (cellParsingStrategy === GrammarCellParser.postfix) this._cellParser = new PostfixCellParser(this) - else if (cellParsingStrategy === GrammarCellParser.omnifix) this._cellParser = new OmnifixCellParser(this) - else this._cellParser = new PrefixCellParser(this) - } - return this._cellParser - } -} -// todo: remove? -class parserDefinitionParser extends AbstractParserDefinitionParser {} -// HandGrammarProgram is a constructor that takes a grammar file, and builds a new -// constructor for new language that takes files in that language to execute, compile, etc. -class HandGrammarProgram extends AbstractParserDefinitionParser { - createParserCombinator() { - const map = {} - map[GrammarConstants.comment] = TreeNode - return new TreeNode.ParserCombinator(UnknownParserNode, map, [ - { regex: HandGrammarProgram.blankLineRegex, parser: TreeNode }, - { regex: HandGrammarProgram.parserFullRegex, parser: parserDefinitionParser }, - { regex: HandGrammarProgram.cellTypeFullRegex, parser: cellTypeDefinitionParser } - ]) - } - // rootParser - // Note: this is some so far unavoidable tricky code. We need to eval the transpiled JS, in a NodeJS or browser environment. - _compileAndReturnRootParser() { - if (this._cache_rootParser) return this._cache_rootParser - if (!this.isNodeJs()) { - this._cache_rootParser = Utils.appendCodeAndReturnValueOnWindow(this.toBrowserJavascript(), this.rootParserId).rootParser - return this._cache_rootParser - } - const path = require("path") - const code = this.toNodeJsJavascript(__dirname) - try { - const rootNode = this._requireInVmNodeJsRootParser(code) - this._cache_rootParser = rootNode.rootParser - if (!this._cache_rootParser) throw new Error(`Failed to rootParser`) - } catch (err) { - // todo: figure out best error pattern here for debugging - console.log(err) - // console.log(`Error in code: `) - // console.log(new TreeNode(code).toStringWithLineNumbers()) - } - return this._cache_rootParser - } - get cruxPath() { - return "" - } - trainModel(programs, rootParser = this.compileAndReturnRootParser()) { - const nodeDefs = this.validConcreteAndAbstractParserDefinitions - const nodeDefCountIncludingRoot = nodeDefs.length + 1 - const matrix = Utils.makeMatrix(nodeDefCountIncludingRoot, nodeDefCountIncludingRoot, 0) - const idToIndex = {} - const indexToId = {} - nodeDefs.forEach((def, index) => { - const id = def.id - idToIndex[id] = index + 1 - indexToId[index + 1] = id - }) - programs.forEach(code => { - const exampleProgram = new rootParser(code) - exampleProgram.topDownArray.forEach(node => { - const nodeIndex = idToIndex[node.definition.id] - const parentNode = node.parent - if (!nodeIndex) return undefined - if (parentNode.isRoot()) matrix[0][nodeIndex]++ - else { - const parentIndex = idToIndex[parentNode.definition.id] - if (!parentIndex) return undefined - matrix[parentIndex][nodeIndex]++ - } - }) - }) - return { - idToIndex, - indexToId, - matrix - } - } - _mapPredictions(predictionsVector, model) { - const total = Utils.sum(predictionsVector) - const predictions = predictionsVector.slice(1).map((count, index) => { - const id = model.indexToId[index + 1] - return { - id, - def: this.getParserDefinitionByParserId(id), - count, - prob: count / total - } - }) - predictions.sort(Utils.makeSortByFn(prediction => prediction.count)).reverse() - return predictions - } - predictChildren(model, node) { - return this._mapPredictions(this._predictChildren(model, node), model) - } - predictParents(model, node) { - return this._mapPredictions(this._predictParents(model, node), model) - } - _predictChildren(model, node) { - return model.matrix[node.isRoot() ? 0 : model.idToIndex[node.definition.id]] - } - _predictParents(model, node) { - if (node.isRoot()) return [] - const nodeIndex = model.idToIndex[node.definition.id] - return model.matrix.map(row => row[nodeIndex]) - } - _setDirName(name) { - this._dirName = name - return this - } - _requireInVmNodeJsRootParser(code) { - const vm = require("vm") - const path = require("path") - // todo: cleanup up - try { - Object.keys(GlobalNamespaceAdditions).forEach(key => { - global[key] = require("./" + GlobalNamespaceAdditions[key]) - }) - global.require = require - global.__dirname = this._dirName - global.module = {} - return vm.runInThisContext(code) - } catch (err) { - // todo: figure out best error pattern here for debugging - console.log(`Error in compiled grammar code for language "${this.grammarName}"`) - // console.log(new TreeNode(code).toStringWithLineNumbers()) - console.log(err) - throw err - } - } - examplesToTestBlocks(rootParser = this.compileAndReturnRootParser(), expectedErrorMessage = "") { - const testBlocks = {} - this.validConcreteAndAbstractParserDefinitions.forEach(def => - def.examples.forEach(example => { - const id = def.id + example.content - testBlocks[id] = equal => { - const exampleProgram = new rootParser(example.childrenToString()) - const errors = exampleProgram.getAllErrors(example._getLineNumber() + 1) - equal(errors.join("\n"), expectedErrorMessage, `Expected no errors in ${id}`) - } - }) - ) - return testBlocks - } - toReadMe() { - const languageName = this.extensionName - const rootNodeDef = this.rootParserDefinition - const cellTypes = this.cellTypeDefinitions - const parserFamilyTree = this.parserFamilyTree - const exampleNode = rootNodeDef.examples[0] - return `title ${languageName} Readme - -paragraph ${rootNodeDef.description} - -subtitle Quick Example - -code -${exampleNode ? exampleNode.childrenToString(1) : ""} - -subtitle Quick facts about ${languageName} - -list - - ${languageName} has ${parserFamilyTree.topDownArray.length} node types. - - ${languageName} has ${Object.keys(cellTypes).length} cell types - - The source code for ${languageName} is ${this.topDownArray.length} lines long. - -subtitle Installing - -code - npm install . - -subtitle Testing - -code - node test.js - -subtitle Node Types - -code -${parserFamilyTree.toString(1)} - -subtitle Cell Types - -code -${new TreeNode(Object.keys(cellTypes).join("\n")).toString(1)} - -subtitle Road Map - -paragraph Here are the "todos" present in the source code for ${languageName}: - -list -${this.topDownArray - .filter(node => node.getWord(0) === "todo") - .map(node => ` - ${node.getLine()}`) - .join("\n")} - -paragraph This readme was auto-generated using the - link https://github.com/breck7/scrollsdk ScrollSDK.` - } - toBundle() { - const files = {} - const rootNodeDef = this.rootParserDefinition - const languageName = this.extensionName - const example = rootNodeDef.examples[0] - const sampleCode = example ? example.childrenToString() : "" - files[GrammarBundleFiles.package] = JSON.stringify( - { - name: languageName, - private: true, - dependencies: { - scrollsdk: TreeNode.getVersion() - } - }, - null, - 2 - ) - files[GrammarBundleFiles.readme] = this.toReadMe() - const testCode = `const program = new ${languageName}(sampleCode) -const errors = program.getAllErrors() -console.log("Sample program compiled with " + errors.length + " errors.") -if (errors.length) - console.log(errors.map(error => error.message))` - const nodePath = `${languageName}.node.js` - files[nodePath] = this.toNodeJsJavascript() - files[GrammarBundleFiles.indexJs] = `module.exports = require("./${nodePath}")` - const browserPath = `${languageName}.browser.js` - files[browserPath] = this.toBrowserJavascript() - files[GrammarBundleFiles.indexHtml] = ` - - - -` - const samplePath = "sample." + this.extensionName - files[samplePath] = sampleCode.toString() - files[GrammarBundleFiles.testJs] = `const ${languageName} = require("./index.js") -/*keep-line*/ const sampleCode = require("fs").readFileSync("${samplePath}", "utf8") -${testCode}` - return files - } - get targetExtension() { - return this.rootParserDefinition.get(GrammarConstants.compilesTo) - } - get cellTypeDefinitions() { - if (this._cache_cellTypes) return this._cache_cellTypes - const types = {} - // todo: add built in word types? - this.getChildrenByParser(cellTypeDefinitionParser).forEach(type => (types[type.cellTypeId] = type)) - this._cache_cellTypes = types - return types - } - getCellTypeDefinitionById(cellTypeId) { - // todo: return unknownCellTypeDefinition? or is that handled somewhere else? - return this.cellTypeDefinitions[cellTypeId] - } - get parserFamilyTree() { - const tree = new TreeNode() - Object.values(this.validConcreteAndAbstractParserDefinitions).forEach(node => tree.touchNode(node.ancestorParserIdsArray.join(" "))) - return tree - } - get languageDefinitionProgram() { - return this - } - get validConcreteAndAbstractParserDefinitions() { - return this.getChildrenByParser(parserDefinitionParser).filter(node => node._hasValidParserId()) - } - get lastRootParserDefinitionNode() { - return this.findLast(def => def instanceof AbstractParserDefinitionParser && def.has(GrammarConstants.root) && def._hasValidParserId()) - } - _initRootParserDefinitionNode() { - if (this._cache_rootParserNode) return - if (!this._cache_rootParserNode) this._cache_rootParserNode = this.lastRootParserDefinitionNode - // By default, have a very permissive basic root node. - // todo: whats the best design pattern to use for this sort of thing? - if (!this._cache_rootParserNode) { - this._cache_rootParserNode = this.concat(`${GrammarConstants.DefaultRootParser} - ${GrammarConstants.root} - ${GrammarConstants.catchAllParser} ${GrammarConstants.BlobParser}`)[0] - this._addDefaultCatchAllBlobParser() - } - } - get rootParserDefinition() { - this._initRootParserDefinitionNode() - return this._cache_rootParserNode - } - _addDefaultCatchAllBlobParser() { - if (this._addedCatchAll) return - this._addedCatchAll = true - delete this._cache_parserDefinitionParsers - this.concat(`${GrammarConstants.BlobParser} - ${GrammarConstants.baseParser} ${GrammarConstants.blobParser}`) - } - get extensionName() { - return this.grammarName - } - get id() { - return this.rootParserId - } - get rootParserId() { - return this.rootParserDefinition.parserIdFromDefinition - } - get grammarName() { - return this.rootParserId.replace(HandGrammarProgram.parserSuffixRegex, "") - } - _getMyInScopeParserIds() { - return super._getMyInScopeParserIds(this.rootParserDefinition) - } - _getInScopeParserIds() { - const parsersNode = this.rootParserDefinition.getNode(GrammarConstants.inScope) - return parsersNode ? parsersNode.getWordsFrom(1) : [] - } - makeProgramParserDefinitionCache() { - const cache = {} - this.getChildrenByParser(parserDefinitionParser).forEach(parserDefinitionParser => (cache[parserDefinitionParser.parserIdFromDefinition] = parserDefinitionParser)) - return cache - } - compileAndReturnRootParser() { - if (!this._cached_rootParser) { - const rootDef = this.rootParserDefinition - this._cached_rootParser = rootDef.languageDefinitionProgram._compileAndReturnRootParser() - } - return this._cached_rootParser - } - get fileExtensions() { - return this.rootParserDefinition.get(GrammarConstants.extensions) ? this.rootParserDefinition.get(GrammarConstants.extensions).split(" ").join(",") : this.extensionName - } - toNodeJsJavascript(scrollsdkProductsPath = "scrollsdk/products") { - return this._rootNodeDefToJavascriptClass(scrollsdkProductsPath, true).trim() - } - toBrowserJavascript() { - return this._rootNodeDefToJavascriptClass("", false).trim() - } - _rootNodeDefToJavascriptClass(scrollsdkProductsPath, forNodeJs = true) { - const defs = this.validConcreteAndAbstractParserDefinitions - // todo: throw if there is no root node defined - const parserClasses = defs.map(def => def.asJavascriptClass).join("\n\n") - const rootDef = this.rootParserDefinition - const rootNodeJsHeader = forNodeJs && rootDef._getConcatBlockStringFromExtended(GrammarConstants._rootNodeJsHeader) - const rootName = rootDef.generatedClassName - if (!rootName) throw new Error(`Root Node Type Has No Name`) - let exportScript = "" - if (forNodeJs) - exportScript = `module.exports = ${rootName}; -${rootName}` - else exportScript = `window.${rootName} = ${rootName}` - let nodeJsImports = `` - if (forNodeJs) { - const path = require("path") - nodeJsImports = Object.keys(GlobalNamespaceAdditions) - .map(key => { - const thePath = scrollsdkProductsPath + "/" + GlobalNamespaceAdditions[key] - return `const { ${key} } = require("${thePath.replace(/\\/g, "\\\\")}")` // escape windows backslashes - }) - .join("\n") - } - // todo: we can expose the previous "constants" export, if needed, via the grammar, which we preserve. - return `{ -${nodeJsImports} -${rootNodeJsHeader ? rootNodeJsHeader : ""} -${parserClasses} - -${exportScript} -} -` - } - toSublimeSyntaxFile() { - const cellTypeDefs = this.cellTypeDefinitions - const variables = Object.keys(cellTypeDefs) - .map(name => ` ${name}: '${cellTypeDefs[name].regexString}'`) - .join("\n") - const defs = this.validConcreteAndAbstractParserDefinitions.filter(kw => !kw._isAbstract()) - const parserContexts = defs.map(def => def._toSublimeMatchBlock()).join("\n\n") - const includes = defs.map(parserDef => ` - include: '${parserDef.parserIdFromDefinition}'`).join("\n") - return `%YAML 1.2 ---- -name: ${this.extensionName} -file_extensions: [${this.fileExtensions}] -scope: source.${this.extensionName} - -variables: -${variables} - -contexts: - main: -${includes} - -${parserContexts}` - } -} -HandGrammarProgram.makeParserId = str => Utils._replaceNonAlphaNumericCharactersWithCharCodes(str).replace(HandGrammarProgram.parserSuffixRegex, "") + GrammarConstants.parserSuffix -HandGrammarProgram.makeCellTypeId = str => Utils._replaceNonAlphaNumericCharactersWithCharCodes(str).replace(HandGrammarProgram.cellTypeSuffixRegex, "") + GrammarConstants.cellTypeSuffix -HandGrammarProgram.parserSuffixRegex = new RegExp(GrammarConstants.parserSuffix + "$") -HandGrammarProgram.parserFullRegex = new RegExp("^[a-zA-Z0-9_]+" + GrammarConstants.parserSuffix + "$") -HandGrammarProgram.blankLineRegex = new RegExp("^$") -HandGrammarProgram.cellTypeSuffixRegex = new RegExp(GrammarConstants.cellTypeSuffix + "$") -HandGrammarProgram.cellTypeFullRegex = new RegExp("^[a-zA-Z0-9_]+" + GrammarConstants.cellTypeSuffix + "$") -HandGrammarProgram._languages = {} -HandGrammarProgram._parsers = {} -const PreludeKinds = {} -PreludeKinds[PreludeCellTypeIds.anyCell] = GrammarAnyCell -PreludeKinds[PreludeCellTypeIds.keywordCell] = GrammarKeywordCell -PreludeKinds[PreludeCellTypeIds.floatCell] = GrammarFloatCell -PreludeKinds[PreludeCellTypeIds.numberCell] = GrammarFloatCell -PreludeKinds[PreludeCellTypeIds.bitCell] = GrammarBitCell -PreludeKinds[PreludeCellTypeIds.boolCell] = GrammarBoolCell -PreludeKinds[PreludeCellTypeIds.intCell] = GrammarIntCell -class UnknownGrammarProgram extends TreeNode { - _inferRootNodeForAPrefixLanguage(grammarName) { - grammarName = HandGrammarProgram.makeParserId(grammarName) - const rootNode = new TreeNode(`${grammarName} - ${GrammarConstants.root}`) - // note: right now we assume 1 global cellTypeMap and parserMap per grammar. But we may have scopes in the future? - const rootNodeNames = this.getFirstWords() - .filter(identity => identity) - .map(word => HandGrammarProgram.makeParserId(word)) - rootNode - .nodeAt(0) - .touchNode(GrammarConstants.inScope) - .setWordsFrom(1, Array.from(new Set(rootNodeNames))) - return rootNode - } - _renameIntegerKeywords(clone) { - // todo: why are we doing this? - for (let node of clone.getTopDownArrayIterator()) { - const firstWordIsAnInteger = !!node.firstWord.match(/^\d+$/) - const parentFirstWord = node.parent.firstWord - if (firstWordIsAnInteger && parentFirstWord) node.setFirstWord(HandGrammarProgram.makeParserId(parentFirstWord + UnknownGrammarProgram._childSuffix)) - } - } - _getKeywordMaps(clone) { - const keywordsToChildKeywords = {} - const keywordsToNodeInstances = {} - for (let node of clone.getTopDownArrayIterator()) { - const firstWord = node.firstWord - if (!keywordsToChildKeywords[firstWord]) keywordsToChildKeywords[firstWord] = {} - if (!keywordsToNodeInstances[firstWord]) keywordsToNodeInstances[firstWord] = [] - keywordsToNodeInstances[firstWord].push(node) - node.forEach(child => (keywordsToChildKeywords[firstWord][child.firstWord] = true)) - } - return { keywordsToChildKeywords: keywordsToChildKeywords, keywordsToNodeInstances: keywordsToNodeInstances } - } - _inferParserDef(firstWord, globalCellTypeMap, childFirstWords, instances) { - const edgeSymbol = this.edgeSymbol - const parserId = HandGrammarProgram.makeParserId(firstWord) - const nodeDefNode = new TreeNode(parserId).nodeAt(0) - const childParserIds = childFirstWords.map(word => HandGrammarProgram.makeParserId(word)) - if (childParserIds.length) nodeDefNode.touchNode(GrammarConstants.inScope).setWordsFrom(1, childParserIds) - const cellsForAllInstances = instances - .map(line => line.content) - .filter(identity => identity) - .map(line => line.split(edgeSymbol)) - const instanceCellCounts = new Set(cellsForAllInstances.map(cells => cells.length)) - const maxCellsOnLine = Math.max(...Array.from(instanceCellCounts)) - const minCellsOnLine = Math.min(...Array.from(instanceCellCounts)) - let catchAllCellType - let cellTypeIds = [] - for (let cellIndex = 0; cellIndex < maxCellsOnLine; cellIndex++) { - const cellType = this._getBestCellType( - firstWord, - instances.length, - maxCellsOnLine, - cellsForAllInstances.map(cells => cells[cellIndex]) - ) - if (!globalCellTypeMap.has(cellType.cellTypeId)) globalCellTypeMap.set(cellType.cellTypeId, cellType.cellTypeDefinition) - cellTypeIds.push(cellType.cellTypeId) - } - if (maxCellsOnLine > minCellsOnLine) { - //columns = columns.slice(0, min) - catchAllCellType = cellTypeIds.pop() - while (cellTypeIds[cellTypeIds.length - 1] === catchAllCellType) { - cellTypeIds.pop() - } - } - const needsCruxProperty = !firstWord.endsWith(UnknownGrammarProgram._childSuffix + GrammarConstants.parserSuffix) // todo: cleanup - if (needsCruxProperty) nodeDefNode.set(GrammarConstants.crux, firstWord) - if (catchAllCellType) nodeDefNode.set(GrammarConstants.catchAllCellType, catchAllCellType) - const cellLine = cellTypeIds.slice() - cellLine.unshift(PreludeCellTypeIds.keywordCell) - if (cellLine.length > 0) nodeDefNode.set(GrammarConstants.cells, cellLine.join(edgeSymbol)) - //if (!catchAllCellType && cellTypeIds.length === 1) nodeDefNode.set(GrammarConstants.cells, cellTypeIds[0]) - // Todo: add conditional frequencies - return nodeDefNode.parent.toString() - } - // inferGrammarFileForAnSSVLanguage(grammarName: string): string { - // grammarName = HandGrammarProgram.makeParserId(grammarName) - // const rootNode = new TreeNode(`${grammarName} - // ${GrammarConstants.root}`) - // // note: right now we assume 1 global cellTypeMap and parserMap per grammar. But we may have scopes in the future? - // const rootNodeNames = this.getFirstWords().map(word => HandGrammarProgram.makeParserId(word)) - // rootNode - // .nodeAt(0) - // .touchNode(GrammarConstants.inScope) - // .setWordsFrom(1, Array.from(new Set(rootNodeNames))) - // return rootNode - // } - inferGrammarFileForAKeywordLanguage(grammarName) { - const clone = this.clone() - this._renameIntegerKeywords(clone) - const { keywordsToChildKeywords, keywordsToNodeInstances } = this._getKeywordMaps(clone) - const globalCellTypeMap = new Map() - globalCellTypeMap.set(PreludeCellTypeIds.keywordCell, undefined) - const parserDefs = Object.keys(keywordsToChildKeywords) - .filter(identity => identity) - .map(firstWord => this._inferParserDef(firstWord, globalCellTypeMap, Object.keys(keywordsToChildKeywords[firstWord]), keywordsToNodeInstances[firstWord])) - const cellTypeDefs = [] - globalCellTypeMap.forEach((def, id) => cellTypeDefs.push(def ? def : id)) - const nodeBreakSymbol = this.nodeBreakSymbol - return this._formatCode([this._inferRootNodeForAPrefixLanguage(grammarName).toString(), cellTypeDefs.join(nodeBreakSymbol), parserDefs.join(nodeBreakSymbol)].filter(identity => identity).join("\n")) - } - _formatCode(code) { - // todo: make this run in browser too - if (!this.isNodeJs()) return code - const grammarProgram = new HandGrammarProgram(TreeNode.fromDisk(__dirname + "/../langs/grammar/grammar.grammar")) - const rootParser = grammarProgram.compileAndReturnRootParser() - const program = new rootParser(code) - return program.format().toString() - } - _getBestCellType(firstWord, instanceCount, maxCellsOnLine, allValues) { - const asSet = new Set(allValues) - const edgeSymbol = this.edgeSymbol - const values = Array.from(asSet).filter(identity => identity) - const every = fn => { - for (let index = 0; index < values.length; index++) { - if (!fn(values[index])) return false - } - return true - } - if (every(str => str === "0" || str === "1")) return { cellTypeId: PreludeCellTypeIds.bitCell } - if ( - every(str => { - const num = parseInt(str) - if (isNaN(num)) return false - return num.toString() === str - }) - ) { - return { cellTypeId: PreludeCellTypeIds.intCell } - } - if (every(str => str.match(/^-?\d*.?\d+$/))) return { cellTypeId: PreludeCellTypeIds.floatCell } - const bools = new Set(["1", "0", "true", "false", "t", "f", "yes", "no"]) - if (every(str => bools.has(str.toLowerCase()))) return { cellTypeId: PreludeCellTypeIds.boolCell } - // todo: cleanup - const enumLimit = 30 - if (instanceCount > 1 && maxCellsOnLine === 1 && allValues.length > asSet.size && asSet.size < enumLimit) - return { - cellTypeId: HandGrammarProgram.makeCellTypeId(firstWord), - cellTypeDefinition: `${HandGrammarProgram.makeCellTypeId(firstWord)} - enum ${values.join(edgeSymbol)}` - } - return { cellTypeId: PreludeCellTypeIds.anyCell } - } -} -UnknownGrammarProgram._childSuffix = "Child" - -module.exports = { GrammarConstants, PreludeCellTypeIds, HandGrammarProgram, GrammarBackedNode, UnknownParserError, UnknownGrammarProgram } diff --git a/node_modules/scroll-cli/node_modules/scrollsdk/products/Path.js b/node_modules/scroll-cli/node_modules/scrollsdk/products/Path.js deleted file mode 100644 index e8c62e145d..0000000000 --- a/node_modules/scroll-cli/node_modules/scrollsdk/products/Path.js +++ /dev/null @@ -1,496 +0,0 @@ -// https://github.com/browserify/path-browserify/blob/master/index.js - -function assertPath(path) { - if (typeof path !== "string") { - throw new TypeError("Path must be a string. Received " + JSON.stringify(path)) - } -} - -// Resolves . and .. elements in a path with directory names -function normalizeStringPosix(path, allowAboveRoot) { - var res = "" - var lastSegmentLength = 0 - var lastSlash = -1 - var dots = 0 - var code - for (var i = 0; i <= path.length; ++i) { - if (i < path.length) code = path.charCodeAt(i) - else if (code === 47 /*/*/) break - else code = 47 /*/*/ - if (code === 47 /*/*/) { - if (lastSlash === i - 1 || dots === 1) { - // NOOP - } else if (lastSlash !== i - 1 && dots === 2) { - if (res.length < 2 || lastSegmentLength !== 2 || res.charCodeAt(res.length - 1) !== 46 /*.*/ || res.charCodeAt(res.length - 2) !== 46 /*.*/) { - if (res.length > 2) { - var lastSlashIndex = res.lastIndexOf("/") - if (lastSlashIndex !== res.length - 1) { - if (lastSlashIndex === -1) { - res = "" - lastSegmentLength = 0 - } else { - res = res.slice(0, lastSlashIndex) - lastSegmentLength = res.length - 1 - res.lastIndexOf("/") - } - lastSlash = i - dots = 0 - continue - } - } else if (res.length === 2 || res.length === 1) { - res = "" - lastSegmentLength = 0 - lastSlash = i - dots = 0 - continue - } - } - if (allowAboveRoot) { - if (res.length > 0) res += "/.." - else res = ".." - lastSegmentLength = 2 - } - } else { - if (res.length > 0) res += "/" + path.slice(lastSlash + 1, i) - else res = path.slice(lastSlash + 1, i) - lastSegmentLength = i - lastSlash - 1 - } - lastSlash = i - dots = 0 - } else if (code === 46 /*.*/ && dots !== -1) { - ++dots - } else { - dots = -1 - } - } - return res -} - -function _format(sep, pathObject) { - var dir = pathObject.dir || pathObject.root - var base = pathObject.base || (pathObject.name || "") + (pathObject.ext || "") - if (!dir) { - return base - } - if (dir === pathObject.root) { - return dir + base - } - return dir + sep + base -} - -var posix = { - // path.resolve([from ...], to) - resolve: function resolve() { - var resolvedPath = "" - var resolvedAbsolute = false - var cwd - - for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) { - var path - if (i >= 0) path = arguments[i] - else { - if (cwd === undefined) cwd = process.cwd() - path = cwd - } - - assertPath(path) - - // Skip empty entries - if (path.length === 0) { - continue - } - - resolvedPath = path + "/" + resolvedPath - resolvedAbsolute = path.charCodeAt(0) === 47 /*/*/ - } - - // At this point the path should be resolved to a full absolute path, but - // handle relative paths to be safe (might happen when process.cwd() fails) - - // Normalize the path - resolvedPath = normalizeStringPosix(resolvedPath, !resolvedAbsolute) - - if (resolvedAbsolute) { - if (resolvedPath.length > 0) return "/" + resolvedPath - else return "/" - } else if (resolvedPath.length > 0) { - return resolvedPath - } else { - return "." - } - }, - - normalize: function normalize(path) { - assertPath(path) - - if (path.length === 0) return "." - - var isAbsolute = path.charCodeAt(0) === 47 /*/*/ - var trailingSeparator = path.charCodeAt(path.length - 1) === 47 /*/*/ - - // Normalize the path - path = normalizeStringPosix(path, !isAbsolute) - - if (path.length === 0 && !isAbsolute) path = "." - if (path.length > 0 && trailingSeparator) path += "/" - - if (isAbsolute) return "/" + path - return path - }, - - isAbsolute: function isAbsolute(path) { - assertPath(path) - return path.length > 0 && path.charCodeAt(0) === 47 /*/*/ - }, - - join: function join() { - if (arguments.length === 0) return "." - var joined - for (var i = 0; i < arguments.length; ++i) { - var arg = arguments[i] - assertPath(arg) - if (arg.length > 0) { - if (joined === undefined) joined = arg - else joined += "/" + arg - } - } - if (joined === undefined) return "." - return posix.normalize(joined) - }, - - relative: function relative(from, to) { - assertPath(from) - assertPath(to) - - if (from === to) return "" - - from = posix.resolve(from) - to = posix.resolve(to) - - if (from === to) return "" - - // Trim any leading backslashes - var fromStart = 1 - for (; fromStart < from.length; ++fromStart) { - if (from.charCodeAt(fromStart) !== 47 /*/*/) break - } - var fromEnd = from.length - var fromLen = fromEnd - fromStart - - // Trim any leading backslashes - var toStart = 1 - for (; toStart < to.length; ++toStart) { - if (to.charCodeAt(toStart) !== 47 /*/*/) break - } - var toEnd = to.length - var toLen = toEnd - toStart - - // Compare paths to find the longest common path from root - var length = fromLen < toLen ? fromLen : toLen - var lastCommonSep = -1 - var i = 0 - for (; i <= length; ++i) { - if (i === length) { - if (toLen > length) { - if (to.charCodeAt(toStart + i) === 47 /*/*/) { - // We get here if `from` is the exact base path for `to`. - // For example: from='/foo/bar'; to='/foo/bar/baz' - return to.slice(toStart + i + 1) - } else if (i === 0) { - // We get here if `from` is the root - // For example: from='/'; to='/foo' - return to.slice(toStart + i) - } - } else if (fromLen > length) { - if (from.charCodeAt(fromStart + i) === 47 /*/*/) { - // We get here if `to` is the exact base path for `from`. - // For example: from='/foo/bar/baz'; to='/foo/bar' - lastCommonSep = i - } else if (i === 0) { - // We get here if `to` is the root. - // For example: from='/foo'; to='/' - lastCommonSep = 0 - } - } - break - } - var fromCode = from.charCodeAt(fromStart + i) - var toCode = to.charCodeAt(toStart + i) - if (fromCode !== toCode) break - else if (fromCode === 47 /*/*/) lastCommonSep = i - } - - var out = "" - // Generate the relative path based on the path difference between `to` - // and `from` - for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) { - if (i === fromEnd || from.charCodeAt(i) === 47 /*/*/) { - if (out.length === 0) out += ".." - else out += "/.." - } - } - - // Lastly, append the rest of the destination (`to`) path that comes after - // the common path parts - if (out.length > 0) return out + to.slice(toStart + lastCommonSep) - else { - toStart += lastCommonSep - if (to.charCodeAt(toStart) === 47 /*/*/) ++toStart - return to.slice(toStart) - } - }, - - _makeLong: function _makeLong(path) { - return path - }, - - dirname: function dirname(path) { - assertPath(path) - if (path.length === 0) return "." - var code = path.charCodeAt(0) - var hasRoot = code === 47 /*/*/ - var end = -1 - var matchedSlash = true - for (var i = path.length - 1; i >= 1; --i) { - code = path.charCodeAt(i) - if (code === 47 /*/*/) { - if (!matchedSlash) { - end = i - break - } - } else { - // We saw the first non-path separator - matchedSlash = false - } - } - - if (end === -1) return hasRoot ? "/" : "." - if (hasRoot && end === 1) return "//" - return path.slice(0, end) - }, - - basename: function basename(path, ext) { - if (ext !== undefined && typeof ext !== "string") throw new TypeError('"ext" argument must be a string') - assertPath(path) - - var start = 0 - var end = -1 - var matchedSlash = true - var i - - if (ext !== undefined && ext.length > 0 && ext.length <= path.length) { - if (ext.length === path.length && ext === path) return "" - var extIdx = ext.length - 1 - var firstNonSlashEnd = -1 - for (i = path.length - 1; i >= 0; --i) { - var code = path.charCodeAt(i) - if (code === 47 /*/*/) { - // If we reached a path separator that was not part of a set of path - // separators at the end of the string, stop now - if (!matchedSlash) { - start = i + 1 - break - } - } else { - if (firstNonSlashEnd === -1) { - // We saw the first non-path separator, remember this index in case - // we need it if the extension ends up not matching - matchedSlash = false - firstNonSlashEnd = i + 1 - } - if (extIdx >= 0) { - // Try to match the explicit extension - if (code === ext.charCodeAt(extIdx)) { - if (--extIdx === -1) { - // We matched the extension, so mark this as the end of our path - // component - end = i - } - } else { - // Extension does not match, so our result is the entire path - // component - extIdx = -1 - end = firstNonSlashEnd - } - } - } - } - - if (start === end) end = firstNonSlashEnd - else if (end === -1) end = path.length - return path.slice(start, end) - } else { - for (i = path.length - 1; i >= 0; --i) { - if (path.charCodeAt(i) === 47 /*/*/) { - // If we reached a path separator that was not part of a set of path - // separators at the end of the string, stop now - if (!matchedSlash) { - start = i + 1 - break - } - } else if (end === -1) { - // We saw the first non-path separator, mark this as the end of our - // path component - matchedSlash = false - end = i + 1 - } - } - - if (end === -1) return "" - return path.slice(start, end) - } - }, - - extname: function extname(path) { - assertPath(path) - var startDot = -1 - var startPart = 0 - var end = -1 - var matchedSlash = true - // Track the state of characters (if any) we see before our first dot and - // after any path separator we find - var preDotState = 0 - for (var i = path.length - 1; i >= 0; --i) { - var code = path.charCodeAt(i) - if (code === 47 /*/*/) { - // If we reached a path separator that was not part of a set of path - // separators at the end of the string, stop now - if (!matchedSlash) { - startPart = i + 1 - break - } - continue - } - if (end === -1) { - // We saw the first non-path separator, mark this as the end of our - // extension - matchedSlash = false - end = i + 1 - } - if (code === 46 /*.*/) { - // If this is our first dot, mark it as the start of our extension - if (startDot === -1) startDot = i - else if (preDotState !== 1) preDotState = 1 - } else if (startDot !== -1) { - // We saw a non-dot and non-path separator before our dot, so we should - // have a good chance at having a non-empty extension - preDotState = -1 - } - } - - if ( - startDot === -1 || - end === -1 || - // We saw a non-dot character immediately before the dot - preDotState === 0 || - // The (right-most) trimmed path component is exactly '..' - (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) - ) { - return "" - } - return path.slice(startDot, end) - }, - - format: function format(pathObject) { - if (pathObject === null || typeof pathObject !== "object") { - throw new TypeError('The "pathObject" argument must be of type Object. Received type ' + typeof pathObject) - } - return _format("/", pathObject) - }, - - parse: function parse(path) { - assertPath(path) - - var ret = { root: "", dir: "", base: "", ext: "", name: "" } - if (path.length === 0) return ret - var code = path.charCodeAt(0) - var isAbsolute = code === 47 /*/*/ - var start - if (isAbsolute) { - ret.root = "/" - start = 1 - } else { - start = 0 - } - var startDot = -1 - var startPart = 0 - var end = -1 - var matchedSlash = true - var i = path.length - 1 - - // Track the state of characters (if any) we see before our first dot and - // after any path separator we find - var preDotState = 0 - - // Get non-dir info - for (; i >= start; --i) { - code = path.charCodeAt(i) - if (code === 47 /*/*/) { - // If we reached a path separator that was not part of a set of path - // separators at the end of the string, stop now - if (!matchedSlash) { - startPart = i + 1 - break - } - continue - } - if (end === -1) { - // We saw the first non-path separator, mark this as the end of our - // extension - matchedSlash = false - end = i + 1 - } - if (code === 46 /*.*/) { - // If this is our first dot, mark it as the start of our extension - if (startDot === -1) startDot = i - else if (preDotState !== 1) preDotState = 1 - } else if (startDot !== -1) { - // We saw a non-dot and non-path separator before our dot, so we should - // have a good chance at having a non-empty extension - preDotState = -1 - } - } - - if ( - startDot === -1 || - end === -1 || - // We saw a non-dot character immediately before the dot - preDotState === 0 || - // The (right-most) trimmed path component is exactly '..' - (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) - ) { - if (end !== -1) { - if (startPart === 0 && isAbsolute) ret.base = ret.name = path.slice(1, end) - else ret.base = ret.name = path.slice(startPart, end) - } - } else { - if (startPart === 0 && isAbsolute) { - ret.name = path.slice(1, startDot) - ret.base = path.slice(1, end) - } else { - ret.name = path.slice(startPart, startDot) - ret.base = path.slice(startPart, end) - } - ret.ext = path.slice(startDot, end) - } - - if (startPart > 0) ret.dir = path.slice(0, startPart - 1) - else if (isAbsolute) ret.dir = "/" - - return ret - }, - - sep: "/", - delimiter: ":", - win32: null, - posix: null -} - -posix.posix = posix - -// Check if the environment is Node.js, and export the module -if (typeof module !== "undefined" && typeof module.exports !== "undefined") { - module.exports = { posix } -} else { - // Otherwise, assign the module to the global scope (browser environment) - window.posix = posix -} diff --git a/node_modules/scroll-cli/node_modules/scrollsdk/products/TestRacer.js b/node_modules/scroll-cli/node_modules/scrollsdk/products/TestRacer.js deleted file mode 100644 index dda269cdcd..0000000000 --- a/node_modules/scroll-cli/node_modules/scrollsdk/products/TestRacer.js +++ /dev/null @@ -1,247 +0,0 @@ -const { Utils } = require("../products/Utils.js") -const { TreeNode } = require("../products/TreeNode.js") -class TestRacerTestBlock { - constructor(testFile, testName, fn) { - this._parentFile = testFile - this._testName = testName - this._testFn = fn - } - _emitMessage(message) { - this._parentFile.getRunner()._emitMessage(message) - return message - } - async execute() { - let passes = [] - let failures = [] - const assertEqual = (actual, expected, message = "") => { - if (expected === actual) { - passes.push(message) - } else { - failures.push([actual, expected, message]) - } - } - try { - await this._testFn(assertEqual) - } catch (err) { - failures.push([ - "1", - "0", - `Should not have uncaught errors but in ${this._testName} got error: - toString: - ${new TreeNode(err.toString()).toString(2)} - stack: - ${new TreeNode(err.stack).toString(2)}` - ]) - } - failures.length ? this._emitBlockFailedMessage(failures) : this._emitBlockPassedMessage(passes) - return { - passes, - failures - } - } - _emitBlockPassedMessage(passes) { - this._emitMessage(`${TestRacer.green()} block ${this._testName} - ${passes.length} passed`) - } - _emitBlockFailedMessage(failures) { - // todo: should replace not replace last newline? - // todo: do side by side. - // todo: add diff. - this._emitMessage(`${TestRacer.red()} block ${this._testName}`) - this._emitMessage( - failures - .map(failure => { - const actualVal = failure[0] === undefined ? "undefined" : failure[0].toString() - const expectedVal = failure[1] === undefined ? "undefined" : failure[1].toString() - const actual = new TreeNode(`actual\n${new TreeNode(actualVal).toString(1)}`) - const expected = new TreeNode(`expected\n${new TreeNode(expectedVal.toString()).toString(1)}`) - const comparison = actual.toComparison(expected) - return new TreeNode(` assertion ${failure[2]}\n${comparison.toSideBySide([actual, expected]).toString(2)}`) - }) - .join("\n") - ) - } -} -class TestRacerFile { - constructor(runner, testTree, fileName) { - this._runner = runner - this._testTree = {} - this._fileName = fileName - Object.keys(testTree).forEach(key => { - this._testTree[key] = new TestRacerTestBlock(this, key, testTree[key]) - }) - } - getRunner() { - return this._runner - } - getFileName() { - return this._fileName - } - get length() { - return Object.values(this._testTree).length - } - get skippedTestBlockNames() { - const testsToRun = this._filterSkippedTestBlocks() - return Object.keys(this._testTree).filter(blockName => !testsToRun.includes(blockName)) - } - _emitMessage(message) { - this.getRunner()._emitMessage(message) - } - _filterSkippedTestBlocks() { - // _ prefix = run on these tests block - // $ prefix = skip this test - const runOnlyTheseTestBlocks = Object.keys(this._testTree).filter(key => key.startsWith("_")) - if (runOnlyTheseTestBlocks.length) return runOnlyTheseTestBlocks - return Object.keys(this._testTree).filter(key => !key.startsWith("$")) - } - async execute() { - const testBlockNames = this._filterSkippedTestBlocks() - this._emitStartFileMessage(testBlockNames.length) - const fileTimer = new Utils.Timer() - const blockResults = {} - const blockPromises = testBlockNames.map(async testName => { - const results = await this._testTree[testName].execute() - blockResults[testName] = results - }) - await Promise.all(blockPromises) - const fileStats = this._aggregateBlockResultsIntoFileResults(blockResults) - const fileTimeElapsed = fileTimer.tick() - fileStats.blocksFailed ? this._emitFileFailedMessage(fileStats, fileTimeElapsed, testBlockNames.length) : this._emitFilePassedMessage(fileStats, fileTimeElapsed, testBlockNames.length) - return fileStats - } - _aggregateBlockResultsIntoFileResults(fileBlockResults) { - const fileStats = { - assertionsPassed: 0, - assertionsFailed: 0, - blocksPassed: 0, - blocksFailed: 0, - failedBlocks: [] - } - Object.keys(fileBlockResults).forEach(blockName => { - const results = fileBlockResults[blockName] - fileStats.assertionsPassed += results.passes.length - fileStats.assertionsFailed += results.failures.length - if (results.failures.length) { - fileStats.blocksFailed++ - fileStats.failedBlocks.push(blockName) - } else fileStats.blocksPassed++ - }) - return fileStats - } - _emitStartFileMessage(blockCount) { - this._emitMessage(`start file ${blockCount} test blocks in file ${this._fileName}`) - } - _emitFilePassedMessage(fileStats, fileTimeElapsed, blockCount) { - this._emitMessage(`${TestRacer.green()} file ${this._fileName} in ${fileTimeElapsed}ms. ${blockCount} blocks and ${fileStats.assertionsPassed} assertions passed.`) - } - _emitFileFailedMessage(fileStats, fileTimeElapsed, blockCount) { - this._emitMessage( - `${TestRacer.red()} file ${this._fileName} over ${fileTimeElapsed}ms. ${fileStats.blocksFailed} blocks and ${fileStats.assertionsFailed} failed. ${blockCount - fileStats.blocksFailed} blocks and ${ - fileStats.assertionsPassed - } assertions passed` - ) - } -} -class TestRacer { - constructor(fileTestTree) { - this._logFunction = console.log - this._timer = new Utils.Timer() - this._sessionFilesPassed = 0 - this._sessionFilesFailed = {} - this._sessionBlocksFailed = 0 - this._sessionBlocksPassed = 0 - this._sessionAssertionsFailed = 0 - this._sessionAssertionsPassed = 0 - this._fileTestTree = {} - Object.keys(fileTestTree).forEach(fileName => { - this._fileTestTree[fileName] = new TestRacerFile(this, fileTestTree[fileName], fileName) - }) - } - setLogFunction(logFunction) { - this._logFunction = logFunction - return this - } - static green(message = "ok") { - if (Utils.isNodeJs()) return Utils.colorize(message, "green") - return `${message}` - } - static red(message = "failed") { - if (Utils.isNodeJs()) return Utils.colorize(message, "red") - return `${message}` - } - _addFileResultsToSessionResults(fileStats, fileName) { - this._sessionAssertionsPassed += fileStats.assertionsPassed - this._sessionAssertionsFailed += fileStats.assertionsFailed - this._sessionBlocksPassed += fileStats.blocksPassed - this._sessionBlocksFailed += fileStats.blocksFailed - if (!fileStats.blocksFailed) this._sessionFilesPassed++ - else { - this._sessionFilesFailed[fileName] = fileStats.failedBlocks - } - } - async execute() { - this._emitSessionPlanMessage() - const proms = Object.values(this._fileTestTree).map(async testFile => { - const results = await testFile.execute() - this._addFileResultsToSessionResults(results, testFile.getFileName()) - }) - await Promise.all(proms) - return this - } - finish() { - return this._emitSessionFinishMessage() - } - _emitMessage(message) { - this._logFunction(message) - return message - } - get length() { - return Object.values(this._fileTestTree).length - } - _emitSessionPlanMessage() { - let blocks = 0 - Object.values(this._fileTestTree).forEach(value => (blocks += value.length)) - this._emitMessage(`${this.length} files and ${blocks} blocks to run. ${this._getSkippedBlockNames().length} skipped blocks.`) - } - _getSkippedBlockNames() { - const skippedBlocks = [] - Object.values(this._fileTestTree).forEach(file => { - file.skippedTestBlockNames.forEach(blockName => { - skippedBlocks.push(blockName) - }) - }) - return skippedBlocks - } - _getFailures() { - if (!Object.keys(this._sessionFilesFailed).length) return "" - return ` - failures -${new TreeNode(this._sessionFilesFailed).forEach(row => row.forEach(line => line.deleteWordAt(0))).toString(2)}` - } - _emitSessionFinishMessage() { - const skipped = this._getSkippedBlockNames() - const allPassed = this._sessionAssertionsFailed === 0 - const finalColorMethod = allPassed ? TestRacer.green : TestRacer.red - return this._emitMessage( - finalColorMethod(`finished in ${this._timer.getTotalElapsedTime()}ms - skipped - ${skipped.length} blocks${skipped ? " " + skipped.join(" ") : ""} - passed - ${this._sessionFilesPassed} files - ${this._sessionBlocksPassed} blocks - ${this._sessionAssertionsPassed} assertions - failed - ${Object.keys(this._sessionFilesFailed).length} files - ${this._sessionBlocksFailed} blocks - ${this._sessionAssertionsFailed} assertions${this._getFailures()}`) - ) - } - static async testSingleFile(fileName, testTree) { - const obj = {} - obj[fileName] = testTree - const session = new TestRacer(obj) - await session.execute() - session.finish() - } -} - -module.exports = { TestRacer } diff --git a/node_modules/scroll-cli/node_modules/scrollsdk/products/TreeFileSystem.js b/node_modules/scroll-cli/node_modules/scrollsdk/products/TreeFileSystem.js deleted file mode 100644 index 42c067da11..0000000000 --- a/node_modules/scroll-cli/node_modules/scrollsdk/products/TreeFileSystem.js +++ /dev/null @@ -1,204 +0,0 @@ -const fs = require("fs") -const path = require("path") -const { Disk } = require("../products/Disk.node.js") -const { Utils } = require("../products/Utils.js") -const { TreeNode } = require("../products/TreeNode.js") -const { HandGrammarProgram } = require("../products/GrammarLanguage.js") -const grammarParser = require("../products/grammar.nodejs.js") -const { posix } = require("../products/Path.js") -const PARSERS_EXTENSION = ".parsers" -const parserRegex = /^[a-zA-Z0-9_]+Parser/gm -// A regex to check if a multiline string has a line that starts with "import ". -const importRegex = /^import /gm -const importOnlyRegex = /^importOnly/ -class DiskWriter { - constructor() { - this.fileCache = {} - } - _read(absolutePath) { - const { fileCache } = this - if (!fileCache[absolutePath]) fileCache[absolutePath] = { absolutePath, content: Disk.read(absolutePath).replace(/\r/g, ""), mtimeMs: fs.statSync(absolutePath) } - return fileCache[absolutePath] - } - read(absolutePath) { - return this._read(absolutePath).content - } - list(folder) { - return Disk.getFiles(folder) - } - write(fullPath, content) { - Disk.writeIfChanged(fullPath, content) - } - getMTime(absolutePath) { - return this._read(absolutePath).mtimeMs - } - dirname(absolutePath) { - return path.dirname(absolutePath) - } - join(...segments) { - return path.join(...arguments) - } -} -class MemoryWriter { - constructor(inMemoryFiles) { - this.inMemoryFiles = inMemoryFiles - } - read(absolutePath) { - const value = this.inMemoryFiles[absolutePath] - if (value === undefined) throw new Error(`File '${absolutePath}' not found.`) - return value - } - write(absolutePath, content) { - this.inMemoryFiles[absolutePath] = content - } - list(absolutePath) { - return Object.keys(this.inMemoryFiles).filter(filePath => filePath.startsWith(absolutePath) && !filePath.replace(absolutePath, "").includes("/")) - } - getMTime() { - return 1 - } - dirname(path) { - return posix.dirname(path) - } - join(...segments) { - return posix.join(...arguments) - } -} -class TreeFileSystem { - constructor(inMemoryFiles) { - this._treeCache = {} - this._parserCache = {} - this._expandedImportCache = {} - this._grammarExpandersCache = {} - if (inMemoryFiles) this._storage = new MemoryWriter(inMemoryFiles) - else this._storage = new DiskWriter() - } - read(absolutePath) { - return this._storage.read(absolutePath) - } - write(absolutePath, content) { - return this._storage.write(absolutePath, content) - } - list(absolutePath) { - return this._storage.list(absolutePath) - } - dirname(absolutePath) { - return this._storage.dirname(absolutePath) - } - join(...segments) { - return this._storage.join(...segments) - } - getMTime(absolutePath) { - return this._storage.getMTime(absolutePath) - } - _getFileAsTree(absoluteFilePath) { - const { _treeCache } = this - if (_treeCache[absoluteFilePath] === undefined) { - _treeCache[absoluteFilePath] = new TreeNode(this._storage.read(absoluteFilePath)) - } - return _treeCache[absoluteFilePath] - } - _assembleFile(absoluteFilePath) { - const { _expandedImportCache } = this - if (_expandedImportCache[absoluteFilePath]) return _expandedImportCache[absoluteFilePath] - let code = this.read(absoluteFilePath) - const isImportOnly = importOnlyRegex.test(code) - // Perf hack - // If its a parsers file, it will have no content, just parsers (and maybe imports). - // The parsers will already have been processed. We can skip them - const stripParsers = absoluteFilePath.endsWith(PARSERS_EXTENSION) - if (stripParsers) - code = code - .split("\n") - .filter(line => line.startsWith("import ")) - .join("\n") - const filepathsWithParserDefinitions = [] - if (this._doesFileHaveGrammarDefinitions(absoluteFilePath)) filepathsWithParserDefinitions.push(absoluteFilePath) - if (!importRegex.test(code)) - return { - afterImportPass: code, - isImportOnly, - importFilePaths: [], - filepathsWithParserDefinitions - } - let importFilePaths = [] - const lines = code.split("\n") - const replacements = [] - lines.forEach((line, lineNumber) => { - const folder = this.dirname(absoluteFilePath) - if (line.match(importRegex)) { - const relativeFilePath = line.replace("import ", "") - const absoluteImportFilePath = this.join(folder, relativeFilePath) - const expandedFile = this._assembleFile(absoluteImportFilePath) - importFilePaths.push(absoluteImportFilePath) - importFilePaths = importFilePaths.concat(expandedFile.importFilePaths) - replacements.push({ lineNumber, code: expandedFile.afterImportPass }) - } - }) - replacements.forEach(replacement => { - const { lineNumber, code } = replacement - lines[lineNumber] = code - }) - const combinedLines = lines.join("\n") - _expandedImportCache[absoluteFilePath] = { - importFilePaths, - isImportOnly, - afterImportPass: combinedLines, - filepathsWithParserDefinitions: importFilePaths.filter(filename => this._doesFileHaveGrammarDefinitions(filename)).concat(filepathsWithParserDefinitions) - } - return _expandedImportCache[absoluteFilePath] - } - _doesFileHaveGrammarDefinitions(absoluteFilePath) { - if (!absoluteFilePath) return false - const { _grammarExpandersCache } = this - if (_grammarExpandersCache[absoluteFilePath] === undefined) _grammarExpandersCache[absoluteFilePath] = !!this._storage.read(absoluteFilePath).match(parserRegex) - return _grammarExpandersCache[absoluteFilePath] - } - _getOneGrammarParserFromFiles(filePaths, baseGrammarCode) { - const parserDefinitionRegex = /^[a-zA-Z0-9_]+Parser/ - const cellDefinitionRegex = /^[a-zA-Z0-9_]+Cell/ - const asOneFile = filePaths - .map(filePath => { - const content = this._storage.read(filePath) - if (filePath.endsWith(PARSERS_EXTENSION)) return content - // Strip scroll content - return new TreeNode(content) - .filter(node => node.getLine().match(parserDefinitionRegex) || node.getLine().match(cellDefinitionRegex)) - .map(node => node.asString) - .join("\n") - }) - .join("\n") - .trim() - // todo: clean up scrollsdk so we are using supported methods (perhaps add a formatOptions that allows you to tell Grammar not to run prettier on js nodes) - return new grammarParser(baseGrammarCode + "\n" + asOneFile)._sortNodesByInScopeOrder()._sortWithParentParsersUpTop() - } - get parsers() { - return Object.values(this._parserCache).map(parser => parser.grammarParser) - } - getParser(filePaths, baseGrammarCode = "") { - const { _parserCache } = this - const key = filePaths - .filter(fp => fp) - .sort() - .join("\n") - const hit = _parserCache[key] - if (hit) return hit - const grammarParser = this._getOneGrammarParserFromFiles(filePaths, baseGrammarCode) - const grammarCode = grammarParser.asString - _parserCache[key] = { - grammarParser, - grammarCode, - parser: new HandGrammarProgram(grammarCode).compileAndReturnRootParser() - } - return _parserCache[key] - } - assembleFile(absoluteFilePath, defaultParserCode) { - const assembledFile = this._assembleFile(absoluteFilePath) - if (!defaultParserCode) return assembledFile - // BUILD CUSTOM COMPILER, IF THERE ARE CUSTOM GRAMMAR NODES DEFINED - if (assembledFile.filepathsWithParserDefinitions.length) assembledFile.parser = this.getParser(assembledFile.filepathsWithParserDefinitions, defaultParserCode).parser - return assembledFile - } -} - -module.exports = { TreeFileSystem } diff --git a/node_modules/scroll-cli/node_modules/scrollsdk/products/TreeNode.js b/node_modules/scroll-cli/node_modules/scrollsdk/products/TreeNode.js deleted file mode 100644 index 752a7cbe54..0000000000 --- a/node_modules/scroll-cli/node_modules/scrollsdk/products/TreeNode.js +++ /dev/null @@ -1,2628 +0,0 @@ -class AbstractNode { - _getProcessTimeInMilliseconds() { - const hrtime = process.hrtime() - return (hrtime[0] * 1e9 + hrtime[1]) / 1e6 - } -} -const { Utils } = require("../products/Utils.js") -var FileFormat -;(function (FileFormat) { - FileFormat["csv"] = "csv" - FileFormat["tsv"] = "tsv" - FileFormat["tree"] = "tree" -})(FileFormat || (FileFormat = {})) -const TN_WORD_BREAK_SYMBOL = " " -const TN_EDGE_SYMBOL = " " -const TN_NODE_BREAK_SYMBOL = "\n" -class AbstractTreeEvent { - constructor(targetNode) { - this.targetNode = targetNode - } -} -class ChildAddedTreeEvent extends AbstractTreeEvent {} -class ChildRemovedTreeEvent extends AbstractTreeEvent {} -class DescendantChangedTreeEvent extends AbstractTreeEvent {} -class LineChangedTreeEvent extends AbstractTreeEvent {} -class TreeWord { - constructor(node, cellIndex) { - this._node = node - this._cellIndex = cellIndex - } - replace(newWord) { - this._node.setWord(this._cellIndex, newWord) - } - get word() { - return this._node.getWord(this._cellIndex) - } -} -const TreeEvents = { ChildAddedTreeEvent, ChildRemovedTreeEvent, DescendantChangedTreeEvent, LineChangedTreeEvent } -var WhereOperators -;(function (WhereOperators) { - WhereOperators["equal"] = "=" - WhereOperators["notEqual"] = "!=" - WhereOperators["lessThan"] = "<" - WhereOperators["lessThanOrEqual"] = "<=" - WhereOperators["greaterThan"] = ">" - WhereOperators["greaterThanOrEqual"] = ">=" - WhereOperators["includes"] = "includes" - WhereOperators["doesNotInclude"] = "doesNotInclude" - WhereOperators["in"] = "in" - WhereOperators["notIn"] = "notIn" - WhereOperators["empty"] = "empty" - WhereOperators["notEmpty"] = "notEmpty" -})(WhereOperators || (WhereOperators = {})) -var ScrollNotationConstants -;(function (ScrollNotationConstants) { - ScrollNotationConstants["extends"] = "extends" -})(ScrollNotationConstants || (ScrollNotationConstants = {})) -class ParserCombinator { - constructor(catchAllParser, firstWordMap = {}, regexTests = undefined) { - this._catchAllParser = catchAllParser - this._firstWordMap = new Map(Object.entries(firstWordMap)) - this._regexTests = regexTests - } - getFirstWordOptions() { - return Array.from(this._getFirstWordMap().keys()) - } - // todo: remove - _getFirstWordMap() { - return this._firstWordMap - } - // todo: remove - _getFirstWordMapAsObject() { - let obj = {} - const map = this._getFirstWordMap() - for (let [key, val] of map.entries()) { - obj[key] = val - } - return obj - } - _getParser(line, contextNode, wordBreakSymbol = TN_WORD_BREAK_SYMBOL) { - return this._getFirstWordMap().get(this._getFirstWord(line, wordBreakSymbol)) || this._getParserFromRegexTests(line) || this._getCatchAllParser(contextNode) - } - _getCatchAllParser(contextNode) { - if (this._catchAllParser) return this._catchAllParser - const parent = contextNode.parent - if (parent) return parent._getParser()._getCatchAllParser(parent) - return contextNode.constructor - } - _getParserFromRegexTests(line) { - if (!this._regexTests) return undefined - const hit = this._regexTests.find(test => test.regex.test(line)) - if (hit) return hit.parser - return undefined - } - _getFirstWord(line, wordBreakSymbol) { - const firstBreak = line.indexOf(wordBreakSymbol) - return line.substr(0, firstBreak > -1 ? firstBreak : undefined) - } -} -class TreeNode extends AbstractNode { - constructor(children, line, parent) { - super() - // BEGIN MUTABLE METHODS BELOw - this._nodeCreationTime = this._getProcessTimeInMilliseconds() - this._parent = parent - this._setLine(line) - this._setChildren(children) - } - execute() {} - async loadRequirements(context) { - // todo: remove - await Promise.all(this.map(node => node.loadRequirements(context))) - } - getErrors() { - return [] - } - get lineCellTypes() { - // todo: make this any a constant - return "undefinedCellType ".repeat(this.words.length).trim() - } - isNodeJs() { - return typeof exports !== "undefined" - } - isBrowser() { - return !this.isNodeJs() - } - getOlderSiblings() { - if (this.isRoot()) return [] - return this.parent.slice(0, this.getIndex()) - } - _getClosestOlderSibling() { - const olderSiblings = this.getOlderSiblings() - return olderSiblings[olderSiblings.length - 1] - } - getYoungerSiblings() { - if (this.isRoot()) return [] - return this.parent.slice(this.getIndex() + 1) - } - getSiblings() { - if (this.isRoot()) return [] - return this.parent.filter(node => node !== this) - } - _getUid() { - if (!this._uid) this._uid = TreeNode._makeUniqueId() - return this._uid - } - // todo: rename getMother? grandMother et cetera? - get parent() { - return this._parent - } - getIndentLevel(relativeTo) { - return this._getIndentLevel(relativeTo) - } - get indentation() { - const indentLevel = this._getIndentLevel() - 1 - if (indentLevel < 0) return "" - return this.edgeSymbol.repeat(indentLevel) - } - _getTopDownArray(arr) { - this.forEach(child => { - arr.push(child) - child._getTopDownArray(arr) - }) - } - get topDownArray() { - const arr = [] - this._getTopDownArray(arr) - return arr - } - *getTopDownArrayIterator() { - for (let child of this.getChildren()) { - yield child - yield* child.getTopDownArrayIterator() - } - } - nodeAtLine(lineNumber) { - let index = 0 - for (let node of this.getTopDownArrayIterator()) { - if (lineNumber === index) return node - index++ - } - } - get numberOfLines() { - let lineCount = 0 - for (let node of this.getTopDownArrayIterator()) { - lineCount++ - } - return lineCount - } - _getMaxUnitsOnALine() { - let max = 0 - for (let node of this.getTopDownArrayIterator()) { - const count = node.words.length + node.getIndentLevel() - if (count > max) max = count - } - return max - } - get numberOfWords() { - let wordCount = 0 - for (let node of this.getTopDownArrayIterator()) { - wordCount += node.words.length - } - return wordCount - } - get lineNumber() { - return this._getLineNumberRelativeTo() - } - _getLineNumber(target = this) { - if (this._cachedLineNumber) return this._cachedLineNumber - let lineNumber = 1 - for (let node of this.root.getTopDownArrayIterator()) { - if (node === target) return lineNumber - lineNumber++ - } - return lineNumber - } - isBlankLine() { - return !this.length && !this.getLine() - } - hasDuplicateFirstWords() { - return this.length ? new Set(this.getFirstWords()).size !== this.length : false - } - isEmpty() { - return !this.length && !this.content - } - _getLineNumberRelativeTo(relativeTo) { - if (this.isRoot(relativeTo)) return 0 - const start = relativeTo || this.root - return start._getLineNumber(this) - } - isRoot(relativeTo) { - return relativeTo === this || !this.parent - } - get root() { - return this._getRootNode() - } - _getRootNode(relativeTo) { - if (this.isRoot(relativeTo)) return this - return this.parent._getRootNode(relativeTo) - } - toString(indentCount = 0, language = this) { - if (this.isRoot()) return this._childrenToString(indentCount, language) - return language.edgeSymbol.repeat(indentCount) + this.getLine(language) + (this.length ? language.nodeBreakSymbol + this._childrenToString(indentCount + 1, language) : "") - } - get asString() { - return this.toString() - } - printLinesFrom(start, quantity) { - return this._printLinesFrom(start, quantity, false) - } - printLinesWithLineNumbersFrom(start, quantity) { - return this._printLinesFrom(start, quantity, true) - } - _printLinesFrom(start, quantity, printLineNumbers) { - // todo: use iterator for better perf? - const end = start + quantity - this.toString() - .split("\n") - .slice(start, end) - .forEach((line, index) => { - if (printLineNumbers) console.log(`${start + index} ${line}`) - else console.log(line) - }) - return this - } - getWord(index) { - const words = this._getWords(0) - if (index < 0) index = words.length + index - return words[index] - } - get list() { - return this.getWordsFrom(1) - } - _toHtml(indentCount) { - const path = this.getPathVector().join(" ") - const classes = { - nodeLine: "nodeLine", - edgeSymbol: "edgeSymbol", - nodeBreakSymbol: "nodeBreakSymbol", - nodeChildren: "nodeChildren" - } - const edge = this.edgeSymbol.repeat(indentCount) - // Set up the firstWord part of the node - const edgeHtml = `${edge}` - const lineHtml = this._getLineHtml() - const childrenHtml = this.length ? `${this.nodeBreakSymbol}` + `${this._childrenToHtml(indentCount + 1)}` : "" - return `${edgeHtml}${lineHtml}${childrenHtml}` - } - _getWords(startFrom) { - if (!this._words) this._words = this._getLine().split(this.wordBreakSymbol) - return startFrom ? this._words.slice(startFrom) : this._words - } - get words() { - return this._getWords(0) - } - doesExtend(parserId) { - return false - } - require(moduleName, filePath) { - if (!this.isNodeJs()) return window[moduleName] - return require(filePath || moduleName) - } - getWordsFrom(startFrom) { - return this._getWords(startFrom) - } - getFirstAncestor() { - const parent = this.parent - return parent.isRoot() ? this : parent.getFirstAncestor() - } - isLoaded() { - return true - } - getRunTimePhaseErrors() { - if (!this._runTimePhaseErrors) this._runTimePhaseErrors = {} - return this._runTimePhaseErrors - } - setRunTimePhaseError(phase, errorObject) { - if (errorObject === undefined) delete this.getRunTimePhaseErrors()[phase] - else this.getRunTimePhaseErrors()[phase] = errorObject - return this - } - _getJavascriptPrototypeChainUpTo(stopAtClassName = "TreeNode") { - // todo: cross browser test this - let constructor = this.constructor - const chain = [] - while (constructor.name !== stopAtClassName) { - chain.unshift(constructor.name) - constructor = constructor.__proto__ - } - chain.unshift(stopAtClassName) - return chain - } - _getProjectRootDir() { - return this.isRoot() ? "" : this.root._getProjectRootDir() - } - // Concat 2 trees amd return a new true, but replace any nodes - // in this tree that start with the same node from the first tree with - // that patched version. Does not recurse. - patch(two) { - const copy = this.clone() - two.forEach(node => { - const hit = copy.getNode(node.getWord(0)) - if (hit) hit.destroy() - }) - copy.concat(two) - return copy - } - getSparsity() { - const nodes = this.getChildren() - const fields = this._getUnionNames() - let count = 0 - this.getChildren().forEach(node => { - fields.forEach(field => { - if (node.has(field)) count++ - }) - }) - return 1 - count / (nodes.length * fields.length) - } - // todo: rename. what is the proper term from set/cat theory? - getBiDirectionalMaps(propertyNameOrFn, propertyNameOrFn2 = node => node.getWord(0)) { - const oneToTwo = {} - const twoToOne = {} - const is1Str = typeof propertyNameOrFn === "string" - const is2Str = typeof propertyNameOrFn2 === "string" - const children = this.getChildren() - this.forEach((node, index) => { - const value1 = is1Str ? node.get(propertyNameOrFn) : propertyNameOrFn(node, index, children) - const value2 = is2Str ? node.get(propertyNameOrFn2) : propertyNameOrFn2(node, index, children) - if (value1 !== undefined) { - if (!oneToTwo[value1]) oneToTwo[value1] = [] - oneToTwo[value1].push(value2) - } - if (value2 !== undefined) { - if (!twoToOne[value2]) twoToOne[value2] = [] - twoToOne[value2].push(value1) - } - }) - return [oneToTwo, twoToOne] - } - _getWordIndexCharacterStartPosition(wordIndex) { - const xiLength = this.edgeSymbol.length - const numIndents = this._getIndentLevel() - 1 - const indentPosition = xiLength * numIndents - if (wordIndex < 1) return xiLength * (numIndents + wordIndex) - return indentPosition + this.words.slice(0, wordIndex).join(this.wordBreakSymbol).length + this.wordBreakSymbol.length - } - getNodeInScopeAtCharIndex(charIndex) { - if (this.isRoot()) return this - let wordIndex = this.getWordIndexAtCharacterIndex(charIndex) - if (wordIndex > 0) return this - let node = this - while (wordIndex < 1) { - node = node.parent - wordIndex++ - } - return node - } - getWordProperties(wordIndex) { - const start = this._getWordIndexCharacterStartPosition(wordIndex) - const word = wordIndex < 0 ? "" : this.getWord(wordIndex) - return { - startCharIndex: start, - endCharIndex: start + word.length, - word: word - } - } - fill(fill = "") { - this.topDownArray.forEach(line => { - line.words.forEach((word, index) => line.setWord(index, fill)) - }) - return this - } - getAllWordBoundaryCoordinates() { - const coordinates = [] - let lineIndex = 0 - for (let node of this.getTopDownArrayIterator()) { - node.getWordBoundaryCharIndices().forEach((charIndex, wordIndex) => { - coordinates.push({ - lineIndex: lineIndex, - charIndex: charIndex, - wordIndex: wordIndex - }) - }) - lineIndex++ - } - return coordinates - } - getWordBoundaryCharIndices() { - let indentLevel = this._getIndentLevel() - const wordBreakSymbolLength = this.wordBreakSymbol.length - let elapsed = indentLevel - return this.words.map((word, wordIndex) => { - const boundary = elapsed - elapsed += word.length + wordBreakSymbolLength - return boundary - }) - } - getWordIndexAtCharacterIndex(charIndex) { - // todo: is this correct thinking for handling root? - if (this.isRoot()) return 0 - const numberOfIndents = this._getIndentLevel(undefined) - 1 - // todo: probably want to rewrite this in a performant way. - const spots = [] - while (spots.length < numberOfIndents) { - spots.push(-(numberOfIndents - spots.length)) - } - this.words.forEach((word, wordIndex) => { - word.split("").forEach(letter => { - spots.push(wordIndex) - }) - spots.push(wordIndex) - }) - return spots[charIndex] - } - // Note: This currently does not return any errors resulting from "required" or "single" - getAllErrors(lineStartsAt = 1) { - const errors = [] - for (let node of this.topDownArray) { - node._cachedLineNumber = lineStartsAt // todo: cleanup - const errs = node.getErrors() - errs.forEach(err => errors.push(err)) - // delete node._cachedLineNumber - lineStartsAt++ - } - return errors - } - *getAllErrorsIterator() { - let line = 1 - for (let node of this.getTopDownArrayIterator()) { - node._cachedLineNumber = line - const errs = node.getErrors() - // delete node._cachedLineNumber - if (errs.length) yield errs - line++ - } - } - get firstWord() { - return this.words[0] - } - get content() { - const words = this.getWordsFrom(1) - return words.length ? words.join(this.wordBreakSymbol) : undefined - } - get contentWithChildren() { - // todo: deprecate - const content = this.content - return (content ? content : "") + (this.length ? this.nodeBreakSymbol + this._childrenToString() : "") - } - getFirstNode() { - return this.nodeAt(0) - } - getStack() { - return this._getStack() - } - _getStack(relativeTo) { - if (this.isRoot(relativeTo)) return [] - const parent = this.parent - if (parent.isRoot(relativeTo)) return [this] - else return parent._getStack(relativeTo).concat([this]) - } - getStackString() { - return this._getStack() - .map((node, index) => this.edgeSymbol.repeat(index) + node.getLine()) - .join(this.nodeBreakSymbol) - } - getLine(language) { - if (!this._words && !language) return this._getLine() // todo: how does this interact with "language" param? - return this.words.join((language || this).wordBreakSymbol) - } - getColumnNames() { - return this._getUnionNames() - } - getOneHot(column) { - const clone = this.clone() - const cols = Array.from(new Set(clone.getColumn(column))) - clone.forEach(node => { - const val = node.get(column) - node.delete(column) - cols.forEach(col => { - node.set(column + "_" + col, val === col ? "1" : "0") - }) - }) - return clone - } - // todo: return array? getPathArray? - _getFirstWordPath(relativeTo) { - if (this.isRoot(relativeTo)) return "" - else if (this.parent.isRoot(relativeTo)) return this.firstWord - return this.parent._getFirstWordPath(relativeTo) + this.edgeSymbol + this.firstWord - } - getFirstWordPathRelativeTo(relativeTo) { - return this._getFirstWordPath(relativeTo) - } - getFirstWordPath() { - return this._getFirstWordPath() - } - getPathVector() { - return this._getPathVector() - } - getPathVectorRelativeTo(relativeTo) { - return this._getPathVector(relativeTo) - } - _getPathVector(relativeTo) { - if (this.isRoot(relativeTo)) return [] - const path = this.parent._getPathVector(relativeTo) - path.push(this.getIndex()) - return path - } - getIndex() { - return this.parent._indexOfNode(this) - } - isTerminal() { - return !this.length - } - _getLineHtml() { - return this.words.map((word, index) => `${Utils.stripHtml(word)}`).join(`${this.wordBreakSymbol}`) - } - _getXmlContent(indentCount) { - if (this.content !== undefined) return this.contentWithChildren - return this.length ? `${indentCount === -1 ? "" : "\n"}${this._childrenToXml(indentCount > -1 ? indentCount + 2 : -1)}${" ".repeat(indentCount)}` : "" - } - _toXml(indentCount) { - const indent = " ".repeat(indentCount) - const tag = this.firstWord - return `${indent}<${tag}>${this._getXmlContent(indentCount)}${indentCount === -1 ? "" : "\n"}` - } - _toObjectTuple() { - const content = this.content - const length = this.length - const hasChildrenNoContent = content === undefined && length - const hasContentAndHasChildren = content !== undefined && length - // If the node has a content and a subtree return it as a string, as - // Javascript object values can't be both a leaf and a tree. - const tupleValue = hasChildrenNoContent ? this.toObject() : hasContentAndHasChildren ? this.contentWithChildren : content - return [this.firstWord, tupleValue] - } - _indexOfNode(needleNode) { - let result = -1 - this.find((node, index) => { - if (node === needleNode) { - result = index - return true - } - }) - return result - } - getMaxLineWidth() { - let maxWidth = 0 - for (let node of this.getTopDownArrayIterator()) { - const lineWidth = node.getLine().length - if (lineWidth > maxWidth) maxWidth = lineWidth - } - return maxWidth - } - toTreeNode() { - return new TreeNode(this.toString()) - } - _rightPad(newWidth, padCharacter) { - const line = this.getLine() - this.setLine(line + padCharacter.repeat(newWidth - line.length)) - return this - } - rightPad(padCharacter = " ") { - const newWidth = this.getMaxLineWidth() - this.topDownArray.forEach(node => node._rightPad(newWidth, padCharacter)) - return this - } - lengthen(numberOfLines) { - let linesToAdd = numberOfLines - this.numberOfLines - while (linesToAdd > 0) { - this.appendLine("") - linesToAdd-- - } - return this - } - toSideBySide(treesOrStrings, delimiter = " ") { - treesOrStrings = treesOrStrings.map(tree => (tree instanceof TreeNode ? tree : new TreeNode(tree))) - const clone = this.toTreeNode() - const nodeBreakSymbol = "\n" - let next - while ((next = treesOrStrings.shift())) { - clone.lengthen(next.numberOfLines) - clone.rightPad() - next - .toString() - .split(nodeBreakSymbol) - .forEach((line, index) => { - const node = clone.nodeAtLine(index) - node.setLine(node.getLine() + delimiter + line) - }) - } - return clone - } - toComparison(treeNode) { - const nodeBreakSymbol = "\n" - const lines = treeNode.toString().split(nodeBreakSymbol) - return new TreeNode( - this.toString() - .split(nodeBreakSymbol) - .map((line, index) => (lines[index] === line ? "" : "x")) - .join(nodeBreakSymbol) - ) - } - toBraid(treesOrStrings) { - treesOrStrings.unshift(this) - const nodeDelimiter = this.nodeBreakSymbol - return new TreeNode( - Utils.interweave(treesOrStrings.map(tree => tree.toString().split(nodeDelimiter))) - .map(line => (line === undefined ? "" : line)) - .join(nodeDelimiter) - ) - } - getSlice(startIndexInclusive, stopIndexExclusive) { - return new TreeNode( - this.slice(startIndexInclusive, stopIndexExclusive) - .map(child => child.toString()) - .join("\n") - ) - } - _hasColumns(columns) { - const words = this.words - return columns.every((searchTerm, index) => searchTerm === words[index]) - } - hasWord(index, word) { - return this.getWord(index) === word - } - getNodeByColumns(...columns) { - return this.topDownArray.find(node => node._hasColumns(columns)) - } - getNodeByColumn(index, name) { - return this.find(node => node.getWord(index) === name) - } - _getNodesByColumn(index, name) { - return this.filter(node => node.getWord(index) === name) - } - // todo: preserve subclasses! - select(columnNames) { - columnNames = Array.isArray(columnNames) ? columnNames : [columnNames] - const result = new TreeNode() - this.forEach(node => { - const tree = result.appendLine(node.getLine()) - columnNames.forEach(name => { - const valueNode = node.getNode(name) - if (valueNode) tree.appendNode(valueNode) - }) - }) - return result - } - selectionToString() { - return this.getSelectedNodes() - .map(node => node.toString()) - .join("\n") - } - getSelectedNodes() { - return this.topDownArray.filter(node => node.isSelected()) - } - clearSelection() { - this.getSelectedNodes().forEach(node => node.unselectNode()) - } - // Note: this is for debugging select chains - print(message = "") { - if (message) console.log(message) - console.log(this.toString()) - return this - } - // todo: preserve subclasses! - // todo: preserve links back to parent so you could edit as normal? - where(columnName, operator, fixedValue) { - const isArray = Array.isArray(fixedValue) - const valueType = isArray ? typeof fixedValue[0] : typeof fixedValue - let parser - if (valueType === "number") parser = parseFloat - const fn = node => { - const cell = node.get(columnName) - const typedCell = parser ? parser(cell) : cell - if (operator === WhereOperators.equal) return fixedValue === typedCell - else if (operator === WhereOperators.notEqual) return fixedValue !== typedCell - else if (operator === WhereOperators.includes) return typedCell !== undefined && typedCell.includes(fixedValue) - else if (operator === WhereOperators.doesNotInclude) return typedCell === undefined || !typedCell.includes(fixedValue) - else if (operator === WhereOperators.greaterThan) return typedCell > fixedValue - else if (operator === WhereOperators.lessThan) return typedCell < fixedValue - else if (operator === WhereOperators.greaterThanOrEqual) return typedCell >= fixedValue - else if (operator === WhereOperators.lessThanOrEqual) return typedCell <= fixedValue - else if (operator === WhereOperators.empty) return !node.has(columnName) - else if (operator === WhereOperators.notEmpty) return node.has(columnName) || (cell !== "" && cell !== undefined) - else if (operator === WhereOperators.in && isArray) return fixedValue.includes(typedCell) - else if (operator === WhereOperators.notIn && isArray) return !fixedValue.includes(typedCell) - } - const result = new TreeNode() - this.filter(fn).forEach(node => { - result.appendNode(node) - }) - return result - } - with(firstWord) { - return this.filter(node => node.has(firstWord)) - } - without(firstWord) { - return this.filter(node => !node.has(firstWord)) - } - first(quantity = 1) { - return this.limit(quantity, 0) - } - last(quantity = 1) { - return this.limit(quantity, this.length - quantity) - } - // todo: preserve subclasses! - limit(quantity, offset = 0) { - const result = new TreeNode() - this.getChildren() - .slice(offset, quantity + offset) - .forEach(node => { - result.appendNode(node) - }) - return result - } - getChildrenFirstArray() { - const arr = [] - this._getChildrenFirstArray(arr) - return arr - } - _getChildrenFirstArray(arr) { - this.forEach(child => { - child._getChildrenFirstArray(arr) - arr.push(child) - }) - } - _getIndentLevel(relativeTo) { - return this._getStack(relativeTo).length - } - getParentFirstArray() { - const levels = this._getLevels() - const arr = [] - Object.values(levels).forEach(level => { - level.forEach(item => arr.push(item)) - }) - return arr - } - _getLevels() { - const levels = {} - this.topDownArray.forEach(node => { - const level = node._getIndentLevel() - if (!levels[level]) levels[level] = [] - levels[level].push(node) - }) - return levels - } - _getChildrenArray() { - if (!this._children) this._children = [] - return this._children - } - getLines() { - return this.map(node => node.getLine()) - } - getChildren() { - return this._getChildrenArray().slice(0) - } - get length() { - return this._getChildrenArray().length - } - _nodeAt(index) { - if (index < 0) index = this.length + index - return this._getChildrenArray()[index] - } - nodeAt(indexOrIndexArray) { - if (typeof indexOrIndexArray === "number") return this._nodeAt(indexOrIndexArray) - if (indexOrIndexArray.length === 1) return this._nodeAt(indexOrIndexArray[0]) - const first = indexOrIndexArray[0] - const node = this._nodeAt(first) - if (!node) return undefined - return node.nodeAt(indexOrIndexArray.slice(1)) - } - // Flatten a tree node into an object like {twitter:"pldb", "twitter.followers":123}. - // Assumes you have a nested key/value list with no multiline strings. - toFlatObject(delimiter = ".") { - let newObject = {} - const { edgeSymbolRegex } = this - this.forEach((child, index) => { - newObject[child.getWord(0)] = child.content - child.topDownArray.forEach(node => { - const newColumnName = node.getFirstWordPathRelativeTo(this).replace(edgeSymbolRegex, delimiter) - const value = node.content - newObject[newColumnName] = value - }) - }) - return newObject - } - _toObject() { - const obj = {} - this.forEach(node => { - const tuple = node._toObjectTuple() - obj[tuple[0]] = tuple[1] - }) - return obj - } - get asHtml() { - return this._childrenToHtml(0) - } - _toHtmlCubeLine(indents = 0, lineIndex = 0, planeIndex = 0) { - const getLine = (cellIndex, word = "") => - `${word}` - let cells = [] - this.words.forEach((word, index) => (word ? cells.push(getLine(index + indents, word)) : "")) - return cells.join("") - } - get asHtmlCube() { - return this.map((plane, planeIndex) => plane.topDownArray.map((line, lineIndex) => line._toHtmlCubeLine(line.getIndentLevel() - 2, lineIndex, planeIndex)).join("")).join("") - } - _getHtmlJoinByCharacter() { - return `${this.nodeBreakSymbol}` - } - _childrenToHtml(indentCount) { - const joinBy = this._getHtmlJoinByCharacter() - return this.map(node => node._toHtml(indentCount)).join(joinBy) - } - _childrenToString(indentCount, language = this) { - return this.map(node => node.toString(indentCount, language)).join(language.nodeBreakSymbol) - } - childrenToString(indentCount = 0) { - return this._childrenToString(indentCount) - } - // todo: implement - _getChildJoinCharacter() { - return "\n" - } - format() { - this.forEach(child => child.format()) - return this - } - compile() { - return this.map(child => child.compile()).join(this._getChildJoinCharacter()) - } - get asXml() { - return this._childrenToXml(0) - } - toDisk(path) { - if (!this.isNodeJs()) throw new Error("This method only works in Node.js") - const format = TreeNode._getFileFormat(path) - const formats = { - tree: tree => tree.toString(), - csv: tree => tree.asCsv, - tsv: tree => tree.asTsv - } - this.require("fs").writeFileSync(path, formats[format](this), "utf8") - return this - } - _lineToYaml(indentLevel, listTag = "") { - let prefix = " ".repeat(indentLevel) - if (listTag && indentLevel > 1) prefix = " ".repeat(indentLevel - 2) + listTag + " " - return prefix + `${this.firstWord}:` + (this.content ? " " + this.content : "") - } - _isYamlList() { - return this.hasDuplicateFirstWords() - } - get asYaml() { - return `%YAML 1.2 ----\n${this._childrenToYaml(0).join("\n")}` - } - _childrenToYaml(indentLevel) { - if (this._isYamlList()) return this._childrenToYamlList(indentLevel) - else return this._childrenToYamlAssociativeArray(indentLevel) - } - // if your code-to-be-yaml has a list of associative arrays of type N and you don't - // want the type N to print - _collapseYamlLine() { - return false - } - _toYamlListElement(indentLevel) { - const children = this._childrenToYaml(indentLevel + 1) - if (this._collapseYamlLine()) { - if (indentLevel > 1) return children.join("\n").replace(" ".repeat(indentLevel), " ".repeat(indentLevel - 2) + "- ") - return children.join("\n") - } else { - children.unshift(this._lineToYaml(indentLevel, "-")) - return children.join("\n") - } - } - _childrenToYamlList(indentLevel) { - return this.map(node => node._toYamlListElement(indentLevel + 2)) - } - _toYamlAssociativeArrayElement(indentLevel) { - const children = this._childrenToYaml(indentLevel + 1) - children.unshift(this._lineToYaml(indentLevel)) - return children.join("\n") - } - _childrenToYamlAssociativeArray(indentLevel) { - return this.map(node => node._toYamlAssociativeArrayElement(indentLevel)) - } - get asJsonSubset() { - return JSON.stringify(this.toObject(), null, " ") - } - _toObjectForSerialization() { - return this.length - ? { - cells: this.words, - children: this.map(child => child._toObjectForSerialization()) - } - : { - cells: this.words - } - } - get asJson() { - return JSON.stringify({ children: this.map(child => child._toObjectForSerialization()) }, null, " ") - } - get asGrid() { - const WordBreakSymbol = this.wordBreakSymbol - return this.toString() - .split(this.nodeBreakSymbol) - .map(line => line.split(WordBreakSymbol)) - } - get asGridJson() { - return JSON.stringify(this.asGrid, null, 2) - } - findNodes(firstWordPath) { - // todo: can easily speed this up - const map = {} - if (!Array.isArray(firstWordPath)) firstWordPath = [firstWordPath] - firstWordPath.forEach(path => (map[path] = true)) - return this.topDownArray.filter(node => { - if (map[node._getFirstWordPath(this)]) return true - return false - }) - } - evalTemplateString(str) { - const that = this - return str.replace(/{([^\}]+)}/g, (match, path) => that.get(path) || "") - } - emitLogMessage(message) { - console.log(message) - } - getColumn(path) { - return this.map(node => node.get(path)) - } - getFiltered(fn) { - const clone = this.clone() - clone - .filter((node, index) => !fn(node, index)) - .forEach(node => { - node.destroy() - }) - return clone - } - getNode(firstWordPath) { - return this._getNodeByPath(firstWordPath) - } - getFrom(prefix) { - const hit = this.filter(node => node.getLine().startsWith(prefix))[0] - if (hit) return hit.getLine().substr((prefix + this.wordBreakSymbol).length) - } - get(firstWordPath) { - const node = this._getNodeByPath(firstWordPath) - return node === undefined ? undefined : node.content - } - getOneOf(keys) { - for (let i = 0; i < keys.length; i++) { - const value = this.get(keys[i]) - if (value) return value - } - return "" - } - // move to treenode - pick(fields) { - const newTree = new TreeNode(this.toString()) // todo: why not clone? - const map = Utils.arrayToMap(fields) - newTree.nodeAt(0).forEach(node => { - if (!map[node.getWord(0)]) node.destroy() - }) - return newTree - } - getNodesByGlobPath(query) { - return this._getNodesByGlobPath(query) - } - _getNodesByGlobPath(globPath) { - const edgeSymbol = this.edgeSymbol - if (!globPath.includes(edgeSymbol)) { - if (globPath === "*") return this.getChildren() - return this.filter(node => node.firstWord === globPath) - } - const parts = globPath.split(edgeSymbol) - const current = parts.shift() - const rest = parts.join(edgeSymbol) - const matchingNodes = current === "*" ? this.getChildren() : this.filter(child => child.firstWord === current) - return [].concat.apply( - [], - matchingNodes.map(node => node._getNodesByGlobPath(rest)) - ) - } - _getNodeByPath(firstWordPath) { - const edgeSymbol = this.edgeSymbol - if (!firstWordPath.includes(edgeSymbol)) { - const index = this.indexOfLast(firstWordPath) - return index === -1 ? undefined : this._nodeAt(index) - } - const parts = firstWordPath.split(edgeSymbol) - const current = parts.shift() - const currentNode = this._getChildrenArray()[this._getIndex()[current]] - return currentNode ? currentNode._getNodeByPath(parts.join(edgeSymbol)) : undefined - } - get next() { - if (this.isRoot()) return this - const index = this.getIndex() - const parent = this.parent - const length = parent.length - const next = index + 1 - return next === length ? parent._getChildrenArray()[0] : parent._getChildrenArray()[next] - } - get previous() { - if (this.isRoot()) return this - const index = this.getIndex() - const parent = this.parent - const length = parent.length - const prev = index - 1 - return prev === -1 ? parent._getChildrenArray()[length - 1] : parent._getChildrenArray()[prev] - } - _getUnionNames() { - if (!this.length) return [] - const obj = {} - this.forEach(node => { - if (!node.length) return undefined - node.forEach(node => { - obj[node.firstWord] = 1 - }) - }) - return Object.keys(obj) - } - getAncestorNodesByInheritanceViaExtendsKeyword(key) { - const ancestorNodes = this._getAncestorNodes( - (node, id) => node._getNodesByColumn(0, id), - node => node.get(key), - this - ) - ancestorNodes.push(this) - return ancestorNodes - } - // Note: as you can probably tell by the name of this method, I don't recommend using this as it will likely be replaced by something better. - getAncestorNodesByInheritanceViaColumnIndices(thisColumnNumber, extendsColumnNumber) { - const ancestorNodes = this._getAncestorNodes( - (node, id) => node._getNodesByColumn(thisColumnNumber, id), - node => node.getWord(extendsColumnNumber), - this - ) - ancestorNodes.push(this) - return ancestorNodes - } - _getAncestorNodes(getPotentialParentNodesByIdFn, getParentIdFn, cannotContainNode) { - const parentId = getParentIdFn(this) - if (!parentId) return [] - const potentialParentNodes = getPotentialParentNodesByIdFn(this.parent, parentId) - if (!potentialParentNodes.length) throw new Error(`"${this.getLine()} tried to extend "${parentId}" but "${parentId}" not found.`) - if (potentialParentNodes.length > 1) throw new Error(`Invalid inheritance family tree. Multiple unique ids found for "${parentId}"`) - const parentNode = potentialParentNodes[0] - // todo: detect loops - if (parentNode === cannotContainNode) throw new Error(`Loop detected between '${this.getLine()}' and '${parentNode.getLine()}'`) - const ancestorNodes = parentNode._getAncestorNodes(getPotentialParentNodesByIdFn, getParentIdFn, cannotContainNode) - ancestorNodes.push(parentNode) - return ancestorNodes - } - pathVectorToFirstWordPath(pathVector) { - const path = pathVector.slice() // copy array - const names = [] - let node = this - while (path.length) { - if (!node) return names - names.push(node.nodeAt(path[0]).firstWord) - node = node.nodeAt(path.shift()) - } - return names - } - toStringWithLineNumbers() { - return this.toString() - .split("\n") - .map((line, index) => `${index + 1} ${line}`) - .join("\n") - } - get asCsv() { - return this.toDelimited(",") - } - _getTypes(header) { - const matrix = this._getMatrix(header) - const types = header.map(i => "int") - matrix.forEach(row => { - row.forEach((value, index) => { - const type = types[index] - if (type === "string") return 1 - if (value === undefined || value === "") return 1 - if (type === "float") { - if (value.match(/^\-?[0-9]*\.?[0-9]*$/)) return 1 - types[index] = "string" - } - if (value.match(/^\-?[0-9]+$/)) return 1 - types[index] = "string" - }) - }) - return types - } - toDataTable(header = this._getUnionNames()) { - const types = this._getTypes(header) - const parsers = { - string: str => str, - float: parseFloat, - int: parseInt - } - const cellFn = (cellValue, rowIndex, columnIndex) => (rowIndex ? parsers[types[columnIndex]](cellValue) : cellValue) - const arrays = this._toArrays(header, cellFn) - arrays.rows.unshift(arrays.header) - return arrays.rows - } - toDelimited(delimiter, header = this._getUnionNames(), escapeSpecialChars = true) { - const regex = new RegExp(`(\\n|\\"|\\${delimiter})`) - const cellFn = (str, row, column) => (!str.toString().match(regex) ? str : `"` + str.replace(/\"/g, `""`) + `"`) - return this._toDelimited(delimiter, header, escapeSpecialChars ? cellFn : str => str) - } - _getMatrix(columns) { - const matrix = [] - this.forEach(child => { - const row = [] - columns.forEach(col => { - row.push(child.get(col)) - }) - matrix.push(row) - }) - return matrix - } - _toArrays(columnNames, cellFn) { - const skipHeaderRow = 1 - const header = columnNames.map((columnName, index) => cellFn(columnName, 0, index)) - const rows = this.map((node, rowNumber) => - columnNames.map((columnName, columnIndex) => { - const childNode = node.getNode(columnName) - const content = childNode ? childNode.contentWithChildren : "" - return cellFn(content, rowNumber + skipHeaderRow, columnIndex) - }) - ) - return { - rows, - header - } - } - _toDelimited(delimiter, header, cellFn) { - const data = this._toArrays(header, cellFn) - return data.header.join(delimiter) + "\n" + data.rows.map(row => row.join(delimiter)).join("\n") - } - get asTable() { - // Output a table for printing - return this._toTable(100, false) - } - toFormattedTable(maxCharactersPerColumn, alignRight = false) { - return this._toTable(maxCharactersPerColumn, alignRight) - } - _toTable(maxCharactersPerColumn, alignRight = false) { - const header = this._getUnionNames() - // Set initial column widths - const widths = header.map(col => (col.length > maxCharactersPerColumn ? maxCharactersPerColumn : col.length)) - // Expand column widths if needed - this.forEach(node => { - if (!node.length) return true - header.forEach((col, index) => { - const cellValue = node.get(col) - if (!cellValue) return true - const length = cellValue.toString().length - if (length > widths[index]) widths[index] = length > maxCharactersPerColumn ? maxCharactersPerColumn : length - }) - }) - const cellFn = (cellText, row, col) => { - const width = widths[col] - // Strip newlines in fixedWidth output - const cellValue = cellText.toString().replace(/\n/g, "\\n") - const cellLength = cellValue.length - if (cellLength > width) return cellValue.substr(0, width) + "..." - const padding = " ".repeat(width - cellLength) - return alignRight ? padding + cellValue : cellValue + padding - } - return this._toDelimited(" ", header, cellFn) - } - get asSsv() { - return this.toDelimited(" ") - } - get asOutline() { - return this._toOutline(node => node.getLine()) - } - toMappedOutline(nodeFn) { - return this._toOutline(nodeFn) - } - // Adapted from: https://github.com/notatestuser/treeify.js - _toOutline(nodeFn) { - const growBranch = (outlineTreeNode, last, lastStates, nodeFn, callback) => { - let lastStatesCopy = lastStates.slice(0) - const node = outlineTreeNode.node - if (lastStatesCopy.push([outlineTreeNode, last]) && lastStates.length > 0) { - let line = "" - // firstWordd on the "was last element" states of whatever we're nested within, - // we need to append either blankness or a branch to our line - lastStates.forEach((lastState, idx) => { - if (idx > 0) line += lastState[1] ? " " : "│" - }) - // the prefix varies firstWordd on whether the key contains something to show and - // whether we're dealing with the last element in this collection - // the extra "-" just makes things stand out more. - line += (last ? "└" : "├") + nodeFn(node) - callback(line) - } - if (!node) return - const length = node.length - let index = 0 - node.forEach(node => { - let lastKey = ++index === length - growBranch({ node: node }, lastKey, lastStatesCopy, nodeFn, callback) - }) - } - let output = "" - growBranch({ node: this }, false, [], nodeFn, line => (output += line + "\n")) - return output - } - copyTo(node, index) { - return node._insertLineAndChildren(this.getLine(), this.childrenToString(), index) - } - // Note: Splits using a positive lookahead - // this.split("foo").join("\n") === this.toString() - split(firstWord) { - const constructor = this.constructor - const NodeBreakSymbol = this.nodeBreakSymbol - const WordBreakSymbol = this.wordBreakSymbol - // todo: cleanup. the escaping is wierd. - return this.toString() - .split(new RegExp(`\\${NodeBreakSymbol}(?=${firstWord}(?:${WordBreakSymbol}|\\${NodeBreakSymbol}))`, "g")) - .map(str => new constructor(str)) - } - get asMarkdownTable() { - return this.toMarkdownTableAdvanced(this._getUnionNames(), val => val) - } - toMarkdownTableAdvanced(columns, formatFn) { - const matrix = this._getMatrix(columns) - const empty = columns.map(col => "-") - matrix.unshift(empty) - matrix.unshift(columns) - const lines = matrix.map((row, rowIndex) => { - const formattedValues = row.map((val, colIndex) => formatFn(val, rowIndex, colIndex)) - return `|${formattedValues.join("|")}|` - }) - return lines.join("\n") - } - get asTsv() { - return this.toDelimited("\t") - } - get nodeBreakSymbol() { - return TN_NODE_BREAK_SYMBOL - } - get wordBreakSymbol() { - return TN_WORD_BREAK_SYMBOL - } - get edgeSymbolRegex() { - return new RegExp(this.edgeSymbol, "g") - } - get nodeBreakSymbolRegex() { - return new RegExp(this.nodeBreakSymbol, "g") - } - get edgeSymbol() { - return TN_EDGE_SYMBOL - } - _textToContentAndChildrenTuple(text) { - const lines = text.split(this.nodeBreakSymbolRegex) - const firstLine = lines.shift() - const children = !lines.length - ? undefined - : lines - .map(line => (line.substr(0, 1) === this.edgeSymbol ? line : this.edgeSymbol + line)) - .map(line => line.substr(1)) - .join(this.nodeBreakSymbol) - return [firstLine, children] - } - _getLine() { - return this._line - } - _setLine(line = "") { - this._line = line - if (this._words) delete this._words - return this - } - _clearChildren() { - this._deleteByIndexes(Utils.getRange(0, this.length)) - delete this._children - return this - } - _setChildren(content, circularCheckArray) { - this._clearChildren() - if (!content) return this - // set from string - if (typeof content === "string") { - this._appendChildrenFromString(content) - return this - } - // set from tree object - if (content instanceof TreeNode) { - content.forEach(node => this._insertLineAndChildren(node.getLine(), node.childrenToString())) - return this - } - // If we set from object, create an array of inserted objects to avoid circular loops - if (!circularCheckArray) circularCheckArray = [content] - return this._setFromObject(content, circularCheckArray) - } - _setFromObject(content, circularCheckArray) { - for (let firstWord in content) { - if (!content.hasOwnProperty(firstWord)) continue - // Branch the circularCheckArray, as we only have same branch circular arrays - this._appendFromJavascriptObjectTuple(firstWord, content[firstWord], circularCheckArray.slice(0)) - } - return this - } - // todo: refactor the below. - _appendFromJavascriptObjectTuple(firstWord, content, circularCheckArray) { - const type = typeof content - let line - let children - if (content === null) line = firstWord + " " + null - else if (content === undefined) line = firstWord - else if (type === "string") { - const tuple = this._textToContentAndChildrenTuple(content) - line = firstWord + " " + tuple[0] - children = tuple[1] - } else if (type === "function") line = firstWord + " " + content.toString() - else if (type !== "object") line = firstWord + " " + content - else if (content instanceof Date) line = firstWord + " " + content.getTime().toString() - else if (content instanceof TreeNode) { - line = firstWord - children = new TreeNode(content.childrenToString(), content.getLine()) - } else if (circularCheckArray.indexOf(content) === -1) { - circularCheckArray.push(content) - line = firstWord - const length = content instanceof Array ? content.length : Object.keys(content).length - if (length) children = new TreeNode()._setChildren(content, circularCheckArray) - } else { - // iirc this is return early from circular - return - } - this._insertLineAndChildren(line, children) - } - _insertLineAndChildren(line, children, index = this.length) { - const parser = this._getParser()._getParser(line, this) - const newNode = new parser(children, line, this) - const adjustedIndex = index < 0 ? this.length + index : index - this._getChildrenArray().splice(adjustedIndex, 0, newNode) - if (this._index) this._makeIndex(adjustedIndex) - this.clearQuickCache() - return newNode - } - _appendChildrenFromString(str) { - const lines = str.split(this.nodeBreakSymbolRegex) - const parentStack = [] - let currentIndentCount = -1 - let lastNode = this - lines.forEach(line => { - const indentCount = this._getIndentCount(line) - if (indentCount > currentIndentCount) { - currentIndentCount++ - parentStack.push(lastNode) - } else if (indentCount < currentIndentCount) { - // pop things off stack - while (indentCount < currentIndentCount) { - parentStack.pop() - currentIndentCount-- - } - } - const lineContent = line.substr(currentIndentCount) - const parent = parentStack[parentStack.length - 1] - const parser = parent._getParser()._getParser(lineContent, parent) - lastNode = new parser(undefined, lineContent, parent) - parent._getChildrenArray().push(lastNode) - }) - } - _getIndex() { - // StringMap {firstWord: index} - // When there are multiple tails with the same firstWord, _index stores the last content. - // todo: change the above behavior: when a collision occurs, create an array. - return this._index || this._makeIndex() - } - getContentsArray() { - return this.map(node => node.content) - } - getChildrenByParser(parser) { - return this.filter(child => child instanceof parser) - } - getAncestorByParser(parser) { - if (this instanceof parser) return this - if (this.isRoot()) return undefined - const parent = this.parent - return parent instanceof parser ? parent : parent.getAncestorByParser(parser) - } - getNodeByParser(parser) { - return this.find(child => child instanceof parser) - } - indexOfLast(firstWord) { - const result = this._getIndex()[firstWord] - return result === undefined ? -1 : result - } - // todo: renmae to indexOfFirst? - indexOf(firstWord) { - if (!this.has(firstWord)) return -1 - const length = this.length - const nodes = this._getChildrenArray() - for (let index = 0; index < length; index++) { - if (nodes[index].firstWord === firstWord) return index - } - } - // todo: rename this. it is a particular type of object. - toObject() { - return this._toObject() - } - getFirstWords() { - return this.map(node => node.firstWord) - } - _makeIndex(startAt = 0) { - if (!this._index || !startAt) this._index = {} - const nodes = this._getChildrenArray() - const newIndex = this._index - const length = nodes.length - for (let index = startAt; index < length; index++) { - newIndex[nodes[index].firstWord] = index - } - return newIndex - } - _childrenToXml(indentCount) { - return this.map(node => node._toXml(indentCount)).join("") - } - _getIndentCount(str) { - let level = 0 - const edgeChar = this.edgeSymbol - while (str[level] === edgeChar) { - level++ - } - return level - } - clone(children = this.childrenToString(), line = this.getLine()) { - return new this.constructor(children, line) - } - hasFirstWord(firstWord) { - return this._hasFirstWord(firstWord) - } - has(firstWordPath) { - const edgeSymbol = this.edgeSymbol - if (!firstWordPath.includes(edgeSymbol)) return this.hasFirstWord(firstWordPath) - const parts = firstWordPath.split(edgeSymbol) - const next = this.getNode(parts.shift()) - if (!next) return false - return next.has(parts.join(edgeSymbol)) - } - hasNode(node) { - const needle = node.toString() - return this.getChildren().some(node => node.toString() === needle) - } - _hasFirstWord(firstWord) { - return this._getIndex()[firstWord] !== undefined - } - map(fn) { - return this.getChildren().map(fn) - } - filter(fn = item => item) { - return this.getChildren().filter(fn) - } - find(fn) { - return this.getChildren().find(fn) - } - findLast(fn) { - return this.getChildren().reverse().find(fn) - } - every(fn) { - let index = 0 - for (let node of this.getTopDownArrayIterator()) { - if (!fn(node, index)) return false - index++ - } - return true - } - forEach(fn) { - this.getChildren().forEach(fn) - return this - } - // Recurse if predicate passes - deepVisit(predicate) { - this.forEach(node => { - if (predicate(node) !== false) node.deepVisit(predicate) - }) - } - get quickCache() { - if (!this._quickCache) this._quickCache = {} - return this._quickCache - } - getCustomIndex(key) { - if (!this.quickCache.customIndexes) this.quickCache.customIndexes = {} - const customIndexes = this.quickCache.customIndexes - if (customIndexes[key]) return customIndexes[key] - const customIndex = {} - customIndexes[key] = customIndex - this.filter(file => file.has(key)).forEach(file => { - const value = file.get(key) - if (!customIndex[value]) customIndex[value] = [] - customIndex[value].push(file) - }) - return customIndex - } - clearQuickCache() { - delete this._quickCache - } - // todo: protected? - _clearIndex() { - delete this._index - this.clearQuickCache() - } - slice(start, end) { - return this.getChildren().slice(start, end) - } - // todo: make 0 and 1 a param - getInheritanceTree() { - const paths = {} - const result = new TreeNode() - this.forEach(node => { - const key = node.getWord(0) - const parentKey = node.getWord(1) - const parentPath = paths[parentKey] - paths[key] = parentPath ? [parentPath, key].join(" ") : key - result.touchNode(paths[key]) - }) - return result - } - _getGrandParent() { - return this.isRoot() || this.parent.isRoot() ? undefined : this.parent.parent - } - _getParser() { - if (!TreeNode._parserCombinators.has(this.constructor)) TreeNode._parserCombinators.set(this.constructor, this.createParserCombinator()) - return TreeNode._parserCombinators.get(this.constructor) - } - createParserCombinator() { - return new ParserCombinator(this.constructor) - } - static _makeUniqueId() { - if (this._uniqueId === undefined) this._uniqueId = 0 - this._uniqueId++ - return this._uniqueId - } - static _getFileFormat(path) { - const format = path.split(".").pop() - return FileFormat[format] ? format : FileFormat.tree - } - getLineModifiedTime() { - return this._lineModifiedTime || this._nodeCreationTime - } - getChildArrayModifiedTime() { - return this._childArrayModifiedTime || this._nodeCreationTime - } - _setChildArrayMofifiedTime(value) { - this._childArrayModifiedTime = value - return this - } - getLineOrChildrenModifiedTime() { - return Math.max( - this.getLineModifiedTime(), - this.getChildArrayModifiedTime(), - Math.max.apply( - null, - this.map(child => child.getLineOrChildrenModifiedTime()) - ) - ) - } - _setVirtualParentTree(tree) { - this._virtualParentTree = tree - return this - } - _getVirtualParentTreeNode() { - return this._virtualParentTree - } - _setVirtualAncestorNodesByInheritanceViaColumnIndicesAndThenExpand(nodes, thisIdColumnNumber, extendsIdColumnNumber) { - const map = {} - for (let node of nodes) { - const nodeId = node.getWord(thisIdColumnNumber) - if (map[nodeId]) throw new Error(`Tried to define a node with id "${nodeId}" but one is already defined.`) - map[nodeId] = { - nodeId: nodeId, - node: node, - parentId: node.getWord(extendsIdColumnNumber) - } - } - // Add parent Nodes - Object.values(map).forEach(nodeInfo => { - const parentId = nodeInfo.parentId - const parentNode = map[parentId] - if (parentId && !parentNode) throw new Error(`Node "${nodeInfo.nodeId}" tried to extend "${parentId}" but "${parentId}" not found.`) - if (parentId) nodeInfo.node._setVirtualParentTree(parentNode.node) - }) - nodes.forEach(node => node._expandFromVirtualParentTree()) - return this - } - _expandFromVirtualParentTree() { - if (this._isVirtualExpanded) return this - this._isExpanding = true - let parentNode = this._getVirtualParentTreeNode() - if (parentNode) { - if (parentNode._isExpanding) throw new Error(`Loop detected: '${this.getLine()}' is the ancestor of one of its ancestors.`) - parentNode._expandFromVirtualParentTree() - const clone = this.clone() - this._setChildren(parentNode.childrenToString()) - this.extend(clone) - } - this._isExpanding = false - this._isVirtualExpanded = true - } - // todo: solve issue related to whether extend should overwrite or append. - _expandChildren(thisIdColumnNumber, extendsIdColumnNumber, childrenThatNeedExpanding = this.getChildren()) { - return this._setVirtualAncestorNodesByInheritanceViaColumnIndicesAndThenExpand(childrenThatNeedExpanding, thisIdColumnNumber, extendsIdColumnNumber) - } - // todo: add more testing. - // todo: solve issue with where extend should overwrite or append - // todo: should take a grammar? to decide whether to overwrite or append. - // todo: this is slow. - extend(nodeOrStr) { - const node = nodeOrStr instanceof TreeNode ? nodeOrStr : new TreeNode(nodeOrStr) - const usedFirstWords = new Set() - node.forEach(sourceNode => { - const firstWord = sourceNode.firstWord - let targetNode - const isAnArrayNotMap = usedFirstWords.has(firstWord) - if (!this.has(firstWord)) { - usedFirstWords.add(firstWord) - this.appendLineAndChildren(sourceNode.getLine(), sourceNode.childrenToString()) - return true - } - if (isAnArrayNotMap) targetNode = this.appendLine(sourceNode.getLine()) - else { - targetNode = this.touchNode(firstWord).setContent(sourceNode.content) - usedFirstWords.add(firstWord) - } - if (sourceNode.length) targetNode.extend(sourceNode) - }) - return this - } - lastNode() { - return this.getChildren()[this.length - 1] - } - expandLastFromTopMatter() { - const clone = this.clone() - const map = new Map() - const lastNode = clone.lastNode() - lastNode.getOlderSiblings().forEach(node => map.set(node.getWord(0), node)) - lastNode.topDownArray.forEach(node => { - const replacement = map.get(node.getWord(0)) - if (!replacement) return - node.replaceNode(str => replacement.toString()) - }) - return lastNode - } - macroExpand(macroDefinitionWord, macroUsageWord) { - const clone = this.clone() - const defs = clone.findNodes(macroDefinitionWord) - const allUses = clone.findNodes(macroUsageWord) - const wordBreakSymbol = clone.wordBreakSymbol - defs.forEach(def => { - const macroName = def.getWord(1) - const uses = allUses.filter(node => node.hasWord(1, macroName)) - const params = def.getWordsFrom(2) - const replaceFn = str => { - const paramValues = str.split(wordBreakSymbol).slice(2) - let newTree = def.childrenToString() - params.forEach((param, index) => { - newTree = newTree.replace(new RegExp(param, "g"), paramValues[index]) - }) - return newTree - } - uses.forEach(node => { - node.replaceNode(replaceFn) - }) - def.destroy() - }) - return clone - } - setChildren(children) { - return this._setChildren(children) - } - _updateLineModifiedTimeAndTriggerEvent() { - this._lineModifiedTime = this._getProcessTimeInMilliseconds() - } - insertWord(index, word) { - const wi = this.wordBreakSymbol - const words = this._getLine().split(wi) - words.splice(index, 0, word) - this.setLine(words.join(wi)) - return this - } - deleteDuplicates() { - const set = new Set() - this.topDownArray.forEach(node => { - const str = node.toString() - if (set.has(str)) node.destroy() - else set.add(str) - }) - return this - } - setWord(index, word) { - const wi = this.wordBreakSymbol - const words = this._getLine().split(wi) - words[index] = word - this.setLine(words.join(wi)) - return this - } - deleteChildren() { - return this._clearChildren() - } - setContent(content) { - if (content === this.content) return this - const newArray = [this.firstWord] - if (content !== undefined) { - content = content.toString() - if (content.match(this.nodeBreakSymbol)) return this.setContentWithChildren(content) - newArray.push(content) - } - this._setLine(newArray.join(this.wordBreakSymbol)) - this._updateLineModifiedTimeAndTriggerEvent() - return this - } - prependSibling(line, children) { - return this.parent.insertLineAndChildren(line, children, this.getIndex()) - } - appendSibling(line, children) { - return this.parent.insertLineAndChildren(line, children, this.getIndex() + 1) - } - setContentWithChildren(text) { - // todo: deprecate - if (!text.includes(this.nodeBreakSymbol)) { - this._clearChildren() - return this.setContent(text) - } - const lines = text.split(this.nodeBreakSymbolRegex) - const firstLine = lines.shift() - this.setContent(firstLine) - // tood: cleanup. - const remainingString = lines.join(this.nodeBreakSymbol) - const children = new TreeNode(remainingString) - if (!remainingString) children.appendLine("") - this.setChildren(children) - return this - } - setFirstWord(firstWord) { - return this.setWord(0, firstWord) - } - setLine(line) { - if (line === this.getLine()) return this - // todo: clear parent TMTimes - this.parent._clearIndex() - this._setLine(line) - this._updateLineModifiedTimeAndTriggerEvent() - return this - } - duplicate() { - return this.parent._insertLineAndChildren(this.getLine(), this.childrenToString(), this.getIndex() + 1) - } - trim() { - // todo: could do this so only the trimmed rows are deleted. - this.setChildren(this.childrenToString().trim()) - return this - } - destroy() { - this.parent._deleteNode(this) - } - set(firstWordPath, text) { - return this.touchNode(firstWordPath).setContentWithChildren(text) - } - setFromText(text) { - if (this.toString() === text) return this - const tuple = this._textToContentAndChildrenTuple(text) - this.setLine(tuple[0]) - return this._setChildren(tuple[1]) - } - setPropertyIfMissing(prop, value) { - if (this.has(prop)) return true - return this.touchNode(prop).setContent(value) - } - setProperties(propMap) { - const props = Object.keys(propMap) - const values = Object.values(propMap) - // todo: is there a built in tree method to do this? - props.forEach((prop, index) => { - const value = values[index] - if (!value) return true - if (this.get(prop) === value) return true - this.touchNode(prop).setContent(value) - }) - return this - } - // todo: throw error if line contains a \n - appendLine(line) { - return this._insertLineAndChildren(line) - } - appendUniqueLine(line) { - if (!this.hasLine(line)) return this.appendLine(line) - return this.findLine(line) - } - appendLineAndChildren(line, children) { - return this._insertLineAndChildren(line, children) - } - getNodesByRegex(regex) { - const matches = [] - regex = regex instanceof RegExp ? [regex] : regex - this._getNodesByLineRegex(matches, regex) - return matches - } - // todo: remove? - getNodesByLinePrefixes(columns) { - const matches = [] - this._getNodesByLineRegex( - matches, - columns.map(str => new RegExp("^" + str)) - ) - return matches - } - nodesThatStartWith(prefix) { - return this.filter(node => node.getLine().startsWith(prefix)) - } - _getNodesByLineRegex(matches, regs) { - const rgs = regs.slice(0) - const reg = rgs.shift() - const candidates = this.filter(child => child.getLine().match(reg)) - if (!rgs.length) return candidates.forEach(cand => matches.push(cand)) - candidates.forEach(cand => cand._getNodesByLineRegex(matches, rgs)) - } - concat(node) { - if (typeof node === "string") node = new TreeNode(node) - return node.map(node => this._insertLineAndChildren(node.getLine(), node.childrenToString())) - } - _deleteByIndexes(indexesToDelete) { - if (!indexesToDelete.length) return this - this._clearIndex() - // note: assumes indexesToDelete is in ascending order - const deletedNodes = indexesToDelete.reverse().map(index => this._getChildrenArray().splice(index, 1)[0]) - this._setChildArrayMofifiedTime(this._getProcessTimeInMilliseconds()) - return this - } - _deleteNode(node) { - const index = this._indexOfNode(node) - return index > -1 ? this._deleteByIndexes([index]) : 0 - } - reverse() { - this._clearIndex() - this._getChildrenArray().reverse() - return this - } - shift() { - if (!this.length) return null - const node = this._getChildrenArray().shift() - return node.copyTo(new this.constructor(), 0) - } - sort(fn) { - this._getChildrenArray().sort(fn) - this._clearIndex() - return this - } - invert() { - this.forEach(node => node.words.reverse()) - return this - } - _rename(oldFirstWord, newFirstWord) { - const index = this.indexOf(oldFirstWord) - if (index === -1) return this - const node = this._getChildrenArray()[index] - node.setFirstWord(newFirstWord) - this._clearIndex() - return this - } - // Does not recurse. - remap(map) { - this.forEach(node => { - const firstWord = node.firstWord - if (map[firstWord] !== undefined) node.setFirstWord(map[firstWord]) - }) - return this - } - rename(oldFirstWord, newFirstWord) { - this._rename(oldFirstWord, newFirstWord) - return this - } - renameAll(oldName, newName) { - this.findNodes(oldName).forEach(node => node.setFirstWord(newName)) - return this - } - _deleteAllChildNodesWithFirstWord(firstWord) { - if (!this.has(firstWord)) return this - const allNodes = this._getChildrenArray() - const indexesToDelete = [] - allNodes.forEach((node, index) => { - if (node.firstWord === firstWord) indexesToDelete.push(index) - }) - return this._deleteByIndexes(indexesToDelete) - } - delete(path = "") { - const edgeSymbol = this.edgeSymbol - if (!path.includes(edgeSymbol)) return this._deleteAllChildNodesWithFirstWord(path) - const parts = path.split(edgeSymbol) - const nextFirstWord = parts.pop() - const targetNode = this.getNode(parts.join(edgeSymbol)) - return targetNode ? targetNode._deleteAllChildNodesWithFirstWord(nextFirstWord) : 0 - } - deleteColumn(firstWord = "") { - this.forEach(node => node.delete(firstWord)) - return this - } - _getNonMaps() { - const results = this.topDownArray.filter(node => node.hasDuplicateFirstWords()) - if (this.hasDuplicateFirstWords()) results.unshift(this) - return results - } - replaceNode(fn) { - const parent = this.parent - const index = this.getIndex() - const newNodes = new TreeNode(fn(this.toString())) - const returnedNodes = [] - newNodes.forEach((child, childIndex) => { - const newNode = parent.insertLineAndChildren(child.getLine(), child.childrenToString(), index + childIndex) - returnedNodes.push(newNode) - }) - this.destroy() - return returnedNodes - } - insertLineAndChildren(line, children, index) { - return this._insertLineAndChildren(line, children, index) - } - insertLine(line, index) { - return this._insertLineAndChildren(line, undefined, index) - } - prependLine(line) { - return this.insertLine(line, 0) - } - pushContentAndChildren(content, children) { - let index = this.length - while (this.has(index.toString())) { - index++ - } - const line = index.toString() + (content === undefined ? "" : this.wordBreakSymbol + content) - return this.appendLineAndChildren(line, children) - } - deleteBlanks() { - this.getChildren() - .filter(node => node.isBlankLine()) - .forEach(node => node.destroy()) - return this - } - // todo: add "globalReplace" method? Which runs a global regex or string replace on the Tree doc as a string? - firstWordSort(firstWordOrder) { - return this._firstWordSort(firstWordOrder) - } - deleteWordAt(wordIndex) { - const words = this.words - words.splice(wordIndex, 1) - return this.setWords(words) - } - trigger(event) { - if (this._listeners && this._listeners.has(event.constructor)) { - const listeners = this._listeners.get(event.constructor) - const listenersToRemove = [] - for (let index = 0; index < listeners.length; index++) { - const listener = listeners[index] - if (listener(event) === true) listenersToRemove.push(index) - } - listenersToRemove.reverse().forEach(index => listenersToRemove.splice(index, 1)) - } - } - triggerAncestors(event) { - if (this.isRoot()) return - const parent = this.parent - parent.trigger(event) - parent.triggerAncestors(event) - } - onLineChanged(eventHandler) { - return this._addEventListener(LineChangedTreeEvent, eventHandler) - } - onDescendantChanged(eventHandler) { - return this._addEventListener(DescendantChangedTreeEvent, eventHandler) - } - onChildAdded(eventHandler) { - return this._addEventListener(ChildAddedTreeEvent, eventHandler) - } - onChildRemoved(eventHandler) { - return this._addEventListener(ChildRemovedTreeEvent, eventHandler) - } - _addEventListener(eventClass, eventHandler) { - if (!this._listeners) this._listeners = new Map() - if (!this._listeners.has(eventClass)) this._listeners.set(eventClass, []) - this._listeners.get(eventClass).push(eventHandler) - return this - } - setWords(words) { - return this.setLine(words.join(this.wordBreakSymbol)) - } - setWordsFrom(index, words) { - this.setWords(this.words.slice(0, index).concat(words)) - return this - } - appendWord(word) { - const words = this.words - words.push(word) - return this.setWords(words) - } - _firstWordSort(firstWordOrder, secondarySortFn) { - const nodeAFirst = -1 - const nodeBFirst = 1 - const map = {} - firstWordOrder.forEach((word, index) => { - map[word] = index - }) - this.sort((nodeA, nodeB) => { - const valA = map[nodeA.firstWord] - const valB = map[nodeB.firstWord] - if (valA > valB) return nodeBFirst - if (valA < valB) return nodeAFirst - return secondarySortFn ? secondarySortFn(nodeA, nodeB) : 0 - }) - return this - } - _touchNode(firstWordPathArray) { - let contextNode = this - firstWordPathArray.forEach(firstWord => { - contextNode = contextNode.getNode(firstWord) || contextNode.appendLine(firstWord) - }) - return contextNode - } - _touchNodeByString(str) { - str = str.replace(this.nodeBreakSymbolRegex, "") // todo: do we want to do this sanitization? - return this._touchNode(str.split(this.wordBreakSymbol)) - } - touchNode(str) { - return this._touchNodeByString(str) - } - appendNode(node) { - return this.appendLineAndChildren(node.getLine(), node.childrenToString()) - } - hasLine(line) { - return this.getChildren().some(node => node.getLine() === line) - } - findLine(line) { - return this.getChildren().find(node => node.getLine() === line) - } - getNodesByLine(line) { - return this.filter(node => node.getLine() === line) - } - toggleLine(line) { - const lines = this.getNodesByLine(line) - if (lines.length) { - lines.map(line => line.destroy()) - return this - } - return this.appendLine(line) - } - // todo: remove? - sortByColumns(indexOrIndices) { - const indices = indexOrIndices instanceof Array ? indexOrIndices : [indexOrIndices] - const length = indices.length - this.sort((nodeA, nodeB) => { - const wordsA = nodeA.words - const wordsB = nodeB.words - for (let index = 0; index < length; index++) { - const col = indices[index] - const av = wordsA[col] - const bv = wordsB[col] - if (av === undefined) return -1 - if (bv === undefined) return 1 - if (av > bv) return 1 - else if (av < bv) return -1 - } - return 0 - }) - return this - } - getWordsAsSet() { - return new Set(this.getWordsFrom(1)) - } - appendWordIfMissing(word) { - if (this.getWordsAsSet().has(word)) return this - return this.appendWord(word) - } - // todo: check to ensure identical objects - addObjectsAsDelimited(arrayOfObjects, delimiter = Utils._chooseDelimiter(new TreeNode(arrayOfObjects).toString())) { - const header = Object.keys(arrayOfObjects[0]) - .join(delimiter) - .replace(/[\n\r]/g, "") - const rows = arrayOfObjects.map(item => - Object.values(item) - .join(delimiter) - .replace(/[\n\r]/g, "") - ) - return this.addUniqueRowsToNestedDelimited(header, rows) - } - setChildrenAsDelimited(tree, delimiter = Utils._chooseDelimiter(tree.toString())) { - tree = tree instanceof TreeNode ? tree : new TreeNode(tree) - return this.setChildren(tree.toDelimited(delimiter)) - } - convertChildrenToDelimited(delimiter = Utils._chooseDelimiter(this.childrenToString())) { - // todo: handle newlines!!! - return this.setChildren(this.toDelimited(delimiter)) - } - addUniqueRowsToNestedDelimited(header, rowsAsStrings) { - if (!this.length) this.appendLine(header) - // todo: this looks brittle - rowsAsStrings.forEach(row => { - if (!this.toString().includes(row)) this.appendLine(row) - }) - return this - } - shiftLeft() { - const grandParent = this._getGrandParent() - if (!grandParent) return this - const parentIndex = this.parent.getIndex() - const newNode = grandParent.insertLineAndChildren(this.getLine(), this.length ? this.childrenToString() : undefined, parentIndex + 1) - this.destroy() - return newNode - } - pasteText(text) { - const parent = this.parent - const index = this.getIndex() - const newNodes = new TreeNode(text) - const firstNode = newNodes.nodeAt(0) - if (firstNode) { - this.setLine(firstNode.getLine()) - if (firstNode.length) this.setChildren(firstNode.childrenToString()) - } else { - this.setLine("") - } - newNodes.forEach((child, childIndex) => { - if (!childIndex) - // skip first - return true - parent.insertLineAndChildren(child.getLine(), child.childrenToString(), index + childIndex) - }) - return this - } - templateToString(obj) { - // todo: compile/cache for perf? - const tree = this.clone() - tree.topDownArray.forEach(node => { - const line = node.getLine().replace(/{([^\}]+)}/g, (match, path) => { - const replacement = obj[path] - if (replacement === undefined) throw new Error(`In string template no match found on line "${node.getLine()}"`) - return replacement - }) - node.pasteText(line) - }) - return tree.toString() - } - shiftRight() { - const olderSibling = this._getClosestOlderSibling() - if (!olderSibling) return this - const newNode = olderSibling.appendLineAndChildren(this.getLine(), this.length ? this.childrenToString() : undefined) - this.destroy() - return newNode - } - shiftYoungerSibsRight() { - const nodes = this.getYoungerSiblings() - nodes.forEach(node => node.shiftRight()) - return this - } - sortBy(nameOrNames) { - const names = nameOrNames instanceof Array ? nameOrNames : [nameOrNames] - const length = names.length - this.sort((nodeA, nodeB) => { - if (!nodeB.length && !nodeA.length) return 0 - else if (!nodeA.length) return -1 - else if (!nodeB.length) return 1 - for (let index = 0; index < length; index++) { - const firstWord = names[index] - const av = nodeA.get(firstWord) - const bv = nodeB.get(firstWord) - if (av > bv) return 1 - else if (av < bv) return -1 - } - return 0 - }) - return this - } - selectNode() { - this._selected = true - } - unselectNode() { - delete this._selected - } - isSelected() { - return !!this._selected - } - async saveVersion() { - const newVersion = this.toString() - const topUndoVersion = this._getTopUndoVersion() - if (newVersion === topUndoVersion) return undefined - this._recordChange(newVersion) - this._setSavedVersion(this.toString()) - return this - } - hasUnsavedChanges() { - return this.toString() !== this._getSavedVersion() - } - async redo() { - const undoStack = this._getUndoStack() - const redoStack = this._getRedoStack() - if (!redoStack.length) return undefined - undoStack.push(redoStack.pop()) - return this._reloadFromUndoTop() - } - async undo() { - const undoStack = this._getUndoStack() - const redoStack = this._getRedoStack() - if (undoStack.length === 1) return undefined - redoStack.push(undoStack.pop()) - return this._reloadFromUndoTop() - } - _getSavedVersion() { - return this._savedVersion - } - _setSavedVersion(str) { - this._savedVersion = str - return this - } - _clearRedoStack() { - const redoStack = this._getRedoStack() - redoStack.splice(0, redoStack.length) - } - getChangeHistory() { - return this._getUndoStack().slice(0) - } - _getUndoStack() { - if (!this._undoStack) this._undoStack = [] - return this._undoStack - } - _getRedoStack() { - if (!this._redoStack) this._redoStack = [] - return this._redoStack - } - _getTopUndoVersion() { - const undoStack = this._getUndoStack() - return undoStack[undoStack.length - 1] - } - async _reloadFromUndoTop() { - this.setChildren(this._getTopUndoVersion()) - } - _recordChange(newVersion) { - this._clearRedoStack() - this._getUndoStack().push(newVersion) // todo: use diffs? - } - static fromCsv(str) { - return this.fromDelimited(str, ",", '"') - } - // todo: jeez i think we can come up with a better name than "JsonSubset" - static fromJsonSubset(str) { - return new TreeNode(JSON.parse(str)) - } - static serializedTreeNodeToTree(treeNode) { - const language = new TreeNode() - const cellDelimiter = language.wordBreakSymbol - const nodeDelimiter = language.nodeBreakSymbol - const line = treeNode.cells ? treeNode.cells.join(cellDelimiter) : undefined - const tree = new TreeNode(undefined, line) - if (treeNode.children) - treeNode.children.forEach(child => { - tree.appendNode(this.serializedTreeNodeToTree(child)) - }) - return tree - } - static fromJson(str) { - return this.serializedTreeNodeToTree(JSON.parse(str)) - } - static fromGridJson(str) { - const lines = JSON.parse(str) - const language = new TreeNode() - const cellDelimiter = language.wordBreakSymbol - const nodeDelimiter = language.nodeBreakSymbol - return new TreeNode(lines.map(line => line.join(cellDelimiter)).join(nodeDelimiter)) - } - static fromSsv(str) { - return this.fromDelimited(str, " ", '"') - } - static fromTsv(str) { - return this.fromDelimited(str, "\t", '"') - } - static fromDelimited(str, delimiter, quoteChar = '"') { - str = str.replace(/\r/g, "") // remove windows newlines if present - const rows = this._getEscapedRows(str, delimiter, quoteChar) - return this._rowsToTreeNode(rows, delimiter, true) - } - static _getEscapedRows(str, delimiter, quoteChar) { - return str.includes(quoteChar) ? this._strToRows(str, delimiter, quoteChar) : str.split("\n").map(line => line.split(delimiter)) - } - static fromDelimitedNoHeaders(str, delimiter, quoteChar) { - str = str.replace(/\r/g, "") // remove windows newlines if present - const rows = this._getEscapedRows(str, delimiter, quoteChar) - return this._rowsToTreeNode(rows, delimiter, false) - } - static _strToRows(str, delimiter, quoteChar, newLineChar = "\n") { - const rows = [[]] - const newLine = "\n" - const length = str.length - let currentCell = "" - let inQuote = str.substr(0, 1) === quoteChar - let currentPosition = inQuote ? 1 : 0 - let nextChar - let isLastChar - let currentRow = 0 - let char - let isNextCharAQuote - while (currentPosition < length) { - char = str[currentPosition] - isLastChar = currentPosition + 1 === length - nextChar = str[currentPosition + 1] - isNextCharAQuote = nextChar === quoteChar - if (inQuote) { - if (char !== quoteChar) currentCell += char - else if (isNextCharAQuote) { - // Both the current and next char are ", so the " is escaped - currentCell += nextChar - currentPosition++ // Jump 2 - } else { - // If the current char is a " and the next char is not, it's the end of the quotes - inQuote = false - if (isLastChar) rows[currentRow].push(currentCell) - } - } else { - if (char === delimiter) { - rows[currentRow].push(currentCell) - currentCell = "" - if (isNextCharAQuote) { - inQuote = true - currentPosition++ // Jump 2 - } - } else if (char === newLine) { - rows[currentRow].push(currentCell) - currentCell = "" - currentRow++ - if (nextChar) rows[currentRow] = [] - if (isNextCharAQuote) { - inQuote = true - currentPosition++ // Jump 2 - } - } else if (isLastChar) rows[currentRow].push(currentCell + char) - else currentCell += char - } - currentPosition++ - } - return rows - } - static multiply(nodeA, nodeB) { - const productNode = nodeA.clone() - productNode.forEach((node, index) => { - node.setChildren(node.length ? this.multiply(node, nodeB) : nodeB.clone()) - }) - return productNode - } - // Given an array return a tree - static _rowsToTreeNode(rows, delimiter, hasHeaders) { - const numberOfColumns = rows[0].length - const treeNode = new TreeNode() - const names = this._getHeader(rows, hasHeaders) - const rowCount = rows.length - for (let rowIndex = hasHeaders ? 1 : 0; rowIndex < rowCount; rowIndex++) { - let row = rows[rowIndex] - // If the row contains too many columns, shift the extra columns onto the last one. - // This allows you to not have to escape delimiter characters in the final column. - if (row.length > numberOfColumns) { - row[numberOfColumns - 1] = row.slice(numberOfColumns - 1).join(delimiter) - row = row.slice(0, numberOfColumns) - } else if (row.length < numberOfColumns) { - // If the row is missing columns add empty columns until it is full. - // This allows you to make including delimiters for empty ending columns in each row optional. - while (row.length < numberOfColumns) { - row.push("") - } - } - const obj = {} - row.forEach((cellValue, index) => { - obj[names[index]] = cellValue - }) - treeNode.pushContentAndChildren(undefined, obj) - } - return treeNode - } - static _initializeXmlParser() { - if (this._xmlParser) return - const windowObj = window - if (typeof windowObj.DOMParser !== "undefined") this._xmlParser = xmlStr => new windowObj.DOMParser().parseFromString(xmlStr, "text/xml") - else if (typeof windowObj.ActiveXObject !== "undefined" && new windowObj.ActiveXObject("Microsoft.XMLDOM")) { - this._xmlParser = xmlStr => { - const xmlDoc = new windowObj.ActiveXObject("Microsoft.XMLDOM") - xmlDoc.async = "false" - xmlDoc.loadXML(xmlStr) - return xmlDoc - } - } else throw new Error("No XML parser found") - } - static fromXml(str) { - this._initializeXmlParser() - const xml = this._xmlParser(str) - try { - return this._treeNodeFromXml(xml).getNode("children") - } catch (err) { - return this._treeNodeFromXml(this._parseXml2(str)).getNode("children") - } - } - static _zipObject(keys, values) { - const obj = {} - keys.forEach((key, index) => (obj[key] = values[index])) - return obj - } - static fromShape(shapeArr, rootNode = new TreeNode()) { - const part = shapeArr.shift() - if (part !== undefined) { - for (let index = 0; index < part; index++) { - rootNode.appendLine(index.toString()) - } - } - if (shapeArr.length) rootNode.forEach(node => TreeNode.fromShape(shapeArr.slice(0), node)) - return rootNode - } - static fromDataTable(table) { - const header = table.shift() - return new TreeNode(table.map(row => this._zipObject(header, row))) - } - static _parseXml2(str) { - const el = document.createElement("div") - el.innerHTML = str - return el - } - // todo: cleanup typings - static _treeNodeFromXml(xml) { - const result = new TreeNode() - const children = new TreeNode() - // Set attributes - if (xml.attributes) { - for (let index = 0; index < xml.attributes.length; index++) { - result.set(xml.attributes[index].name, xml.attributes[index].value) - } - } - if (xml.data) children.pushContentAndChildren(xml.data) - // Set content - if (xml.childNodes && xml.childNodes.length > 0) { - for (let index = 0; index < xml.childNodes.length; index++) { - const child = xml.childNodes[index] - if (child.tagName && child.tagName.match(/parsererror/i)) throw new Error("Parse Error") - if (child.childNodes.length > 0 && child.tagName) children.appendLineAndChildren(child.tagName, this._treeNodeFromXml(child)) - else if (child.tagName) children.appendLine(child.tagName) - else if (child.data) { - const data = child.data.trim() - if (data) children.pushContentAndChildren(data) - } - } - } - if (children.length > 0) result.touchNode("children").setChildren(children) - return result - } - static _getHeader(rows, hasHeaders) { - const numberOfColumns = rows[0].length - const headerRow = hasHeaders ? rows[0] : [] - const WordBreakSymbol = " " - const ziRegex = new RegExp(WordBreakSymbol, "g") - if (hasHeaders) { - // Strip any WordBreakSymbols from column names in the header row. - // This makes the mapping not quite 1 to 1 if there are any WordBreakSymbols in names. - for (let index = 0; index < numberOfColumns; index++) { - headerRow[index] = headerRow[index].replace(ziRegex, "") - } - } else { - // If str has no headers, create them as 0,1,2,3 - for (let index = 0; index < numberOfColumns; index++) { - headerRow.push(index.toString()) - } - } - return headerRow - } - static nest(str, xValue) { - const NodeBreakSymbol = TN_NODE_BREAK_SYMBOL - const WordBreakSymbol = TN_WORD_BREAK_SYMBOL - const indent = NodeBreakSymbol + WordBreakSymbol.repeat(xValue) - return str ? indent + str.replace(/\n/g, indent) : "" - } - static fromDisk(path) { - const format = this._getFileFormat(path) - const content = require("fs").readFileSync(path, "utf8") - const methods = { - tree: content => new TreeNode(content), - csv: content => this.fromCsv(content), - tsv: content => this.fromTsv(content) - } - return methods[format](content) - } - static fromFolder(folderPath, filepathPredicate = filepath => filepath !== ".DS_Store") { - const path = require("path") - const fs = require("fs") - const tree = new TreeNode() - const files = fs - .readdirSync(folderPath) - .map(filename => path.join(folderPath, filename)) - .filter(filepath => !fs.statSync(filepath).isDirectory() && filepathPredicate(filepath)) - .forEach(filePath => tree.appendLineAndChildren(filePath, fs.readFileSync(filePath, "utf8"))) - return tree - } -} -TreeNode._parserCombinators = new Map() -TreeNode.ParserCombinator = ParserCombinator -TreeNode.iris = `sepal_length,sepal_width,petal_length,petal_width,species -6.1,3,4.9,1.8,virginica -5.6,2.7,4.2,1.3,versicolor -5.6,2.8,4.9,2,virginica -6.2,2.8,4.8,1.8,virginica -7.7,3.8,6.7,2.2,virginica -5.3,3.7,1.5,0.2,setosa -6.2,3.4,5.4,2.3,virginica -4.9,2.5,4.5,1.7,virginica -5.1,3.5,1.4,0.2,setosa -5,3.4,1.5,0.2,setosa` -TreeNode.getVersion = () => "79.0.0" -class AbstractExtendibleTreeNode extends TreeNode { - _getFromExtended(firstWordPath) { - const hit = this._getNodeFromExtended(firstWordPath) - return hit ? hit.get(firstWordPath) : undefined - } - _getFamilyTree() { - const tree = new TreeNode() - this.forEach(node => { - const path = node._getAncestorsArray().map(node => node.id) - path.reverse() - tree.touchNode(path.join(TN_EDGE_SYMBOL)) - }) - return tree - } - // todo: be more specific with the param - _getChildrenByParserInExtended(parser) { - return Utils.flatten(this._getAncestorsArray().map(node => node.getChildrenByParser(parser))) - } - _getExtendedParent() { - return this._getAncestorsArray()[1] - } - _hasFromExtended(firstWordPath) { - return !!this._getNodeFromExtended(firstWordPath) - } - _getNodeFromExtended(firstWordPath) { - return this._getAncestorsArray().find(node => node.has(firstWordPath)) - } - _getConcatBlockStringFromExtended(firstWordPath) { - return this._getAncestorsArray() - .filter(node => node.has(firstWordPath)) - .map(node => node.getNode(firstWordPath).childrenToString()) - .reverse() - .join("\n") - } - _doesExtend(parserId) { - return this._getAncestorSet().has(parserId) - } - _getAncestorSet() { - if (!this._cache_ancestorSet) this._cache_ancestorSet = new Set(this._getAncestorsArray().map(def => def.id)) - return this._cache_ancestorSet - } - // Note: the order is: [this, parent, grandParent, ...] - _getAncestorsArray(cannotContainNodes) { - this._initAncestorsArrayCache(cannotContainNodes) - return this._cache_ancestorsArray - } - get idThatThisExtends() { - return this.get(ScrollNotationConstants.extends) - } - _initAncestorsArrayCache(cannotContainNodes) { - if (this._cache_ancestorsArray) return undefined - if (cannotContainNodes && cannotContainNodes.includes(this)) throw new Error(`Loop detected: '${this.getLine()}' is the ancestor of one of its ancestors.`) - cannotContainNodes = cannotContainNodes || [this] - let ancestors = [this] - const extendedId = this.idThatThisExtends - if (extendedId) { - const parentNode = this.idToNodeMap[extendedId] - if (!parentNode) throw new Error(`${extendedId} not found`) - ancestors = ancestors.concat(parentNode._getAncestorsArray(cannotContainNodes)) - } - this._cache_ancestorsArray = ancestors - } -} -class ExtendibleTreeNode extends AbstractExtendibleTreeNode { - get idToNodeMap() { - if (!this.isRoot()) return this.root.idToNodeMap - if (!this._nodeMapCache) { - this._nodeMapCache = {} - this.forEach(child => { - this._nodeMapCache[child.id] = child - }) - } - return this._nodeMapCache - } - get id() { - return this.getWord(0) - } -} - -module.exports = { TreeNode, ExtendibleTreeNode, AbstractExtendibleTreeNode, TreeEvents, TreeWord } diff --git a/node_modules/scroll-cli/node_modules/scrollsdk/products/Utils.js b/node_modules/scroll-cli/node_modules/scrollsdk/products/Utils.js deleted file mode 100644 index b3e23eae5b..0000000000 --- a/node_modules/scroll-cli/node_modules/scrollsdk/products/Utils.js +++ /dev/null @@ -1,655 +0,0 @@ -class Timer { - constructor() { - this._tickTime = Date.now() - (Utils.isNodeJs() ? 1000 * process.uptime() : 0) - this._firstTickTime = this._tickTime - } - tick(msg) { - const elapsed = Date.now() - this._tickTime - if (msg) console.log(`${elapsed}ms ${msg}`) - this._tickTime = Date.now() - return elapsed - } - getTotalElapsedTime() { - return Date.now() - this._firstTickTime - } -} -class Utils { - static getFileExtension(filepath = "") { - const match = filepath.match(/\.([^\.]+)$/) - return (match && match[1]) || "" - } - static ensureFolderEndsInSlash(folder) { - return folder.replace(/\/$/, "") + "/" - } - static runCommand(instance, command = "", param = undefined) { - const run = name => { - console.log(`Running ${name}:`) - instance[name](param) - } - if (instance[command + "Command"]) return run(command + "Command") - // Get commands from both the child and parent classes - const classes = [Object.getPrototypeOf(instance), Object.getPrototypeOf(Object.getPrototypeOf(instance))] - const allCommands = classes.map(classInstance => Object.getOwnPropertyNames(classInstance).filter(word => word.endsWith("Command"))).flat() - allCommands.sort() - const commandAsNumber = parseInt(command) - 1 - if (command.match(/^\d+$/) && allCommands[commandAsNumber]) return run(allCommands[commandAsNumber]) - console.log(`\n❌ No command provided. Available commands:\n\n` + allCommands.map((name, index) => `${index + 1}. ${name.replace("Command", "")}`).join("\n") + "\n") - } - static removeReturnChars(str = "") { - return str.replace(/\r/g, "") - } - static isAbsoluteUrl(url) { - return url.startsWith("https://") || url.startsWith("http://") - } - static removeEmptyLines(str = "") { - return str.replace(/\n\n+/g, "\n") - } - static shiftRight(str = "", numSpaces = 1) { - let spaces = " ".repeat(numSpaces) - return str.replace(/\n/g, `\n${spaces}`) - } - static getLinks(str = "") { - const _re = new RegExp("(^|[ \t\r\n])((ftp|http|https):(([A-Za-z0-9$_.+!*(),;/?:@&~=-])|%[A-Fa-f0-9]{2}){2,}(#([a-zA-Z0-9][a-zA-Z0-9$_.+!*(),;/?:@&~=%-]*))?([A-Za-z0-9$_+!*();/?:~-]))", "g") - return str.match(_re) || [] - } - // Only allow text content and inline styling. Don't allow HTML tags or any nested scroll tags or escape characters. - static escapeScrollAndHtml(content = "") { - return content.replace(/ word.includes(delimiter)) - if (hit) throw `Delimiter "${delimiter}" found in hit` - } - // https://github.com/rigoneri/indefinite-article.js/blob/master/indefinite-article.js - static getIndefiniteArticle(phrase) { - // Getting the first word - const match = /\w+/.exec(phrase) - let word - if (match) word = match[0] - else return "an" - var l_word = word.toLowerCase() - // Specific start of words that should be preceded by 'an' - var alt_cases = ["honest", "hour", "hono"] - for (var i in alt_cases) { - if (l_word.indexOf(alt_cases[i]) == 0) return "an" - } - // Single letter word which should be preceded by 'an' - if (l_word.length == 1) { - if ("aedhilmnorsx".indexOf(l_word) >= 0) return "an" - else return "a" - } - // Capital words which should likely be preceded by 'an' - if (word.match(/(?!FJO|[HLMNS]Y.|RY[EO]|SQU|(F[LR]?|[HL]|MN?|N|RH?|S[CHKLMNPTVW]?|X(YL)?)[AEIOU])[FHLMNRSX][A-Z]/)) { - return "an" - } - // Special cases where a word that begins with a vowel should be preceded by 'a' - const regexes = [/^e[uw]/, /^onc?e\b/, /^uni([^nmd]|mo)/, /^u[bcfhjkqrst][aeiou]/] - for (var i in regexes) { - if (l_word.match(regexes[i])) return "a" - } - // Special capital words (UK, UN) - if (word.match(/^U[NK][AIEO]/)) { - return "a" - } else if (word == word.toUpperCase()) { - if ("aedhilmnorsx".indexOf(l_word[0]) >= 0) return "an" - else return "a" - } - // Basic method of words that begin with a vowel being preceded by 'an' - if ("aeiou".indexOf(l_word[0]) >= 0) return "an" - // Instances where y follwed by specific letters is preceded by 'an' - if (l_word.match(/^y(b[lor]|cl[ea]|fere|gg|p[ios]|rou|tt)/)) return "an" - return "a" - } - static htmlEscaped(content = "") { - return content.replace(/()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/) - } - static capitalizeFirstLetter(str) { - return str.charAt(0).toUpperCase() + str.slice(1) - } - // generate a random alpha numeric hash: - static getRandomCharacters(length) { - const characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789" - let result = "" - for (let i = 0; i < length; i++) { - result += characters.charAt(Math.floor(Math.random() * characters.length)) - } - return result - } - static isNodeJs() { - return typeof exports !== "undefined" - } - static findProjectRoot(startingDirName, projectName) { - const fs = require("fs") - const getProjectName = dirName => { - if (!dirName) throw new Error(`dirName undefined when attempting to findProjectRoot for project "${projectName}" starting in "${startingDirName}"`) - const parts = dirName.split("/") - const filename = parts.join("/") + "/" + "package.json" - if (fs.existsSync(filename) && JSON.parse(fs.readFileSync(filename, "utf8")).name === projectName) return parts.join("/") + "/" - parts.pop() - return parts - } - let result = getProjectName(startingDirName) - while (typeof result !== "string" && result.length > 0) { - result = getProjectName(result.join("/")) - } - if (result.length === 0) throw new Error(`Project root "${projectName}" in folder ${startingDirName} not found.`) - return result - } - static titleToPermalink(str) { - return str - .replace(/[\/\_\:\\\[\]]/g, "-") - .replace(/π/g, "pi") - .replace(/`/g, "tick") - .replace(/\$/g, "dollar-sign") - .replace(/\*$/g, "-star") - .replace(/^\*/g, "star-") - .replace(/\*/g, "-star-") - .replace(/\'+$/g, "q") - .replace(/^@/g, "at-") - .replace(/@$/g, "-at") - .replace(/@/g, "-at-") - .replace(/[\'\"\,\ū]/g, "") - .replace(/^\#/g, "sharp-") - .replace(/\#$/g, "-sharp") - .replace(/\#/g, "-sharp-") - .replace(/[\(\)]/g, "") - .replace(/\+\+$/g, "pp") - .replace(/\+$/g, "p") - .replace(/^\!/g, "bang-") - .replace(/\!$/g, "-bang") - .replace(/\!/g, "-bang-") - .replace(/\&/g, "-n-") - .replace(/[\+ ]/g, "-") - .replace(/[^a-zA-Z0-9\-\.]/g, "") - .toLowerCase() - } - static escapeRegExp(str) { - return str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&") - } - static sum(arr) { - return arr.reduce((curr, next) => curr + next, 0) - } - static makeVector(length, fill = 0) { - return new Array(length).fill(fill) - } - static makeMatrix(cols, rows, fill = 0) { - const matrix = [] - while (rows) { - matrix.push(Utils.makeVector(cols, fill)) - rows-- - } - return matrix - } - static removeNonAscii(str) { - // https://stackoverflow.com/questions/20856197/remove-non-ascii-character-in-string - return str.replace(/[^\x00-\x7F]/g, "") - } - static getMethodFromDotPath(context, str) { - const methodParts = str.split(".") - while (methodParts.length > 1) { - const methodName = methodParts.shift() - if (!context[methodName]) throw new Error(`${methodName} is not a method on ${context}`) - context = context[methodName]() - } - const final = methodParts.shift() - return [context, final] - } - static requireAbsOrRelative(filePath, contextFilePath) { - if (!filePath.startsWith(".")) return require(filePath) - const path = require("path") - const folder = this.getPathWithoutFileName(contextFilePath) - const file = path.resolve(folder + "/" + filePath) - return require(file) - } - // Removes last ".*" from this string - static removeFileExtension(filename) { - return filename ? filename.replace(/\.[^\.]+$/, "") : "" - } - static getFileName(path) { - const normalizedPath = path.replace(/\\/g, "/") - const parts = normalizedPath.split("/") - return parts.pop() - } - static getPathWithoutFileName(path) { - const normalizedPath = path.replace(/\\/g, "/") - const parts = normalizedPath.split("/") - parts.pop() - return parts.join("/") - } - static shuffleInPlace(arr, seed = Date.now()) { - // https://stackoverflow.com/questions/6274339/how-can-i-shuffle-an-array - const randFn = Utils._getPseudoRandom0to1FloatGenerator(seed) - for (let index = arr.length - 1; index > 0; index--) { - const tempIndex = Math.floor(randFn() * (index + 1)) - ;[arr[index], arr[tempIndex]] = [arr[tempIndex], arr[index]] - } - return arr - } - // Only allows a-zA-Z0-9-_ (And optionally .) - static _permalink(str, reg) { - return str.length ? str.toLowerCase().replace(reg, "").replace(/ /g, "-") : "" - } - static isValueEmpty(value) { - return value === undefined || value === "" || (typeof value === "number" && isNaN(value)) || (value instanceof Date && isNaN(value)) - } - static stringToPermalink(str) { - return this._permalink(str, /[^a-z0-9- _\.]/gi) - } - static getAvailablePermalink(permalink, doesFileExistSyncFn) { - const extension = this.getFileExtension(permalink) - permalink = this.removeFileExtension(permalink) - const originalPermalink = permalink - let num = 2 - let suffix = "" - let filename = `${originalPermalink}${suffix}.${extension}` - while (doesFileExistSyncFn(filename)) { - filename = `${originalPermalink}${suffix}.${extension}` - suffix = "-" + num - num++ - } - return filename - } - static getNextOrPrevious(arr, item) { - const length = arr.length - const index = arr.indexOf(item) - if (length === 1) return undefined - if (index === length - 1) return arr[index - 1] - return arr[index + 1] - } - static toggle(currentValue, values) { - const index = values.indexOf(currentValue) - return index === -1 || index + 1 === values.length ? values[0] : values[index + 1] - } - static getClassNameFromFilePath(filepath) { - return this.removeFileExtension(this.getFileName(filepath)) - } - static joinArraysOn(joinOn, arrays, columns) { - const rows = {} - let index = 0 - if (!columns) columns = arrays.map(arr => Object.keys(arr[0])) - arrays.forEach((arr, index) => { - const cols = columns[index] - arr.forEach(row => { - const key = joinOn ? row[joinOn] : index++ - if (!rows[key]) rows[key] = {} - const obj = rows[key] - cols.forEach(col => (obj[col] = row[col])) - }) - }) - return Object.values(rows) - } - static getParentFolder(path) { - if (path.endsWith("/")) path = this._removeLastSlash(path) - return path.replace(/\/[^\/]*$/, "") + "/" - } - static _removeLastSlash(path) { - return path.replace(/\/$/, "") - } - static _listToEnglishText(list, limit = 5) { - const len = list.length - if (!len) return "" - if (len === 1) return `'${list[0]}'` - const clone = list.slice(0, limit).map(item => `'${item}'`) - const last = clone.pop() - if (len <= limit) return clone.join(", ") + ` and ${last}` - return clone.join(", ") + ` and ${len - limit} more` - } - // todo: refactor so instead of str input takes an array of cells(strings) and scans each indepndently. - static _chooseDelimiter(str) { - const del = " ,|\t;^%$!#@~*&+-=_:?.{}[]()<>/".split("").find(idea => !str.includes(idea)) - if (!del) throw new Error("Could not find a delimiter") - return del - } - static flatten(arr) { - if (arr.flat) return arr.flat() - return arr.reduce((acc, val) => acc.concat(val), []) - } - static escapeBackTicks(str) { - return str.replace(/\`/g, "\\`").replace(/\$\{/g, "\\${") - } - static ucfirst(str) { - return str.charAt(0).toUpperCase() + str.slice(1) - } - // Adapted from: https://github.com/dcporter/didyoumean.js/blob/master/didYouMean-1.2.1.js - static didYouMean(str = "", options = [], caseSensitive = false, threshold = 0.4, thresholdAbsolute = 20) { - if (!caseSensitive) str = str.toLowerCase() - // Calculate the initial value (the threshold) if present. - const thresholdRelative = threshold * str.length - let maximumEditDistanceToBeBestMatch - if (thresholdRelative !== null && thresholdAbsolute !== null) maximumEditDistanceToBeBestMatch = Math.min(thresholdRelative, thresholdAbsolute) - else if (thresholdRelative !== null) maximumEditDistanceToBeBestMatch = thresholdRelative - else if (thresholdAbsolute !== null) maximumEditDistanceToBeBestMatch = thresholdAbsolute - // Get the edit distance to each option. If the closest one is less than 40% (by default) of str's length, then return it. - let closestMatch - const len = options.length - for (let optionIndex = 0; optionIndex < len; optionIndex++) { - const candidate = options[optionIndex] - if (!candidate) continue - const editDistance = Utils._getEditDistance(str, caseSensitive ? candidate : candidate.toLowerCase(), maximumEditDistanceToBeBestMatch) - if (editDistance < maximumEditDistanceToBeBestMatch) { - maximumEditDistanceToBeBestMatch = editDistance - closestMatch = candidate - } - } - return closestMatch - } - // Adapted from: https://github.com/dcporter/didyoumean.js/blob/master/didYouMean-1.2.1.js - static _getEditDistance(stringA, stringB, maxInt) { - // Handle null or undefined max. - maxInt = maxInt || maxInt === 0 ? maxInt : Utils.MAX_INT - const aLength = stringA.length - const bLength = stringB.length - // Fast path - no A or B. - if (aLength === 0) return Math.min(maxInt + 1, bLength) - if (bLength === 0) return Math.min(maxInt + 1, aLength) - // Fast path - length diff larger than max. - if (Math.abs(aLength - bLength) > maxInt) return maxInt + 1 - // Slow path. - const matrix = [] - // Set up the first row ([0, 1, 2, 3, etc]). - for (let bIndex = 0; bIndex <= bLength; bIndex++) { - matrix[bIndex] = [bIndex] - } - // Set up the first column (same). - for (let aIndex = 0; aIndex <= aLength; aIndex++) { - matrix[0][aIndex] = aIndex - } - let colMin - let minJ - let maxJ - // Loop over the rest of the columns. - for (let bIndex = 1; bIndex <= bLength; bIndex++) { - colMin = Utils.MAX_INT - minJ = 1 - if (bIndex > maxInt) minJ = bIndex - maxInt - maxJ = bLength + 1 - if (maxJ > maxInt + bIndex) maxJ = maxInt + bIndex - // Loop over the rest of the rows. - for (let aIndex = 1; aIndex <= aLength; aIndex++) { - // If j is out of bounds, just put a large value in the slot. - if (aIndex < minJ || aIndex > maxJ) matrix[bIndex][aIndex] = maxInt + 1 - // Otherwise do the normal Levenshtein thing. - else { - // If the characters are the same, there's no change in edit distance. - if (stringB.charAt(bIndex - 1) === stringA.charAt(aIndex - 1)) matrix[bIndex][aIndex] = matrix[bIndex - 1][aIndex - 1] - // Otherwise, see if we're substituting, inserting or deleting. - else - matrix[bIndex][aIndex] = Math.min( - matrix[bIndex - 1][aIndex - 1] + 1, // Substitute - Math.min( - matrix[bIndex][aIndex - 1] + 1, // Insert - matrix[bIndex - 1][aIndex] + 1 - ) - ) // Delete - } - // Either way, update colMin. - if (matrix[bIndex][aIndex] < colMin) colMin = matrix[bIndex][aIndex] - } - // If this column's minimum is greater than the allowed maximum, there's no point - // in going on with life. - if (colMin > maxInt) return maxInt + 1 - } - // If we made it this far without running into the max, then return the final matrix value. - return matrix[bLength][aLength] - } - static getLineIndexAtCharacterPosition(str, index) { - const lines = str.split("\n") - const len = lines.length - let position = 0 - for (let lineNumber = 0; lineNumber < len; lineNumber++) { - position += lines[lineNumber].length - if (position >= index) return lineNumber - } - } - static resolvePath(filePath, programFilepath) { - // For use in Node.js only - if (!filePath.startsWith(".")) return filePath - const path = require("path") - const folder = this.getPathWithoutFileName(programFilepath) - return path.resolve(folder + "/" + filePath) - } - static resolveProperty(obj, path, separator = ".") { - const properties = Array.isArray(path) ? path : path.split(separator) - return properties.reduce((prev, curr) => prev && prev[curr], obj) - } - static appendCodeAndReturnValueOnWindow(code, name) { - const script = document.createElement("script") - script.innerHTML = code - document.head.appendChild(script) - return window[name] - } - static formatStr(str, catchAllCellDelimiter = " ", parameterMap) { - return str.replace(/{([^\}]+)}/g, (match, path) => { - const val = parameterMap[path] - if (!val) return "" - return Array.isArray(val) ? val.join(catchAllCellDelimiter) : val - }) - } - static stripHtml(text) { - return text && text.replace ? text.replace(/<(?:.|\n)*?>/gm, "") : text - } - static getUniqueWordsArray(allWords) { - const words = allWords.replace(/\n/g, " ").split(" ") - const index = {} - words.forEach(word => { - if (!index[word]) index[word] = 0 - index[word]++ - }) - return Object.keys(index).map(key => { - return { - word: key, - count: index[key] - } - }) - } - static getRandomString(length = 30, letters = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".split(""), seed = Date.now()) { - let str = "" - const randFn = Utils._getPseudoRandom0to1FloatGenerator(seed) - while (length) { - str += letters[Math.round(Math.min(randFn() * letters.length, letters.length - 1))] - length-- - } - return str - } - // todo: add seed! - static makeRandomTree(lines = 1000, seed = Date.now()) { - let str = "" - let letters = " 123abc".split("") - const randFn = Utils._getPseudoRandom0to1FloatGenerator(seed) - while (lines) { - let indent = " ".repeat(Math.round(randFn() * 6)) - let bit = indent - let rand = Math.floor(randFn() * 30) - while (rand) { - bit += letters[Math.round(Math.min(randFn() * letters.length, letters.length - 1))] - rand-- - } - bit += "\n" - str += bit - lines-- - } - return str - } - // adapted from https://gist.github.com/blixt/f17b47c62508be59987b - // 1993 Park-Miller LCG - static _getPseudoRandom0to1FloatGenerator(seed) { - return function () { - seed = Math.imul(48271, seed) | 0 % 2147483647 - return (seed & 2147483647) / 2147483648 - } - } - static sampleWithoutReplacement(population = [], quantity, seed) { - const prng = this._getPseudoRandom0to1FloatGenerator(seed) - const sampled = {} - const populationSize = population.length - if (quantity >= populationSize) return population.slice(0) - const picked = [] - while (picked.length < quantity) { - const index = Math.floor(prng() * populationSize) - if (sampled[index]) continue - sampled[index] = true - picked.push(population[index]) - } - return picked - } - static arrayToMap(arr) { - const map = {} - arr.forEach(val => (map[val] = true)) - return map - } - static _replaceNonAlphaNumericCharactersWithCharCodes(str) { - return str - .replace(/[^a-zA-Z0-9]/g, sub => { - return "_" + sub.charCodeAt(0).toString() - }) - .replace(/^([0-9])/, "number$1") - } - static mapValues(object, fn) { - const result = {} - Object.keys(object).forEach(key => { - result[key] = fn(key) - }) - return result - } - static javascriptTableWithHeaderRowToObjects(dataTable) { - dataTable = dataTable.slice() - const header = dataTable.shift() - return dataTable.map(row => { - const obj = {} - header.forEach((colName, index) => (obj[colName] = row[index])) - return obj - }) - } - static interweave(arrayOfArrays) { - const lineCount = Math.max(...arrayOfArrays.map(arr => arr.length)) - const totalArrays = arrayOfArrays.length - const result = [] - arrayOfArrays.forEach((lineArray, arrayIndex) => { - for (let lineIndex = 0; lineIndex < lineCount; lineIndex++) { - result[lineIndex * totalArrays + arrayIndex] = lineArray[lineIndex] - } - }) - return result - } - static makeSortByFn(accessorOrAccessors) { - const arrayOfFns = Array.isArray(accessorOrAccessors) ? accessorOrAccessors : [accessorOrAccessors] - return (objectA, objectB) => { - const nodeAFirst = -1 - const nodeBFirst = 1 - const accessor = arrayOfFns[0] // todo: handle accessors - const av = accessor(objectA) - const bv = accessor(objectB) - let result = av < bv ? nodeAFirst : av > bv ? nodeBFirst : 0 - if (av === undefined && bv !== undefined) result = nodeAFirst - else if (bv === undefined && av !== undefined) result = nodeBFirst - return result - } - } - static _makeGraphSortFunctionFromGraph(idAccessor, graph) { - return (nodeA, nodeB) => { - const nodeAFirst = -1 - const nodeBFirst = 1 - const nodeAUniqueId = idAccessor(nodeA) - const nodeBUniqueId = idAccessor(nodeB) - const nodeAExtendsNodeB = graph[nodeAUniqueId].has(nodeBUniqueId) - const nodeBExtendsNodeA = graph[nodeBUniqueId].has(nodeAUniqueId) - if (nodeAExtendsNodeB) return nodeBFirst - else if (nodeBExtendsNodeA) return nodeAFirst - const nodeAExtendsSomething = graph[nodeAUniqueId].size > 1 - const nodeBExtendsSomething = graph[nodeBUniqueId].size > 1 - if (!nodeAExtendsSomething && nodeBExtendsSomething) return nodeAFirst - else if (!nodeBExtendsSomething && nodeAExtendsSomething) return nodeBFirst - if (nodeAUniqueId > nodeBUniqueId) return nodeBFirst - else if (nodeAUniqueId < nodeBUniqueId) return nodeAFirst - return 0 - } - } - static removeAll(str, needle) { - return str.split(needle).join("") - } - static _makeGraphSortFunction(idAccessor, extendsIdAccessor) { - return (nodeA, nodeB) => { - // -1 === a before b - const nodeAUniqueId = idAccessor(nodeA) - const nodeAExtends = extendsIdAccessor(nodeA) - const nodeBUniqueId = idAccessor(nodeB) - const nodeBExtends = extendsIdAccessor(nodeB) - const nodeAExtendsNodeB = nodeAExtends === nodeBUniqueId - const nodeBExtendsNodeA = nodeBExtends === nodeAUniqueId - const nodeAFirst = -1 - const nodeBFirst = 1 - if (!nodeAExtends && !nodeBExtends) { - // If neither extends, sort by firstWord - if (nodeAUniqueId > nodeBUniqueId) return nodeBFirst - else if (nodeAUniqueId < nodeBUniqueId) return nodeAFirst - return 0 - } - // If only one extends, the other comes first - else if (!nodeAExtends) return nodeAFirst - else if (!nodeBExtends) return nodeBFirst - // If A extends B, B should come first - if (nodeAExtendsNodeB) return nodeBFirst - else if (nodeBExtendsNodeA) return nodeAFirst - // Sort by what they extend - if (nodeAExtends > nodeBExtends) return nodeBFirst - else if (nodeAExtends < nodeBExtends) return nodeAFirst - // Finally sort by firstWord - if (nodeAUniqueId > nodeBUniqueId) return nodeBFirst - else if (nodeAUniqueId < nodeBUniqueId) return nodeAFirst - // Should never hit this, unless we have a duplicate line. - return 0 - } - } -} -Utils.Timer = Timer -//http://stackoverflow.com/questions/37684/how-to-replace-plain-urls-with-links#21925491 -Utils.linkify = (text, target = "_blank") => { - let replacedText - let replacePattern1 - let replacePattern2 - let replacePattern3 - //URLs starting with http://, https://, or ftp:// - replacePattern1 = /(\b(https?|ftp):\/\/[-A-Z\(\)0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+\(\)&@#\/%=~_|])/gim - replacedText = text.replace(replacePattern1, `$1`) - //URLs starting with "www." (without // before it, or it'd re-link the ones done above). - replacePattern2 = /(^|[^\/])(www\.[\S]+(\b|$))/gim - replacedText = replacedText.replace(replacePattern2, `$1$2`) - //Change email addresses to mailto:: links. - replacePattern3 = /(([a-zA-Z0-9\-\_\.])+@[a-zA-Z\_]+?(\.[a-zA-Z]{2,6})+)/gim - replacedText = replacedText.replace(replacePattern3, '$1') - return replacedText -} -// todo: switch algo to: http://indiegamr.com/generate-repeatable-random-numbers-in-js/? -Utils.makeSemiRandomFn = (seed = Date.now()) => { - return () => { - const semiRand = Math.sin(seed++) * 10000 - return semiRand - Math.floor(semiRand) - } -} -Utils.randomUniformInt = (min, max, seed = Date.now()) => { - return Math.floor(Utils.randomUniformFloat(min, max, seed)) -} -Utils.randomUniformFloat = (min, max, seed = Date.now()) => { - const randFn = Utils.makeSemiRandomFn(seed) - return min + (max - min) * randFn() -} -Utils.getRange = (startIndex, endIndexExclusive, increment = 1) => { - const range = [] - for (let index = startIndex; index < endIndexExclusive; index = index + increment) { - range.push(index) - } - return range -} -Utils.MAX_INT = Math.pow(2, 32) - 1 - -module.exports = { Utils } diff --git a/node_modules/scroll-cli/node_modules/scrollsdk/products/hakon.nodejs.js b/node_modules/scroll-cli/node_modules/scrollsdk/products/hakon.nodejs.js deleted file mode 100755 index c5fb3425df..0000000000 --- a/node_modules/scroll-cli/node_modules/scrollsdk/products/hakon.nodejs.js +++ /dev/null @@ -1,428 +0,0 @@ -#! /usr/bin/env node -{ - const { Utils } = require("./Utils.js") - const { TreeNode } = require("./TreeNode.js") - const { HandGrammarProgram } = require("./GrammarLanguage.js") - const { GrammarBackedNode } = require("./GrammarLanguage.js") - - class hakonParser extends GrammarBackedNode { - createParserCombinator() { - return new TreeNode.ParserCombinator(selectorParser, Object.assign(Object.assign({}, super.createParserCombinator()._getFirstWordMapAsObject()), { comment: commentParser }), undefined) - } - getSelector() { - return "" - } - compile() { - return this.topDownArray - .filter(node => node.isSelectorParser) - .map(child => child.compile()) - .join("") - } - static cachedHandGrammarProgramRoot = new HandGrammarProgram(`// Cell Parsers -anyCell -keywordCell -commentKeywordCell - extends keywordCell - highlightScope comment - enum comment -extraCell - highlightScope invalid -cssValueCell - highlightScope constant.numeric -selectorCell - highlightScope keyword.control - examples body h1 - // todo add html tags, css and ids selector regexes, etc -vendorPrefixPropertyKeywordCell - description Properties like -moz-column-fill - highlightScope variable.function - extends keywordCell -propertyKeywordCell - highlightScope variable.function - extends keywordCell - // todo Where are these coming from? Can we add a url link - enum align-content align-items align-self all animation animation-delay animation-direction animation-duration animation-fill-mode animation-iteration-count animation-name animation-play-state animation-timing-function backface-visibility background background-attachment background-blend-mode background-clip background-color background-image background-origin background-position background-repeat background-size border border-bottom border-bottom-color border-bottom-left-radius border-bottom-right-radius border-bottom-style border-bottom-width border-collapse border-color border-image border-image-outset border-image-repeat border-image-slice border-image-source border-image-width border-left border-left-color border-left-style border-left-width border-radius border-right border-right-color border-right-style border-right-width border-spacing border-style border-top border-top-color border-top-left-radius border-top-right-radius border-top-style border-top-width border-width bottom box-shadow box-sizing break-inside caption-side clear clip color column-count column-fill column-gap column-rule column-rule-color column-rule-style column-rule-width column-span column-width columns content counter-increment counter-reset cursor direction display empty-cells fill filter flex flex-basis flex-direction flex-flow flex-grow flex-shrink flex-wrap float font @font-face font-family font-size font-size-adjust font-stretch font-style font-variant font-weight hanging-punctuation height hyphens justify-content @keyframes left letter-spacing line-height list-style list-style-image list-style-position list-style-type margin margin-bottom margin-left margin-right margin-top max-height max-width @media min-height min-width nav-down nav-index nav-left nav-right nav-up opacity order outline outline-color outline-offset outline-style outline-width overflow overflow-x overflow-y padding padding-bottom padding-left padding-right padding-top page-break-after page-break-before page-break-inside perspective perspective-origin position quotes resize right tab-size table-layout text-align text-align-last text-decoration text-decoration-color text-decoration-line text-decoration-style text-indent text-justify text-overflow text-shadow text-transform top transform transform-origin transform-style transition transition-delay transition-duration transition-property transition-timing-function unicode-bidi vertical-align visibility white-space width word-break word-spacing word-wrap z-index overscroll-behavior-x user-select -ms-touch-action -webkit-user-select -webkit-touch-callout -moz-user-select touch-action -ms-user-select -khtml-user-select gap grid-auto-flow grid-column grid-column-end grid-column-gap grid-column-start grid-gap grid-row grid-row-end grid-row-gap grid-row-start grid-template-columns grid-template-rows justify-items justify-self -errorCell - highlightScope invalid -commentCell - highlightScope comment - -// Line Parsers -hakonParser - root - // todo Add variables? - description A prefix Tree Language that compiles to CSS - compilesTo css - inScope commentParser - catchAllParser selectorParser - javascript - getSelector() { - return "" - } - compile() { - return this.topDownArray - .filter(node => node.isSelectorParser) - .map(child => child.compile()) - .join("") - } - example A basic example - body - font-size 12px - h1,h2 - color red - a - &:hover - color blue - font-size 17px -propertyParser - catchAllCellType cssValueCell - catchAllParser errorParser - javascript - compile(spaces) { - return \`\${spaces}\${this.firstWord}: \${this.content};\` - } - cells propertyKeywordCell -variableParser - extends propertyParser - pattern -- -browserPrefixPropertyParser - extends propertyParser - pattern ^\\-\\w.+ - cells vendorPrefixPropertyKeywordCell -errorParser - catchAllParser errorParser - catchAllCellType errorCell - baseParser errorParser -commentParser - cells commentKeywordCell - catchAllCellType commentCell - catchAllParser commentParser -selectorParser - inScope propertyParser variableParser commentParser - catchAllParser selectorParser - boolean isSelectorParser true - javascript - getSelector() { - const parentSelector = this.parent.getSelector() - return this.firstWord - .split(",") - .map(part => { - if (part.startsWith("&")) return parentSelector + part.substr(1) - return parentSelector ? parentSelector + " " + part : part - }) - .join(",") - } - compile() { - const propertyParsers = this.getChildren().filter(node => node.doesExtend("propertyParser")) - if (!propertyParsers.length) return "" - const spaces = " " - return \`\${this.getSelector()} { - \${propertyParsers.map(child => child.compile(spaces)).join("\\n")} - }\\n\` - } - cells selectorCell`) - get handGrammarProgram() { - return this.constructor.cachedHandGrammarProgramRoot - } - static rootParser = hakonParser - } - - class propertyParser extends GrammarBackedNode { - createParserCombinator() { - return new TreeNode.ParserCombinator(errorParser, undefined, undefined) - } - get propertyKeywordCell() { - return this.getWord(0) - } - get cssValueCell() { - return this.getWordsFrom(1) - } - compile(spaces) { - return `${spaces}${this.firstWord}: ${this.content};` - } - } - - class variableParser extends propertyParser {} - - class browserPrefixPropertyParser extends propertyParser { - get vendorPrefixPropertyKeywordCell() { - return this.getWord(0) - } - } - - class errorParser extends GrammarBackedNode { - createParserCombinator() { - return new TreeNode.ParserCombinator(errorParser, undefined, undefined) - } - getErrors() { - return this._getErrorParserErrors() - } - get errorCell() { - return this.getWordsFrom(0) - } - } - - class commentParser extends GrammarBackedNode { - createParserCombinator() { - return new TreeNode.ParserCombinator(commentParser, undefined, undefined) - } - get commentKeywordCell() { - return this.getWord(0) - } - get commentCell() { - return this.getWordsFrom(1) - } - } - - class selectorParser extends GrammarBackedNode { - createParserCombinator() { - return new TreeNode.ParserCombinator( - selectorParser, - Object.assign(Object.assign({}, super.createParserCombinator()._getFirstWordMapAsObject()), { - "border-bottom-right-radius": propertyParser, - "transition-timing-function": propertyParser, - "animation-iteration-count": propertyParser, - "animation-timing-function": propertyParser, - "border-bottom-left-radius": propertyParser, - "border-top-right-radius": propertyParser, - "border-top-left-radius": propertyParser, - "background-attachment": propertyParser, - "background-blend-mode": propertyParser, - "text-decoration-color": propertyParser, - "text-decoration-style": propertyParser, - "overscroll-behavior-x": propertyParser, - "-webkit-touch-callout": propertyParser, - "grid-template-columns": propertyParser, - "animation-play-state": propertyParser, - "text-decoration-line": propertyParser, - "animation-direction": propertyParser, - "animation-fill-mode": propertyParser, - "backface-visibility": propertyParser, - "background-position": propertyParser, - "border-bottom-color": propertyParser, - "border-bottom-style": propertyParser, - "border-bottom-width": propertyParser, - "border-image-outset": propertyParser, - "border-image-repeat": propertyParser, - "border-image-source": propertyParser, - "hanging-punctuation": propertyParser, - "list-style-position": propertyParser, - "transition-duration": propertyParser, - "transition-property": propertyParser, - "-webkit-user-select": propertyParser, - "animation-duration": propertyParser, - "border-image-slice": propertyParser, - "border-image-width": propertyParser, - "border-right-color": propertyParser, - "border-right-style": propertyParser, - "border-right-width": propertyParser, - "perspective-origin": propertyParser, - "-khtml-user-select": propertyParser, - "grid-template-rows": propertyParser, - "background-origin": propertyParser, - "background-repeat": propertyParser, - "border-left-color": propertyParser, - "border-left-style": propertyParser, - "border-left-width": propertyParser, - "column-rule-color": propertyParser, - "column-rule-style": propertyParser, - "column-rule-width": propertyParser, - "counter-increment": propertyParser, - "page-break-before": propertyParser, - "page-break-inside": propertyParser, - "grid-column-start": propertyParser, - "background-color": propertyParser, - "background-image": propertyParser, - "border-top-color": propertyParser, - "border-top-style": propertyParser, - "border-top-width": propertyParser, - "font-size-adjust": propertyParser, - "list-style-image": propertyParser, - "page-break-after": propertyParser, - "transform-origin": propertyParser, - "transition-delay": propertyParser, - "-ms-touch-action": propertyParser, - "-moz-user-select": propertyParser, - "animation-delay": propertyParser, - "background-clip": propertyParser, - "background-size": propertyParser, - "border-collapse": propertyParser, - "justify-content": propertyParser, - "list-style-type": propertyParser, - "text-align-last": propertyParser, - "text-decoration": propertyParser, - "transform-style": propertyParser, - "-ms-user-select": propertyParser, - "grid-column-end": propertyParser, - "grid-column-gap": propertyParser, - "animation-name": propertyParser, - "border-spacing": propertyParser, - "flex-direction": propertyParser, - "letter-spacing": propertyParser, - "outline-offset": propertyParser, - "padding-bottom": propertyParser, - "text-transform": propertyParser, - "vertical-align": propertyParser, - "grid-auto-flow": propertyParser, - "grid-row-start": propertyParser, - "align-content": propertyParser, - "border-bottom": propertyParser, - "border-radius": propertyParser, - "counter-reset": propertyParser, - "margin-bottom": propertyParser, - "outline-color": propertyParser, - "outline-style": propertyParser, - "outline-width": propertyParser, - "padding-right": propertyParser, - "text-overflow": propertyParser, - "justify-items": propertyParser, - "border-color": propertyParser, - "border-image": propertyParser, - "border-right": propertyParser, - "border-style": propertyParser, - "border-width": propertyParser, - "break-inside": propertyParser, - "caption-side": propertyParser, - "column-count": propertyParser, - "column-width": propertyParser, - "font-stretch": propertyParser, - "font-variant": propertyParser, - "margin-right": propertyParser, - "padding-left": propertyParser, - "table-layout": propertyParser, - "text-justify": propertyParser, - "unicode-bidi": propertyParser, - "word-spacing": propertyParser, - "touch-action": propertyParser, - "grid-row-end": propertyParser, - "grid-row-gap": propertyParser, - "justify-self": propertyParser, - "align-items": propertyParser, - "border-left": propertyParser, - "column-fill": propertyParser, - "column-rule": propertyParser, - "column-span": propertyParser, - "empty-cells": propertyParser, - "flex-shrink": propertyParser, - "font-family": propertyParser, - "font-weight": propertyParser, - "line-height": propertyParser, - "margin-left": propertyParser, - "padding-top": propertyParser, - perspective: propertyParser, - "text-indent": propertyParser, - "text-shadow": propertyParser, - "white-space": propertyParser, - "user-select": propertyParser, - "grid-column": propertyParser, - "align-self": propertyParser, - background: propertyParser, - "border-top": propertyParser, - "box-shadow": propertyParser, - "box-sizing": propertyParser, - "column-gap": propertyParser, - "flex-basis": propertyParser, - "@font-face": propertyParser, - "font-style": propertyParser, - "@keyframes": propertyParser, - "list-style": propertyParser, - "margin-top": propertyParser, - "max-height": propertyParser, - "min-height": propertyParser, - "overflow-x": propertyParser, - "overflow-y": propertyParser, - "text-align": propertyParser, - transition: propertyParser, - visibility: propertyParser, - "word-break": propertyParser, - animation: propertyParser, - direction: propertyParser, - "flex-flow": propertyParser, - "flex-grow": propertyParser, - "flex-wrap": propertyParser, - "font-size": propertyParser, - "max-width": propertyParser, - "min-width": propertyParser, - "nav-index": propertyParser, - "nav-right": propertyParser, - transform: propertyParser, - "word-wrap": propertyParser, - "nav-down": propertyParser, - "nav-left": propertyParser, - overflow: propertyParser, - position: propertyParser, - "tab-size": propertyParser, - "grid-gap": propertyParser, - "grid-row": propertyParser, - columns: propertyParser, - content: propertyParser, - display: propertyParser, - hyphens: propertyParser, - opacity: propertyParser, - outline: propertyParser, - padding: propertyParser, - "z-index": propertyParser, - border: propertyParser, - bottom: propertyParser, - cursor: propertyParser, - filter: propertyParser, - height: propertyParser, - margin: propertyParser, - "@media": propertyParser, - "nav-up": propertyParser, - quotes: propertyParser, - resize: propertyParser, - clear: propertyParser, - color: propertyParser, - float: propertyParser, - order: propertyParser, - right: propertyParser, - width: propertyParser, - clip: propertyParser, - fill: propertyParser, - flex: propertyParser, - font: propertyParser, - left: propertyParser, - all: propertyParser, - top: propertyParser, - gap: propertyParser, - "": propertyParser, - comment: commentParser - }), - [ - { regex: /--/, parser: variableParser }, - { regex: /^\-\w.+/, parser: browserPrefixPropertyParser } - ] - ) - } - get selectorCell() { - return this.getWord(0) - } - get isSelectorParser() { - return true - } - getSelector() { - const parentSelector = this.parent.getSelector() - return this.firstWord - .split(",") - .map(part => { - if (part.startsWith("&")) return parentSelector + part.substr(1) - return parentSelector ? parentSelector + " " + part : part - }) - .join(",") - } - compile() { - const propertyParsers = this.getChildren().filter(node => node.doesExtend("propertyParser")) - if (!propertyParsers.length) return "" - const spaces = " " - return `${this.getSelector()} { -${propertyParsers.map(child => child.compile(spaces)).join("\n")} -}\n` - } - } - - module.exports = hakonParser - hakonParser - - if (!module.parent) new hakonParser(TreeNode.fromDisk(process.argv[2]).toString()).execute() -} diff --git a/node_modules/scroll-cli/node_modules/scrollsdk/products/stamp.nodejs.js b/node_modules/scroll-cli/node_modules/scrollsdk/products/stamp.nodejs.js deleted file mode 100755 index 05ee3567e6..0000000000 --- a/node_modules/scroll-cli/node_modules/scrollsdk/products/stamp.nodejs.js +++ /dev/null @@ -1,341 +0,0 @@ -#! /usr/bin/env node -{ - const { Utils } = require("./Utils.js") - const { TreeNode } = require("./TreeNode.js") - const { HandGrammarProgram } = require("./GrammarLanguage.js") - const { GrammarBackedNode } = require("./GrammarLanguage.js") - - class stampParser extends GrammarBackedNode { - createParserCombinator() { - return new TreeNode.ParserCombinator(errorParser, Object.assign(Object.assign({}, super.createParserCombinator()._getFirstWordMapAsObject()), { "#!": hashbangParser, file: fileParser, folder: folderParser }), undefined) - } - async executeSeries(parentDir) { - const length = this.length - for (let index = 0; index < length; index++) { - const node = this.nodeAt(index) - await node.execute(parentDir) - } - return parentDir - } - verbose = true - silence() { - this.verbose = false - return this - } - log(message) { - if (this.verbose) console.log(message) - } - async execute(parentDir = process.cwd()) { - await this.executeSeries(parentDir) - } - static dirToStampWithContents(absPathWithoutEndingSlash) { - return stampParser._dirToStampFn(absPathWithoutEndingSlash, "content") - } - static dirToStamp(absPathWithoutEndingSlash) { - return stampParser._dirToStampFn(absPathWithoutEndingSlash, "list") - } - static _dirToStampFn(absPathWithoutEndingSlash, output) { - const fs = require("fs") - // todo: add chmod, file metadata - if (absPathWithoutEndingSlash.startsWith(".")) absPathWithoutEndingSlash = Utils.resolvePath(absPathWithoutEndingSlash, process.cwd() + "/") - const stat = fs.statSync(absPathWithoutEndingSlash) - if (!stat.isDirectory()) throw new Error(`${absPath} is a file not a directory.`) - const fns = { - list: (file, reducedPath) => { - const stat = fs.statSync(file) - const isDir = stat.isDirectory() - if (isDir) return `folder ` + reducedPath - return `file ` + reducedPath - }, - content: (file, reducedPath) => { - const stat = fs.statSync(file) - const isDir = stat.isDirectory() - if (isDir) return `folder ` + reducedPath - const content = fs.readFileSync(file, "utf8") - return `file ${reducedPath} - data${TreeNode.nest(content, 2)}` - } - } - const fn = fns[output] - return this._dirToStamp(absPathWithoutEndingSlash, fn) - } - static _dirToStamp(absPathWithoutEndingSlash, fileFn) { - const fs = require("fs") - const path = require("path") - function recursiveReaddirSync(filepath) { - let list = [] - const files = fs.readdirSync(filepath) - let stats - files.forEach(function (file) { - stats = fs.lstatSync(path.join(filepath, file)) - if (stats.isDirectory()) list = list.concat(recursiveReaddirSync(path.join(filepath, file))) - else list.push(path.join(filepath, file)) - }) - return list - } - const files = recursiveReaddirSync(absPathWithoutEndingSlash) - const folderParts = absPathWithoutEndingSlash.split("/") - const rootFolderName = folderParts.pop() - const rootFolderPath = folderParts.join("/") - const pathStartIndex = rootFolderPath.length + 1 - return files.map(file => fileFn(file, file.substr(pathStartIndex))).join("\n") - } - static cachedHandGrammarProgramRoot = new HandGrammarProgram(`// todo File permissions - -// Cell parsers -anyCell -extraCell - highlightScope invalid -anyCell - highlightScope string -promptWordsCell - highlightScope string -filepathCell -varNameCell - highlightScope string -commentCell - highlightScope comment -inputTypeCell - enum string int any lowercase -keywordCell - highlightScope keyword.control - -// Line parsers -stampParser - root - description A prefix Tree Language for creating distributable text template files that expand to folders and files. - catchAllParser errorParser - javascript - async executeSeries(parentDir) { - const length = this.length - for (let index = 0; index < length; index++) { - const node = this.nodeAt(index) - await node.execute(parentDir) - } - return parentDir - } - verbose = true - silence(){ - this.verbose = false - return this - } - log(message) { - if (this.verbose) - console.log(message) - } - async execute(parentDir = process.cwd()) { - await this.executeSeries(parentDir) - } - static dirToStampWithContents(absPathWithoutEndingSlash) { - return stampParser._dirToStampFn(absPathWithoutEndingSlash, "content") - } - static dirToStamp(absPathWithoutEndingSlash) { - return stampParser._dirToStampFn(absPathWithoutEndingSlash, "list") - } - static _dirToStampFn(absPathWithoutEndingSlash, output) { - const fs = require("fs") - // todo: add chmod, file metadata - if (absPathWithoutEndingSlash.startsWith(".")) absPathWithoutEndingSlash = Utils.resolvePath(absPathWithoutEndingSlash, process.cwd() + "/") - const stat = fs.statSync(absPathWithoutEndingSlash) - if (!stat.isDirectory()) throw new Error(\`\${absPath} is a file not a directory.\`) - const fns = { - list: (file, reducedPath) => { - const stat = fs.statSync(file) - const isDir = stat.isDirectory() - if (isDir) return \`folder \` + reducedPath - return \`file \` + reducedPath - }, - content: (file, reducedPath) => { - const stat = fs.statSync(file) - const isDir = stat.isDirectory() - if (isDir) return \`folder \` + reducedPath - const content = fs.readFileSync(file, "utf8") - return \`file \${reducedPath} - data\${TreeNode.nest(content, 2)}\` - } - } - const fn = fns[output] - return this._dirToStamp(absPathWithoutEndingSlash, fn) - } - static _dirToStamp(absPathWithoutEndingSlash, fileFn) { - const fs = require("fs") - const path = require("path") - function recursiveReaddirSync (filepath) { - let list = [] - const files = fs.readdirSync(filepath) - let stats - files.forEach(function (file) { - stats = fs.lstatSync(path.join(filepath, file)) - if (stats.isDirectory()) list = list.concat(recursiveReaddirSync(path.join(filepath, file))) - else list.push(path.join(filepath, file)) - }) - return list - } - const files = recursiveReaddirSync(absPathWithoutEndingSlash) - const folderParts = absPathWithoutEndingSlash.split("/") - const rootFolderName = folderParts.pop() - const rootFolderPath = folderParts.join("/") - const pathStartIndex = rootFolderPath.length + 1 - return files.map(file => fileFn(file, file.substr(pathStartIndex))).join("\\n") - } - inScope hashbangParser folderParser fileParser -hashbangParser - crux #! - catchAllCellType commentCell - cells commentCell -catchAllAnyLineParser - catchAllCellType anyCell - catchAllParser catchAllAnyLineParser - cells anyCell -dataParser - catchAllParser catchAllAnyLineParser - cells keywordCell - crux data -errorParser - baseParser errorParser -executableParser - cells keywordCell - crux executable -fileParser - cells keywordCell filepathCell - javascript - compileToBash(parentDir) { - const filePath = this._getAbsolutePath(parentDir) - return \`touch \${filePath}\\necho -e "\${this.childrenToString()}" >> \${filePath}\` - } - _getAbsolutePath(parentDir = process.cwd()) { - return parentDir + "/" + this.cells.filepathCell - } - execute(parentDir) { - const fs = require("fs") - const fullPath = this._getAbsolutePath(parentDir) - this.root.log(\`Creating file \${fullPath}\`) - const data = this.getNode("data") - const content = data ? data.childrenToString() : "" - fs.mkdirSync(require("path").dirname(fullPath), {recursive: true}) - fs.writeFileSync(fullPath, content, "utf8") - const isExecutable = this.has("executable") // todo: allow for all file permissions? - if (isExecutable) fs.chmodSync(fullPath, "755") - } - inScope dataParser executableParser - crux file -folderParser - cells keywordCell filepathCell - javascript - compileToBash(parentDir) { - return \`mkdir \${this._getAbsolutePath(parentDir)}\` - } - _getAbsolutePath(parentDir = process.cwd()) { - return parentDir + "/" + this.cells.filepathCell - } - execute(parentDir) { - const path = this._getAbsolutePath(parentDir) - this.root.log(\`Creating folder \${path}\`) - const fs = require("fs") - fs.mkdirSync(path, {recursive: true}) - } - crux folder`) - get handGrammarProgram() { - return this.constructor.cachedHandGrammarProgramRoot - } - static rootParser = stampParser - } - - class hashbangParser extends GrammarBackedNode { - get commentCell() { - return this.getWord(0) - } - get commentCell() { - return this.getWordsFrom(1) - } - } - - class catchAllAnyLineParser extends GrammarBackedNode { - createParserCombinator() { - return new TreeNode.ParserCombinator(catchAllAnyLineParser, undefined, undefined) - } - get anyCell() { - return this.getWord(0) - } - get anyCell() { - return this.getWordsFrom(1) - } - } - - class dataParser extends GrammarBackedNode { - createParserCombinator() { - return new TreeNode.ParserCombinator(catchAllAnyLineParser, undefined, undefined) - } - get keywordCell() { - return this.getWord(0) - } - } - - class errorParser extends GrammarBackedNode { - getErrors() { - return this._getErrorParserErrors() - } - } - - class executableParser extends GrammarBackedNode { - get keywordCell() { - return this.getWord(0) - } - } - - class fileParser extends GrammarBackedNode { - createParserCombinator() { - return new TreeNode.ParserCombinator(undefined, Object.assign(Object.assign({}, super.createParserCombinator()._getFirstWordMapAsObject()), { data: dataParser, executable: executableParser }), undefined) - } - get keywordCell() { - return this.getWord(0) - } - get filepathCell() { - return this.getWord(1) - } - compileToBash(parentDir) { - const filePath = this._getAbsolutePath(parentDir) - return `touch ${filePath}\necho -e "${this.childrenToString()}" >> ${filePath}` - } - _getAbsolutePath(parentDir = process.cwd()) { - return parentDir + "/" + this.cells.filepathCell - } - execute(parentDir) { - const fs = require("fs") - const fullPath = this._getAbsolutePath(parentDir) - this.root.log(`Creating file ${fullPath}`) - const data = this.getNode("data") - const content = data ? data.childrenToString() : "" - fs.mkdirSync(require("path").dirname(fullPath), { recursive: true }) - fs.writeFileSync(fullPath, content, "utf8") - const isExecutable = this.has("executable") // todo: allow for all file permissions? - if (isExecutable) fs.chmodSync(fullPath, "755") - } - } - - class folderParser extends GrammarBackedNode { - get keywordCell() { - return this.getWord(0) - } - get filepathCell() { - return this.getWord(1) - } - compileToBash(parentDir) { - return `mkdir ${this._getAbsolutePath(parentDir)}` - } - _getAbsolutePath(parentDir = process.cwd()) { - return parentDir + "/" + this.cells.filepathCell - } - execute(parentDir) { - const path = this._getAbsolutePath(parentDir) - this.root.log(`Creating folder ${path}`) - const fs = require("fs") - fs.mkdirSync(path, { recursive: true }) - } - } - - module.exports = stampParser - stampParser - - if (!module.parent) new stampParser(TreeNode.fromDisk(process.argv[2]).toString()).execute() -} diff --git a/node_modules/scroll-cli/node_modules/scrollsdk/products/stump.nodejs.js b/node_modules/scroll-cli/node_modules/scrollsdk/products/stump.nodejs.js deleted file mode 100755 index 9c59257b2b..0000000000 --- a/node_modules/scroll-cli/node_modules/scrollsdk/products/stump.nodejs.js +++ /dev/null @@ -1,967 +0,0 @@ -#! /usr/bin/env node -{ - const { Utils } = require("./Utils.js") - const { TreeNode } = require("./TreeNode.js") - const { HandGrammarProgram } = require("./GrammarLanguage.js") - const { GrammarBackedNode } = require("./GrammarLanguage.js") - - class stumpParser extends GrammarBackedNode { - createParserCombinator() { - return new TreeNode.ParserCombinator( - errorParser, - Object.assign(Object.assign({}, super.createParserCombinator()._getFirstWordMapAsObject()), { - blockquote: htmlTagParser, - colgroup: htmlTagParser, - datalist: htmlTagParser, - fieldset: htmlTagParser, - menuitem: htmlTagParser, - noscript: htmlTagParser, - optgroup: htmlTagParser, - progress: htmlTagParser, - styleTag: htmlTagParser, - template: htmlTagParser, - textarea: htmlTagParser, - titleTag: htmlTagParser, - address: htmlTagParser, - article: htmlTagParser, - caption: htmlTagParser, - details: htmlTagParser, - section: htmlTagParser, - summary: htmlTagParser, - button: htmlTagParser, - canvas: htmlTagParser, - dialog: htmlTagParser, - figure: htmlTagParser, - footer: htmlTagParser, - header: htmlTagParser, - hgroup: htmlTagParser, - iframe: htmlTagParser, - keygen: htmlTagParser, - legend: htmlTagParser, - object: htmlTagParser, - option: htmlTagParser, - output: htmlTagParser, - script: htmlTagParser, - select: htmlTagParser, - source: htmlTagParser, - strong: htmlTagParser, - aside: htmlTagParser, - embed: htmlTagParser, - input: htmlTagParser, - label: htmlTagParser, - meter: htmlTagParser, - param: htmlTagParser, - small: htmlTagParser, - table: htmlTagParser, - tbody: htmlTagParser, - tfoot: htmlTagParser, - thead: htmlTagParser, - track: htmlTagParser, - video: htmlTagParser, - abbr: htmlTagParser, - area: htmlTagParser, - base: htmlTagParser, - body: htmlTagParser, - code: htmlTagParser, - form: htmlTagParser, - head: htmlTagParser, - html: htmlTagParser, - link: htmlTagParser, - main: htmlTagParser, - mark: htmlTagParser, - menu: htmlTagParser, - meta: htmlTagParser, - ruby: htmlTagParser, - samp: htmlTagParser, - span: htmlTagParser, - time: htmlTagParser, - bdi: htmlTagParser, - bdo: htmlTagParser, - col: htmlTagParser, - del: htmlTagParser, - dfn: htmlTagParser, - div: htmlTagParser, - img: htmlTagParser, - ins: htmlTagParser, - kbd: htmlTagParser, - map: htmlTagParser, - nav: htmlTagParser, - pre: htmlTagParser, - rtc: htmlTagParser, - sub: htmlTagParser, - sup: htmlTagParser, - var: htmlTagParser, - wbr: htmlTagParser, - br: htmlTagParser, - dd: htmlTagParser, - dl: htmlTagParser, - dt: htmlTagParser, - em: htmlTagParser, - h1: htmlTagParser, - h2: htmlTagParser, - h3: htmlTagParser, - h4: htmlTagParser, - h5: htmlTagParser, - h6: htmlTagParser, - hr: htmlTagParser, - li: htmlTagParser, - ol: htmlTagParser, - rb: htmlTagParser, - rp: htmlTagParser, - rt: htmlTagParser, - td: htmlTagParser, - th: htmlTagParser, - tr: htmlTagParser, - ul: htmlTagParser, - a: htmlTagParser, - b: htmlTagParser, - i: htmlTagParser, - p: htmlTagParser, - q: htmlTagParser, - s: htmlTagParser, - u: htmlTagParser - }), - [ - { regex: /^$/, parser: blankLineParser }, - { regex: /^[a-zA-Z0-9_]+Component/, parser: componentDefinitionParser } - ] - ) - } - compile() { - return this.asHtml - } - _getHtmlJoinByCharacter() { - return "" - } - static cachedHandGrammarProgramRoot = new HandGrammarProgram(`// Cell parsers -anyCell -keywordCell -emptyCell -extraCell - highlightScope invalid -anyHtmlContentCell - highlightScope string -attributeValueCell - highlightScope constant.language -componentTagNameCell - highlightScope variable.function - extends keywordCell -htmlTagNameCell - highlightScope variable.function - extends keywordCell - enum a abbr address area article aside b base bdi bdo blockquote body br button canvas caption code col colgroup datalist dd del details dfn dialog div dl dt em embed fieldset figure footer form h1 h2 h3 h4 h5 h6 head header hgroup hr html i iframe img input ins kbd keygen label legend li link main map mark menu menuitem meta meter nav noscript object ol optgroup option output p param pre progress q rb rp rt rtc ruby s samp script section select small source span strong styleTag sub summary sup table tbody td template textarea tfoot th thead time titleTag tr track u ul var video wbr -htmlAttributeNameCell - highlightScope entity.name.type - extends keywordCell - enum accept accept-charset accesskey action align alt async autocomplete autofocus autoplay bgcolor border charset checked class color cols colspan content contenteditable controls coords datetime default defer dir dirname disabled download draggable dropzone enctype for formaction headers height hidden high href hreflang http-equiv id ismap kind lang list loop low max maxlength media method min multiple muted name novalidate onabort onafterprint onbeforeprint onbeforeunload onblur oncanplay oncanplaythrough onchange onclick oncontextmenu oncopy oncuechange oncut ondblclick ondrag ondragend ondragenter ondragleave ondragover ondragstart ondrop ondurationchange onemptied onended onerror onfocus onhashchange oninput oninvalid onkeydown onkeypress onkeyup onload onloadeddata onloadedmetadata onloadstart onmousedown onmousemove onmouseout onmouseover onmouseup onmousewheel onoffline ononline onpagehide onpageshow onpaste onpause onplay onplaying onpopstate onprogress onratechange onreset onresize onscroll onsearch onseeked onseeking onselect onstalled onstorage onsubmit onsuspend ontimeupdate ontoggle onunload onvolumechange onwaiting onwheel open optimum pattern placeholder poster preload property readonly rel required reversed rows rowspan sandbox scope selected shape size sizes spellcheck src srcdoc srclang srcset start step style tabindex target title translate type usemap value width wrap -bernKeywordCell - enum bern - extends keywordCell - -// Line parsers -stumpParser - root - description A prefix Tree Language that compiles to HTML. - catchAllParser errorParser - inScope htmlTagParser blankLineParser - example - div - h1 hello world - compilesTo html - javascript - compile() { - return this.asHtml - } - _getHtmlJoinByCharacter() { - return "" - } -blankLineParser - pattern ^$ - tags doNotSynthesize - cells emptyCell - javascript - _toHtml() { - return "" - } - getTextContent() {return ""} -htmlTagParser - inScope bernParser htmlTagParser htmlAttributeParser blankLineParser - catchAllCellType anyHtmlContentCell - cells htmlTagNameCell - javascript - isHtmlTagParser = true - getTag() { - // we need to remove the "Tag" bit to handle the style and title attribute/tag conflict. - const firstWord = this.firstWord - const map = { - titleTag: "title", - styleTag: "style" - } - return map[firstWord] || firstWord - } - _getHtmlJoinByCharacter() { - return "" - } - asHtmlWithSuids() { - return this._toHtml(undefined, true) - } - _getOneLiner() { - const oneLinerWords = this.getWordsFrom(1) - return oneLinerWords.length ? oneLinerWords.join(" ") : "" - } - getTextContent() { - return this._getOneLiner() - } - shouldCollapse() { - return this.has("collapse") - } - get domElement() { - var elem = document.createElement(this.getTag()) - elem.setAttribute("stumpUid", this._getUid()) - this.filter(node => node.isAttributeParser) - .forEach(child => elem.setAttribute(child.firstWord, child.content)) - elem.innerHTML = this.has("bern") ? this.getNode("bern").childrenToString() : this._getOneLiner() - this.filter(node => node.isHtmlTagParser) - .forEach(child => elem.appendChild(child.domElement)) - return elem - } - _toHtml(indentCount, withSuid) { - const tag = this.getTag() - const children = this.map(child => child._toHtml(indentCount + 1, withSuid)).join("") - const attributesStr = this.filter(node => node.isAttributeParser) - .map(child => child.getAttribute()) - .join("") - const indent = " ".repeat(indentCount) - const collapse = this.shouldCollapse() - const indentForChildParsers = !collapse && this.getChildInstancesOfParserId("htmlTagParser").length > 0 - const suid = withSuid ? \` stumpUid="\${this._getUid()}"\` : "" - const oneLiner = this._getOneLiner() - return \`\${!collapse ? indent : ""}<\${tag}\${attributesStr}\${suid}>\${oneLiner}\${indentForChildParsers ? "\\n" : ""}\${children}\${collapse ? "" : "\\n"}\` - } - removeCssStumpNode() { - return this.removeStumpNode() - } - removeStumpNode() { - this.getShadow().removeShadow() - return this.destroy() - } - getNodeByGuid(guid) { - return this.topDownArray.find(node => node._getUid() === guid) - } - addClassToStumpNode(className) { - const classParser = this.touchNode("class") - const words = classParser.getWordsFrom(1) - // note: we call add on shadow regardless, because at the moment stump may have gotten out of - // sync with shadow, if things modified the dom. todo: cleanup. - this.getShadow().addClassToShadow(className) - if (words.includes(className)) return this - words.push(className) - classParser.setContent(words.join(this.wordBreakSymbol)) - return this - } - removeClassFromStumpNode(className) { - const classParser = this.getNode("class") - if (!classParser) return this - const newClasses = classParser.words.filter(word => word !== className) - if (!newClasses.length) classParser.destroy() - else classParser.setContent(newClasses.join(" ")) - this.getShadow().removeClassFromShadow(className) - return this - } - stumpNodeHasClass(className) { - const classParser = this.getNode("class") - return classParser && classParser.words.includes(className) ? true : false - } - isStumpNodeCheckbox() { - return this.get("type") === "checkbox" - } - getShadow() { - if (!this._shadow) { - const shadowClass = this.getShadowClass() - this._shadow = new shadowClass(this) - } - return this._shadow - } - insertCssChildNode(text, index) { - return this.insertChildNode(text, index) - } - insertChildNode(text, index) { - const singleNode = new TreeNode(text).getChildren()[0] - const newNode = this.insertLineAndChildren(singleNode.getLine(), singleNode.childrenToString(), index) - const stumpParserIndex = this.filter(node => node.isHtmlTagParser).indexOf(newNode) - this.getShadow().insertHtmlNode(newNode, stumpParserIndex) - return newNode - } - isInputType() { - return ["input", "textarea"].includes(this.getTag()) || this.get("contenteditable") === "true" - } - findStumpNodeByChild(line) { - return this.findStumpNodesByChild(line)[0] - } - findStumpNodeByChildString(line) { - return this.topDownArray.find(node => - node - .map(child => child.getLine()) - .join("\\n") - .includes(line) - ) - } - findStumpNodeByFirstWord(firstWord) { - return this._findStumpNodesByBase(firstWord)[0] - } - _findStumpNodesByBase(firstWord) { - return this.topDownArray.filter(node => node.doesExtend("htmlTagParser") && node.firstWord === firstWord) - } - hasLine(line) { - return this.getChildren().some(node => node.getLine() === line) - } - findStumpNodesByChild(line) { - return this.topDownArray.filter(node => node.doesExtend("htmlTagParser") && node.hasLine(line)) - } - findStumpNodesWithClass(className) { - return this.topDownArray.filter( - node => - node.doesExtend("htmlTagParser") && - node.has("class") && - node - .getNode("class") - .words - .includes(className) - ) - } - getShadowClass() { - return this.parent.getShadowClass() - } - // todo: should not be here - getStumpNodeTreeComponent() { - return this._treeComponent || this.parent.getStumpNodeTreeComponent() - } - // todo: should not be here - setStumpNodeTreeComponent(treeComponent) { - this._treeComponent = treeComponent - return this - } - getStumpNodeCss(prop) { - return this.getShadow().getShadowCss(prop) - } - getStumpNodeAttr(key) { - return this.get(key) - } - setStumpNodeAttr(key, value) { - // todo - return this - } - get asHtml() { - return this._toHtml() - } -errorParser - baseParser errorParser -componentDefinitionParser - extends htmlTagParser - pattern ^[a-zA-Z0-9_]+Component - cells componentTagNameCell - javascript - getTag() { - return "div" - } -htmlAttributeParser - javascript - _toHtml() { - return "" - } - getTextContent() {return ""} - getAttribute() { - return \` \${this.firstWord}="\${this.content}"\` - } - boolean isAttributeParser true - boolean isTileAttribute true - catchAllParser errorParser - catchAllCellType attributeValueCell - cells htmlAttributeNameCell -stumpExtendedAttributeNameCell - extends htmlAttributeNameCell - enum collapse blurCommand changeCommand clickCommand contextMenuCommand doubleClickCommand keyUpCommand lineClickCommand lineShiftClickCommand shiftClickCommand -stumpExtendedAttributeParser - description Parser types not present in HTML but included in stump. - extends htmlAttributeParser - cells stumpExtendedAttributeNameCell -lineOfHtmlContentParser - boolean isTileAttribute true - catchAllParser lineOfHtmlContentParser - catchAllCellType anyHtmlContentCell - javascript - getTextContent() {return this.getLine()} -bernParser - boolean isTileAttribute true - // todo Rename this node type - description This is a node where you can put any HTML content. It is called "bern" until someone comes up with a better name. - catchAllParser lineOfHtmlContentParser - javascript - _toHtml() { - return this.childrenToString() - } - getTextContent() {return ""} - cells bernKeywordCell`) - get handGrammarProgram() { - return this.constructor.cachedHandGrammarProgramRoot - } - static rootParser = stumpParser - } - - class blankLineParser extends GrammarBackedNode { - get emptyCell() { - return this.getWord(0) - } - _toHtml() { - return "" - } - getTextContent() { - return "" - } - } - - class htmlTagParser extends GrammarBackedNode { - createParserCombinator() { - return new TreeNode.ParserCombinator( - undefined, - Object.assign(Object.assign({}, super.createParserCombinator()._getFirstWordMapAsObject()), { - blockquote: htmlTagParser, - colgroup: htmlTagParser, - datalist: htmlTagParser, - fieldset: htmlTagParser, - menuitem: htmlTagParser, - noscript: htmlTagParser, - optgroup: htmlTagParser, - progress: htmlTagParser, - styleTag: htmlTagParser, - template: htmlTagParser, - textarea: htmlTagParser, - titleTag: htmlTagParser, - address: htmlTagParser, - article: htmlTagParser, - caption: htmlTagParser, - details: htmlTagParser, - section: htmlTagParser, - summary: htmlTagParser, - button: htmlTagParser, - canvas: htmlTagParser, - dialog: htmlTagParser, - figure: htmlTagParser, - footer: htmlTagParser, - header: htmlTagParser, - hgroup: htmlTagParser, - iframe: htmlTagParser, - keygen: htmlTagParser, - legend: htmlTagParser, - object: htmlTagParser, - option: htmlTagParser, - output: htmlTagParser, - script: htmlTagParser, - select: htmlTagParser, - source: htmlTagParser, - strong: htmlTagParser, - aside: htmlTagParser, - embed: htmlTagParser, - input: htmlTagParser, - label: htmlTagParser, - meter: htmlTagParser, - param: htmlTagParser, - small: htmlTagParser, - table: htmlTagParser, - tbody: htmlTagParser, - tfoot: htmlTagParser, - thead: htmlTagParser, - track: htmlTagParser, - video: htmlTagParser, - abbr: htmlTagParser, - area: htmlTagParser, - base: htmlTagParser, - body: htmlTagParser, - code: htmlTagParser, - form: htmlTagParser, - head: htmlTagParser, - html: htmlTagParser, - link: htmlTagParser, - main: htmlTagParser, - mark: htmlTagParser, - menu: htmlTagParser, - meta: htmlTagParser, - ruby: htmlTagParser, - samp: htmlTagParser, - span: htmlTagParser, - time: htmlTagParser, - bdi: htmlTagParser, - bdo: htmlTagParser, - col: htmlTagParser, - del: htmlTagParser, - dfn: htmlTagParser, - div: htmlTagParser, - img: htmlTagParser, - ins: htmlTagParser, - kbd: htmlTagParser, - map: htmlTagParser, - nav: htmlTagParser, - pre: htmlTagParser, - rtc: htmlTagParser, - sub: htmlTagParser, - sup: htmlTagParser, - var: htmlTagParser, - wbr: htmlTagParser, - br: htmlTagParser, - dd: htmlTagParser, - dl: htmlTagParser, - dt: htmlTagParser, - em: htmlTagParser, - h1: htmlTagParser, - h2: htmlTagParser, - h3: htmlTagParser, - h4: htmlTagParser, - h5: htmlTagParser, - h6: htmlTagParser, - hr: htmlTagParser, - li: htmlTagParser, - ol: htmlTagParser, - rb: htmlTagParser, - rp: htmlTagParser, - rt: htmlTagParser, - td: htmlTagParser, - th: htmlTagParser, - tr: htmlTagParser, - ul: htmlTagParser, - a: htmlTagParser, - b: htmlTagParser, - i: htmlTagParser, - p: htmlTagParser, - q: htmlTagParser, - s: htmlTagParser, - u: htmlTagParser, - oncanplaythrough: htmlAttributeParser, - ondurationchange: htmlAttributeParser, - onloadedmetadata: htmlAttributeParser, - contenteditable: htmlAttributeParser, - "accept-charset": htmlAttributeParser, - onbeforeunload: htmlAttributeParser, - onvolumechange: htmlAttributeParser, - onbeforeprint: htmlAttributeParser, - oncontextmenu: htmlAttributeParser, - autocomplete: htmlAttributeParser, - onafterprint: htmlAttributeParser, - onhashchange: htmlAttributeParser, - onloadeddata: htmlAttributeParser, - onmousewheel: htmlAttributeParser, - onratechange: htmlAttributeParser, - ontimeupdate: htmlAttributeParser, - oncuechange: htmlAttributeParser, - ondragenter: htmlAttributeParser, - ondragleave: htmlAttributeParser, - ondragstart: htmlAttributeParser, - onloadstart: htmlAttributeParser, - onmousedown: htmlAttributeParser, - onmousemove: htmlAttributeParser, - onmouseover: htmlAttributeParser, - placeholder: htmlAttributeParser, - formaction: htmlAttributeParser, - "http-equiv": htmlAttributeParser, - novalidate: htmlAttributeParser, - ondblclick: htmlAttributeParser, - ondragover: htmlAttributeParser, - onkeypress: htmlAttributeParser, - onmouseout: htmlAttributeParser, - onpagehide: htmlAttributeParser, - onpageshow: htmlAttributeParser, - onpopstate: htmlAttributeParser, - onprogress: htmlAttributeParser, - spellcheck: htmlAttributeParser, - accesskey: htmlAttributeParser, - autofocus: htmlAttributeParser, - draggable: htmlAttributeParser, - maxlength: htmlAttributeParser, - oncanplay: htmlAttributeParser, - ondragend: htmlAttributeParser, - onemptied: htmlAttributeParser, - oninvalid: htmlAttributeParser, - onkeydown: htmlAttributeParser, - onmouseup: htmlAttributeParser, - onoffline: htmlAttributeParser, - onplaying: htmlAttributeParser, - onseeking: htmlAttributeParser, - onstalled: htmlAttributeParser, - onstorage: htmlAttributeParser, - onsuspend: htmlAttributeParser, - onwaiting: htmlAttributeParser, - translate: htmlAttributeParser, - autoplay: htmlAttributeParser, - controls: htmlAttributeParser, - datetime: htmlAttributeParser, - disabled: htmlAttributeParser, - download: htmlAttributeParser, - dropzone: htmlAttributeParser, - hreflang: htmlAttributeParser, - multiple: htmlAttributeParser, - onchange: htmlAttributeParser, - ononline: htmlAttributeParser, - onresize: htmlAttributeParser, - onscroll: htmlAttributeParser, - onsearch: htmlAttributeParser, - onseeked: htmlAttributeParser, - onselect: htmlAttributeParser, - onsubmit: htmlAttributeParser, - ontoggle: htmlAttributeParser, - onunload: htmlAttributeParser, - property: htmlAttributeParser, - readonly: htmlAttributeParser, - required: htmlAttributeParser, - reversed: htmlAttributeParser, - selected: htmlAttributeParser, - tabindex: htmlAttributeParser, - bgcolor: htmlAttributeParser, - charset: htmlAttributeParser, - checked: htmlAttributeParser, - colspan: htmlAttributeParser, - content: htmlAttributeParser, - default: htmlAttributeParser, - dirname: htmlAttributeParser, - enctype: htmlAttributeParser, - headers: htmlAttributeParser, - onabort: htmlAttributeParser, - onclick: htmlAttributeParser, - onended: htmlAttributeParser, - onerror: htmlAttributeParser, - onfocus: htmlAttributeParser, - oninput: htmlAttributeParser, - onkeyup: htmlAttributeParser, - onpaste: htmlAttributeParser, - onpause: htmlAttributeParser, - onreset: htmlAttributeParser, - onwheel: htmlAttributeParser, - optimum: htmlAttributeParser, - pattern: htmlAttributeParser, - preload: htmlAttributeParser, - rowspan: htmlAttributeParser, - sandbox: htmlAttributeParser, - srclang: htmlAttributeParser, - accept: htmlAttributeParser, - action: htmlAttributeParser, - border: htmlAttributeParser, - coords: htmlAttributeParser, - height: htmlAttributeParser, - hidden: htmlAttributeParser, - method: htmlAttributeParser, - onblur: htmlAttributeParser, - oncopy: htmlAttributeParser, - ondrag: htmlAttributeParser, - ondrop: htmlAttributeParser, - onload: htmlAttributeParser, - onplay: htmlAttributeParser, - poster: htmlAttributeParser, - srcdoc: htmlAttributeParser, - srcset: htmlAttributeParser, - target: htmlAttributeParser, - usemap: htmlAttributeParser, - align: htmlAttributeParser, - async: htmlAttributeParser, - class: htmlAttributeParser, - color: htmlAttributeParser, - defer: htmlAttributeParser, - ismap: htmlAttributeParser, - media: htmlAttributeParser, - muted: htmlAttributeParser, - oncut: htmlAttributeParser, - scope: htmlAttributeParser, - shape: htmlAttributeParser, - sizes: htmlAttributeParser, - start: htmlAttributeParser, - style: htmlAttributeParser, - title: htmlAttributeParser, - value: htmlAttributeParser, - width: htmlAttributeParser, - cols: htmlAttributeParser, - high: htmlAttributeParser, - href: htmlAttributeParser, - kind: htmlAttributeParser, - lang: htmlAttributeParser, - list: htmlAttributeParser, - loop: htmlAttributeParser, - name: htmlAttributeParser, - open: htmlAttributeParser, - rows: htmlAttributeParser, - size: htmlAttributeParser, - step: htmlAttributeParser, - type: htmlAttributeParser, - wrap: htmlAttributeParser, - alt: htmlAttributeParser, - dir: htmlAttributeParser, - for: htmlAttributeParser, - low: htmlAttributeParser, - max: htmlAttributeParser, - min: htmlAttributeParser, - rel: htmlAttributeParser, - src: htmlAttributeParser, - id: htmlAttributeParser, - lineShiftClickCommand: stumpExtendedAttributeParser, - contextMenuCommand: stumpExtendedAttributeParser, - doubleClickCommand: stumpExtendedAttributeParser, - shiftClickCommand: stumpExtendedAttributeParser, - lineClickCommand: stumpExtendedAttributeParser, - changeCommand: stumpExtendedAttributeParser, - clickCommand: stumpExtendedAttributeParser, - keyUpCommand: stumpExtendedAttributeParser, - blurCommand: stumpExtendedAttributeParser, - collapse: stumpExtendedAttributeParser, - bern: bernParser - }), - [ - { regex: /^$/, parser: blankLineParser }, - { regex: /^[a-zA-Z0-9_]+Component/, parser: componentDefinitionParser } - ] - ) - } - get htmlTagNameCell() { - return this.getWord(0) - } - get anyHtmlContentCell() { - return this.getWordsFrom(1) - } - isHtmlTagParser = true - getTag() { - // we need to remove the "Tag" bit to handle the style and title attribute/tag conflict. - const firstWord = this.firstWord - const map = { - titleTag: "title", - styleTag: "style" - } - return map[firstWord] || firstWord - } - _getHtmlJoinByCharacter() { - return "" - } - asHtmlWithSuids() { - return this._toHtml(undefined, true) - } - _getOneLiner() { - const oneLinerWords = this.getWordsFrom(1) - return oneLinerWords.length ? oneLinerWords.join(" ") : "" - } - getTextContent() { - return this._getOneLiner() - } - shouldCollapse() { - return this.has("collapse") - } - get domElement() { - var elem = document.createElement(this.getTag()) - elem.setAttribute("stumpUid", this._getUid()) - this.filter(node => node.isAttributeParser).forEach(child => elem.setAttribute(child.firstWord, child.content)) - elem.innerHTML = this.has("bern") ? this.getNode("bern").childrenToString() : this._getOneLiner() - this.filter(node => node.isHtmlTagParser).forEach(child => elem.appendChild(child.domElement)) - return elem - } - _toHtml(indentCount, withSuid) { - const tag = this.getTag() - const children = this.map(child => child._toHtml(indentCount + 1, withSuid)).join("") - const attributesStr = this.filter(node => node.isAttributeParser) - .map(child => child.getAttribute()) - .join("") - const indent = " ".repeat(indentCount) - const collapse = this.shouldCollapse() - const indentForChildParsers = !collapse && this.getChildInstancesOfParserId("htmlTagParser").length > 0 - const suid = withSuid ? ` stumpUid="${this._getUid()}"` : "" - const oneLiner = this._getOneLiner() - return `${!collapse ? indent : ""}<${tag}${attributesStr}${suid}>${oneLiner}${indentForChildParsers ? "\n" : ""}${children}${collapse ? "" : "\n"}` - } - removeCssStumpNode() { - return this.removeStumpNode() - } - removeStumpNode() { - this.getShadow().removeShadow() - return this.destroy() - } - getNodeByGuid(guid) { - return this.topDownArray.find(node => node._getUid() === guid) - } - addClassToStumpNode(className) { - const classParser = this.touchNode("class") - const words = classParser.getWordsFrom(1) - // note: we call add on shadow regardless, because at the moment stump may have gotten out of - // sync with shadow, if things modified the dom. todo: cleanup. - this.getShadow().addClassToShadow(className) - if (words.includes(className)) return this - words.push(className) - classParser.setContent(words.join(this.wordBreakSymbol)) - return this - } - removeClassFromStumpNode(className) { - const classParser = this.getNode("class") - if (!classParser) return this - const newClasses = classParser.words.filter(word => word !== className) - if (!newClasses.length) classParser.destroy() - else classParser.setContent(newClasses.join(" ")) - this.getShadow().removeClassFromShadow(className) - return this - } - stumpNodeHasClass(className) { - const classParser = this.getNode("class") - return classParser && classParser.words.includes(className) ? true : false - } - isStumpNodeCheckbox() { - return this.get("type") === "checkbox" - } - getShadow() { - if (!this._shadow) { - const shadowClass = this.getShadowClass() - this._shadow = new shadowClass(this) - } - return this._shadow - } - insertCssChildNode(text, index) { - return this.insertChildNode(text, index) - } - insertChildNode(text, index) { - const singleNode = new TreeNode(text).getChildren()[0] - const newNode = this.insertLineAndChildren(singleNode.getLine(), singleNode.childrenToString(), index) - const stumpParserIndex = this.filter(node => node.isHtmlTagParser).indexOf(newNode) - this.getShadow().insertHtmlNode(newNode, stumpParserIndex) - return newNode - } - isInputType() { - return ["input", "textarea"].includes(this.getTag()) || this.get("contenteditable") === "true" - } - findStumpNodeByChild(line) { - return this.findStumpNodesByChild(line)[0] - } - findStumpNodeByChildString(line) { - return this.topDownArray.find(node => - node - .map(child => child.getLine()) - .join("\n") - .includes(line) - ) - } - findStumpNodeByFirstWord(firstWord) { - return this._findStumpNodesByBase(firstWord)[0] - } - _findStumpNodesByBase(firstWord) { - return this.topDownArray.filter(node => node.doesExtend("htmlTagParser") && node.firstWord === firstWord) - } - hasLine(line) { - return this.getChildren().some(node => node.getLine() === line) - } - findStumpNodesByChild(line) { - return this.topDownArray.filter(node => node.doesExtend("htmlTagParser") && node.hasLine(line)) - } - findStumpNodesWithClass(className) { - return this.topDownArray.filter(node => node.doesExtend("htmlTagParser") && node.has("class") && node.getNode("class").words.includes(className)) - } - getShadowClass() { - return this.parent.getShadowClass() - } - // todo: should not be here - getStumpNodeTreeComponent() { - return this._treeComponent || this.parent.getStumpNodeTreeComponent() - } - // todo: should not be here - setStumpNodeTreeComponent(treeComponent) { - this._treeComponent = treeComponent - return this - } - getStumpNodeCss(prop) { - return this.getShadow().getShadowCss(prop) - } - getStumpNodeAttr(key) { - return this.get(key) - } - setStumpNodeAttr(key, value) { - // todo - return this - } - get asHtml() { - return this._toHtml() - } - } - - class errorParser extends GrammarBackedNode { - getErrors() { - return this._getErrorParserErrors() - } - } - - class componentDefinitionParser extends htmlTagParser { - get componentTagNameCell() { - return this.getWord(0) - } - getTag() { - return "div" - } - } - - class htmlAttributeParser extends GrammarBackedNode { - createParserCombinator() { - return new TreeNode.ParserCombinator(errorParser, undefined, undefined) - } - get htmlAttributeNameCell() { - return this.getWord(0) - } - get attributeValueCell() { - return this.getWordsFrom(1) - } - get isTileAttribute() { - return true - } - get isAttributeParser() { - return true - } - _toHtml() { - return "" - } - getTextContent() { - return "" - } - getAttribute() { - return ` ${this.firstWord}="${this.content}"` - } - } - - class stumpExtendedAttributeParser extends htmlAttributeParser { - get stumpExtendedAttributeNameCell() { - return this.getWord(0) - } - } - - class lineOfHtmlContentParser extends GrammarBackedNode { - createParserCombinator() { - return new TreeNode.ParserCombinator(lineOfHtmlContentParser, undefined, undefined) - } - get anyHtmlContentCell() { - return this.getWordsFrom(0) - } - get isTileAttribute() { - return true - } - getTextContent() { - return this.getLine() - } - } - - class bernParser extends GrammarBackedNode { - createParserCombinator() { - return new TreeNode.ParserCombinator(lineOfHtmlContentParser, undefined, undefined) - } - get bernKeywordCell() { - return this.getWord(0) - } - get isTileAttribute() { - return true - } - _toHtml() { - return this.childrenToString() - } - getTextContent() { - return "" - } - } - - module.exports = stumpParser - stumpParser - - if (!module.parent) new stumpParser(TreeNode.fromDisk(process.argv[2]).toString()).execute() -} diff --git a/node_modules/scroll-cli/node_modules/scrollsdk/products/swarm.nodejs.js b/node_modules/scroll-cli/node_modules/scrollsdk/products/swarm.nodejs.js deleted file mode 100755 index 3e71cd6152..0000000000 --- a/node_modules/scroll-cli/node_modules/scrollsdk/products/swarm.nodejs.js +++ /dev/null @@ -1,712 +0,0 @@ -#! /usr/bin/env node -{ - const { Utils } = require("./Utils.js") - const { TreeNode } = require("./TreeNode.js") - const { HandGrammarProgram } = require("./GrammarLanguage.js") - const { GrammarBackedNode } = require("./GrammarLanguage.js") - - class swarmParser extends GrammarBackedNode { - createParserCombinator() { - return new TreeNode.ParserCombinator( - errorParser, - Object.assign(Object.assign({}, super.createParserCombinator()._getFirstWordMapAsObject()), { test: testParser, testOnly: testOnlyParser, skipTest: skipTestParser, "#!": hashbangParser, arrange: arrangeParser }), - undefined - ) - } - getArrangeParser() { - return this.getChildInstancesOfParserId("arrangeParser")[0] - } - async execute(filepath) { - const tree = new TestRacer(this.compileToRacer(filepath)) - await tree.execute() - return tree.finish() - } - compileToRacer(filepath) { - const testBlocks = {} - this.getChildInstancesOfParserId("abstractTestBlockParser").forEach(testParser => { - const prefix = testParser.racerPrefix || "" - testBlocks[prefix + testParser.content] = testParser.toTestRacerFunction(filepath) - }) - const files = {} - files[filepath] = testBlocks - return files - } - static cachedHandGrammarProgramRoot = new HandGrammarProgram(`// todo Add comments? -// todo Make run in browser -// todo Add print or tracer type of intermediate element. debugger? - -// Cell parsers -anyCell - highlightScope string - examples lorem ipsum -assertionKeywordCell - highlightScope keyword.operator - extends keywordCell -commandCell - extends keywordCell - highlightScope variable.function - examples someCommand -extraCell - highlightScope invalid -filepathCell - examples foobar.foo someFile.foo - highlightScope string -keywordCell -hashBangKeywordCell - extends keywordCell - highlightScope comment - enum #! -hashBangCell - highlightScope comment -intCell - regex \\-?[0-9]+ - highlightScope constant.numeric.integer -parameterKeywordCell - extends keywordCell - highlightScope variable.parameter -todoCell - highlightScope comment -todoKeywordCell - extends keywordCell - highlightScope comment -typeOfOptionCell - description The 6 possible results for Javascript's typeof. - highlightScope constant.language - enum object boolean function number string undefined - -// Line parsers -swarmParser - root - description A prefix Tree Language for unit testing of classes. - inScope hashbangParser arrangeParser abstractTestBlockParser - catchAllParser errorParser - javascript - getArrangeParser() { - return this.getChildInstancesOfParserId("arrangeParser")[0] - } - async execute(filepath) { - const tree = new TestRacer(this.compileToRacer(filepath)) - await tree.execute() - return tree.finish() - } - compileToRacer(filepath) { - const testBlocks = {} - this.getChildInstancesOfParserId("abstractTestBlockParser").forEach(testParser => { - const prefix = testParser.racerPrefix || "" - testBlocks[prefix + testParser.content] = testParser.toTestRacerFunction(filepath) - }) - const files = {} - files[filepath] = testBlocks - return files - } -abstractAssertionParser - javascript - async execute(arrangedInstance) { - //todo: refactor. there is clearly a difference between sync and async that we are not - // documenting. seems like async and sync have different cellTypes. the former requires - // a method to get the result. - const finalParts = Utils.getMethodFromDotPath(arrangedInstance, this.getWord(1)) - const subject = finalParts[0] - const command = finalParts[1] - const actual = subject[command]() - const actualAsString = this.parseActual(actual).toString() - const expected = this.getExpected() - this.getAssertionResult(actualAsString, expected, this.getLine()) - } - equal(actual, expected, message) { - this.parent.getEqualFn()(actual, expected, message) - } - getAssertionResult(actualAsString, expected, message) { - this.equal(actualAsString, expected, message) - return actualAsString === expected - } - parseActual(actual) { - return actual - } - executeSync(result) { - const expected = this.getSyncExpected() - const actual = this.parseActual(result) - const actualIsUndefined = actual === undefined - const actualAsString = actualIsUndefined ? "undefined" : actual.toString() - this.getAssertionResult(actualAsString, expected, this.getLine()) - } - getExpected() { - return this.getWordsFrom(2).join(" ") - } - getSyncExpected() { - return this.content - } - cells assertionKeywordCell -assertParagraphIsParser - crux assertParagraphIs - description When your expected value is a multiline string. - catchAllParser paragraphLineParser - javascript - getExpected() { - return this.childrenToString() - } - getSyncExpected() { - return this.childrenToString() - } - extends abstractAssertionParser -assertLengthIsParser - crux assertLengthIs - description Intake is an array, and checks if the length of array matches expected. - cells assertionKeywordCell intCell - javascript - parseActual(actual) { - return actual.length - } - extends abstractAssertionParser -assertStringExcludesParser - crux assertStringExcludes - description Converts the input to string and ensure the string does NOT contain the provided string - catchAllCellType anyCell - javascript - getAssertionResult(actualAsString, expected, message) { - const result = !actualAsString.includes(expected) - if (!result) { - const index = actualAsString.indexOf(expected) - const start = Math.max(0, index - 50) - message += \` Found \${expected} in: \` + actualAsString.substr(start, index + 50 + expected.length) - } - this.equal(result, true, message) - return result - } - extends abstractAssertionParser -assertStringIncludesParser - crux assertStringIncludes - catchAllCellType anyCell - description Converts the input to string and see if the string contains the provided string - javascript - getAssertionResult(actualAsString, expected, message) { - const result = actualAsString.includes(expected) - this.equal(result, true, message) - return result - } - extends abstractAssertionParser -assertStringIsParser - crux assertStringIs - description Intake is anything with a toString method, and compares that to provided expected value. - catchAllCellType anyCell - extends abstractAssertionParser -assertTypeIsParser - crux assertTypeIs - description Assert result is one of Javascript's 6 typeof types. - cells assertionKeywordCell typeOfOptionCell - javascript - parseActual(actual) { - return typeof actual - } - extends abstractAssertionParser -abstractArrangeFlagParser - cells keywordCell -arrangeAsyncParser - description Add this flag in the arrange node to test async methods. - extends abstractArrangeFlagParser - crux async -arrangeRequireParser - description Pass in the filename to require for nodejs tests. - crux require - cells keywordCell filepathCell - catchAllCellType anyCell -arrangeStaticParser - crux static - description Add this to the arrange node to import class directly without initiating it for static method testing. - extends abstractArrangeFlagParser -abstractTestBlockParser - catchAllCellType anyCell - javascript - getArrangeParser() { - return this.getNode("arrange") || this.parent.getArrangeParser() - } - setEqualMethod(equal) { - this._equal = equal - return this - } - getTestBlock() { - return this - } - getEqualFn() { - return this._equal - } - toTestRacerFunction(programFilepath) { - const arrangeParser = this.getArrangeParser() - const arrangedInstance = arrangeParser.arrange(programFilepath) - const executeMethod = arrangeParser.isAsync() ? "execute" : "executeSync" - return async equal => { - this.setEqualMethod(equal) - const promises = this.map(async childAction => { - const result = await childAction[executeMethod](arrangedInstance) - return result - }) - await Promise.all(promises) - } - } - inScope arrangeParser - catchAllParser actParser - cells keywordCell -testParser - description Basic test block. - extends abstractTestBlockParser - crux test -testOnlyParser - description If set, only this test block will be run. - extends abstractTestBlockParser - string racerPrefix _ - crux testOnly -skipTestParser - description If you want to skip running a test. - extends abstractTestBlockParser - string racerPrefix $ - crux skipTest -hashbangParser - crux #! - description Standard bash hashbang line. - cells hashBangKeywordCell hashBangCell - catchAllCellType hashBangCell -arrangeParser - crux arrange - javascript - isAsync() { - return this.has("async") - } - arrange(programFilepath) { - const requiredClass = this._getRequiredClass(programFilepath) - const constructorArgParser = this.getChildInstancesOfParserId("constructWithParagraphParser")[0] - const param = constructorArgParser ? constructorArgParser.childrenToString() : undefined - return this.has("static") ? requiredClass : new requiredClass(param) - } - _getRequiredClass(programFilepath) { - // todo: cleanup - let requiredClass = - this.get("require") || - this.root - .getNode("arrange") - .get("require") - const requiredClassParts = requiredClass.split(" ") // Allows for ./ExportsClasses.js ChildClass - const requiredFileNameOrClass = requiredClassParts[0] - let theClass - if (this.isNodeJs()) { - if (requiredFileNameOrClass.includes(".")) - theClass = require(Utils.resolvePath(requiredFileNameOrClass, programFilepath)) - else - theClass = global[requiredFileNameOrClass] - } - else theClass = window[Utils.getClassNameFromFilePath(requiredFileNameOrClass)] - if (requiredClassParts[1]) theClass = Utils.resolveProperty(theClass, requiredClassParts[1]) - if (!theClass) throw new Error(\`Required class '\${requiredClassParts.join(" ")}' not found for \${this.toString()}\`) - return theClass - } - executeSync() {} - inScope arrangeAsyncParser arrangeRequireParser arrangeStaticParser constructWithParagraphParser todoParser - cells keywordCell -withParagraphParser - description Pass in a multiline string as a command arg. - javascript - executeSync() {} - catchAllParser paragraphLineParser - cells parameterKeywordCell - crux withParagraph -actParser - javascript - getTestBlock() { - return this.parent - } - getEqualFn() { - return this.getTestBlock().getEqualFn() - } - _getActArgs() { - const paragraphActParsers = this.getChildInstancesOfParserId("withParagraphParser") - if (paragraphActParsers.length) return paragraphActParsers.map(arg => arg.childrenToString()) - return this.getWordsFrom(1) - } - _act(arrangedInstance) { - const actionMethodName = this.firstWord - const actionMethod = arrangedInstance[actionMethodName] - if (!actionMethod) throw new Error(\`No method "\${actionMethodName}" on "\${arrangedInstance.constructor.name}"\`) - if (typeof actionMethod !== "function") return arrangedInstance[actionMethodName] // Property access - return actionMethod.apply(arrangedInstance, this._getActArgs()) - } - async execute(arrangedInstance) { - await this._act(arrangedInstance) - return Promise.all(this.map(child => child.execute(arrangedInstance))) - } - executeSync(arrangedInstance) { - const newTestSubject = this._act(arrangedInstance) - return this.map(child => child.executeSync(newTestSubject)) - } - description Input is an object, and calls some method with an optional array of string args. - catchAllCellType anyCell - catchAllParser actParser - inScope withParagraphParser abstractAssertionParser - cells commandCell -constructWithParagraphParser - javascript - executeSync() {} - description Pass in a multiline string to setup constructor. #todo: rename - catchAllParser paragraphLineParser - cells keywordCell - crux constructWithParagraph -errorParser - baseParser errorParser -paragraphLineParser - catchAllCellType anyCell - catchAllParser paragraphLineParser - cells anyCell -todoParser - description Todos let you add notes about what is coming in the future in the source code. They are like comments in other languages except should only be used for todos. - catchAllCellType todoCell - catchAllParser todoParser - crux todo - cells todoKeywordCell`) - get handGrammarProgram() { - return this.constructor.cachedHandGrammarProgramRoot - } - static rootParser = swarmParser - } - - class abstractAssertionParser extends GrammarBackedNode { - get assertionKeywordCell() { - return this.getWord(0) - } - async execute(arrangedInstance) { - //todo: refactor. there is clearly a difference between sync and async that we are not - // documenting. seems like async and sync have different cellTypes. the former requires - // a method to get the result. - const finalParts = Utils.getMethodFromDotPath(arrangedInstance, this.getWord(1)) - const subject = finalParts[0] - const command = finalParts[1] - const actual = subject[command]() - const actualAsString = this.parseActual(actual).toString() - const expected = this.getExpected() - this.getAssertionResult(actualAsString, expected, this.getLine()) - } - equal(actual, expected, message) { - this.parent.getEqualFn()(actual, expected, message) - } - getAssertionResult(actualAsString, expected, message) { - this.equal(actualAsString, expected, message) - return actualAsString === expected - } - parseActual(actual) { - return actual - } - executeSync(result) { - const expected = this.getSyncExpected() - const actual = this.parseActual(result) - const actualIsUndefined = actual === undefined - const actualAsString = actualIsUndefined ? "undefined" : actual.toString() - this.getAssertionResult(actualAsString, expected, this.getLine()) - } - getExpected() { - return this.getWordsFrom(2).join(" ") - } - getSyncExpected() { - return this.content - } - } - - class assertParagraphIsParser extends abstractAssertionParser { - createParserCombinator() { - return new TreeNode.ParserCombinator(paragraphLineParser, undefined, undefined) - } - getExpected() { - return this.childrenToString() - } - getSyncExpected() { - return this.childrenToString() - } - } - - class assertLengthIsParser extends abstractAssertionParser { - get assertionKeywordCell() { - return this.getWord(0) - } - get intCell() { - return parseInt(this.getWord(1)) - } - parseActual(actual) { - return actual.length - } - } - - class assertStringExcludesParser extends abstractAssertionParser { - get anyCell() { - return this.getWordsFrom(0) - } - getAssertionResult(actualAsString, expected, message) { - const result = !actualAsString.includes(expected) - if (!result) { - const index = actualAsString.indexOf(expected) - const start = Math.max(0, index - 50) - message += ` Found ${expected} in: ` + actualAsString.substr(start, index + 50 + expected.length) - } - this.equal(result, true, message) - return result - } - } - - class assertStringIncludesParser extends abstractAssertionParser { - get anyCell() { - return this.getWordsFrom(0) - } - getAssertionResult(actualAsString, expected, message) { - const result = actualAsString.includes(expected) - this.equal(result, true, message) - return result - } - } - - class assertStringIsParser extends abstractAssertionParser { - get anyCell() { - return this.getWordsFrom(0) - } - } - - class assertTypeIsParser extends abstractAssertionParser { - get assertionKeywordCell() { - return this.getWord(0) - } - get typeOfOptionCell() { - return this.getWord(1) - } - parseActual(actual) { - return typeof actual - } - } - - class abstractArrangeFlagParser extends GrammarBackedNode { - get keywordCell() { - return this.getWord(0) - } - } - - class arrangeAsyncParser extends abstractArrangeFlagParser {} - - class arrangeRequireParser extends GrammarBackedNode { - get keywordCell() { - return this.getWord(0) - } - get filepathCell() { - return this.getWord(1) - } - get anyCell() { - return this.getWordsFrom(2) - } - } - - class arrangeStaticParser extends abstractArrangeFlagParser {} - - class abstractTestBlockParser extends GrammarBackedNode { - createParserCombinator() { - return new TreeNode.ParserCombinator(actParser, Object.assign(Object.assign({}, super.createParserCombinator()._getFirstWordMapAsObject()), { arrange: arrangeParser }), undefined) - } - get keywordCell() { - return this.getWord(0) - } - get anyCell() { - return this.getWordsFrom(1) - } - getArrangeParser() { - return this.getNode("arrange") || this.parent.getArrangeParser() - } - setEqualMethod(equal) { - this._equal = equal - return this - } - getTestBlock() { - return this - } - getEqualFn() { - return this._equal - } - toTestRacerFunction(programFilepath) { - const arrangeParser = this.getArrangeParser() - const arrangedInstance = arrangeParser.arrange(programFilepath) - const executeMethod = arrangeParser.isAsync() ? "execute" : "executeSync" - return async equal => { - this.setEqualMethod(equal) - const promises = this.map(async childAction => { - const result = await childAction[executeMethod](arrangedInstance) - return result - }) - await Promise.all(promises) - } - } - } - - class testParser extends abstractTestBlockParser {} - - class testOnlyParser extends abstractTestBlockParser { - get racerPrefix() { - return `_` - } - } - - class skipTestParser extends abstractTestBlockParser { - get racerPrefix() { - return `$` - } - } - - class hashbangParser extends GrammarBackedNode { - get hashBangKeywordCell() { - return this.getWord(0) - } - get hashBangCell() { - return this.getWord(1) - } - get hashBangCell() { - return this.getWordsFrom(2) - } - } - - class arrangeParser extends GrammarBackedNode { - createParserCombinator() { - return new TreeNode.ParserCombinator( - undefined, - Object.assign(Object.assign({}, super.createParserCombinator()._getFirstWordMapAsObject()), { - async: arrangeAsyncParser, - require: arrangeRequireParser, - static: arrangeStaticParser, - constructWithParagraph: constructWithParagraphParser, - todo: todoParser - }), - undefined - ) - } - get keywordCell() { - return this.getWord(0) - } - isAsync() { - return this.has("async") - } - arrange(programFilepath) { - const requiredClass = this._getRequiredClass(programFilepath) - const constructorArgParser = this.getChildInstancesOfParserId("constructWithParagraphParser")[0] - const param = constructorArgParser ? constructorArgParser.childrenToString() : undefined - return this.has("static") ? requiredClass : new requiredClass(param) - } - _getRequiredClass(programFilepath) { - // todo: cleanup - let requiredClass = this.get("require") || this.root.getNode("arrange").get("require") - const requiredClassParts = requiredClass.split(" ") // Allows for ./ExportsClasses.js ChildClass - const requiredFileNameOrClass = requiredClassParts[0] - let theClass - if (this.isNodeJs()) { - if (requiredFileNameOrClass.includes(".")) theClass = require(Utils.resolvePath(requiredFileNameOrClass, programFilepath)) - else theClass = global[requiredFileNameOrClass] - } else theClass = window[Utils.getClassNameFromFilePath(requiredFileNameOrClass)] - if (requiredClassParts[1]) theClass = Utils.resolveProperty(theClass, requiredClassParts[1]) - if (!theClass) throw new Error(`Required class '${requiredClassParts.join(" ")}' not found for ${this.toString()}`) - return theClass - } - executeSync() {} - } - - class withParagraphParser extends GrammarBackedNode { - createParserCombinator() { - return new TreeNode.ParserCombinator(paragraphLineParser, undefined, undefined) - } - get parameterKeywordCell() { - return this.getWord(0) - } - executeSync() {} - } - - class actParser extends GrammarBackedNode { - createParserCombinator() { - return new TreeNode.ParserCombinator( - actParser, - Object.assign(Object.assign({}, super.createParserCombinator()._getFirstWordMapAsObject()), { - assertParagraphIs: assertParagraphIsParser, - assertLengthIs: assertLengthIsParser, - assertStringExcludes: assertStringExcludesParser, - assertStringIncludes: assertStringIncludesParser, - assertStringIs: assertStringIsParser, - assertTypeIs: assertTypeIsParser, - withParagraph: withParagraphParser - }), - undefined - ) - } - get commandCell() { - return this.getWord(0) - } - get anyCell() { - return this.getWordsFrom(1) - } - getTestBlock() { - return this.parent - } - getEqualFn() { - return this.getTestBlock().getEqualFn() - } - _getActArgs() { - const paragraphActParsers = this.getChildInstancesOfParserId("withParagraphParser") - if (paragraphActParsers.length) return paragraphActParsers.map(arg => arg.childrenToString()) - return this.getWordsFrom(1) - } - _act(arrangedInstance) { - const actionMethodName = this.firstWord - const actionMethod = arrangedInstance[actionMethodName] - if (!actionMethod) throw new Error(`No method "${actionMethodName}" on "${arrangedInstance.constructor.name}"`) - if (typeof actionMethod !== "function") return arrangedInstance[actionMethodName] // Property access - return actionMethod.apply(arrangedInstance, this._getActArgs()) - } - async execute(arrangedInstance) { - await this._act(arrangedInstance) - return Promise.all(this.map(child => child.execute(arrangedInstance))) - } - executeSync(arrangedInstance) { - const newTestSubject = this._act(arrangedInstance) - return this.map(child => child.executeSync(newTestSubject)) - } - } - - class constructWithParagraphParser extends GrammarBackedNode { - createParserCombinator() { - return new TreeNode.ParserCombinator(paragraphLineParser, undefined, undefined) - } - get keywordCell() { - return this.getWord(0) - } - executeSync() {} - } - - class errorParser extends GrammarBackedNode { - getErrors() { - return this._getErrorParserErrors() - } - } - - class paragraphLineParser extends GrammarBackedNode { - createParserCombinator() { - return new TreeNode.ParserCombinator(paragraphLineParser, undefined, undefined) - } - get anyCell() { - return this.getWord(0) - } - get anyCell() { - return this.getWordsFrom(1) - } - } - - class todoParser extends GrammarBackedNode { - createParserCombinator() { - return new TreeNode.ParserCombinator(todoParser, undefined, undefined) - } - get todoKeywordCell() { - return this.getWord(0) - } - get todoCell() { - return this.getWordsFrom(1) - } - } - - module.exports = swarmParser - swarmParser - - if (!module.parent) new swarmParser(TreeNode.fromDisk(process.argv[2]).toString()).execute() -} diff --git a/node_modules/scroll-cli/node_modules/scrollsdk/readme.scroll b/node_modules/scroll-cli/node_modules/scrollsdk/readme.scroll deleted file mode 100644 index dea4fe5a4d..0000000000 --- a/node_modules/scroll-cli/node_modules/scrollsdk/readme.scroll +++ /dev/null @@ -1,126 +0,0 @@ -import header.scroll -permalink index.html -title ScrollSDK: software for building on Scroll -startColumns 4 -import ciBadges.scroll - -# Links -Scroll Homepage - https://scroll.pub -Scroll Notation Sandbox - https://sdk.scroll.pub/sandbox -Scroll Designer - https://sdk.scroll.pub/designer -ScrollSDK - https://github.com/breck7/scrollsdk -Scroll Notation Homepage - https://notation.scroll.pub -Scroll Notation FAQ - https://faq.scroll.pub -SDK Release Notes - https://sdk.scroll.pub/releaseNotes.html -Scroll Subreddit - https://www.reddit.com/r/ScrollLang -Ohayo - A data science studio powered by Scroll Notation - https://github.com/breck7/ohayo -ScrollSDK UnitTests - https://sdk.scroll.pub/sandbox/test.html -ScrollSDK PerfTests - https://sdk.scroll.pub/sandbox/perfTests.html - -? Who is this package built for? -The ScrollSDK is for people who want to build on top of Scroll. - -? How do I build Scroll Parsers? -You can try the Grammar tutorial. - link grammarTutorial.html Grammar tutorial - -# Writing Scroll Parsers -The ScrollSDK contains a language for building Scroll Parsers temporarily called "Grammar". You can write new Grammar files to extend your version of Scroll. By creating ScrollParsers with Grammar file you get a parser, a type checker, syntax highlighting, autocomplete, a compiler, and virtual machine for executing your version of Scroll. The ScrollSDK also includes a simple web IDE for writing Scroll Parsers called Scroll Designer. - https://sdk.scroll.pub/designer Scroll Designer - -At this point in time, to make your Scroll Parsers do very useful things, you also need to use another language that you know. The ScrollSDK lets you create new languages using just Scroll or Scroll + Javascript. Scroll Parsers can include code from any programming language, not just Javascript. Though at the moment only Scroll + Javascript is supported by Breck's Lab. - https://breckyunits.com/lab.html Breck's Lab - -# Using the ScrollSDK - -## Try on a virtual machine -- Open https://gitpod.io/#https://github.com/breck7/scrollsdk -- Run: -code - npm install -g ts-node - npm install . - npm run test - -The ScrollSDK currently includes a number of libraries and apps to use (scripts in the "products" folder). - -# Basic Scroll Notation library for npm projects: -code - // Currently still called TreeNode, but will be renamed ScrollNode in a future update. - const {TreeNode} = require("scrollsdk/products/TreeNode.js") - const tree = new TreeNode("hello world") - console.log(tree.asString) - -# Basic Scroll Notation Library + Grammar for the browser: -code - - - - -## Scroll Notation Sandbox web app for exploring base Scroll Notation -code - npm install . - npm run local - open http://localhost:3333/ - -## Scroll Designer web app for building new Scroll Parsers -code - npm install . - npm run local - open http://localhost:3333/designer - -## Build Tools -If you look at the source, you will also see a set of build tools (such as Builder and TypeScriptRewriter). These are currently undocumented and not recommended for external use. - -## Building all tools and running tests -code - npm run build - npm test - -# Monorepo -The ScrollSDK is a monorepo. With on average over 1 major version released each month for the past 2.5 years, it would take a lot of overhead to constantly be updating 10+ different repositories and modules every month. Once we're more confident in the theory and best practices, it might make sense to break this repo into independent modules. -That being said, we despise unnecessary dependencies as much as anyone. If anyone wants to create some automated submodules built from the projects in this monorepo, to allow for consuming of a smaller subset of the code and dependencies in this module, feel free to do so. - -## Visualization of the code base - https://mango-dune-07a8b7110.1.azurestaticapps.net/?repo=breck7%2Fscrollsdk Visualization -image images/diagram.svg - -# Development Status -All breaking changes are mentioned in the releaseNotes. We follow semantic versioning, so breaking changes should not happen if you stay on the same major version. - link releaseNotes.html releaseNotes - -# Scroll Notation Libraries in Other Languages -If you build a Scroll Notation library/SDK in another language, let us know and we'll add a link. - -If you are working on a Scroll Notation library in a new host language, feel free to post an issue or ask for help in the Scroll subreddit. - https://reddit.com/r/ScrollLang subreddit - -## How to bump versions -code - npm run updateVersion NEW_NUMBER - -# Former Name -Scroll Notation was originally called Tree Notation. Scroll is the name of combined languages which were previously called Grammar and Scrolldown. - -# Alternatives Considered -This is the first Scroll library in existence, so there were no alternative implementations. Note and Space were predecessors to Scroll Notation. If a better alternative low level notation to Scroll Notation is possible, it has yet to be discovered. - -All that said, the important part of this repo is not the code but the design patterns. Scroll Notation is very simple, and you can implement the patterns contained here in your own code without using this library. In fact, that is often the best way to use Scroll Notation! - -## Editing in Sublime Text -It is helpful to set `"goto_anything_exclude_gitignore": true` to ignore files in gitignore. Read more here. - https://breckyunits.com/code/my-sublime-setttings.html here - -# ❤️ Public Domain ❤️ - -import footer.scroll diff --git a/node_modules/scroll-cli/package.json b/node_modules/scroll-cli/package.json index ec6ba50107..e9574bbe25 100644 --- a/node_modules/scroll-cli/package.json +++ b/node_modules/scroll-cli/package.json @@ -1,6 +1,6 @@ { "name": "scroll-cli", - "version": "96.0.0", + "version": "97.0.0", "description": "A language for scientists of all ages. A curated collection of tools for refining and sharing thoughts.", "main": "scroll.js", "engines": { @@ -47,7 +47,7 @@ "image-size": "^1.0.2", "lodash": "^4.17.21", "minimist": "^1.2.5", - "scrollsdk": "^79.0.0" + "scrollsdk": "^80.0.0" }, "devDependencies": { "tap": "^18.7.2" diff --git a/node_modules/scroll-cli/parsers/parsersNode.parsers b/node_modules/scroll-cli/parsers/parsersNode.parsers index efbe762134..d996b93b7b 100644 --- a/node_modules/scroll-cli/parsers/parsersNode.parsers +++ b/node_modules/scroll-cli/parsers/parsersNode.parsers @@ -1,8 +1,8 @@ scrollParserDefinitionParser extends abstractScrollParser - // todo Figure out best pattern for merging Scroll and Grammar? + // todo Figure out best pattern for merging Scroll and Parsers? pattern ^[a-zA-Z0-9_]+Parser$ - description Define your own Scroll Parsers. + description Define your own Parsers. baseParser blobParser javascript compile() { diff --git a/node_modules/scroll-cli/readme.scroll b/node_modules/scroll-cli/readme.scroll index 8ed5ad308c..a546f11613 100644 --- a/node_modules/scroll-cli/readme.scroll +++ b/node_modules/scroll-cli/readme.scroll @@ -82,9 +82,9 @@ The source code is hosted on GitHub. - Release Notes link releaseNotes.html -? Can I write Scroll Parsers in my browser? -Yes. You can use Scroll Designer to write Scroll Parsers in your browser without downloading anything. - https://sdk.scroll.pub/designer#url%20https%3A%2F%2Ftry.scroll.pub%2Fscroll.grammar Scroll Designer +? Can I write Parsers in my browser? +Yes. You can use Scroll Designer to write Parsers in your browser without downloading anything. + https://sdk.scroll.pub/designer#url%20https%3A%2F%2Ftry.scroll.pub%2Fscroll.parsers Scroll Designer ? Did the latest version of Scroll pass the automated tests?
diff --git a/node_modules/scroll-cli/scroll.js b/node_modules/scroll-cli/scroll.js index 45115a51f7..aad7f76994 100755 --- a/node_modules/scroll-cli/scroll.js +++ b/node_modules/scroll-cli/scroll.js @@ -97,7 +97,7 @@ const parseMeasures = parser => { if (measureCache.get(parser)) return measureCache.get(parser) // Generate a fake program with one of every of the available keywords. Then parse it. Then we can easily access the meta data on the parsers const dummyProgram = new parser( - parser.cachedHandGrammarProgramRoot // is there a better method name than this? + parser.cachedHandParsersProgramRoot // is there a better method name than this? .map(node => node.getLine()) .filter(line => line.endsWith("Parser")) .map(line => line.replace("Parser", "")) @@ -230,7 +230,7 @@ class ScrollFile { let afterImportPass = originalScrollCode let parser = DefaultScrollParser if (absoluteFilePath) { - const assembledFile = fileSystem.assembleFile(absoluteFilePath, defaultScrollParser.grammarCode) + const assembledFile = fileSystem.assembleFile(absoluteFilePath, defaultScrollParser.parsersCode) // Do not build a file marked 'importOnly' this.shouldBuild = !assembledFile.isImportOnly afterImportPass = assembledFile.afterImportPass @@ -324,7 +324,7 @@ class ScrollFile { } get formatted() { - // Todo: think this through and create the best long term strategy. Perhaps sortIndex float is a universal property on Grammar. + // Todo: think this through and create the best long term strategy. Perhaps sortIndex float is a universal property on Parsers. /* Current layout: [importOnly?] [topMatter*] @@ -863,7 +863,7 @@ import footer.scroll _keywordsRequiringExternals(parser) { // todo: could be cleaned up a bit - if (!parser.keywordsRequiringExternals) parser.keywordsRequiringExternals = parser.cachedHandGrammarProgramRoot.filter(node => node.copyFromExternal).map(node => node.getLine().replace("Parser", "")) + if (!parser.keywordsRequiringExternals) parser.keywordsRequiringExternals = parser.cachedHandParsersProgramRoot.filter(node => node.copyFromExternal).map(node => node.getLine().replace("Parser", "")) return parser.keywordsRequiringExternals } diff --git a/node_modules/scrollsdk/package.json b/node_modules/scrollsdk/package.json index 299bf157a4..005d0c4b8a 100644 --- a/node_modules/scrollsdk/package.json +++ b/node_modules/scrollsdk/package.json @@ -1,6 +1,6 @@ { "name": "scrollsdk", - "version": "78.0.0", + "version": "80.0.0", "description": "This npm package includes the Scroll Notation class, the Scroll Parser compiler-compiler, a Scroll IDE, and more, all implemented in TypeScript.", "types": "./built/scrollsdk.node.d.ts", "main": "./products/TreeNode.js", @@ -16,9 +16,9 @@ }, "files": [ "products/Disk.node.js", - "products/grammar.nodejs.js", - "products/GrammarCompiler.js", - "products/GrammarLanguage.js", + "products/parsers.nodejs.js", + "products/ParsersCompiler.js", + "products/Parsers.js", "products/hakon.nodejs.js", "products/Path.js", "products/stamp.nodejs.js", @@ -58,4 +58,4 @@ "prettier": "^2.8.7", "superagent": "^8.0.9" } -} +} \ No newline at end of file diff --git a/node_modules/scrollsdk/products/Disk.node.js b/node_modules/scrollsdk/products/Disk.node.js index 0a97d219c4..24ecbe1e36 100644 --- a/node_modules/scrollsdk/products/Disk.node.js +++ b/node_modules/scrollsdk/products/Disk.node.js @@ -150,7 +150,7 @@ Disk.csvToMap = (path, columnName) => { return map } /** - * Take an object like {".gitignore" : "ignore/", "grammar/root.grammar": "foo"} + * Take an object like {".gitignore" : "ignore/", "parsers/root.parsers": "foo"} * and recreate on the filesystem as files and folders. Each key is 1 file. * */ Disk.writeObjectToDisk = (baseFolder, obj) => { diff --git a/node_modules/scrollsdk/products/GrammarCompiler.js b/node_modules/scrollsdk/products/GrammarCompiler.js deleted file mode 100644 index c420d4926a..0000000000 --- a/node_modules/scrollsdk/products/GrammarCompiler.js +++ /dev/null @@ -1,75 +0,0 @@ -var _a -const fs = require("fs") -const path = require("path") -const { Utils } = require("../products/Utils.js") -const { TreeNode } = require("../products/TreeNode.js") -const { HandGrammarProgram } = require("./GrammarLanguage.js") -var CompileTarget -;(function (CompileTarget) { - CompileTarget["nodejs"] = "nodejs" - CompileTarget["browser"] = "browser" -})(CompileTarget || (CompileTarget = {})) -class GrammarCompiler { - static compileGrammarForNodeJs(pathToGrammar, outputFolder, usePrettier = true, scrollsdkProductsPath = __dirname) { - return this._compileGrammar(pathToGrammar, outputFolder, CompileTarget.nodejs, usePrettier, scrollsdkProductsPath) - } - static _compileGrammar(pathToGrammar, outputFolder, target, usePrettier, scrollsdkProductsPath) { - const isNodeJs = CompileTarget.nodejs === target - const grammarCode = TreeNode.fromDisk(pathToGrammar) - const program = new HandGrammarProgram(grammarCode.toString()) - const outputFilePath = path.join(outputFolder, `${program.grammarName}.${target}.js`) - let result = isNodeJs ? program.toNodeJsJavascript(scrollsdkProductsPath) : program.toBrowserJavascript() - if (isNodeJs) - result = - "#! /usr/bin/env node\n" + - result.replace( - /}\s*$/, - ` -if (!module.parent) new ${program.rootParserId}(TreeNode.fromDisk(process.argv[2]).toString()).execute() -} -` - ) - if (usePrettier) result = require("prettier").format(result, require("../package.json").prettier) - fs.writeFileSync(outputFilePath, result, "utf8") - if (isNodeJs) fs.chmodSync(outputFilePath, 0o755) - return outputFilePath - } - static compileGrammarForBrowser(pathToGrammar, outputFolder, usePrettier = true) { - return this._compileGrammar(pathToGrammar, outputFolder, CompileTarget.browser, usePrettier) - } -} -_a = GrammarCompiler -GrammarCompiler.compileGrammarAndCreateProgram = (programPath, grammarPath) => { - // tod: remove? - const rootParser = _a.compileGrammarFileAtPathAndReturnRootParser(grammarPath) - return new rootParser(fs.readFileSync(programPath, "utf8")) -} -GrammarCompiler.formatCode = (programCode, grammarPath) => { - // tod: remove? - const rootParser = _a.compileGrammarFileAtPathAndReturnRootParser(grammarPath) - const program = new rootParser(programCode) - return program.format().toString() -} -GrammarCompiler.formatFileInPlace = (programPath, grammarPath) => { - // tod: remove? - const original = TreeNode.fromDisk(programPath) - const formatted = _a.formatCode(original.toString(), grammarPath) - if (original === formatted) return false - new TreeNode(formatted).toDisk(programPath) - return true -} -GrammarCompiler.compileGrammarFileAtPathAndReturnRootParser = grammarPath => { - // todo: remove - if (!fs.existsSync(grammarPath)) throw new Error(`Grammar file does not exist: ${grammarPath}`) - const grammarCode = fs.readFileSync(grammarPath, "utf8") - const grammarProgram = new HandGrammarProgram(grammarCode) - return grammarProgram.compileAndReturnRootParser() -} -GrammarCompiler.combineFiles = globPatterns => { - const glob = require("glob") - const files = Utils.flatten(globPatterns.map(pattern => glob.sync(pattern))) - const content = files.map(path => fs.readFileSync(path, "utf8")).join("\n") - return new TreeNode(content) -} - -module.exports = { GrammarCompiler } diff --git a/node_modules/scrollsdk/products/GrammarLanguage.js b/node_modules/scrollsdk/products/Parsers.js similarity index 80% rename from node_modules/scrollsdk/products/GrammarLanguage.js rename to node_modules/scrollsdk/products/Parsers.js index f052a0b9d7..bfc68177fc 100644 --- a/node_modules/scrollsdk/products/GrammarLanguage.js +++ b/node_modules/scrollsdk/products/Parsers.js @@ -4,22 +4,22 @@ const { TreeNode, TreeWord, ExtendibleTreeNode, AbstractExtendibleTreeNode } = r const GlobalNamespaceAdditions = { Utils: "Utils.js", TreeNode: "TreeNode.js", - HandGrammarProgram: "GrammarLanguage.js", - GrammarBackedNode: "GrammarLanguage.js" + HandParsersProgram: "Parsers.js", + ParserBackedNode: "Parsers.js" } -var GrammarConstantsCompiler -;(function (GrammarConstantsCompiler) { - GrammarConstantsCompiler["stringTemplate"] = "stringTemplate" - GrammarConstantsCompiler["indentCharacter"] = "indentCharacter" - GrammarConstantsCompiler["catchAllCellDelimiter"] = "catchAllCellDelimiter" - GrammarConstantsCompiler["openChildren"] = "openChildren" - GrammarConstantsCompiler["joinChildrenWith"] = "joinChildrenWith" - GrammarConstantsCompiler["closeChildren"] = "closeChildren" -})(GrammarConstantsCompiler || (GrammarConstantsCompiler = {})) -var GrammarConstantsMisc -;(function (GrammarConstantsMisc) { - GrammarConstantsMisc["doNotSynthesize"] = "doNotSynthesize" -})(GrammarConstantsMisc || (GrammarConstantsMisc = {})) +var ParsersConstantsCompiler +;(function (ParsersConstantsCompiler) { + ParsersConstantsCompiler["stringTemplate"] = "stringTemplate" + ParsersConstantsCompiler["indentCharacter"] = "indentCharacter" + ParsersConstantsCompiler["catchAllCellDelimiter"] = "catchAllCellDelimiter" + ParsersConstantsCompiler["openChildren"] = "openChildren" + ParsersConstantsCompiler["joinChildrenWith"] = "joinChildrenWith" + ParsersConstantsCompiler["closeChildren"] = "closeChildren" +})(ParsersConstantsCompiler || (ParsersConstantsCompiler = {})) +var ParsersConstantsMisc +;(function (ParsersConstantsMisc) { + ParsersConstantsMisc["doNotSynthesize"] = "doNotSynthesize" +})(ParsersConstantsMisc || (ParsersConstantsMisc = {})) var PreludeCellTypeIds ;(function (PreludeCellTypeIds) { PreludeCellTypeIds["anyCell"] = "anyCell" @@ -31,88 +31,88 @@ var PreludeCellTypeIds PreludeCellTypeIds["boolCell"] = "boolCell" PreludeCellTypeIds["intCell"] = "intCell" })(PreludeCellTypeIds || (PreludeCellTypeIds = {})) -var GrammarConstantsConstantTypes -;(function (GrammarConstantsConstantTypes) { - GrammarConstantsConstantTypes["boolean"] = "boolean" - GrammarConstantsConstantTypes["string"] = "string" - GrammarConstantsConstantTypes["int"] = "int" - GrammarConstantsConstantTypes["float"] = "float" -})(GrammarConstantsConstantTypes || (GrammarConstantsConstantTypes = {})) -var GrammarBundleFiles -;(function (GrammarBundleFiles) { - GrammarBundleFiles["package"] = "package.json" - GrammarBundleFiles["readme"] = "readme.md" - GrammarBundleFiles["indexHtml"] = "index.html" - GrammarBundleFiles["indexJs"] = "index.js" - GrammarBundleFiles["testJs"] = "test.js" -})(GrammarBundleFiles || (GrammarBundleFiles = {})) -var GrammarCellParser -;(function (GrammarCellParser) { - GrammarCellParser["prefix"] = "prefix" - GrammarCellParser["postfix"] = "postfix" - GrammarCellParser["omnifix"] = "omnifix" -})(GrammarCellParser || (GrammarCellParser = {})) -var GrammarConstants -;(function (GrammarConstants) { +var ParsersConstantsConstantTypes +;(function (ParsersConstantsConstantTypes) { + ParsersConstantsConstantTypes["boolean"] = "boolean" + ParsersConstantsConstantTypes["string"] = "string" + ParsersConstantsConstantTypes["int"] = "int" + ParsersConstantsConstantTypes["float"] = "float" +})(ParsersConstantsConstantTypes || (ParsersConstantsConstantTypes = {})) +var ParsersBundleFiles +;(function (ParsersBundleFiles) { + ParsersBundleFiles["package"] = "package.json" + ParsersBundleFiles["readme"] = "readme.md" + ParsersBundleFiles["indexHtml"] = "index.html" + ParsersBundleFiles["indexJs"] = "index.js" + ParsersBundleFiles["testJs"] = "test.js" +})(ParsersBundleFiles || (ParsersBundleFiles = {})) +var ParsersCellParser +;(function (ParsersCellParser) { + ParsersCellParser["prefix"] = "prefix" + ParsersCellParser["postfix"] = "postfix" + ParsersCellParser["omnifix"] = "omnifix" +})(ParsersCellParser || (ParsersCellParser = {})) +var ParsersConstants +;(function (ParsersConstants) { // node types - GrammarConstants["extensions"] = "extensions" - GrammarConstants["comment"] = "//" - GrammarConstants["version"] = "version" - GrammarConstants["parser"] = "parser" - GrammarConstants["cellType"] = "cellType" - GrammarConstants["grammarFileExtension"] = "grammar" - GrammarConstants["abstractParserPrefix"] = "abstract" - GrammarConstants["parserSuffix"] = "Parser" - GrammarConstants["cellTypeSuffix"] = "Cell" + ParsersConstants["extensions"] = "extensions" + ParsersConstants["comment"] = "//" + ParsersConstants["version"] = "version" + ParsersConstants["parser"] = "parser" + ParsersConstants["cellType"] = "cellType" + ParsersConstants["parsersFileExtension"] = "parsers" + ParsersConstants["abstractParserPrefix"] = "abstract" + ParsersConstants["parserSuffix"] = "Parser" + ParsersConstants["cellTypeSuffix"] = "Cell" // error check time - GrammarConstants["regex"] = "regex" - GrammarConstants["reservedWords"] = "reservedWords" - GrammarConstants["enumFromCellTypes"] = "enumFromCellTypes" - GrammarConstants["enum"] = "enum" - GrammarConstants["examples"] = "examples" - GrammarConstants["min"] = "min" - GrammarConstants["max"] = "max" + ParsersConstants["regex"] = "regex" + ParsersConstants["reservedWords"] = "reservedWords" + ParsersConstants["enumFromCellTypes"] = "enumFromCellTypes" + ParsersConstants["enum"] = "enum" + ParsersConstants["examples"] = "examples" + ParsersConstants["min"] = "min" + ParsersConstants["max"] = "max" // baseParsers - GrammarConstants["baseParser"] = "baseParser" - GrammarConstants["blobParser"] = "blobParser" - GrammarConstants["errorParser"] = "errorParser" + ParsersConstants["baseParser"] = "baseParser" + ParsersConstants["blobParser"] = "blobParser" + ParsersConstants["errorParser"] = "errorParser" // parse time - GrammarConstants["extends"] = "extends" - GrammarConstants["root"] = "root" - GrammarConstants["crux"] = "crux" - GrammarConstants["cruxFromId"] = "cruxFromId" - GrammarConstants["pattern"] = "pattern" - GrammarConstants["inScope"] = "inScope" - GrammarConstants["cells"] = "cells" - GrammarConstants["listDelimiter"] = "listDelimiter" - GrammarConstants["contentKey"] = "contentKey" - GrammarConstants["childrenKey"] = "childrenKey" - GrammarConstants["uniqueFirstWord"] = "uniqueFirstWord" - GrammarConstants["catchAllCellType"] = "catchAllCellType" - GrammarConstants["cellParser"] = "cellParser" - GrammarConstants["catchAllParser"] = "catchAllParser" - GrammarConstants["constants"] = "constants" - GrammarConstants["required"] = "required" - GrammarConstants["single"] = "single" - GrammarConstants["uniqueLine"] = "uniqueLine" - GrammarConstants["tags"] = "tags" - GrammarConstants["_extendsJsClass"] = "_extendsJsClass" - GrammarConstants["_rootNodeJsHeader"] = "_rootNodeJsHeader" + ParsersConstants["extends"] = "extends" + ParsersConstants["root"] = "root" + ParsersConstants["crux"] = "crux" + ParsersConstants["cruxFromId"] = "cruxFromId" + ParsersConstants["pattern"] = "pattern" + ParsersConstants["inScope"] = "inScope" + ParsersConstants["cells"] = "cells" + ParsersConstants["listDelimiter"] = "listDelimiter" + ParsersConstants["contentKey"] = "contentKey" + ParsersConstants["childrenKey"] = "childrenKey" + ParsersConstants["uniqueFirstWord"] = "uniqueFirstWord" + ParsersConstants["catchAllCellType"] = "catchAllCellType" + ParsersConstants["cellParser"] = "cellParser" + ParsersConstants["catchAllParser"] = "catchAllParser" + ParsersConstants["constants"] = "constants" + ParsersConstants["required"] = "required" + ParsersConstants["single"] = "single" + ParsersConstants["uniqueLine"] = "uniqueLine" + ParsersConstants["tags"] = "tags" + ParsersConstants["_extendsJsClass"] = "_extendsJsClass" + ParsersConstants["_rootNodeJsHeader"] = "_rootNodeJsHeader" // default catchAll parser - GrammarConstants["BlobParser"] = "BlobParser" - GrammarConstants["DefaultRootParser"] = "DefaultRootParser" + ParsersConstants["BlobParser"] = "BlobParser" + ParsersConstants["DefaultRootParser"] = "DefaultRootParser" // code - GrammarConstants["javascript"] = "javascript" + ParsersConstants["javascript"] = "javascript" // compile time - GrammarConstants["compilerParser"] = "compiler" - GrammarConstants["compilesTo"] = "compilesTo" + ParsersConstants["compilerParser"] = "compiler" + ParsersConstants["compilesTo"] = "compilesTo" // develop time - GrammarConstants["description"] = "description" - GrammarConstants["example"] = "example" - GrammarConstants["sortTemplate"] = "sortTemplate" - GrammarConstants["frequency"] = "frequency" - GrammarConstants["highlightScope"] = "highlightScope" -})(GrammarConstants || (GrammarConstants = {})) + ParsersConstants["description"] = "description" + ParsersConstants["example"] = "example" + ParsersConstants["sortTemplate"] = "sortTemplate" + ParsersConstants["frequency"] = "frequency" + ParsersConstants["highlightScope"] = "highlightScope" +})(ParsersConstants || (ParsersConstants = {})) class TypedWord extends TreeWord { constructor(node, cellIndex, type) { super(node, cellIndex) @@ -126,13 +126,13 @@ class TypedWord extends TreeWord { } } // todo: can we merge these methods into base TreeNode and ditch this class? -class GrammarBackedNode extends TreeNode { +class ParserBackedNode extends TreeNode { get definition() { if (this._definition) return this._definition - this._definition = this.isRoot() ? this.handGrammarProgram : this.parent.definition.getParserDefinitionByParserId(this.constructor.name) + this._definition = this.isRoot() ? this.handParsersProgram : this.parent.definition.getParserDefinitionByParserId(this.constructor.name) return this._definition } - get rootGrammarTree() { + get rootParsersTree() { return this.definition.root } getAutocompleteResults(partialWord, cellIndex) { @@ -199,11 +199,11 @@ class GrammarBackedNode extends TreeNode { const cell = this.parsedCells[cellIndex] return cell ? cell.getAutoCompleteWords(partialWord) : [] } - // note: this is overwritten by the root node of a runtime grammar program. + // note: this is overwritten by the root node of a runtime parsers program. // some of the magic that makes this all work. but maybe there's a better way. - get handGrammarProgram() { - if (this.isRoot()) throw new Error(`Root node without getHandGrammarProgram defined.`) - return this.root.handGrammarProgram + get handParsersProgram() { + if (this.isRoot()) throw new Error(`Root node without getHandParsersProgram defined.`) + return this.root.handParsersProgram } getRunTimeEnumOptions(cell) { return undefined @@ -271,7 +271,7 @@ class GrammarBackedNode extends TreeNode { }) ).toFormattedTable(maxColumnWidth) } - // Helper method for selecting potential parsers needed to update grammar file. + // Helper method for selecting potential parsers needed to update parsers file. get invalidParsers() { return Array.from( new Set( @@ -328,7 +328,7 @@ class GrammarBackedNode extends TreeNode { } } _sortWithParentParsersUpTop() { - const familyTree = new HandGrammarProgram(this.toString()).parserFamilyTree + const familyTree = new HandParsersProgram(this.toString()).parserFamilyTree const rank = {} familyTree.topDownArray.forEach((node, index) => { rank[node.getWord(0)] = index @@ -391,8 +391,8 @@ class GrammarBackedNode extends TreeNode { getParserUsage(filepath = "") { // returns a report on what parsers from its language the program uses const usage = new TreeNode() - const handGrammarProgram = this.handGrammarProgram - handGrammarProgram.validConcreteAndAbstractParserDefinitions.forEach(def => { + const handParsersProgram = this.handParsersProgram + handParsersProgram.validConcreteAndAbstractParserDefinitions.forEach(def => { const requiredCellTypeIds = def.cellParser.getRequiredCellTypeIds() usage.appendLine([def.parserIdFromDefinition, "line-id", "parser", requiredCellTypeIds.join(" ")].join(" ")) }) @@ -500,7 +500,7 @@ class GrammarBackedNode extends TreeNode { return this.parsedCells.map(cell => cell.definitionLineNumber) } _getCompiledIndentation() { - const indentCharacter = this.definition._getCompilerObject()[GrammarConstantsCompiler.indentCharacter] + const indentCharacter = this.definition._getCompilerObject()[ParsersConstantsCompiler.indentCharacter] const indent = this.indentation return indentCharacter !== undefined ? indentCharacter.repeat(indent.length) : indent } @@ -515,24 +515,24 @@ class GrammarBackedNode extends TreeNode { } _getCompiledLine() { const compiler = this.definition._getCompilerObject() - const catchAllCellDelimiter = compiler[GrammarConstantsCompiler.catchAllCellDelimiter] - const str = compiler[GrammarConstantsCompiler.stringTemplate] + const catchAllCellDelimiter = compiler[ParsersConstantsCompiler.catchAllCellDelimiter] + const str = compiler[ParsersConstantsCompiler.stringTemplate] return str !== undefined ? Utils.formatStr(str, catchAllCellDelimiter, Object.assign(this._getFields(), this.cells)) : this.getLine() } get listDelimiter() { - return this.definition._getFromExtended(GrammarConstants.listDelimiter) + return this.definition._getFromExtended(ParsersConstants.listDelimiter) } get contentKey() { - return this.definition._getFromExtended(GrammarConstants.contentKey) + return this.definition._getFromExtended(ParsersConstants.contentKey) } get childrenKey() { - return this.definition._getFromExtended(GrammarConstants.childrenKey) + return this.definition._getFromExtended(ParsersConstants.childrenKey) } get childrenAreTextBlob() { return this.definition._isBlobParser() } get isArrayElement() { - return this.definition._hasFromExtended(GrammarConstants.uniqueFirstWord) ? false : !this.definition.isSingle + return this.definition._hasFromExtended(ParsersConstants.uniqueFirstWord) ? false : !this.definition.isSingle } get list() { return this.listDelimiter ? this.content.split(this.listDelimiter) : super.list @@ -594,9 +594,9 @@ class GrammarBackedNode extends TreeNode { const compiledLine = this._getCompiledLine() if (def.isTerminalParser()) return indent + compiledLine const compiler = def._getCompilerObject() - const openChildrenString = compiler[GrammarConstantsCompiler.openChildren] || "" - const closeChildrenString = compiler[GrammarConstantsCompiler.closeChildren] || "" - const childJoinCharacter = compiler[GrammarConstantsCompiler.joinChildrenWith] || "\n" + const openChildrenString = compiler[ParsersConstantsCompiler.openChildren] || "" + const closeChildrenString = compiler[ParsersConstantsCompiler.closeChildren] || "" + const childJoinCharacter = compiler[ParsersConstantsCompiler.joinChildrenWith] || "\n" const compiledChildren = this.map(child => child.compile()).join(childJoinCharacter) return `${indent + compiledLine}${openChildrenString} ${compiledChildren} @@ -616,7 +616,7 @@ ${indent}${closeChildrenString}` return cells } } -class BlobParser extends GrammarBackedNode { +class BlobParser extends ParserBackedNode { createParserCombinator() { return new TreeNode.ParserCombinator(BlobParser, {}) } @@ -625,7 +625,7 @@ class BlobParser extends GrammarBackedNode { } } // todo: can we remove this? hard to extend. -class UnknownParserNode extends GrammarBackedNode { +class UnknownParserNode extends ParserBackedNode { createParserCombinator() { return new TreeNode.ParserCombinator(UnknownParserNode, {}) } @@ -636,7 +636,7 @@ class UnknownParserNode extends GrammarBackedNode { /* A cell contains a word but also the type information for that word. */ -class AbstractGrammarBackedCell { +class AbstractParsersBackedCell { constructor(node, index, typeDef, cellTypeId, isCatchAll, parserDefinitionParser) { this._typeDef = typeDef this._node = node @@ -664,13 +664,13 @@ class AbstractGrammarBackedCell { return this._isCatchAll } get min() { - return this.cellTypeDefinition.get(GrammarConstants.min) || "0" + return this.cellTypeDefinition.get(ParsersConstants.min) || "0" } get max() { - return this.cellTypeDefinition.get(GrammarConstants.max) || "100" + return this.cellTypeDefinition.get(ParsersConstants.max) || "100" } get placeholder() { - return this.cellTypeDefinition.get(GrammarConstants.examples) || "" + return this.cellTypeDefinition.get(ParsersConstants.examples) || "" } get highlightScope() { const definition = this.cellTypeDefinition @@ -692,13 +692,13 @@ class AbstractGrammarBackedCell { synthesizeCell(seed = Date.now()) { // todo: cleanup const cellDef = this.cellTypeDefinition - const enumOptions = cellDef._getFromExtended(GrammarConstants.enum) + const enumOptions = cellDef._getFromExtended(ParsersConstants.enum) if (enumOptions) return Utils.getRandomString(1, enumOptions.split(" ")) return this._synthesizeCell(seed) } _getStumpEnumInput(crux) { const cellDef = this.cellTypeDefinition - const enumOptions = cellDef._getFromExtended(GrammarConstants.enum) + const enumOptions = cellDef._getFromExtended(ParsersConstants.enum) if (!enumOptions) return undefined const options = new TreeNode( enumOptions @@ -738,8 +738,8 @@ ${options.toString(1)}` return word === undefined || word === "" ? new MissingWordError(this) : new InvalidWordError(this) } } -AbstractGrammarBackedCell.parserFunctionName = "" -class GrammarBitCell extends AbstractGrammarBackedCell { +AbstractParsersBackedCell.parserFunctionName = "" +class ParsersBitCell extends AbstractParsersBackedCell { _isValid() { const word = this.getWord() return word === "0" || word === "1" @@ -755,8 +755,8 @@ class GrammarBitCell extends AbstractGrammarBackedCell { return !!parseInt(word) } } -GrammarBitCell.defaultHighlightScope = "constant.numeric" -class GrammarNumericCell extends AbstractGrammarBackedCell { +ParsersBitCell.defaultHighlightScope = "constant.numeric" +class ParsersNumericCell extends AbstractParsersBackedCell { _toStumpInput(crux) { return `input name ${crux} @@ -766,7 +766,7 @@ class GrammarNumericCell extends AbstractGrammarBackedCell { max ${this.max}` } } -class GrammarIntCell extends GrammarNumericCell { +class ParsersIntCell extends ParsersNumericCell { _isValid() { const word = this.getWord() const num = parseInt(word) @@ -784,9 +784,9 @@ class GrammarIntCell extends GrammarNumericCell { return parseInt(word) } } -GrammarIntCell.defaultHighlightScope = "constant.numeric.integer" -GrammarIntCell.parserFunctionName = "parseInt" -class GrammarFloatCell extends GrammarNumericCell { +ParsersIntCell.defaultHighlightScope = "constant.numeric.integer" +ParsersIntCell.parserFunctionName = "parseInt" +class ParsersFloatCell extends ParsersNumericCell { _isValid() { const word = this.getWord() const num = parseFloat(word) @@ -803,10 +803,10 @@ class GrammarFloatCell extends GrammarNumericCell { return parseFloat(word) } } -GrammarFloatCell.defaultHighlightScope = "constant.numeric.float" -GrammarFloatCell.parserFunctionName = "parseFloat" -// ErrorCellType => grammar asks for a '' cell type here but the grammar does not specify a '' cell type. (todo: bring in didyoumean?) -class GrammarBoolCell extends AbstractGrammarBackedCell { +ParsersFloatCell.defaultHighlightScope = "constant.numeric.float" +ParsersFloatCell.parserFunctionName = "parseFloat" +// ErrorCellType => parsers asks for a '' cell type here but the parsers does not specify a '' cell type. (todo: bring in didyoumean?) +class ParsersBoolCell extends AbstractParsersBackedCell { constructor() { super(...arguments) this._trues = new Set(["1", "true", "t", "yes"]) @@ -831,13 +831,13 @@ class GrammarBoolCell extends AbstractGrammarBackedCell { return this._trues.has(word.toLowerCase()) } } -GrammarBoolCell.defaultHighlightScope = "constant.numeric" -class GrammarAnyCell extends AbstractGrammarBackedCell { +ParsersBoolCell.defaultHighlightScope = "constant.numeric" +class ParsersAnyCell extends AbstractParsersBackedCell { _isValid() { return true } _synthesizeCell() { - const examples = this.cellTypeDefinition._getFromExtended(GrammarConstants.examples) + const examples = this.cellTypeDefinition._getFromExtended(ParsersConstants.examples) if (examples) return Utils.getRandomString(1, examples.split(" ")) return this._parserDefinitionParser.parserIdFromDefinition + "-" + this.constructor.name } @@ -848,18 +848,18 @@ class GrammarAnyCell extends AbstractGrammarBackedCell { return this.getWord() } } -class GrammarKeywordCell extends GrammarAnyCell { +class ParsersKeywordCell extends ParsersAnyCell { _synthesizeCell() { return this._parserDefinitionParser.cruxIfAny } } -GrammarKeywordCell.defaultHighlightScope = "keyword" -class GrammarExtraWordCellTypeCell extends AbstractGrammarBackedCell { +ParsersKeywordCell.defaultHighlightScope = "keyword" +class ParsersExtraWordCellTypeCell extends AbstractParsersBackedCell { _isValid() { return false } synthesizeCell() { - throw new Error(`Trying to synthesize a GrammarExtraWordCellTypeCell`) + throw new Error(`Trying to synthesize a ParsersExtraWordCellTypeCell`) return this._synthesizeCell() } _synthesizeCell() { @@ -872,12 +872,12 @@ class GrammarExtraWordCellTypeCell extends AbstractGrammarBackedCell { return new ExtraWordError(this) } } -class GrammarUnknownCellTypeCell extends AbstractGrammarBackedCell { +class ParsersUnknownCellTypeCell extends AbstractParsersBackedCell { _isValid() { return false } synthesizeCell() { - throw new Error(`Trying to synthesize an GrammarUnknownCellTypeCell`) + throw new Error(`Trying to synthesize an ParsersUnknownCellTypeCell`) return this._synthesizeCell() } _synthesizeCell() { @@ -952,7 +952,7 @@ class AbstractTreeError { return this.getNode().getLine() } getExtension() { - return this.getNode().handGrammarProgram.extensionName + return this.getNode().handParsersProgram.extensionName } getNode() { return this._node @@ -1081,7 +1081,7 @@ class LineAppearsMultipleTimesError extends AbstractTreeError { } class UnknownCellTypeError extends AbstractCellError { get message() { - return super.message + ` No cellType "${this.cell.cellTypeId}" found. Language grammar for "${this.getExtension()}" may need to be fixed.` + return super.message + ` No cellType "${this.cell.cellTypeId}" found. Language parsers for "${this.getExtension()}" may need to be fixed.` } } class InvalidWordError extends AbstractCellError { @@ -1120,21 +1120,21 @@ class MissingWordError extends AbstractCellError { } } // todo: add standard types, enum types, from disk types -class AbstractGrammarWordTestParser extends TreeNode {} -class GrammarRegexTestParser extends AbstractGrammarWordTestParser { +class AbstractParsersWordTestParser extends TreeNode {} +class ParsersRegexTestParser extends AbstractParsersWordTestParser { isValid(str) { if (!this._regex) this._regex = new RegExp("^" + this.content + "$") return !!str.match(this._regex) } } -class GrammarReservedWordsTestParser extends AbstractGrammarWordTestParser { +class ParsersReservedWordsTestParser extends AbstractParsersWordTestParser { isValid(str) { if (!this._set) this._set = new Set(this.content.split(" ")) return !this._set.has(str) } } // todo: remove in favor of custom word type constructors -class EnumFromCellTypesTestParser extends AbstractGrammarWordTestParser { +class EnumFromCellTypesTestParser extends AbstractParsersWordTestParser { _getEnumFromCellTypes(programRootNode) { const cellTypeIds = this.getWordsFrom(1) const enumGroup = cellTypeIds.join(" ") @@ -1158,7 +1158,7 @@ class EnumFromCellTypesTestParser extends AbstractGrammarWordTestParser { return this._getEnumFromCellTypes(programRootNode)[str] === true } } -class GrammarEnumTestNode extends AbstractGrammarWordTestParser { +class ParsersEnumTestNode extends AbstractParsersWordTestParser { isValid(str) { // enum c c++ java return !!this.getOptions()[str] @@ -1171,17 +1171,17 @@ class GrammarEnumTestNode extends AbstractGrammarWordTestParser { class cellTypeDefinitionParser extends AbstractExtendibleTreeNode { createParserCombinator() { const types = {} - types[GrammarConstants.regex] = GrammarRegexTestParser - types[GrammarConstants.reservedWords] = GrammarReservedWordsTestParser - types[GrammarConstants.enumFromCellTypes] = EnumFromCellTypesTestParser - types[GrammarConstants.enum] = GrammarEnumTestNode - types[GrammarConstants.highlightScope] = TreeNode - types[GrammarConstants.comment] = TreeNode - types[GrammarConstants.examples] = TreeNode - types[GrammarConstants.min] = TreeNode - types[GrammarConstants.max] = TreeNode - types[GrammarConstants.description] = TreeNode - types[GrammarConstants.extends] = TreeNode + types[ParsersConstants.regex] = ParsersRegexTestParser + types[ParsersConstants.reservedWords] = ParsersReservedWordsTestParser + types[ParsersConstants.enumFromCellTypes] = EnumFromCellTypesTestParser + types[ParsersConstants.enum] = ParsersEnumTestNode + types[ParsersConstants.highlightScope] = TreeNode + types[ParsersConstants.comment] = TreeNode + types[ParsersConstants.examples] = TreeNode + types[ParsersConstants.min] = TreeNode + types[ParsersConstants.max] = TreeNode + types[ParsersConstants.description] = TreeNode + types[ParsersConstants.extends] = TreeNode return new TreeNode.ParserCombinator(undefined, types) } get id() { @@ -1205,7 +1205,7 @@ class cellTypeDefinitionParser extends AbstractExtendibleTreeNode { // `this.getWordsFrom(${requireds.length + 1})` // todo: cleanup typings. todo: remove this hidden logic. have a "baseType" property? getCellConstructor() { - return this.preludeKind || GrammarAnyCell + return this.preludeKind || ParsersAnyCell } get preludeKind() { return PreludeKinds[this.getWord(0)] || PreludeKinds[this._getExtendedCellTypeId()] @@ -1220,22 +1220,22 @@ class cellTypeDefinitionParser extends AbstractExtendibleTreeNode { return arr[arr.length - 1].id } get highlightScope() { - const hs = this._getFromExtended(GrammarConstants.highlightScope) + const hs = this._getFromExtended(ParsersConstants.highlightScope) if (hs) return hs const preludeKind = this.preludeKind if (preludeKind) return preludeKind.defaultHighlightScope } _getEnumOptions() { - const enumNode = this._getNodeFromExtended(GrammarConstants.enum) + const enumNode = this._getNodeFromExtended(ParsersConstants.enum) if (!enumNode) return undefined // we sort by longest first to capture longest match first. todo: add test - const options = Object.keys(enumNode.getNode(GrammarConstants.enum).getOptions()) + const options = Object.keys(enumNode.getNode(ParsersConstants.enum).getOptions()) options.sort((a, b) => b.length - a.length) return options } _getEnumFromCellTypeOptions(program) { - const node = this._getNodeFromExtended(GrammarConstants.enumFromCellTypes) - return node ? Object.keys(node.getNode(GrammarConstants.enumFromCellTypes)._getEnumFromCellTypes(program)) : undefined + const node = this._getNodeFromExtended(ParsersConstants.enumFromCellTypes) + return node ? Object.keys(node.getNode(ParsersConstants.enumFromCellTypes)._getEnumFromCellTypes(program)) : undefined } _getAutocompleteWordOptions(program) { return this._getEnumOptions() || this._getEnumFromCellTypeOptions(program) || [] @@ -1243,10 +1243,10 @@ class cellTypeDefinitionParser extends AbstractExtendibleTreeNode { get regexString() { // todo: enum const enumOptions = this._getEnumOptions() - return this._getFromExtended(GrammarConstants.regex) || (enumOptions ? "(?:" + enumOptions.join("|") + ")" : "[^ ]*") + return this._getFromExtended(ParsersConstants.regex) || (enumOptions ? "(?:" + enumOptions.join("|") + ")" : "[^ ]*") } _getAllTests() { - return this._getChildrenByParserInExtended(AbstractGrammarWordTestParser) + return this._getChildrenByParserInExtended(AbstractParsersWordTestParser) } isValid(str, programRootNode) { return this._getAllTests().every(node => node.isValid(str, programRootNode)) @@ -1260,7 +1260,7 @@ class AbstractCellParser { this._definition = definition } get catchAllCellTypeId() { - return this._definition._getFromExtended(GrammarConstants.catchAllCellType) + return this._definition._getFromExtended(ParsersConstants.catchAllCellType) } // todo: improve layout (use bold?) get lineHints() { @@ -1270,7 +1270,7 @@ class AbstractCellParser { } getRequiredCellTypeIds() { if (!this._requiredCellTypeIds) { - const parameters = this._definition._getFromExtended(GrammarConstants.cells) + const parameters = this._definition._getFromExtended(ParsersConstants.cells) this._requiredCellTypeIds = parameters ? parameters.split(" ") : [] } return this._requiredCellTypeIds @@ -1284,7 +1284,7 @@ class AbstractCellParser { getCellArray(node = undefined) { const wordCount = node ? node.words.length : 0 const def = this._definition - const grammarProgram = def.languageDefinitionProgram + const parsersProgram = def.languageDefinitionProgram const requiredCellTypeIds = this.getRequiredCellTypeIds() const numberOfRequiredCells = requiredCellTypeIds.length const actualWordCountOrRequiredCellCount = Math.max(wordCount, numberOfRequiredCells) @@ -1293,14 +1293,14 @@ class AbstractCellParser { for (let cellIndex = 0; cellIndex < actualWordCountOrRequiredCellCount; cellIndex++) { const isCatchAll = this._isCatchAllCell(cellIndex, numberOfRequiredCells, wordCount) let cellTypeId = isCatchAll ? this.catchAllCellTypeId : this._getCellTypeId(cellIndex, requiredCellTypeIds, wordCount) - let cellTypeDefinition = grammarProgram.getCellTypeDefinitionById(cellTypeId) + let cellTypeDefinition = parsersProgram.getCellTypeDefinitionById(cellTypeId) let cellConstructor if (cellTypeDefinition) cellConstructor = cellTypeDefinition.getCellConstructor() - else if (cellTypeId) cellConstructor = GrammarUnknownCellTypeCell + else if (cellTypeId) cellConstructor = ParsersUnknownCellTypeCell else { - cellConstructor = GrammarExtraWordCellTypeCell + cellConstructor = ParsersExtraWordCellTypeCell cellTypeId = PreludeCellTypeIds.extraWordCell - cellTypeDefinition = grammarProgram.getCellTypeDefinitionById(cellTypeId) + cellTypeDefinition = parsersProgram.getCellTypeDefinitionById(cellTypeId) } const anyCellConstructor = cellConstructor cells[cellIndex] = new anyCellConstructor(node, cellIndex, cellTypeDefinition, cellTypeId, isCatchAll, def) @@ -1323,11 +1323,11 @@ class OmnifixCellParser extends AbstractCellParser { const cells = [] const def = this._definition const program = node ? node.root : undefined - const grammarProgram = def.languageDefinitionProgram + const parsersProgram = def.languageDefinitionProgram const words = node ? node.words : [] - const requiredCellTypeDefs = this.getRequiredCellTypeIds().map(cellTypeId => grammarProgram.getCellTypeDefinitionById(cellTypeId)) + const requiredCellTypeDefs = this.getRequiredCellTypeIds().map(cellTypeId => parsersProgram.getCellTypeDefinitionById(cellTypeId)) const catchAllCellTypeId = this.catchAllCellTypeId - const catchAllCellTypeDef = catchAllCellTypeId && grammarProgram.getCellTypeDefinitionById(catchAllCellTypeId) + const catchAllCellTypeDef = catchAllCellTypeId && parsersProgram.getCellTypeDefinitionById(catchAllCellTypeId) words.forEach((word, wordIndex) => { let cellConstructor for (let index = 0; index < requiredCellTypeDefs.length; index++) { @@ -1345,7 +1345,7 @@ class OmnifixCellParser extends AbstractCellParser { cells.push(new cellConstructor(node, wordIndex, catchAllCellTypeDef, catchAllCellTypeId, true, def)) return true } - cells.push(new GrammarUnknownCellTypeCell(node, wordIndex, undefined, undefined, false, def)) + cells.push(new ParsersUnknownCellTypeCell(node, wordIndex, undefined, undefined, false, def)) }) const wordCount = words.length requiredCellTypeDefs.forEach((cellTypeDef, index) => { @@ -1355,16 +1355,16 @@ class OmnifixCellParser extends AbstractCellParser { return cells } } -class GrammarExampleParser extends TreeNode {} -class GrammarCompilerParser extends TreeNode { +class ParsersExampleParser extends TreeNode {} +class ParsersCompilerParser extends TreeNode { createParserCombinator() { const types = [ - GrammarConstantsCompiler.stringTemplate, - GrammarConstantsCompiler.indentCharacter, - GrammarConstantsCompiler.catchAllCellDelimiter, - GrammarConstantsCompiler.joinChildrenWith, - GrammarConstantsCompiler.openChildren, - GrammarConstantsCompiler.closeChildren + ParsersConstantsCompiler.stringTemplate, + ParsersConstantsCompiler.indentCharacter, + ParsersConstantsCompiler.catchAllCellDelimiter, + ParsersConstantsCompiler.joinChildrenWith, + ParsersConstantsCompiler.openChildren, + ParsersConstantsCompiler.closeChildren ] const map = {} types.forEach(type => { @@ -1392,8 +1392,8 @@ class AbstractParserConstantParser extends TreeNode { return JSON.parse(this.constantValueAsJsText) } } -class GrammarParserConstantInt extends AbstractParserConstantParser {} -class GrammarParserConstantString extends AbstractParserConstantParser { +class ParsersParserConstantInt extends AbstractParserConstantParser {} +class ParsersParserConstantString extends AbstractParserConstantParser { get constantValueAsJsText() { return "`" + Utils.escapeBackTicks(this.constantValue) + "`" } @@ -1401,59 +1401,59 @@ class GrammarParserConstantString extends AbstractParserConstantParser { return this.length ? this.childrenToString() : this.getWordsFrom(2).join(" ") } } -class GrammarParserConstantFloat extends AbstractParserConstantParser {} -class GrammarParserConstantBoolean extends AbstractParserConstantParser {} +class ParsersParserConstantFloat extends AbstractParserConstantParser {} +class ParsersParserConstantBoolean extends AbstractParserConstantParser {} class AbstractParserDefinitionParser extends AbstractExtendibleTreeNode { createParserCombinator() { // todo: some of these should just be on nonRootNodes const types = [ - GrammarConstants.frequency, - GrammarConstants.inScope, - GrammarConstants.cells, - GrammarConstants.extends, - GrammarConstants.description, - GrammarConstants.catchAllParser, - GrammarConstants.catchAllCellType, - GrammarConstants.cellParser, - GrammarConstants.extensions, - GrammarConstants.version, - GrammarConstants.sortTemplate, - GrammarConstants.tags, - GrammarConstants.crux, - GrammarConstants.cruxFromId, - GrammarConstants.listDelimiter, - GrammarConstants.contentKey, - GrammarConstants.childrenKey, - GrammarConstants.uniqueFirstWord, - GrammarConstants.uniqueLine, - GrammarConstants.pattern, - GrammarConstants.baseParser, - GrammarConstants.required, - GrammarConstants.root, - GrammarConstants._extendsJsClass, - GrammarConstants._rootNodeJsHeader, - GrammarConstants.javascript, - GrammarConstants.compilesTo, - GrammarConstants.javascript, - GrammarConstants.single, - GrammarConstants.comment + ParsersConstants.frequency, + ParsersConstants.inScope, + ParsersConstants.cells, + ParsersConstants.extends, + ParsersConstants.description, + ParsersConstants.catchAllParser, + ParsersConstants.catchAllCellType, + ParsersConstants.cellParser, + ParsersConstants.extensions, + ParsersConstants.version, + ParsersConstants.sortTemplate, + ParsersConstants.tags, + ParsersConstants.crux, + ParsersConstants.cruxFromId, + ParsersConstants.listDelimiter, + ParsersConstants.contentKey, + ParsersConstants.childrenKey, + ParsersConstants.uniqueFirstWord, + ParsersConstants.uniqueLine, + ParsersConstants.pattern, + ParsersConstants.baseParser, + ParsersConstants.required, + ParsersConstants.root, + ParsersConstants._extendsJsClass, + ParsersConstants._rootNodeJsHeader, + ParsersConstants.javascript, + ParsersConstants.compilesTo, + ParsersConstants.javascript, + ParsersConstants.single, + ParsersConstants.comment ] const map = {} types.forEach(type => { map[type] = TreeNode }) - map[GrammarConstantsConstantTypes.boolean] = GrammarParserConstantBoolean - map[GrammarConstantsConstantTypes.int] = GrammarParserConstantInt - map[GrammarConstantsConstantTypes.string] = GrammarParserConstantString - map[GrammarConstantsConstantTypes.float] = GrammarParserConstantFloat - map[GrammarConstants.compilerParser] = GrammarCompilerParser - map[GrammarConstants.example] = GrammarExampleParser - return new TreeNode.ParserCombinator(undefined, map, [{ regex: HandGrammarProgram.parserFullRegex, parser: parserDefinitionParser }]) + map[ParsersConstantsConstantTypes.boolean] = ParsersParserConstantBoolean + map[ParsersConstantsConstantTypes.int] = ParsersParserConstantInt + map[ParsersConstantsConstantTypes.string] = ParsersParserConstantString + map[ParsersConstantsConstantTypes.float] = ParsersParserConstantFloat + map[ParsersConstants.compilerParser] = ParsersCompilerParser + map[ParsersConstants.example] = ParsersExampleParser + return new TreeNode.ParserCombinator(undefined, map, [{ regex: HandParsersProgram.parserFullRegex, parser: parserDefinitionParser }]) } get sortSpec() { const sortSections = new Map() const sortIndices = new Map() - const sortTemplate = this.get(GrammarConstants.sortTemplate) + const sortTemplate = this.get(ParsersConstants.sortTemplate) if (!sortTemplate) return { sortSections, sortIndices } sortTemplate.split(" ").forEach((section, sectionIndex) => section.split(" ").forEach(word => sortSections.set(word, sectionIndex))) sortTemplate.split(" ").forEach((word, index) => sortIndices.set(word, index)) @@ -1490,7 +1490,7 @@ ${properties.join("\n")} return this.getWord(0) } get idWithoutSuffix() { - return this.id.replace(HandGrammarProgram.parserSuffixRegex, "") + return this.id.replace(HandParsersProgram.parserSuffixRegex, "") } get constantsObject() { const obj = this._getUniqueConstantNodes() @@ -1505,7 +1505,7 @@ ${properties.join("\n")} return obj } get examples() { - return this._getChildrenByParserInExtended(GrammarExampleParser) + return this._getChildrenByParserInExtended(ParsersExampleParser) } get parserIdFromDefinition() { return this.getWord(0) @@ -1518,13 +1518,13 @@ ${properties.join("\n")} return !!this.generatedClassName } _isAbstract() { - return this.id.startsWith(GrammarConstants.abstractParserPrefix) + return this.id.startsWith(ParsersConstants.abstractParserPrefix) } get cruxIfAny() { - return this.get(GrammarConstants.crux) || (this._hasFromExtended(GrammarConstants.cruxFromId) ? this.idWithoutSuffix : undefined) + return this.get(ParsersConstants.crux) || (this._hasFromExtended(ParsersConstants.cruxFromId) ? this.idWithoutSuffix : undefined) } get regexMatch() { - return this.get(GrammarConstants.pattern) + return this.get(ParsersConstants.pattern) } get firstCellEnumOptions() { const firstCellDef = this._getMyCellTypeDefs()[0] @@ -1534,8 +1534,8 @@ ${properties.join("\n")} return this.root } get customJavascriptMethods() { - const hasJsCode = this.has(GrammarConstants.javascript) - return hasJsCode ? this.getNode(GrammarConstants.javascript).childrenToString() : "" + const hasJsCode = this.has(ParsersConstants.javascript) + return hasJsCode ? this.getNode(ParsersConstants.javascript).childrenToString() : "" } get firstWordMapWithDefinitions() { if (!this._cache_firstWordToNodeDefMap) this._cache_firstWordToNodeDefMap = this._createParserInfo(this._getInScopeParserIds()).firstWordMap @@ -1546,11 +1546,11 @@ ${properties.join("\n")} return this._getParser().getFirstWordOptions() } _getMyCellTypeDefs() { - const requiredCells = this.get(GrammarConstants.cells) + const requiredCells = this.get(ParsersConstants.cells) if (!requiredCells) return [] - const grammarProgram = this.languageDefinitionProgram + const parsersProgram = this.languageDefinitionProgram return requiredCells.split(" ").map(cellTypeId => { - const cellTypeDef = grammarProgram.getCellTypeDefinitionById(cellTypeId) + const cellTypeDef = parsersProgram.getCellTypeDefinitionById(cellTypeId) if (!cellTypeDef) throw new Error(`No cellType "${cellTypeId}" found`) return cellTypeDef }) @@ -1558,10 +1558,10 @@ ${properties.join("\n")} // todo: what happens when you have a cell getter and constant with same name? get cellGettersAndParserConstants() { // todo: add cellType parsings - const grammarProgram = this.languageDefinitionProgram + const parsersProgram = this.languageDefinitionProgram const getters = this._getMyCellTypeDefs().map((cellTypeDef, index) => cellTypeDef.getGetter(index)) - const catchAllCellTypeId = this.get(GrammarConstants.catchAllCellType) - if (catchAllCellTypeId) getters.push(grammarProgram.getCellTypeDefinitionById(catchAllCellTypeId).getCatchAllGetter(getters.length)) + const catchAllCellTypeId = this.get(ParsersConstants.catchAllCellType) + if (catchAllCellTypeId) getters.push(parsersProgram.getCellTypeDefinitionById(catchAllCellTypeId).getCatchAllGetter(getters.length)) // Constants Object.values(this._getUniqueConstantNodes(false)).forEach(node => getters.push(node.getGetter())) return getters.join("\n") @@ -1598,7 +1598,7 @@ ${properties.join("\n")} return arr } _getMyInScopeParserIds(target = this) { - const parsersNode = target.getNode(GrammarConstants.inScope) + const parsersNode = target.getNode(ParsersConstants.inScope) const scopedDefinitionIds = target.myScopedParserDefinitions.map(def => def.id) return parsersNode ? parsersNode.getWordsFrom(1).concat(scopedDefinitionIds) : scopedDefinitionIds } @@ -1609,15 +1609,15 @@ ${properties.join("\n")} return parentDef ? ids.concat(parentDef._getInScopeParserIds()) : ids } get isSingle() { - const hit = this._getNodeFromExtended(GrammarConstants.single) - return hit && hit.get(GrammarConstants.single) !== "false" + const hit = this._getNodeFromExtended(ParsersConstants.single) + return hit && hit.get(ParsersConstants.single) !== "false" } get isUniqueLine() { - const hit = this._getNodeFromExtended(GrammarConstants.uniqueLine) - return hit && hit.get(GrammarConstants.uniqueLine) !== "false" + const hit = this._getNodeFromExtended(ParsersConstants.uniqueLine) + return hit && hit.get(ParsersConstants.uniqueLine) !== "false" } isRequired() { - return this._hasFromExtended(GrammarConstants.required) + return this._hasFromExtended(ParsersConstants.required) } getParserDefinitionByParserId(parserId) { // todo: return catch all? @@ -1642,11 +1642,11 @@ ${properties.join("\n")} return this.root.rootParserDefinition } _isErrorParser() { - return this.get(GrammarConstants.baseParser) === GrammarConstants.errorParser + return this.get(ParsersConstants.baseParser) === ParsersConstants.errorParser } _isBlobParser() { // Do not check extended classes. Only do once. - return this._getFromExtended(GrammarConstants.baseParser) === GrammarConstants.blobParser + return this._getFromExtended(ParsersConstants.baseParser) === ParsersConstants.blobParser } get errorMethodToJavascript() { if (this._isBlobParser()) return "getErrors() { return [] }" // Skips parsing child nodes for perf gains. @@ -1687,7 +1687,7 @@ ${properties.join("\n")} } get catchAllParserToJavascript() { if (this._isBlobParser()) return "this._getBlobParserCatchAllParser()" - const parserId = this.get(GrammarConstants.catchAllParser) + const parserId = this.get(ParsersConstants.catchAllParser) if (!parserId) return "" const nodeDef = this.getParserDefinitionByParserId(parserId) return nodeDef.generatedClassName @@ -1696,9 +1696,9 @@ ${properties.join("\n")} const components = [this.parserAsJavascript, this.errorMethodToJavascript, this.cellGettersAndParserConstants, this.customJavascriptMethods].filter(identity => identity) const thisClassName = this.generatedClassName if (this._amIRoot()) { - components.push(`static cachedHandGrammarProgramRoot = new HandGrammarProgram(\`${Utils.escapeBackTicks(this.parent.toString().replace(/\\/g, "\\\\"))}\`) - get handGrammarProgram() { - return this.constructor.cachedHandGrammarProgramRoot + components.push(`static cachedHandParsersProgramRoot = new HandParsersProgram(\`${Utils.escapeBackTicks(this.parent.toString().replace(/\\/g, "\\\\"))}\`) + get handParsersProgram() { + return this.constructor.cachedHandParsersProgramRoot }`) components.push(`static rootParser = ${thisClassName}`) } @@ -1708,14 +1708,14 @@ ${properties.join("\n")} } _getExtendsClassName() { // todo: this is hopefully a temporary line in place for now for the case where you want your base class to extend something other than another treeclass - const hardCodedExtend = this.get(GrammarConstants._extendsJsClass) + const hardCodedExtend = this.get(ParsersConstants._extendsJsClass) if (hardCodedExtend) return hardCodedExtend const extendedDef = this._getExtendedParent() - return extendedDef ? extendedDef.generatedClassName : "GrammarBackedNode" + return extendedDef ? extendedDef.generatedClassName : "ParserBackedNode" } _getCompilerObject() { let obj = {} - const items = this._getChildrenByParserInExtended(GrammarCompilerParser) + const items = this._getChildrenByParserInExtended(ParsersCompilerParser) items.reverse() // Last definition wins. items.forEach(node => { obj = Object.assign(obj, node.toObject()) // todo: what about multiline strings? @@ -1731,7 +1731,7 @@ ${properties.join("\n")} return firstWordsInScope.some(firstWord => chain.has(firstWord)) } isTerminalParser() { - return !this._getFromExtended(GrammarConstants.inScope) && !this._getFromExtended(GrammarConstants.catchAllParser) + return !this._getFromExtended(ParsersConstants.inScope) && !this._getFromExtended(ParsersConstants.catchAllParser) } get sublimeMatchLine() { const regexMatch = this.regexMatch @@ -1758,7 +1758,7 @@ ${properties.join("\n")} const captures = requiredCellTypeIds .map((cellTypeId, index) => { const cellTypeDefinition = program.getCellTypeDefinitionById(cellTypeId) // todo: cleanup - if (!cellTypeDefinition) throw new Error(`No ${GrammarConstants.cellType} ${cellTypeId} found`) // todo: standardize error/capture error at grammar time + if (!cellTypeDefinition) throw new Error(`No ${ParsersConstants.cellType} ${cellTypeId} found`) // todo: standardize error/capture error at parsers time return ` ${index + 1}: ${(cellTypeDefinition.highlightScope || defaultHighlightScope) + "." + cellTypeDefinition.cellTypeId}` }) .join("\n") @@ -1796,10 +1796,10 @@ ${captures} return cache } get description() { - return this._getFromExtended(GrammarConstants.description) || "" + return this._getFromExtended(ParsersConstants.description) || "" } get frequency() { - const val = this._getFromExtended(GrammarConstants.frequency) + const val = this._getFromExtended(ParsersConstants.frequency) return val ? parseFloat(val) : 0 } _getExtendedParserId() { @@ -1835,8 +1835,8 @@ ${cells.toString(1)}` _shouldSynthesize(def, parserChain) { if (def._isErrorParser() || def._isAbstract()) return false if (parserChain.includes(def.id)) return false - const tags = def.get(GrammarConstants.tags) - if (tags && tags.includes(GrammarConstantsMisc.doNotSynthesize)) return false + const tags = def.get(ParsersConstants.tags) + if (tags && tags.includes(ParsersConstantsMisc.doNotSynthesize)) return false return true } // Get all definitions in this current scope down, even ones that are scoped inside other definitions. @@ -1881,7 +1881,7 @@ ${cells.toString(1)}` // todo: refactor synthesizeNode(nodeCount = 1, indentCount = -1, parsersAlreadySynthesized = [], seed = Date.now()) { let inScopeParserIds = this._getInScopeParserIds() - const catchAllParserId = this._getFromExtended(GrammarConstants.catchAllParser) + const catchAllParserId = this._getFromExtended(ParsersConstants.catchAllParser) if (catchAllParserId) inScopeParserIds.push(catchAllParserId) const thisId = this.id if (!parsersAlreadySynthesized.includes(thisId)) parsersAlreadySynthesized.push(thisId) @@ -1902,9 +1902,9 @@ ${cells.toString(1)}` } get cellParser() { if (!this._cellParser) { - const cellParsingStrategy = this._getFromExtended(GrammarConstants.cellParser) - if (cellParsingStrategy === GrammarCellParser.postfix) this._cellParser = new PostfixCellParser(this) - else if (cellParsingStrategy === GrammarCellParser.omnifix) this._cellParser = new OmnifixCellParser(this) + const cellParsingStrategy = this._getFromExtended(ParsersConstants.cellParser) + if (cellParsingStrategy === ParsersCellParser.postfix) this._cellParser = new PostfixCellParser(this) + else if (cellParsingStrategy === ParsersCellParser.omnifix) this._cellParser = new OmnifixCellParser(this) else this._cellParser = new PrefixCellParser(this) } return this._cellParser @@ -1912,16 +1912,16 @@ ${cells.toString(1)}` } // todo: remove? class parserDefinitionParser extends AbstractParserDefinitionParser {} -// HandGrammarProgram is a constructor that takes a grammar file, and builds a new +// HandParsersProgram is a constructor that takes a parsers file, and builds a new // constructor for new language that takes files in that language to execute, compile, etc. -class HandGrammarProgram extends AbstractParserDefinitionParser { +class HandParsersProgram extends AbstractParserDefinitionParser { createParserCombinator() { const map = {} - map[GrammarConstants.comment] = TreeNode + map[ParsersConstants.comment] = TreeNode return new TreeNode.ParserCombinator(UnknownParserNode, map, [ - { regex: HandGrammarProgram.blankLineRegex, parser: TreeNode }, - { regex: HandGrammarProgram.parserFullRegex, parser: parserDefinitionParser }, - { regex: HandGrammarProgram.cellTypeFullRegex, parser: cellTypeDefinitionParser } + { regex: HandParsersProgram.blankLineRegex, parser: TreeNode }, + { regex: HandParsersProgram.parserFullRegex, parser: parserDefinitionParser }, + { regex: HandParsersProgram.cellTypeFullRegex, parser: cellTypeDefinitionParser } ]) } // rootParser @@ -2026,7 +2026,7 @@ class HandGrammarProgram extends AbstractParserDefinitionParser { return vm.runInThisContext(code) } catch (err) { // todo: figure out best error pattern here for debugging - console.log(`Error in compiled grammar code for language "${this.grammarName}"`) + console.log(`Error in compiled parsers code for language "${this.parsersName}"`) // console.log(new TreeNode(code).toStringWithLineNumbers()) console.log(err) throw err @@ -2107,7 +2107,7 @@ paragraph This readme was auto-generated using the const languageName = this.extensionName const example = rootNodeDef.examples[0] const sampleCode = example ? example.childrenToString() : "" - files[GrammarBundleFiles.package] = JSON.stringify( + files[ParsersBundleFiles.package] = JSON.stringify( { name: languageName, private: true, @@ -2118,7 +2118,7 @@ paragraph This readme was auto-generated using the null, 2 ) - files[GrammarBundleFiles.readme] = this.toReadMe() + files[ParsersBundleFiles.readme] = this.toReadMe() const testCode = `const program = new ${languageName}(sampleCode) const errors = program.getAllErrors() console.log("Sample program compiled with " + errors.length + " errors.") @@ -2126,12 +2126,12 @@ if (errors.length) console.log(errors.map(error => error.message))` const nodePath = `${languageName}.node.js` files[nodePath] = this.toNodeJsJavascript() - files[GrammarBundleFiles.indexJs] = `module.exports = require("./${nodePath}")` + files[ParsersBundleFiles.indexJs] = `module.exports = require("./${nodePath}")` const browserPath = `${languageName}.browser.js` files[browserPath] = this.toBrowserJavascript() - files[GrammarBundleFiles.indexHtml] = ` + files[ParsersBundleFiles.indexHtml] = ` - + ` const samplePath = "sample." + this.extensionName files[samplePath] = sampleCode.toString() - files[GrammarBundleFiles.testJs] = `const ${languageName} = require("./index.js") + files[ParsersBundleFiles.testJs] = `const ${languageName} = require("./index.js") /*keep-line*/ const sampleCode = require("fs").readFileSync("${samplePath}", "utf8") ${testCode}` return files } get targetExtension() { - return this.rootParserDefinition.get(GrammarConstants.compilesTo) + return this.rootParserDefinition.get(ParsersConstants.compilesTo) } get cellTypeDefinitions() { if (this._cache_cellTypes) return this._cache_cellTypes @@ -2171,7 +2171,7 @@ ${testCode}` return this.getChildrenByParser(parserDefinitionParser).filter(node => node._hasValidParserId()) } get lastRootParserDefinitionNode() { - return this.findLast(def => def instanceof AbstractParserDefinitionParser && def.has(GrammarConstants.root) && def._hasValidParserId()) + return this.findLast(def => def instanceof AbstractParserDefinitionParser && def.has(ParsersConstants.root) && def._hasValidParserId()) } _initRootParserDefinitionNode() { if (this._cache_rootParserNode) return @@ -2179,9 +2179,9 @@ ${testCode}` // By default, have a very permissive basic root node. // todo: whats the best design pattern to use for this sort of thing? if (!this._cache_rootParserNode) { - this._cache_rootParserNode = this.concat(`${GrammarConstants.DefaultRootParser} - ${GrammarConstants.root} - ${GrammarConstants.catchAllParser} ${GrammarConstants.BlobParser}`)[0] + this._cache_rootParserNode = this.concat(`${ParsersConstants.DefaultRootParser} + ${ParsersConstants.root} + ${ParsersConstants.catchAllParser} ${ParsersConstants.BlobParser}`)[0] this._addDefaultCatchAllBlobParser() } } @@ -2193,11 +2193,11 @@ ${testCode}` if (this._addedCatchAll) return this._addedCatchAll = true delete this._cache_parserDefinitionParsers - this.concat(`${GrammarConstants.BlobParser} - ${GrammarConstants.baseParser} ${GrammarConstants.blobParser}`) + this.concat(`${ParsersConstants.BlobParser} + ${ParsersConstants.baseParser} ${ParsersConstants.blobParser}`) } get extensionName() { - return this.grammarName + return this.parsersName } get id() { return this.rootParserId @@ -2205,14 +2205,14 @@ ${testCode}` get rootParserId() { return this.rootParserDefinition.parserIdFromDefinition } - get grammarName() { - return this.rootParserId.replace(HandGrammarProgram.parserSuffixRegex, "") + get parsersName() { + return this.rootParserId.replace(HandParsersProgram.parserSuffixRegex, "") } _getMyInScopeParserIds() { return super._getMyInScopeParserIds(this.rootParserDefinition) } _getInScopeParserIds() { - const parsersNode = this.rootParserDefinition.getNode(GrammarConstants.inScope) + const parsersNode = this.rootParserDefinition.getNode(ParsersConstants.inScope) return parsersNode ? parsersNode.getWordsFrom(1) : [] } makeProgramParserDefinitionCache() { @@ -2228,7 +2228,7 @@ ${testCode}` return this._cached_rootParser } get fileExtensions() { - return this.rootParserDefinition.get(GrammarConstants.extensions) ? this.rootParserDefinition.get(GrammarConstants.extensions).split(" ").join(",") : this.extensionName + return this.rootParserDefinition.get(ParsersConstants.extensions) ? this.rootParserDefinition.get(ParsersConstants.extensions).split(" ").join(",") : this.extensionName } toNodeJsJavascript(scrollsdkProductsPath = "scrollsdk/products") { return this._rootNodeDefToJavascriptClass(scrollsdkProductsPath, true).trim() @@ -2241,7 +2241,7 @@ ${testCode}` // todo: throw if there is no root node defined const parserClasses = defs.map(def => def.asJavascriptClass).join("\n\n") const rootDef = this.rootParserDefinition - const rootNodeJsHeader = forNodeJs && rootDef._getConcatBlockStringFromExtended(GrammarConstants._rootNodeJsHeader) + const rootNodeJsHeader = forNodeJs && rootDef._getConcatBlockStringFromExtended(ParsersConstants._rootNodeJsHeader) const rootName = rootDef.generatedClassName if (!rootName) throw new Error(`Root Node Type Has No Name`) let exportScript = "" @@ -2259,7 +2259,7 @@ ${rootName}` }) .join("\n") } - // todo: we can expose the previous "constants" export, if needed, via the grammar, which we preserve. + // todo: we can expose the previous "constants" export, if needed, via the parsers, which we preserve. return `{ ${nodeJsImports} ${rootNodeJsHeader ? rootNodeJsHeader : ""} @@ -2293,35 +2293,35 @@ ${includes} ${parserContexts}` } } -HandGrammarProgram.makeParserId = str => Utils._replaceNonAlphaNumericCharactersWithCharCodes(str).replace(HandGrammarProgram.parserSuffixRegex, "") + GrammarConstants.parserSuffix -HandGrammarProgram.makeCellTypeId = str => Utils._replaceNonAlphaNumericCharactersWithCharCodes(str).replace(HandGrammarProgram.cellTypeSuffixRegex, "") + GrammarConstants.cellTypeSuffix -HandGrammarProgram.parserSuffixRegex = new RegExp(GrammarConstants.parserSuffix + "$") -HandGrammarProgram.parserFullRegex = new RegExp("^[a-zA-Z0-9_]+" + GrammarConstants.parserSuffix + "$") -HandGrammarProgram.blankLineRegex = new RegExp("^$") -HandGrammarProgram.cellTypeSuffixRegex = new RegExp(GrammarConstants.cellTypeSuffix + "$") -HandGrammarProgram.cellTypeFullRegex = new RegExp("^[a-zA-Z0-9_]+" + GrammarConstants.cellTypeSuffix + "$") -HandGrammarProgram._languages = {} -HandGrammarProgram._parsers = {} +HandParsersProgram.makeParserId = str => Utils._replaceNonAlphaNumericCharactersWithCharCodes(str).replace(HandParsersProgram.parserSuffixRegex, "") + ParsersConstants.parserSuffix +HandParsersProgram.makeCellTypeId = str => Utils._replaceNonAlphaNumericCharactersWithCharCodes(str).replace(HandParsersProgram.cellTypeSuffixRegex, "") + ParsersConstants.cellTypeSuffix +HandParsersProgram.parserSuffixRegex = new RegExp(ParsersConstants.parserSuffix + "$") +HandParsersProgram.parserFullRegex = new RegExp("^[a-zA-Z0-9_]+" + ParsersConstants.parserSuffix + "$") +HandParsersProgram.blankLineRegex = new RegExp("^$") +HandParsersProgram.cellTypeSuffixRegex = new RegExp(ParsersConstants.cellTypeSuffix + "$") +HandParsersProgram.cellTypeFullRegex = new RegExp("^[a-zA-Z0-9_]+" + ParsersConstants.cellTypeSuffix + "$") +HandParsersProgram._languages = {} +HandParsersProgram._parsers = {} const PreludeKinds = {} -PreludeKinds[PreludeCellTypeIds.anyCell] = GrammarAnyCell -PreludeKinds[PreludeCellTypeIds.keywordCell] = GrammarKeywordCell -PreludeKinds[PreludeCellTypeIds.floatCell] = GrammarFloatCell -PreludeKinds[PreludeCellTypeIds.numberCell] = GrammarFloatCell -PreludeKinds[PreludeCellTypeIds.bitCell] = GrammarBitCell -PreludeKinds[PreludeCellTypeIds.boolCell] = GrammarBoolCell -PreludeKinds[PreludeCellTypeIds.intCell] = GrammarIntCell -class UnknownGrammarProgram extends TreeNode { - _inferRootNodeForAPrefixLanguage(grammarName) { - grammarName = HandGrammarProgram.makeParserId(grammarName) - const rootNode = new TreeNode(`${grammarName} - ${GrammarConstants.root}`) - // note: right now we assume 1 global cellTypeMap and parserMap per grammar. But we may have scopes in the future? +PreludeKinds[PreludeCellTypeIds.anyCell] = ParsersAnyCell +PreludeKinds[PreludeCellTypeIds.keywordCell] = ParsersKeywordCell +PreludeKinds[PreludeCellTypeIds.floatCell] = ParsersFloatCell +PreludeKinds[PreludeCellTypeIds.numberCell] = ParsersFloatCell +PreludeKinds[PreludeCellTypeIds.bitCell] = ParsersBitCell +PreludeKinds[PreludeCellTypeIds.boolCell] = ParsersBoolCell +PreludeKinds[PreludeCellTypeIds.intCell] = ParsersIntCell +class UnknownParsersProgram extends TreeNode { + _inferRootNodeForAPrefixLanguage(parsersName) { + parsersName = HandParsersProgram.makeParserId(parsersName) + const rootNode = new TreeNode(`${parsersName} + ${ParsersConstants.root}`) + // note: right now we assume 1 global cellTypeMap and parserMap per parsers. But we may have scopes in the future? const rootNodeNames = this.getFirstWords() .filter(identity => identity) - .map(word => HandGrammarProgram.makeParserId(word)) + .map(word => HandParsersProgram.makeParserId(word)) rootNode .nodeAt(0) - .touchNode(GrammarConstants.inScope) + .touchNode(ParsersConstants.inScope) .setWordsFrom(1, Array.from(new Set(rootNodeNames))) return rootNode } @@ -2330,7 +2330,7 @@ class UnknownGrammarProgram extends TreeNode { for (let node of clone.getTopDownArrayIterator()) { const firstWordIsAnInteger = !!node.firstWord.match(/^\d+$/) const parentFirstWord = node.parent.firstWord - if (firstWordIsAnInteger && parentFirstWord) node.setFirstWord(HandGrammarProgram.makeParserId(parentFirstWord + UnknownGrammarProgram._childSuffix)) + if (firstWordIsAnInteger && parentFirstWord) node.setFirstWord(HandParsersProgram.makeParserId(parentFirstWord + UnknownParsersProgram._childSuffix)) } } _getKeywordMaps(clone) { @@ -2347,10 +2347,10 @@ class UnknownGrammarProgram extends TreeNode { } _inferParserDef(firstWord, globalCellTypeMap, childFirstWords, instances) { const edgeSymbol = this.edgeSymbol - const parserId = HandGrammarProgram.makeParserId(firstWord) + const parserId = HandParsersProgram.makeParserId(firstWord) const nodeDefNode = new TreeNode(parserId).nodeAt(0) - const childParserIds = childFirstWords.map(word => HandGrammarProgram.makeParserId(word)) - if (childParserIds.length) nodeDefNode.touchNode(GrammarConstants.inScope).setWordsFrom(1, childParserIds) + const childParserIds = childFirstWords.map(word => HandParsersProgram.makeParserId(word)) + if (childParserIds.length) nodeDefNode.touchNode(ParsersConstants.inScope).setWordsFrom(1, childParserIds) const cellsForAllInstances = instances .map(line => line.content) .filter(identity => identity) @@ -2377,29 +2377,29 @@ class UnknownGrammarProgram extends TreeNode { cellTypeIds.pop() } } - const needsCruxProperty = !firstWord.endsWith(UnknownGrammarProgram._childSuffix + GrammarConstants.parserSuffix) // todo: cleanup - if (needsCruxProperty) nodeDefNode.set(GrammarConstants.crux, firstWord) - if (catchAllCellType) nodeDefNode.set(GrammarConstants.catchAllCellType, catchAllCellType) + const needsCruxProperty = !firstWord.endsWith(UnknownParsersProgram._childSuffix + ParsersConstants.parserSuffix) // todo: cleanup + if (needsCruxProperty) nodeDefNode.set(ParsersConstants.crux, firstWord) + if (catchAllCellType) nodeDefNode.set(ParsersConstants.catchAllCellType, catchAllCellType) const cellLine = cellTypeIds.slice() cellLine.unshift(PreludeCellTypeIds.keywordCell) - if (cellLine.length > 0) nodeDefNode.set(GrammarConstants.cells, cellLine.join(edgeSymbol)) - //if (!catchAllCellType && cellTypeIds.length === 1) nodeDefNode.set(GrammarConstants.cells, cellTypeIds[0]) + if (cellLine.length > 0) nodeDefNode.set(ParsersConstants.cells, cellLine.join(edgeSymbol)) + //if (!catchAllCellType && cellTypeIds.length === 1) nodeDefNode.set(ParsersConstants.cells, cellTypeIds[0]) // Todo: add conditional frequencies return nodeDefNode.parent.toString() } - // inferGrammarFileForAnSSVLanguage(grammarName: string): string { - // grammarName = HandGrammarProgram.makeParserId(grammarName) - // const rootNode = new TreeNode(`${grammarName} - // ${GrammarConstants.root}`) - // // note: right now we assume 1 global cellTypeMap and parserMap per grammar. But we may have scopes in the future? - // const rootNodeNames = this.getFirstWords().map(word => HandGrammarProgram.makeParserId(word)) + // inferParsersFileForAnSSVLanguage(parsersName: string): string { + // parsersName = HandParsersProgram.makeParserId(parsersName) + // const rootNode = new TreeNode(`${parsersName} + // ${ParsersConstants.root}`) + // // note: right now we assume 1 global cellTypeMap and parserMap per parsers. But we may have scopes in the future? + // const rootNodeNames = this.getFirstWords().map(word => HandParsersProgram.makeParserId(word)) // rootNode // .nodeAt(0) - // .touchNode(GrammarConstants.inScope) + // .touchNode(ParsersConstants.inScope) // .setWordsFrom(1, Array.from(new Set(rootNodeNames))) // return rootNode // } - inferGrammarFileForAKeywordLanguage(grammarName) { + inferParsersFileForAKeywordLanguage(parsersName) { const clone = this.clone() this._renameIntegerKeywords(clone) const { keywordsToChildKeywords, keywordsToNodeInstances } = this._getKeywordMaps(clone) @@ -2411,13 +2411,13 @@ class UnknownGrammarProgram extends TreeNode { const cellTypeDefs = [] globalCellTypeMap.forEach((def, id) => cellTypeDefs.push(def ? def : id)) const nodeBreakSymbol = this.nodeBreakSymbol - return this._formatCode([this._inferRootNodeForAPrefixLanguage(grammarName).toString(), cellTypeDefs.join(nodeBreakSymbol), parserDefs.join(nodeBreakSymbol)].filter(identity => identity).join("\n")) + return this._formatCode([this._inferRootNodeForAPrefixLanguage(parsersName).toString(), cellTypeDefs.join(nodeBreakSymbol), parserDefs.join(nodeBreakSymbol)].filter(identity => identity).join("\n")) } _formatCode(code) { // todo: make this run in browser too if (!this.isNodeJs()) return code - const grammarProgram = new HandGrammarProgram(TreeNode.fromDisk(__dirname + "/../langs/grammar/grammar.grammar")) - const rootParser = grammarProgram.compileAndReturnRootParser() + const parsersProgram = new HandParsersProgram(TreeNode.fromDisk(__dirname + "/../langs/parsers/parsers.parsers")) + const rootParser = parsersProgram.compileAndReturnRootParser() const program = new rootParser(code) return program.format().toString() } @@ -2448,13 +2448,13 @@ class UnknownGrammarProgram extends TreeNode { const enumLimit = 30 if (instanceCount > 1 && maxCellsOnLine === 1 && allValues.length > asSet.size && asSet.size < enumLimit) return { - cellTypeId: HandGrammarProgram.makeCellTypeId(firstWord), - cellTypeDefinition: `${HandGrammarProgram.makeCellTypeId(firstWord)} + cellTypeId: HandParsersProgram.makeCellTypeId(firstWord), + cellTypeDefinition: `${HandParsersProgram.makeCellTypeId(firstWord)} enum ${values.join(edgeSymbol)}` } return { cellTypeId: PreludeCellTypeIds.anyCell } } } -UnknownGrammarProgram._childSuffix = "Child" +UnknownParsersProgram._childSuffix = "Child" -module.exports = { GrammarConstants, PreludeCellTypeIds, HandGrammarProgram, GrammarBackedNode, UnknownParserError, UnknownGrammarProgram } +module.exports = { ParsersConstants, PreludeCellTypeIds, HandParsersProgram, ParserBackedNode, UnknownParserError, UnknownParsersProgram } diff --git a/node_modules/scroll-cli/node_modules/scrollsdk/products/GrammarCompiler.js b/node_modules/scrollsdk/products/ParsersCompiler.js similarity index 54% rename from node_modules/scroll-cli/node_modules/scrollsdk/products/GrammarCompiler.js rename to node_modules/scrollsdk/products/ParsersCompiler.js index c420d4926a..7d3e5988a4 100644 --- a/node_modules/scroll-cli/node_modules/scrollsdk/products/GrammarCompiler.js +++ b/node_modules/scrollsdk/products/ParsersCompiler.js @@ -3,21 +3,21 @@ const fs = require("fs") const path = require("path") const { Utils } = require("../products/Utils.js") const { TreeNode } = require("../products/TreeNode.js") -const { HandGrammarProgram } = require("./GrammarLanguage.js") +const { HandParsersProgram } = require("./Parsers.js") var CompileTarget ;(function (CompileTarget) { CompileTarget["nodejs"] = "nodejs" CompileTarget["browser"] = "browser" })(CompileTarget || (CompileTarget = {})) -class GrammarCompiler { - static compileGrammarForNodeJs(pathToGrammar, outputFolder, usePrettier = true, scrollsdkProductsPath = __dirname) { - return this._compileGrammar(pathToGrammar, outputFolder, CompileTarget.nodejs, usePrettier, scrollsdkProductsPath) +class ParsersCompiler { + static compileParsersForNodeJs(pathToParsers, outputFolder, usePrettier = true, scrollsdkProductsPath = __dirname) { + return this._compileParsers(pathToParsers, outputFolder, CompileTarget.nodejs, usePrettier, scrollsdkProductsPath) } - static _compileGrammar(pathToGrammar, outputFolder, target, usePrettier, scrollsdkProductsPath) { + static _compileParsers(pathToParsers, outputFolder, target, usePrettier, scrollsdkProductsPath) { const isNodeJs = CompileTarget.nodejs === target - const grammarCode = TreeNode.fromDisk(pathToGrammar) - const program = new HandGrammarProgram(grammarCode.toString()) - const outputFilePath = path.join(outputFolder, `${program.grammarName}.${target}.js`) + const parsersCode = TreeNode.fromDisk(pathToParsers) + const program = new HandParsersProgram(parsersCode.toString()) + const outputFilePath = path.join(outputFolder, `${program.parsersName}.${target}.js`) let result = isNodeJs ? program.toNodeJsJavascript(scrollsdkProductsPath) : program.toBrowserJavascript() if (isNodeJs) result = @@ -34,42 +34,42 @@ if (!module.parent) new ${program.rootParserId}(TreeNode.fromDisk(process.argv[2 if (isNodeJs) fs.chmodSync(outputFilePath, 0o755) return outputFilePath } - static compileGrammarForBrowser(pathToGrammar, outputFolder, usePrettier = true) { - return this._compileGrammar(pathToGrammar, outputFolder, CompileTarget.browser, usePrettier) + static compileParsersForBrowser(pathToParsers, outputFolder, usePrettier = true) { + return this._compileParsers(pathToParsers, outputFolder, CompileTarget.browser, usePrettier) } } -_a = GrammarCompiler -GrammarCompiler.compileGrammarAndCreateProgram = (programPath, grammarPath) => { +_a = ParsersCompiler +ParsersCompiler.compileParsersAndCreateProgram = (programPath, parsersPath) => { // tod: remove? - const rootParser = _a.compileGrammarFileAtPathAndReturnRootParser(grammarPath) + const rootParser = _a.compileParsersFileAtPathAndReturnRootParser(parsersPath) return new rootParser(fs.readFileSync(programPath, "utf8")) } -GrammarCompiler.formatCode = (programCode, grammarPath) => { +ParsersCompiler.formatCode = (programCode, parsersPath) => { // tod: remove? - const rootParser = _a.compileGrammarFileAtPathAndReturnRootParser(grammarPath) + const rootParser = _a.compileParsersFileAtPathAndReturnRootParser(parsersPath) const program = new rootParser(programCode) return program.format().toString() } -GrammarCompiler.formatFileInPlace = (programPath, grammarPath) => { +ParsersCompiler.formatFileInPlace = (programPath, parsersPath) => { // tod: remove? const original = TreeNode.fromDisk(programPath) - const formatted = _a.formatCode(original.toString(), grammarPath) + const formatted = _a.formatCode(original.toString(), parsersPath) if (original === formatted) return false new TreeNode(formatted).toDisk(programPath) return true } -GrammarCompiler.compileGrammarFileAtPathAndReturnRootParser = grammarPath => { +ParsersCompiler.compileParsersFileAtPathAndReturnRootParser = parsersPath => { // todo: remove - if (!fs.existsSync(grammarPath)) throw new Error(`Grammar file does not exist: ${grammarPath}`) - const grammarCode = fs.readFileSync(grammarPath, "utf8") - const grammarProgram = new HandGrammarProgram(grammarCode) - return grammarProgram.compileAndReturnRootParser() + if (!fs.existsSync(parsersPath)) throw new Error(`Parsers file does not exist: ${parsersPath}`) + const parsersCode = fs.readFileSync(parsersPath, "utf8") + const parsersProgram = new HandParsersProgram(parsersCode) + return parsersProgram.compileAndReturnRootParser() } -GrammarCompiler.combineFiles = globPatterns => { +ParsersCompiler.combineFiles = globPatterns => { const glob = require("glob") const files = Utils.flatten(globPatterns.map(pattern => glob.sync(pattern))) const content = files.map(path => fs.readFileSync(path, "utf8")).join("\n") return new TreeNode(content) } -module.exports = { GrammarCompiler } +module.exports = { ParsersCompiler } diff --git a/node_modules/scrollsdk/products/TreeFileSystem.js b/node_modules/scrollsdk/products/TreeFileSystem.js index 3056e8df59..7f51511ad2 100644 --- a/node_modules/scrollsdk/products/TreeFileSystem.js +++ b/node_modules/scrollsdk/products/TreeFileSystem.js @@ -3,10 +3,10 @@ const path = require("path") const { Disk } = require("../products/Disk.node.js") const { Utils } = require("../products/Utils.js") const { TreeNode } = require("../products/TreeNode.js") -const { HandGrammarProgram } = require("../products/GrammarLanguage.js") -const grammarParser = require("../products/grammar.nodejs.js") +const { HandParsersProgram } = require("../products/Parsers.js") +const parsersParser = require("../products/parsers.nodejs.js") const { posix } = require("../products/Path.js") -const GRAMMAR_EXTENSION = ".grammar" +const PARSERS_EXTENSION = ".parsers" const parserRegex = /^[a-zA-Z0-9_]+Parser/gm // A regex to check if a multiline string has a line that starts with "import ". const importRegex = /^import /gm @@ -69,7 +69,7 @@ class TreeFileSystem { this._treeCache = {} this._parserCache = {} this._expandedImportCache = {} - this._grammarExpandersCache = {} + this._parsersExpandersCache = {} if (inMemoryFiles) this._storage = new MemoryWriter(inMemoryFiles) else this._storage = new DiskWriter() } @@ -103,15 +103,17 @@ class TreeFileSystem { if (_expandedImportCache[absoluteFilePath]) return _expandedImportCache[absoluteFilePath] let code = this.read(absoluteFilePath) const isImportOnly = importOnlyRegex.test(code) - // Strip any parsers - const stripIt = code.includes("// parsersOnly") // temporary perf hack - if (stripIt) + // Perf hack + // If its a parsers file, it will have no content, just parsers (and maybe imports). + // The parsers will already have been processed. We can skip them + const stripParsers = absoluteFilePath.endsWith(PARSERS_EXTENSION) + if (stripParsers) code = code .split("\n") .filter(line => line.startsWith("import ")) .join("\n") const filepathsWithParserDefinitions = [] - if (this._doesFileHaveGrammarDefinitions(absoluteFilePath)) filepathsWithParserDefinitions.push(absoluteFilePath) + if (this._doesFileHaveParsersDefinitions(absoluteFilePath)) filepathsWithParserDefinitions.push(absoluteFilePath) if (!importRegex.test(code)) return { afterImportPass: code, @@ -142,37 +144,38 @@ class TreeFileSystem { importFilePaths, isImportOnly, afterImportPass: combinedLines, - filepathsWithParserDefinitions: importFilePaths.filter(filename => this._doesFileHaveGrammarDefinitions(filename)).concat(filepathsWithParserDefinitions) + filepathsWithParserDefinitions: importFilePaths.filter(filename => this._doesFileHaveParsersDefinitions(filename)).concat(filepathsWithParserDefinitions) } return _expandedImportCache[absoluteFilePath] } - _doesFileHaveGrammarDefinitions(absoluteFilePath) { + _doesFileHaveParsersDefinitions(absoluteFilePath) { if (!absoluteFilePath) return false - const { _grammarExpandersCache } = this - if (_grammarExpandersCache[absoluteFilePath] === undefined) _grammarExpandersCache[absoluteFilePath] = !!this._storage.read(absoluteFilePath).match(parserRegex) - return _grammarExpandersCache[absoluteFilePath] + const { _parsersExpandersCache } = this + if (_parsersExpandersCache[absoluteFilePath] === undefined) _parsersExpandersCache[absoluteFilePath] = !!this._storage.read(absoluteFilePath).match(parserRegex) + return _parsersExpandersCache[absoluteFilePath] } - _getOneGrammarParserFromFiles(filePaths, baseGrammarCode) { + _getOneParsersParserFromFiles(filePaths, baseParsersCode) { const parserDefinitionRegex = /^[a-zA-Z0-9_]+Parser/ + const cellDefinitionRegex = /^[a-zA-Z0-9_]+Cell/ const asOneFile = filePaths .map(filePath => { const content = this._storage.read(filePath) - if (filePath.endsWith(GRAMMAR_EXTENSION)) return content + if (filePath.endsWith(PARSERS_EXTENSION)) return content // Strip scroll content return new TreeNode(content) - .filter(node => node.getLine().match(parserDefinitionRegex)) + .filter(node => node.getLine().match(parserDefinitionRegex) || node.getLine().match(cellDefinitionRegex)) .map(node => node.asString) .join("\n") }) .join("\n") .trim() - // todo: clean up scrollsdk so we are using supported methods (perhaps add a formatOptions that allows you to tell Grammar not to run prettier on js nodes) - return new grammarParser(baseGrammarCode + "\n" + asOneFile)._sortNodesByInScopeOrder()._sortWithParentParsersUpTop() + // todo: clean up scrollsdk so we are using supported methods (perhaps add a formatOptions that allows you to tell Parsers not to run prettier on js nodes) + return new parsersParser(baseParsersCode + "\n" + asOneFile)._sortNodesByInScopeOrder()._sortWithParentParsersUpTop() } get parsers() { - return Object.values(this._parserCache).map(parser => parser.grammarParser) + return Object.values(this._parserCache).map(parser => parser.parsersParser) } - getParser(filePaths, baseGrammarCode = "") { + getParser(filePaths, baseParsersCode = "") { const { _parserCache } = this const key = filePaths .filter(fp => fp) @@ -180,19 +183,19 @@ class TreeFileSystem { .join("\n") const hit = _parserCache[key] if (hit) return hit - const grammarParser = this._getOneGrammarParserFromFiles(filePaths, baseGrammarCode) - const grammarCode = grammarParser.asString + const parsersParser = this._getOneParsersParserFromFiles(filePaths, baseParsersCode) + const parsersCode = parsersParser.asString _parserCache[key] = { - grammarParser, - grammarCode, - parser: new HandGrammarProgram(grammarCode).compileAndReturnRootParser() + parsersParser, + parsersCode, + parser: new HandParsersProgram(parsersCode).compileAndReturnRootParser() } return _parserCache[key] } assembleFile(absoluteFilePath, defaultParserCode) { const assembledFile = this._assembleFile(absoluteFilePath) if (!defaultParserCode) return assembledFile - // BUILD CUSTOM COMPILER, IF THERE ARE CUSTOM GRAMMAR NODES DEFINED + // BUILD CUSTOM COMPILER, IF THERE ARE CUSTOM PARSERS NODES DEFINED if (assembledFile.filepathsWithParserDefinitions.length) assembledFile.parser = this.getParser(assembledFile.filepathsWithParserDefinitions, defaultParserCode).parser return assembledFile } diff --git a/node_modules/scrollsdk/products/TreeNode.js b/node_modules/scrollsdk/products/TreeNode.js index a9c5d9fe7f..8371dd468a 100644 --- a/node_modules/scrollsdk/products/TreeNode.js +++ b/node_modules/scrollsdk/products/TreeNode.js @@ -1648,7 +1648,7 @@ class TreeNode extends AbstractNode { } // todo: add more testing. // todo: solve issue with where extend should overwrite or append - // todo: should take a grammar? to decide whether to overwrite or append. + // todo: should take a parsers? to decide whether to overwrite or append. // todo: this is slow. extend(nodeOrStr) { const node = nodeOrStr instanceof TreeNode ? nodeOrStr : new TreeNode(nodeOrStr) @@ -2545,7 +2545,7 @@ TreeNode.iris = `sepal_length,sepal_width,petal_length,petal_width,species 4.9,2.5,4.5,1.7,virginica 5.1,3.5,1.4,0.2,setosa 5,3.4,1.5,0.2,setosa` -TreeNode.getVersion = () => "77.1.1" +TreeNode.getVersion = () => "80.0.0" class AbstractExtendibleTreeNode extends TreeNode { _getFromExtended(firstWordPath) { const hit = this._getNodeFromExtended(firstWordPath) diff --git a/node_modules/scrollsdk/products/grammar.nodejs.js b/node_modules/scrollsdk/products/grammar.nodejs.js deleted file mode 100755 index c67c37d418..0000000000 --- a/node_modules/scrollsdk/products/grammar.nodejs.js +++ /dev/null @@ -1,975 +0,0 @@ -#! /usr/bin/env node -{ - const { Utils } = require("./Utils.js") - const { TreeNode } = require("./TreeNode.js") - const { HandGrammarProgram } = require("./GrammarLanguage.js") - const { GrammarBackedNode } = require("./GrammarLanguage.js") - - class grammarParser extends GrammarBackedNode { - createParserCombinator() { - return new TreeNode.ParserCombinator(catchAllErrorParser, Object.assign(Object.assign({}, super.createParserCombinator()._getFirstWordMapAsObject()), { "//": slashCommentParser }), [ - { regex: /^$/, parser: blankLineParser }, - { regex: /^[a-zA-Z0-9_]+Cell$/, parser: cellTypeDefinitionParser }, - { regex: /^[a-zA-Z0-9_]+Parser$/, parser: parserDefinitionParser } - ]) - } - static cachedHandGrammarProgramRoot = - new HandGrammarProgram(`// todo Add imports parsers, along with source maps, so we can correctly support grammars split across multiple files, and better enable grammars from compositions of reusable bits? -// todo Do error checking for if you have a firstwordCellType, cells, and/or catchAllCellType with same name. -// todo Add enumOption root level type? -// todo compile cells. add javascript property. move getRunTimeEnumOptions to cells. - -// Cell Parsers -abstractConstantCell - highlightScope entity.name.tag -javascriptSafeAlphaNumericIdentifierCell - regex [a-zA-Z0-9_]+ - reservedWords enum extends function static if while export return class for default require var let const new -anyCell -baseParsersCell - description There are a few classes of special parsers. BlobParsers don't have their children parsed. Error nodes always report an error. - // todo Remove? - enum blobParser errorParser - highlightScope variable.parameter -boolCell - enum true false - highlightScope constant.numeric -cellParserCell - enum prefix postfix omnifix - highlightScope constant.numeric -cellPropertyNameCell - highlightScope variable.parameter -cellTypeIdCell - examples intCell keywordCell someCustomCell - extends javascriptSafeAlphaNumericIdentifierCell - enumFromCellTypes cellTypeIdCell - highlightScope storage -constantIdentifierCell - examples someId myVar - // todo Extend javascriptSafeAlphaNumericIdentifier - regex [a-zA-Z]\\w+ - highlightScope constant.other - description A word that can be assigned to the node class in the target language. -constructorFilePathCell -enumOptionCell - // todo Add an enumOption top level type, so we can add data to an enum option such as a description. - highlightScope string -cellExampleCell - description Holds an example for a cell with a wide range of options. - highlightScope string -extraCell - highlightScope invalid -fileExtensionCell - examples js txt doc exe - regex [a-zA-Z0-9]+ - highlightScope string -numericCell - description A float or an int. - highlightScope constant.numeric -floatCell - regex \\-?[0-9]*\\.?[0-9]* - highlightScope constant.numeric -intCell - regex \\-?[0-9]+ - highlightScope constant.numeric -javascriptCodeCell -lowercaseCell - regex [a-z]+ -parserIdCell - examples commentParser addParser - description This doubles as the class name in Javascript. If this begins with \`abstract\`, then the node type will be considered an abstract parser, which cannot be used by itself but provides common functionality to parsers that extend it. - highlightScope variable.parameter - extends javascriptSafeAlphaNumericIdentifierCell - enumFromCellTypes parserIdCell -propertyKeywordCell - highlightScope constant.language -regexCell - highlightScope string.regexp -reservedWordCell - description A word that a cell cannot contain. - highlightScope string -scopeNameCell - enum comment comment.block comment.block.documentation comment.line constant constant.character.escape constant.language constant.numeric constant.numeric.complex constant.numeric.complex.imaginary constant.numeric.complex.real constant.numeric.float constant.numeric.float.binary constant.numeric.float.decimal constant.numeric.float.hexadecimal constant.numeric.float.octal constant.numeric.float.other constant.numeric.integer constant.numeric.integer.binary constant.numeric.integer.decimal constant.numeric.integer.hexadecimal constant.numeric.integer.octal constant.numeric.integer.other constant.other constant.other.placeholder entity entity.name entity.name.class entity.name.class.forward-decl entity.name.constant entity.name.enum entity.name.function entity.name.function.constructor entity.name.function.destructor entity.name.impl entity.name.interface entity.name.label entity.name.namespace entity.name.section entity.name.struct entity.name.tag entity.name.trait entity.name.type entity.name.union entity.other.attribute-name entity.other.inherited-class invalid invalid.deprecated invalid.illegal keyword keyword.control keyword.control.conditional keyword.control.import keyword.declaration keyword.operator keyword.operator.arithmetic keyword.operator.assignment keyword.operator.bitwise keyword.operator.logical keyword.operator.word keyword.other markup markup.bold markup.deleted markup.heading markup.inserted markup.italic markup.list.numbered markup.list.unnumbered markup.other markup.quote markup.raw.block markup.raw.inline markup.underline markup.underline.link meta meta.annotation meta.annotation.identifier meta.annotation.parameters meta.block meta.braces meta.brackets meta.class meta.enum meta.function meta.function-call meta.function.parameters meta.function.return-type meta.generic meta.group meta.impl meta.interface meta.interpolation meta.namespace meta.paragraph meta.parens meta.path meta.preprocessor meta.string meta.struct meta.tag meta.toc-list meta.trait meta.type meta.union punctuation punctuation.accessor punctuation.definition.annotation punctuation.definition.comment punctuation.definition.generic.begin punctuation.definition.generic.end punctuation.definition.keyword punctuation.definition.string.begin punctuation.definition.string.end punctuation.definition.variable punctuation.section.block.begin punctuation.section.block.end punctuation.section.braces.begin punctuation.section.braces.end punctuation.section.brackets.begin punctuation.section.brackets.end punctuation.section.group.begin punctuation.section.group.end punctuation.section.interpolation.begin punctuation.section.interpolation.end punctuation.section.parens.begin punctuation.section.parens.end punctuation.separator punctuation.separator.continuation punctuation.terminator source source.language-suffix.embedded storage storage.modifier storage.type storage.type keyword.declaration.type storage.type.class keyword.declaration.class storage.type.enum keyword.declaration.enum storage.type.function keyword.declaration.function storage.type.impl keyword.declaration.impl storage.type.interface keyword.declaration.interface storage.type.struct keyword.declaration.struct storage.type.trait keyword.declaration.trait storage.type.union keyword.declaration.union string string.quoted.double string.quoted.other string.quoted.single string.quoted.triple string.regexp string.unquoted support support.class support.constant support.function support.module support.type text text.html text.xml variable variable.annotation variable.function variable.language variable.other variable.other.constant variable.other.member variable.other.readwrite variable.parameter - highlightScope string -scriptUrlCell -semanticVersionCell - examples 1.0.0 2.2.1 - regex [0-9]+\\.[0-9]+\\.[0-9]+ - highlightScope constant.numeric -stringCell - highlightScope string - examples lorem ipsum -tagCell - highlightScope string -wordCell - regex [a-zA-Z]+ - highlightScope variable.parameter -exampleAnyCell - examples lorem ipsem - // todo Eventually we want to be able to parse correctly the examples. - highlightScope comment - extends stringCell -blankCell -commentCell - highlightScope comment - -// Line Parsers -grammarParser - root - description Grammar is a Tree Language for creating new Tree Languages. By creating a grammar file you get a parser, a type checker, syntax highlighting, autocomplete, a compiler, and virtual machine for executing your new language. Grammar uses both postfix and prefix language features. - catchAllParser catchAllErrorParser - extensions grammar gram - example A grammar that parses anything: - latinParser - root - catchAllParser anyParser - anyParser - baseParser blobParser - version 5.0.0 - inScope slashCommentParser blankLineParser cellTypeDefinitionParser parserDefinitionParser -blankLineParser - description Blank lines are OK in Grammar. - cells blankCell - pattern ^$ - tags doNotSynthesize -abstractCompilerRuleParser - catchAllCellType anyCell - cells propertyKeywordCell -closeChildrenParser - extends abstractCompilerRuleParser - description When compiling a parent node to a string, this string is appended to the compiled and joined children. Default is blank. - cruxFromId -indentCharacterParser - extends abstractCompilerRuleParser - description You can change the indent character for compiled children. Default is a space. - cruxFromId -catchAllCellDelimiterParser - description If a node has a catchAllCell, this is the string delimiter that will be used to join those cells. Default is comma. - extends abstractCompilerRuleParser - cruxFromId -openChildrenParser - extends abstractCompilerRuleParser - description When compiling a parent node to a string, this string is prepended to the compiled and joined children. Default is blank. - cruxFromId -stringTemplateParser - extends abstractCompilerRuleParser - description This template string is used to compile this line, and accepts strings of the format: const var = {someCellId} - cruxFromId -joinChildrenWithParser - description When compiling a parent node to a string, child nodes are compiled to strings and joined by this character. Default is a newline. - extends abstractCompilerRuleParser - cruxFromId -abstractConstantParser - description Assign a constant to a parser which will be available in the compiled parser classes. - cells propertyKeywordCell - cruxFromId -booleanParser - cells propertyKeywordCell constantIdentifierCell - catchAllCellType boolCell - extends abstractConstantParser -floatParser - cells propertyKeywordCell constantIdentifierCell - catchAllCellType floatCell - extends abstractConstantParser -intParser - cells propertyKeywordCell constantIdentifierCell - catchAllCellType intCell - extends abstractConstantParser -stringParser - cells propertyKeywordCell constantIdentifierCell - catchAllCellType stringCell - catchAllParser catchAllMultilineStringConstantParser - extends abstractConstantParser -abstractParserRuleParser - single - cells propertyKeywordCell -compilesToParser - cells propertyKeywordCell fileExtensionCell - extends abstractParserRuleParser - description Optionally specify a file extension that will be used when compiling your language to a file. Generally used on parsers marked root. - cruxFromId -extensionsParser - extends abstractParserRuleParser - catchAllCellType fileExtensionCell - description File extensions of your language. Generally used for parsers marked "root". Sometimes your language might have multiple extensions. If you don't add this, the root node's parserId will be used as the default file extension. - cruxFromId -versionParser - cells propertyKeywordCell semanticVersionCell - description Version number of your language. Generally used on parsers marked root. - extends abstractParserRuleParser - cruxFromId -abstractNonTerminalParserRuleParser - extends abstractParserRuleParser -baseParserParser - cells propertyKeywordCell baseParsersCell - description In rare cases with untyped content you can use a blobParser, for now, to skip parsing for performance gains. The base errorParser will report errors when parsed. Use that if you don't want to implement your own error parser. - extends abstractParserRuleParser - cruxFromId -catchAllCellTypeParser - cells propertyKeywordCell cellTypeIdCell - description Aka 'listCellType'. Use this when the value in a key/value pair is a list. If there are extra words in the node's line, parse these words as this type. Often used with \`listDelimiterParser\`. - extends abstractParserRuleParser - cruxFromId -cellParserParser - cells propertyKeywordCell cellParserCell - description prefix/postfix/omnifix parsing strategy. If missing, defaults to prefix. - extends abstractParserRuleParser - cruxFromId -catchAllParserParser - description If a parser is not found in the inScope list, instantiate this type of node instead. - cells propertyKeywordCell parserIdCell - extends abstractParserRuleParser - cruxFromId -cellsParser - catchAllCellType cellTypeIdCell - description Describes the word type of each word in the line. - extends abstractParserRuleParser - cruxFromId -compilerParser - // todo Remove this and its children? - inScope stringTemplateParser catchAllCellDelimiterParser openChildrenParser closeChildrenParser indentCharacterParser joinChildrenWithParser - extends abstractParserRuleParser - cruxFromId -descriptionParser - catchAllCellType stringCell - // todo Should we make this multiline? - extends abstractParserRuleParser - cruxFromId -exampleParser - // todo Should this just be a "string" constant on nodes? - description Provide a one line description and then a snippet of example code. - catchAllCellType exampleAnyCell - catchAllParser catchAllExampleLineParser - extends abstractParserRuleParser - cruxFromId -sortTemplateParser - description A one liner for describing how the content of the node should be sorted. Put a blank cell to insert a line break between sections. - extends abstractParserRuleParser - cruxFromId - catchAllCellType anyCell -extendsParserParser - crux extends - description parser definitions can extend others. - // todo Add mixin support in addition to/in place of extends? - cells propertyKeywordCell parserIdCell - extends abstractParserRuleParser -frequencyParser - // todo Remove this parser. Switch to conditional frequencies. - cells propertyKeywordCell floatCell - extends abstractParserRuleParser - cruxFromId -inScopeParser - description A list of possible child parsers for a node. - catchAllCellType parserIdCell - extends abstractParserRuleParser - cruxFromId -javascriptParser - // todo Urgently need to get submode syntax highlighting running! (And eventually LSP) - description Provide raw javascript code that will be inserted into a node type's class. - catchAllParser catchAllJavascriptCodeLineParser - extends abstractParserRuleParser - javascript - format() { - if (this.isNodeJs()) { - const template = \`class FOO{ \${this.childrenToString()}}\` - this.setChildren( - require("prettier") - .format(template, { semi: false, useTabs: true, parser: "babel", printWidth: 240 }) - .replace(/class FOO \\{\\s+/, "") - .replace(/\\s+\\}\\s+$/, "") - .replace(/\\n\\t/g, "\\n") // drop one level of indent - .replace(/\\t/g, " ") // we used tabs instead of spaces to be able to dedent without breaking literals. - ) - } - return this - } - cruxFromId -abstractParseRuleParser - description Each node should have a pattern that it matches on unless it's a catch all node. - extends abstractParserRuleParser - cruxFromId -cruxParser - cells propertyKeywordCell stringCell - description Use this property for prefix languages where the first word is the keyword. - extends abstractParseRuleParser -cruxFromIdParser - cells propertyKeywordCell - description Include this to derive the crux word from the node type id, for example 'fooParser' would have crux of 'foo'. - extends abstractParseRuleParser -patternParser - catchAllCellType regexCell - description If present, this regex will be used to determine the parser instead of the cruxParser. - extends abstractParseRuleParser -requiredParser - description If present, the parent node will have an error if one of these nodes is not provided. - extends abstractParserRuleParser - cruxFromId -abstractValidationRuleParser - extends abstractParserRuleParser - cruxFromId - catchAllCellType boolCell -singleParser - description If present and there are more than 1 of these nodes on the parent, an error will be present. Can be overridden by a child class by setting to false. - extends abstractValidationRuleParser -uniqueLineParser - description If present and there are more than 1 of these lines on the parent, an error will be present. Can be overridden by a child class by setting to false. - extends abstractValidationRuleParser -uniqueFirstWordParser - description For catch all parsers or pattern nodes, use this to indicate the first words should be unique. - extends abstractValidationRuleParser -listDelimiterParser - description If present will serialize the content of the node to an array of strings split on the provided delimiter. - extends abstractParserRuleParser - cruxFromId - catchAllCellType stringCell -contentKeyParser - description Advanced keyword to help with isomorphic JSON serialization/deserialization. If present will serialize the node to an object and set a property with this key and the value set to the node's content. - extends abstractParserRuleParser - cruxFromId - catchAllCellType stringCell -childrenKeyParser - description Advanced keyword to help with serialization/deserialization of blobs. If present will serialize the node to an object and set a property with this key and the value set to the node's children. - extends abstractParserRuleParser - cruxFromId - catchAllCellType stringCell -tagsParser - catchAllCellType tagCell - extends abstractParserRuleParser - cruxFromId -catchAllErrorParser - baseParser errorParser -catchAllExampleLineParser - catchAllCellType exampleAnyCell - catchAllParser catchAllExampleLineParser - cells exampleAnyCell -catchAllJavascriptCodeLineParser - catchAllCellType javascriptCodeCell - catchAllParser catchAllJavascriptCodeLineParser -catchAllMultilineStringConstantParser - description String constants can span multiple lines. - catchAllCellType stringCell - catchAllParser catchAllMultilineStringConstantParser - cells stringCell -cellTypeDefinitionParser - // todo Generate a class for each cell type? - // todo Allow abstract cell types? - // todo Change pattern to postfix. - pattern ^[a-zA-Z0-9_]+Cell$ - inScope highlightScopeParser regexParser reservedWordsParser enumFromCellTypesParser descriptionParser enumParser slashCommentParser extendsCellTypeParser examplesParser cellMinParser cellMaxParser - cells cellTypeIdCell -enumFromCellTypesParser - catchAllCellType cellTypeIdCell - cells cellPropertyNameCell - cruxFromId -enumParser - cruxFromId - catchAllCellType enumOptionCell - cells cellPropertyNameCell -examplesParser - description If the domain of possible cell values is large, such as a string type, it can help certain methods—such as program synthesis—to provide a few examples. - cruxFromId - catchAllCellType cellExampleCell - cells cellPropertyNameCell -cellMinParser - description For numeric cell types you can specify a min - crux min - cells cellPropertyNameCell numericCell -cellMaxParser - description For numeric cell types you can specify a max - crux max - cells cellPropertyNameCell numericCell -highlightScopeParser - cells propertyKeywordCell scopeNameCell - description Provide this to get syntax highlighting in editors like Sublime and CodeMirror. - single - cruxFromId -rootFlagParser - crux root - description Mark a parser as root if it is the root of your programming language. The parserId will be the name of your language. The parserId will also serve as the default file extension, if you don't specify another. If more than 1 parser is marked as "root", the last one wins. - cells propertyKeywordCell -parserDefinitionParser - // todo Add multiple dispatch? - pattern ^[a-zA-Z0-9_]+Parser$ - description Parser types are a core unit of your language. They translate to 1 class per parser. Examples of parser would be "header", "person", "if", "+", "define", etc. - catchAllParser catchAllErrorParser - inScope rootFlagParser abstractParserRuleParser abstractConstantParser slashCommentParser parserDefinitionParser - cells parserIdCell -_extendsJsClassParser - extends abstractParserRuleParser - // todo remove - description Deprecated - cells propertyKeywordCell anyCell - cruxFromId -_rootParserJsHeaderParser - extends abstractParserRuleParser - // todo remove - description Deprecated - catchAllParser catchAllJavascriptCodeLineParser - cruxFromId -regexParser - catchAllCellType regexCell - description The word must match this pattern or it shall be marked as an error. - single - cells cellPropertyNameCell - cruxFromId -reservedWordsParser - single - description A list of words that a cell cannot contain. - catchAllCellType reservedWordCell - cells cellPropertyNameCell - cruxFromId -commentLineParser - catchAllCellType commentCell -slashCommentParser - description A comment. - catchAllCellType commentCell - crux // - catchAllParser commentLineParser -extendsCellTypeParser - crux extends - description cellType definitions can extend others. - // todo Add mixin support in addition to/in place of extends? - cells propertyKeywordCell cellTypeIdCell - single`) - get handGrammarProgram() { - return this.constructor.cachedHandGrammarProgramRoot - } - static rootParser = grammarParser - } - - class blankLineParser extends GrammarBackedNode { - get blankCell() { - return this.getWord(0) - } - } - - class abstractCompilerRuleParser extends GrammarBackedNode { - get propertyKeywordCell() { - return this.getWord(0) - } - get anyCell() { - return this.getWordsFrom(1) - } - } - - class closeChildrenParser extends abstractCompilerRuleParser {} - - class indentCharacterParser extends abstractCompilerRuleParser {} - - class catchAllCellDelimiterParser extends abstractCompilerRuleParser {} - - class openChildrenParser extends abstractCompilerRuleParser {} - - class stringTemplateParser extends abstractCompilerRuleParser {} - - class joinChildrenWithParser extends abstractCompilerRuleParser {} - - class abstractConstantParser extends GrammarBackedNode { - get propertyKeywordCell() { - return this.getWord(0) - } - } - - class booleanParser extends abstractConstantParser { - get propertyKeywordCell() { - return this.getWord(0) - } - get constantIdentifierCell() { - return this.getWord(1) - } - get boolCell() { - return this.getWordsFrom(2) - } - } - - class floatParser extends abstractConstantParser { - get propertyKeywordCell() { - return this.getWord(0) - } - get constantIdentifierCell() { - return this.getWord(1) - } - get floatCell() { - return this.getWordsFrom(2).map(val => parseFloat(val)) - } - } - - class intParser extends abstractConstantParser { - get propertyKeywordCell() { - return this.getWord(0) - } - get constantIdentifierCell() { - return this.getWord(1) - } - get intCell() { - return this.getWordsFrom(2).map(val => parseInt(val)) - } - } - - class stringParser extends abstractConstantParser { - createParserCombinator() { - return new TreeNode.ParserCombinator(catchAllMultilineStringConstantParser, undefined, undefined) - } - get propertyKeywordCell() { - return this.getWord(0) - } - get constantIdentifierCell() { - return this.getWord(1) - } - get stringCell() { - return this.getWordsFrom(2) - } - } - - class abstractParserRuleParser extends GrammarBackedNode { - get propertyKeywordCell() { - return this.getWord(0) - } - } - - class compilesToParser extends abstractParserRuleParser { - get propertyKeywordCell() { - return this.getWord(0) - } - get fileExtensionCell() { - return this.getWord(1) - } - } - - class extensionsParser extends abstractParserRuleParser { - get fileExtensionCell() { - return this.getWordsFrom(0) - } - } - - class versionParser extends abstractParserRuleParser { - get propertyKeywordCell() { - return this.getWord(0) - } - get semanticVersionCell() { - return this.getWord(1) - } - } - - class abstractNonTerminalParserRuleParser extends abstractParserRuleParser {} - - class baseParserParser extends abstractParserRuleParser { - get propertyKeywordCell() { - return this.getWord(0) - } - get baseParsersCell() { - return this.getWord(1) - } - } - - class catchAllCellTypeParser extends abstractParserRuleParser { - get propertyKeywordCell() { - return this.getWord(0) - } - get cellTypeIdCell() { - return this.getWord(1) - } - } - - class cellParserParser extends abstractParserRuleParser { - get propertyKeywordCell() { - return this.getWord(0) - } - get cellParserCell() { - return this.getWord(1) - } - } - - class catchAllParserParser extends abstractParserRuleParser { - get propertyKeywordCell() { - return this.getWord(0) - } - get parserIdCell() { - return this.getWord(1) - } - } - - class cellsParser extends abstractParserRuleParser { - get cellTypeIdCell() { - return this.getWordsFrom(0) - } - } - - class compilerParser extends abstractParserRuleParser { - createParserCombinator() { - return new TreeNode.ParserCombinator( - undefined, - Object.assign(Object.assign({}, super.createParserCombinator()._getFirstWordMapAsObject()), { - closeChildren: closeChildrenParser, - indentCharacter: indentCharacterParser, - catchAllCellDelimiter: catchAllCellDelimiterParser, - openChildren: openChildrenParser, - stringTemplate: stringTemplateParser, - joinChildrenWith: joinChildrenWithParser - }), - undefined - ) - } - } - - class descriptionParser extends abstractParserRuleParser { - get stringCell() { - return this.getWordsFrom(0) - } - } - - class exampleParser extends abstractParserRuleParser { - createParserCombinator() { - return new TreeNode.ParserCombinator(catchAllExampleLineParser, undefined, undefined) - } - get exampleAnyCell() { - return this.getWordsFrom(0) - } - } - - class sortTemplateParser extends abstractParserRuleParser { - get anyCell() { - return this.getWordsFrom(0) - } - } - - class extendsParserParser extends abstractParserRuleParser { - get propertyKeywordCell() { - return this.getWord(0) - } - get parserIdCell() { - return this.getWord(1) - } - } - - class frequencyParser extends abstractParserRuleParser { - get propertyKeywordCell() { - return this.getWord(0) - } - get floatCell() { - return parseFloat(this.getWord(1)) - } - } - - class inScopeParser extends abstractParserRuleParser { - get parserIdCell() { - return this.getWordsFrom(0) - } - } - - class javascriptParser extends abstractParserRuleParser { - createParserCombinator() { - return new TreeNode.ParserCombinator(catchAllJavascriptCodeLineParser, undefined, undefined) - } - format() { - if (this.isNodeJs()) { - const template = `class FOO{ ${this.childrenToString()}}` - this.setChildren( - require("prettier") - .format(template, { semi: false, useTabs: true, parser: "babel", printWidth: 240 }) - .replace(/class FOO \{\s+/, "") - .replace(/\s+\}\s+$/, "") - .replace(/\n\t/g, "\n") // drop one level of indent - .replace(/\t/g, " ") // we used tabs instead of spaces to be able to dedent without breaking literals. - ) - } - return this - } - } - - class abstractParseRuleParser extends abstractParserRuleParser {} - - class cruxParser extends abstractParseRuleParser { - get propertyKeywordCell() { - return this.getWord(0) - } - get stringCell() { - return this.getWord(1) - } - } - - class cruxFromIdParser extends abstractParseRuleParser { - get propertyKeywordCell() { - return this.getWord(0) - } - } - - class patternParser extends abstractParseRuleParser { - get regexCell() { - return this.getWordsFrom(0) - } - } - - class requiredParser extends abstractParserRuleParser {} - - class abstractValidationRuleParser extends abstractParserRuleParser { - get boolCell() { - return this.getWordsFrom(0) - } - } - - class singleParser extends abstractValidationRuleParser {} - - class uniqueLineParser extends abstractValidationRuleParser {} - - class uniqueFirstWordParser extends abstractValidationRuleParser {} - - class listDelimiterParser extends abstractParserRuleParser { - get stringCell() { - return this.getWordsFrom(0) - } - } - - class contentKeyParser extends abstractParserRuleParser { - get stringCell() { - return this.getWordsFrom(0) - } - } - - class childrenKeyParser extends abstractParserRuleParser { - get stringCell() { - return this.getWordsFrom(0) - } - } - - class tagsParser extends abstractParserRuleParser { - get tagCell() { - return this.getWordsFrom(0) - } - } - - class catchAllErrorParser extends GrammarBackedNode { - getErrors() { - return this._getErrorParserErrors() - } - } - - class catchAllExampleLineParser extends GrammarBackedNode { - createParserCombinator() { - return new TreeNode.ParserCombinator(catchAllExampleLineParser, undefined, undefined) - } - get exampleAnyCell() { - return this.getWord(0) - } - get exampleAnyCell() { - return this.getWordsFrom(1) - } - } - - class catchAllJavascriptCodeLineParser extends GrammarBackedNode { - createParserCombinator() { - return new TreeNode.ParserCombinator(catchAllJavascriptCodeLineParser, undefined, undefined) - } - get javascriptCodeCell() { - return this.getWordsFrom(0) - } - } - - class catchAllMultilineStringConstantParser extends GrammarBackedNode { - createParserCombinator() { - return new TreeNode.ParserCombinator(catchAllMultilineStringConstantParser, undefined, undefined) - } - get stringCell() { - return this.getWord(0) - } - get stringCell() { - return this.getWordsFrom(1) - } - } - - class cellTypeDefinitionParser extends GrammarBackedNode { - createParserCombinator() { - return new TreeNode.ParserCombinator( - undefined, - Object.assign(Object.assign({}, super.createParserCombinator()._getFirstWordMapAsObject()), { - description: descriptionParser, - enumFromCellTypes: enumFromCellTypesParser, - enum: enumParser, - examples: examplesParser, - min: cellMinParser, - max: cellMaxParser, - highlightScope: highlightScopeParser, - regex: regexParser, - reservedWords: reservedWordsParser, - "//": slashCommentParser, - extends: extendsCellTypeParser - }), - undefined - ) - } - get cellTypeIdCell() { - return this.getWord(0) - } - } - - class enumFromCellTypesParser extends GrammarBackedNode { - get cellPropertyNameCell() { - return this.getWord(0) - } - get cellTypeIdCell() { - return this.getWordsFrom(1) - } - } - - class enumParser extends GrammarBackedNode { - get cellPropertyNameCell() { - return this.getWord(0) - } - get enumOptionCell() { - return this.getWordsFrom(1) - } - } - - class examplesParser extends GrammarBackedNode { - get cellPropertyNameCell() { - return this.getWord(0) - } - get cellExampleCell() { - return this.getWordsFrom(1) - } - } - - class cellMinParser extends GrammarBackedNode { - get cellPropertyNameCell() { - return this.getWord(0) - } - get numericCell() { - return this.getWord(1) - } - } - - class cellMaxParser extends GrammarBackedNode { - get cellPropertyNameCell() { - return this.getWord(0) - } - get numericCell() { - return this.getWord(1) - } - } - - class highlightScopeParser extends GrammarBackedNode { - get propertyKeywordCell() { - return this.getWord(0) - } - get scopeNameCell() { - return this.getWord(1) - } - } - - class rootFlagParser extends GrammarBackedNode { - get propertyKeywordCell() { - return this.getWord(0) - } - } - - class parserDefinitionParser extends GrammarBackedNode { - createParserCombinator() { - return new TreeNode.ParserCombinator( - catchAllErrorParser, - Object.assign(Object.assign({}, super.createParserCombinator()._getFirstWordMapAsObject()), { - boolean: booleanParser, - float: floatParser, - int: intParser, - string: stringParser, - compilesTo: compilesToParser, - extensions: extensionsParser, - version: versionParser, - baseParser: baseParserParser, - catchAllCellType: catchAllCellTypeParser, - cellParser: cellParserParser, - catchAllParser: catchAllParserParser, - cells: cellsParser, - compiler: compilerParser, - description: descriptionParser, - example: exampleParser, - sortTemplate: sortTemplateParser, - extends: extendsParserParser, - frequency: frequencyParser, - inScope: inScopeParser, - javascript: javascriptParser, - crux: cruxParser, - cruxFromId: cruxFromIdParser, - pattern: patternParser, - required: requiredParser, - single: singleParser, - uniqueLine: uniqueLineParser, - uniqueFirstWord: uniqueFirstWordParser, - listDelimiter: listDelimiterParser, - contentKey: contentKeyParser, - childrenKey: childrenKeyParser, - tags: tagsParser, - root: rootFlagParser, - _extendsJsClass: _extendsJsClassParser, - _rootParserJsHeader: _rootParserJsHeaderParser, - "//": slashCommentParser - }), - [{ regex: /^[a-zA-Z0-9_]+Parser$/, parser: parserDefinitionParser }] - ) - } - get parserIdCell() { - return this.getWord(0) - } - } - - class _extendsJsClassParser extends abstractParserRuleParser { - get propertyKeywordCell() { - return this.getWord(0) - } - get anyCell() { - return this.getWord(1) - } - } - - class _rootParserJsHeaderParser extends abstractParserRuleParser { - createParserCombinator() { - return new TreeNode.ParserCombinator(catchAllJavascriptCodeLineParser, undefined, undefined) - } - } - - class regexParser extends GrammarBackedNode { - get cellPropertyNameCell() { - return this.getWord(0) - } - get regexCell() { - return this.getWordsFrom(1) - } - } - - class reservedWordsParser extends GrammarBackedNode { - get cellPropertyNameCell() { - return this.getWord(0) - } - get reservedWordCell() { - return this.getWordsFrom(1) - } - } - - class commentLineParser extends GrammarBackedNode { - get commentCell() { - return this.getWordsFrom(0) - } - } - - class slashCommentParser extends GrammarBackedNode { - createParserCombinator() { - return new TreeNode.ParserCombinator(commentLineParser, undefined, undefined) - } - get commentCell() { - return this.getWordsFrom(0) - } - } - - class extendsCellTypeParser extends GrammarBackedNode { - get propertyKeywordCell() { - return this.getWord(0) - } - get cellTypeIdCell() { - return this.getWord(1) - } - } - - module.exports = grammarParser - grammarParser - - if (!module.parent) new grammarParser(TreeNode.fromDisk(process.argv[2]).toString()).execute() -} diff --git a/node_modules/scrollsdk/products/hakon.nodejs.js b/node_modules/scrollsdk/products/hakon.nodejs.js index c5fb3425df..17ddc50d08 100755 --- a/node_modules/scrollsdk/products/hakon.nodejs.js +++ b/node_modules/scrollsdk/products/hakon.nodejs.js @@ -2,10 +2,10 @@ { const { Utils } = require("./Utils.js") const { TreeNode } = require("./TreeNode.js") - const { HandGrammarProgram } = require("./GrammarLanguage.js") - const { GrammarBackedNode } = require("./GrammarLanguage.js") + const { HandParsersProgram } = require("./Parsers.js") + const { ParserBackedNode } = require("./Parsers.js") - class hakonParser extends GrammarBackedNode { + class hakonParser extends ParserBackedNode { createParserCombinator() { return new TreeNode.ParserCombinator(selectorParser, Object.assign(Object.assign({}, super.createParserCombinator()._getFirstWordMapAsObject()), { comment: commentParser }), undefined) } @@ -18,7 +18,7 @@ .map(child => child.compile()) .join("") } - static cachedHandGrammarProgramRoot = new HandGrammarProgram(`// Cell Parsers + static cachedHandParsersProgramRoot = new HandParsersProgram(`// Cell Parsers anyCell keywordCell commentKeywordCell @@ -51,7 +51,7 @@ commentCell hakonParser root // todo Add variables? - description A prefix Tree Language that compiles to CSS + description A prefix Language that compiles to CSS compilesTo css inScope commentParser catchAllParser selectorParser @@ -121,13 +121,13 @@ selectorParser }\\n\` } cells selectorCell`) - get handGrammarProgram() { - return this.constructor.cachedHandGrammarProgramRoot + get handParsersProgram() { + return this.constructor.cachedHandParsersProgramRoot } static rootParser = hakonParser } - class propertyParser extends GrammarBackedNode { + class propertyParser extends ParserBackedNode { createParserCombinator() { return new TreeNode.ParserCombinator(errorParser, undefined, undefined) } @@ -150,7 +150,7 @@ selectorParser } } - class errorParser extends GrammarBackedNode { + class errorParser extends ParserBackedNode { createParserCombinator() { return new TreeNode.ParserCombinator(errorParser, undefined, undefined) } @@ -162,7 +162,7 @@ selectorParser } } - class commentParser extends GrammarBackedNode { + class commentParser extends ParserBackedNode { createParserCombinator() { return new TreeNode.ParserCombinator(commentParser, undefined, undefined) } @@ -174,7 +174,7 @@ selectorParser } } - class selectorParser extends GrammarBackedNode { + class selectorParser extends ParserBackedNode { createParserCombinator() { return new TreeNode.ParserCombinator( selectorParser, diff --git a/node_modules/scroll-cli/node_modules/scrollsdk/products/grammar.nodejs.js b/node_modules/scrollsdk/products/parsers.nodejs.js similarity index 93% rename from node_modules/scroll-cli/node_modules/scrollsdk/products/grammar.nodejs.js rename to node_modules/scrollsdk/products/parsers.nodejs.js index c67c37d418..4711effdb4 100755 --- a/node_modules/scroll-cli/node_modules/scrollsdk/products/grammar.nodejs.js +++ b/node_modules/scrollsdk/products/parsers.nodejs.js @@ -2,10 +2,10 @@ { const { Utils } = require("./Utils.js") const { TreeNode } = require("./TreeNode.js") - const { HandGrammarProgram } = require("./GrammarLanguage.js") - const { GrammarBackedNode } = require("./GrammarLanguage.js") + const { HandParsersProgram } = require("./Parsers.js") + const { ParserBackedNode } = require("./Parsers.js") - class grammarParser extends GrammarBackedNode { + class parsersParser extends ParserBackedNode { createParserCombinator() { return new TreeNode.ParserCombinator(catchAllErrorParser, Object.assign(Object.assign({}, super.createParserCombinator()._getFirstWordMapAsObject()), { "//": slashCommentParser }), [ { regex: /^$/, parser: blankLineParser }, @@ -13,8 +13,8 @@ { regex: /^[a-zA-Z0-9_]+Parser$/, parser: parserDefinitionParser } ]) } - static cachedHandGrammarProgramRoot = - new HandGrammarProgram(`// todo Add imports parsers, along with source maps, so we can correctly support grammars split across multiple files, and better enable grammars from compositions of reusable bits? + static cachedHandParsersProgramRoot = + new HandParsersProgram(`// todo Add imports parsers, along with source maps, so we can correctly support parsers split across multiple files, and better enable parsers from compositions of reusable bits? // todo Do error checking for if you have a firstwordCellType, cells, and/or catchAllCellType with same name. // todo Add enumOption root level type? // todo compile cells. add javascript property. move getRunTimeEnumOptions to cells. @@ -114,12 +114,12 @@ commentCell highlightScope comment // Line Parsers -grammarParser +parsersParser root - description Grammar is a Tree Language for creating new Tree Languages. By creating a grammar file you get a parser, a type checker, syntax highlighting, autocomplete, a compiler, and virtual machine for executing your new language. Grammar uses both postfix and prefix language features. + description Parsers is a language for creating new languages on top of Scroll Notation. By creating a parsers file you get a parser, a type checker, syntax highlighting, autocomplete, a compiler, and virtual machine for executing your new language. Parsers uses both postfix and prefix language features. catchAllParser catchAllErrorParser - extensions grammar gram - example A grammar that parses anything: + extensions parsers gram + example A parsers that parses anything: latinParser root catchAllParser anyParser @@ -128,7 +128,7 @@ grammarParser version 5.0.0 inScope slashCommentParser blankLineParser cellTypeDefinitionParser parserDefinitionParser blankLineParser - description Blank lines are OK in Grammar. + description Blank lines are OK in Parsers. cells blankCell pattern ^$ tags doNotSynthesize @@ -431,19 +431,19 @@ extendsCellTypeParser // todo Add mixin support in addition to/in place of extends? cells propertyKeywordCell cellTypeIdCell single`) - get handGrammarProgram() { - return this.constructor.cachedHandGrammarProgramRoot + get handParsersProgram() { + return this.constructor.cachedHandParsersProgramRoot } - static rootParser = grammarParser + static rootParser = parsersParser } - class blankLineParser extends GrammarBackedNode { + class blankLineParser extends ParserBackedNode { get blankCell() { return this.getWord(0) } } - class abstractCompilerRuleParser extends GrammarBackedNode { + class abstractCompilerRuleParser extends ParserBackedNode { get propertyKeywordCell() { return this.getWord(0) } @@ -464,7 +464,7 @@ extendsCellTypeParser class joinChildrenWithParser extends abstractCompilerRuleParser {} - class abstractConstantParser extends GrammarBackedNode { + class abstractConstantParser extends ParserBackedNode { get propertyKeywordCell() { return this.getWord(0) } @@ -521,7 +521,7 @@ extendsCellTypeParser } } - class abstractParserRuleParser extends GrammarBackedNode { + class abstractParserRuleParser extends ParserBackedNode { get propertyKeywordCell() { return this.getWord(0) } @@ -738,13 +738,13 @@ extendsCellTypeParser } } - class catchAllErrorParser extends GrammarBackedNode { + class catchAllErrorParser extends ParserBackedNode { getErrors() { return this._getErrorParserErrors() } } - class catchAllExampleLineParser extends GrammarBackedNode { + class catchAllExampleLineParser extends ParserBackedNode { createParserCombinator() { return new TreeNode.ParserCombinator(catchAllExampleLineParser, undefined, undefined) } @@ -756,7 +756,7 @@ extendsCellTypeParser } } - class catchAllJavascriptCodeLineParser extends GrammarBackedNode { + class catchAllJavascriptCodeLineParser extends ParserBackedNode { createParserCombinator() { return new TreeNode.ParserCombinator(catchAllJavascriptCodeLineParser, undefined, undefined) } @@ -765,7 +765,7 @@ extendsCellTypeParser } } - class catchAllMultilineStringConstantParser extends GrammarBackedNode { + class catchAllMultilineStringConstantParser extends ParserBackedNode { createParserCombinator() { return new TreeNode.ParserCombinator(catchAllMultilineStringConstantParser, undefined, undefined) } @@ -777,7 +777,7 @@ extendsCellTypeParser } } - class cellTypeDefinitionParser extends GrammarBackedNode { + class cellTypeDefinitionParser extends ParserBackedNode { createParserCombinator() { return new TreeNode.ParserCombinator( undefined, @@ -802,7 +802,7 @@ extendsCellTypeParser } } - class enumFromCellTypesParser extends GrammarBackedNode { + class enumFromCellTypesParser extends ParserBackedNode { get cellPropertyNameCell() { return this.getWord(0) } @@ -811,7 +811,7 @@ extendsCellTypeParser } } - class enumParser extends GrammarBackedNode { + class enumParser extends ParserBackedNode { get cellPropertyNameCell() { return this.getWord(0) } @@ -820,7 +820,7 @@ extendsCellTypeParser } } - class examplesParser extends GrammarBackedNode { + class examplesParser extends ParserBackedNode { get cellPropertyNameCell() { return this.getWord(0) } @@ -829,7 +829,7 @@ extendsCellTypeParser } } - class cellMinParser extends GrammarBackedNode { + class cellMinParser extends ParserBackedNode { get cellPropertyNameCell() { return this.getWord(0) } @@ -838,7 +838,7 @@ extendsCellTypeParser } } - class cellMaxParser extends GrammarBackedNode { + class cellMaxParser extends ParserBackedNode { get cellPropertyNameCell() { return this.getWord(0) } @@ -847,7 +847,7 @@ extendsCellTypeParser } } - class highlightScopeParser extends GrammarBackedNode { + class highlightScopeParser extends ParserBackedNode { get propertyKeywordCell() { return this.getWord(0) } @@ -856,13 +856,13 @@ extendsCellTypeParser } } - class rootFlagParser extends GrammarBackedNode { + class rootFlagParser extends ParserBackedNode { get propertyKeywordCell() { return this.getWord(0) } } - class parserDefinitionParser extends GrammarBackedNode { + class parserDefinitionParser extends ParserBackedNode { createParserCombinator() { return new TreeNode.ParserCombinator( catchAllErrorParser, @@ -926,7 +926,7 @@ extendsCellTypeParser } } - class regexParser extends GrammarBackedNode { + class regexParser extends ParserBackedNode { get cellPropertyNameCell() { return this.getWord(0) } @@ -935,7 +935,7 @@ extendsCellTypeParser } } - class reservedWordsParser extends GrammarBackedNode { + class reservedWordsParser extends ParserBackedNode { get cellPropertyNameCell() { return this.getWord(0) } @@ -944,13 +944,13 @@ extendsCellTypeParser } } - class commentLineParser extends GrammarBackedNode { + class commentLineParser extends ParserBackedNode { get commentCell() { return this.getWordsFrom(0) } } - class slashCommentParser extends GrammarBackedNode { + class slashCommentParser extends ParserBackedNode { createParserCombinator() { return new TreeNode.ParserCombinator(commentLineParser, undefined, undefined) } @@ -959,7 +959,7 @@ extendsCellTypeParser } } - class extendsCellTypeParser extends GrammarBackedNode { + class extendsCellTypeParser extends ParserBackedNode { get propertyKeywordCell() { return this.getWord(0) } @@ -968,8 +968,8 @@ extendsCellTypeParser } } - module.exports = grammarParser - grammarParser + module.exports = parsersParser + parsersParser - if (!module.parent) new grammarParser(TreeNode.fromDisk(process.argv[2]).toString()).execute() + if (!module.parent) new parsersParser(TreeNode.fromDisk(process.argv[2]).toString()).execute() } diff --git a/node_modules/scrollsdk/products/stamp.nodejs.js b/node_modules/scrollsdk/products/stamp.nodejs.js index 05ee3567e6..02bd59fcaf 100755 --- a/node_modules/scrollsdk/products/stamp.nodejs.js +++ b/node_modules/scrollsdk/products/stamp.nodejs.js @@ -2,10 +2,10 @@ { const { Utils } = require("./Utils.js") const { TreeNode } = require("./TreeNode.js") - const { HandGrammarProgram } = require("./GrammarLanguage.js") - const { GrammarBackedNode } = require("./GrammarLanguage.js") + const { HandParsersProgram } = require("./Parsers.js") + const { ParserBackedNode } = require("./Parsers.js") - class stampParser extends GrammarBackedNode { + class stampParser extends ParserBackedNode { createParserCombinator() { return new TreeNode.ParserCombinator(errorParser, Object.assign(Object.assign({}, super.createParserCombinator()._getFirstWordMapAsObject()), { "#!": hashbangParser, file: fileParser, folder: folderParser }), undefined) } @@ -80,7 +80,7 @@ const pathStartIndex = rootFolderPath.length + 1 return files.map(file => fileFn(file, file.substr(pathStartIndex))).join("\n") } - static cachedHandGrammarProgramRoot = new HandGrammarProgram(`// todo File permissions + static cachedHandParsersProgramRoot = new HandParsersProgram(`// todo File permissions // Cell parsers anyCell @@ -103,7 +103,7 @@ keywordCell // Line parsers stampParser root - description A prefix Tree Language for creating distributable text template files that expand to folders and files. + description A prefix Language for creating distributable text template files that expand to folders and files. catchAllParser errorParser javascript async executeSeries(parentDir) { @@ -235,13 +235,13 @@ folderParser fs.mkdirSync(path, {recursive: true}) } crux folder`) - get handGrammarProgram() { - return this.constructor.cachedHandGrammarProgramRoot + get handParsersProgram() { + return this.constructor.cachedHandParsersProgramRoot } static rootParser = stampParser } - class hashbangParser extends GrammarBackedNode { + class hashbangParser extends ParserBackedNode { get commentCell() { return this.getWord(0) } @@ -250,7 +250,7 @@ folderParser } } - class catchAllAnyLineParser extends GrammarBackedNode { + class catchAllAnyLineParser extends ParserBackedNode { createParserCombinator() { return new TreeNode.ParserCombinator(catchAllAnyLineParser, undefined, undefined) } @@ -262,7 +262,7 @@ folderParser } } - class dataParser extends GrammarBackedNode { + class dataParser extends ParserBackedNode { createParserCombinator() { return new TreeNode.ParserCombinator(catchAllAnyLineParser, undefined, undefined) } @@ -271,19 +271,19 @@ folderParser } } - class errorParser extends GrammarBackedNode { + class errorParser extends ParserBackedNode { getErrors() { return this._getErrorParserErrors() } } - class executableParser extends GrammarBackedNode { + class executableParser extends ParserBackedNode { get keywordCell() { return this.getWord(0) } } - class fileParser extends GrammarBackedNode { + class fileParser extends ParserBackedNode { createParserCombinator() { return new TreeNode.ParserCombinator(undefined, Object.assign(Object.assign({}, super.createParserCombinator()._getFirstWordMapAsObject()), { data: dataParser, executable: executableParser }), undefined) } @@ -313,7 +313,7 @@ folderParser } } - class folderParser extends GrammarBackedNode { + class folderParser extends ParserBackedNode { get keywordCell() { return this.getWord(0) } diff --git a/node_modules/scrollsdk/products/stump.nodejs.js b/node_modules/scrollsdk/products/stump.nodejs.js index 9c59257b2b..24d61f7be0 100755 --- a/node_modules/scrollsdk/products/stump.nodejs.js +++ b/node_modules/scrollsdk/products/stump.nodejs.js @@ -2,10 +2,10 @@ { const { Utils } = require("./Utils.js") const { TreeNode } = require("./TreeNode.js") - const { HandGrammarProgram } = require("./GrammarLanguage.js") - const { GrammarBackedNode } = require("./GrammarLanguage.js") + const { HandParsersProgram } = require("./Parsers.js") + const { ParserBackedNode } = require("./Parsers.js") - class stumpParser extends GrammarBackedNode { + class stumpParser extends ParserBackedNode { createParserCombinator() { return new TreeNode.ParserCombinator( errorParser, @@ -133,7 +133,7 @@ _getHtmlJoinByCharacter() { return "" } - static cachedHandGrammarProgramRoot = new HandGrammarProgram(`// Cell parsers + static cachedHandParsersProgramRoot = new HandParsersProgram(`// Cell parsers anyCell keywordCell emptyCell @@ -161,7 +161,7 @@ bernKeywordCell // Line parsers stumpParser root - description A prefix Tree Language that compiles to HTML. + description A prefix Language that compiles to HTML. catchAllParser errorParser inScope htmlTagParser blankLineParser example @@ -402,13 +402,13 @@ bernParser } getTextContent() {return ""} cells bernKeywordCell`) - get handGrammarProgram() { - return this.constructor.cachedHandGrammarProgramRoot + get handParsersProgram() { + return this.constructor.cachedHandParsersProgramRoot } static rootParser = stumpParser } - class blankLineParser extends GrammarBackedNode { + class blankLineParser extends ParserBackedNode { get emptyCell() { return this.getWord(0) } @@ -420,7 +420,7 @@ bernParser } } - class htmlTagParser extends GrammarBackedNode { + class htmlTagParser extends ParserBackedNode { createParserCombinator() { return new TreeNode.ParserCombinator( undefined, @@ -879,7 +879,7 @@ bernParser } } - class errorParser extends GrammarBackedNode { + class errorParser extends ParserBackedNode { getErrors() { return this._getErrorParserErrors() } @@ -894,7 +894,7 @@ bernParser } } - class htmlAttributeParser extends GrammarBackedNode { + class htmlAttributeParser extends ParserBackedNode { createParserCombinator() { return new TreeNode.ParserCombinator(errorParser, undefined, undefined) } @@ -927,7 +927,7 @@ bernParser } } - class lineOfHtmlContentParser extends GrammarBackedNode { + class lineOfHtmlContentParser extends ParserBackedNode { createParserCombinator() { return new TreeNode.ParserCombinator(lineOfHtmlContentParser, undefined, undefined) } @@ -942,7 +942,7 @@ bernParser } } - class bernParser extends GrammarBackedNode { + class bernParser extends ParserBackedNode { createParserCombinator() { return new TreeNode.ParserCombinator(lineOfHtmlContentParser, undefined, undefined) } diff --git a/node_modules/scrollsdk/products/swarm.nodejs.js b/node_modules/scrollsdk/products/swarm.nodejs.js index 3e71cd6152..56585946e8 100755 --- a/node_modules/scrollsdk/products/swarm.nodejs.js +++ b/node_modules/scrollsdk/products/swarm.nodejs.js @@ -2,10 +2,10 @@ { const { Utils } = require("./Utils.js") const { TreeNode } = require("./TreeNode.js") - const { HandGrammarProgram } = require("./GrammarLanguage.js") - const { GrammarBackedNode } = require("./GrammarLanguage.js") + const { HandParsersProgram } = require("./Parsers.js") + const { ParserBackedNode } = require("./Parsers.js") - class swarmParser extends GrammarBackedNode { + class swarmParser extends ParserBackedNode { createParserCombinator() { return new TreeNode.ParserCombinator( errorParser, @@ -31,7 +31,7 @@ files[filepath] = testBlocks return files } - static cachedHandGrammarProgramRoot = new HandGrammarProgram(`// todo Add comments? + static cachedHandParsersProgramRoot = new HandParsersProgram(`// todo Add comments? // todo Make run in browser // todo Add print or tracer type of intermediate element. debugger? @@ -77,7 +77,7 @@ typeOfOptionCell // Line parsers swarmParser root - description A prefix Tree Language for unit testing of classes. + description A prefix Language for unit testing of classes. inScope hashbangParser arrangeParser abstractTestBlockParser catchAllParser errorParser javascript @@ -360,13 +360,13 @@ todoParser catchAllParser todoParser crux todo cells todoKeywordCell`) - get handGrammarProgram() { - return this.constructor.cachedHandGrammarProgramRoot + get handParsersProgram() { + return this.constructor.cachedHandParsersProgramRoot } static rootParser = swarmParser } - class abstractAssertionParser extends GrammarBackedNode { + class abstractAssertionParser extends ParserBackedNode { get assertionKeywordCell() { return this.getWord(0) } @@ -476,7 +476,7 @@ todoParser } } - class abstractArrangeFlagParser extends GrammarBackedNode { + class abstractArrangeFlagParser extends ParserBackedNode { get keywordCell() { return this.getWord(0) } @@ -484,7 +484,7 @@ todoParser class arrangeAsyncParser extends abstractArrangeFlagParser {} - class arrangeRequireParser extends GrammarBackedNode { + class arrangeRequireParser extends ParserBackedNode { get keywordCell() { return this.getWord(0) } @@ -498,7 +498,7 @@ todoParser class arrangeStaticParser extends abstractArrangeFlagParser {} - class abstractTestBlockParser extends GrammarBackedNode { + class abstractTestBlockParser extends ParserBackedNode { createParserCombinator() { return new TreeNode.ParserCombinator(actParser, Object.assign(Object.assign({}, super.createParserCombinator()._getFirstWordMapAsObject()), { arrange: arrangeParser }), undefined) } @@ -550,7 +550,7 @@ todoParser } } - class hashbangParser extends GrammarBackedNode { + class hashbangParser extends ParserBackedNode { get hashBangKeywordCell() { return this.getWord(0) } @@ -562,7 +562,7 @@ todoParser } } - class arrangeParser extends GrammarBackedNode { + class arrangeParser extends ParserBackedNode { createParserCombinator() { return new TreeNode.ParserCombinator( undefined, @@ -605,7 +605,7 @@ todoParser executeSync() {} } - class withParagraphParser extends GrammarBackedNode { + class withParagraphParser extends ParserBackedNode { createParserCombinator() { return new TreeNode.ParserCombinator(paragraphLineParser, undefined, undefined) } @@ -615,7 +615,7 @@ todoParser executeSync() {} } - class actParser extends GrammarBackedNode { + class actParser extends ParserBackedNode { createParserCombinator() { return new TreeNode.ParserCombinator( actParser, @@ -665,7 +665,7 @@ todoParser } } - class constructWithParagraphParser extends GrammarBackedNode { + class constructWithParagraphParser extends ParserBackedNode { createParserCombinator() { return new TreeNode.ParserCombinator(paragraphLineParser, undefined, undefined) } @@ -675,13 +675,13 @@ todoParser executeSync() {} } - class errorParser extends GrammarBackedNode { + class errorParser extends ParserBackedNode { getErrors() { return this._getErrorParserErrors() } } - class paragraphLineParser extends GrammarBackedNode { + class paragraphLineParser extends ParserBackedNode { createParserCombinator() { return new TreeNode.ParserCombinator(paragraphLineParser, undefined, undefined) } @@ -693,7 +693,7 @@ todoParser } } - class todoParser extends GrammarBackedNode { + class todoParser extends ParserBackedNode { createParserCombinator() { return new TreeNode.ParserCombinator(todoParser, undefined, undefined) } diff --git a/node_modules/scrollsdk/readme.scroll b/node_modules/scrollsdk/readme.scroll index a006ae4faf..f0915b47a1 100644 --- a/node_modules/scrollsdk/readme.scroll +++ b/node_modules/scrollsdk/readme.scroll @@ -9,7 +9,7 @@ Scroll Homepage https://scroll.pub Scroll Notation Sandbox https://sdk.scroll.pub/sandbox -Scroll Designer +Parser Designer https://sdk.scroll.pub/designer ScrollSDK https://github.com/breck7/scrollsdk @@ -20,7 +20,7 @@ Scroll Notation FAQ SDK Release Notes https://sdk.scroll.pub/releaseNotes.html Scroll Subreddit - https://reddit.com/r/treenotation + https://www.reddit.com/r/ScrollLang Ohayo - A data science studio powered by Scroll Notation https://github.com/breck7/ohayo ScrollSDK UnitTests @@ -32,12 +32,12 @@ ScrollSDK PerfTests The ScrollSDK is for people who want to build on top of Scroll. ? How do I build Scroll Parsers? -You can try the Grammar tutorial. - link grammarTutorial.html Grammar tutorial +You can try the Parsers tutorial. + link parsersTutorial.html Parsers tutorial # Writing Scroll Parsers -The ScrollSDK contains a language for building Scroll Parsers temporarily called "Grammar". You can write new Grammar files to extend your version of Scroll. By creating ScrollParsers with Grammar file you get a parser, a type checker, syntax highlighting, autocomplete, a compiler, and virtual machine for executing your version of Scroll. The ScrollSDK also includes a simple web IDE for writing Scroll Parsers called Scroll Designer. - https://sdk.scroll.pub/designer Scroll Designer +The ScrollSDK contains a language for building Scroll Parsers. You can write new Parsers to extend your version of Scroll. By creating Parsers with the SDK you get a parser, a type checker, syntax highlighting, autocomplete, a compiler, and virtual machine for executing your version of Scroll. The ScrollSDK also includes a simple web IDE for writing Scroll Parsers called Parser Designer. + https://sdk.scroll.pub/designer Parser Designer At this point in time, to make your Scroll Parsers do very useful things, you also need to use another language that you know. The ScrollSDK lets you create new languages using just Scroll or Scroll + Javascript. Scroll Parsers can include code from any programming language, not just Javascript. Though at the moment only Scroll + Javascript is supported by Breck's Lab. https://breckyunits.com/lab.html Breck's Lab @@ -61,11 +61,11 @@ code const tree = new TreeNode("hello world") console.log(tree.asString) -# Basic Scroll Notation Library + Grammar for the browser: +# Basic Scroll Notation Library + Parsers for the browser: code - + ## Scroll Notation Sandbox web app for exploring base Scroll Notation code @@ -73,7 +73,7 @@ code npm run local open http://localhost:3333/ -## Scroll Designer web app for building new Scroll Parsers +## Parser Designer web app for building new Scroll Parsers code npm install . npm run local @@ -103,14 +103,14 @@ All breaking changes are mentioned in the releaseNotes. We follow semantic versi If you build a Scroll Notation library/SDK in another language, let us know and we'll add a link. If you are working on a Scroll Notation library in a new host language, feel free to post an issue or ask for help in the Scroll subreddit. - https://reddit.com/r/scroll-lang subreddit + https://reddit.com/r/ScrollLang subreddit ## How to bump versions code npm run updateVersion NEW_NUMBER # Former Name -Scroll Notation was originally called Tree Notation. Scroll is the name of combined languages which were previously called Grammar and Scrolldown. +Scroll Notation was originally called Tree Notation. Scroll Parsers was originally called Grammar. # Alternatives Considered This is the first Scroll library in existence, so there were no alternative implementations. Note and Space were predecessors to Scroll Notation. If a better alternative low level notation to Scroll Notation is possible, it has yet to be discovered. diff --git a/package-lock.json b/package-lock.json index 003e743c66..4695dfeadc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,8 +9,8 @@ "version": "2.0.0", "devDependencies": { "lodash": "^4.17.21", - "scroll-cli": "^96.0.0", - "scrollsdk": "^78.0.0" + "scroll-cli": "^97.0.0", + "scrollsdk": "^80.0.0" } }, "node_modules/dayjs": { @@ -65,16 +65,16 @@ } }, "node_modules/scroll-cli": { - "version": "96.0.0", - "resolved": "https://registry.npmjs.org/scroll-cli/-/scroll-cli-96.0.0.tgz", - "integrity": "sha512-y8L/GKgVr9WteNWpObe26dStgj/tmS9HUDlW/DUceiRRtgt1j1QSQFk1eE7Bh5kMpalUPPJoLpvs7e7M5ONguA==", + "version": "97.0.0", + "resolved": "https://registry.npmjs.org/scroll-cli/-/scroll-cli-97.0.0.tgz", + "integrity": "sha512-TXn7S1aP6ulhHxn8X1RJ6W1BiYQwQl65IKajMlfe0MHlgAq5ghQ9f1SlXkdkrI8M7qnF+XjOJCD7pAt+ZnMqgg==", "dev": true, "dependencies": { "dayjs": "^1.11.7", "image-size": "^1.0.2", "lodash": "^4.17.21", "minimist": "^1.2.5", - "scrollsdk": "^79.0.0" + "scrollsdk": "^80.0.0" }, "bin": { "scroll": "scroll.js", @@ -84,19 +84,10 @@ "node": ">=16.0" } }, - "node_modules/scroll-cli/node_modules/scrollsdk": { - "version": "79.0.0", - "resolved": "https://registry.npmjs.org/scrollsdk/-/scrollsdk-79.0.0.tgz", - "integrity": "sha512-Eej9BCNNkgp3zo59m5NV+FAcIxpizjIEENvPq9wn/PLoLcNQvIGHirig5fqJyk6AwNaQZPbBE3g7gT6AIL+i5g==", - "dev": true, - "engines": { - "node": ">=16.0" - } - }, "node_modules/scrollsdk": { - "version": "78.0.0", - "resolved": "https://registry.npmjs.org/scrollsdk/-/scrollsdk-78.0.0.tgz", - "integrity": "sha512-p36V/A0xQ2/jmQyHoqh5RVm5KeogamYp5njEmcTKLEMkezJFMCgM1S9a5xx1mZka8kT/VxWwRPBuDm3j5tuLAg==", + "version": "80.0.0", + "resolved": "https://registry.npmjs.org/scrollsdk/-/scrollsdk-80.0.0.tgz", + "integrity": "sha512-DZ+ZM+WJx85vsWYJWJgsdr+shBDV9bvv4aaJ71fGtPH0HlzRGmC37cgv240DeWblhrNeSR0cINrnLeyc80aM5A==", "dev": true, "engines": { "node": ">=16.0" diff --git a/package.json b/package.json index 4a18217f1a..2cb5f67a49 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "homepage": "https://cancerdb.com", "devDependencies": { "lodash": "^4.17.21", - "scroll-cli": "^96.0.0", - "scrollsdk": "^78.0.0" + "scroll-cli": "^97.0.0", + "scrollsdk": "^80.0.0" } } diff --git a/pages/about.html b/pages/about.html index 6b06149d51..85310ea548 100644 --- a/pages/about.html +++ b/pages/about.html @@ -11,12 +11,12 @@ About - + - + @@ -394,7 +394,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/pages/acknowledgements.html b/pages/acknowledgements.html index c25c678218..f8db659505 100644 --- a/pages/acknowledgements.html +++ b/pages/acknowledgements.html @@ -11,12 +11,12 @@ Acknowledgements - + - + @@ -387,7 +387,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/pages/explore.html b/pages/explore.html index a97e0d42bd..eadd5758aa 100644 --- a/pages/explore.html +++ b/pages/explore.html @@ -11,12 +11,12 @@ Explore CancerDB - + - + @@ -10553,7 +10553,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/posts/cancer-heatmaps.html b/posts/cancer-heatmaps.html index ee8a3eb1bc..937fcc3d45 100644 --- a/posts/cancer-heatmaps.html +++ b/posts/cancer-heatmaps.html @@ -3,12 +3,12 @@ Cancer in the United States - + - + @@ -415,7 +415,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/posts/cat-food.html b/posts/cat-food.html index 8f303033bf..73fdc85c7a 100644 --- a/posts/cat-food.html +++ b/posts/cat-food.html @@ -3,12 +3,12 @@ Cat food - + - + @@ -377,7 +377,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/posts/commercials.html b/posts/commercials.html index df91fb2277..d40533e2bc 100644 --- a/posts/commercials.html +++ b/posts/commercials.html @@ -3,12 +3,12 @@ CancerDB Commercials - + - + @@ -369,7 +369,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/posts/feed.xml b/posts/feed.xml index a70d075063..f4e018c99e 100644 --- a/posts/feed.xml +++ b/posts/feed.xml @@ -4,7 +4,7 @@ https://cancerdb.com/ CancerDB: Datasets about Cancer - Tue, 18 Jun 2024 17:52:08 +0000 + Wed, 19 Jun 2024 18:26:44 +0000 en-us diff --git a/posts/funQuiz.html b/posts/funQuiz.html index 743c2ee106..de0f9e5554 100644 --- a/posts/funQuiz.html +++ b/posts/funQuiz.html @@ -3,12 +3,12 @@ Fun quiz - + - + @@ -377,7 +377,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/posts/hawaii-cancer-moonshot.html b/posts/hawaii-cancer-moonshot.html index eb513d58ea..b49f5f21ed 100644 --- a/posts/hawaii-cancer-moonshot.html +++ b/posts/hawaii-cancer-moonshot.html @@ -3,12 +3,12 @@ The Hawai'i #CancerMoonshot - + - + @@ -410,7 +410,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/posts/holey-moley.html b/posts/holey-moley.html index 95579fb137..a4e47fd1a5 100644 --- a/posts/holey-moley.html +++ b/posts/holey-moley.html @@ -3,12 +3,12 @@ Holey Moley - + - + @@ -377,7 +377,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/posts/humor.html b/posts/humor.html index ee91ea4ebe..8fc51e83b3 100644 --- a/posts/humor.html +++ b/posts/humor.html @@ -3,12 +3,12 @@ CancerDB Commercials - + - + @@ -430,7 +430,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/posts/index.html b/posts/index.html index 6976b4ae2e..2cbd07b2d6 100644 --- a/posts/index.html +++ b/posts/index.html @@ -3,12 +3,12 @@ The CancerDB Blog - + - + @@ -384,7 +384,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/posts/moonbathing.html b/posts/moonbathing.html index e0b5d7cb85..dc429d0e3e 100644 --- a/posts/moonbathing.html +++ b/posts/moonbathing.html @@ -3,12 +3,12 @@ Moonbathing - + - + @@ -377,7 +377,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/posts/natureCalls.html b/posts/natureCalls.html index 3e3be231c4..1f36e55a89 100644 --- a/posts/natureCalls.html +++ b/posts/natureCalls.html @@ -3,12 +3,12 @@ Nature calls - + - + @@ -377,7 +377,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/posts/prostateExams.html b/posts/prostateExams.html index 3f266e79f2..38e37ce7f2 100644 --- a/posts/prostateExams.html +++ b/posts/prostateExams.html @@ -3,12 +3,12 @@ Prostate Exams - + - + @@ -377,7 +377,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/posts/sayCheese.html b/posts/sayCheese.html index 7237126414..e5d76e456f 100644 --- a/posts/sayCheese.html +++ b/posts/sayCheese.html @@ -3,12 +3,12 @@ Say cheese - + - + @@ -377,7 +377,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll diff --git a/readme.html b/readme.html index 95485f805d..5dddddb4db 100644 --- a/readme.html +++ b/readme.html @@ -29,7 +29,7 @@ npm run build

To explore this repo

-

The most important folder is concepts, which contains a file for each concept. The folder measures contains the grammar files (schema) for the ScrollSet.

+

The most important folder is concepts, which contains a file for each concept. The folder measures contains the parsers files (schema) for the ScrollSet.

To cite CancerDB

CancerDB content is published to the public domain and you can use it freely. If needed, here are 3 options for citing CancerDB:

diff --git a/readme.scroll b/readme.scroll index 7b712ca96f..bb90e130a6 100644 --- a/readme.scroll +++ b/readme.scroll @@ -31,7 +31,7 @@ code npm run build ## To explore this repo -The most important folder is `concepts`, which contains a file for each concept. The folder `measures` contains the grammar files (schema) for the ScrollSet. +The most important folder is `concepts`, which contains a file for each concept. The folder `measures` contains the parsers files (schema) for the ScrollSet. ## To cite CancerDB CancerDB content is published to the public domain and you can use it freely. If needed, here are 3 options for citing CancerDB: diff --git a/search.html b/search.html index 04e3233e1b..1e1366e5b0 100644 --- a/search.html +++ b/search.html @@ -3,12 +3,12 @@ Search CancerDB - + - + @@ -9096,7 +9096,7 @@ · Acknowledgements · - Day 652 + Day 653 · Part of the World Wide Scroll