Peripartum Cardiomyopathy
"peripartum cardiomyopathy"
peripartum cardiomyopathy

Diagnostic Image: This composite shows three Cardiac Magnetic Resonance (CMR) images of a patient with peripartum cardiomyopathy. (a) Cine long-axis four-chamber view in an end-diastolic frame, demonstrating a mildly dilated left ventricular (LV) cavity. (b) Short-axis view using late gadolinium enhancement (LGE) technique, revealing a clear area of mid-wall enhancement in the basal inferolateral wall (white arrow). (c) Three-chamber view further confirming the presence of mid-wall LGE in the basal inferolateral wall (white arrow). The pattern of LGE is non-ischemic (mid-wall rather than subendocardial or transmural), which is a key educational feature for distinguishing peripartum cardiomyopathy or myocarditis from coronary artery disease. This visual set illustrates the role of CMR in identifying myocardial fibrosis and assessing LV remodeling in peripartum heart failure cases, which has significant prognostic implications for recovery and future pregnancies.

Diagnostic Image: Side-by-side comparison of cardiovascular magnetic resonance (CMR) imaging in a four-chamber view. The left panel demonstrates the heart in end-diastole, and the right panel demonstrates end-systole. The imaging highlights structural and functional abnormalities of the right ventricular (RV) free wall. White arrows point to multiple discrete aneurysmal outpouchings and areas of focal dyskinesia along the RV free wall, which become more prominent during systolic contraction in the right panel. An apical aneurysm of the left ventricle is also visible. These features are clinically significant for the assessment of cardiomyopathies, specifically suggesting an overlap between Peripartum Cardiomyopathy (PPCM) and Arrhythmogenic Right Ventricular Cardiomyopathy (ARVC). The image serves as an educational tool for identifying segmental wall motion abnormalities and structural remodeling in complex cardiovascular disease.

This diagnostic ultrasound image shows a grayscale transthoracic echocardiogram (TTE) in the apical four-chamber (A4C) view. The image demonstrates a significantly dilated and globular left ventricle (LV), which has lost its normal elliptical shape, indicative of dilated cardiomyopathy. All four cardiac chambers are visible: the left ventricle, right ventricle, left atrium, and right atrium. The left ventricle appears disproportionately large compared to the right-sided chambers, and there is evidence of global hypokinesia suggested by the myocardial wall appearance. The interventricular septum and mitral valve apparatus are visible, though the valve leaflets appear stretched due to ventricular remodeling. This clinical finding is characteristic of severe systolic dysfunction, such as peripartum cardiomyopathy, consistent with a reduced ejection fraction. A synchronized ECG tracing is visible in the lower-left corner for timing the cardiac cycle during the imaging study.


Make a presentation on peripartum cardiomyopathy
ls -la /tmp/workspace/
mkdir -p /tmp/workspace/ppcm-ppt/assets /tmp/workspace/ppcm-ppt/output && cd /tmp/workspace/ppcm-ppt && python /tmp/skills/shared/scripts/fetch_images.py "https://cdn.orris.care/cdss_images/pmc_clinical_VQA_13184dd474c9764ad9d2546824a0c62b7b925a997939cf4d2e4f2d0a7548fd85.jpg" "https://cdn.orris.care/cdss_images/pmc_clinical_VQA_3688b3545ca9c29e7a1da2830a40120813d60f7296bc5ade361203573d470401.jpg" > assets/imgs.json; python -c " import json,base64 from PIL import Image from io import BytesIO d=json.load(open('assets/imgs.json')) for i,x in enumerate(d): print(x['error'], x['base64'][:30] if x['base64'] else None) if x['base64']: raw=base64.b64decode(x['base64'].split('base64,')[1]); open(f'assets/img{i}.jpg','wb').write(raw); print(Image.open(BytesIO(raw)).size) "
~/ppcm-ppt/src/build.py
from pptx import Presentation
from pptx.util import Inches, Pt
from pptx.dml.color import RGBColor
from pptx.enum.text import PP_ALIGN, MSO_ANCHOR
from pptx.enum.shapes import MSO_SHAPE
NAVY = RGBColor(0x14, 0x23, 0x3F)
ROSE = RGBColor(0xC2, 0x3B, 0x5A)
LIGHT = RGBColor(0xF6, 0xF3, 0xF1)
GREY = RGBColor(0x55, 0x5B, 0x66)
WHITE = RGBColor(0xFF, 0xFF, 0xFF)
SOFT = RGBColor(0xFB, 0xE9, 0xED)
FONT = "Calibri"
prs = Presentation()
prs.slide_width = Inches(13.333)
prs.slide_height = Inches(7.5)
BLANK = prs.slide_layouts[6]
def rect(s, x, y, w, h, fill, shape=MSO_SHAPE.RECTANGLE):
r = s.shapes.add_shape(shape, Inches(x), Inches(y), Inches(w), Inches(h))
r.fill.solid()
r.fill.fore_color.rgb = fill
r.line.fill.background()
r.shadow.inherit = False
return r
def text(s, x, y, w, h, t, size=18, bold=False, color=NAVY, align=PP_ALIGN.LEFT,
anchor=MSO_ANCHOR.TOP):
tb = s.shapes.add_textbox(Inches(x), Inches(y), Inches(w), Inches(h))
tf = tb.text_frame
tf.word_wrap = True
tf.vertical_anchor = anchor
tf.margin_left = tf.margin_right = Inches(0.05)
tf.margin_top = tf.margin_bottom = Inches(0.03)
p = tf.paragraphs[0]
p.alignment = align
r = p.add_run()
r.text = t
r.font.size = Pt(size)
r.font.bold = bold
r.font.color.rgb = color
r.font.name = FONT
return tb
def bullets(s, x, y, w, h, items, size=18, color=NAVY, gap=6):
tb = s.shapes.add_textbox(Inches(x), Inches(y), Inches(w), Inches(h))
tf = tb.text_frame
tf.word_wrap = True
tf.margin_left = tf.margin_right = Inches(0.05)
for i, it in enumerate(items):
p = tf.paragraphs[0] if i == 0 else tf.add_paragraph()
p.space_after = Pt(gap)
if isinstance(it, tuple):
head, body = it
r1 = p.add_run()
r1.text = "\u2022 " + head + " "
r1.font.bold = True
r1.font.size = Pt(size)
r1.font.color.rgb = ROSE
r1.font.name = FONT
r2 = p.add_run()
r2.text = body
r2.font.size = Pt(size)
r2.font.color.rgb = color
r2.font.name = FONT
else:
r = p.add_run()
r.text = "\u2022 " + it
r.font.size = Pt(size)
r.font.color.rgb = color
r.font.name = FONT
return tb
def content_slide(title, subtitle=None):
s = prs.slides.add_slide(BLANK)
bg = s.background.fill
bg.solid()
bg.fore_color.rgb = WHITE
rect(s, 0, 0, 0.25, 7.5, ROSE)
text(s, 0.6, 0.4, 12, 0.8, title, size=32, bold=True)
if subtitle:
text(s, 0.6, 1.1, 12, 0.5, subtitle, size=16, color=GREY)
return s
def footer(s, n, src):
text(s, 0.6, 7.0, 10.5, 0.35, src, size=11, color=GREY)
text(s, 12.0, 7.0, 0.8, 0.35, str(n), size=11, color=GREY, align=PP_ALIGN.RIGHT)
def card(s, x, y, w, h, head, body_items, head_fill=NAVY, size=15):
rect(s, x, y, w, h, LIGHT)
rect(s, x, y, w, 0.6, head_fill)
text(s, x + 0.1, y, w - 0.2, 0.6, head, size=18, bold=True, color=WHITE,
anchor=MSO_ANCHOR.MIDDLE)
bullets(s, x + 0.15, y + 0.75, w - 0.3, h - 0.85, body_items, size=size, gap=5)
def stat(s, x, y, w, big, small, fill=ROSE):
rect(s, x, y, w, 1.9, fill)
text(s, x, y + 0.1, w, 0.9, big, size=40, bold=True, color=WHITE, align=PP_ALIGN.CENTER,
anchor=MSO_ANCHOR.MIDDLE)
text(s, x + 0.15, y + 1.0, w - 0.3, 0.85, small, size=14, color=WHITE,
align=PP_ALIGN.CENTER)
# 1 Title
s = prs.slides.add_slide(BLANK)
s.background.fill.solid()
s.background.fill.fore_color.rgb = NAVY
rect(s, 0.8, 2.3, 0.12, 2.2, ROSE)
text(s, 1.2, 2.2, 11, 1.2, "Peripartum Cardiomyopathy", size=50, bold=True, color=WHITE)
text(s, 1.2, 3.4, 11, 0.8, "Pathophysiology, diagnosis, management and prognosis", size=24,
color=RGBColor(0xE8, 0xC4, 0xCD))
text(s, 1.2, 4.2, 11, 0.5, "Based on Harrison's 22E, Goldman-Cecil, Creasy & Resnik's, Braunwald and Fuster",
size=14, color=RGBColor(0xB8, 0xC0, 0xCF))
# 2 Definition
s = content_slide("What is peripartum cardiomyopathy?")
rect(s, 0.6, 1.5, 12.1, 1.5, SOFT)
text(s, 0.85, 1.55, 11.6, 1.4,
"Heart failure from left ventricular systolic dysfunction that develops in the last month "
"of pregnancy or within 5 months after delivery, with no other identifiable cause.",
size=22, bold=True, anchor=MSO_ANCHOR.MIDDLE)
bullets(s, 0.6, 3.3, 6.0, 3.5, [
("Timing:", "most cases present in the first week or two after delivery"),
("LVEF:", "usually below 45% (some definitions use 45% or less)"),
("Type:", "a dilated cardiomyopathy phenotype with a diagnosis of exclusion"),
], size=18)
rect(s, 7.0, 3.3, 5.7, 3.2, NAVY)
text(s, 7.2, 3.4, 5.3, 0.5, "Why it matters", size=20, bold=True, color=WHITE)
bullets(s, 7.2, 4.0, 5.3, 2.5, [
"Cardiovascular conditions cause over 33% of pregnancy-related deaths in the US",
"Easy to miss: late-pregnancy dyspnea and edema look normal",
"Can recur in later pregnancies",
], size=16, color=WHITE)
footer(s, 2, "Harrison's 22E, p. 2060; Goldman-Cecil Medicine, p. 2587")
# 3 Epidemiology
s = content_slide("Epidemiology and risk factors")
stat(s, 0.6, 1.5, 3.8, "~1 in 1000", "pregnancies worldwide; varies by region")
stat(s, 4.75, 1.5, 3.8, "1 in 2230", "US births now, up from 1 in 4350 in the early 1990s", fill=NAVY)
stat(s, 8.9, 1.5, 3.8, "up to 1 in 100", "in parts of Africa (about 1 in 300 in Haiti)")
text(s, 0.6, 3.65, 6, 0.5, "Risk factors", size=22, bold=True, color=ROSE)
bullets(s, 0.6, 4.15, 6.0, 2.8, [
"Older maternal age and higher parity",
"Twin or multifetal pregnancy",
"Malnutrition and obesity",
"Tocolytic therapy and fertility treatment",
], size=17)
bullets(s, 6.9, 4.15, 5.8, 2.8, [
("Hypertensive disorders:", "up to half of cases; preeclampsia in about 25% vs 5% in the general population"),
("Ethnicity:", "Black women have a 4- to 15-fold higher risk and recover less often"),
], size=17)
footer(s, 3, "Harrison's 22E, p. 2060; Goldman-Cecil, p. 2587; Creasy & Resnik's, p. 1262")
# 4 Pathophysiology
s = content_slide("Pathophysiology: a multi-hit model",
"Pregnancy triggers cardiac injury in genetically or vascularly susceptible women")
card(s, 0.6, 1.8, 3.9, 4.9, "1. Genetic susceptibility", [
"Truncating variants in about 15% of cases",
"Mostly TTN (titin); also TNNC1 and STAT3",
"Predicts lower LVEF recovery",
"Pregnancy acts as a trigger on an underlying genetic dilated cardiomyopathy",
])
card(s, 4.72, 1.8, 3.9, 4.9, "2. Prolactin cleavage", [
"Oxidative stress in late pregnancy",
"Prolactin is cleaved to a 16-kDa fragment (vasoinhibin)",
"Fragment is vasotoxic and proinflammatory",
"Impairs endothelial cells and cardiomyocytes",
], head_fill=ROSE)
card(s, 8.84, 1.8, 3.9, 4.9, "3. Angiogenic imbalance", [
"Placenta releases sFlt-1, an inhibitor of VEGF",
"Shared with preeclampsia",
"High sFlt-1 levels predict a worse outcome",
])
footer(s, 4, "Harrison's 22E, p. 2060; Goldman-Cecil, p. 2588; Creasy & Resnik's, p. 1262")
# 5 Presentation
s = content_slide("Clinical presentation")
card(s, 0.6, 1.5, 6.0, 5.2, "Symptoms and signs", [
"Dyspnea, orthopnea, fatigue and cough",
"Peripheral edema, raised JVP, hypertension",
"Often appears when urine output lags behind postpartum fluid mobilisation",
"Atrial and ventricular arrhythmias",
"Thromboembolism, including LV thrombus",
], size=17)
card(s, 6.9, 1.5, 5.8, 5.2, "Clues that it is not normal pregnancy", [
"Elevated BNP or NT-proBNP",
"Elevated troponin",
"Raised central venous pressure",
"Dyspnea out of proportion, especially with hypertension",
"Symptoms that start late in pregnancy or postpartum",
], head_fill=ROSE, size=17)
footer(s, 5, "Harrison's 22E, p. 2060-2061; Goldman-Cecil, p. 2588")
# 6 Diagnosis
s = content_slide("Diagnosis: a diagnosis of exclusion")
card(s, 0.6, 1.5, 5.9, 3.0, "Echocardiographic criteria", [
"Diffuse systolic dysfunction",
"LVEF below 45%",
"Fractional shortening below 30%, or LVEDD above 2.7 cm/m\u00b2",
], size=16)
card(s, 0.6, 4.7, 5.9, 2.15, "Other tests", [
"ECG, BNP, troponin, chest X-ray",
"Cardiac MRI in complex cases, without gadolinium in pregnancy",
"Consider genetic testing",
], head_fill=ROSE, size=15)
card(s, 6.8, 1.5, 5.9, 5.35, "Exclude other causes", [
"Pulmonary embolism",
"Coronary artery dissection (segmental wall motion abnormality)",
"Valvular or pericardial disease",
"Preexisting or familial cardiomyopathy",
"Hypertensive heart disease and superimposed preeclampsia",
"Sepsis",
"Tocolytic beta-agonist effect (for example terbutaline)",
], size=16)
footer(s, 6, "Goldman-Cecil, p. 2588; Harrison's 22E, p. 2060-2061; Creasy & Resnik's, p. 1262")
# 7 Imaging
s = content_slide("Imaging findings")
s.shapes.add_picture("/tmp/workspace/ppcm-ppt/assets/img1.jpg", Inches(0.6), Inches(1.5),
height=Inches(3.9))
text(s, 0.6, 5.5, 5.0, 1.3,
"Echocardiography, apical four-chamber view: dilated, globular left ventricle with "
"global hypokinesis and severe systolic dysfunction.", size=14, color=GREY)
s.shapes.add_picture("/tmp/workspace/ppcm-ppt/assets/img0.jpg", Inches(6.5), Inches(1.5),
width=Inches(6.2))
text(s, 6.5, 3.2, 6.2, 1.8,
"Cardiac MRI: mildly dilated LV (cine four-chamber) with non-ischemic mid-wall late "
"gadolinium enhancement in the basal inferolateral wall (arrows). Gadolinium is avoided "
"during pregnancy.", size=14, color=GREY)
rect(s, 6.5, 5.1, 6.2, 1.6, SOFT)
text(s, 6.65, 5.15, 5.9, 1.5,
"Echo is usually sufficient for diagnosis. MRI helps separate PPCM from myocarditis or "
"ischemia and gives prognostic information on fibrosis.", size=15, anchor=MSO_ANCHOR.MIDDLE)
footer(s, 7, "Images: Orris medical image library (case figures from PMC sources)")
# 8 Management before delivery
s = content_slide("Management before delivery", "Standard heart failure care, adjusted for the fetus")
card(s, 0.6, 1.8, 6.0, 4.9, "Use", [
("Diuretics:", "loop diuretics to restore euvolemia"),
("Afterload:", "hydralazine plus nitrates"),
("Rate and rhythm:", "beta-blockers (metoprolol) and digoxin"),
("Delivery:", "prompt delivery after maternal stabilisation when diagnosed before birth"),
("Shock:", "inotropes, mechanical support, advanced HF centre"),
], size=16)
card(s, 6.9, 1.8, 5.8, 3.1, "Avoid in pregnancy", [
"ACE inhibitors, ARBs and sacubitril/valsartan",
"Mineralocorticoid antagonists",
"Warfarin (use LMWH or UFH if anticoagulating)",
], head_fill=ROSE, size=16)
rect(s, 6.9, 5.1, 5.8, 1.6, SOFT)
text(s, 7.05, 5.15, 5.5, 1.5,
"Involve maternal-fetal medicine, cardiology and anesthesia early, and plan for "
"emergency delivery if the mother is unstable.", size=15, anchor=MSO_ANCHOR.MIDDLE)
footer(s, 8, "Harrison's 22E, p. 2061; Creasy & Resnik's, p. 1262-1263; Goldman-Cecil, p. 2588")
# 9 Postpartum management
s = content_slide("Management after delivery")
card(s, 0.6, 1.5, 4.0, 5.3, "Drug therapy", [
"Full guideline-directed HF therapy once stable",
"Enalapril, metoprolol and spironolactone are compatible with breastfeeding",
"Titrate as for other forms of HFrEF",
], size=15)
card(s, 4.75, 1.5, 4.0, 5.3, "Anticoagulation", [
"Consider when LVEF is below 35% or the LV is markedly dilated",
"About 6 weeks once obstetric bleeding has resolved",
"LMWH preferred in pregnancy; avoid warfarin then",
], head_fill=ROSE, size=15)
card(s, 8.9, 1.5, 3.8, 5.3, "Breastfeeding and devices", [
"Breastfeeding is now generally encouraged if fluid balance is maintained",
"Delay ICD placement, since many women recover",
"Reassess LVEF after 3 to 6 months of optimal therapy",
], size=15)
footer(s, 9, "Harrison's 22E, p. 2061; Fuster and Hurst's The Heart 15e (chapter outline). ICD timing from clinical practice")
# 10 Bromocriptine
s = content_slide("Bromocriptine: promising but unproven")
rect(s, 0.6, 1.5, 6.0, 4.9, LIGHT)
text(s, 0.8, 1.6, 5.6, 0.5, "Rationale", size=22, bold=True, color=ROSE)
bullets(s, 0.8, 2.2, 5.6, 4.0, [
"Dopamine agonist that blocks prolactin release",
"Targets the 16-kDa prolactin fragment pathway",
"Small studies showed LVEF improvement",
"Larger trial data still awaited in the textbook sources",
], size=17)
rect(s, 6.9, 1.5, 5.8, 4.9, NAVY)
text(s, 7.1, 1.6, 5.4, 0.5, "In practice", size=22, bold=True, color=WHITE)
bullets(s, 7.1, 2.2, 5.4, 4.0, [
"Use is described as controversial",
"Goldman-Cecil lists 1.25 to 2.5 mg once daily if standard measures fail",
"Prothrombotic risk, so give with anticoagulation",
"Breastfeeding is stopped when it is used",
], size=17, color=WHITE)
text(s, 0.6, 6.5, 12, 0.4,
"Check current ESC or AHA guidance before use; this deck did not review society guidelines.",
size=14, color=GREY)
footer(s, 10, "Harrison's 22E, p. 2060-2061; Goldman-Cecil, p. 2588; Creasy & Resnik's, p. 1263")
# 11 Prognosis
s = content_slide("Prognosis and subsequent pregnancy")
stat(s, 0.6, 1.5, 3.8, "50-80%", "recover LVEF to 50% or higher, mostly in 6 to 12 months", fill=NAVY)
stat(s, 4.75, 1.5, 3.8, "~20%", "recurrent heart failure in a later pregnancy if LVEF had normalised")
stat(s, 8.9, 1.5, 3.8, "~40%", "recurrence if LV dysfunction persisted; 19% maternal mortality in that study")
card(s, 0.6, 3.75, 6.0, 3.0, "Poorer recovery with", [
"Lower LVEF or marked LV dilation at diagnosis",
"Black race",
"Truncating TTN variants",
], head_fill=ROSE, size=16)
card(s, 6.9, 3.75, 5.8, 3.0, "Counselling", [
"Advise against pregnancy with persistent LV dysfunction",
"Recovered women still need preconception review and close monitoring",
], size=16)
footer(s, 11, "Harrison's 22E, p. 2061; Creasy & Resnik's, p. 1262")
# 12 Recent evidence
s = content_slide("Recent evidence")
text(s, 0.6, 1.4, 12, 0.5, "Systematic reviews from the last 2 years (titles reviewed, abstracts not read)",
size=16, color=GREY)
items = [
("2026", "Respiratory-onset PPCM: diagnostic pitfalls and outcomes", "PMID 42219619"),
("2025", "Risk factors for PPCM: systematic review and meta-analysis", "PMID 40701904"),
("2024", "Outcomes of subsequent pregnancy in PPCM: systematic review and meta-analysis", "PMID 38569669"),
]
y = 2.1
for yr, t, pm in items:
rect(s, 0.6, y, 12.1, 1.15, LIGHT)
rect(s, 0.6, y, 1.4, 1.15, ROSE)
text(s, 0.6, y, 1.4, 1.15, yr, size=24, bold=True, color=WHITE, align=PP_ALIGN.CENTER,
anchor=MSO_ANCHOR.MIDDLE)
text(s, 2.2, y, 8.0, 1.15, t, size=17, anchor=MSO_ANCHOR.MIDDLE)
text(s, 10.3, y, 2.3, 1.15, pm, size=14, color=GREY, anchor=MSO_ANCHOR.MIDDLE)
y += 1.35
text(s, 0.6, 6.2, 12, 0.6,
"None appears to overturn the textbook account. Delayed diagnosis remains a recurring problem.",
size=16, bold=True)
footer(s, 12, "PubMed search, November 2026")
# 13 Take-home
s = prs.slides.add_slide(BLANK)
s.background.fill.solid()
s.background.fill.fore_color.rgb = NAVY
text(s, 0.8, 0.6, 12, 0.9, "Key takeaways", size=36, bold=True, color=WHITE)
rect(s, 0.8, 1.5, 1.2, 0.07, ROSE)
bullets(s, 0.8, 1.9, 11.7, 5, [
"Think of PPCM in any woman with new dyspnea or edema in late pregnancy or the first months postpartum.",
"Diagnosis needs LVEF below 45% and exclusion of other causes; BNP and echo are the first steps.",
"Before delivery use diuretics, hydralazine-nitrates and beta-blockers; avoid ACEi, ARB, ARNI and MRA.",
"After delivery give full heart failure therapy; consider anticoagulation if LVEF is below 35%.",
"Bromocriptine remains controversial; delay ICD placement and reassess LVEF at 3 to 6 months.",
"Most women recover, but later pregnancy carries a real risk of relapse. Counsel early.",
], size=20, color=WHITE, gap=12)
prs.save("/tmp/workspace/ppcm-ppt/output/Peripartum_Cardiomyopathy.pptx")
print("saved")
cd /tmp/workspace/ppcm-ppt && python src/build.py
ls -R /tmp/workspace/ppcm-ppt | head -30
cd /tmp/workspace/ppcm-ppt && python src/build.py && python -c " from pptx import Presentation p=Presentation('output/Peripartum_Cardiomyopathy.pptx'); print(len(p.slides))"
cd /tmp/workspace/ppcm-ppt && python -c " from pptx import Presentation from pptx.util import Emu p=Presentation('output/Peripartum_Cardiomyopathy.pptx') for i,s in enumerate(p.slides,1): for sh in s.shapes: if sh.has_text_frame and sh.text_frame.text.strip(): w=sh.width/914400; h=sh.height/914400 tot=0 for para in sh.text_frame.paragraphs: sz=max([r.font.size.pt for r in para.runs] or [12]) cpl=max(1,(w-0.1)*72/(sz*0.5)) n=max(1,-(-len(para.text)//int(cpl))) tot+=n*sz*1.2/72+ (para.space_after.pt/72 if para.space_after else 0) if tot>h+0.05: print(i,round(tot,2),round(h,2),sh.text_frame.text[:50]) "
cd /tmp/workspace/ppcm-ppt && python - <<'EOF' import re src=open('src/build.py').read() src=src.replace('text(s, x, y + 0.1, w, 0.9, big, size=40,','text(s, x, y + 0.1, w, 0.9, big, size=(32 if len(big)>9 else 40),') open('src/build.py','w').write(src) EOF python src/build.py && ls -la output
Peripartum Cardiomyopathy
Presentation · PPTX