presenter 0.7.1 → 0.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export.js","sources":["../src/renderer/browser-canvas/types/UnifiedCanvasContext.ts","../src/types/ObjectType.ts","../src/utils/objects/arrow/getArrowPoints.ts","../src/utils/color/getAlphaForColor.ts","../src/utils/color/getHexStringForColor.ts","../src/utils/core/assertNever.ts","../src/renderer/browser-canvas/types/UnifiedPath2D.ts","../src/renderer/browser-canvas/utils/drawStroke.ts","../src/utils/color/getRgbStringForColor.ts","../src/renderer/browser-canvas/utils/fillPath.ts","../src/renderer/browser-canvas/utils/getPathFromPoints.ts","../src/renderer/browser-canvas/objects/renderArrow.ts","../src/utils/objects/circle/getCircleInsetFillPath.ts","../src/utils/objects/circle/getCirclePath.ts","../src/renderer/browser-canvas/utils/clipToPath.ts","../src/renderer/browser-canvas/objects/renderCircle.ts","../src/types/Position.ts","../src/types/Size.ts","../src/types/Anchor.ts","../src/types/BoundingBox.ts","../src/utils/layout/getBoundingBox.ts","../src/renderer/browser-canvas/objects/renderGroup.ts","../src/utils/objects/rectangle/getRoundedRectanglePath.ts","../src/renderer/browser-canvas/types/UnifiedImage.ts","../src/renderer/browser-canvas/objects/renderImage.ts","../src/utils/objects/line/getLinePath.ts","../src/renderer/browser-canvas/objects/renderLine.ts","../src/types/Color.ts","../src/renderer/browser-canvas/objects/renderMask.ts","../src/renderer/browser-canvas/objects/renderPath.ts","../src/utils/objects/polygon/getPolygonPath.ts","../src/renderer/browser-canvas/objects/renderPolygon.ts","../src/utils/objects/rectangle/getRectangleInsetFillPath.ts","../src/utils/objects/rectangle/getRectanglePath.ts","../src/renderer/browser-canvas/objects/renderRectangle.ts","../src/renderer/browser-canvas/objects/renderSvg.ts","../src/types/Alignment.ts","../src/utils/objects/text/getTextStyleFromText.ts","../src/utils/objects/text/getTextUnitsFromTextContent.ts","../src/utils/size/getCombinedSizes2D.ts","../src/renderer/browser-canvas/utils/getSizeFromTextMetrics.ts","../src/renderer/browser-canvas/utils/text/setContextWithTextStyle.ts","../src/renderer/browser-canvas/utils/text/getTextUnitMeasurements.ts","../src/renderer/browser-canvas/objects/renderText.ts","../src/renderer/browser-canvas/utils/defaultObjectRenderers.ts","../src/types/Presentation.ts","../src/types/AnimationType.ts","../src/utils/animate/getSlideAnimationDuration.ts","../src/utils/interpolate/defaultInterpolators.ts","../src/utils/interpolate/interpolateNumber.ts","../src/utils/interpolate/interpolateColor.ts","../src/utils/interpolate/interpolateFallback.ts","../src/utils/interpolate/interpolate.ts","../src/utils/animate/updateObjectStateWithAnimation.ts","../src/utils/presentation/getObjectChildren.ts","../src/utils/presentation/getObjectState.ts","../src/utils/presentation/getSvgImageUrlById.ts","../src/utils/slide/getKeySlideBuildIndices.ts","../src/export/utils/createCanvasElement.ts","../src/export/utils/createPath2D.ts","../src/export/utils/loadPresentationImages.ts","../src/export/image-renderer/types/ImageRendererState.ts","../src/export/image-renderer/ImageRenderer.ts","../src/export/pdf-renderer/types/PDFRendererState.ts","../src/export/pdf-renderer/PDFRenderer.ts","../node_modules/jszip/dist/jszip.min.js","../node_modules/pptxgenjs/dist/pptxgen.es.js","../src/export/powerpoint-renderer/types/ObjectTransform.ts","../src/export/powerpoint-renderer/types/PowerPointRendererState.ts","../src/utils/layout/getLineBoundingBox.ts","../src/export/powerpoint-renderer/utils/getPptxFillColor.ts","../src/export/powerpoint-renderer/utils/getUnitsFromPixels.ts","../src/export/powerpoint-renderer/objects/renderArrow.ts","../src/export/powerpoint-renderer/utils/getTransformedBoundingBox.ts","../src/export/powerpoint-renderer/objects/renderCircle.ts","../src/export/powerpoint-renderer/objects/renderGroup.ts","../src/export/powerpoint-renderer/objects/renderImage.ts","../src/export/powerpoint-renderer/objects/renderLine.ts","../src/export/powerpoint-renderer/objects/renderPath.ts","../src/export/powerpoint-renderer/objects/renderPolygon.ts","../src/export/powerpoint-renderer/objects/renderRectangle.ts","../src/export/powerpoint-renderer/objects/renderSvg.ts","../src/types/FontStyle.ts","../src/types/FontWeight.ts","../src/export/powerpoint-renderer/utils/getPptxText.ts","../src/export/powerpoint-renderer/objects/renderText.ts","../src/export/powerpoint-renderer/utils/defaultObjectRenderers.ts","../src/export/powerpoint-renderer/utils/getImagePathById.ts","../src/export/powerpoint-renderer/PowerPointRenderer.ts"],"sourcesContent":["import { type CanvasRenderingContext2D as SkiaCanvasRenderingContext2D } from \"skia-canvas\";\n\nexport const CanvasContextType = {\n Browser: \"browser\",\n Node: \"node\",\n} as const;\n\nexport type CanvasContextType = (typeof CanvasContextType)[keyof typeof CanvasContextType];\n\nexport interface BrowserCanvasContext {\n readonly type: typeof CanvasContextType.Browser;\n readonly context: CanvasRenderingContext2D;\n}\n\nexport interface NodeCanvasContext {\n readonly type: typeof CanvasContextType.Node;\n readonly context: SkiaCanvasRenderingContext2D;\n}\n\n/**\n * A unified CanvasRenderingContext2D type that works in both browser and Node.js environments.\n */\nexport type UnifiedCanvasContext = BrowserCanvasContext | NodeCanvasContext;\n","export const ObjectType = {\n ARROW: \"Arrow\",\n CIRCLE: \"Circle\",\n GROUP: \"Group\",\n IMAGE: \"Image\",\n LINE: \"Line\",\n MASK: \"Mask\",\n PATH: \"Path\",\n POLYGON: \"Polygon\",\n RECTANGLE: \"Rectangle\",\n SLIDE_OBJECT: \"SlideObject\",\n SVG: \"SVG\",\n TEXT: \"Text\",\n} as const;\n\nexport type ObjectType = (typeof ObjectType)[keyof typeof ObjectType];\n","import { Arrow } from \"../../../objects/Arrow\";\nimport { Position } from \"../../../types/Position\";\n\ninterface Return {\n readonly arrowPoints: Position[];\n readonly arrowheadPoints: Position[];\n readonly doubledArrowheadPoints: Position[];\n}\n\nexport function getArrowPoints(arrow: Arrow): Return {\n const { drawn, startX, startY, endX, endY, arrowheadSize, isArrowheadFilled, isDrawnFromCenter } =\n arrow;\n const start = { x: startX, y: startY };\n const end = { x: endX, y: endY };\n\n const angle = Math.atan2(end.y - start.y, end.x - start.x);\n const midpoint = { x: start.x + (end.x - start.x) / 2, y: start.y + (end.y - start.y) / 2 };\n\n const dx = end.x - start.x;\n const dy = end.y - start.y;\n const length = Math.hypot(dx, dy);\n\n const drawnLength = length * drawn;\n const unitX = Math.cos(angle);\n const unitY = Math.sin(angle);\n\n const drawnStart = isDrawnFromCenter\n ? { x: midpoint.x - (unitX * drawnLength) / 2, y: midpoint.y - (unitY * drawnLength) / 2 }\n : start;\n const drawnEnd = isDrawnFromCenter\n ? { x: midpoint.x + (unitX * drawnLength) / 2, y: midpoint.y + (unitY * drawnLength) / 2 }\n : { x: start.x + unitX * drawnLength, y: start.y + unitY * drawnLength };\n\n const arrowAngle = isArrowheadFilled ? Math.PI / 6 : Math.PI / 4.5;\n const adjustedArrowheadSize = drawnLength < arrowheadSize * 2 ? drawnLength / 2 : arrowheadSize;\n\n const arrowheadBase1 = {\n x: drawnEnd.x - adjustedArrowheadSize * Math.cos(angle - arrowAngle),\n y: drawnEnd.y - adjustedArrowheadSize * Math.sin(angle - arrowAngle),\n };\n\n const arrowheadBase2 = {\n x: drawnEnd.x - adjustedArrowheadSize * Math.cos(angle + arrowAngle),\n y: drawnEnd.y - adjustedArrowheadSize * Math.sin(angle + arrowAngle),\n };\n\n const doubledArrowheadBase1 = {\n x: drawnStart.x + adjustedArrowheadSize * Math.cos(angle - arrowAngle),\n y: drawnStart.y + adjustedArrowheadSize * Math.sin(angle - arrowAngle),\n };\n\n const doubledArrowheadBase2 = {\n x: drawnStart.x + adjustedArrowheadSize * Math.cos(angle + arrowAngle),\n y: drawnStart.y + adjustedArrowheadSize * Math.sin(angle + arrowAngle),\n };\n\n return {\n arrowPoints: [drawnStart, drawnEnd],\n arrowheadPoints: [arrowheadBase1, drawnEnd, arrowheadBase2],\n doubledArrowheadPoints: [doubledArrowheadBase1, drawnStart, doubledArrowheadBase2],\n };\n}\n","import { Color } from \"../../types/Color\";\n\n/**\n * Returns the alpha value for a color in [0, 1], given the color and the overall opacity of a shape.\n * Combines the color's alpha and the overall opacity.\n */\nexport function getAlphaForColor(color: Color, opacity: number | null = null): number {\n return color.alpha * (opacity ?? 1);\n}\n","import { Color } from \"../../types/Color\";\nimport { getAlphaForColor } from \"./getAlphaForColor\";\n\nexport function getHexStringForColor(color: Color, opacity: number | null = null): string {\n const { red, green, blue } = color;\n const hex = (red << 16) | (green << 8) | blue;\n const alphaHex = Math.round(getAlphaForColor(color, opacity) * 255);\n return `#${hex.toString(16).padStart(6, \"0\")}${alphaHex !== 255 ? alphaHex.toString(16).padStart(2, \"0\") : \"\"}`;\n}\n","export function assertNever(value: never, message?: string): never {\n throw new Error((message ?? \"Unexpected value\") + \": \" + value);\n}\n","import { type Path2D as SkiaPath2D } from \"skia-canvas\";\n\nexport const Path2DType = {\n Browser: \"browser\",\n Node: \"node\",\n} as const;\n\nexport type Path2DType = (typeof Path2DType)[keyof typeof Path2DType];\n\nexport interface BrowserPath2D {\n readonly type: typeof Path2DType.Browser;\n readonly path: Path2D;\n}\n\nexport interface NodePath2D {\n readonly type: typeof Path2DType.Node;\n readonly path: SkiaPath2D;\n}\n\n/**\n * A unified Path2D type that works in both browser and Node.js environments.\n */\nexport type UnifiedPath2D = BrowserPath2D | NodePath2D;\n","import { Color } from \"../../../types/Color\";\nimport { getHexStringForColor } from \"../../../utils/color/getHexStringForColor\";\nimport { assertNever } from \"../../../utils/core/assertNever\";\nimport { CanvasContextType, UnifiedCanvasContext } from \"../types/UnifiedCanvasContext\";\nimport { Path2DType, UnifiedPath2D } from \"../types/UnifiedPath2D\";\n\ninterface Args {\n readonly color: Color;\n readonly ctx: UnifiedCanvasContext;\n readonly drawn?: number | null;\n readonly isDrawnFromCenter?: boolean;\n readonly isRounded?: boolean;\n readonly opacity?: number | null;\n readonly path: UnifiedPath2D | undefined;\n readonly pathLength?: number | null;\n readonly width: number;\n}\n\nexport function drawStroke({\n ctx,\n color,\n drawn = null,\n isDrawnFromCenter = false,\n isRounded = false,\n opacity = null,\n path,\n pathLength = null,\n width,\n}: Args) {\n if (width === 0 || drawn === 0) {\n return;\n }\n\n if (drawn !== null && pathLength !== null && drawn !== 1) {\n const fullPathLength = pathLength + (isRounded ? width : 0);\n const drawnLength = pathLength * drawn;\n if (!isDrawnFromCenter) {\n ctx.context.setLineDash([drawnLength, fullPathLength - drawnLength]);\n } else {\n ctx.context.setLineDash([\n 0,\n (fullPathLength - drawnLength) / 2,\n drawnLength,\n (fullPathLength - drawnLength) / 2,\n ]);\n }\n } else {\n ctx.context.setLineDash([]);\n }\n\n ctx.context.lineWidth = width;\n ctx.context.strokeStyle = getHexStringForColor(color, opacity);\n ctx.context.lineCap = isRounded ? \"round\" : \"butt\";\n\n if (path === undefined) {\n ctx.context.stroke();\n return;\n }\n\n switch (ctx.type) {\n case CanvasContextType.Browser:\n if (path.type === Path2DType.Browser) {\n ctx.context.stroke(path.path);\n } else {\n console.warn(\"Attempted to use Node Path2D in Browser Canvas context\");\n }\n break;\n case CanvasContextType.Node:\n if (path.type === Path2DType.Node) {\n ctx.context.stroke(path.path);\n } else {\n console.warn(\"Attempted to use Browser Path2D in Node Canvas context\");\n }\n break;\n default:\n assertNever(ctx);\n }\n}\n","import { Color } from \"../../types/Color\";\nimport { getAlphaForColor } from \"./getAlphaForColor\";\n\nexport function getRgbStringForColor(color: Color, opacity: number | null = null): string {\n const { red, green, blue } = color;\n const alpha = getAlphaForColor(color, opacity);\n return `rgba(${red}, ${green}, ${blue}, ${alpha})`;\n}\n","import { Color } from \"../../../types/Color\";\nimport { getRgbStringForColor } from \"../../../utils/color/getRgbStringForColor\";\nimport { assertNever } from \"../../../utils/core/assertNever\";\nimport { CanvasContextType, UnifiedCanvasContext } from \"../types/UnifiedCanvasContext\";\nimport { Path2DType, UnifiedPath2D } from \"../types/UnifiedPath2D\";\n\ninterface Args {\n readonly ctx: UnifiedCanvasContext;\n readonly path: UnifiedPath2D | undefined;\n readonly color: Color;\n readonly opacity?: number | null;\n}\n\nexport function fillPath({ ctx, path, color, opacity = null }: Args) {\n ctx.context.fillStyle = getRgbStringForColor(color, opacity);\n\n if (path === undefined) {\n ctx.context.fill();\n return;\n }\n\n switch (ctx.type) {\n case CanvasContextType.Browser:\n if (path.type === Path2DType.Browser) {\n ctx.context.fill(path.path);\n } else {\n console.warn(\"Attempted to use Node Path2D in Browser Canvas context\");\n }\n break;\n case CanvasContextType.Node:\n if (path.type === Path2DType.Node) {\n ctx.context.fill(path.path);\n } else {\n console.warn(\"Attempted to use Browser Path2D in Node Canvas context\");\n }\n break;\n default:\n assertNever(ctx);\n }\n}\n","import { PathWithLength } from \"../../../types/PathWithLength\";\nimport { Position } from \"../../../types/Position\";\nimport { UnifiedPath2D } from \"../types/UnifiedPath2D\";\n\nexport function getPathFromPositions(\n positions: Position[],\n createPath: () => UnifiedPath2D,\n): PathWithLength {\n const path = createPath();\n\n const firstPosition = positions[0];\n if (firstPosition === undefined) {\n return { path, length: 0 };\n }\n\n path.path.moveTo(firstPosition.x, firstPosition.y);\n\n let length = 0;\n\n for (let i = 1; i < positions.length; i++) {\n const position = positions[i];\n const prevPosition = positions[i - 1];\n\n if (position === undefined || prevPosition === undefined) {\n continue;\n }\n\n const dx = position.x - prevPosition.x;\n const dy = position.y - prevPosition.y;\n length += Math.hypot(dx, dy);\n path.path.lineTo(position.x, position.y);\n }\n\n return { path, length };\n}\n","import { Arrow } from \"../../../objects/Arrow\";\nimport { getArrowPoints } from \"../../../utils/objects/arrow/getArrowPoints\";\nimport { BrowserCanvasObjectRenderer } from \"../types/BrowserCanvasObjectRenderer\";\nimport { drawStroke } from \"../utils/drawStroke\";\nimport { fillPath } from \"../utils/fillPath\";\nimport { getPathFromPositions } from \"../utils/getPathFromPoints\";\n\nexport const renderArrow: BrowserCanvasObjectRenderer<Arrow> = ({\n ctx,\n object: arrow,\n opacity,\n createPath2D,\n}) => {\n const targetOpacity = arrow.opacity * opacity;\n if (targetOpacity === 0 || arrow.drawn === 0) {\n return;\n }\n\n const { arrowPoints, arrowheadPoints, doubledArrowheadPoints } = getArrowPoints(arrow);\n\n const { path: arrowPath } = getPathFromPositions(arrowPoints, createPath2D);\n const { path: arrowheadPath } = getPathFromPositions(arrowheadPoints, createPath2D);\n\n // Draw main arrow line\n drawStroke({\n color: arrow.color,\n ctx,\n path: arrowPath,\n opacity: targetOpacity,\n width: arrow.width,\n });\n\n // Draw arrowhead\n if (arrow.isArrowheadFilled) {\n arrowheadPath.path.closePath();\n fillPath({\n ctx,\n path: arrowheadPath,\n color: arrow.color,\n opacity: targetOpacity,\n });\n }\n drawStroke({\n color: arrow.color,\n ctx,\n path: arrowheadPath,\n opacity: targetOpacity,\n width: arrow.width,\n });\n\n if (arrow.isArrowheadDoubled) {\n // Draw doubled arrowhead\n const { path: doubledArrowheadPath } = getPathFromPositions(\n doubledArrowheadPoints,\n createPath2D,\n );\n if (arrow.isArrowheadFilled) {\n doubledArrowheadPath.path.closePath();\n fillPath({\n ctx,\n path: doubledArrowheadPath,\n color: arrow.color,\n opacity: targetOpacity,\n });\n }\n drawStroke({\n color: arrow.color,\n ctx,\n path: doubledArrowheadPath,\n opacity: targetOpacity,\n width: arrow.width,\n });\n }\n};\n","import { Circle } from \"../../../objects/Circle\";\nimport { UnifiedPath2D } from \"../../../renderer/browser-canvas/types/UnifiedPath2D\";\n\n/**\n * Returns a circle path that is smaller than the original by half the border width.\n * This is used as a clip region when drawing semi-transparent shapes.\n */\nexport function getCircleInsetFillPath(\n circle: Circle,\n createPath: () => UnifiedPath2D,\n): UnifiedPath2D | undefined {\n const insetRadius = circle.radius - circle.borderWidth / 2;\n if (insetRadius <= 0) {\n return undefined;\n }\n\n const path = createPath();\n const startAngle = -Math.PI / 2;\n path.path.arc(circle.x, circle.y, insetRadius, startAngle, startAngle + 2 * Math.PI);\n return path;\n}\n","import { Circle } from \"../../../objects/Circle\";\nimport { UnifiedPath2D } from \"../../../renderer/browser-canvas/types/UnifiedPath2D\";\nimport { PathWithLength } from \"../../../types/PathWithLength\";\n\nexport function getCirclePath(circle: Circle, createPath: () => UnifiedPath2D): PathWithLength {\n const path = createPath();\n const startAngle = -Math.PI / 2;\n\n path.path.arc(circle.x, circle.y, circle.radius, startAngle, startAngle + 2 * Math.PI);\n const length = 2 * Math.PI * circle.radius;\n return { path, length };\n}\n","import { assertNever } from \"../../../utils/core/assertNever\";\nimport { CanvasContextType, UnifiedCanvasContext } from \"../types/UnifiedCanvasContext\";\nimport { Path2DType, UnifiedPath2D } from \"../types/UnifiedPath2D\";\n\n/**\n * Clips the canvas context to the interior of the given path.\n * Must be called between ctx.context.save() and ctx.context.restore().\n */\nexport function clipToPath(ctx: UnifiedCanvasContext, path: UnifiedPath2D): void {\n switch (ctx.type) {\n case CanvasContextType.Browser:\n if (path.type === Path2DType.Browser) {\n ctx.context.clip(path.path);\n } else {\n console.warn(\"Attempted to use Node Path2D in Browser Canvas context\");\n }\n break;\n case CanvasContextType.Node:\n if (path.type === Path2DType.Node) {\n ctx.context.clip(path.path);\n } else {\n console.warn(\"Attempted to use Browser Path2D in Node Canvas context\");\n }\n break;\n default:\n assertNever(ctx);\n }\n}\n","import { Circle } from \"../../../objects/Circle\";\nimport { getCircleInsetFillPath } from \"../../../utils/objects/circle/getCircleInsetFillPath\";\nimport { getCirclePath } from \"../../../utils/objects/circle/getCirclePath\";\nimport { BrowserCanvasObjectRenderer } from \"../types/BrowserCanvasObjectRenderer\";\nimport { clipToPath } from \"../utils/clipToPath\";\nimport { drawStroke } from \"../utils/drawStroke\";\nimport { fillPath } from \"../utils/fillPath\";\n\nexport const renderCircle: BrowserCanvasObjectRenderer<Circle> = ({\n ctx,\n object: circle,\n opacity,\n createPath2D,\n}) => {\n const targetOpacity = circle.opacity * opacity;\n if (targetOpacity === 0 || (circle.drawn === 0 && circle.fill.alpha === 0)) {\n return;\n }\n\n const { path, length } = getCirclePath(circle, createPath2D);\n\n if (targetOpacity < 1 && circle.borderWidth > 0) {\n // Clip fill to an inset path so it doesn't extend under the stroke,\n // avoiding the visual artifact on semi-transparent circles.\n const insetFillPath = getCircleInsetFillPath(circle, createPath2D);\n if (insetFillPath !== undefined) {\n ctx.context.save();\n clipToPath(ctx, insetFillPath);\n fillPath({ ctx, path, color: circle.fill, opacity: targetOpacity });\n ctx.context.restore();\n }\n } else {\n fillPath({ ctx, path, color: circle.fill, opacity: targetOpacity });\n }\n\n drawStroke({\n color: circle.borderColor,\n ctx,\n drawn: circle.drawn,\n path,\n pathLength: length,\n opacity: targetOpacity,\n width: circle.borderWidth,\n });\n};\n","export interface Position {\n readonly x: number;\n readonly y: number;\n}\n\nexport function Position(props: Partial<Position> | null = null): Position {\n return {\n x: 0,\n y: 0,\n ...props,\n };\n}\n\nexport const DEFAULT_POSITION = Position();\n","export interface Size {\n readonly height: number;\n readonly width: number;\n}\n\nexport function Size(props: Partial<Size> | null = null): Size {\n return {\n height: 0,\n width: 0,\n ...props,\n };\n}\n\nexport const DEFAULT_SIZE: Size = Size({ width: 0, height: 0 });\n","export const Anchor = {\n TOP_LEFT: \"TopLeft\",\n TOP: \"Top\",\n TOP_RIGHT: \"TopRight\",\n LEFT: \"Left\",\n CENTER: \"Center\",\n RIGHT: \"Right\",\n BOTTOM_LEFT: \"BottomLeft\",\n BOTTOM: \"Bottom\",\n BOTTOM_RIGHT: \"BottomRight\",\n} as const;\n\nexport type Anchor = (typeof Anchor)[keyof typeof Anchor];\n\nexport const DEFAULT_ANCHOR: Anchor = Anchor.TOP_LEFT;\n","import { DEFAULT_POSITION, Position } from \"./Position\";\nimport { DEFAULT_SIZE, Size } from \"./Size\";\n\nexport interface BoundingBox {\n /** The position of the top-left corner of the bounding box */\n readonly origin: Position;\n\n /** The size of the bounding box */\n readonly size: Size;\n}\n\nexport function BoundingBox(props: Partial<BoundingBox> | null = null): BoundingBox {\n return {\n origin: DEFAULT_POSITION,\n size: DEFAULT_SIZE,\n ...props,\n };\n}\n\nexport const DEFAULT_BOUNDING_BOX: BoundingBox = BoundingBox();\n","import { Anchor } from \"../../types/Anchor\";\nimport { BoundingBox } from \"../../types/BoundingBox\";\nimport { Position } from \"../../types/Position\";\nimport { Size } from \"../../types/Size\";\nimport { assertNever } from \"../core/assertNever\";\n\nexport function getBoundingBox(position: Position, anchor: Anchor, size: Size): BoundingBox {\n const { x, y } = position;\n const { width, height } = size;\n\n switch (anchor) {\n case Anchor.TOP_LEFT:\n return BoundingBox({\n origin: Position({ x, y }),\n size,\n });\n case Anchor.TOP:\n return BoundingBox({\n origin: Position({ x: x - width / 2, y }),\n size,\n });\n case Anchor.TOP_RIGHT:\n return BoundingBox({\n origin: Position({ x: x - width, y }),\n size,\n });\n case Anchor.LEFT:\n return BoundingBox({\n origin: Position({ x, y: y - height / 2 }),\n size,\n });\n case Anchor.CENTER:\n return BoundingBox({\n origin: Position({ x: x - width / 2, y: y - height / 2 }),\n size,\n });\n case Anchor.RIGHT:\n return BoundingBox({\n origin: Position({ x: x - width, y: y - height / 2 }),\n size,\n });\n case Anchor.BOTTOM_LEFT:\n return BoundingBox({\n origin: Position({ x, y: y - height }),\n size,\n });\n case Anchor.BOTTOM:\n return BoundingBox({\n origin: Position({ x: x - width / 2, y: y - height }),\n size,\n });\n case Anchor.BOTTOM_RIGHT:\n return BoundingBox({\n origin: Position({ x: x - width, y: y - height }),\n size,\n });\n default:\n assertNever(anchor);\n }\n}\n","import { Group } from \"../../../objects/Group\";\nimport { Position } from \"../../../types/Position\";\nimport { Size } from \"../../../types/Size\";\nimport { getHexStringForColor } from \"../../../utils/color/getHexStringForColor\";\nimport { getBoundingBox } from \"../../../utils/layout/getBoundingBox\";\nimport { BrowserCanvasObjectRenderer } from \"../types/BrowserCanvasObjectRenderer\";\n\nexport const renderGroup: BrowserCanvasObjectRenderer<Group> = ({\n ctx,\n object: group,\n renderObject,\n opacity,\n}) => {\n const boundingBox = getBoundingBox(\n Position({ x: group.x, y: group.y }),\n group.anchor,\n Size({\n width: group.width * group.scale,\n height: group.height * group.scale,\n }),\n );\n\n const { rotation, rotateOriginX, rotateOriginY } = group;\n\n // Prevent rendering if scale is zero\n if (group.scale === 0) {\n return;\n }\n\n // Apply translation and scale transformations\n ctx.context.translate(boundingBox.origin.x, boundingBox.origin.y);\n ctx.context.scale(group.scale, group.scale);\n\n // Apply rotation transformation\n ctx.context.translate(rotateOriginX, rotateOriginY);\n ctx.context.rotate((rotation * Math.PI) / 180);\n ctx.context.translate(-rotateOriginX, -rotateOriginY);\n\n for (const child of group.objects) {\n renderObject(child, opacity * group.opacity);\n }\n\n // If there's a preview color, render it to help with debugging group size/position\n if (group.previewColor !== null) {\n ctx.context.fillStyle = getHexStringForColor(group.previewColor);\n ctx.context.fillRect(0, 0, group.width, group.height);\n }\n\n // Undo transformations in reverse order, starting with rotation transformation\n ctx.context.translate(rotateOriginX, rotateOriginY);\n ctx.context.rotate((-rotation * Math.PI) / 180);\n ctx.context.translate(-rotateOriginX, -rotateOriginY);\n\n // Show indicator for rotation origin, to help with developing and debugging rotation\n if (group.rotateOriginPreviewSize > 0) {\n ctx.context.fillStyle = \"red\";\n ctx.context.beginPath();\n ctx.context.arc(rotateOriginX, rotateOriginY, group.rotateOriginPreviewSize, 0, 2 * Math.PI);\n ctx.context.fill();\n }\n\n // Undo translation and scale transformations\n ctx.context.scale(1 / group.scale, 1 / group.scale);\n ctx.context.translate(-boundingBox.origin.x, -boundingBox.origin.y);\n};\n","import { UnifiedPath2D } from \"../../../renderer/browser-canvas/types/UnifiedPath2D\";\nimport { PathWithLength } from \"../../../types/PathWithLength\";\nimport { Position } from \"../../../types/Position\";\nimport { Size } from \"../../../types/Size\";\n\nexport function getRoundedRectanglePath(\n origin: Position,\n size: Size,\n rounding: number,\n createPath: () => UnifiedPath2D,\n overshoot: number = 0,\n): PathWithLength {\n const path = createPath();\n\n path.path.moveTo(origin.x + rounding, origin.y);\n path.path.lineTo(origin.x + size.width - rounding, origin.y);\n path.path.arcTo(\n origin.x + size.width,\n origin.y,\n origin.x + size.width,\n origin.y + rounding,\n rounding,\n );\n path.path.lineTo(origin.x + size.width, origin.y + size.height - rounding);\n path.path.arcTo(\n origin.x + size.width,\n origin.y + size.height,\n origin.x + size.width - rounding,\n origin.y + size.height,\n rounding,\n );\n path.path.lineTo(origin.x + rounding, origin.y + size.height);\n path.path.arcTo(\n origin.x,\n origin.y + size.height,\n origin.x,\n origin.y + size.height - rounding,\n rounding,\n );\n path.path.lineTo(origin.x, origin.y + rounding);\n path.path.arcTo(origin.x, origin.y, origin.x + rounding, origin.y, rounding);\n if (overshoot > 0) {\n path.path.lineTo(origin.x + rounding + overshoot, origin.y);\n }\n\n const length = 2 * (size.width + size.height - 4 * rounding) + 2 * Math.PI * rounding + overshoot;\n return { path, length };\n}\n","import { type Image } from \"skia-canvas\";\n\nexport const ImageType = {\n Browser: \"browser\",\n Node: \"node\",\n} as const;\n\nexport type ImageType = (typeof ImageType)[keyof typeof ImageType];\n\nexport interface BrowserImage {\n readonly type: typeof ImageType.Browser;\n readonly image: HTMLImageElement;\n}\n\nexport interface NodeImage {\n readonly type: typeof ImageType.Node;\n readonly image: Image;\n}\n\n/**\n * A unified Image type that works in both browser and Node.js environments.\n */\nexport type UnifiedImage = BrowserImage | NodeImage;\n","import { Image } from \"../../../objects/Image\";\nimport { Position } from \"../../../types/Position\";\nimport { Size } from \"../../../types/Size\";\nimport { assertNever } from \"../../../utils/core/assertNever\";\nimport { getBoundingBox } from \"../../../utils/layout/getBoundingBox\";\nimport { getRoundedRectanglePath } from \"../../../utils/objects/rectangle/getRoundedRectanglePath\";\nimport { BrowserCanvasObjectRenderer } from \"../types/BrowserCanvasObjectRenderer\";\nimport { CanvasContextType } from \"../types/UnifiedCanvasContext\";\nimport { ImageType } from \"../types/UnifiedImage\";\nimport { Path2DType } from \"../types/UnifiedPath2D\";\n\nexport const renderImage: BrowserCanvasObjectRenderer<Image> = ({\n ctx,\n imageById,\n object: image,\n opacity,\n createPath2D,\n}) => {\n const boundingBox = getBoundingBox(\n Position({ x: image.x, y: image.y }),\n image.anchor,\n Size({ width: image.width, height: image.height }),\n );\n\n const imageData = imageById[image.imageId];\n if (imageData === undefined) {\n return;\n }\n\n ctx.context.save();\n\n if (image.rounding > 0) {\n const roundedRectPath = getRoundedRectanglePath(\n boundingBox.origin,\n boundingBox.size,\n image.rounding,\n createPath2D,\n );\n\n switch (ctx.type) {\n case CanvasContextType.Browser:\n if (roundedRectPath.path.type === Path2DType.Browser) {\n ctx.context.clip(roundedRectPath.path.path);\n } else {\n console.warn(\"Attempted to use Node Path2D in Browser Canvas context\");\n }\n break;\n case CanvasContextType.Node:\n if (roundedRectPath.path.type === Path2DType.Node) {\n ctx.context.clip(roundedRectPath.path.path);\n } else {\n console.warn(\"Attempted to use Browser Path2D in Node Canvas context\");\n }\n break;\n default:\n assertNever(ctx);\n }\n }\n\n ctx.context.globalAlpha = opacity * image.opacity;\n ctx.context.imageSmoothingEnabled = image.smooth;\n\n switch (ctx.type) {\n case CanvasContextType.Browser:\n if (imageData.type === ImageType.Browser) {\n ctx.context.drawImage(\n imageData.image,\n boundingBox.origin.x,\n boundingBox.origin.y,\n boundingBox.size.width,\n boundingBox.size.height,\n );\n } else {\n console.warn(\"Attempted to use Node Image in Browser Canvas context\");\n }\n break;\n case CanvasContextType.Node:\n if (imageData.type === ImageType.Node) {\n ctx.context.drawImage(\n imageData.image,\n boundingBox.origin.x,\n boundingBox.origin.y,\n boundingBox.size.width,\n boundingBox.size.height,\n );\n } else {\n console.warn(\"Attempted to use Browser Image in Node Canvas context\");\n }\n break;\n default:\n assertNever(ctx);\n }\n\n // Restore opacity state\n ctx.context.restore();\n};\n","import { Line } from \"../../../objects/Line\";\nimport { UnifiedPath2D } from \"../../../renderer/browser-canvas/types/UnifiedPath2D\";\nimport { PathWithLength } from \"../../../types/PathWithLength\";\n\nexport function getLinePath(line: Line, createPath: () => UnifiedPath2D): PathWithLength {\n const path = createPath();\n\n path.path.moveTo(line.startX, line.startY);\n path.path.lineTo(line.endX, line.endY);\n\n const length = Math.hypot(line.endX - line.startX, line.endY - line.startY);\n\n return { path, length };\n}\n","import { Line } from \"../../../objects/Line\";\nimport { getLinePath } from \"../../../utils/objects/line/getLinePath\";\nimport { BrowserCanvasObjectRenderer } from \"../types/BrowserCanvasObjectRenderer\";\nimport { drawStroke } from \"../utils/drawStroke\";\n\nexport const renderLine: BrowserCanvasObjectRenderer<Line> = ({\n ctx,\n object: line,\n opacity,\n createPath2D,\n}) => {\n const targetOpacity = line.opacity * opacity;\n if (targetOpacity === 0 || line.drawn === 0) {\n return;\n }\n\n const { path, length } = getLinePath(line, createPath2D);\n\n drawStroke({\n color: line.color,\n ctx,\n drawn: line.drawn,\n isDrawnFromCenter: line.isDrawnFromCenter,\n isRounded: line.isRounded,\n path,\n pathLength: length,\n opacity: targetOpacity,\n width: line.width,\n });\n};\n","export interface Color {\n /** Red channel, in [0, 255] */\n red: number;\n\n /** Green channel, in [0, 255] */\n green: number;\n\n /** Blue channel, in [0, 255] */\n blue: number;\n\n /** Alpha channel, in [0, 1] */\n alpha: number;\n}\n\nexport function Color(color: Partial<Color> | string): Color;\nexport function Color(red: number, green: number, blue: number, alpha?: number): Color;\nexport function Color(\n color: Partial<Color> | string | number,\n green: number = 0,\n blue: number = 0,\n alpha: number = 1,\n): Color {\n if (typeof color === \"string\") {\n const hexString = color.replace(\"#\", \"\");\n const hex = parseInt(hexString, 16);\n\n if (isNaN(hex)) {\n console.warn(\"Invalid hex color format:\", color);\n return DEFAULT_COLOR;\n }\n\n if (hexString.length === 6) {\n return {\n red: (hex >> 16) & 255,\n green: (hex >> 8) & 255,\n blue: hex & 255,\n alpha: 1,\n };\n } else if (hexString.length === 8) {\n return {\n red: (hex >> 24) & 255,\n green: (hex >> 16) & 255,\n blue: (hex >> 8) & 255,\n alpha: (hex & 255) / 255,\n };\n } else {\n console.warn(\"Invalid hex color format:\", color);\n return DEFAULT_COLOR;\n }\n } else if (typeof color === \"number\") {\n return {\n red: color,\n green: green ?? 0,\n blue: blue ?? 0,\n alpha: alpha ?? 1,\n };\n }\n\n return {\n red: 0,\n green: 0,\n blue: 0,\n alpha: 1,\n ...color,\n };\n}\n\nColor.BLACK = Color(0, 0, 0);\nColor.BLUE = Color(0, 0, 255);\nColor.GREEN = Color(0, 255, 0);\nColor.RED = Color(255, 0, 0);\nColor.TRANSPARENT = Color(0, 0, 0, 0);\nColor.WHITE = Color(255, 255, 255);\n\nexport const DEFAULT_COLOR: Color = { red: 0, green: 0, blue: 0, alpha: 1 };\n","import { Mask } from \"../../../objects/Mask\";\nimport { Color } from \"../../../types/Color\";\nimport { Position } from \"../../../types/Position\";\nimport { Size } from \"../../../types/Size\";\nimport { getHexStringForColor } from \"../../../utils/color/getHexStringForColor\";\nimport { getBoundingBox } from \"../../../utils/layout/getBoundingBox\";\nimport { BrowserCanvasObjectRenderer } from \"../types/BrowserCanvasObjectRenderer\";\n\nexport const renderMask: BrowserCanvasObjectRenderer<Mask> = ({\n ctx,\n object: mask,\n opacity,\n renderObject,\n}) => {\n ctx.context.save();\n\n const bbox = getBoundingBox(\n Position({ x: mask.x, y: mask.y }),\n mask.anchor,\n Size({ width: mask.width, height: mask.height }),\n );\n\n if (mask.preview) {\n ctx.context.lineWidth = 4;\n ctx.context.strokeStyle = getHexStringForColor(Color.RED);\n ctx.context.rect(bbox.origin.x, bbox.origin.y, bbox.size.width, bbox.size.height);\n ctx.context.stroke();\n }\n\n ctx.context.beginPath();\n ctx.context.rect(bbox.origin.x, bbox.origin.y, bbox.size.width, bbox.size.height);\n ctx.context.closePath();\n ctx.context.clip();\n\n for (const child of mask.objects) {\n renderObject(child, opacity * mask.opacity);\n }\n\n ctx.context.restore();\n};\n","import { Path } from \"../../../objects/Path\";\nimport { Position } from \"../../../types/Position\";\nimport { Size } from \"../../../types/Size\";\nimport { getBoundingBox } from \"../../../utils/layout/getBoundingBox\";\nimport { BrowserCanvasObjectRenderer } from \"../types/BrowserCanvasObjectRenderer\";\nimport { drawStroke } from \"../utils/drawStroke\";\nimport { fillPath } from \"../utils/fillPath\";\n\nexport const renderPath: BrowserCanvasObjectRenderer<Path> = ({\n ctx,\n object: path,\n opacity,\n createPath2D,\n}) => {\n const targetOpacity = path.opacity * opacity;\n if (targetOpacity === 0 || (path.drawn === 0 && path.fill.alpha === 0)) {\n return;\n }\n\n const { origin } = getBoundingBox(\n Position({ x: path.x, y: path.y }),\n path.anchor,\n Size({ width: path.width, height: path.height }),\n );\n const path2D = createPath2D(path.path);\n\n ctx.context.save();\n ctx.context.translate(origin.x, origin.y);\n ctx.context.scale(path.width / path.viewboxWidth, path.height / path.viewboxHeight);\n\n fillPath({\n ctx,\n path: path2D,\n color: path.fill,\n opacity: targetOpacity,\n });\n\n drawStroke({\n color: path.color,\n ctx,\n drawn: path.drawn,\n isRounded: path.isRounded,\n path: path2D,\n pathLength: path.pathLength,\n opacity: targetOpacity,\n width: path.strokeWidth,\n });\n\n // Undo transformations\n ctx.context.restore();\n};\n","import { Polygon } from \"../../../objects/Polygon\";\nimport { UnifiedPath2D } from \"../../../renderer/browser-canvas/types/UnifiedPath2D\";\nimport { PathWithLength } from \"../../../types/PathWithLength\";\n\nexport function getPolygonPath(polygon: Polygon, createPath: () => UnifiedPath2D): PathWithLength {\n const path = createPath();\n const points = polygon.points;\n\n const firstPoint = points[0];\n if (firstPoint === undefined) {\n return { path, length: 0 };\n }\n\n path.path.moveTo(firstPoint.x, firstPoint.y);\n\n let length = 0;\n let previousPoint = firstPoint;\n for (let i = 1; i < points.length; i++) {\n const point = points[i];\n if (point === undefined) {\n continue;\n }\n path.path.lineTo(point.x, point.y);\n const segmentLength = Math.hypot(point.x - previousPoint.x, point.y - previousPoint.y);\n length += segmentLength;\n previousPoint = point;\n }\n\n path.path.closePath();\n const closingSegmentLength = Math.hypot(\n firstPoint.x - previousPoint.x,\n firstPoint.y - previousPoint.y,\n );\n length += closingSegmentLength;\n\n return { path, length };\n}\n","import { Polygon } from \"../../../objects/Polygon\";\nimport { getPolygonPath } from \"../../../utils/objects/polygon/getPolygonPath\";\nimport { BrowserCanvasObjectRenderer } from \"../types/BrowserCanvasObjectRenderer\";\nimport { drawStroke } from \"../utils/drawStroke\";\nimport { fillPath } from \"../utils/fillPath\";\n\nexport const renderPolygon: BrowserCanvasObjectRenderer<Polygon> = ({\n ctx,\n object: polygon,\n opacity,\n createPath2D,\n}) => {\n const targetOpacity = polygon.opacity * opacity;\n if (targetOpacity === 0 || (polygon.drawn === 0 && polygon.fill.alpha === 0)) {\n return;\n }\n\n const { path, length } = getPolygonPath(polygon, createPath2D);\n\n fillPath({\n ctx,\n path,\n color: polygon.fill,\n opacity: targetOpacity,\n });\n\n drawStroke({\n color: polygon.borderColor,\n ctx,\n drawn: polygon.drawn,\n path,\n pathLength: length,\n opacity: targetOpacity,\n width: polygon.borderWidth,\n });\n};\n","import { Rectangle } from \"../../../objects/Rectangle\";\nimport { UnifiedPath2D } from \"../../../renderer/browser-canvas/types/UnifiedPath2D\";\nimport { Position } from \"../../../types/Position\";\nimport { Size } from \"../../../types/Size\";\nimport { getBoundingBox } from \"../../layout/getBoundingBox\";\nimport { getRoundedRectanglePath } from \"./getRoundedRectanglePath\";\n\n/**\n * Returns a rectangle path that is smaller than the original by half the border width\n * on each side. This is used as a clip region when drawing semi-transparent shapes.\n */\nexport function getRectangleInsetFillPath(\n rectangle: Rectangle,\n createPath: () => UnifiedPath2D,\n): UnifiedPath2D | undefined {\n const inset = rectangle.borderWidth / 2;\n\n const { origin, size } = getBoundingBox(\n Position({ x: rectangle.x, y: rectangle.y }),\n rectangle.anchor,\n Size({ width: rectangle.width, height: rectangle.height }),\n );\n\n const insetWidth = size.width - rectangle.borderWidth;\n const insetHeight = size.height - rectangle.borderWidth;\n if (insetWidth <= 0 || insetHeight <= 0) {\n return undefined;\n }\n\n const insetOrigin = Position({ x: origin.x + inset, y: origin.y + inset });\n const insetSize = Size({ width: insetWidth, height: insetHeight });\n\n const rounding = Math.max(\n 0,\n Math.min(rectangle.rounding - inset, Math.min(insetWidth, insetHeight) / 2),\n );\n\n if (rounding > 0) {\n return getRoundedRectanglePath(insetOrigin, insetSize, rounding, createPath).path;\n }\n\n const path = createPath();\n path.path.moveTo(insetOrigin.x, insetOrigin.y);\n path.path.lineTo(insetOrigin.x + insetWidth, insetOrigin.y);\n path.path.lineTo(insetOrigin.x + insetWidth, insetOrigin.y + insetHeight);\n path.path.lineTo(insetOrigin.x, insetOrigin.y + insetHeight);\n path.path.closePath();\n return path;\n}\n","import { Rectangle } from \"../../../objects/Rectangle\";\nimport { UnifiedPath2D } from \"../../../renderer/browser-canvas/types/UnifiedPath2D\";\nimport { PathWithLength } from \"../../../types/PathWithLength\";\nimport { Position } from \"../../../types/Position\";\nimport { Size } from \"../../../types/Size\";\nimport { getBoundingBox } from \"../../layout/getBoundingBox\";\nimport { getRoundedRectanglePath } from \"./getRoundedRectanglePath\";\n\nexport function getRectanglePath(\n rectangle: Rectangle,\n createPath: () => UnifiedPath2D,\n): PathWithLength {\n const { origin, size } = getBoundingBox(\n Position({ x: rectangle.x, y: rectangle.y }),\n rectangle.anchor,\n Size({ width: rectangle.width, height: rectangle.height }),\n );\n\n const rounding = Math.max(0, Math.min(rectangle.rounding, Math.min(size.width, size.height) / 2));\n\n // Overshoot needed so that when path is drawn, the line caps cover the corners fully\n const overshoot = Math.min(rectangle.borderWidth * 2, size.width - rounding);\n\n if (rounding > 0) {\n return getRoundedRectanglePath(origin, size, rounding, createPath, overshoot);\n } else {\n const path = createPath();\n path.path.moveTo(origin.x, origin.y);\n path.path.lineTo(origin.x + size.width, origin.y);\n path.path.lineTo(origin.x + size.width, origin.y + size.height);\n path.path.lineTo(origin.x, origin.y + size.height);\n path.path.lineTo(origin.x, origin.y);\n path.path.lineTo(origin.x + overshoot, origin.y);\n\n const length = 2 * (size.width + size.height) + overshoot;\n return { path, length };\n }\n}\n","import { Rectangle } from \"../../../objects/Rectangle\";\nimport { getRectangleInsetFillPath } from \"../../../utils/objects/rectangle/getRectangleInsetFillPath\";\nimport { getRectanglePath } from \"../../../utils/objects/rectangle/getRectanglePath\";\nimport { BrowserCanvasObjectRenderer } from \"../types/BrowserCanvasObjectRenderer\";\nimport { clipToPath } from \"../utils/clipToPath\";\nimport { drawStroke } from \"../utils/drawStroke\";\nimport { fillPath } from \"../utils/fillPath\";\n\nexport const renderRectangle: BrowserCanvasObjectRenderer<Rectangle> = ({\n ctx,\n object: rectangle,\n opacity,\n createPath2D,\n}) => {\n const targetOpacity = rectangle.opacity * opacity;\n if (targetOpacity === 0 || (rectangle.drawn === 0 && rectangle.fill.alpha === 0)) {\n return;\n }\n\n const { path, length } = getRectanglePath(rectangle, createPath2D);\n\n if (targetOpacity < 1 && rectangle.borderWidth > 0) {\n // Clip fill to an inset path so it doesn't extend under the stroke.\n const insetFillPath = getRectangleInsetFillPath(rectangle, createPath2D);\n if (insetFillPath !== undefined) {\n ctx.context.save();\n clipToPath(ctx, insetFillPath);\n fillPath({ ctx, path, color: rectangle.fill, opacity: targetOpacity });\n ctx.context.restore();\n }\n } else {\n fillPath({ ctx, path, color: rectangle.fill, opacity: targetOpacity });\n }\n\n drawStroke({\n color: rectangle.borderColor,\n ctx,\n drawn: rectangle.drawn,\n path,\n pathLength: length,\n opacity: targetOpacity,\n width: rectangle.borderWidth,\n });\n};\n","import { SVG } from \"../../../objects/SVG\";\nimport { Position } from \"../../../types/Position\";\nimport { Size } from \"../../../types/Size\";\nimport { assertNever } from \"../../../utils/core/assertNever\";\nimport { getBoundingBox } from \"../../../utils/layout/getBoundingBox\";\nimport { BrowserCanvasObjectRenderer } from \"../types/BrowserCanvasObjectRenderer\";\nimport { CanvasContextType } from \"../types/UnifiedCanvasContext\";\nimport { ImageType } from \"../types/UnifiedImage\";\n\nexport const renderSvg: BrowserCanvasObjectRenderer<SVG> = ({\n ctx,\n imageById,\n object: svg,\n opacity,\n}) => {\n const targetOpacity = svg.opacity * opacity;\n if (targetOpacity === 0 || !svg.svg) {\n return;\n }\n\n const imageData = imageById[svg.svg];\n if (imageData === undefined) {\n return;\n }\n\n const boundingBox = getBoundingBox(\n Position({ x: svg.x, y: svg.y }),\n svg.anchor,\n Size({ width: svg.width, height: svg.height }),\n );\n\n ctx.context.save();\n ctx.context.globalAlpha = targetOpacity;\n\n switch (ctx.type) {\n case CanvasContextType.Browser:\n if (imageData.type === ImageType.Browser) {\n ctx.context.drawImage(\n imageData.image,\n boundingBox.origin.x,\n boundingBox.origin.y,\n boundingBox.size.width,\n boundingBox.size.height,\n );\n }\n break;\n case CanvasContextType.Node:\n if (imageData.type === ImageType.Node) {\n ctx.context.drawImage(\n imageData.image,\n boundingBox.origin.x,\n boundingBox.origin.y,\n boundingBox.size.width,\n boundingBox.size.height,\n );\n }\n break;\n default:\n assertNever(ctx);\n }\n\n ctx.context.restore();\n};\n","export const Alignment = {\n LEFT: \"left\",\n CENTER: \"center\",\n RIGHT: \"right\",\n} as const;\n\nexport type Alignment = (typeof Alignment)[keyof typeof Alignment];\n\nexport const DEFAULT_ALIGNMENT: Alignment = Alignment.LEFT;\n","import { Text } from \"../../../objects/Text\";\nimport { TextStyle } from \"../../../types/TextStyle\";\n\nexport function getTextStyleFromText(text: Text): TextStyle {\n return {\n color: text.color,\n fontFamily: text.fontFamily,\n fontSize: text.fontSize,\n fontStyle: text.fontStyle,\n fontWeight: text.fontWeight,\n ligatures: text.ligatures,\n };\n}\n","import { TextContent } from \"../../../types/TextContent\";\nimport { TextUnit } from \"../../../types/TextUnit\";\n\nexport function getTextUnitsFromTextContent(text: TextContent): TextUnit[][] {\n if (typeof text === \"string\") {\n return [[{ text }]];\n }\n return text.map((line) => line.map((unit) => (typeof unit === \"string\" ? { text: unit } : unit)));\n}\n","import { Size } from \"../../types/Size\";\n\n/**\n * Computes the combined size of a 2D array of sizes.\n *\n * If a line spacing is provided, it's added\n */\nexport function getCombinedSizes2D(sizes: Size[][], lineSpacing: number = 1): Size {\n const width = Math.max(...sizes.map((line) => line.reduce((a, b) => a + b.width, 0)));\n\n let height = 0;\n let previousLineHeight = 0;\n for (let i = 0; i < sizes.length; i++) {\n const line = sizes[i];\n if (line === undefined) {\n continue;\n }\n\n const lineHeight = Math.max(...line.map((unit) => unit.height));\n height += lineHeight + previousLineHeight * (lineSpacing - 1);\n previousLineHeight = lineHeight;\n }\n\n return {\n height,\n width,\n };\n}\n","import { Size } from \"../../../types/Size\";\n\nexport function getSizeFromTextMetrics(textMetrics: TextMetrics): Size {\n return {\n width: textMetrics.width,\n height: textMetrics.fontBoundingBoxAscent,\n };\n}\n","import { TextStyle } from \"../../../../types/TextStyle\";\nimport { getRgbStringForColor } from \"../../../../utils/color/getRgbStringForColor\";\nimport { CanvasContextType, UnifiedCanvasContext } from \"../../types/UnifiedCanvasContext\";\n\nexport function setContextWithTextStyle(\n ctx: UnifiedCanvasContext,\n textStyle: TextStyle,\n opacity: number = 1,\n) {\n ctx.context.fillStyle = getRgbStringForColor(textStyle.color, opacity);\n ctx.context.font = `${textStyle.fontStyle} ${textStyle.fontWeight} ${textStyle.fontSize}px ${textStyle.fontFamily}`;\n\n if (ctx.type === CanvasContextType.Browser) {\n ctx.context.textRendering = textStyle.ligatures ? \"optimizeLegibility\" : \"optimizeSpeed\";\n } else {\n ctx.context.fontVariant = textStyle.ligatures ? \"common-ligatures\" : \"no-common-ligatures\";\n }\n}\n","import { Size } from \"../../../../types/Size\";\nimport { TextStyle } from \"../../../../types/TextStyle\";\nimport { TextUnit } from \"../../../../types/TextUnit\";\nimport { UnifiedCanvasContext } from \"../../types/UnifiedCanvasContext\";\nimport { getSizeFromTextMetrics } from \"../getSizeFromTextMetrics\";\nimport { setContextWithTextStyle } from \"./setContextWithTextStyle\";\n\nexport function getTextUnitMeasurements(\n textUnits: TextUnit[][],\n style: TextStyle,\n ctx: UnifiedCanvasContext,\n): Size[][] {\n const sizes: Size[][] = [];\n\n for (const line of textUnits) {\n const lineSizes: Size[] = [];\n for (const unit of line) {\n const { text, ...unitStyle } = unit;\n const combinedStyle: TextStyle = { ...style, ...unitStyle };\n setContextWithTextStyle(ctx, combinedStyle);\n const metrics = ctx.context.measureText(text);\n lineSizes.push(getSizeFromTextMetrics(metrics));\n }\n sizes.push(lineSizes);\n }\n\n return sizes;\n}\n","import { Text } from \"../../../objects/Text\";\nimport { Alignment } from \"../../../types/Alignment\";\nimport { Position } from \"../../../types/Position\";\nimport { TextStyle } from \"../../../types/TextStyle\";\nimport { assertNever } from \"../../../utils/core/assertNever\";\nimport { getBoundingBox } from \"../../../utils/layout/getBoundingBox\";\nimport { getTextStyleFromText } from \"../../../utils/objects/text/getTextStyleFromText\";\nimport { getTextUnitsFromTextContent } from \"../../../utils/objects/text/getTextUnitsFromTextContent\";\nimport { getCombinedSizes2D } from \"../../../utils/size/getCombinedSizes2D\";\nimport { BrowserCanvasObjectRenderer } from \"../types/BrowserCanvasObjectRenderer\";\nimport { getTextUnitMeasurements } from \"../utils/text/getTextUnitMeasurements\";\nimport { setContextWithTextStyle } from \"../utils/text/setContextWithTextStyle\";\n\nexport const renderText: BrowserCanvasObjectRenderer<Text> = ({ ctx, object: text, opacity }) => {\n const targetOpacity = text.opacity * opacity;\n if (targetOpacity === 0) {\n return;\n }\n\n const { length } = text;\n const textUnits = getTextUnitsFromTextContent(text.text);\n const style = getTextStyleFromText(text);\n\n const sizes = getTextUnitMeasurements(textUnits, style, ctx);\n const size = getCombinedSizes2D(sizes, text.lineSpacing);\n const boundingBox = getBoundingBox(Position({ x: text.x, y: text.y }), text.anchor, size);\n\n let x = boundingBox.origin.x;\n let y = boundingBox.origin.y;\n let consumedLength = 0;\n let previousLineHeight = 0;\n\n for (let lineIndex = 0; lineIndex < textUnits.length; lineIndex++) {\n const line = textUnits[lineIndex];\n const lineSizes = sizes[lineIndex];\n\n if (line == undefined || lineSizes == undefined) {\n console.error(\"Could not determine text units or sizes for line\");\n continue;\n }\n\n const lineWidth = lineSizes.reduce((acc, curr) => acc + curr.width, 0);\n const lineHeight =\n lineSizes.length === 0\n ? previousLineHeight\n : lineSizes.reduce((acc, curr) => Math.max(acc, curr.height), 0);\n\n switch (text.alignment) {\n case Alignment.LEFT:\n x = boundingBox.origin.x;\n break;\n case Alignment.CENTER:\n x = boundingBox.origin.x + (boundingBox.size.width - lineWidth) / 2;\n break;\n case Alignment.RIGHT:\n x = boundingBox.origin.x + (boundingBox.size.width - lineWidth);\n break;\n default:\n assertNever(text.alignment);\n break;\n }\n y += lineHeight + previousLineHeight * (text.lineSpacing - 1);\n previousLineHeight = lineHeight;\n\n for (let unitIndex = 0; unitIndex < line.length; unitIndex++) {\n if (length !== null && consumedLength >= length) {\n break;\n }\n\n const unit = line[unitIndex];\n const unitSize = lineSizes[unitIndex];\n\n if (unit == undefined || unitSize == undefined) {\n console.error(\"Could not determine text unit or size for unit\");\n continue;\n }\n\n const { text: unitText, ...unitStyle } = unit;\n\n let truncatedUnitText: string | undefined;\n if (length !== null && consumedLength + unitText.length > length) {\n const remainingLength = length - consumedLength;\n truncatedUnitText = unitText.slice(0, remainingLength);\n }\n const targetUnitText = truncatedUnitText ?? unitText;\n consumedLength += targetUnitText.length;\n\n const combinedStyle: TextStyle = { ...style, ...unitStyle };\n setContextWithTextStyle(ctx, combinedStyle, targetOpacity);\n ctx.context.fillText(targetUnitText, x, y);\n x += unitSize.width;\n }\n }\n};\n","import { ObjectType } from \"../../../types/ObjectType\";\nimport { SlideObject } from \"../../../types/SlideObject\";\nimport { renderArrow } from \"../objects/renderArrow\";\nimport { renderCircle } from \"../objects/renderCircle\";\nimport { renderGroup } from \"../objects/renderGroup\";\nimport { renderImage } from \"../objects/renderImage\";\nimport { renderLine } from \"../objects/renderLine\";\nimport { renderMask } from \"../objects/renderMask\";\nimport { renderPath } from \"../objects/renderPath\";\nimport { renderPolygon } from \"../objects/renderPolygon\";\nimport { renderRectangle } from \"../objects/renderRectangle\";\nimport { renderSvg } from \"../objects/renderSvg\";\nimport { renderText } from \"../objects/renderText\";\nimport { BrowserCanvasObjectRenderer } from \"../types/BrowserCanvasObjectRenderer\";\n\ntype ObjectRendererMap = {\n [T in ObjectType]: BrowserCanvasObjectRenderer<SlideObject & { objectType: T }>;\n};\n\nexport const DEFAULT_OBJECT_RENDERERS: ObjectRendererMap = {\n [ObjectType.ARROW]: renderArrow,\n [ObjectType.CIRCLE]: renderCircle,\n [ObjectType.GROUP]: renderGroup,\n [ObjectType.IMAGE]: renderImage,\n [ObjectType.LINE]: renderLine,\n [ObjectType.MASK]: renderMask,\n [ObjectType.PATH]: renderPath,\n [ObjectType.POLYGON]: renderPolygon,\n [ObjectType.RECTANGLE]: renderRectangle,\n [ObjectType.SLIDE_OBJECT]: () => {},\n [ObjectType.SVG]: renderSvg,\n [ObjectType.TEXT]: renderText,\n};\n","import { Color } from \"./Color\";\nimport { Resources } from \"./Resources\";\nimport { Size } from \"./Size\";\nimport { Slide } from \"./Slide\";\n\nexport interface Presentation {\n /** The background color of the presentation. */\n readonly backgroundColor: Color;\n\n /** The slides to present as part of the presentation. */\n readonly slides: Slide[];\n\n /** The title of the presentation. */\n readonly title: string;\n\n /** The resources used in the presentation. */\n readonly resources: Resources;\n\n /** The dimensions of the presentation's viewport. */\n readonly size: Size;\n}\n\nexport function Presentation(props: Partial<Presentation> | null = null): Presentation {\n return {\n backgroundColor: Color.WHITE,\n slides: [],\n title: \"Presentation\",\n size: Size({ width: 3840, height: 2160 }),\n resources: {\n images: {},\n },\n ...props,\n };\n}\n","export const AnimationType = {\n /** Represents an animated change in an object's properties. */\n ANIMATE: \"Animate\",\n\n /** Represents a pause in the animation timeline. */\n PAUSE: \"Pause\",\n\n /** Represents an immediate update to an object's properties without animation. */\n UPDATE: \"Update\",\n} as const;\n\nexport type AnimationType = (typeof AnimationType)[keyof typeof AnimationType];\n","import { AnimationType } from \"../../types/AnimationType\";\nimport { SlideAnimation } from \"../../types/SlideAnimation\";\nimport { assertNever } from \"../core/assertNever\";\n\nexport function getSlideAnimationDuration(slideAnimation: SlideAnimation): number {\n const animations = Array.isArray(slideAnimation) ? slideAnimation : [slideAnimation];\n let startTime = 0;\n let duration = 0;\n\n for (const animation of animations) {\n switch (animation.type) {\n case AnimationType.PAUSE:\n startTime += animation.duration;\n break;\n case AnimationType.ANIMATE:\n duration = Math.max(duration, startTime + animation.delay + animation.duration);\n if (animation.block) {\n startTime += animation.delay + animation.duration;\n }\n break;\n case AnimationType.UPDATE:\n // No-op, instantaneous update.\n break;\n default:\n assertNever(animation);\n }\n }\n\n return duration;\n}\n","import { Interpolator } from \"../../types/Interpolator\";\nimport { interpolateColor } from \"./interpolateColor\";\nimport { interpolateFallback } from \"./interpolateFallback\";\nimport { interpolateNumber } from \"./interpolateNumber\";\n\nexport const DEFAULT_INTERPOLATORS: Interpolator<unknown>[] = [\n interpolateNumber,\n interpolateColor,\n interpolateFallback,\n];\n","import { Interpolator } from \"../../types/Interpolator\";\n\nexport const interpolateNumber: Interpolator<number> = {\n check: (value: unknown): value is number => {\n return typeof value === \"number\";\n },\n interpolate: (from: number, to: number, proportion: number): number => {\n return from + (to - from) * proportion;\n },\n};\n","import { Color } from \"../../types/Color\";\nimport { Interpolator } from \"../../types/Interpolator\";\n\nexport const interpolateColor: Interpolator<Color> = {\n check: (value: unknown): value is Color => {\n return (\n typeof value === \"object\" &&\n value !== null &&\n typeof (value as Color).red === \"number\" &&\n typeof (value as Color).green === \"number\" &&\n typeof (value as Color).blue === \"number\" &&\n typeof (value as Color).alpha === \"number\"\n );\n },\n interpolate: (from: Color, to: Color, proportion: number): Color => {\n return {\n red: Math.round(from.red + (to.red - from.red) * proportion),\n green: Math.round(from.green + (to.green - from.green) * proportion),\n blue: Math.round(from.blue + (to.blue - from.blue) * proportion),\n alpha: from.alpha + (to.alpha - from.alpha) * proportion,\n };\n },\n};\n","import { Interpolator } from \"../../types/Interpolator\";\n\n/** Fallback interpolation function when no other interpolators apply. */\nexport const interpolateFallback: Interpolator<unknown> = {\n check: (_value: unknown): _value is unknown => {\n return true;\n },\n interpolate: (_from: unknown, to: unknown): unknown => {\n return to;\n },\n};\n","import { Interpolator } from \"../../types/Interpolator\";\nimport { SlideObject } from \"../../types/SlideObject\";\nimport { DEFAULT_INTERPOLATORS } from \"./defaultInterpolators\";\n\nexport function interpolate<T extends SlideObject>(\n object: T,\n props: Partial<T>,\n proportion: number,\n customInterpolators: Interpolator<unknown>[] | null = null,\n): T {\n if (proportion === 0) {\n return object;\n } else if (proportion === 1) {\n return { ...object, ...props };\n }\n\n const interpolators =\n customInterpolators != null\n ? [...customInterpolators, ...DEFAULT_INTERPOLATORS]\n : DEFAULT_INTERPOLATORS;\n\n const interpolatedProps: Partial<T> = {};\n for (const key in props) {\n const fromValue = object[key];\n const toValue = props[key];\n\n for (const interpolator of interpolators) {\n if (interpolator.check(fromValue, key) && interpolator.check(toValue, key)) {\n interpolatedProps[key] = (interpolator as Interpolator<typeof toValue>).interpolate(\n fromValue,\n toValue,\n proportion,\n );\n break;\n }\n }\n }\n\n return { ...object, ...interpolatedProps };\n}\n","import { AnimationType } from \"../../types/AnimationType\";\nimport { SlideAnimation } from \"../../types/SlideAnimation\";\nimport { SlideObject } from \"../../types/SlideObject\";\nimport { assertNever } from \"../core/assertNever\";\nimport { interpolate } from \"../interpolate/interpolate\";\n\n/**\n * Mutably updates the object state to reflect the end state of the animation.\n *\n * If a build time is provided, the object state is updated to the state at that\n * time into the animation.\n *\n * @param objectState Map from original objects to current object state.\n * @param slideAnimation The animation to apply.\n * @param buildTime Optional time (in ms) into the animation to apply.\n */\nexport function updateObjectStateWithAnimation(\n objectState: Map<SlideObject, SlideObject>,\n slideAnimation: SlideAnimation | null,\n buildTime: number | null = null,\n) {\n if (slideAnimation === null) {\n return;\n }\n\n const animations = Array.isArray(slideAnimation) ? slideAnimation : [slideAnimation];\n\n let elapsedTime = 0;\n for (const animation of animations) {\n if (buildTime !== null && elapsedTime > buildTime) {\n // We've reached the current build time, so no more state to update.\n break;\n }\n\n switch (animation.type) {\n case AnimationType.ANIMATE: {\n const currentObject = objectState.get(animation.object);\n if (currentObject === undefined) {\n break;\n }\n\n const timeIntoAnimation = buildTime !== null ? buildTime - elapsedTime : null;\n const proportion = Math.max(\n Math.min(\n timeIntoAnimation !== null\n ? (timeIntoAnimation - animation.delay) / animation.duration\n : 1,\n 1,\n ),\n 0,\n );\n\n objectState.set(animation.object, {\n ...currentObject,\n ...interpolate(\n currentObject,\n animation.props,\n animation.easing(proportion),\n animation.interpolators,\n ),\n });\n\n if (animation.block) {\n elapsedTime += animation.delay + animation.duration;\n }\n break;\n }\n case AnimationType.UPDATE: {\n const currentObject = objectState.get(animation.object);\n if (currentObject === undefined) {\n break;\n }\n\n objectState.set(animation.object, {\n ...currentObject,\n ...animation.props,\n });\n break;\n }\n case AnimationType.PAUSE:\n elapsedTime += animation.duration;\n break;\n default:\n assertNever(animation);\n }\n }\n}\n","import { SlideObject } from \"../../types/SlideObject\";\n\n/**\n * Returns the children of a SlideObject if they exist by checking for an \"objects\" property.\n */\nexport function getObjectChildren(object: SlideObject): SlideObject[] {\n return \"objects\" in object\n ? (object.objects as any).filter((object: any) => \"objectType\" in object)\n : [];\n}\n","import { Slide } from \"../../types/Slide\";\nimport { SlideObject } from \"../../types/SlideObject\";\nimport { updateObjectStateWithAnimation } from \"../animate/updateObjectStateWithAnimation\";\nimport { getObjectChildren } from \"./getObjectChildren\";\n\ninterface Args {\n readonly slide: Slide;\n readonly buildIndex: number;\n readonly buildTime: number | null;\n}\n\n/**\n * Returns a mapping from original object (by reference equality) to its current state.\n */\nexport function getObjectState({\n slide,\n buildIndex,\n buildTime,\n}: Args): Map<SlideObject, SlideObject> {\n const objectState: Map<SlideObject, SlideObject> = new Map();\n\n function addObjectToState(object: SlideObject) {\n objectState.set(object, object);\n for (const childObject of getObjectChildren(object)) {\n addObjectToState(childObject);\n }\n }\n\n for (const object of slide.objects) {\n addObjectToState(object);\n }\n\n // Process animations that have already completed.\n const completedBuildCount = buildTime === null ? buildIndex : buildIndex - 1;\n for (let i = 0; i < completedBuildCount; i++) {\n const animation = slide.animations[i] ?? null;\n updateObjectStateWithAnimation(objectState, animation);\n }\n\n // Process the current animation, if any.\n if (buildTime !== null && buildIndex > 0) {\n const animation = slide.animations[buildIndex - 1] ?? null;\n updateObjectStateWithAnimation(objectState, animation, buildTime);\n }\n\n return objectState;\n}\n","import { ObjectType } from \"../../types/ObjectType\";\nimport { Presentation } from \"../../types/Presentation\";\nimport { SlideObject } from \"../../types/SlideObject\";\nimport { getObjectChildren } from \"./getObjectChildren\";\n\n/**\n * Extracts all SVG objects from slides and returns a mapping from image ID to URL.\n * In the case of SVGs, the image URL and path are both the SVG string itself.\n * SVG strings are transformed into data URLs in the image loading process.\n */\nexport function getSvgImageUrlById(presentation: Presentation): Record<string, string> {\n const svgStrings: Record<string, string> = {};\n\n function walkSlideObject(object: SlideObject): void {\n if (object.objectType === ObjectType.SVG) {\n const svg = (object as SlideObject & { svg: string }).svg;\n if (svg !== undefined && svg.length > 0) {\n svgStrings[svg] = svg;\n }\n }\n\n const children = getObjectChildren(object);\n for (const child of children) {\n walkSlideObject(child);\n }\n }\n\n for (const slide of presentation.slides) {\n for (const object of slide.objects) {\n walkSlideObject(object);\n }\n }\n\n return svgStrings;\n}\n","import { Slide } from \"../../types/Slide\";\n\n/**\n * Slides can define which builds are considered \"key\", e.g. to indicate which builds should be included in exports.\n */\nexport function getKeySlideBuildIndices(slide: Slide): number[] {\n const buildIndices: number[] = [];\n\n // If every build is key, include all build indices\n if (slide.isAllKey) {\n for (let i = 0; i <= slide.animations.length; i++) {\n buildIndices.push(i);\n }\n return buildIndices;\n }\n\n // Slide can configure its own starting state to be key\n if (slide.isStartKey) {\n buildIndices.push(0);\n }\n\n // Check animations for key build indicators\n slide.animations.forEach((animation, animationIndex) => {\n if (Array.isArray(animation)) {\n if (animation.some((anim) => anim.isKey)) {\n buildIndices.push(animationIndex + 1);\n }\n } else {\n if (animation.isKey) {\n buildIndices.push(animationIndex + 1);\n }\n }\n });\n\n // Slide can configure its own ending state to be key\n if (slide.isEndKey && buildIndices[buildIndices.length - 1] !== slide.animations.length) {\n buildIndices.push(slide.animations.length);\n }\n\n return buildIndices;\n}\n","import { Canvas } from \"skia-canvas\";\n\nimport { Size } from \"../../types/Size\";\n\nexport function createCanvasElement(size: Size): Canvas {\n const canvas = new Canvas(size.width, size.height);\n return canvas;\n}\n","import { Path2D } from \"skia-canvas\";\n\nimport { Path2DType, UnifiedPath2D } from \"../../renderer/browser-canvas/types/UnifiedPath2D\";\n\nexport function createPath2D(pathData?: string | undefined): UnifiedPath2D {\n const path = new Path2D(pathData);\n return {\n type: Path2DType.Node,\n path,\n };\n}\n","import { readFile } from \"fs\";\nimport path from \"path\";\nimport { Image } from \"skia-canvas\";\n\nimport { ImageType, UnifiedImage } from \"../../renderer/browser-canvas/types/UnifiedImage\";\n\nexport async function loadPresentationImages(\n imagePathById: Record<string, string>,\n pathPrefix: string,\n): Promise<Record<string, UnifiedImage>> {\n if (Object.keys(imagePathById).length === 0) {\n return {};\n }\n\n const imageById: Record<string, UnifiedImage> = {};\n\n const loadImage = (src: string): Promise<Image> => {\n const isSVG = src.includes(\"</svg>\");\n if (isSVG) {\n return new Promise((resolve) => {\n const sanitized = src.replace(/<\\?xml[^?]*\\?>\\s*/g, \"\");\n const img = new Image();\n img.src = Buffer.from(sanitized);\n resolve(img);\n });\n }\n\n return new Promise((resolve, reject) => {\n readFile(path.join(pathPrefix, src), (err, data) => {\n if (err) {\n reject(err);\n return;\n }\n const img = new Image();\n img.src = data;\n resolve(img);\n });\n });\n };\n\n const loadPromises = Object.entries(imagePathById).map(async ([id, path]) => {\n const img = await loadImage(path);\n imageById[id] = {\n type: ImageType.Node,\n image: img,\n };\n });\n\n await Promise.all(loadPromises);\n\n return imageById;\n}\n","import { UnifiedImage } from \"../../../renderer/browser-canvas/types/UnifiedImage\";\n\nexport interface ImageRendererState {\n directoryName: string;\n imageIndex: number;\n imageById: Record<string, UnifiedImage>;\n startImageIndex: number;\n}\n\nexport const IMAGE_RENDERER_DEFAULT_STATE: ImageRendererState = Object.freeze({\n directoryName: \"\",\n imageIndex: 0,\n imageById: {},\n startImageIndex: 0,\n});\n","import path from \"path\";\n\nimport {\n CanvasContextType,\n UnifiedCanvasContext,\n} from \"../../renderer/browser-canvas/types/UnifiedCanvasContext\";\nimport { DEFAULT_OBJECT_RENDERERS } from \"../../renderer/browser-canvas/utils/defaultObjectRenderers\";\nimport { Presentation } from \"../../types/Presentation\";\nimport { SlideObject } from \"../../types/SlideObject\";\nimport { getSlideAnimationDuration } from \"../../utils/animate/getSlideAnimationDuration\";\nimport { getRgbStringForColor } from \"../../utils/color/getRgbStringForColor\";\nimport { getObjectState } from \"../../utils/presentation/getObjectState\";\nimport { getSvgImageUrlById } from \"../../utils/presentation/getSvgImageUrlById\";\nimport { getKeySlideBuildIndices } from \"../../utils/slide/getKeySlideBuildIndices\";\nimport { createCanvasElement } from \"../utils/createCanvasElement\";\nimport { createPath2D } from \"../utils/createPath2D\";\nimport { loadPresentationImages } from \"../utils/loadPresentationImages\";\nimport { ImageRendererProps } from \"./types/ImageRendererProps\";\nimport { IMAGE_RENDERER_DEFAULT_STATE, ImageRendererState } from \"./types/ImageRendererState\";\n\nexport class ImageRenderer {\n props: ImageRendererProps;\n state: ImageRendererState;\n\n constructor(props: Partial<ImageRendererProps>) {\n const { objectRenderers, imageFormat = \"png\", ...rest } = props;\n this.props = {\n presentation: Presentation(),\n imageFormat,\n animationHoldFrames: 1,\n framesPerSecond: 30,\n isAnimatedExport: false,\n getFilenameForImage: (imageIndex: number) =>\n `${imageIndex.toString().padStart(4, \"0\")}.${imageFormat}`,\n logFrequency: 0,\n objectRenderers: {\n ...DEFAULT_OBJECT_RENDERERS,\n ...objectRenderers,\n },\n resourcePathPrefix: \"\",\n ...rest,\n };\n this.state = { ...IMAGE_RENDERER_DEFAULT_STATE };\n }\n\n async save(directoryName: string, startImageIndex: number = 0): Promise<void> {\n const { presentation, animationHoldFrames, isAnimatedExport } = this.props;\n this.state = {\n ...IMAGE_RENDERER_DEFAULT_STATE,\n imageById: await loadPresentationImages(\n { ...presentation.resources.images, ...getSvgImageUrlById(presentation) },\n this.props.resourcePathPrefix,\n ),\n directoryName,\n startImageIndex,\n };\n\n for (let slideIndex = 0; slideIndex < presentation.slides.length; slideIndex++) {\n const slide = presentation.slides[slideIndex];\n if (slide === undefined) {\n continue;\n }\n\n if (isAnimatedExport) {\n for (let i = 0; i < animationHoldFrames; i++) {\n this.renderImage(slideIndex, 0);\n }\n\n for (let animationIndex = 0; animationIndex < slide.animations.length; animationIndex++) {\n const animation = slide.animations[animationIndex];\n if (animation === undefined) {\n continue;\n }\n\n const durationMs = getSlideAnimationDuration(animation);\n const totalFrames = Math.ceil((durationMs / 1000) * this.props.framesPerSecond);\n\n for (let frameIndex = 0; frameIndex < totalFrames; frameIndex++) {\n this.renderImage(\n slideIndex,\n animationIndex + 1,\n frameIndex * (durationMs / totalFrames),\n );\n }\n\n for (let i = 0; i < animationHoldFrames; i++) {\n this.renderImage(slideIndex, animationIndex + 1);\n }\n }\n } else {\n const keyBuildIndices = getKeySlideBuildIndices(slide);\n for (const buildIndex of keyBuildIndices) {\n this.renderImage(slideIndex, buildIndex);\n }\n }\n }\n }\n\n async renderImage(\n slideIndex: number,\n buildIndex: number,\n buildTime: number | null = null,\n ): Promise<void> {\n const { getFilenameForImage, objectRenderers, logFrequency, presentation } = this.props;\n const { directoryName, imageById, imageIndex, startImageIndex } = this.state;\n\n this.state.imageIndex += 1;\n if (imageIndex < startImageIndex) {\n return;\n }\n\n const filename = path.join(directoryName, getFilenameForImage(imageIndex));\n\n const slide = presentation.slides[slideIndex];\n if (slide === undefined) {\n return;\n }\n\n const canvas = createCanvasElement(presentation.size);\n const context: UnifiedCanvasContext = {\n type: CanvasContextType.Node,\n context: canvas.getContext(\"2d\"),\n };\n\n const objectState = getObjectState({\n slide,\n buildIndex,\n buildTime,\n });\n\n // Render background color.\n context.context.fillStyle = getRgbStringForColor(presentation.backgroundColor);\n context.context.fillRect(0, 0, canvas.width, canvas.height);\n\n function renderObject(object: SlideObject, opacity: number) {\n const objectRenderer = objectRenderers[object.objectType];\n const currentObject = objectState.get(object);\n if (objectRenderer === undefined || currentObject === undefined) {\n return;\n }\n objectRenderer({\n ctx: context,\n imageById,\n object: currentObject,\n opacity,\n renderObject,\n createPath2D,\n });\n }\n\n // Render all objects in the slide.\n for (const object of slide.objects) {\n renderObject(object, 1.0);\n }\n\n await canvas.toFile(filename, { format: this.props.imageFormat });\n if (logFrequency > 0 && imageIndex % logFrequency === 0) {\n console.log(`Rendered image ${imageIndex}: ${filename}`);\n }\n }\n}\n","import { UnifiedImage } from \"../../../renderer/browser-canvas/types/UnifiedImage\";\n\nexport interface PDFRendererState {\n imageById: Record<string, UnifiedImage>;\n}\n\nexport const PDF_RENDERER_DEFAULT_STATE: PDFRendererState = Object.freeze({\n imageById: {},\n});\n","import { Canvas } from \"skia-canvas\";\n\nimport {\n CanvasContextType,\n UnifiedCanvasContext,\n} from \"../../renderer/browser-canvas/types/UnifiedCanvasContext\";\nimport { DEFAULT_OBJECT_RENDERERS } from \"../../renderer/browser-canvas/utils/defaultObjectRenderers\";\nimport { Presentation } from \"../../types/Presentation\";\nimport { SlideObject } from \"../../types/SlideObject\";\nimport { getRgbStringForColor } from \"../../utils/color/getRgbStringForColor\";\nimport { getObjectState } from \"../../utils/presentation/getObjectState\";\nimport { getSvgImageUrlById } from \"../../utils/presentation/getSvgImageUrlById\";\nimport { getKeySlideBuildIndices } from \"../../utils/slide/getKeySlideBuildIndices\";\nimport { createCanvasElement } from \"../utils/createCanvasElement\";\nimport { createPath2D } from \"../utils/createPath2D\";\nimport { loadPresentationImages } from \"../utils/loadPresentationImages\";\nimport { PDFRendererProps } from \"./types/PDFRendererProps\";\nimport { PDF_RENDERER_DEFAULT_STATE, PDFRendererState } from \"./types/PDFRendererState\";\n\nexport class PDFRenderer {\n props: PDFRendererProps;\n state: PDFRendererState;\n\n constructor(props: Partial<PDFRendererProps>) {\n const { objectRenderers, ...rest } = props;\n this.props = {\n presentation: Presentation(),\n objectRenderers: {\n ...DEFAULT_OBJECT_RENDERERS,\n ...objectRenderers,\n },\n resourcePathPrefix: \"\",\n ...rest,\n };\n this.state = { ...PDF_RENDERER_DEFAULT_STATE };\n }\n\n async save(filename: string): Promise<void> {\n const { presentation } = this.props;\n this.state = {\n ...PDF_RENDERER_DEFAULT_STATE,\n imageById: await loadPresentationImages(\n { ...presentation.resources.images, ...getSvgImageUrlById(presentation) },\n this.props.resourcePathPrefix,\n ),\n };\n\n const canvas = createCanvasElement(presentation.size);\n\n for (let slideIndex = 0; slideIndex < presentation.slides.length; slideIndex++) {\n const slide = presentation.slides[slideIndex];\n if (slide === undefined) {\n continue;\n }\n\n const keyBuildIndices = getKeySlideBuildIndices(slide);\n for (const buildIndex of keyBuildIndices) {\n this.addPage(canvas, slideIndex, buildIndex);\n }\n }\n\n await canvas.toFile(filename, { format: \"pdf\" });\n }\n\n addPage(canvas: Canvas, slideIndex: number, buildIndex: number): void {\n const { objectRenderers, presentation } = this.props;\n const { imageById } = this.state;\n const slide = presentation.slides[slideIndex];\n if (slide === undefined) {\n return;\n }\n\n const ctx = canvas.newPage(presentation.size.width, presentation.size.height);\n\n const context: UnifiedCanvasContext = {\n type: CanvasContextType.Node,\n context: ctx,\n };\n\n const objectState = getObjectState({\n slide,\n buildIndex,\n buildTime: null,\n });\n\n // Render background color.\n context.context.fillStyle = getRgbStringForColor(presentation.backgroundColor);\n context.context.fillRect(0, 0, canvas.width, canvas.height);\n\n function renderObject(object: SlideObject, opacity: number) {\n const objectRenderer = objectRenderers[object.objectType];\n const currentObject = objectState.get(object);\n if (objectRenderer === undefined || currentObject === undefined) {\n return;\n }\n objectRenderer({\n ctx: context,\n imageById,\n object: currentObject,\n opacity,\n renderObject,\n createPath2D,\n });\n }\n\n // Render all objects in the slide.\n for (const object of slide.objects) {\n renderObject(object, 1.0);\n }\n }\n}\n","/*!\n\nJSZip v3.10.1 - A JavaScript class for generating and reading zip files\n<http://stuartk.com/jszip>\n\n(c) 2009-2016 Stuart Knightley <stuart [at] stuartk.com>\nDual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/main/LICENSE.markdown.\n\nJSZip uses the library pako released under the MIT license :\nhttps://github.com/nodeca/pako/blob/main/LICENSE\n*/\n\n!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{(\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:this).JSZip=e()}}(function(){return function s(a,o,h){function u(r,e){if(!o[r]){if(!a[r]){var t=\"function\"==typeof require&&require;if(!e&&t)return t(r,!0);if(l)return l(r,!0);var n=new Error(\"Cannot find module '\"+r+\"'\");throw n.code=\"MODULE_NOT_FOUND\",n}var i=o[r]={exports:{}};a[r][0].call(i.exports,function(e){var t=a[r][1][e];return u(t||e)},i,i.exports,s,a,o,h)}return o[r].exports}for(var l=\"function\"==typeof require&&require,e=0;e<h.length;e++)u(h[e]);return u}({1:[function(e,t,r){\"use strict\";var d=e(\"./utils\"),c=e(\"./support\"),p=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";r.encode=function(e){for(var t,r,n,i,s,a,o,h=[],u=0,l=e.length,f=l,c=\"string\"!==d.getTypeOf(e);u<e.length;)f=l-u,n=c?(t=e[u++],r=u<l?e[u++]:0,u<l?e[u++]:0):(t=e.charCodeAt(u++),r=u<l?e.charCodeAt(u++):0,u<l?e.charCodeAt(u++):0),i=t>>2,s=(3&t)<<4|r>>4,a=1<f?(15&r)<<2|n>>6:64,o=2<f?63&n:64,h.push(p.charAt(i)+p.charAt(s)+p.charAt(a)+p.charAt(o));return h.join(\"\")},r.decode=function(e){var t,r,n,i,s,a,o=0,h=0,u=\"data:\";if(e.substr(0,u.length)===u)throw new Error(\"Invalid base64 input, it looks like a data url.\");var l,f=3*(e=e.replace(/[^A-Za-z0-9+/=]/g,\"\")).length/4;if(e.charAt(e.length-1)===p.charAt(64)&&f--,e.charAt(e.length-2)===p.charAt(64)&&f--,f%1!=0)throw new Error(\"Invalid base64 input, bad content length.\");for(l=c.uint8array?new Uint8Array(0|f):new Array(0|f);o<e.length;)t=p.indexOf(e.charAt(o++))<<2|(i=p.indexOf(e.charAt(o++)))>>4,r=(15&i)<<4|(s=p.indexOf(e.charAt(o++)))>>2,n=(3&s)<<6|(a=p.indexOf(e.charAt(o++))),l[h++]=t,64!==s&&(l[h++]=r),64!==a&&(l[h++]=n);return l}},{\"./support\":30,\"./utils\":32}],2:[function(e,t,r){\"use strict\";var n=e(\"./external\"),i=e(\"./stream/DataWorker\"),s=e(\"./stream/Crc32Probe\"),a=e(\"./stream/DataLengthProbe\");function o(e,t,r,n,i){this.compressedSize=e,this.uncompressedSize=t,this.crc32=r,this.compression=n,this.compressedContent=i}o.prototype={getContentWorker:function(){var e=new i(n.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new a(\"data_length\")),t=this;return e.on(\"end\",function(){if(this.streamInfo.data_length!==t.uncompressedSize)throw new Error(\"Bug : uncompressed data size mismatch\")}),e},getCompressedWorker:function(){return new i(n.Promise.resolve(this.compressedContent)).withStreamInfo(\"compressedSize\",this.compressedSize).withStreamInfo(\"uncompressedSize\",this.uncompressedSize).withStreamInfo(\"crc32\",this.crc32).withStreamInfo(\"compression\",this.compression)}},o.createWorkerFrom=function(e,t,r){return e.pipe(new s).pipe(new a(\"uncompressedSize\")).pipe(t.compressWorker(r)).pipe(new a(\"compressedSize\")).withStreamInfo(\"compression\",t)},t.exports=o},{\"./external\":6,\"./stream/Crc32Probe\":25,\"./stream/DataLengthProbe\":26,\"./stream/DataWorker\":27}],3:[function(e,t,r){\"use strict\";var n=e(\"./stream/GenericWorker\");r.STORE={magic:\"\\0\\0\",compressWorker:function(){return new n(\"STORE compression\")},uncompressWorker:function(){return new n(\"STORE decompression\")}},r.DEFLATE=e(\"./flate\")},{\"./flate\":7,\"./stream/GenericWorker\":28}],4:[function(e,t,r){\"use strict\";var n=e(\"./utils\");var o=function(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t){return void 0!==e&&e.length?\"string\"!==n.getTypeOf(e)?function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a<s;a++)e=e>>>8^i[255&(e^t[a])];return-1^e}(0|t,e,e.length,0):function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a<s;a++)e=e>>>8^i[255&(e^t.charCodeAt(a))];return-1^e}(0|t,e,e.length,0):0}},{\"./utils\":32}],5:[function(e,t,r){\"use strict\";r.base64=!1,r.binary=!1,r.dir=!1,r.createFolders=!0,r.date=null,r.compression=null,r.compressionOptions=null,r.comment=null,r.unixPermissions=null,r.dosPermissions=null},{}],6:[function(e,t,r){\"use strict\";var n=null;n=\"undefined\"!=typeof Promise?Promise:e(\"lie\"),t.exports={Promise:n}},{lie:37}],7:[function(e,t,r){\"use strict\";var n=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Uint32Array,i=e(\"pako\"),s=e(\"./utils\"),a=e(\"./stream/GenericWorker\"),o=n?\"uint8array\":\"array\";function h(e,t){a.call(this,\"FlateWorker/\"+e),this._pako=null,this._pakoAction=e,this._pakoOptions=t,this.meta={}}r.magic=\"\\b\\0\",s.inherits(h,a),h.prototype.processChunk=function(e){this.meta=e.meta,null===this._pako&&this._createPako(),this._pako.push(s.transformTo(o,e.data),!1)},h.prototype.flush=function(){a.prototype.flush.call(this),null===this._pako&&this._createPako(),this._pako.push([],!0)},h.prototype.cleanUp=function(){a.prototype.cleanUp.call(this),this._pako=null},h.prototype._createPako=function(){this._pako=new i[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var t=this;this._pako.onData=function(e){t.push({data:e,meta:t.meta})}},r.compressWorker=function(e){return new h(\"Deflate\",e)},r.uncompressWorker=function(){return new h(\"Inflate\",{})}},{\"./stream/GenericWorker\":28,\"./utils\":32,pako:38}],8:[function(e,t,r){\"use strict\";function A(e,t){var r,n=\"\";for(r=0;r<t;r++)n+=String.fromCharCode(255&e),e>>>=8;return n}function n(e,t,r,n,i,s){var a,o,h=e.file,u=e.compression,l=s!==O.utf8encode,f=I.transformTo(\"string\",s(h.name)),c=I.transformTo(\"string\",O.utf8encode(h.name)),d=h.comment,p=I.transformTo(\"string\",s(d)),m=I.transformTo(\"string\",O.utf8encode(d)),_=c.length!==h.name.length,g=m.length!==d.length,b=\"\",v=\"\",y=\"\",w=h.dir,k=h.date,x={crc32:0,compressedSize:0,uncompressedSize:0};t&&!r||(x.crc32=e.crc32,x.compressedSize=e.compressedSize,x.uncompressedSize=e.uncompressedSize);var S=0;t&&(S|=8),l||!_&&!g||(S|=2048);var z=0,C=0;w&&(z|=16),\"UNIX\"===i?(C=798,z|=function(e,t){var r=e;return e||(r=t?16893:33204),(65535&r)<<16}(h.unixPermissions,w)):(C=20,z|=function(e){return 63&(e||0)}(h.dosPermissions)),a=k.getUTCHours(),a<<=6,a|=k.getUTCMinutes(),a<<=5,a|=k.getUTCSeconds()/2,o=k.getUTCFullYear()-1980,o<<=4,o|=k.getUTCMonth()+1,o<<=5,o|=k.getUTCDate(),_&&(v=A(1,1)+A(B(f),4)+c,b+=\"up\"+A(v.length,2)+v),g&&(y=A(1,1)+A(B(p),4)+m,b+=\"uc\"+A(y.length,2)+y);var E=\"\";return E+=\"\\n\\0\",E+=A(S,2),E+=u.magic,E+=A(a,2),E+=A(o,2),E+=A(x.crc32,4),E+=A(x.compressedSize,4),E+=A(x.uncompressedSize,4),E+=A(f.length,2),E+=A(b.length,2),{fileRecord:R.LOCAL_FILE_HEADER+E+f+b,dirRecord:R.CENTRAL_FILE_HEADER+A(C,2)+E+A(p.length,2)+\"\\0\\0\\0\\0\"+A(z,4)+A(n,4)+f+b+p}}var I=e(\"../utils\"),i=e(\"../stream/GenericWorker\"),O=e(\"../utf8\"),B=e(\"../crc32\"),R=e(\"../signature\");function s(e,t,r,n){i.call(this,\"ZipFileWorker\"),this.bytesWritten=0,this.zipComment=t,this.zipPlatform=r,this.encodeFileName=n,this.streamFiles=e,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}I.inherits(s,i),s.prototype.push=function(e){var t=e.meta.percent||0,r=this.entriesCount,n=this._sources.length;this.accumulate?this.contentBuffer.push(e):(this.bytesWritten+=e.data.length,i.prototype.push.call(this,{data:e.data,meta:{currentFile:this.currentFile,percent:r?(t+100*(r-n-1))/r:100}}))},s.prototype.openedSource=function(e){this.currentSourceOffset=this.bytesWritten,this.currentFile=e.file.name;var t=this.streamFiles&&!e.file.dir;if(t){var r=n(e,t,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:r.fileRecord,meta:{percent:0}})}else this.accumulate=!0},s.prototype.closedSource=function(e){this.accumulate=!1;var t=this.streamFiles&&!e.file.dir,r=n(e,t,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(r.dirRecord),t)this.push({data:function(e){return R.DATA_DESCRIPTOR+A(e.crc32,4)+A(e.compressedSize,4)+A(e.uncompressedSize,4)}(e),meta:{percent:100}});else for(this.push({data:r.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},s.prototype.flush=function(){for(var e=this.bytesWritten,t=0;t<this.dirRecords.length;t++)this.push({data:this.dirRecords[t],meta:{percent:100}});var r=this.bytesWritten-e,n=function(e,t,r,n,i){var s=I.transformTo(\"string\",i(n));return R.CENTRAL_DIRECTORY_END+\"\\0\\0\\0\\0\"+A(e,2)+A(e,2)+A(t,4)+A(r,4)+A(s.length,2)+s}(this.dirRecords.length,r,e,this.zipComment,this.encodeFileName);this.push({data:n,meta:{percent:100}})},s.prototype.prepareNextSource=function(){this.previous=this._sources.shift(),this.openedSource(this.previous.streamInfo),this.isPaused?this.previous.pause():this.previous.resume()},s.prototype.registerPrevious=function(e){this._sources.push(e);var t=this;return e.on(\"data\",function(e){t.processChunk(e)}),e.on(\"end\",function(){t.closedSource(t.previous.streamInfo),t._sources.length?t.prepareNextSource():t.end()}),e.on(\"error\",function(e){t.error(e)}),this},s.prototype.resume=function(){return!!i.prototype.resume.call(this)&&(!this.previous&&this._sources.length?(this.prepareNextSource(),!0):this.previous||this._sources.length||this.generatedError?void 0:(this.end(),!0))},s.prototype.error=function(e){var t=this._sources;if(!i.prototype.error.call(this,e))return!1;for(var r=0;r<t.length;r++)try{t[r].error(e)}catch(e){}return!0},s.prototype.lock=function(){i.prototype.lock.call(this);for(var e=this._sources,t=0;t<e.length;t++)e[t].lock()},t.exports=s},{\"../crc32\":4,\"../signature\":23,\"../stream/GenericWorker\":28,\"../utf8\":31,\"../utils\":32}],9:[function(e,t,r){\"use strict\";var u=e(\"../compressions\"),n=e(\"./ZipFileWorker\");r.generateWorker=function(e,a,t){var o=new n(a.streamFiles,t,a.platform,a.encodeFileName),h=0;try{e.forEach(function(e,t){h++;var r=function(e,t){var r=e||t,n=u[r];if(!n)throw new Error(r+\" is not a valid compression method !\");return n}(t.options.compression,a.compression),n=t.options.compressionOptions||a.compressionOptions||{},i=t.dir,s=t.date;t._compressWorker(r,n).withStreamInfo(\"file\",{name:e,dir:i,date:s,comment:t.comment||\"\",unixPermissions:t.unixPermissions,dosPermissions:t.dosPermissions}).pipe(o)}),o.entriesCount=h}catch(e){o.error(e)}return o}},{\"../compressions\":3,\"./ZipFileWorker\":8}],10:[function(e,t,r){\"use strict\";function n(){if(!(this instanceof n))return new n;if(arguments.length)throw new Error(\"The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.\");this.files=Object.create(null),this.comment=null,this.root=\"\",this.clone=function(){var e=new n;for(var t in this)\"function\"!=typeof this[t]&&(e[t]=this[t]);return e}}(n.prototype=e(\"./object\")).loadAsync=e(\"./load\"),n.support=e(\"./support\"),n.defaults=e(\"./defaults\"),n.version=\"3.10.1\",n.loadAsync=function(e,t){return(new n).loadAsync(e,t)},n.external=e(\"./external\"),t.exports=n},{\"./defaults\":5,\"./external\":6,\"./load\":11,\"./object\":15,\"./support\":30}],11:[function(e,t,r){\"use strict\";var u=e(\"./utils\"),i=e(\"./external\"),n=e(\"./utf8\"),s=e(\"./zipEntries\"),a=e(\"./stream/Crc32Probe\"),l=e(\"./nodejsUtils\");function f(n){return new i.Promise(function(e,t){var r=n.decompressed.getContentWorker().pipe(new a);r.on(\"error\",function(e){t(e)}).on(\"end\",function(){r.streamInfo.crc32!==n.decompressed.crc32?t(new Error(\"Corrupted zip : CRC32 mismatch\")):e()}).resume()})}t.exports=function(e,o){var h=this;return o=u.extend(o||{},{base64:!1,checkCRC32:!1,optimizedBinaryString:!1,createFolders:!1,decodeFileName:n.utf8decode}),l.isNode&&l.isStream(e)?i.Promise.reject(new Error(\"JSZip can't accept a stream when loading a zip file.\")):u.prepareContent(\"the loaded zip file\",e,!0,o.optimizedBinaryString,o.base64).then(function(e){var t=new s(o);return t.load(e),t}).then(function(e){var t=[i.Promise.resolve(e)],r=e.files;if(o.checkCRC32)for(var n=0;n<r.length;n++)t.push(f(r[n]));return i.Promise.all(t)}).then(function(e){for(var t=e.shift(),r=t.files,n=0;n<r.length;n++){var i=r[n],s=i.fileNameStr,a=u.resolve(i.fileNameStr);h.file(a,i.decompressed,{binary:!0,optimizedBinaryString:!0,date:i.date,dir:i.dir,comment:i.fileCommentStr.length?i.fileCommentStr:null,unixPermissions:i.unixPermissions,dosPermissions:i.dosPermissions,createFolders:o.createFolders}),i.dir||(h.file(a).unsafeOriginalName=s)}return t.zipComment.length&&(h.comment=t.zipComment),h})}},{\"./external\":6,\"./nodejsUtils\":14,\"./stream/Crc32Probe\":25,\"./utf8\":31,\"./utils\":32,\"./zipEntries\":33}],12:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"../stream/GenericWorker\");function s(e,t){i.call(this,\"Nodejs stream input adapter for \"+e),this._upstreamEnded=!1,this._bindStream(t)}n.inherits(s,i),s.prototype._bindStream=function(e){var t=this;(this._stream=e).pause(),e.on(\"data\",function(e){t.push({data:e,meta:{percent:0}})}).on(\"error\",function(e){t.isPaused?this.generatedError=e:t.error(e)}).on(\"end\",function(){t.isPaused?t._upstreamEnded=!0:t.end()})},s.prototype.pause=function(){return!!i.prototype.pause.call(this)&&(this._stream.pause(),!0)},s.prototype.resume=function(){return!!i.prototype.resume.call(this)&&(this._upstreamEnded?this.end():this._stream.resume(),!0)},t.exports=s},{\"../stream/GenericWorker\":28,\"../utils\":32}],13:[function(e,t,r){\"use strict\";var i=e(\"readable-stream\").Readable;function n(e,t,r){i.call(this,t),this._helper=e;var n=this;e.on(\"data\",function(e,t){n.push(e)||n._helper.pause(),r&&r(t)}).on(\"error\",function(e){n.emit(\"error\",e)}).on(\"end\",function(){n.push(null)})}e(\"../utils\").inherits(n,i),n.prototype._read=function(){this._helper.resume()},t.exports=n},{\"../utils\":32,\"readable-stream\":16}],14:[function(e,t,r){\"use strict\";t.exports={isNode:\"undefined\"!=typeof Buffer,newBufferFrom:function(e,t){if(Buffer.from&&Buffer.from!==Uint8Array.from)return Buffer.from(e,t);if(\"number\"==typeof e)throw new Error('The \"data\" argument must not be a number');return new Buffer(e,t)},allocBuffer:function(e){if(Buffer.alloc)return Buffer.alloc(e);var t=new Buffer(e);return t.fill(0),t},isBuffer:function(e){return Buffer.isBuffer(e)},isStream:function(e){return e&&\"function\"==typeof e.on&&\"function\"==typeof e.pause&&\"function\"==typeof e.resume}}},{}],15:[function(e,t,r){\"use strict\";function s(e,t,r){var n,i=u.getTypeOf(t),s=u.extend(r||{},f);s.date=s.date||new Date,null!==s.compression&&(s.compression=s.compression.toUpperCase()),\"string\"==typeof s.unixPermissions&&(s.unixPermissions=parseInt(s.unixPermissions,8)),s.unixPermissions&&16384&s.unixPermissions&&(s.dir=!0),s.dosPermissions&&16&s.dosPermissions&&(s.dir=!0),s.dir&&(e=g(e)),s.createFolders&&(n=_(e))&&b.call(this,n,!0);var a=\"string\"===i&&!1===s.binary&&!1===s.base64;r&&void 0!==r.binary||(s.binary=!a),(t instanceof c&&0===t.uncompressedSize||s.dir||!t||0===t.length)&&(s.base64=!1,s.binary=!0,t=\"\",s.compression=\"STORE\",i=\"string\");var o=null;o=t instanceof c||t instanceof l?t:p.isNode&&p.isStream(t)?new m(e,t):u.prepareContent(e,t,s.binary,s.optimizedBinaryString,s.base64);var h=new d(e,o,s);this.files[e]=h}var i=e(\"./utf8\"),u=e(\"./utils\"),l=e(\"./stream/GenericWorker\"),a=e(\"./stream/StreamHelper\"),f=e(\"./defaults\"),c=e(\"./compressedObject\"),d=e(\"./zipObject\"),o=e(\"./generate\"),p=e(\"./nodejsUtils\"),m=e(\"./nodejs/NodejsStreamInputAdapter\"),_=function(e){\"/\"===e.slice(-1)&&(e=e.substring(0,e.length-1));var t=e.lastIndexOf(\"/\");return 0<t?e.substring(0,t):\"\"},g=function(e){return\"/\"!==e.slice(-1)&&(e+=\"/\"),e},b=function(e,t){return t=void 0!==t?t:f.createFolders,e=g(e),this.files[e]||s.call(this,e,null,{dir:!0,createFolders:t}),this.files[e]};function h(e){return\"[object RegExp]\"===Object.prototype.toString.call(e)}var n={load:function(){throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\")},forEach:function(e){var t,r,n;for(t in this.files)n=this.files[t],(r=t.slice(this.root.length,t.length))&&t.slice(0,this.root.length)===this.root&&e(r,n)},filter:function(r){var n=[];return this.forEach(function(e,t){r(e,t)&&n.push(t)}),n},file:function(e,t,r){if(1!==arguments.length)return e=this.root+e,s.call(this,e,t,r),this;if(h(e)){var n=e;return this.filter(function(e,t){return!t.dir&&n.test(e)})}var i=this.files[this.root+e];return i&&!i.dir?i:null},folder:function(r){if(!r)return this;if(h(r))return this.filter(function(e,t){return t.dir&&r.test(e)});var e=this.root+r,t=b.call(this,e),n=this.clone();return n.root=t.name,n},remove:function(r){r=this.root+r;var e=this.files[r];if(e||(\"/\"!==r.slice(-1)&&(r+=\"/\"),e=this.files[r]),e&&!e.dir)delete this.files[r];else for(var t=this.filter(function(e,t){return t.name.slice(0,r.length)===r}),n=0;n<t.length;n++)delete this.files[t[n].name];return this},generate:function(){throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\")},generateInternalStream:function(e){var t,r={};try{if((r=u.extend(e||{},{streamFiles:!1,compression:\"STORE\",compressionOptions:null,type:\"\",platform:\"DOS\",comment:null,mimeType:\"application/zip\",encodeFileName:i.utf8encode})).type=r.type.toLowerCase(),r.compression=r.compression.toUpperCase(),\"binarystring\"===r.type&&(r.type=\"string\"),!r.type)throw new Error(\"No output type specified.\");u.checkSupport(r.type),\"darwin\"!==r.platform&&\"freebsd\"!==r.platform&&\"linux\"!==r.platform&&\"sunos\"!==r.platform||(r.platform=\"UNIX\"),\"win32\"===r.platform&&(r.platform=\"DOS\");var n=r.comment||this.comment||\"\";t=o.generateWorker(this,r,n)}catch(e){(t=new l(\"error\")).error(e)}return new a(t,r.type||\"string\",r.mimeType)},generateAsync:function(e,t){return this.generateInternalStream(e).accumulate(t)},generateNodeStream:function(e,t){return(e=e||{}).type||(e.type=\"nodebuffer\"),this.generateInternalStream(e).toNodejsStream(t)}};t.exports=n},{\"./compressedObject\":2,\"./defaults\":5,\"./generate\":9,\"./nodejs/NodejsStreamInputAdapter\":12,\"./nodejsUtils\":14,\"./stream/GenericWorker\":28,\"./stream/StreamHelper\":29,\"./utf8\":31,\"./utils\":32,\"./zipObject\":35}],16:[function(e,t,r){\"use strict\";t.exports=e(\"stream\")},{stream:void 0}],17:[function(e,t,r){\"use strict\";var n=e(\"./DataReader\");function i(e){n.call(this,e);for(var t=0;t<this.data.length;t++)e[t]=255&e[t]}e(\"../utils\").inherits(i,n),i.prototype.byteAt=function(e){return this.data[this.zero+e]},i.prototype.lastIndexOfSignature=function(e){for(var t=e.charCodeAt(0),r=e.charCodeAt(1),n=e.charCodeAt(2),i=e.charCodeAt(3),s=this.length-4;0<=s;--s)if(this.data[s]===t&&this.data[s+1]===r&&this.data[s+2]===n&&this.data[s+3]===i)return s-this.zero;return-1},i.prototype.readAndCheckSignature=function(e){var t=e.charCodeAt(0),r=e.charCodeAt(1),n=e.charCodeAt(2),i=e.charCodeAt(3),s=this.readData(4);return t===s[0]&&r===s[1]&&n===s[2]&&i===s[3]},i.prototype.readData=function(e){if(this.checkOffset(e),0===e)return[];var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./DataReader\":18}],18:[function(e,t,r){\"use strict\";var n=e(\"../utils\");function i(e){this.data=e,this.length=e.length,this.index=0,this.zero=0}i.prototype={checkOffset:function(e){this.checkIndex(this.index+e)},checkIndex:function(e){if(this.length<this.zero+e||e<0)throw new Error(\"End of data reached (data length = \"+this.length+\", asked index = \"+e+\"). Corrupted zip ?\")},setIndex:function(e){this.checkIndex(e),this.index=e},skip:function(e){this.setIndex(this.index+e)},byteAt:function(){},readInt:function(e){var t,r=0;for(this.checkOffset(e),t=this.index+e-1;t>=this.index;t--)r=(r<<8)+this.byteAt(t);return this.index+=e,r},readString:function(e){return n.transformTo(\"string\",this.readData(e))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var e=this.readInt(4);return new Date(Date.UTC(1980+(e>>25&127),(e>>21&15)-1,e>>16&31,e>>11&31,e>>5&63,(31&e)<<1))}},t.exports=i},{\"../utils\":32}],19:[function(e,t,r){\"use strict\";var n=e(\"./Uint8ArrayReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./Uint8ArrayReader\":21}],20:[function(e,t,r){\"use strict\";var n=e(\"./DataReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.byteAt=function(e){return this.data.charCodeAt(this.zero+e)},i.prototype.lastIndexOfSignature=function(e){return this.data.lastIndexOf(e)-this.zero},i.prototype.readAndCheckSignature=function(e){return e===this.readData(4)},i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./DataReader\":18}],21:[function(e,t,r){\"use strict\";var n=e(\"./ArrayReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.readData=function(e){if(this.checkOffset(e),0===e)return new Uint8Array(0);var t=this.data.subarray(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./ArrayReader\":17}],22:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"../support\"),s=e(\"./ArrayReader\"),a=e(\"./StringReader\"),o=e(\"./NodeBufferReader\"),h=e(\"./Uint8ArrayReader\");t.exports=function(e){var t=n.getTypeOf(e);return n.checkSupport(t),\"string\"!==t||i.uint8array?\"nodebuffer\"===t?new o(e):i.uint8array?new h(n.transformTo(\"uint8array\",e)):new s(n.transformTo(\"array\",e)):new a(e)}},{\"../support\":30,\"../utils\":32,\"./ArrayReader\":17,\"./NodeBufferReader\":19,\"./StringReader\":20,\"./Uint8ArrayReader\":21}],23:[function(e,t,r){\"use strict\";r.LOCAL_FILE_HEADER=\"PK\u0003\u0004\",r.CENTRAL_FILE_HEADER=\"PK\u0001\u0002\",r.CENTRAL_DIRECTORY_END=\"PK\u0005\u0006\",r.ZIP64_CENTRAL_DIRECTORY_LOCATOR=\"PK\u0006\u0007\",r.ZIP64_CENTRAL_DIRECTORY_END=\"PK\u0006\u0006\",r.DATA_DESCRIPTOR=\"PK\u0007\\b\"},{}],24:[function(e,t,r){\"use strict\";var n=e(\"./GenericWorker\"),i=e(\"../utils\");function s(e){n.call(this,\"ConvertWorker to \"+e),this.destType=e}i.inherits(s,n),s.prototype.processChunk=function(e){this.push({data:i.transformTo(this.destType,e.data),meta:e.meta})},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],25:[function(e,t,r){\"use strict\";var n=e(\"./GenericWorker\"),i=e(\"../crc32\");function s(){n.call(this,\"Crc32Probe\"),this.withStreamInfo(\"crc32\",0)}e(\"../utils\").inherits(s,n),s.prototype.processChunk=function(e){this.streamInfo.crc32=i(e.data,this.streamInfo.crc32||0),this.push(e)},t.exports=s},{\"../crc32\":4,\"../utils\":32,\"./GenericWorker\":28}],26:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"./GenericWorker\");function s(e){i.call(this,\"DataLengthProbe for \"+e),this.propName=e,this.withStreamInfo(e,0)}n.inherits(s,i),s.prototype.processChunk=function(e){if(e){var t=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=t+e.data.length}i.prototype.processChunk.call(this,e)},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],27:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"./GenericWorker\");function s(e){i.call(this,\"DataWorker\");var t=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type=\"\",this._tickScheduled=!1,e.then(function(e){t.dataIsReady=!0,t.data=e,t.max=e&&e.length||0,t.type=n.getTypeOf(e),t.isPaused||t._tickAndRepeat()},function(e){t.error(e)})}n.inherits(s,i),s.prototype.cleanUp=function(){i.prototype.cleanUp.call(this),this.data=null},s.prototype.resume=function(){return!!i.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,n.delay(this._tickAndRepeat,[],this)),!0)},s.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(n.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},s.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var e=null,t=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case\"string\":e=this.data.substring(this.index,t);break;case\"uint8array\":e=this.data.subarray(this.index,t);break;case\"array\":case\"nodebuffer\":e=this.data.slice(this.index,t)}return this.index=t,this.push({data:e,meta:{percent:this.max?this.index/this.max*100:0}})},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],28:[function(e,t,r){\"use strict\";function n(e){this.name=e||\"default\",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}n.prototype={push:function(e){this.emit(\"data\",e)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit(\"end\"),this.cleanUp(),this.isFinished=!0}catch(e){this.emit(\"error\",e)}return!0},error:function(e){return!this.isFinished&&(this.isPaused?this.generatedError=e:(this.isFinished=!0,this.emit(\"error\",e),this.previous&&this.previous.error(e),this.cleanUp()),!0)},on:function(e,t){return this._listeners[e].push(t),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(e,t){if(this._listeners[e])for(var r=0;r<this._listeners[e].length;r++)this._listeners[e][r].call(this,t)},pipe:function(e){return e.registerPrevious(this)},registerPrevious:function(e){if(this.isLocked)throw new Error(\"The stream '\"+this+\"' has already been used.\");this.streamInfo=e.streamInfo,this.mergeStreamInfo(),this.previous=e;var t=this;return e.on(\"data\",function(e){t.processChunk(e)}),e.on(\"end\",function(){t.end()}),e.on(\"error\",function(e){t.error(e)}),this},pause:function(){return!this.isPaused&&!this.isFinished&&(this.isPaused=!0,this.previous&&this.previous.pause(),!0)},resume:function(){if(!this.isPaused||this.isFinished)return!1;var e=this.isPaused=!1;return this.generatedError&&(this.error(this.generatedError),e=!0),this.previous&&this.previous.resume(),!e},flush:function(){},processChunk:function(e){this.push(e)},withStreamInfo:function(e,t){return this.extraStreamInfo[e]=t,this.mergeStreamInfo(),this},mergeStreamInfo:function(){for(var e in this.extraStreamInfo)Object.prototype.hasOwnProperty.call(this.extraStreamInfo,e)&&(this.streamInfo[e]=this.extraStreamInfo[e])},lock:function(){if(this.isLocked)throw new Error(\"The stream '\"+this+\"' has already been used.\");this.isLocked=!0,this.previous&&this.previous.lock()},toString:function(){var e=\"Worker \"+this.name;return this.previous?this.previous+\" -> \"+e:e}},t.exports=n},{}],29:[function(e,t,r){\"use strict\";var h=e(\"../utils\"),i=e(\"./ConvertWorker\"),s=e(\"./GenericWorker\"),u=e(\"../base64\"),n=e(\"../support\"),a=e(\"../external\"),o=null;if(n.nodestream)try{o=e(\"../nodejs/NodejsStreamOutputAdapter\")}catch(e){}function l(e,o){return new a.Promise(function(t,r){var n=[],i=e._internalType,s=e._outputType,a=e._mimeType;e.on(\"data\",function(e,t){n.push(e),o&&o(t)}).on(\"error\",function(e){n=[],r(e)}).on(\"end\",function(){try{var e=function(e,t,r){switch(e){case\"blob\":return h.newBlob(h.transformTo(\"arraybuffer\",t),r);case\"base64\":return u.encode(t);default:return h.transformTo(e,t)}}(s,function(e,t){var r,n=0,i=null,s=0;for(r=0;r<t.length;r++)s+=t[r].length;switch(e){case\"string\":return t.join(\"\");case\"array\":return Array.prototype.concat.apply([],t);case\"uint8array\":for(i=new Uint8Array(s),r=0;r<t.length;r++)i.set(t[r],n),n+=t[r].length;return i;case\"nodebuffer\":return Buffer.concat(t);default:throw new Error(\"concat : unsupported type '\"+e+\"'\")}}(i,n),a);t(e)}catch(e){r(e)}n=[]}).resume()})}function f(e,t,r){var n=t;switch(t){case\"blob\":case\"arraybuffer\":n=\"uint8array\";break;case\"base64\":n=\"string\"}try{this._internalType=n,this._outputType=t,this._mimeType=r,h.checkSupport(n),this._worker=e.pipe(new i(n)),e.lock()}catch(e){this._worker=new s(\"error\"),this._worker.error(e)}}f.prototype={accumulate:function(e){return l(this,e)},on:function(e,t){var r=this;return\"data\"===e?this._worker.on(e,function(e){t.call(r,e.data,e.meta)}):this._worker.on(e,function(){h.delay(t,arguments,r)}),this},resume:function(){return h.delay(this._worker.resume,[],this._worker),this},pause:function(){return this._worker.pause(),this},toNodejsStream:function(e){if(h.checkSupport(\"nodestream\"),\"nodebuffer\"!==this._outputType)throw new Error(this._outputType+\" is not supported by this method\");return new o(this,{objectMode:\"nodebuffer\"!==this._outputType},e)}},t.exports=f},{\"../base64\":1,\"../external\":6,\"../nodejs/NodejsStreamOutputAdapter\":13,\"../support\":30,\"../utils\":32,\"./ConvertWorker\":24,\"./GenericWorker\":28}],30:[function(e,t,r){\"use strict\";if(r.base64=!0,r.array=!0,r.string=!0,r.arraybuffer=\"undefined\"!=typeof ArrayBuffer&&\"undefined\"!=typeof Uint8Array,r.nodebuffer=\"undefined\"!=typeof Buffer,r.uint8array=\"undefined\"!=typeof Uint8Array,\"undefined\"==typeof ArrayBuffer)r.blob=!1;else{var n=new ArrayBuffer(0);try{r.blob=0===new Blob([n],{type:\"application/zip\"}).size}catch(e){try{var i=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);i.append(n),r.blob=0===i.getBlob(\"application/zip\").size}catch(e){r.blob=!1}}}try{r.nodestream=!!e(\"readable-stream\").Readable}catch(e){r.nodestream=!1}},{\"readable-stream\":16}],31:[function(e,t,s){\"use strict\";for(var o=e(\"./utils\"),h=e(\"./support\"),r=e(\"./nodejsUtils\"),n=e(\"./stream/GenericWorker\"),u=new Array(256),i=0;i<256;i++)u[i]=252<=i?6:248<=i?5:240<=i?4:224<=i?3:192<=i?2:1;u[254]=u[254]=1;function a(){n.call(this,\"utf-8 decode\"),this.leftOver=null}function l(){n.call(this,\"utf-8 encode\")}s.utf8encode=function(e){return h.nodebuffer?r.newBufferFrom(e,\"utf-8\"):function(e){var t,r,n,i,s,a=e.length,o=0;for(i=0;i<a;i++)55296==(64512&(r=e.charCodeAt(i)))&&i+1<a&&56320==(64512&(n=e.charCodeAt(i+1)))&&(r=65536+(r-55296<<10)+(n-56320),i++),o+=r<128?1:r<2048?2:r<65536?3:4;for(t=h.uint8array?new Uint8Array(o):new Array(o),i=s=0;s<o;i++)55296==(64512&(r=e.charCodeAt(i)))&&i+1<a&&56320==(64512&(n=e.charCodeAt(i+1)))&&(r=65536+(r-55296<<10)+(n-56320),i++),r<128?t[s++]=r:(r<2048?t[s++]=192|r>>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t}(e)},s.utf8decode=function(e){return h.nodebuffer?o.transformTo(\"nodebuffer\",e).toString(\"utf-8\"):function(e){var t,r,n,i,s=e.length,a=new Array(2*s);for(t=r=0;t<s;)if((n=e[t++])<128)a[r++]=n;else if(4<(i=u[n]))a[r++]=65533,t+=i-1;else{for(n&=2===i?31:3===i?15:7;1<i&&t<s;)n=n<<6|63&e[t++],i--;1<i?a[r++]=65533:n<65536?a[r++]=n:(n-=65536,a[r++]=55296|n>>10&1023,a[r++]=56320|1023&n)}return a.length!==r&&(a.subarray?a=a.subarray(0,r):a.length=r),o.applyFromCharCode(a)}(e=o.transformTo(h.uint8array?\"uint8array\":\"array\",e))},o.inherits(a,n),a.prototype.processChunk=function(e){var t=o.transformTo(h.uint8array?\"uint8array\":\"array\",e.data);if(this.leftOver&&this.leftOver.length){if(h.uint8array){var r=t;(t=new Uint8Array(r.length+this.leftOver.length)).set(this.leftOver,0),t.set(r,this.leftOver.length)}else t=this.leftOver.concat(t);this.leftOver=null}var n=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+u[e[r]]>t?r:t}(t),i=t;n!==t.length&&(h.uint8array?(i=t.subarray(0,n),this.leftOver=t.subarray(n,t.length)):(i=t.slice(0,n),this.leftOver=t.slice(n,t.length))),this.push({data:s.utf8decode(i),meta:e.meta})},a.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:s.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},s.Utf8DecodeWorker=a,o.inherits(l,n),l.prototype.processChunk=function(e){this.push({data:s.utf8encode(e.data),meta:e.meta})},s.Utf8EncodeWorker=l},{\"./nodejsUtils\":14,\"./stream/GenericWorker\":28,\"./support\":30,\"./utils\":32}],32:[function(e,t,a){\"use strict\";var o=e(\"./support\"),h=e(\"./base64\"),r=e(\"./nodejsUtils\"),u=e(\"./external\");function n(e){return e}function l(e,t){for(var r=0;r<e.length;++r)t[r]=255&e.charCodeAt(r);return t}e(\"setimmediate\"),a.newBlob=function(t,r){a.checkSupport(\"blob\");try{return new Blob([t],{type:r})}catch(e){try{var n=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);return n.append(t),n.getBlob(r)}catch(e){throw new Error(\"Bug : can't construct the Blob.\")}}};var i={stringifyByChunk:function(e,t,r){var n=[],i=0,s=e.length;if(s<=r)return String.fromCharCode.apply(null,e);for(;i<s;)\"array\"===t||\"nodebuffer\"===t?n.push(String.fromCharCode.apply(null,e.slice(i,Math.min(i+r,s)))):n.push(String.fromCharCode.apply(null,e.subarray(i,Math.min(i+r,s)))),i+=r;return n.join(\"\")},stringifyByChar:function(e){for(var t=\"\",r=0;r<e.length;r++)t+=String.fromCharCode(e[r]);return t},applyCanBeUsed:{uint8array:function(){try{return o.uint8array&&1===String.fromCharCode.apply(null,new Uint8Array(1)).length}catch(e){return!1}}(),nodebuffer:function(){try{return o.nodebuffer&&1===String.fromCharCode.apply(null,r.allocBuffer(1)).length}catch(e){return!1}}()}};function s(e){var t=65536,r=a.getTypeOf(e),n=!0;if(\"uint8array\"===r?n=i.applyCanBeUsed.uint8array:\"nodebuffer\"===r&&(n=i.applyCanBeUsed.nodebuffer),n)for(;1<t;)try{return i.stringifyByChunk(e,r,t)}catch(e){t=Math.floor(t/2)}return i.stringifyByChar(e)}function f(e,t){for(var r=0;r<e.length;r++)t[r]=e[r];return t}a.applyFromCharCode=s;var c={};c.string={string:n,array:function(e){return l(e,new Array(e.length))},arraybuffer:function(e){return c.string.uint8array(e).buffer},uint8array:function(e){return l(e,new Uint8Array(e.length))},nodebuffer:function(e){return l(e,r.allocBuffer(e.length))}},c.array={string:s,array:n,arraybuffer:function(e){return new Uint8Array(e).buffer},uint8array:function(e){return new Uint8Array(e)},nodebuffer:function(e){return r.newBufferFrom(e)}},c.arraybuffer={string:function(e){return s(new Uint8Array(e))},array:function(e){return f(new Uint8Array(e),new Array(e.byteLength))},arraybuffer:n,uint8array:function(e){return new Uint8Array(e)},nodebuffer:function(e){return r.newBufferFrom(new Uint8Array(e))}},c.uint8array={string:s,array:function(e){return f(e,new Array(e.length))},arraybuffer:function(e){return e.buffer},uint8array:n,nodebuffer:function(e){return r.newBufferFrom(e)}},c.nodebuffer={string:s,array:function(e){return f(e,new Array(e.length))},arraybuffer:function(e){return c.nodebuffer.uint8array(e).buffer},uint8array:function(e){return f(e,new Uint8Array(e.length))},nodebuffer:n},a.transformTo=function(e,t){if(t=t||\"\",!e)return t;a.checkSupport(e);var r=a.getTypeOf(t);return c[r][e](t)},a.resolve=function(e){for(var t=e.split(\"/\"),r=[],n=0;n<t.length;n++){var i=t[n];\".\"===i||\"\"===i&&0!==n&&n!==t.length-1||(\"..\"===i?r.pop():r.push(i))}return r.join(\"/\")},a.getTypeOf=function(e){return\"string\"==typeof e?\"string\":\"[object Array]\"===Object.prototype.toString.call(e)?\"array\":o.nodebuffer&&r.isBuffer(e)?\"nodebuffer\":o.uint8array&&e instanceof Uint8Array?\"uint8array\":o.arraybuffer&&e instanceof ArrayBuffer?\"arraybuffer\":void 0},a.checkSupport=function(e){if(!o[e.toLowerCase()])throw new Error(e+\" is not supported by this platform\")},a.MAX_VALUE_16BITS=65535,a.MAX_VALUE_32BITS=-1,a.pretty=function(e){var t,r,n=\"\";for(r=0;r<(e||\"\").length;r++)n+=\"\\\\x\"+((t=e.charCodeAt(r))<16?\"0\":\"\")+t.toString(16).toUpperCase();return n},a.delay=function(e,t,r){setImmediate(function(){e.apply(r||null,t||[])})},a.inherits=function(e,t){function r(){}r.prototype=t.prototype,e.prototype=new r},a.extend=function(){var e,t,r={};for(e=0;e<arguments.length;e++)for(t in arguments[e])Object.prototype.hasOwnProperty.call(arguments[e],t)&&void 0===r[t]&&(r[t]=arguments[e][t]);return r},a.prepareContent=function(r,e,n,i,s){return u.Promise.resolve(e).then(function(n){return o.blob&&(n instanceof Blob||-1!==[\"[object File]\",\"[object Blob]\"].indexOf(Object.prototype.toString.call(n)))&&\"undefined\"!=typeof FileReader?new u.Promise(function(t,r){var e=new FileReader;e.onload=function(e){t(e.target.result)},e.onerror=function(e){r(e.target.error)},e.readAsArrayBuffer(n)}):n}).then(function(e){var t=a.getTypeOf(e);return t?(\"arraybuffer\"===t?e=a.transformTo(\"uint8array\",e):\"string\"===t&&(s?e=h.decode(e):n&&!0!==i&&(e=function(e){return l(e,o.uint8array?new Uint8Array(e.length):new Array(e.length))}(e))),e):u.Promise.reject(new Error(\"Can't read the data of '\"+r+\"'. Is it in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?\"))})}},{\"./base64\":1,\"./external\":6,\"./nodejsUtils\":14,\"./support\":30,setimmediate:54}],33:[function(e,t,r){\"use strict\";var n=e(\"./reader/readerFor\"),i=e(\"./utils\"),s=e(\"./signature\"),a=e(\"./zipEntry\"),o=e(\"./support\");function h(e){this.files=[],this.loadOptions=e}h.prototype={checkSignature:function(e){if(!this.reader.readAndCheckSignature(e)){this.reader.index-=4;var t=this.reader.readString(4);throw new Error(\"Corrupted zip or bug: unexpected signature (\"+i.pretty(t)+\", expected \"+i.pretty(e)+\")\")}},isSignature:function(e,t){var r=this.reader.index;this.reader.setIndex(e);var n=this.reader.readString(4)===t;return this.reader.setIndex(r),n},readBlockEndOfCentral:function(){this.diskNumber=this.reader.readInt(2),this.diskWithCentralDirStart=this.reader.readInt(2),this.centralDirRecordsOnThisDisk=this.reader.readInt(2),this.centralDirRecords=this.reader.readInt(2),this.centralDirSize=this.reader.readInt(4),this.centralDirOffset=this.reader.readInt(4),this.zipCommentLength=this.reader.readInt(2);var e=this.reader.readData(this.zipCommentLength),t=o.uint8array?\"uint8array\":\"array\",r=i.transformTo(t,e);this.zipComment=this.loadOptions.decodeFileName(r)},readBlockZip64EndOfCentral:function(){this.zip64EndOfCentralSize=this.reader.readInt(8),this.reader.skip(4),this.diskNumber=this.reader.readInt(4),this.diskWithCentralDirStart=this.reader.readInt(4),this.centralDirRecordsOnThisDisk=this.reader.readInt(8),this.centralDirRecords=this.reader.readInt(8),this.centralDirSize=this.reader.readInt(8),this.centralDirOffset=this.reader.readInt(8),this.zip64ExtensibleData={};for(var e,t,r,n=this.zip64EndOfCentralSize-44;0<n;)e=this.reader.readInt(2),t=this.reader.readInt(4),r=this.reader.readData(t),this.zip64ExtensibleData[e]={id:e,length:t,value:r}},readBlockZip64EndOfCentralLocator:function(){if(this.diskWithZip64CentralDirStart=this.reader.readInt(4),this.relativeOffsetEndOfZip64CentralDir=this.reader.readInt(8),this.disksCount=this.reader.readInt(4),1<this.disksCount)throw new Error(\"Multi-volumes zip are not supported\")},readLocalFiles:function(){var e,t;for(e=0;e<this.files.length;e++)t=this.files[e],this.reader.setIndex(t.localHeaderOffset),this.checkSignature(s.LOCAL_FILE_HEADER),t.readLocalPart(this.reader),t.handleUTF8(),t.processAttributes()},readCentralDir:function(){var e;for(this.reader.setIndex(this.centralDirOffset);this.reader.readAndCheckSignature(s.CENTRAL_FILE_HEADER);)(e=new a({zip64:this.zip64},this.loadOptions)).readCentralPart(this.reader),this.files.push(e);if(this.centralDirRecords!==this.files.length&&0!==this.centralDirRecords&&0===this.files.length)throw new Error(\"Corrupted zip or bug: expected \"+this.centralDirRecords+\" records in central dir, got \"+this.files.length)},readEndOfCentral:function(){var e=this.reader.lastIndexOfSignature(s.CENTRAL_DIRECTORY_END);if(e<0)throw!this.isSignature(0,s.LOCAL_FILE_HEADER)?new Error(\"Can't find end of central directory : is this a zip file ? If it is, see https://stuk.github.io/jszip/documentation/howto/read_zip.html\"):new Error(\"Corrupted zip: can't find end of central directory\");this.reader.setIndex(e);var t=e;if(this.checkSignature(s.CENTRAL_DIRECTORY_END),this.readBlockEndOfCentral(),this.diskNumber===i.MAX_VALUE_16BITS||this.diskWithCentralDirStart===i.MAX_VALUE_16BITS||this.centralDirRecordsOnThisDisk===i.MAX_VALUE_16BITS||this.centralDirRecords===i.MAX_VALUE_16BITS||this.centralDirSize===i.MAX_VALUE_32BITS||this.centralDirOffset===i.MAX_VALUE_32BITS){if(this.zip64=!0,(e=this.reader.lastIndexOfSignature(s.ZIP64_CENTRAL_DIRECTORY_LOCATOR))<0)throw new Error(\"Corrupted zip: can't find the ZIP64 end of central directory locator\");if(this.reader.setIndex(e),this.checkSignature(s.ZIP64_CENTRAL_DIRECTORY_LOCATOR),this.readBlockZip64EndOfCentralLocator(),!this.isSignature(this.relativeOffsetEndOfZip64CentralDir,s.ZIP64_CENTRAL_DIRECTORY_END)&&(this.relativeOffsetEndOfZip64CentralDir=this.reader.lastIndexOfSignature(s.ZIP64_CENTRAL_DIRECTORY_END),this.relativeOffsetEndOfZip64CentralDir<0))throw new Error(\"Corrupted zip: can't find the ZIP64 end of central directory\");this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir),this.checkSignature(s.ZIP64_CENTRAL_DIRECTORY_END),this.readBlockZip64EndOfCentral()}var r=this.centralDirOffset+this.centralDirSize;this.zip64&&(r+=20,r+=12+this.zip64EndOfCentralSize);var n=t-r;if(0<n)this.isSignature(t,s.CENTRAL_FILE_HEADER)||(this.reader.zero=n);else if(n<0)throw new Error(\"Corrupted zip: missing \"+Math.abs(n)+\" bytes.\")},prepareReader:function(e){this.reader=n(e)},load:function(e){this.prepareReader(e),this.readEndOfCentral(),this.readCentralDir(),this.readLocalFiles()}},t.exports=h},{\"./reader/readerFor\":22,\"./signature\":23,\"./support\":30,\"./utils\":32,\"./zipEntry\":34}],34:[function(e,t,r){\"use strict\";var n=e(\"./reader/readerFor\"),s=e(\"./utils\"),i=e(\"./compressedObject\"),a=e(\"./crc32\"),o=e(\"./utf8\"),h=e(\"./compressions\"),u=e(\"./support\");function l(e,t){this.options=e,this.loadOptions=t}l.prototype={isEncrypted:function(){return 1==(1&this.bitFlag)},useUTF8:function(){return 2048==(2048&this.bitFlag)},readLocalPart:function(e){var t,r;if(e.skip(22),this.fileNameLength=e.readInt(2),r=e.readInt(2),this.fileName=e.readData(this.fileNameLength),e.skip(r),-1===this.compressedSize||-1===this.uncompressedSize)throw new Error(\"Bug or corrupted zip : didn't get enough information from the central directory (compressedSize === -1 || uncompressedSize === -1)\");if(null===(t=function(e){for(var t in h)if(Object.prototype.hasOwnProperty.call(h,t)&&h[t].magic===e)return h[t];return null}(this.compressionMethod)))throw new Error(\"Corrupted zip : compression \"+s.pretty(this.compressionMethod)+\" unknown (inner file : \"+s.transformTo(\"string\",this.fileName)+\")\");this.decompressed=new i(this.compressedSize,this.uncompressedSize,this.crc32,t,e.readData(this.compressedSize))},readCentralPart:function(e){this.versionMadeBy=e.readInt(2),e.skip(2),this.bitFlag=e.readInt(2),this.compressionMethod=e.readString(2),this.date=e.readDate(),this.crc32=e.readInt(4),this.compressedSize=e.readInt(4),this.uncompressedSize=e.readInt(4);var t=e.readInt(2);if(this.extraFieldsLength=e.readInt(2),this.fileCommentLength=e.readInt(2),this.diskNumberStart=e.readInt(2),this.internalFileAttributes=e.readInt(2),this.externalFileAttributes=e.readInt(4),this.localHeaderOffset=e.readInt(4),this.isEncrypted())throw new Error(\"Encrypted zip are not supported\");e.skip(t),this.readExtraFields(e),this.parseZIP64ExtraField(e),this.fileComment=e.readData(this.fileCommentLength)},processAttributes:function(){this.unixPermissions=null,this.dosPermissions=null;var e=this.versionMadeBy>>8;this.dir=!!(16&this.externalFileAttributes),0==e&&(this.dosPermissions=63&this.externalFileAttributes),3==e&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||\"/\"!==this.fileNameStr.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var e=n(this.extraFields[1].value);this.uncompressedSize===s.MAX_VALUE_32BITS&&(this.uncompressedSize=e.readInt(8)),this.compressedSize===s.MAX_VALUE_32BITS&&(this.compressedSize=e.readInt(8)),this.localHeaderOffset===s.MAX_VALUE_32BITS&&(this.localHeaderOffset=e.readInt(8)),this.diskNumberStart===s.MAX_VALUE_32BITS&&(this.diskNumberStart=e.readInt(4))}},readExtraFields:function(e){var t,r,n,i=e.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});e.index+4<i;)t=e.readInt(2),r=e.readInt(2),n=e.readData(r),this.extraFields[t]={id:t,length:r,value:n};e.setIndex(i)},handleUTF8:function(){var e=u.uint8array?\"uint8array\":\"array\";if(this.useUTF8())this.fileNameStr=o.utf8decode(this.fileName),this.fileCommentStr=o.utf8decode(this.fileComment);else{var t=this.findExtraFieldUnicodePath();if(null!==t)this.fileNameStr=t;else{var r=s.transformTo(e,this.fileName);this.fileNameStr=this.loadOptions.decodeFileName(r)}var n=this.findExtraFieldUnicodeComment();if(null!==n)this.fileCommentStr=n;else{var i=s.transformTo(e,this.fileComment);this.fileCommentStr=this.loadOptions.decodeFileName(i)}}},findExtraFieldUnicodePath:function(){var e=this.extraFields[28789];if(e){var t=n(e.value);return 1!==t.readInt(1)?null:a(this.fileName)!==t.readInt(4)?null:o.utf8decode(t.readData(e.length-5))}return null},findExtraFieldUnicodeComment:function(){var e=this.extraFields[25461];if(e){var t=n(e.value);return 1!==t.readInt(1)?null:a(this.fileComment)!==t.readInt(4)?null:o.utf8decode(t.readData(e.length-5))}return null}},t.exports=l},{\"./compressedObject\":2,\"./compressions\":3,\"./crc32\":4,\"./reader/readerFor\":22,\"./support\":30,\"./utf8\":31,\"./utils\":32}],35:[function(e,t,r){\"use strict\";function n(e,t,r){this.name=e,this.dir=r.dir,this.date=r.date,this.comment=r.comment,this.unixPermissions=r.unixPermissions,this.dosPermissions=r.dosPermissions,this._data=t,this._dataBinary=r.binary,this.options={compression:r.compression,compressionOptions:r.compressionOptions}}var s=e(\"./stream/StreamHelper\"),i=e(\"./stream/DataWorker\"),a=e(\"./utf8\"),o=e(\"./compressedObject\"),h=e(\"./stream/GenericWorker\");n.prototype={internalStream:function(e){var t=null,r=\"string\";try{if(!e)throw new Error(\"No output type specified.\");var n=\"string\"===(r=e.toLowerCase())||\"text\"===r;\"binarystring\"!==r&&\"text\"!==r||(r=\"string\"),t=this._decompressWorker();var i=!this._dataBinary;i&&!n&&(t=t.pipe(new a.Utf8EncodeWorker)),!i&&n&&(t=t.pipe(new a.Utf8DecodeWorker))}catch(e){(t=new h(\"error\")).error(e)}return new s(t,r,\"\")},async:function(e,t){return this.internalStream(e).accumulate(t)},nodeStream:function(e,t){return this.internalStream(e||\"nodebuffer\").toNodejsStream(t)},_compressWorker:function(e,t){if(this._data instanceof o&&this._data.compression.magic===e.magic)return this._data.getCompressedWorker();var r=this._decompressWorker();return this._dataBinary||(r=r.pipe(new a.Utf8EncodeWorker)),o.createWorkerFrom(r,e,t)},_decompressWorker:function(){return this._data instanceof o?this._data.getContentWorker():this._data instanceof h?this._data:new i(this._data)}};for(var u=[\"asText\",\"asBinary\",\"asNodeBuffer\",\"asUint8Array\",\"asArrayBuffer\"],l=function(){throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\")},f=0;f<u.length;f++)n.prototype[u[f]]=l;t.exports=n},{\"./compressedObject\":2,\"./stream/DataWorker\":27,\"./stream/GenericWorker\":28,\"./stream/StreamHelper\":29,\"./utf8\":31}],36:[function(e,l,t){(function(t){\"use strict\";var r,n,e=t.MutationObserver||t.WebKitMutationObserver;if(e){var i=0,s=new e(u),a=t.document.createTextNode(\"\");s.observe(a,{characterData:!0}),r=function(){a.data=i=++i%2}}else if(t.setImmediate||void 0===t.MessageChannel)r=\"document\"in t&&\"onreadystatechange\"in t.document.createElement(\"script\")?function(){var e=t.document.createElement(\"script\");e.onreadystatechange=function(){u(),e.onreadystatechange=null,e.parentNode.removeChild(e),e=null},t.document.documentElement.appendChild(e)}:function(){setTimeout(u,0)};else{var o=new t.MessageChannel;o.port1.onmessage=u,r=function(){o.port2.postMessage(0)}}var h=[];function u(){var e,t;n=!0;for(var r=h.length;r;){for(t=h,h=[],e=-1;++e<r;)t[e]();r=h.length}n=!1}l.exports=function(e){1!==h.push(e)||n||r()}}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}],37:[function(e,t,r){\"use strict\";var i=e(\"immediate\");function u(){}var l={},s=[\"REJECTED\"],a=[\"FULFILLED\"],n=[\"PENDING\"];function o(e){if(\"function\"!=typeof e)throw new TypeError(\"resolver must be a function\");this.state=n,this.queue=[],this.outcome=void 0,e!==u&&d(this,e)}function h(e,t,r){this.promise=e,\"function\"==typeof t&&(this.onFulfilled=t,this.callFulfilled=this.otherCallFulfilled),\"function\"==typeof r&&(this.onRejected=r,this.callRejected=this.otherCallRejected)}function f(t,r,n){i(function(){var e;try{e=r(n)}catch(e){return l.reject(t,e)}e===t?l.reject(t,new TypeError(\"Cannot resolve promise with itself\")):l.resolve(t,e)})}function c(e){var t=e&&e.then;if(e&&(\"object\"==typeof e||\"function\"==typeof e)&&\"function\"==typeof t)return function(){t.apply(e,arguments)}}function d(t,e){var r=!1;function n(e){r||(r=!0,l.reject(t,e))}function i(e){r||(r=!0,l.resolve(t,e))}var s=p(function(){e(i,n)});\"error\"===s.status&&n(s.value)}function p(e,t){var r={};try{r.value=e(t),r.status=\"success\"}catch(e){r.status=\"error\",r.value=e}return r}(t.exports=o).prototype.finally=function(t){if(\"function\"!=typeof t)return this;var r=this.constructor;return this.then(function(e){return r.resolve(t()).then(function(){return e})},function(e){return r.resolve(t()).then(function(){throw e})})},o.prototype.catch=function(e){return this.then(null,e)},o.prototype.then=function(e,t){if(\"function\"!=typeof e&&this.state===a||\"function\"!=typeof t&&this.state===s)return this;var r=new this.constructor(u);this.state!==n?f(r,this.state===a?e:t,this.outcome):this.queue.push(new h(r,e,t));return r},h.prototype.callFulfilled=function(e){l.resolve(this.promise,e)},h.prototype.otherCallFulfilled=function(e){f(this.promise,this.onFulfilled,e)},h.prototype.callRejected=function(e){l.reject(this.promise,e)},h.prototype.otherCallRejected=function(e){f(this.promise,this.onRejected,e)},l.resolve=function(e,t){var r=p(c,t);if(\"error\"===r.status)return l.reject(e,r.value);var n=r.value;if(n)d(e,n);else{e.state=a,e.outcome=t;for(var i=-1,s=e.queue.length;++i<s;)e.queue[i].callFulfilled(t)}return e},l.reject=function(e,t){e.state=s,e.outcome=t;for(var r=-1,n=e.queue.length;++r<n;)e.queue[r].callRejected(t);return e},o.resolve=function(e){if(e instanceof this)return e;return l.resolve(new this(u),e)},o.reject=function(e){var t=new this(u);return l.reject(t,e)},o.all=function(e){var r=this;if(\"[object Array]\"!==Object.prototype.toString.call(e))return this.reject(new TypeError(\"must be an array\"));var n=e.length,i=!1;if(!n)return this.resolve([]);var s=new Array(n),a=0,t=-1,o=new this(u);for(;++t<n;)h(e[t],t);return o;function h(e,t){r.resolve(e).then(function(e){s[t]=e,++a!==n||i||(i=!0,l.resolve(o,s))},function(e){i||(i=!0,l.reject(o,e))})}},o.race=function(e){var t=this;if(\"[object Array]\"!==Object.prototype.toString.call(e))return this.reject(new TypeError(\"must be an array\"));var r=e.length,n=!1;if(!r)return this.resolve([]);var i=-1,s=new this(u);for(;++i<r;)a=e[i],t.resolve(a).then(function(e){n||(n=!0,l.resolve(s,e))},function(e){n||(n=!0,l.reject(s,e))});var a;return s}},{immediate:36}],38:[function(e,t,r){\"use strict\";var n={};(0,e(\"./lib/utils/common\").assign)(n,e(\"./lib/deflate\"),e(\"./lib/inflate\"),e(\"./lib/zlib/constants\")),t.exports=n},{\"./lib/deflate\":39,\"./lib/inflate\":40,\"./lib/utils/common\":41,\"./lib/zlib/constants\":44}],39:[function(e,t,r){\"use strict\";var a=e(\"./zlib/deflate\"),o=e(\"./utils/common\"),h=e(\"./utils/strings\"),i=e(\"./zlib/messages\"),s=e(\"./zlib/zstream\"),u=Object.prototype.toString,l=0,f=-1,c=0,d=8;function p(e){if(!(this instanceof p))return new p(e);this.options=o.assign({level:f,method:d,chunkSize:16384,windowBits:15,memLevel:8,strategy:c,to:\"\"},e||{});var t=this.options;t.raw&&0<t.windowBits?t.windowBits=-t.windowBits:t.gzip&&0<t.windowBits&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new s,this.strm.avail_out=0;var r=a.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(r!==l)throw new Error(i[r]);if(t.header&&a.deflateSetHeader(this.strm,t.header),t.dictionary){var n;if(n=\"string\"==typeof t.dictionary?h.string2buf(t.dictionary):\"[object ArrayBuffer]\"===u.call(t.dictionary)?new Uint8Array(t.dictionary):t.dictionary,(r=a.deflateSetDictionary(this.strm,n))!==l)throw new Error(i[r]);this._dict_set=!0}}function n(e,t){var r=new p(t);if(r.push(e,!0),r.err)throw r.msg||i[r.err];return r.result}p.prototype.push=function(e,t){var r,n,i=this.strm,s=this.options.chunkSize;if(this.ended)return!1;n=t===~~t?t:!0===t?4:0,\"string\"==typeof e?i.input=h.string2buf(e):\"[object ArrayBuffer]\"===u.call(e)?i.input=new Uint8Array(e):i.input=e,i.next_in=0,i.avail_in=i.input.length;do{if(0===i.avail_out&&(i.output=new o.Buf8(s),i.next_out=0,i.avail_out=s),1!==(r=a.deflate(i,n))&&r!==l)return this.onEnd(r),!(this.ended=!0);0!==i.avail_out&&(0!==i.avail_in||4!==n&&2!==n)||(\"string\"===this.options.to?this.onData(h.buf2binstring(o.shrinkBuf(i.output,i.next_out))):this.onData(o.shrinkBuf(i.output,i.next_out)))}while((0<i.avail_in||0===i.avail_out)&&1!==r);return 4===n?(r=a.deflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===l):2!==n||(this.onEnd(l),!(i.avail_out=0))},p.prototype.onData=function(e){this.chunks.push(e)},p.prototype.onEnd=function(e){e===l&&(\"string\"===this.options.to?this.result=this.chunks.join(\"\"):this.result=o.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},r.Deflate=p,r.deflate=n,r.deflateRaw=function(e,t){return(t=t||{}).raw=!0,n(e,t)},r.gzip=function(e,t){return(t=t||{}).gzip=!0,n(e,t)}},{\"./utils/common\":41,\"./utils/strings\":42,\"./zlib/deflate\":46,\"./zlib/messages\":51,\"./zlib/zstream\":53}],40:[function(e,t,r){\"use strict\";var c=e(\"./zlib/inflate\"),d=e(\"./utils/common\"),p=e(\"./utils/strings\"),m=e(\"./zlib/constants\"),n=e(\"./zlib/messages\"),i=e(\"./zlib/zstream\"),s=e(\"./zlib/gzheader\"),_=Object.prototype.toString;function a(e){if(!(this instanceof a))return new a(e);this.options=d.assign({chunkSize:16384,windowBits:0,to:\"\"},e||{});var t=this.options;t.raw&&0<=t.windowBits&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(0<=t.windowBits&&t.windowBits<16)||e&&e.windowBits||(t.windowBits+=32),15<t.windowBits&&t.windowBits<48&&0==(15&t.windowBits)&&(t.windowBits|=15),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new i,this.strm.avail_out=0;var r=c.inflateInit2(this.strm,t.windowBits);if(r!==m.Z_OK)throw new Error(n[r]);this.header=new s,c.inflateGetHeader(this.strm,this.header)}function o(e,t){var r=new a(t);if(r.push(e,!0),r.err)throw r.msg||n[r.err];return r.result}a.prototype.push=function(e,t){var r,n,i,s,a,o,h=this.strm,u=this.options.chunkSize,l=this.options.dictionary,f=!1;if(this.ended)return!1;n=t===~~t?t:!0===t?m.Z_FINISH:m.Z_NO_FLUSH,\"string\"==typeof e?h.input=p.binstring2buf(e):\"[object ArrayBuffer]\"===_.call(e)?h.input=new Uint8Array(e):h.input=e,h.next_in=0,h.avail_in=h.input.length;do{if(0===h.avail_out&&(h.output=new d.Buf8(u),h.next_out=0,h.avail_out=u),(r=c.inflate(h,m.Z_NO_FLUSH))===m.Z_NEED_DICT&&l&&(o=\"string\"==typeof l?p.string2buf(l):\"[object ArrayBuffer]\"===_.call(l)?new Uint8Array(l):l,r=c.inflateSetDictionary(this.strm,o)),r===m.Z_BUF_ERROR&&!0===f&&(r=m.Z_OK,f=!1),r!==m.Z_STREAM_END&&r!==m.Z_OK)return this.onEnd(r),!(this.ended=!0);h.next_out&&(0!==h.avail_out&&r!==m.Z_STREAM_END&&(0!==h.avail_in||n!==m.Z_FINISH&&n!==m.Z_SYNC_FLUSH)||(\"string\"===this.options.to?(i=p.utf8border(h.output,h.next_out),s=h.next_out-i,a=p.buf2string(h.output,i),h.next_out=s,h.avail_out=u-s,s&&d.arraySet(h.output,h.output,i,s,0),this.onData(a)):this.onData(d.shrinkBuf(h.output,h.next_out)))),0===h.avail_in&&0===h.avail_out&&(f=!0)}while((0<h.avail_in||0===h.avail_out)&&r!==m.Z_STREAM_END);return r===m.Z_STREAM_END&&(n=m.Z_FINISH),n===m.Z_FINISH?(r=c.inflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===m.Z_OK):n!==m.Z_SYNC_FLUSH||(this.onEnd(m.Z_OK),!(h.avail_out=0))},a.prototype.onData=function(e){this.chunks.push(e)},a.prototype.onEnd=function(e){e===m.Z_OK&&(\"string\"===this.options.to?this.result=this.chunks.join(\"\"):this.result=d.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},r.Inflate=a,r.inflate=o,r.inflateRaw=function(e,t){return(t=t||{}).raw=!0,o(e,t)},r.ungzip=o},{\"./utils/common\":41,\"./utils/strings\":42,\"./zlib/constants\":44,\"./zlib/gzheader\":47,\"./zlib/inflate\":49,\"./zlib/messages\":51,\"./zlib/zstream\":53}],41:[function(e,t,r){\"use strict\";var n=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Int32Array;r.assign=function(e){for(var t=Array.prototype.slice.call(arguments,1);t.length;){var r=t.shift();if(r){if(\"object\"!=typeof r)throw new TypeError(r+\"must be non-object\");for(var n in r)r.hasOwnProperty(n)&&(e[n]=r[n])}}return e},r.shrinkBuf=function(e,t){return e.length===t?e:e.subarray?e.subarray(0,t):(e.length=t,e)};var i={arraySet:function(e,t,r,n,i){if(t.subarray&&e.subarray)e.set(t.subarray(r,r+n),i);else for(var s=0;s<n;s++)e[i+s]=t[r+s]},flattenChunks:function(e){var t,r,n,i,s,a;for(t=n=0,r=e.length;t<r;t++)n+=e[t].length;for(a=new Uint8Array(n),t=i=0,r=e.length;t<r;t++)s=e[t],a.set(s,i),i+=s.length;return a}},s={arraySet:function(e,t,r,n,i){for(var s=0;s<n;s++)e[i+s]=t[r+s]},flattenChunks:function(e){return[].concat.apply([],e)}};r.setTyped=function(e){e?(r.Buf8=Uint8Array,r.Buf16=Uint16Array,r.Buf32=Int32Array,r.assign(r,i)):(r.Buf8=Array,r.Buf16=Array,r.Buf32=Array,r.assign(r,s))},r.setTyped(n)},{}],42:[function(e,t,r){\"use strict\";var h=e(\"./common\"),i=!0,s=!0;try{String.fromCharCode.apply(null,[0])}catch(e){i=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(e){s=!1}for(var u=new h.Buf8(256),n=0;n<256;n++)u[n]=252<=n?6:248<=n?5:240<=n?4:224<=n?3:192<=n?2:1;function l(e,t){if(t<65537&&(e.subarray&&s||!e.subarray&&i))return String.fromCharCode.apply(null,h.shrinkBuf(e,t));for(var r=\"\",n=0;n<t;n++)r+=String.fromCharCode(e[n]);return r}u[254]=u[254]=1,r.string2buf=function(e){var t,r,n,i,s,a=e.length,o=0;for(i=0;i<a;i++)55296==(64512&(r=e.charCodeAt(i)))&&i+1<a&&56320==(64512&(n=e.charCodeAt(i+1)))&&(r=65536+(r-55296<<10)+(n-56320),i++),o+=r<128?1:r<2048?2:r<65536?3:4;for(t=new h.Buf8(o),i=s=0;s<o;i++)55296==(64512&(r=e.charCodeAt(i)))&&i+1<a&&56320==(64512&(n=e.charCodeAt(i+1)))&&(r=65536+(r-55296<<10)+(n-56320),i++),r<128?t[s++]=r:(r<2048?t[s++]=192|r>>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t},r.buf2binstring=function(e){return l(e,e.length)},r.binstring2buf=function(e){for(var t=new h.Buf8(e.length),r=0,n=t.length;r<n;r++)t[r]=e.charCodeAt(r);return t},r.buf2string=function(e,t){var r,n,i,s,a=t||e.length,o=new Array(2*a);for(r=n=0;r<a;)if((i=e[r++])<128)o[n++]=i;else if(4<(s=u[i]))o[n++]=65533,r+=s-1;else{for(i&=2===s?31:3===s?15:7;1<s&&r<a;)i=i<<6|63&e[r++],s--;1<s?o[n++]=65533:i<65536?o[n++]=i:(i-=65536,o[n++]=55296|i>>10&1023,o[n++]=56320|1023&i)}return l(o,n)},r.utf8border=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+u[e[r]]>t?r:t}},{\"./common\":41}],43:[function(e,t,r){\"use strict\";t.exports=function(e,t,r,n){for(var i=65535&e|0,s=e>>>16&65535|0,a=0;0!==r;){for(r-=a=2e3<r?2e3:r;s=s+(i=i+t[n++]|0)|0,--a;);i%=65521,s%=65521}return i|s<<16|0}},{}],44:[function(e,t,r){\"use strict\";t.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],45:[function(e,t,r){\"use strict\";var o=function(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a<s;a++)e=e>>>8^i[255&(e^t[a])];return-1^e}},{}],46:[function(e,t,r){\"use strict\";var h,c=e(\"../utils/common\"),u=e(\"./trees\"),d=e(\"./adler32\"),p=e(\"./crc32\"),n=e(\"./messages\"),l=0,f=4,m=0,_=-2,g=-1,b=4,i=2,v=8,y=9,s=286,a=30,o=19,w=2*s+1,k=15,x=3,S=258,z=S+x+1,C=42,E=113,A=1,I=2,O=3,B=4;function R(e,t){return e.msg=n[t],t}function T(e){return(e<<1)-(4<e?9:0)}function D(e){for(var t=e.length;0<=--t;)e[t]=0}function F(e){var t=e.state,r=t.pending;r>e.avail_out&&(r=e.avail_out),0!==r&&(c.arraySet(e.output,t.pending_buf,t.pending_out,r,e.next_out),e.next_out+=r,t.pending_out+=r,e.total_out+=r,e.avail_out-=r,t.pending-=r,0===t.pending&&(t.pending_out=0))}function N(e,t){u._tr_flush_block(e,0<=e.block_start?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,F(e.strm)}function U(e,t){e.pending_buf[e.pending++]=t}function P(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function L(e,t){var r,n,i=e.max_chain_length,s=e.strstart,a=e.prev_length,o=e.nice_match,h=e.strstart>e.w_size-z?e.strstart-(e.w_size-z):0,u=e.window,l=e.w_mask,f=e.prev,c=e.strstart+S,d=u[s+a-1],p=u[s+a];e.prev_length>=e.good_match&&(i>>=2),o>e.lookahead&&(o=e.lookahead);do{if(u[(r=t)+a]===p&&u[r+a-1]===d&&u[r]===u[s]&&u[++r]===u[s+1]){s+=2,r++;do{}while(u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&s<c);if(n=S-(c-s),s=c-S,a<n){if(e.match_start=t,o<=(a=n))break;d=u[s+a-1],p=u[s+a]}}}while((t=f[t&l])>h&&0!=--i);return a<=e.lookahead?a:e.lookahead}function j(e){var t,r,n,i,s,a,o,h,u,l,f=e.w_size;do{if(i=e.window_size-e.lookahead-e.strstart,e.strstart>=f+(f-z)){for(c.arraySet(e.window,e.window,f,f,0),e.match_start-=f,e.strstart-=f,e.block_start-=f,t=r=e.hash_size;n=e.head[--t],e.head[t]=f<=n?n-f:0,--r;);for(t=r=f;n=e.prev[--t],e.prev[t]=f<=n?n-f:0,--r;);i+=f}if(0===e.strm.avail_in)break;if(a=e.strm,o=e.window,h=e.strstart+e.lookahead,u=i,l=void 0,l=a.avail_in,u<l&&(l=u),r=0===l?0:(a.avail_in-=l,c.arraySet(o,a.input,a.next_in,l,h),1===a.state.wrap?a.adler=d(a.adler,o,l,h):2===a.state.wrap&&(a.adler=p(a.adler,o,l,h)),a.next_in+=l,a.total_in+=l,l),e.lookahead+=r,e.lookahead+e.insert>=x)for(s=e.strstart-e.insert,e.ins_h=e.window[s],e.ins_h=(e.ins_h<<e.hash_shift^e.window[s+1])&e.hash_mask;e.insert&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[s+x-1])&e.hash_mask,e.prev[s&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=s,s++,e.insert--,!(e.lookahead+e.insert<x)););}while(e.lookahead<z&&0!==e.strm.avail_in)}function Z(e,t){for(var r,n;;){if(e.lookahead<z){if(j(e),e.lookahead<z&&t===l)return A;if(0===e.lookahead)break}if(r=0,e.lookahead>=x&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+x-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!==r&&e.strstart-r<=e.w_size-z&&(e.match_length=L(e,r)),e.match_length>=x)if(n=u._tr_tally(e,e.strstart-e.match_start,e.match_length-x),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=x){for(e.match_length--;e.strstart++,e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+x-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart,0!=--e.match_length;);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+1])&e.hash_mask;else n=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(n&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=e.strstart<x-1?e.strstart:x-1,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}function W(e,t){for(var r,n,i;;){if(e.lookahead<z){if(j(e),e.lookahead<z&&t===l)return A;if(0===e.lookahead)break}if(r=0,e.lookahead>=x&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+x-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=x-1,0!==r&&e.prev_length<e.max_lazy_match&&e.strstart-r<=e.w_size-z&&(e.match_length=L(e,r),e.match_length<=5&&(1===e.strategy||e.match_length===x&&4096<e.strstart-e.match_start)&&(e.match_length=x-1)),e.prev_length>=x&&e.match_length<=e.prev_length){for(i=e.strstart+e.lookahead-x,n=u._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-x),e.lookahead-=e.prev_length-1,e.prev_length-=2;++e.strstart<=i&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+x-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!=--e.prev_length;);if(e.match_available=0,e.match_length=x-1,e.strstart++,n&&(N(e,!1),0===e.strm.avail_out))return A}else if(e.match_available){if((n=u._tr_tally(e,0,e.window[e.strstart-1]))&&N(e,!1),e.strstart++,e.lookahead--,0===e.strm.avail_out)return A}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(n=u._tr_tally(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<x-1?e.strstart:x-1,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}function M(e,t,r,n,i){this.good_length=e,this.max_lazy=t,this.nice_length=r,this.max_chain=n,this.func=i}function H(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=v,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new c.Buf16(2*w),this.dyn_dtree=new c.Buf16(2*(2*a+1)),this.bl_tree=new c.Buf16(2*(2*o+1)),D(this.dyn_ltree),D(this.dyn_dtree),D(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new c.Buf16(k+1),this.heap=new c.Buf16(2*s+1),D(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new c.Buf16(2*s+1),D(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function G(e){var t;return e&&e.state?(e.total_in=e.total_out=0,e.data_type=i,(t=e.state).pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=t.wrap?C:E,e.adler=2===t.wrap?0:1,t.last_flush=l,u._tr_init(t),m):R(e,_)}function K(e){var t=G(e);return t===m&&function(e){e.window_size=2*e.w_size,D(e.head),e.max_lazy_match=h[e.level].max_lazy,e.good_match=h[e.level].good_length,e.nice_match=h[e.level].nice_length,e.max_chain_length=h[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=x-1,e.match_available=0,e.ins_h=0}(e.state),t}function Y(e,t,r,n,i,s){if(!e)return _;var a=1;if(t===g&&(t=6),n<0?(a=0,n=-n):15<n&&(a=2,n-=16),i<1||y<i||r!==v||n<8||15<n||t<0||9<t||s<0||b<s)return R(e,_);8===n&&(n=9);var o=new H;return(e.state=o).strm=e,o.wrap=a,o.gzhead=null,o.w_bits=n,o.w_size=1<<o.w_bits,o.w_mask=o.w_size-1,o.hash_bits=i+7,o.hash_size=1<<o.hash_bits,o.hash_mask=o.hash_size-1,o.hash_shift=~~((o.hash_bits+x-1)/x),o.window=new c.Buf8(2*o.w_size),o.head=new c.Buf16(o.hash_size),o.prev=new c.Buf16(o.w_size),o.lit_bufsize=1<<i+6,o.pending_buf_size=4*o.lit_bufsize,o.pending_buf=new c.Buf8(o.pending_buf_size),o.d_buf=1*o.lit_bufsize,o.l_buf=3*o.lit_bufsize,o.level=t,o.strategy=s,o.method=r,K(e)}h=[new M(0,0,0,0,function(e,t){var r=65535;for(r>e.pending_buf_size-5&&(r=e.pending_buf_size-5);;){if(e.lookahead<=1){if(j(e),0===e.lookahead&&t===l)return A;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var n=e.block_start+r;if((0===e.strstart||e.strstart>=n)&&(e.lookahead=e.strstart-n,e.strstart=n,N(e,!1),0===e.strm.avail_out))return A;if(e.strstart-e.block_start>=e.w_size-z&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):(e.strstart>e.block_start&&(N(e,!1),e.strm.avail_out),A)}),new M(4,4,8,4,Z),new M(4,5,16,8,Z),new M(4,6,32,32,Z),new M(4,4,16,16,W),new M(8,16,32,32,W),new M(8,16,128,128,W),new M(8,32,128,256,W),new M(32,128,258,1024,W),new M(32,258,258,4096,W)],r.deflateInit=function(e,t){return Y(e,t,v,15,8,0)},r.deflateInit2=Y,r.deflateReset=K,r.deflateResetKeep=G,r.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?_:(e.state.gzhead=t,m):_},r.deflate=function(e,t){var r,n,i,s;if(!e||!e.state||5<t||t<0)return e?R(e,_):_;if(n=e.state,!e.output||!e.input&&0!==e.avail_in||666===n.status&&t!==f)return R(e,0===e.avail_out?-5:_);if(n.strm=e,r=n.last_flush,n.last_flush=t,n.status===C)if(2===n.wrap)e.adler=0,U(n,31),U(n,139),U(n,8),n.gzhead?(U(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(n.gzhead.extra?4:0)+(n.gzhead.name?8:0)+(n.gzhead.comment?16:0)),U(n,255&n.gzhead.time),U(n,n.gzhead.time>>8&255),U(n,n.gzhead.time>>16&255),U(n,n.gzhead.time>>24&255),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(U(n,255&n.gzhead.extra.length),U(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=p(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=69):(U(n,0),U(n,0),U(n,0),U(n,0),U(n,0),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,3),n.status=E);else{var a=v+(n.w_bits-8<<4)<<8;a|=(2<=n.strategy||n.level<2?0:n.level<6?1:6===n.level?2:3)<<6,0!==n.strstart&&(a|=32),a+=31-a%31,n.status=E,P(n,a),0!==n.strstart&&(P(n,e.adler>>>16),P(n,65535&e.adler)),e.adler=1}if(69===n.status)if(n.gzhead.extra){for(i=n.pending;n.gzindex<(65535&n.gzhead.extra.length)&&(n.pending!==n.pending_buf_size||(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending!==n.pending_buf_size));)U(n,255&n.gzhead.extra[n.gzindex]),n.gzindex++;n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=73)}else n.status=73;if(73===n.status)if(n.gzhead.name){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindex<n.gzhead.name.length?255&n.gzhead.name.charCodeAt(n.gzindex++):0,U(n,s)}while(0!==s);n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.gzindex=0,n.status=91)}else n.status=91;if(91===n.status)if(n.gzhead.comment){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindex<n.gzhead.comment.length?255&n.gzhead.comment.charCodeAt(n.gzindex++):0,U(n,s)}while(0!==s);n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.status=103)}else n.status=103;if(103===n.status&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&F(e),n.pending+2<=n.pending_buf_size&&(U(n,255&e.adler),U(n,e.adler>>8&255),e.adler=0,n.status=E)):n.status=E),0!==n.pending){if(F(e),0===e.avail_out)return n.last_flush=-1,m}else if(0===e.avail_in&&T(t)<=T(r)&&t!==f)return R(e,-5);if(666===n.status&&0!==e.avail_in)return R(e,-5);if(0!==e.avail_in||0!==n.lookahead||t!==l&&666!==n.status){var o=2===n.strategy?function(e,t){for(var r;;){if(0===e.lookahead&&(j(e),0===e.lookahead)){if(t===l)return A;break}if(e.match_length=0,r=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,r&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}(n,t):3===n.strategy?function(e,t){for(var r,n,i,s,a=e.window;;){if(e.lookahead<=S){if(j(e),e.lookahead<=S&&t===l)return A;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=x&&0<e.strstart&&(n=a[i=e.strstart-1])===a[++i]&&n===a[++i]&&n===a[++i]){s=e.strstart+S;do{}while(n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&i<s);e.match_length=S-(s-i),e.match_length>e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=x?(r=u._tr_tally(e,1,e.match_length-x),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(r=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),r&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}(n,t):h[n.level].func(n,t);if(o!==O&&o!==B||(n.status=666),o===A||o===O)return 0===e.avail_out&&(n.last_flush=-1),m;if(o===I&&(1===t?u._tr_align(n):5!==t&&(u._tr_stored_block(n,0,0,!1),3===t&&(D(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),F(e),0===e.avail_out))return n.last_flush=-1,m}return t!==f?m:n.wrap<=0?1:(2===n.wrap?(U(n,255&e.adler),U(n,e.adler>>8&255),U(n,e.adler>>16&255),U(n,e.adler>>24&255),U(n,255&e.total_in),U(n,e.total_in>>8&255),U(n,e.total_in>>16&255),U(n,e.total_in>>24&255)):(P(n,e.adler>>>16),P(n,65535&e.adler)),F(e),0<n.wrap&&(n.wrap=-n.wrap),0!==n.pending?m:1)},r.deflateEnd=function(e){var t;return e&&e.state?(t=e.state.status)!==C&&69!==t&&73!==t&&91!==t&&103!==t&&t!==E&&666!==t?R(e,_):(e.state=null,t===E?R(e,-3):m):_},r.deflateSetDictionary=function(e,t){var r,n,i,s,a,o,h,u,l=t.length;if(!e||!e.state)return _;if(2===(s=(r=e.state).wrap)||1===s&&r.status!==C||r.lookahead)return _;for(1===s&&(e.adler=d(e.adler,t,l,0)),r.wrap=0,l>=r.w_size&&(0===s&&(D(r.head),r.strstart=0,r.block_start=0,r.insert=0),u=new c.Buf8(r.w_size),c.arraySet(u,t,l-r.w_size,r.w_size,0),t=u,l=r.w_size),a=e.avail_in,o=e.next_in,h=e.input,e.avail_in=l,e.next_in=0,e.input=t,j(r);r.lookahead>=x;){for(n=r.strstart,i=r.lookahead-(x-1);r.ins_h=(r.ins_h<<r.hash_shift^r.window[n+x-1])&r.hash_mask,r.prev[n&r.w_mask]=r.head[r.ins_h],r.head[r.ins_h]=n,n++,--i;);r.strstart=n,r.lookahead=x-1,j(r)}return r.strstart+=r.lookahead,r.block_start=r.strstart,r.insert=r.lookahead,r.lookahead=0,r.match_length=r.prev_length=x-1,r.match_available=0,e.next_in=o,e.input=h,e.avail_in=a,r.wrap=s,m},r.deflateInfo=\"pako deflate (from Nodeca project)\"},{\"../utils/common\":41,\"./adler32\":43,\"./crc32\":45,\"./messages\":51,\"./trees\":52}],47:[function(e,t,r){\"use strict\";t.exports=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name=\"\",this.comment=\"\",this.hcrc=0,this.done=!1}},{}],48:[function(e,t,r){\"use strict\";t.exports=function(e,t){var r,n,i,s,a,o,h,u,l,f,c,d,p,m,_,g,b,v,y,w,k,x,S,z,C;r=e.state,n=e.next_in,z=e.input,i=n+(e.avail_in-5),s=e.next_out,C=e.output,a=s-(t-e.avail_out),o=s+(e.avail_out-257),h=r.dmax,u=r.wsize,l=r.whave,f=r.wnext,c=r.window,d=r.hold,p=r.bits,m=r.lencode,_=r.distcode,g=(1<<r.lenbits)-1,b=(1<<r.distbits)-1;e:do{p<15&&(d+=z[n++]<<p,p+=8,d+=z[n++]<<p,p+=8),v=m[d&g];t:for(;;){if(d>>>=y=v>>>24,p-=y,0===(y=v>>>16&255))C[s++]=65535&v;else{if(!(16&y)){if(0==(64&y)){v=m[(65535&v)+(d&(1<<y)-1)];continue t}if(32&y){r.mode=12;break e}e.msg=\"invalid literal/length code\",r.mode=30;break e}w=65535&v,(y&=15)&&(p<y&&(d+=z[n++]<<p,p+=8),w+=d&(1<<y)-1,d>>>=y,p-=y),p<15&&(d+=z[n++]<<p,p+=8,d+=z[n++]<<p,p+=8),v=_[d&b];r:for(;;){if(d>>>=y=v>>>24,p-=y,!(16&(y=v>>>16&255))){if(0==(64&y)){v=_[(65535&v)+(d&(1<<y)-1)];continue r}e.msg=\"invalid distance code\",r.mode=30;break e}if(k=65535&v,p<(y&=15)&&(d+=z[n++]<<p,(p+=8)<y&&(d+=z[n++]<<p,p+=8)),h<(k+=d&(1<<y)-1)){e.msg=\"invalid distance too far back\",r.mode=30;break e}if(d>>>=y,p-=y,(y=s-a)<k){if(l<(y=k-y)&&r.sane){e.msg=\"invalid distance too far back\",r.mode=30;break e}if(S=c,(x=0)===f){if(x+=u-y,y<w){for(w-=y;C[s++]=c[x++],--y;);x=s-k,S=C}}else if(f<y){if(x+=u+f-y,(y-=f)<w){for(w-=y;C[s++]=c[x++],--y;);if(x=0,f<w){for(w-=y=f;C[s++]=c[x++],--y;);x=s-k,S=C}}}else if(x+=f-y,y<w){for(w-=y;C[s++]=c[x++],--y;);x=s-k,S=C}for(;2<w;)C[s++]=S[x++],C[s++]=S[x++],C[s++]=S[x++],w-=3;w&&(C[s++]=S[x++],1<w&&(C[s++]=S[x++]))}else{for(x=s-k;C[s++]=C[x++],C[s++]=C[x++],C[s++]=C[x++],2<(w-=3););w&&(C[s++]=C[x++],1<w&&(C[s++]=C[x++]))}break}}break}}while(n<i&&s<o);n-=w=p>>3,d&=(1<<(p-=w<<3))-1,e.next_in=n,e.next_out=s,e.avail_in=n<i?i-n+5:5-(n-i),e.avail_out=s<o?o-s+257:257-(s-o),r.hold=d,r.bits=p}},{}],49:[function(e,t,r){\"use strict\";var I=e(\"../utils/common\"),O=e(\"./adler32\"),B=e(\"./crc32\"),R=e(\"./inffast\"),T=e(\"./inftrees\"),D=1,F=2,N=0,U=-2,P=1,n=852,i=592;function L(e){return(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function s(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new I.Buf16(320),this.work=new I.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function a(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg=\"\",t.wrap&&(e.adler=1&t.wrap),t.mode=P,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new I.Buf32(n),t.distcode=t.distdyn=new I.Buf32(i),t.sane=1,t.back=-1,N):U}function o(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,a(e)):U}function h(e,t){var r,n;return e&&e.state?(n=e.state,t<0?(r=0,t=-t):(r=1+(t>>4),t<48&&(t&=15)),t&&(t<8||15<t)?U:(null!==n.window&&n.wbits!==t&&(n.window=null),n.wrap=r,n.wbits=t,o(e))):U}function u(e,t){var r,n;return e?(n=new s,(e.state=n).window=null,(r=h(e,t))!==N&&(e.state=null),r):U}var l,f,c=!0;function j(e){if(c){var t;for(l=new I.Buf32(512),f=new I.Buf32(32),t=0;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(T(D,e.lens,0,288,l,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;T(F,e.lens,0,32,f,0,e.work,{bits:5}),c=!1}e.lencode=l,e.lenbits=9,e.distcode=f,e.distbits=5}function Z(e,t,r,n){var i,s=e.state;return null===s.window&&(s.wsize=1<<s.wbits,s.wnext=0,s.whave=0,s.window=new I.Buf8(s.wsize)),n>=s.wsize?(I.arraySet(s.window,t,r-s.wsize,s.wsize,0),s.wnext=0,s.whave=s.wsize):(n<(i=s.wsize-s.wnext)&&(i=n),I.arraySet(s.window,t,r-n,i,s.wnext),(n-=i)?(I.arraySet(s.window,t,r-n,n,0),s.wnext=n,s.whave=s.wsize):(s.wnext+=i,s.wnext===s.wsize&&(s.wnext=0),s.whave<s.wsize&&(s.whave+=i))),0}r.inflateReset=o,r.inflateReset2=h,r.inflateResetKeep=a,r.inflateInit=function(e){return u(e,15)},r.inflateInit2=u,r.inflate=function(e,t){var r,n,i,s,a,o,h,u,l,f,c,d,p,m,_,g,b,v,y,w,k,x,S,z,C=0,E=new I.Buf8(4),A=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!e||!e.state||!e.output||!e.input&&0!==e.avail_in)return U;12===(r=e.state).mode&&(r.mode=13),a=e.next_out,i=e.output,h=e.avail_out,s=e.next_in,n=e.input,o=e.avail_in,u=r.hold,l=r.bits,f=o,c=h,x=N;e:for(;;)switch(r.mode){case P:if(0===r.wrap){r.mode=13;break}for(;l<16;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(2&r.wrap&&35615===u){E[r.check=0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0),l=u=0,r.mode=2;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&u)<<8)+(u>>8))%31){e.msg=\"incorrect header check\",r.mode=30;break}if(8!=(15&u)){e.msg=\"unknown compression method\",r.mode=30;break}if(l-=4,k=8+(15&(u>>>=4)),0===r.wbits)r.wbits=k;else if(k>r.wbits){e.msg=\"invalid window size\",r.mode=30;break}r.dmax=1<<k,e.adler=r.check=1,r.mode=512&u?10:12,l=u=0;break;case 2:for(;l<16;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(r.flags=u,8!=(255&r.flags)){e.msg=\"unknown compression method\",r.mode=30;break}if(57344&r.flags){e.msg=\"unknown header flags set\",r.mode=30;break}r.head&&(r.head.text=u>>8&1),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=3;case 3:for(;l<32;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.head&&(r.head.time=u),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,E[2]=u>>>16&255,E[3]=u>>>24&255,r.check=B(r.check,E,4,0)),l=u=0,r.mode=4;case 4:for(;l<16;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.head&&(r.head.xflags=255&u,r.head.os=u>>8),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=5;case 5:if(1024&r.flags){for(;l<16;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.length=u,r.head&&(r.head.extra_len=u),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&(o<(d=r.length)&&(d=o),d&&(r.head&&(k=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),I.arraySet(r.head.extra,n,s,d,k)),512&r.flags&&(r.check=B(r.check,n,d,s)),o-=d,s+=d,r.length-=d),r.length))break e;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===o)break e;for(d=0;k=n[s+d++],r.head&&k&&r.length<65536&&(r.head.name+=String.fromCharCode(k)),k&&d<o;);if(512&r.flags&&(r.check=B(r.check,n,d,s)),o-=d,s+=d,k)break e}else r.head&&(r.head.name=null);r.length=0,r.mode=8;case 8:if(4096&r.flags){if(0===o)break e;for(d=0;k=n[s+d++],r.head&&k&&r.length<65536&&(r.head.comment+=String.fromCharCode(k)),k&&d<o;);if(512&r.flags&&(r.check=B(r.check,n,d,s)),o-=d,s+=d,k)break e}else r.head&&(r.head.comment=null);r.mode=9;case 9:if(512&r.flags){for(;l<16;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(u!==(65535&r.check)){e.msg=\"header crc mismatch\",r.mode=30;break}l=u=0}r.head&&(r.head.hcrc=r.flags>>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=12;break;case 10:for(;l<32;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}e.adler=r.check=L(u),l=u=0,r.mode=11;case 11:if(0===r.havedict)return e.next_out=a,e.avail_out=h,e.next_in=s,e.avail_in=o,r.hold=u,r.bits=l,2;e.adler=r.check=1,r.mode=12;case 12:if(5===t||6===t)break e;case 13:if(r.last){u>>>=7&l,l-=7&l,r.mode=27;break}for(;l<3;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}switch(r.last=1&u,l-=1,3&(u>>>=1)){case 0:r.mode=14;break;case 1:if(j(r),r.mode=20,6!==t)break;u>>>=2,l-=2;break e;case 2:r.mode=17;break;case 3:e.msg=\"invalid block type\",r.mode=30}u>>>=2,l-=2;break;case 14:for(u>>>=7&l,l-=7&l;l<32;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if((65535&u)!=(u>>>16^65535)){e.msg=\"invalid stored block lengths\",r.mode=30;break}if(r.length=65535&u,l=u=0,r.mode=15,6===t)break e;case 15:r.mode=16;case 16:if(d=r.length){if(o<d&&(d=o),h<d&&(d=h),0===d)break e;I.arraySet(i,n,s,d,a),o-=d,s+=d,h-=d,a+=d,r.length-=d;break}r.mode=12;break;case 17:for(;l<14;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(r.nlen=257+(31&u),u>>>=5,l-=5,r.ndist=1+(31&u),u>>>=5,l-=5,r.ncode=4+(15&u),u>>>=4,l-=4,286<r.nlen||30<r.ndist){e.msg=\"too many length or distance symbols\",r.mode=30;break}r.have=0,r.mode=18;case 18:for(;r.have<r.ncode;){for(;l<3;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.lens[A[r.have++]]=7&u,u>>>=3,l-=3}for(;r.have<19;)r.lens[A[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,S={bits:r.lenbits},x=T(0,r.lens,0,19,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg=\"invalid code lengths set\",r.mode=30;break}r.have=0,r.mode=19;case 19:for(;r.have<r.nlen+r.ndist;){for(;g=(C=r.lencode[u&(1<<r.lenbits)-1])>>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(b<16)u>>>=_,l-=_,r.lens[r.have++]=b;else{if(16===b){for(z=_+2;l<z;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(u>>>=_,l-=_,0===r.have){e.msg=\"invalid bit length repeat\",r.mode=30;break}k=r.lens[r.have-1],d=3+(3&u),u>>>=2,l-=2}else if(17===b){for(z=_+3;l<z;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}l-=_,k=0,d=3+(7&(u>>>=_)),u>>>=3,l-=3}else{for(z=_+7;l<z;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}l-=_,k=0,d=11+(127&(u>>>=_)),u>>>=7,l-=7}if(r.have+d>r.nlen+r.ndist){e.msg=\"invalid bit length repeat\",r.mode=30;break}for(;d--;)r.lens[r.have++]=k}}if(30===r.mode)break;if(0===r.lens[256]){e.msg=\"invalid code -- missing end-of-block\",r.mode=30;break}if(r.lenbits=9,S={bits:r.lenbits},x=T(D,r.lens,0,r.nlen,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg=\"invalid literal/lengths set\",r.mode=30;break}if(r.distbits=6,r.distcode=r.distdyn,S={bits:r.distbits},x=T(F,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,S),r.distbits=S.bits,x){e.msg=\"invalid distances set\",r.mode=30;break}if(r.mode=20,6===t)break e;case 20:r.mode=21;case 21:if(6<=o&&258<=h){e.next_out=a,e.avail_out=h,e.next_in=s,e.avail_in=o,r.hold=u,r.bits=l,R(e,c),a=e.next_out,i=e.output,h=e.avail_out,s=e.next_in,n=e.input,o=e.avail_in,u=r.hold,l=r.bits,12===r.mode&&(r.back=-1);break}for(r.back=0;g=(C=r.lencode[u&(1<<r.lenbits)-1])>>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(g&&0==(240&g)){for(v=_,y=g,w=b;g=(C=r.lencode[w+((u&(1<<v+y)-1)>>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}u>>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,r.length=b,0===g){r.mode=26;break}if(32&g){r.back=-1,r.mode=12;break}if(64&g){e.msg=\"invalid literal/length code\",r.mode=30;break}r.extra=15&g,r.mode=22;case 22:if(r.extra){for(z=r.extra;l<z;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.length+=u&(1<<r.extra)-1,u>>>=r.extra,l-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=23;case 23:for(;g=(C=r.distcode[u&(1<<r.distbits)-1])>>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(0==(240&g)){for(v=_,y=g,w=b;g=(C=r.distcode[w+((u&(1<<v+y)-1)>>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}u>>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,64&g){e.msg=\"invalid distance code\",r.mode=30;break}r.offset=b,r.extra=15&g,r.mode=24;case 24:if(r.extra){for(z=r.extra;l<z;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.offset+=u&(1<<r.extra)-1,u>>>=r.extra,l-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg=\"invalid distance too far back\",r.mode=30;break}r.mode=25;case 25:if(0===h)break e;if(d=c-h,r.offset>d){if((d=r.offset-d)>r.whave&&r.sane){e.msg=\"invalid distance too far back\",r.mode=30;break}p=d>r.wnext?(d-=r.wnext,r.wsize-d):r.wnext-d,d>r.length&&(d=r.length),m=r.window}else m=i,p=a-r.offset,d=r.length;for(h<d&&(d=h),h-=d,r.length-=d;i[a++]=m[p++],--d;);0===r.length&&(r.mode=21);break;case 26:if(0===h)break e;i[a++]=r.length,h--,r.mode=21;break;case 27:if(r.wrap){for(;l<32;){if(0===o)break e;o--,u|=n[s++]<<l,l+=8}if(c-=h,e.total_out+=c,r.total+=c,c&&(e.adler=r.check=r.flags?B(r.check,i,c,a-c):O(r.check,i,c,a-c)),c=h,(r.flags?u:L(u))!==r.check){e.msg=\"incorrect data check\",r.mode=30;break}l=u=0}r.mode=28;case 28:if(r.wrap&&r.flags){for(;l<32;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(u!==(4294967295&r.total)){e.msg=\"incorrect length check\",r.mode=30;break}l=u=0}r.mode=29;case 29:x=1;break e;case 30:x=-3;break e;case 31:return-4;case 32:default:return U}return e.next_out=a,e.avail_out=h,e.next_in=s,e.avail_in=o,r.hold=u,r.bits=l,(r.wsize||c!==e.avail_out&&r.mode<30&&(r.mode<27||4!==t))&&Z(e,e.output,e.next_out,c-e.avail_out)?(r.mode=31,-4):(f-=e.avail_in,c-=e.avail_out,e.total_in+=f,e.total_out+=c,r.total+=c,r.wrap&&c&&(e.adler=r.check=r.flags?B(r.check,i,c,e.next_out-c):O(r.check,i,c,e.next_out-c)),e.data_type=r.bits+(r.last?64:0)+(12===r.mode?128:0)+(20===r.mode||15===r.mode?256:0),(0==f&&0===c||4===t)&&x===N&&(x=-5),x)},r.inflateEnd=function(e){if(!e||!e.state)return U;var t=e.state;return t.window&&(t.window=null),e.state=null,N},r.inflateGetHeader=function(e,t){var r;return e&&e.state?0==(2&(r=e.state).wrap)?U:((r.head=t).done=!1,N):U},r.inflateSetDictionary=function(e,t){var r,n=t.length;return e&&e.state?0!==(r=e.state).wrap&&11!==r.mode?U:11===r.mode&&O(1,t,n,0)!==r.check?-3:Z(e,t,n,n)?(r.mode=31,-4):(r.havedict=1,N):U},r.inflateInfo=\"pako inflate (from Nodeca project)\"},{\"../utils/common\":41,\"./adler32\":43,\"./crc32\":45,\"./inffast\":48,\"./inftrees\":50}],50:[function(e,t,r){\"use strict\";var D=e(\"../utils/common\"),F=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],N=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],U=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],P=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];t.exports=function(e,t,r,n,i,s,a,o){var h,u,l,f,c,d,p,m,_,g=o.bits,b=0,v=0,y=0,w=0,k=0,x=0,S=0,z=0,C=0,E=0,A=null,I=0,O=new D.Buf16(16),B=new D.Buf16(16),R=null,T=0;for(b=0;b<=15;b++)O[b]=0;for(v=0;v<n;v++)O[t[r+v]]++;for(k=g,w=15;1<=w&&0===O[w];w--);if(w<k&&(k=w),0===w)return i[s++]=20971520,i[s++]=20971520,o.bits=1,0;for(y=1;y<w&&0===O[y];y++);for(k<y&&(k=y),b=z=1;b<=15;b++)if(z<<=1,(z-=O[b])<0)return-1;if(0<z&&(0===e||1!==w))return-1;for(B[1]=0,b=1;b<15;b++)B[b+1]=B[b]+O[b];for(v=0;v<n;v++)0!==t[r+v]&&(a[B[t[r+v]]++]=v);if(d=0===e?(A=R=a,19):1===e?(A=F,I-=257,R=N,T-=257,256):(A=U,R=P,-1),b=y,c=s,S=v=E=0,l=-1,f=(C=1<<(x=k))-1,1===e&&852<C||2===e&&592<C)return 1;for(;;){for(p=b-S,_=a[v]<d?(m=0,a[v]):a[v]>d?(m=R[T+a[v]],A[I+a[v]]):(m=96,0),h=1<<b-S,y=u=1<<x;i[c+(E>>S)+(u-=h)]=p<<24|m<<16|_|0,0!==u;);for(h=1<<b-1;E&h;)h>>=1;if(0!==h?(E&=h-1,E+=h):E=0,v++,0==--O[b]){if(b===w)break;b=t[r+a[v]]}if(k<b&&(E&f)!==l){for(0===S&&(S=k),c+=y,z=1<<(x=b-S);x+S<w&&!((z-=O[x+S])<=0);)x++,z<<=1;if(C+=1<<x,1===e&&852<C||2===e&&592<C)return 1;i[l=E&f]=k<<24|x<<16|c-s|0}}return 0!==E&&(i[c+E]=b-S<<24|64<<16|0),o.bits=k,0}},{\"../utils/common\":41}],51:[function(e,t,r){\"use strict\";t.exports={2:\"need dictionary\",1:\"stream end\",0:\"\",\"-1\":\"file error\",\"-2\":\"stream error\",\"-3\":\"data error\",\"-4\":\"insufficient memory\",\"-5\":\"buffer error\",\"-6\":\"incompatible version\"}},{}],52:[function(e,t,r){\"use strict\";var i=e(\"../utils/common\"),o=0,h=1;function n(e){for(var t=e.length;0<=--t;)e[t]=0}var s=0,a=29,u=256,l=u+1+a,f=30,c=19,_=2*l+1,g=15,d=16,p=7,m=256,b=16,v=17,y=18,w=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],k=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],x=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],S=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],z=new Array(2*(l+2));n(z);var C=new Array(2*f);n(C);var E=new Array(512);n(E);var A=new Array(256);n(A);var I=new Array(a);n(I);var O,B,R,T=new Array(f);function D(e,t,r,n,i){this.static_tree=e,this.extra_bits=t,this.extra_base=r,this.elems=n,this.max_length=i,this.has_stree=e&&e.length}function F(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}function N(e){return e<256?E[e]:E[256+(e>>>7)]}function U(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function P(e,t,r){e.bi_valid>d-r?(e.bi_buf|=t<<e.bi_valid&65535,U(e,e.bi_buf),e.bi_buf=t>>d-e.bi_valid,e.bi_valid+=r-d):(e.bi_buf|=t<<e.bi_valid&65535,e.bi_valid+=r)}function L(e,t,r){P(e,r[2*t],r[2*t+1])}function j(e,t){for(var r=0;r|=1&e,e>>>=1,r<<=1,0<--t;);return r>>>1}function Z(e,t,r){var n,i,s=new Array(g+1),a=0;for(n=1;n<=g;n++)s[n]=a=a+r[n-1]<<1;for(i=0;i<=t;i++){var o=e[2*i+1];0!==o&&(e[2*i]=j(s[o]++,o))}}function W(e){var t;for(t=0;t<l;t++)e.dyn_ltree[2*t]=0;for(t=0;t<f;t++)e.dyn_dtree[2*t]=0;for(t=0;t<c;t++)e.bl_tree[2*t]=0;e.dyn_ltree[2*m]=1,e.opt_len=e.static_len=0,e.last_lit=e.matches=0}function M(e){8<e.bi_valid?U(e,e.bi_buf):0<e.bi_valid&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0}function H(e,t,r,n){var i=2*t,s=2*r;return e[i]<e[s]||e[i]===e[s]&&n[t]<=n[r]}function G(e,t,r){for(var n=e.heap[r],i=r<<1;i<=e.heap_len&&(i<e.heap_len&&H(t,e.heap[i+1],e.heap[i],e.depth)&&i++,!H(t,n,e.heap[i],e.depth));)e.heap[r]=e.heap[i],r=i,i<<=1;e.heap[r]=n}function K(e,t,r){var n,i,s,a,o=0;if(0!==e.last_lit)for(;n=e.pending_buf[e.d_buf+2*o]<<8|e.pending_buf[e.d_buf+2*o+1],i=e.pending_buf[e.l_buf+o],o++,0===n?L(e,i,t):(L(e,(s=A[i])+u+1,t),0!==(a=w[s])&&P(e,i-=I[s],a),L(e,s=N(--n),r),0!==(a=k[s])&&P(e,n-=T[s],a)),o<e.last_lit;);L(e,m,t)}function Y(e,t){var r,n,i,s=t.dyn_tree,a=t.stat_desc.static_tree,o=t.stat_desc.has_stree,h=t.stat_desc.elems,u=-1;for(e.heap_len=0,e.heap_max=_,r=0;r<h;r++)0!==s[2*r]?(e.heap[++e.heap_len]=u=r,e.depth[r]=0):s[2*r+1]=0;for(;e.heap_len<2;)s[2*(i=e.heap[++e.heap_len]=u<2?++u:0)]=1,e.depth[i]=0,e.opt_len--,o&&(e.static_len-=a[2*i+1]);for(t.max_code=u,r=e.heap_len>>1;1<=r;r--)G(e,s,r);for(i=h;r=e.heap[1],e.heap[1]=e.heap[e.heap_len--],G(e,s,1),n=e.heap[1],e.heap[--e.heap_max]=r,e.heap[--e.heap_max]=n,s[2*i]=s[2*r]+s[2*n],e.depth[i]=(e.depth[r]>=e.depth[n]?e.depth[r]:e.depth[n])+1,s[2*r+1]=s[2*n+1]=i,e.heap[1]=i++,G(e,s,1),2<=e.heap_len;);e.heap[--e.heap_max]=e.heap[1],function(e,t){var r,n,i,s,a,o,h=t.dyn_tree,u=t.max_code,l=t.stat_desc.static_tree,f=t.stat_desc.has_stree,c=t.stat_desc.extra_bits,d=t.stat_desc.extra_base,p=t.stat_desc.max_length,m=0;for(s=0;s<=g;s++)e.bl_count[s]=0;for(h[2*e.heap[e.heap_max]+1]=0,r=e.heap_max+1;r<_;r++)p<(s=h[2*h[2*(n=e.heap[r])+1]+1]+1)&&(s=p,m++),h[2*n+1]=s,u<n||(e.bl_count[s]++,a=0,d<=n&&(a=c[n-d]),o=h[2*n],e.opt_len+=o*(s+a),f&&(e.static_len+=o*(l[2*n+1]+a)));if(0!==m){do{for(s=p-1;0===e.bl_count[s];)s--;e.bl_count[s]--,e.bl_count[s+1]+=2,e.bl_count[p]--,m-=2}while(0<m);for(s=p;0!==s;s--)for(n=e.bl_count[s];0!==n;)u<(i=e.heap[--r])||(h[2*i+1]!==s&&(e.opt_len+=(s-h[2*i+1])*h[2*i],h[2*i+1]=s),n--)}}(e,t),Z(s,u,e.bl_count)}function X(e,t,r){var n,i,s=-1,a=t[1],o=0,h=7,u=4;for(0===a&&(h=138,u=3),t[2*(r+1)+1]=65535,n=0;n<=r;n++)i=a,a=t[2*(n+1)+1],++o<h&&i===a||(o<u?e.bl_tree[2*i]+=o:0!==i?(i!==s&&e.bl_tree[2*i]++,e.bl_tree[2*b]++):o<=10?e.bl_tree[2*v]++:e.bl_tree[2*y]++,s=i,u=(o=0)===a?(h=138,3):i===a?(h=6,3):(h=7,4))}function V(e,t,r){var n,i,s=-1,a=t[1],o=0,h=7,u=4;for(0===a&&(h=138,u=3),n=0;n<=r;n++)if(i=a,a=t[2*(n+1)+1],!(++o<h&&i===a)){if(o<u)for(;L(e,i,e.bl_tree),0!=--o;);else 0!==i?(i!==s&&(L(e,i,e.bl_tree),o--),L(e,b,e.bl_tree),P(e,o-3,2)):o<=10?(L(e,v,e.bl_tree),P(e,o-3,3)):(L(e,y,e.bl_tree),P(e,o-11,7));s=i,u=(o=0)===a?(h=138,3):i===a?(h=6,3):(h=7,4)}}n(T);var q=!1;function J(e,t,r,n){P(e,(s<<1)+(n?1:0),3),function(e,t,r,n){M(e),n&&(U(e,r),U(e,~r)),i.arraySet(e.pending_buf,e.window,t,r,e.pending),e.pending+=r}(e,t,r,!0)}r._tr_init=function(e){q||(function(){var e,t,r,n,i,s=new Array(g+1);for(n=r=0;n<a-1;n++)for(I[n]=r,e=0;e<1<<w[n];e++)A[r++]=n;for(A[r-1]=n,n=i=0;n<16;n++)for(T[n]=i,e=0;e<1<<k[n];e++)E[i++]=n;for(i>>=7;n<f;n++)for(T[n]=i<<7,e=0;e<1<<k[n]-7;e++)E[256+i++]=n;for(t=0;t<=g;t++)s[t]=0;for(e=0;e<=143;)z[2*e+1]=8,e++,s[8]++;for(;e<=255;)z[2*e+1]=9,e++,s[9]++;for(;e<=279;)z[2*e+1]=7,e++,s[7]++;for(;e<=287;)z[2*e+1]=8,e++,s[8]++;for(Z(z,l+1,s),e=0;e<f;e++)C[2*e+1]=5,C[2*e]=j(e,5);O=new D(z,w,u+1,l,g),B=new D(C,k,0,f,g),R=new D(new Array(0),x,0,c,p)}(),q=!0),e.l_desc=new F(e.dyn_ltree,O),e.d_desc=new F(e.dyn_dtree,B),e.bl_desc=new F(e.bl_tree,R),e.bi_buf=0,e.bi_valid=0,W(e)},r._tr_stored_block=J,r._tr_flush_block=function(e,t,r,n){var i,s,a=0;0<e.level?(2===e.strm.data_type&&(e.strm.data_type=function(e){var t,r=4093624447;for(t=0;t<=31;t++,r>>>=1)if(1&r&&0!==e.dyn_ltree[2*t])return o;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return h;for(t=32;t<u;t++)if(0!==e.dyn_ltree[2*t])return h;return o}(e)),Y(e,e.l_desc),Y(e,e.d_desc),a=function(e){var t;for(X(e,e.dyn_ltree,e.l_desc.max_code),X(e,e.dyn_dtree,e.d_desc.max_code),Y(e,e.bl_desc),t=c-1;3<=t&&0===e.bl_tree[2*S[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t}(e),i=e.opt_len+3+7>>>3,(s=e.static_len+3+7>>>3)<=i&&(i=s)):i=s=r+5,r+4<=i&&-1!==t?J(e,t,r,n):4===e.strategy||s===i?(P(e,2+(n?1:0),3),K(e,z,C)):(P(e,4+(n?1:0),3),function(e,t,r,n){var i;for(P(e,t-257,5),P(e,r-1,5),P(e,n-4,4),i=0;i<n;i++)P(e,e.bl_tree[2*S[i]+1],3);V(e,e.dyn_ltree,t-1),V(e,e.dyn_dtree,r-1)}(e,e.l_desc.max_code+1,e.d_desc.max_code+1,a+1),K(e,e.dyn_ltree,e.dyn_dtree)),W(e),n&&M(e)},r._tr_tally=function(e,t,r){return e.pending_buf[e.d_buf+2*e.last_lit]=t>>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&r,e.last_lit++,0===t?e.dyn_ltree[2*r]++:(e.matches++,t--,e.dyn_ltree[2*(A[r]+u+1)]++,e.dyn_dtree[2*N(t)]++),e.last_lit===e.lit_bufsize-1},r._tr_align=function(e){P(e,2,3),L(e,m,z),function(e){16===e.bi_valid?(U(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):8<=e.bi_valid&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)}},{\"../utils/common\":41}],53:[function(e,t,r){\"use strict\";t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\"\",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(e,t,r){(function(e){!function(r,n){\"use strict\";if(!r.setImmediate){var i,s,t,a,o=1,h={},u=!1,l=r.document,e=Object.getPrototypeOf&&Object.getPrototypeOf(r);e=e&&e.setTimeout?e:r,i=\"[object process]\"==={}.toString.call(r.process)?function(e){process.nextTick(function(){c(e)})}:function(){if(r.postMessage&&!r.importScripts){var e=!0,t=r.onmessage;return r.onmessage=function(){e=!1},r.postMessage(\"\",\"*\"),r.onmessage=t,e}}()?(a=\"setImmediate$\"+Math.random()+\"$\",r.addEventListener?r.addEventListener(\"message\",d,!1):r.attachEvent(\"onmessage\",d),function(e){r.postMessage(a+e,\"*\")}):r.MessageChannel?((t=new MessageChannel).port1.onmessage=function(e){c(e.data)},function(e){t.port2.postMessage(e)}):l&&\"onreadystatechange\"in l.createElement(\"script\")?(s=l.documentElement,function(e){var t=l.createElement(\"script\");t.onreadystatechange=function(){c(e),t.onreadystatechange=null,s.removeChild(t),t=null},s.appendChild(t)}):function(e){setTimeout(c,0,e)},e.setImmediate=function(e){\"function\"!=typeof e&&(e=new Function(\"\"+e));for(var t=new Array(arguments.length-1),r=0;r<t.length;r++)t[r]=arguments[r+1];var n={callback:e,args:t};return h[o]=n,i(o),o++},e.clearImmediate=f}function f(e){delete h[e]}function c(e){if(u)setTimeout(c,0,e);else{var t=h[e];if(t){u=!0;try{!function(e){var t=e.callback,r=e.args;switch(r.length){case 0:t();break;case 1:t(r[0]);break;case 2:t(r[0],r[1]);break;case 3:t(r[0],r[1],r[2]);break;default:t.apply(n,r)}}(t)}finally{f(e),u=!1}}}}function d(e){e.source===r&&\"string\"==typeof e.data&&0===e.data.indexOf(a)&&c(+e.data.slice(a.length))}}(\"undefined\"==typeof self?void 0===e?this:e:self)}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}]},{},[10])(10)});","/* PptxGenJS 4.0.1 @ 2025-06-25T23:35:35.098Z */\nimport JSZip from 'jszip';\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\ntypeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\n\n/**\n * PptxGenJS Enums\n * NOTE: `enum` wont work for objects, so use `Object.freeze`\n */\n// CONST\nconst EMU = 914400; // One (1) inch (OfficeXML measures in EMU (English Metric Units))\nconst ONEPT = 12700; // One (1) point (pt)\nconst CRLF = '\\r\\n'; // AKA: Chr(13) & Chr(10)\nconst LAYOUT_IDX_SERIES_BASE = 2147483649;\nconst REGEX_HEX_COLOR = /^[0-9a-fA-F]{6}$/;\nconst LINEH_MODIFIER = 1.67; // AKA: Golden Ratio Typography\nconst DEF_BULLET_MARGIN = 27;\nconst DEF_CELL_BORDER = { type: 'solid', color: '666666', pt: 1 };\nconst DEF_CELL_MARGIN_IN = [0.05, 0.1, 0.05, 0.1]; // \"Normal\" margins in PPT-2021 (\"Narrow\" is `0.05` for all 4)\nconst DEF_CHART_BORDER = { color: '363636', pt: 1 };\nconst DEF_CHART_GRIDLINE = { color: '888888', style: 'solid', size: 1, cap: 'flat' };\nconst DEF_FONT_COLOR = '000000';\nconst DEF_FONT_SIZE = 12;\nconst DEF_FONT_TITLE_SIZE = 18;\nconst DEF_PRES_LAYOUT = 'LAYOUT_16x9';\nconst DEF_PRES_LAYOUT_NAME = 'DEFAULT';\nconst DEF_SHAPE_LINE_COLOR = '333333';\nconst DEF_SHAPE_SHADOW = { type: 'outer', blur: 3, offset: 23000 / 12700, angle: 90, color: '000000', opacity: 0.35, rotateWithShape: true };\nconst DEF_SLIDE_MARGIN_IN = [0.5, 0.5, 0.5, 0.5]; // TRBL-style\nconst DEF_TEXT_SHADOW = { color: '000000'};\nconst DEF_TEXT_GLOW = { size: 8, color: 'FFFFFF', opacity: 0.75 };\nconst AXIS_ID_VALUE_PRIMARY = '2094734552';\nconst AXIS_ID_VALUE_SECONDARY = '2094734553';\nconst AXIS_ID_CATEGORY_PRIMARY = '2094734554';\nconst AXIS_ID_CATEGORY_SECONDARY = '2094734555';\nconst AXIS_ID_SERIES_PRIMARY = '2094734556';\nconst LETTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('');\nconst BARCHART_COLORS = [\n 'C0504D',\n '4F81BD',\n '9BBB59',\n '8064A2',\n '4BACC6',\n 'F79646',\n '628FC6',\n 'C86360',\n 'C0504D',\n '4F81BD',\n '9BBB59',\n '8064A2',\n '4BACC6',\n 'F79646',\n '628FC6',\n 'C86360'\n];\nconst PIECHART_COLORS = [\n '5DA5DA',\n 'FAA43A',\n '60BD68',\n 'F17CB0',\n 'B2912F',\n 'B276B2',\n 'DECF3F',\n 'F15854',\n 'A7A7A7',\n '5DA5DA',\n 'FAA43A',\n '60BD68',\n 'F17CB0',\n 'B2912F',\n 'B276B2',\n 'DECF3F',\n 'F15854',\n 'A7A7A7',\n];\nvar TEXT_HALIGN;\n(function (TEXT_HALIGN) {\n TEXT_HALIGN[\"left\"] = \"left\";\n TEXT_HALIGN[\"center\"] = \"center\";\n TEXT_HALIGN[\"right\"] = \"right\";\n TEXT_HALIGN[\"justify\"] = \"justify\";\n})(TEXT_HALIGN || (TEXT_HALIGN = {}));\nvar TEXT_VALIGN;\n(function (TEXT_VALIGN) {\n TEXT_VALIGN[\"b\"] = \"b\";\n TEXT_VALIGN[\"ctr\"] = \"ctr\";\n TEXT_VALIGN[\"t\"] = \"t\";\n})(TEXT_VALIGN || (TEXT_VALIGN = {}));\nconst SLDNUMFLDID = '{F7021451-1387-4CA6-816F-3879F97B5CBC}';\n// ENUM\n// TODO: 3.5 or v4.0: rationalize ts-def exported enum names/case!\n// NOTE: First tsdef enum named correctly (shapes -> 'Shape', colors -> 'Color'), etc.\nvar OutputType;\n(function (OutputType) {\n OutputType[\"arraybuffer\"] = \"arraybuffer\";\n OutputType[\"base64\"] = \"base64\";\n OutputType[\"binarystring\"] = \"binarystring\";\n OutputType[\"blob\"] = \"blob\";\n OutputType[\"nodebuffer\"] = \"nodebuffer\";\n OutputType[\"uint8array\"] = \"uint8array\";\n})(OutputType || (OutputType = {}));\nvar ChartType;\n(function (ChartType) {\n ChartType[\"area\"] = \"area\";\n ChartType[\"bar\"] = \"bar\";\n ChartType[\"bar3d\"] = \"bar3D\";\n ChartType[\"bubble\"] = \"bubble\";\n ChartType[\"bubble3d\"] = \"bubble3D\";\n ChartType[\"doughnut\"] = \"doughnut\";\n ChartType[\"line\"] = \"line\";\n ChartType[\"pie\"] = \"pie\";\n ChartType[\"radar\"] = \"radar\";\n ChartType[\"scatter\"] = \"scatter\";\n})(ChartType || (ChartType = {}));\nvar ShapeType;\n(function (ShapeType) {\n ShapeType[\"accentBorderCallout1\"] = \"accentBorderCallout1\";\n ShapeType[\"accentBorderCallout2\"] = \"accentBorderCallout2\";\n ShapeType[\"accentBorderCallout3\"] = \"accentBorderCallout3\";\n ShapeType[\"accentCallout1\"] = \"accentCallout1\";\n ShapeType[\"accentCallout2\"] = \"accentCallout2\";\n ShapeType[\"accentCallout3\"] = \"accentCallout3\";\n ShapeType[\"actionButtonBackPrevious\"] = \"actionButtonBackPrevious\";\n ShapeType[\"actionButtonBeginning\"] = \"actionButtonBeginning\";\n ShapeType[\"actionButtonBlank\"] = \"actionButtonBlank\";\n ShapeType[\"actionButtonDocument\"] = \"actionButtonDocument\";\n ShapeType[\"actionButtonEnd\"] = \"actionButtonEnd\";\n ShapeType[\"actionButtonForwardNext\"] = \"actionButtonForwardNext\";\n ShapeType[\"actionButtonHelp\"] = \"actionButtonHelp\";\n ShapeType[\"actionButtonHome\"] = \"actionButtonHome\";\n ShapeType[\"actionButtonInformation\"] = \"actionButtonInformation\";\n ShapeType[\"actionButtonMovie\"] = \"actionButtonMovie\";\n ShapeType[\"actionButtonReturn\"] = \"actionButtonReturn\";\n ShapeType[\"actionButtonSound\"] = \"actionButtonSound\";\n ShapeType[\"arc\"] = \"arc\";\n ShapeType[\"bentArrow\"] = \"bentArrow\";\n ShapeType[\"bentUpArrow\"] = \"bentUpArrow\";\n ShapeType[\"bevel\"] = \"bevel\";\n ShapeType[\"blockArc\"] = \"blockArc\";\n ShapeType[\"borderCallout1\"] = \"borderCallout1\";\n ShapeType[\"borderCallout2\"] = \"borderCallout2\";\n ShapeType[\"borderCallout3\"] = \"borderCallout3\";\n ShapeType[\"bracePair\"] = \"bracePair\";\n ShapeType[\"bracketPair\"] = \"bracketPair\";\n ShapeType[\"callout1\"] = \"callout1\";\n ShapeType[\"callout2\"] = \"callout2\";\n ShapeType[\"callout3\"] = \"callout3\";\n ShapeType[\"can\"] = \"can\";\n ShapeType[\"chartPlus\"] = \"chartPlus\";\n ShapeType[\"chartStar\"] = \"chartStar\";\n ShapeType[\"chartX\"] = \"chartX\";\n ShapeType[\"chevron\"] = \"chevron\";\n ShapeType[\"chord\"] = \"chord\";\n ShapeType[\"circularArrow\"] = \"circularArrow\";\n ShapeType[\"cloud\"] = \"cloud\";\n ShapeType[\"cloudCallout\"] = \"cloudCallout\";\n ShapeType[\"corner\"] = \"corner\";\n ShapeType[\"cornerTabs\"] = \"cornerTabs\";\n ShapeType[\"cube\"] = \"cube\";\n ShapeType[\"curvedDownArrow\"] = \"curvedDownArrow\";\n ShapeType[\"curvedLeftArrow\"] = \"curvedLeftArrow\";\n ShapeType[\"curvedRightArrow\"] = \"curvedRightArrow\";\n ShapeType[\"curvedUpArrow\"] = \"curvedUpArrow\";\n ShapeType[\"custGeom\"] = \"custGeom\";\n ShapeType[\"decagon\"] = \"decagon\";\n ShapeType[\"diagStripe\"] = \"diagStripe\";\n ShapeType[\"diamond\"] = \"diamond\";\n ShapeType[\"dodecagon\"] = \"dodecagon\";\n ShapeType[\"donut\"] = \"donut\";\n ShapeType[\"doubleWave\"] = \"doubleWave\";\n ShapeType[\"downArrow\"] = \"downArrow\";\n ShapeType[\"downArrowCallout\"] = \"downArrowCallout\";\n ShapeType[\"ellipse\"] = \"ellipse\";\n ShapeType[\"ellipseRibbon\"] = \"ellipseRibbon\";\n ShapeType[\"ellipseRibbon2\"] = \"ellipseRibbon2\";\n ShapeType[\"flowChartAlternateProcess\"] = \"flowChartAlternateProcess\";\n ShapeType[\"flowChartCollate\"] = \"flowChartCollate\";\n ShapeType[\"flowChartConnector\"] = \"flowChartConnector\";\n ShapeType[\"flowChartDecision\"] = \"flowChartDecision\";\n ShapeType[\"flowChartDelay\"] = \"flowChartDelay\";\n ShapeType[\"flowChartDisplay\"] = \"flowChartDisplay\";\n ShapeType[\"flowChartDocument\"] = \"flowChartDocument\";\n ShapeType[\"flowChartExtract\"] = \"flowChartExtract\";\n ShapeType[\"flowChartInputOutput\"] = \"flowChartInputOutput\";\n ShapeType[\"flowChartInternalStorage\"] = \"flowChartInternalStorage\";\n ShapeType[\"flowChartMagneticDisk\"] = \"flowChartMagneticDisk\";\n ShapeType[\"flowChartMagneticDrum\"] = \"flowChartMagneticDrum\";\n ShapeType[\"flowChartMagneticTape\"] = \"flowChartMagneticTape\";\n ShapeType[\"flowChartManualInput\"] = \"flowChartManualInput\";\n ShapeType[\"flowChartManualOperation\"] = \"flowChartManualOperation\";\n ShapeType[\"flowChartMerge\"] = \"flowChartMerge\";\n ShapeType[\"flowChartMultidocument\"] = \"flowChartMultidocument\";\n ShapeType[\"flowChartOfflineStorage\"] = \"flowChartOfflineStorage\";\n ShapeType[\"flowChartOffpageConnector\"] = \"flowChartOffpageConnector\";\n ShapeType[\"flowChartOnlineStorage\"] = \"flowChartOnlineStorage\";\n ShapeType[\"flowChartOr\"] = \"flowChartOr\";\n ShapeType[\"flowChartPredefinedProcess\"] = \"flowChartPredefinedProcess\";\n ShapeType[\"flowChartPreparation\"] = \"flowChartPreparation\";\n ShapeType[\"flowChartProcess\"] = \"flowChartProcess\";\n ShapeType[\"flowChartPunchedCard\"] = \"flowChartPunchedCard\";\n ShapeType[\"flowChartPunchedTape\"] = \"flowChartPunchedTape\";\n ShapeType[\"flowChartSort\"] = \"flowChartSort\";\n ShapeType[\"flowChartSummingJunction\"] = \"flowChartSummingJunction\";\n ShapeType[\"flowChartTerminator\"] = \"flowChartTerminator\";\n ShapeType[\"folderCorner\"] = \"folderCorner\";\n ShapeType[\"frame\"] = \"frame\";\n ShapeType[\"funnel\"] = \"funnel\";\n ShapeType[\"gear6\"] = \"gear6\";\n ShapeType[\"gear9\"] = \"gear9\";\n ShapeType[\"halfFrame\"] = \"halfFrame\";\n ShapeType[\"heart\"] = \"heart\";\n ShapeType[\"heptagon\"] = \"heptagon\";\n ShapeType[\"hexagon\"] = \"hexagon\";\n ShapeType[\"homePlate\"] = \"homePlate\";\n ShapeType[\"horizontalScroll\"] = \"horizontalScroll\";\n ShapeType[\"irregularSeal1\"] = \"irregularSeal1\";\n ShapeType[\"irregularSeal2\"] = \"irregularSeal2\";\n ShapeType[\"leftArrow\"] = \"leftArrow\";\n ShapeType[\"leftArrowCallout\"] = \"leftArrowCallout\";\n ShapeType[\"leftBrace\"] = \"leftBrace\";\n ShapeType[\"leftBracket\"] = \"leftBracket\";\n ShapeType[\"leftCircularArrow\"] = \"leftCircularArrow\";\n ShapeType[\"leftRightArrow\"] = \"leftRightArrow\";\n ShapeType[\"leftRightArrowCallout\"] = \"leftRightArrowCallout\";\n ShapeType[\"leftRightCircularArrow\"] = \"leftRightCircularArrow\";\n ShapeType[\"leftRightRibbon\"] = \"leftRightRibbon\";\n ShapeType[\"leftRightUpArrow\"] = \"leftRightUpArrow\";\n ShapeType[\"leftUpArrow\"] = \"leftUpArrow\";\n ShapeType[\"lightningBolt\"] = \"lightningBolt\";\n ShapeType[\"line\"] = \"line\";\n ShapeType[\"lineInv\"] = \"lineInv\";\n ShapeType[\"mathDivide\"] = \"mathDivide\";\n ShapeType[\"mathEqual\"] = \"mathEqual\";\n ShapeType[\"mathMinus\"] = \"mathMinus\";\n ShapeType[\"mathMultiply\"] = \"mathMultiply\";\n ShapeType[\"mathNotEqual\"] = \"mathNotEqual\";\n ShapeType[\"mathPlus\"] = \"mathPlus\";\n ShapeType[\"moon\"] = \"moon\";\n ShapeType[\"noSmoking\"] = \"noSmoking\";\n ShapeType[\"nonIsoscelesTrapezoid\"] = \"nonIsoscelesTrapezoid\";\n ShapeType[\"notchedRightArrow\"] = \"notchedRightArrow\";\n ShapeType[\"octagon\"] = \"octagon\";\n ShapeType[\"parallelogram\"] = \"parallelogram\";\n ShapeType[\"pentagon\"] = \"pentagon\";\n ShapeType[\"pie\"] = \"pie\";\n ShapeType[\"pieWedge\"] = \"pieWedge\";\n ShapeType[\"plaque\"] = \"plaque\";\n ShapeType[\"plaqueTabs\"] = \"plaqueTabs\";\n ShapeType[\"plus\"] = \"plus\";\n ShapeType[\"quadArrow\"] = \"quadArrow\";\n ShapeType[\"quadArrowCallout\"] = \"quadArrowCallout\";\n ShapeType[\"rect\"] = \"rect\";\n ShapeType[\"ribbon\"] = \"ribbon\";\n ShapeType[\"ribbon2\"] = \"ribbon2\";\n ShapeType[\"rightArrow\"] = \"rightArrow\";\n ShapeType[\"rightArrowCallout\"] = \"rightArrowCallout\";\n ShapeType[\"rightBrace\"] = \"rightBrace\";\n ShapeType[\"rightBracket\"] = \"rightBracket\";\n ShapeType[\"round1Rect\"] = \"round1Rect\";\n ShapeType[\"round2DiagRect\"] = \"round2DiagRect\";\n ShapeType[\"round2SameRect\"] = \"round2SameRect\";\n ShapeType[\"roundRect\"] = \"roundRect\";\n ShapeType[\"rtTriangle\"] = \"rtTriangle\";\n ShapeType[\"smileyFace\"] = \"smileyFace\";\n ShapeType[\"snip1Rect\"] = \"snip1Rect\";\n ShapeType[\"snip2DiagRect\"] = \"snip2DiagRect\";\n ShapeType[\"snip2SameRect\"] = \"snip2SameRect\";\n ShapeType[\"snipRoundRect\"] = \"snipRoundRect\";\n ShapeType[\"squareTabs\"] = \"squareTabs\";\n ShapeType[\"star10\"] = \"star10\";\n ShapeType[\"star12\"] = \"star12\";\n ShapeType[\"star16\"] = \"star16\";\n ShapeType[\"star24\"] = \"star24\";\n ShapeType[\"star32\"] = \"star32\";\n ShapeType[\"star4\"] = \"star4\";\n ShapeType[\"star5\"] = \"star5\";\n ShapeType[\"star6\"] = \"star6\";\n ShapeType[\"star7\"] = \"star7\";\n ShapeType[\"star8\"] = \"star8\";\n ShapeType[\"stripedRightArrow\"] = \"stripedRightArrow\";\n ShapeType[\"sun\"] = \"sun\";\n ShapeType[\"swooshArrow\"] = \"swooshArrow\";\n ShapeType[\"teardrop\"] = \"teardrop\";\n ShapeType[\"trapezoid\"] = \"trapezoid\";\n ShapeType[\"triangle\"] = \"triangle\";\n ShapeType[\"upArrow\"] = \"upArrow\";\n ShapeType[\"upArrowCallout\"] = \"upArrowCallout\";\n ShapeType[\"upDownArrow\"] = \"upDownArrow\";\n ShapeType[\"upDownArrowCallout\"] = \"upDownArrowCallout\";\n ShapeType[\"uturnArrow\"] = \"uturnArrow\";\n ShapeType[\"verticalScroll\"] = \"verticalScroll\";\n ShapeType[\"wave\"] = \"wave\";\n ShapeType[\"wedgeEllipseCallout\"] = \"wedgeEllipseCallout\";\n ShapeType[\"wedgeRectCallout\"] = \"wedgeRectCallout\";\n ShapeType[\"wedgeRoundRectCallout\"] = \"wedgeRoundRectCallout\";\n})(ShapeType || (ShapeType = {}));\n/**\n * TODO: FUTURE: v4.0: rename to `ThemeColor`\n */\nvar SchemeColor;\n(function (SchemeColor) {\n SchemeColor[\"text1\"] = \"tx1\";\n SchemeColor[\"text2\"] = \"tx2\";\n SchemeColor[\"background1\"] = \"bg1\";\n SchemeColor[\"background2\"] = \"bg2\";\n SchemeColor[\"accent1\"] = \"accent1\";\n SchemeColor[\"accent2\"] = \"accent2\";\n SchemeColor[\"accent3\"] = \"accent3\";\n SchemeColor[\"accent4\"] = \"accent4\";\n SchemeColor[\"accent5\"] = \"accent5\";\n SchemeColor[\"accent6\"] = \"accent6\";\n})(SchemeColor || (SchemeColor = {}));\nvar AlignH;\n(function (AlignH) {\n AlignH[\"left\"] = \"left\";\n AlignH[\"center\"] = \"center\";\n AlignH[\"right\"] = \"right\";\n AlignH[\"justify\"] = \"justify\";\n})(AlignH || (AlignH = {}));\nvar AlignV;\n(function (AlignV) {\n AlignV[\"top\"] = \"top\";\n AlignV[\"middle\"] = \"middle\";\n AlignV[\"bottom\"] = \"bottom\";\n})(AlignV || (AlignV = {}));\nvar SHAPE_TYPE;\n(function (SHAPE_TYPE) {\n SHAPE_TYPE[\"ACTION_BUTTON_BACK_OR_PREVIOUS\"] = \"actionButtonBackPrevious\";\n SHAPE_TYPE[\"ACTION_BUTTON_BEGINNING\"] = \"actionButtonBeginning\";\n SHAPE_TYPE[\"ACTION_BUTTON_CUSTOM\"] = \"actionButtonBlank\";\n SHAPE_TYPE[\"ACTION_BUTTON_DOCUMENT\"] = \"actionButtonDocument\";\n SHAPE_TYPE[\"ACTION_BUTTON_END\"] = \"actionButtonEnd\";\n SHAPE_TYPE[\"ACTION_BUTTON_FORWARD_OR_NEXT\"] = \"actionButtonForwardNext\";\n SHAPE_TYPE[\"ACTION_BUTTON_HELP\"] = \"actionButtonHelp\";\n SHAPE_TYPE[\"ACTION_BUTTON_HOME\"] = \"actionButtonHome\";\n SHAPE_TYPE[\"ACTION_BUTTON_INFORMATION\"] = \"actionButtonInformation\";\n SHAPE_TYPE[\"ACTION_BUTTON_MOVIE\"] = \"actionButtonMovie\";\n SHAPE_TYPE[\"ACTION_BUTTON_RETURN\"] = \"actionButtonReturn\";\n SHAPE_TYPE[\"ACTION_BUTTON_SOUND\"] = \"actionButtonSound\";\n SHAPE_TYPE[\"ARC\"] = \"arc\";\n SHAPE_TYPE[\"BALLOON\"] = \"wedgeRoundRectCallout\";\n SHAPE_TYPE[\"BENT_ARROW\"] = \"bentArrow\";\n SHAPE_TYPE[\"BENT_UP_ARROW\"] = \"bentUpArrow\";\n SHAPE_TYPE[\"BEVEL\"] = \"bevel\";\n SHAPE_TYPE[\"BLOCK_ARC\"] = \"blockArc\";\n SHAPE_TYPE[\"CAN\"] = \"can\";\n SHAPE_TYPE[\"CHART_PLUS\"] = \"chartPlus\";\n SHAPE_TYPE[\"CHART_STAR\"] = \"chartStar\";\n SHAPE_TYPE[\"CHART_X\"] = \"chartX\";\n SHAPE_TYPE[\"CHEVRON\"] = \"chevron\";\n SHAPE_TYPE[\"CHORD\"] = \"chord\";\n SHAPE_TYPE[\"CIRCULAR_ARROW\"] = \"circularArrow\";\n SHAPE_TYPE[\"CLOUD\"] = \"cloud\";\n SHAPE_TYPE[\"CLOUD_CALLOUT\"] = \"cloudCallout\";\n SHAPE_TYPE[\"CORNER\"] = \"corner\";\n SHAPE_TYPE[\"CORNER_TABS\"] = \"cornerTabs\";\n SHAPE_TYPE[\"CROSS\"] = \"plus\";\n SHAPE_TYPE[\"CUBE\"] = \"cube\";\n SHAPE_TYPE[\"CURVED_DOWN_ARROW\"] = \"curvedDownArrow\";\n SHAPE_TYPE[\"CURVED_DOWN_RIBBON\"] = \"ellipseRibbon\";\n SHAPE_TYPE[\"CURVED_LEFT_ARROW\"] = \"curvedLeftArrow\";\n SHAPE_TYPE[\"CURVED_RIGHT_ARROW\"] = \"curvedRightArrow\";\n SHAPE_TYPE[\"CURVED_UP_ARROW\"] = \"curvedUpArrow\";\n SHAPE_TYPE[\"CURVED_UP_RIBBON\"] = \"ellipseRibbon2\";\n SHAPE_TYPE[\"CUSTOM_GEOMETRY\"] = \"custGeom\";\n SHAPE_TYPE[\"DECAGON\"] = \"decagon\";\n SHAPE_TYPE[\"DIAGONAL_STRIPE\"] = \"diagStripe\";\n SHAPE_TYPE[\"DIAMOND\"] = \"diamond\";\n SHAPE_TYPE[\"DODECAGON\"] = \"dodecagon\";\n SHAPE_TYPE[\"DONUT\"] = \"donut\";\n SHAPE_TYPE[\"DOUBLE_BRACE\"] = \"bracePair\";\n SHAPE_TYPE[\"DOUBLE_BRACKET\"] = \"bracketPair\";\n SHAPE_TYPE[\"DOUBLE_WAVE\"] = \"doubleWave\";\n SHAPE_TYPE[\"DOWN_ARROW\"] = \"downArrow\";\n SHAPE_TYPE[\"DOWN_ARROW_CALLOUT\"] = \"downArrowCallout\";\n SHAPE_TYPE[\"DOWN_RIBBON\"] = \"ribbon\";\n SHAPE_TYPE[\"EXPLOSION1\"] = \"irregularSeal1\";\n SHAPE_TYPE[\"EXPLOSION2\"] = \"irregularSeal2\";\n SHAPE_TYPE[\"FLOWCHART_ALTERNATE_PROCESS\"] = \"flowChartAlternateProcess\";\n SHAPE_TYPE[\"FLOWCHART_CARD\"] = \"flowChartPunchedCard\";\n SHAPE_TYPE[\"FLOWCHART_COLLATE\"] = \"flowChartCollate\";\n SHAPE_TYPE[\"FLOWCHART_CONNECTOR\"] = \"flowChartConnector\";\n SHAPE_TYPE[\"FLOWCHART_DATA\"] = \"flowChartInputOutput\";\n SHAPE_TYPE[\"FLOWCHART_DECISION\"] = \"flowChartDecision\";\n SHAPE_TYPE[\"FLOWCHART_DELAY\"] = \"flowChartDelay\";\n SHAPE_TYPE[\"FLOWCHART_DIRECT_ACCESS_STORAGE\"] = \"flowChartMagneticDrum\";\n SHAPE_TYPE[\"FLOWCHART_DISPLAY\"] = \"flowChartDisplay\";\n SHAPE_TYPE[\"FLOWCHART_DOCUMENT\"] = \"flowChartDocument\";\n SHAPE_TYPE[\"FLOWCHART_EXTRACT\"] = \"flowChartExtract\";\n SHAPE_TYPE[\"FLOWCHART_INTERNAL_STORAGE\"] = \"flowChartInternalStorage\";\n SHAPE_TYPE[\"FLOWCHART_MAGNETIC_DISK\"] = \"flowChartMagneticDisk\";\n SHAPE_TYPE[\"FLOWCHART_MANUAL_INPUT\"] = \"flowChartManualInput\";\n SHAPE_TYPE[\"FLOWCHART_MANUAL_OPERATION\"] = \"flowChartManualOperation\";\n SHAPE_TYPE[\"FLOWCHART_MERGE\"] = \"flowChartMerge\";\n SHAPE_TYPE[\"FLOWCHART_MULTIDOCUMENT\"] = \"flowChartMultidocument\";\n SHAPE_TYPE[\"FLOWCHART_OFFLINE_STORAGE\"] = \"flowChartOfflineStorage\";\n SHAPE_TYPE[\"FLOWCHART_OFFPAGE_CONNECTOR\"] = \"flowChartOffpageConnector\";\n SHAPE_TYPE[\"FLOWCHART_OR\"] = \"flowChartOr\";\n SHAPE_TYPE[\"FLOWCHART_PREDEFINED_PROCESS\"] = \"flowChartPredefinedProcess\";\n SHAPE_TYPE[\"FLOWCHART_PREPARATION\"] = \"flowChartPreparation\";\n SHAPE_TYPE[\"FLOWCHART_PROCESS\"] = \"flowChartProcess\";\n SHAPE_TYPE[\"FLOWCHART_PUNCHED_TAPE\"] = \"flowChartPunchedTape\";\n SHAPE_TYPE[\"FLOWCHART_SEQUENTIAL_ACCESS_STORAGE\"] = \"flowChartMagneticTape\";\n SHAPE_TYPE[\"FLOWCHART_SORT\"] = \"flowChartSort\";\n SHAPE_TYPE[\"FLOWCHART_STORED_DATA\"] = \"flowChartOnlineStorage\";\n SHAPE_TYPE[\"FLOWCHART_SUMMING_JUNCTION\"] = \"flowChartSummingJunction\";\n SHAPE_TYPE[\"FLOWCHART_TERMINATOR\"] = \"flowChartTerminator\";\n SHAPE_TYPE[\"FOLDED_CORNER\"] = \"folderCorner\";\n SHAPE_TYPE[\"FRAME\"] = \"frame\";\n SHAPE_TYPE[\"FUNNEL\"] = \"funnel\";\n SHAPE_TYPE[\"GEAR_6\"] = \"gear6\";\n SHAPE_TYPE[\"GEAR_9\"] = \"gear9\";\n SHAPE_TYPE[\"HALF_FRAME\"] = \"halfFrame\";\n SHAPE_TYPE[\"HEART\"] = \"heart\";\n SHAPE_TYPE[\"HEPTAGON\"] = \"heptagon\";\n SHAPE_TYPE[\"HEXAGON\"] = \"hexagon\";\n SHAPE_TYPE[\"HORIZONTAL_SCROLL\"] = \"horizontalScroll\";\n SHAPE_TYPE[\"ISOSCELES_TRIANGLE\"] = \"triangle\";\n SHAPE_TYPE[\"LEFT_ARROW\"] = \"leftArrow\";\n SHAPE_TYPE[\"LEFT_ARROW_CALLOUT\"] = \"leftArrowCallout\";\n SHAPE_TYPE[\"LEFT_BRACE\"] = \"leftBrace\";\n SHAPE_TYPE[\"LEFT_BRACKET\"] = \"leftBracket\";\n SHAPE_TYPE[\"LEFT_CIRCULAR_ARROW\"] = \"leftCircularArrow\";\n SHAPE_TYPE[\"LEFT_RIGHT_ARROW\"] = \"leftRightArrow\";\n SHAPE_TYPE[\"LEFT_RIGHT_ARROW_CALLOUT\"] = \"leftRightArrowCallout\";\n SHAPE_TYPE[\"LEFT_RIGHT_CIRCULAR_ARROW\"] = \"leftRightCircularArrow\";\n SHAPE_TYPE[\"LEFT_RIGHT_RIBBON\"] = \"leftRightRibbon\";\n SHAPE_TYPE[\"LEFT_RIGHT_UP_ARROW\"] = \"leftRightUpArrow\";\n SHAPE_TYPE[\"LEFT_UP_ARROW\"] = \"leftUpArrow\";\n SHAPE_TYPE[\"LIGHTNING_BOLT\"] = \"lightningBolt\";\n SHAPE_TYPE[\"LINE_CALLOUT_1\"] = \"borderCallout1\";\n SHAPE_TYPE[\"LINE_CALLOUT_1_ACCENT_BAR\"] = \"accentCallout1\";\n SHAPE_TYPE[\"LINE_CALLOUT_1_BORDER_AND_ACCENT_BAR\"] = \"accentBorderCallout1\";\n SHAPE_TYPE[\"LINE_CALLOUT_1_NO_BORDER\"] = \"callout1\";\n SHAPE_TYPE[\"LINE_CALLOUT_2\"] = \"borderCallout2\";\n SHAPE_TYPE[\"LINE_CALLOUT_2_ACCENT_BAR\"] = \"accentCallout2\";\n SHAPE_TYPE[\"LINE_CALLOUT_2_BORDER_AND_ACCENT_BAR\"] = \"accentBorderCallout2\";\n SHAPE_TYPE[\"LINE_CALLOUT_2_NO_BORDER\"] = \"callout2\";\n SHAPE_TYPE[\"LINE_CALLOUT_3\"] = \"borderCallout3\";\n SHAPE_TYPE[\"LINE_CALLOUT_3_ACCENT_BAR\"] = \"accentCallout3\";\n SHAPE_TYPE[\"LINE_CALLOUT_3_BORDER_AND_ACCENT_BAR\"] = \"accentBorderCallout3\";\n SHAPE_TYPE[\"LINE_CALLOUT_3_NO_BORDER\"] = \"callout3\";\n SHAPE_TYPE[\"LINE_CALLOUT_4\"] = \"borderCallout4\";\n SHAPE_TYPE[\"LINE_CALLOUT_4_ACCENT_BAR\"] = \"accentCallout3=4\";\n SHAPE_TYPE[\"LINE_CALLOUT_4_BORDER_AND_ACCENT_BAR\"] = \"accentBorderCallout4\";\n SHAPE_TYPE[\"LINE_CALLOUT_4_NO_BORDER\"] = \"callout4\";\n SHAPE_TYPE[\"LINE\"] = \"line\";\n SHAPE_TYPE[\"LINE_INVERSE\"] = \"lineInv\";\n SHAPE_TYPE[\"MATH_DIVIDE\"] = \"mathDivide\";\n SHAPE_TYPE[\"MATH_EQUAL\"] = \"mathEqual\";\n SHAPE_TYPE[\"MATH_MINUS\"] = \"mathMinus\";\n SHAPE_TYPE[\"MATH_MULTIPLY\"] = \"mathMultiply\";\n SHAPE_TYPE[\"MATH_NOT_EQUAL\"] = \"mathNotEqual\";\n SHAPE_TYPE[\"MATH_PLUS\"] = \"mathPlus\";\n SHAPE_TYPE[\"MOON\"] = \"moon\";\n SHAPE_TYPE[\"NON_ISOSCELES_TRAPEZOID\"] = \"nonIsoscelesTrapezoid\";\n SHAPE_TYPE[\"NOTCHED_RIGHT_ARROW\"] = \"notchedRightArrow\";\n SHAPE_TYPE[\"NO_SYMBOL\"] = \"noSmoking\";\n SHAPE_TYPE[\"OCTAGON\"] = \"octagon\";\n SHAPE_TYPE[\"OVAL\"] = \"ellipse\";\n SHAPE_TYPE[\"OVAL_CALLOUT\"] = \"wedgeEllipseCallout\";\n SHAPE_TYPE[\"PARALLELOGRAM\"] = \"parallelogram\";\n SHAPE_TYPE[\"PENTAGON\"] = \"homePlate\";\n SHAPE_TYPE[\"PIE\"] = \"pie\";\n SHAPE_TYPE[\"PIE_WEDGE\"] = \"pieWedge\";\n SHAPE_TYPE[\"PLAQUE\"] = \"plaque\";\n SHAPE_TYPE[\"PLAQUE_TABS\"] = \"plaqueTabs\";\n SHAPE_TYPE[\"QUAD_ARROW\"] = \"quadArrow\";\n SHAPE_TYPE[\"QUAD_ARROW_CALLOUT\"] = \"quadArrowCallout\";\n SHAPE_TYPE[\"RECTANGLE\"] = \"rect\";\n SHAPE_TYPE[\"RECTANGULAR_CALLOUT\"] = \"wedgeRectCallout\";\n SHAPE_TYPE[\"REGULAR_PENTAGON\"] = \"pentagon\";\n SHAPE_TYPE[\"RIGHT_ARROW\"] = \"rightArrow\";\n SHAPE_TYPE[\"RIGHT_ARROW_CALLOUT\"] = \"rightArrowCallout\";\n SHAPE_TYPE[\"RIGHT_BRACE\"] = \"rightBrace\";\n SHAPE_TYPE[\"RIGHT_BRACKET\"] = \"rightBracket\";\n SHAPE_TYPE[\"RIGHT_TRIANGLE\"] = \"rtTriangle\";\n SHAPE_TYPE[\"ROUNDED_RECTANGLE\"] = \"roundRect\";\n // eslint-disable-next-line @typescript-eslint/no-duplicate-enum-values\n SHAPE_TYPE[\"ROUNDED_RECTANGULAR_CALLOUT\"] = \"wedgeRoundRectCallout\";\n SHAPE_TYPE[\"ROUND_1_RECTANGLE\"] = \"round1Rect\";\n SHAPE_TYPE[\"ROUND_2_DIAG_RECTANGLE\"] = \"round2DiagRect\";\n SHAPE_TYPE[\"ROUND_2_SAME_RECTANGLE\"] = \"round2SameRect\";\n SHAPE_TYPE[\"SMILEY_FACE\"] = \"smileyFace\";\n SHAPE_TYPE[\"SNIP_1_RECTANGLE\"] = \"snip1Rect\";\n SHAPE_TYPE[\"SNIP_2_DIAG_RECTANGLE\"] = \"snip2DiagRect\";\n SHAPE_TYPE[\"SNIP_2_SAME_RECTANGLE\"] = \"snip2SameRect\";\n SHAPE_TYPE[\"SNIP_ROUND_RECTANGLE\"] = \"snipRoundRect\";\n SHAPE_TYPE[\"SQUARE_TABS\"] = \"squareTabs\";\n SHAPE_TYPE[\"STAR_10_POINT\"] = \"star10\";\n SHAPE_TYPE[\"STAR_12_POINT\"] = \"star12\";\n SHAPE_TYPE[\"STAR_16_POINT\"] = \"star16\";\n SHAPE_TYPE[\"STAR_24_POINT\"] = \"star24\";\n SHAPE_TYPE[\"STAR_32_POINT\"] = \"star32\";\n SHAPE_TYPE[\"STAR_4_POINT\"] = \"star4\";\n SHAPE_TYPE[\"STAR_5_POINT\"] = \"star5\";\n SHAPE_TYPE[\"STAR_6_POINT\"] = \"star6\";\n SHAPE_TYPE[\"STAR_7_POINT\"] = \"star7\";\n SHAPE_TYPE[\"STAR_8_POINT\"] = \"star8\";\n SHAPE_TYPE[\"STRIPED_RIGHT_ARROW\"] = \"stripedRightArrow\";\n SHAPE_TYPE[\"SUN\"] = \"sun\";\n SHAPE_TYPE[\"SWOOSH_ARROW\"] = \"swooshArrow\";\n SHAPE_TYPE[\"TEAR\"] = \"teardrop\";\n SHAPE_TYPE[\"TRAPEZOID\"] = \"trapezoid\";\n SHAPE_TYPE[\"UP_ARROW\"] = \"upArrow\";\n SHAPE_TYPE[\"UP_ARROW_CALLOUT\"] = \"upArrowCallout\";\n SHAPE_TYPE[\"UP_DOWN_ARROW\"] = \"upDownArrow\";\n SHAPE_TYPE[\"UP_DOWN_ARROW_CALLOUT\"] = \"upDownArrowCallout\";\n SHAPE_TYPE[\"UP_RIBBON\"] = \"ribbon2\";\n SHAPE_TYPE[\"U_TURN_ARROW\"] = \"uturnArrow\";\n SHAPE_TYPE[\"VERTICAL_SCROLL\"] = \"verticalScroll\";\n SHAPE_TYPE[\"WAVE\"] = \"wave\";\n})(SHAPE_TYPE || (SHAPE_TYPE = {}));\nvar CHART_TYPE;\n(function (CHART_TYPE) {\n CHART_TYPE[\"AREA\"] = \"area\";\n CHART_TYPE[\"BAR\"] = \"bar\";\n CHART_TYPE[\"BAR3D\"] = \"bar3D\";\n CHART_TYPE[\"BUBBLE\"] = \"bubble\";\n CHART_TYPE[\"BUBBLE3D\"] = \"bubble3D\";\n CHART_TYPE[\"DOUGHNUT\"] = \"doughnut\";\n CHART_TYPE[\"LINE\"] = \"line\";\n CHART_TYPE[\"PIE\"] = \"pie\";\n CHART_TYPE[\"RADAR\"] = \"radar\";\n CHART_TYPE[\"SCATTER\"] = \"scatter\";\n})(CHART_TYPE || (CHART_TYPE = {}));\nvar SCHEME_COLOR_NAMES;\n(function (SCHEME_COLOR_NAMES) {\n SCHEME_COLOR_NAMES[\"TEXT1\"] = \"tx1\";\n SCHEME_COLOR_NAMES[\"TEXT2\"] = \"tx2\";\n SCHEME_COLOR_NAMES[\"BACKGROUND1\"] = \"bg1\";\n SCHEME_COLOR_NAMES[\"BACKGROUND2\"] = \"bg2\";\n SCHEME_COLOR_NAMES[\"ACCENT1\"] = \"accent1\";\n SCHEME_COLOR_NAMES[\"ACCENT2\"] = \"accent2\";\n SCHEME_COLOR_NAMES[\"ACCENT3\"] = \"accent3\";\n SCHEME_COLOR_NAMES[\"ACCENT4\"] = \"accent4\";\n SCHEME_COLOR_NAMES[\"ACCENT5\"] = \"accent5\";\n SCHEME_COLOR_NAMES[\"ACCENT6\"] = \"accent6\";\n})(SCHEME_COLOR_NAMES || (SCHEME_COLOR_NAMES = {}));\nvar MASTER_OBJECTS;\n(function (MASTER_OBJECTS) {\n MASTER_OBJECTS[\"chart\"] = \"chart\";\n MASTER_OBJECTS[\"image\"] = \"image\";\n MASTER_OBJECTS[\"line\"] = \"line\";\n MASTER_OBJECTS[\"rect\"] = \"rect\";\n MASTER_OBJECTS[\"text\"] = \"text\";\n MASTER_OBJECTS[\"placeholder\"] = \"placeholder\";\n})(MASTER_OBJECTS || (MASTER_OBJECTS = {}));\nvar SLIDE_OBJECT_TYPES;\n(function (SLIDE_OBJECT_TYPES) {\n SLIDE_OBJECT_TYPES[\"chart\"] = \"chart\";\n SLIDE_OBJECT_TYPES[\"hyperlink\"] = \"hyperlink\";\n SLIDE_OBJECT_TYPES[\"image\"] = \"image\";\n SLIDE_OBJECT_TYPES[\"media\"] = \"media\";\n SLIDE_OBJECT_TYPES[\"online\"] = \"online\";\n SLIDE_OBJECT_TYPES[\"placeholder\"] = \"placeholder\";\n SLIDE_OBJECT_TYPES[\"table\"] = \"table\";\n SLIDE_OBJECT_TYPES[\"tablecell\"] = \"tablecell\";\n SLIDE_OBJECT_TYPES[\"text\"] = \"text\";\n SLIDE_OBJECT_TYPES[\"notes\"] = \"notes\";\n})(SLIDE_OBJECT_TYPES || (SLIDE_OBJECT_TYPES = {}));\nvar PLACEHOLDER_TYPES;\n(function (PLACEHOLDER_TYPES) {\n PLACEHOLDER_TYPES[\"title\"] = \"title\";\n PLACEHOLDER_TYPES[\"body\"] = \"body\";\n PLACEHOLDER_TYPES[\"image\"] = \"pic\";\n PLACEHOLDER_TYPES[\"chart\"] = \"chart\";\n PLACEHOLDER_TYPES[\"table\"] = \"tbl\";\n PLACEHOLDER_TYPES[\"media\"] = \"media\";\n})(PLACEHOLDER_TYPES || (PLACEHOLDER_TYPES = {}));\n/**\n * NOTE: 20170304: BULLET_TYPES: Only default is used so far. I'd like to combine the two pieces of code that use these before implementing these as options\n * Since we close <p> within the text object bullets, its slightly more difficult than combining into a func and calling to get the paraProp\n * and i'm not sure if anyone will even use these... so, skipping for now.\n */\nvar BULLET_TYPES;\n(function (BULLET_TYPES) {\n BULLET_TYPES[\"DEFAULT\"] = \"&#x2022;\";\n BULLET_TYPES[\"CHECK\"] = \"&#x2713;\";\n BULLET_TYPES[\"STAR\"] = \"&#x2605;\";\n BULLET_TYPES[\"TRIANGLE\"] = \"&#x25B6;\";\n})(BULLET_TYPES || (BULLET_TYPES = {}));\n// IMAGES (base64)\nconst IMG_BROKEN = 'data:image/png;base64,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';\nconst IMG_PLAYBTN = 'data:image/png;base64,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AAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKREkRUAAACwrUpLSwuGDRvWfMCAAS26du3avKysrLiioqKkZcuWzZs1a1bcvHnz0tLS0rJsNtusuLi4ebNmzUoLCgo+8/eijY2N9Zs3b66pra2tqqur21xTU1NdVVVVs2nTptqNGzdWbdiwoeYvf/nL5hUrVlQtWLBgw6xZs6pqamoaJQYAAEDaKYABAACIiIghQ4aUHnTQQW379u3bql27dq3at2/fpkWLFq2bN29eWVpa2qpZs2bNCwsLm2ez2fLCwsLyoqKi8sLCwtKknK+hoaG6vr6+qqGh4S91dXV/aWhoqNq8eXNVTU3NuqqqqvUbNmxYu2rVqjWrV69e99Zbb6177rnnPpgzZ06NTwYAAABJogAGAADIA8OGDWt+xBFHdBwwYECnLl26dGjdunXHFi1adCgtLe1YUlLSvlmzZq0KCgqK07yDwsLCssLCwrKIaPdp/zuNjY21mzdvXrdp06ZVNTU172/YsGHl2rVr31+2bNnKBQsWrHjyySffnzVrVpVPGAAAAE1Fpuexsd9HfaF+ZcSal0ptCAAAIAE6deqUPf744zvtueeeXbp3796lbdu2XSorKzuXlpZ2KS0t7VBYWFhhSztGQ0PDxpqampU1NTXL169fv+yDDz5Y9s477yybPXv2sj/96U8rVqxYUWdLAAAAbE9t9q6Jog4f/TUFMAAAQEJks9nMt7/97Y4jRozo1bdv397t2rXrXl5e3rWsrKxzcXFx+4gosKUmp7G2tnZVTU3Nso0bNy5btWrV0tdff/2tJ598cvG999672noAAADYFgpgAACAhPne977X6a9Fb/v27Xu1bNmyV1lZWa8kvXOXLauvr9/wl7/8ZdG6desWL1u2bNHChQsX/fGPf1w8derUjbYDAADAliiAAQAAmqhsNps59dRTuxx66KH9+/Tp87n27dv3Ly8v719UVOSRzXlq06ZNKzZu3Pj6+++//8abb775xqOPPvrG3XffvcpmAAAA+CsFMAAAQBNx6qmndvniF784qHfv3v3btWv3uYqKis8VFhaW2wxbUl9fv37Dhg1vfPDBB68vXrz4jccee2z+jTfeuNxmAAAA8pMCGAAAYBc45phjWn/rW9/aq3///kPatGnTv6Kiop9HOLO9NDQ0VG/cuPGtNWvWLFy4cOGcO+6445WHHnporc0AAACknwIYAABgJzjjjDO6f+lLX9qrV69eg1u3bj2orKysR0RkbIadJFddXb103bp18xcvXjz30UcffeXqq69+x1oAAADSRwEMAACwnZWWlhb86le/2u3QQw8d1r17931btmw5qLCwsMxmaEoaGhqqP/zww/nvvPPOzGeeeWbW2LFj36ipqWm0GQAAgGRTAAMAAGwHP/7xj7t+9atf3bdXr15D27Ztu1c2m21jKyRJXV3dmg8++OCVRYsWvfznP/95xh/+8IdltgIAAJA8CmAAAIBtcOKJJ7Y75ZRTDujXr9+w1q1bD81ms61shTSpq6tbt3bt2pfffPPNWbfccsvUe++9d7WtAAAANH0KYAAAgE+hoqKi4IILLhg0YsSI/bp27bpfy5YtB2YymUKbIR/kcrmGDz/8cP6777474/nnn59x4YUXvrZx40aPiwYAAGiCFMAAAAAf4/jjj2/7/e9//8D+/fsf2Lp1630KCgpKbAUiGhsbN61fv37eW2+9NeWGG2545u67715lKwAAAE2DAhgAAOB/ZLPZzAUXXPC5I4888sDu3bsfWFFRsVtEFNgMbFl1dfWSd999d8qsWbNmnnvuuS+vW7euwVYAAAB2DQUwAACQ10pLSwsuvfTSQYcccsjBXbt2HVFWVtbDVmDb1dbWrnr//fdfmDp16uRf/vKXL65evbreVgAAAHYeBTAAAJB3Bg0aVHrBBRd8fs899zywQ4cOBxQVFbWwFdj+Ghsba9euXTtrzpw5T59//vmTX3755WpbAQAA2LEUwAAAQF4YNmxY8/POO+/gIUOGHOZ9vrDz/W0ZfNFFFz07a9asKlsBAADY/hTAAABAarVq1arwyiuv3HfEiBEjO3TocFBhYWGZrcCu19DQUP3+++8/O2XKlIk/+clPZm7cuLHRVgAAALYPBTAAAJAqrVq1Kvztb3+7/3777Xd4x44dRxQWFpbbCjRdDQ0NG99///0pM2bMeOqHP/zhC8pgAACAz0YBDAAApMJZZ53V45vf/OaRvXr1GllaWtrVRiB5ampq3l28ePHEO++8c9LVV1/9jo0AAABsPQUwAACQWMOHDy+/6KKLvjB48OCjW7RoMdBGID0+/PDDV+fNmzfhvPPOe3L69Ol/sREAAIBPRwEMAAAkSqtWrQpvuOGGQ/bbb79/atOmzX6ZTCZrK5BeuVyubs2aNTNmzJjx2JgxYyavW7euwVYAAAA+ngIYAABIhB//+Mddv/e9732lZ8+e/1RcXNzWRiD/1NbWfvD2228/dssttzz029/+9l0bAQAA+L8UwAAAQJNVUVFRcO21137+4IMPPrZ169b7ZTKZAlsBIqJxzZo1M59//vnxp5122hR3BQMAAPx/CmAAAKDJOeWUUzqefvrpx/bu3ftL2Wy2jY0AH6e+vn7j0qVLH/vd7373x+uvv36ZjQAAAPlOAQwAADQJ2Ww2c+uttx5wyCGHnNC6deu9I8LdvsDWaFy7du1L06ZN+/OPfvSjZ1evXl1vJQAAQD5SAAMAALtU//79S6655pp/2nPPPY8tLy/vayPAZ1VTU7NswYIF488999wHp06dutFGAACAfKIABgAAdomf//znPU855ZQTu3btemRhYWGZjQDbW2NjY92KFSuevOWWW+689NJLF9kIAACQDxTAAADATuMxz8Cusn79+rlPP/30f5188slT6+rqcjYCAACklQIYAADY4fr27Vv8hz/84a+Pee5nI8CuUlNT8+68efPu/8EPfvDgwoULN9kIAACQNgpgAABghxkyZEjpNddc89XBgwefWFxc3MFGgKaitrZ21dy5c+/5yU9+8uc5c+bU2AgAAJAWWyqAPYoNAADYJqNHj+4wb968n06ZMuXRYcOGnaH8BZqa4uLi9sOGDTtjypQpj86bN++nJ510UntbAQAA0s4dwAAAwFY599xze33/+9//dufOnY/IZDJZGwGSIpfL1S1fvvzJG2644fbLLrvsbRsBAACSyiOgAQCAz+y8887r+53vfOfbHTt2PDyTyRTaCJBUuVyuYcWKFU/cdNNN//XrX/96sY0AAABJowAGAAC22WWXXTboG9/4xg9at249zDaAtFm7du2su++++9pzzjnnNdsAAACSQgEMAABsNcUvkE8UwQAAQJIogAEAgE9N8Qvks7Vr18665557rvv5z38+3zYAAICmaksFcGHlwOj6UV9orIqoWZG1PQAAyBO/+MUvet9xxx3nHHrooT8pLS3tYiNAPiotLe2y7777HvP973+/X1lZ2ZIpU6assxUAAKCpKetcHwXlH/01BTAAAOS5M844o/u99957zpe//OWflZeX94qIjK0AeS5TXl7e8+CDDx71/e9/v3dEvDVjxowPrQUAAGgqFMAAAMD/ceKJJ7a77777fjJq1Kh/KS8v7xOKX4B/lCkvL+99+OGHj/rWt77VfvXq1Qvnz59fbS0AAMCutqUC2DuAAQAgzwwdOrTs+uuvP6l///4nFRYWltkI20NjY2Ns2rQpqquro6amJurr62PTpk2xefPmqK+vj+rq6qivr4/NmzfHpk2boqGhYZv/fxUWFkZJSUk0a9YsioqKoqysLIqKiqJZs2ZRUlISRUVFUVpa+r9/FRQUCIjtoqGhoeq11167a8yYMffMmTOnxkYAAIBdZUvvAFYAAwBAnujUqVP2nnvuGbXXXnudnM1mK22Ej9PQ0BAbN26MDRs2/J+/Nm7cGBs3boyamprYtGlTbNq0KWpqaqK2trbJnqe4uDhKSkqitLT0f/9eUVERFRUV0aJFi//zV0VFRRQWFvog8LHq6urWvvjii7eceOKJf169enW9jQAAADubAhgAAPLcXXfdddAXv/jF00tLS7vZRn7L5XKxYcOGWLt2baxbty7Wrl37d3+tW7cuNmzYkPd7atGiRbRu3TpatWoVrVu3jjZt2vzvf27dunW0aNHCh4morq5e+sgjj1zzne98Z6ptAAAAO5MCGAAA8tTVV189+MQTTzyzoqJioG3kj8bGxli5cmUsX748Pvjgg1i9evX//n3t2rXR2NhoSZ9RYWFhtGrVKtq1axdt27b937937tw5OnTo4LHTeWbDhg3z77333qvOPPPMebYBAADsDApgAADIM1/72tfaXHrppad27979qIjQRKVUQ0NDrFq1KlasWBHvv//+//595cqVTfqRzGlXXFwcHTp0iI4dO0bnzp2jY8eO0alTp2jXrp1HS6dYLpdrfOeddx76+c9/fv2ECRPW2QgAALAjKYABACBP9OrVq9ldd931jT322OM7hYWFZTaSHh9++GG88847sXTp0njvvfdixYoVsXr16mhoaLCchCgsLIz27dtHp06dolu3btG9e/fo3r27x0mnTENDQ9W8efNu++Y3v/nHJUuWbLYRAABgR1AAAwBAHrjrrrtG/NM//dOZJSUlXWwj2davXx9Lly6Nd955539L3w8//NBiUqqysvJ/y+C//tWqVSuLSbiamppljz322G9Gjx49xTYAAIDtTQEMAAAp9qtf/arPD3/4w5+1atVqL9tIno0bN8aSJUvirbfeikWLFsV7770XmzZtspg8V1JSEl27do0+ffpE3759o3fv3lFeXm4xCbRu3bqXr7322ivGjh27yDYAAIDtRQEMAAApNGjQoNI77rjju7vttttJBQUFWRtJhtWrV8ebb74ZixcvjiVLlsTy5cujsbHRYtiigoKC6Ny5c/Tu3Tt69+4d/fr1i7Zt21pMQjQ2Nta98cYbd33rW9+6ff78+TU2AgAAfFYKYAAASJHS0tKCBx988Jj99tvvn7PZbBsbaboaGhri7bffjrfeeisWLFgQS5YscXcv201FRUX06tUr+vbtG3379o2ePXtGYWGhxTRhdXV1a2bMmHHjV77ylYdqamr85gcAALDNFMAAAJASp59+erdf/vKX51ZWVu5jG03T6tWr47XXXouFCxfGm2++GRs3brQUdooWLVpE3759Y8CAATFw4EB3CDdh69evf/E//uM//vPqq69+xzYAAIBtoQAGAICEGzRoUOm99977w969ex+byWTc4teErF+/PubNmxcLFiyIN954Q+FLk9GiRYvo169fDBgwIPbYY4+orKy0lCYkl8s1LF68eNyJJ554rcdCAwAAW0sBDAAACXbNNdcMOemkk35RVlbWyzZ2vVwuF++++27MnTs3XnvttViyZIl3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B7lcrm7y5Mm//vKXv/yIbQAAwK63pXcAK4ABAMg7paWlBTNnzjyzT58+x9vG39uwYUOMGzcuZsyY4VHPQF7KZDKx3377xde//vWoqKiwkH+waNGiP+27775X1dTUeCwEAADsQgpgAAD4H926dctOnjz5V506dRppG/9fLpeLqVOnxp///OfYuHGjhQB5r6KiIkaNGhX777+/x0L/g+XLlz9+6KGHXvLuu+/W2QYAAOwaWyqAvQMYAIC8MXz48PInnnjiynbt2o2wjf/vnXfeiWuvvTaee+652Lx5s4UARMTmzZtjzpw58dprr0XPnj2jRYsWlvI/Kioq+n7rW98aMnXq1Ofee+89f3AAAMAusKV3ACuAAQDIC9/+9rc73n777X9o0aLFANv4b1VVVXHXXXfFvffeG+vXr7cQgI+wbt26eP7552P9+vWx2267RVFRkaVERElJSefjjjvuoA8++GDKK6+88hcbAQCAnUsBDABAXjv//PP7XXzxxX8oKSnpbBv/bfr06XHttdfGokWLLAPgU3jnnXdi2rRp0bp16+jc2R8nERHZbLbyC1/4whElJSUvTp48eY2NAADAzqMABgAgb/3ud7/b60c/+tFVRUVFrWwjYs2aNXHzzTfHpEmTora21kIAtkJtbW289NJL8c4770Tfvn2jtLQ073dSWFhYNnz48C/26dNn4UMPPbTMpwQAAHYOBTAAAHnp1ltv3f+b3/zmfxYWFjbP913kcrl4/vnn4/rrr4/ly5f7cAB8BitXroxp06ZFRUVFdOvWLTKZTF7vo6CgIDto0KBDBw0atOiBBx54xycEAAB2vC0VwJmex8Z+H/WF+pURa17ym6wAACTTww8//KXDDjvsXzKZTN6/rPGDDz6I22+/Pd544w0fDIDtbMCAAfGtb30r2rRpk/e7yOVyjVOmTPn1yJEjH/LJAACAHavN3jVR1OGjv6YABgAgdV555ZXTPve5z30r3/fQ0NAQjz32WDz++ONRV1fngwGwg2Sz2Tj66KPjC1/4QhQUFOT9Pl5//fU79tprr9/7ZAAAwI6jAAYAIC9ks9nMyy+/fFafPn2Oz/ddvPvuu3HbbbfFe++954MBsJN069YtvvOd70S3bt3yfhdLliy5f5999rmypqam0ScDAAC2PwUwAACpV1paWjBr1qyzevfufVw+7yGXy8WTTz4ZDz74oLt+AXaBbDYbxxxzTBxxxBF5fzfw0qVLHxg6dOjlSmAAANj+FMAAAKRar169mk2ePHlsu3btDsrnPaxcuTJuueWWePvtt30oAHaxnj17ximnnBIdOnTI6z2sXr16yiGHHPIvS5Ys2exTAQAA28+WCuDCyoHR9aO+0FgVUbMia3sAADRpQ4cOLXvqqacub9Omzf75uoNcLhfPPPNMXH/99bF27VofCoAmYP369TFlypQoKSmJnj17RiaTycs9NG/evPtJJ500ZPLkyc+sWLHCoykAAGA7KetcHwXlH/01BTAAAIk1ZMiQ0kceeeSKVq1a7Z2vO6iuro7bb789nnjiiWhs9IRNgKaksbEx5s+fH++//34MGDAgstn8/DlLaWlpp6997WuDn3rqqadXrlxZ75MBAACfnQIYAIDUOfTQQ1s8+OCDv2/ZsuUe+bqDOXPmxNVXX+2RzwBN3PLly+OFF16Ijh075u0joUtLSzudcMIJ+7/00ktPv/3227U+FQAA8NkogAEASJVhw4Y1v++++37TsmXLQfl4/vr6+hg/fnz88Y9/jNpaP0MHSILNmzfHiy++GJs3b47ddtstCgoK8m4HxcXFbY866qg9n3vuuaeXL1/ucdAAAPAZKIABAEiNI488snLcuHG/b9GixcB8PP97770XV111VcyZM8eHASCBFi1aFC+//HL069cvWrRokXfnLykp6XDcccftP2fOnGcWLVq0yScCAAC2jQIYAIBUOPLIIyvvvPPO35aXl++Wj+d/+umn48Ybb4wPP/zQhwEgwf7yl7/ECy+8ECUlJdGrV6+8O3+zZs3aHHXUUfspgQEAYNspgAEASLxjjz227W233faH5s2b98m3s1dVVcXNN98cTz31VDQ2NvowAKRAY2NjzJ8/P5YtWxYDBgyIZs2a5dX5mzVr1uaYY4458M0333xm4cKFNT4RAACwdRTAAAAk2qGHHtritttuuzofy9+33347rrnmmli8eLEPAkAKvf/++/HKK69Enz59orKyMq/Ons1mK4888sh9Zs6c+dTSpUs3+zQAAMCnpwAGACCxjjjiiJb33nvvteXl5f3y6dy5XC4mTZoUN998c1RVVfkgAKRYVVVVTJ06NbLZbPTp0ycymUzenL24uLjtV7/61c+/8sorTy1evLjWpwEAAD4dBTAAAIl06KGHtrj33nt/l2/lb3V1ddx0000xefLkyOVyPggAeSCXy8WCBQvi3Xffjd133z2y2fz5mUyzZs1aH3300fvNmDHjSXcCAwDAp6MABgAgcYYOHVo2fvz4qysqKgbk07mXLVsWV111lUc+A+SplStXxiuvvBKf+9znoqKiIm/O3axZszZHH3300GeeeebJFStW1PkkAADAlimAAQBIlCFDhpQ++uij17Rs2XL3fDr31KlT49prr42NGzf6EADksaqqqpg+fXq0bds2unTpkjfnLikpaT9q1KihTz755JMrV66s90kAAICPt6UCuMB6AABoSjp16pSdMGHCv1dWVu6RL2dubGyMcePGxR133BF1dW56AiCitrY2br755hg/fnw0NjbmzbkrKyv3mDBhwr9369bNXQkAALCNFMAAADQZrVq1Kpw+ffolbdq02T9fzlxdXR2/+93vYtKkSd73C8DfyeVy8fjjj8fvf//7qK6uzptzt2nTZv8pU6Zc0qpVq0KfAgAA2HoKYAAAmoSKioqC2bNnX9KuXbuD8uXMS5cujYsuuijmz5/vAwDAx3r11VfjoosuiqVLl+bNmdu1a3fQ7Nmz/72iosLPrgAAYCu5iAYAoEmYOXPmz9q1a3dIvpz35ZdfjiuuuCLWrVsnfAA+0bp16+KKK66Il19+OW/O3K5du4Nnzpz5M+kDAMDWUQADALDLvfjii2N69OgxKh/Omsvl4oEHHogbbrghamtrhQ/Ap1ZbWxs33HBDPPDAA3nz2oAePXqMevHFF8dIHwAAPj0FMAAAu9SkSZO+NnDgwFPy4ax1dXVx8803x8SJE73vF4BtksvlYuLEiXHLLbdEXV1dXpx54MCBJ0+aNOlr0gcAgE9HAQwAwC7z6KOPHnXggQeekw9nXbduXfz617+OWbNmCR6Az2zmzJnx61//Ol9eJZA58MADz3n00UePkjwAAHyywsqB0fWjvtBYFVGzImtDAADsEDfeeOO+Rx999EWZTKYw7Wddvnx5XHXVVbFy5UrBA7DdbNiwIWbPnh0DBw6MioqKtB8307179/179uz56sMPP7xc+gAA5LuyzvVRUP7RX1MAAwCw011xxRV7fPe7372qoKCgWdrPOmfOnPjtb38bGzduFDwA2111dXVMmzYtOnfuHB07dkz1WTOZTOHuu+9+eJs2bV6aNGnSKukDAJDPFMAAADQZZ5xxRvef/exnvy0sLCxP+1knTJgQd999d9TX1wsegB2moaEhXnrppchms9G3b99UnzWTyRTttddeB/3lL395dubMmRukDwBAvlIAAwDQJBx00EEVf/jDH64pLi7ulOZz5nK5eOCBB+Kxxx4TOgA77c+eBQsWRF1dXfTv3z8ymUxqz1pQUFBywAEHDJs+ffqkpUuXbpY+AAD5aEsFcIH1AACwMwwaNKj0vvvuu7qsrKxXms9ZV1cX1113XUyaNEnoAOx0EydOjOuvvz7q6upSfc6ysrJef/rTn67u379/idQBAODvKYABANjhKioqCh577LGLKyoqBqb5nNXV1XHNNdfE7NmzhQ7ALvPKK6/ElVdeGVVVVak+Z4sWLQZOnDhxbEVFhZ9vAQDA33CBDADADjdz5syftW3b9sA0n3HdunVx2WWXxRtvvCFwAHa5xYsXx2WXXRZr165N9TnbtWt34MyZM38mcQAA+P8UwAAA7FBPPvnkqB49eoxK8xlXrVoVV1xxRSxfvlzgADQZK1asiCuuuCJWrlyZ6nP26NFj1KRJk0ZJHAAA/lth5cDo+lFfaKyKqFmRtSEAALbZjTfeuO+XvvSlCzOZTGp/8fDdd9+NK6+8MtatWydwAJqc6urqmDVrVvTv3z8qKytTe85u3boN79mz57yHH37Yb2MBAJAXyjrXR0H5R39NAQwAwA5x3nnn9T311FOvLigoKE7rGV977bW45pprorq6WuAANFmbN2+OGTNmRI8ePaJ9+/apPGMmkykYNGjQIYWFhVOee+45v5UFAEDqKYABANipjjrqqFb/8R//8YdmzZq1SusZX3755bj++uujrq5O4AA0eQ0NDfHSSy9Fp06dolOnTqk8Y0FBQXbYsGGfnz9//qQ33nhjk9QBAEizLRXA3gEMAMB21a1bt+wNN9zwnyUlJR3TesYpU6bEjTfeGPX19QIHIDHq6+vjxhtvjKlTp6b2jCUlJZ1uuOGG/+jWrZu7GgAAyFsKYAAAtqunn376XyorK/dI6/kmTZoUd955ZzQ2NgobgMRpbGyMO+64I5588snUnrGysnLw008//UtpAwCQrxTAAABsN88///w3unTp8k9pPd/EiRNj3LhxkcvlhA1AYuVyubj//vtTXQJ36dLlS88+++yJ0gYAIB95BzAAANvFTTfdNPzII488L5PJZNJ4vsceeyzGjx8vaABS47XXXotmzZpF3759U3m+zp0779urV695Dz/88DJpAwCQNlt6B7ACGACAz+wXv/hF7x/+8IdXFxQUNEvj+R544IF45JFHBA1A6ixYsCDq6upiwIABqTtbJpPJDBo06ODGxsbnpk6dul7aAACkiQIYAIAd5oADDqj43e9+99tmzZq1TeP5xo0bF5MmTRI0AKm1aNGi2Lx5cwwcODB1ZysoKMjut99+w5577rnH33vvvc3SBgAgLbZUAHsHMAAA2yybzWbuvPPOfyktLe2exvNNmDBB+QtAXpg0aVI89NBDqTxbaWlpj3vuuedfstlsRtIAAOQDBTAAANvs+eef/06HDh0OTePZHn744Xj44YeFDEDeeOSRR+LPf/5zKs/WoUOHw5599tlvSxkAgHygAAYAYJvcd999hw8ePPjUNJ7t/vvvjwkTJggZgLzz2GOPxX333ZfKs+25554/+NOf/nSYlAEASDvvAAYAYKudccYZ3ceMGXN5QUFBcdrONnHixHjkkUeEDEDeWrx4cWSz2ejbt2/ajpbp06fPvn/5y18mz5w5c4OkAQBIsi29A1gBDADAVhk2bFjzG2+88Q/NmjVrl7azPfroo6l99CUAbI2FCxdGUVFR9OvXL1XnKigoKD7wwAP3e/LJJx9dsWJFnaQBAEiqLRXAHgENAMBWuffee39ZWlraPW3nevzxx+PBBx8UMAD8jz//+c8xceLE1J2rtLS0x3333fdLCQMAkFYKYAAAPrVJkyaN6tSp0xEpPFeMHz9ewADwD8aPHx+TJ09O3bk6der0hUmTJn1VwgAApJFHQAMA8Kmcd955fU888cR/z2QyRWk618yZM+Puu+8WMAB8jNdeey06duwYnTt3TtW5unbtuk9BQcHzzz333DopAwCQNN4BDADAZ3LEEUe0vOKKK67NZrOVaTrXyy+/HDfffHPkcjkhA8DHyOVyMXv27OjSpUt06tQpNefKZDJF++yzz/CpU6c+9u67726WNAAASeIdwAAAbLNsNpu55ZZb/q2kpKRjms61YMGCuPnmm6OxsVHIAPAJGhsb4+abb44333wzVecqLS3tcvfdd5+fzWYzUgYAIC0UwAAAbNGkSZO+3rZt2wPTdKZly5bFDTfcEPX19QIGgE+prq4urr322li+fHmqztWuXbsDH3/88VESBgAgLTwCGgCAj3XZZZcN+upXvzo2k8mk5hcH33///bjyyiujqqpKwACwlerq6uLll1+OIUOGRHl5eWrO1aVLl31LS0unPvPMM2ukDABAEngENAAAW61///4lJ5988q8ymUxRWs60YcOG+P3vfx8bN24UMABso40bN8bvfve7VP15WlBQkP3hD394ft++fYslDABA4q9vrQAAgI/y4IMPnl1WVtYrLeeprq6O3/zmN7Fq1SrhAsBntGrVqrjyyiujuro6NWcqKyvr8/DDD58lXQAAkk4BDADA/zF+/Pgju3XrdnRazlNfX5/KdxYCwK60fPnyuO6666K+vj41Z+rRo8dXx40bd4R0AQBIMgUwAAB/53vf+16nI4444py0nCeXy8Vtt90Wb7zxhnABYDt7/fXX47bbbotcLpeaMx155JHnfvvb3+4oXQAAkkoBDADA/6qoqCi4+OKLLywsLCxPy5nGjx8fs2bNEi4A7CCzZs2Khx56KDXnKSwsrPj1r399QUVFhZ+bAQCQSC5kAQD4XxMnThxdWVk5OC3nef7552PixImCBYAd7LHHHosXXnghNeeprKzc89FHHz1RsgAAJFFh5cDo+lFfaKyKqFmRtSEAgDxxwQUX7DZq1KgLM5lMYRrO8+qrr8Ytt9ySqkdSAkBT/7O3d+/e0a5du1Scp2PHjkNzudxzU6ZMWSddAACamrLO9VHwMc/wcwcwAADRt2/f4h//+McXZzKZVPwG4HvvvRc33HBDNDY2ChcAdpKGhoa47rrrYtmyZak4T0FBQfbss88e27dv32LpAgCQqGtZKwAAYPz48T8qKyvrkYazbNiwIX7/+99HbW2tYAFgJ9u0aVP8/ve/j40bN6biPGVlZb3GjRs3RrIAACSJAhgAIM/ddNNNw/v06XN8Gs5SX18f1157baxdu1awALCLrFmzJq699tqor69PxXn69ev3jd///vdDJQsAQFIogAEA8thBBx1Uceyxx/5rRGTScJ477rgjFi9eLFgA2MUWLVoUd955Z1qOU/CNb3zj34YNG9ZcsgAAJOIC1goAAPLXzTfffFZxcXG7NJxl4sSJMX36dKECQBMxbdq0mDRpUirOUlJS0unOO+88Q6oAACSBAhgAIE/913/914FdunT5UhrO8tprr8Wf//xnoQJAEzN+/PhYsGBBKs7SrVu3o2+66abhUgUAoKlTAAMA5KEvfelLlV/5yld+lYazrFixIq6//vpobGwULAA0MY2NjXHdddfFihUr0nCczHHHHfergw46qEKyAAA0ZQpgAIA8dPXVV5+ezWYrk36OmpqauPbaa2PTpk1CBYAmatOmTXHttddGTU1N4s+SzWbb3njjjT+RKgAATZkCGAAgz9x6663Du3Tp8uWknyOXy8Utt9wSK1euFCoANHErV66MW2+9NXK5XOLP4lHQAAA0dQpgAIA8MnTo0LKvfvWrv0jDWSZMmBBz584VKgAkxJw5c+Kxxx5LxVlGjRr1i6FDh5ZJFQCApkgBDACQR+64444fFRcXd0z6OV5++eV45JFHBAoACfPQQw+l4he4SkpKOt5xxx0/lCgAAE2RAhgAIE9cfvnlu/fs2XNU0s/xwQcfxB133JGKR0gCQL7J5XJx2223xZo1axJ/lp49ex57+eWX7y5VAACaGgUwAEAe6NatW/a73/3uv2YymURf/9XX18cNN9wQ1dXVQgWAhKqqqoobb7wx6uvrE32OTCZT8N3vfvdX3bp1y0oVAICmRAEMAJAHxo8ff0pZWVmvpJ/jnnvuiaVLlwoUABJuyZIlcd999yX+HGVlZT3Hjx9/ikQBAGhKFMAAACn385//vOeAAQNGJ/0c06dPjylTpggUAFJi8uTJMWPGjMSfY8CAAaN//vOf95QoAABNhQIYACDFstls5qyzzjo3k8kk+tGEK1asiLvvvlugAJAyd911V6xYsSLRZ8hkMtmzzjrr3Gw2m5EoAABNgQIYACDFxo0b98XKysq9knyG2trauOGGG6K2tlagAJAyf/1zfvPmzYk+R2Vl5V7jxo0bKVEAAJoCBTAAQEoNHz68/OCDDz4t6ee4//77Y/ny5QIFgJRavnx5jBs3LvHnGDFixI+HDRvWXKIAAOxqCmAAgJS69dZbT8tms22TfIYZM2bEc889J0wASLnJkyfHzJkzE32G4uLitrfffvtp0gQAYFdTAAMApNBVV121R48ePb6S5DOsXLky7rrrLmECQJ64++6744MPPkj0GXr27PnVK664Yg9pAgCwKymAAQBSprS0tOAb3/jGT5N8rdfY2Bi333679/4CQB6pqamJ2267LRobG5N8jIJvfvObZ5aWlvqZGwAAu+6i1AoAANJlwoQJX6uoqBiQ5DOMHz8+Fi1aJEwAyDNvvvlmPPjgg4k+Q4sWLQY9+OCDx0gTAIBdRQEMAJAiRx55ZOWwYcN+kOQzzJ07N5544glhAkCemjhxYixYsCDRZxg+fPiPjjjiiJbSBABgV1AAAwCkyBVXXHFyUVFRRVLnr6qqijvvvDNyuZwwASBP5XK5uP3226O6ujqxZygqKmrxm9/85mRpAgCwKyiAAQBS4vzzz+/Xu3fv45J8httvvz0+/PBDYQJAnlu3bl3cfvvtiT5D7969jz///PP7SRMAgJ1NAQwAkALZbDZz6qmn/jyTyST2+m769OkxZ84cYQIAERExe/bsmDFjRmLnz2QyBaeeeurPs9lsRpoAAOxMCmAAgBT44x//eERlZeXgpM6/du3auPfeewUJAPyde+65J9atW5fY+SsrKwf/6U9/+oIkAQDYmRTAAAAJ17dv3+JDDjnkR0k+w9133x01NTXCBAD+Tk1NTdx9992JPsPBBx/8o759+xZLEwCAnUUBDACQcHfdddc3S0pKOiV1/smTJ8e8efMECQB8pLlz58azzz6b2PlLSko63nPPPd+SJAAAO4sCGAAgwb70pS9VDhw48KSkzr9mzZoYP368IAGALXrggQdizZo1iZ2/f//+Jx111FGtJAkAwM6gAAYASLArrrji1MLCwvIkzp7L5eK2226LTZs2CRIA2KJNmzbFbbfdFrlcLpHzFxYWll1++eU/kCQAADuDAhgAIKF+8Ytf9O7evftXkjr/s88+G2+88YYgAYBP5Y033ojnn38+sfN369bt6F/96ld9JAkAwI6mAAYASKgf/vCHP8pkMom8nvvggw/igQceECIAsFXGjRsX69atS+TsmUym4NRTT/2xFAEA2NEUwAAACXTdddcNa9eu3YFJnD2Xy8Udd9wRtbW1ggQAtsqmTZvizjvvTOz8bdq02f+mm27aT5IAAOxICmAAgIQpLS0t+NrXvnZ6Uud/4YUXYuHChYIEALbJq6++GjNmzEjs/Mccc8zpFRUVfiYHAMAO42ITACBhbr/99oMrKip2S+LsGzZsiHHjxgkRAPhM7r///qiqqkrk7OXl5X3/67/+6wgpAgCwoyiAAQASpKKiouCwww47Nanz33vvvYn9YS0A0HRs2LAh7r///sTOf9BBB/1zq1atCiUJAMCOoAAGAEiQ+++//+iysrKeSZx9zpw58dJLLwkRANguXnjhhViwYEEiZy8tLe32xz/+8StSBABgR1AAAwAkRN++fYv33Xfff07i7LW1tXHvvfcKEQDYru6+++6oq6tL5Oz77bffKf379y+RIgAA25sCGAAgIW6++eZRxcXFbZM4+yOPPBJr164VIgCwXa1atSoee+yxRM6ezWbb3njjjV+TIgAA25sCGAAgAYYOHVq21157fSeJs7/33nvxxBNPCBEA2CEmTpwYK1asSOTsQ4YM+c7QoUPLpAgAwPakAAYASIBrr732xKKiosqkzZ3L5eKee+6JxsZGIQIAO0R9fX3cddddkcvlEjd7UVFR5bXXXnuCFAEA2J4UwAAATdwBBxxQMWDAgG8kcfYZM2bEW2+9JUQAYId6880348UXX0zk7AMGDPjG8OHDy6UIAMD2ogAGAGjirrrqqhOKiooqkjb3pk2b4oEHHhAgALBT3H///VFbW5u4uYuKilpcffXV7gIGAGC7UQADADRhBx10UEX//v0Teffvww8/HB9++KEQAYCdYv369TFhwoREzj5w4MBvHHDAARVSBABge1AAAwA0Yf/5n/95bGFhYfOkzb1q1aqYPHmyAAGAnerpp5+O1atXJ27uwsLC8ssuu2yUBAEA2B4UwAAATdQBBxxQMWjQoNFJnP3uu++O+vp6IQIAO1V9fX3cddddiZx99913/+bQoUPLpAgAwGelAAYAaKIuv/zyYwsLC8uTNvfcuXNjwYIFAgQAdokFCxbE3LlzEzd3UVFRi9/97ndflyAAAJ+VAhgAoAkaOnRo2aBBgxL37t+6urr405/+JEAAYJf605/+FHV1dYmbe/fdd//mkCFDSiUIAMBnoQAGAGiCfvOb33ylqKioZdLmfu655xL53j0AIF1Wr14dzz33XOLmLioqann11VcfLUEAAD4LBTAAQBPTq1evZoMHD/5m0uaurq6ORx55RIAAQJPwyCOPRHV1deLmHjJkyLe6deuWlSAAANtKAQwA0MTcdNNNxxQXF7dN2twTJkyIqqoqAQIATUJVVVUifzmtuLi43a233uouYAAAtpkCGACgCWnVqlXhXnvtdVLS5l61alU8++yzAgQAmpTJkyfHqlWrEjf30KFDR7dq1apQggAAbAsFMABAE3LLLbccXlJS0jlpcz/44INRX18vQACgSamvr48HH3wwcXOXlJR0vummmw6VIAAA20IBDADQRGSz2cwBBxzw7aTNvWjRonjppZcECAA0SS+99FIsXrw4cXOPGDHiO9lsNiNBAAC2lgIYAKCJuOaaa/YuLy/vm7S5H3roocjlcgIEAJqkXC6XyLuAy8vL+1111VV7SRAAgK2lAAYAaCK+8pWvfDdpM8+bNy8WLlwoPACgSVu4cGG8+uqrrg8BAMgLCmAAgCbgsssuG1RZWblPkmbO5XIxfvx44QEAifDAAw8k7qklrVu33veSSy7pLz0AALaGAhgAoAkYNWrUCUmbefbs2bFs2TLhAQCJsGzZsnjllVcSN/cJJ5xwovQAANgaCmAAgF3sn//5nzt37NjxiCTN3NjYGA888IDwAIBEGT9+fDQ0NCRq5k6dOn1h9OjRHaQHAMCnpQAGANjFfvSjH30tk8kk6rps2rRpsWrVKuEBAImyatWqeOGFFxI1cyaTKfzpT386SnoAAHxaCmAAgF1o0KBBpX369Plqkmaur6+PCRMmCA8ASKQJEyZEXV1dombu27fvV/r27VssPQAAPg0FMADALnTZZZcdXlRUVJGkmadOnRpr164VHgCQSOvXr48pU6YkauaioqLK3/zmN0dIDwCAT0MBDACwi2Sz2cy+++57UpJmrqurc/cvAJB4jz76aOLuAt5///1PymazGekBAPBJFMAAALvI1VdfPbSsrKx3kmaeMmVKbNiwQXgAQKJt2LAhnn/++UTNXFZW1ueqq67aS3oAAHwSBTAAwC7y5S9/+bgkzVtfXx8TJ04UHACQCo8//nji7gL+0pe+dLzkAAD4JApgAIBdYPTo0R3atm07IkkzT5s2LdatWyc8ACAVPvzww5g+fXqiZm7fvv2I0aNHd5AeAABbogAGANgFfvrTn47KZDKFSZm3vr4+HnnkEcEBAKnyyCOPRH19fWLmzWQyhT/96U+/JjkAALZEAQwAsJN16tQp26dPn6OTNLO7fwGANFq3bl1MmzYtUTP36dPnmE6dOmWlBwDAx1EAAwDsZFddddUB2Wy2dVLmbWxsjEmTJgmOVOvYsWN06OCJmgD5aNKkSdHY2JiYebPZbOurrrrqAMkBAPBxFMAAADvZiBEjvp6keV988cVYtWqV4Ei1Ll26xIUXXhinnXZadO3a1UIA8siqVavipZdecj0JAEBqKIABAHaiM844o3tlZeXeSZk3l8vFxIkTBUdeyGQyMXjw4PjVr34VY8aMcUcwQB55/PHHI5fLJWbeysrKvc8444zukgMA4KMogAEAdqJTTjnlqxGRScq8CxYsiPfee09w5JVMJhN77713XHjhhTFmzJho3769pQCk3HvvvRcLFy5M1B9X/3NdCQAA/4cCGABgJ+nVq1ezXr16fTlJM3v3L/nsr0XwBRdcECeffHK0bdvWUgBSLGnXPb169fpyr169mkkOAIB/pAAGANhJrrjiioOLiopaJmXeBN4JAztEYWFhDB8+PC688MIYPXp0VFZWWgpACi1YsCCWLVuWmHmLiopaXnnllYdIDgCAf6QABgDYSYYPH/6VJM2btHfhwY5WVFQUI0aMiEsuuSRGjx4dLVu2tBSAFMnlcvH4448naub99tvvK5IDAOAfKYABAHaC0aNHd6isrByalHnXrl0bL7/8suDgI/y1CL744ovjhBNOiBYtWlgKQEq89NJLsW7dusTMW1lZudfo0aM7SA4AgL+lAAYA2AlOP/30o5J07fXMM89EQ0OD4GALiouL47DDDouxY8fGqFGjoqyszFIAEq6hoSGeeeaZJI1c8D/XmQAA8P8vEq0AAGDHymazmX79+n05KfPW1tbGlClTBAefUnFxcYwcOTIuvfTSGDVqVJSWlloKQII9//zzUVtbm5h5+/Xr9+VsNpuRHAAAf6UABgDYwX7zm9/sWVJS0jkp886YMSOqq6sFB1uppKQkRo4cGZdcckkcffTRUVJSYikACVRdXR0zZ85M0p8/na+44orBkgMA4K8UwAAAO9gXvvCFLyVl1lwuF08//bTQ4DNo3rx5HHXUUXHJJZfEyJEjI5vNWgpAwjz11FORy+USM++RRx75ZakBAPBXCmAAgB1oyJAhpZ07dz4iKfO+/vrrsWLFCsHBdlBeXh6jRo2KSy+9VBEMkDArVqyI119/PTHzdunS5fD+/ft79AQAABGhAAYA2KHGjh17aGFhYWJeCOruX9j+KioqYtSoUXHxxRfH4YcfHkVFRZYC4LpouyosLGz+H//xHwdLDQCACAUwAMAOteeeex6ZlFnXrl0b8+bNExrsIK1atYrjjz8+LrroohgxYkQUFPh2DKApmzdvXqxZsyYx8+61115HSg0AgAgFMADADnPMMce0bt269b5Jmfe5556LxsZGwcEO1qZNmxg9enRcfPHFimCAJqyxsTGee+65JP35MvyYY45pLTkAAPykAQBgBznzzDMPz2Qyibje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FpafffbZvaQFAJA+CmAAgE9p//3375+EOV9//XVhAXmjvLw8Ro0aFf/+7/8eI0eOjGw2aymA67FP6fOf//xAaQEApI8CGADgU+rRo8fuTX3G2traePvtt4UF5J2KiooYNWpUXHzxxXH44Yc3+XdvAum2ePHiRLySo1evXoOkBQCQPgpgAIBPqXXr1k3+DoklS5ZEQ0ODsIC81apVqzj++OPj4osvjhEjRkRBgW97gZ2voaEhlixZ0uTnbNOmjQIYACCFfCcMAPApDBkypLR58+a9m/qcb775prAAIqJ169YxevToGDt2rCIYcF32MZo3b95n0KBBpdICAEgX3wEDAHwKp556av9MJtPkr53eeustYQH8jTZt2sTo0aPjvPPOi+HDhyuCAddlfyOTyRT84Ac/+Jy0AADSxXe+AACfwuDBg5v84/Hq6+tj0aJFwgL4CJ06dYqTTz45/u3f/i323nvvyGQylgLsUIsXL07Eqzn23HPPgdICAEgXBTAAwKfQpUuXAU19xnfeeSfq6uqEBbAFnTt3jjFjxiiCgR2utrY23n333SRc53oPMABAyiiAAQA+hZYtW/Zv6jN6/DPAp9elS5cYM2ZMnHvuuTF48GALAfL2+iwJ17kAAGwdBTAAwCcYPnx4eUlJSeemPqfHPwNsvV69esVpp50W55xzTvTvrwMB8u/6rLS0tPPw4cPLpQUAkB4KYACAT/Ctb31rt4ho8s8IXbx4sbAAtlGfPn3irLPOinPOOSd22203CwG2i4T8gl7m29/+dj9pAQCkhwIYAOAT7L777k2+CVi7dm1s2LBBWACfUZ8+feLss8+OM888M3r27GkhwGfy4Ycfxrp165r8nAMHDlQAAwCkSJEVAABsWadOnZr8D8TefvttQQFsRwMGDIgBAwbEggULYvz48bF06VJLAbb5Oq1Vq1audwEA2GkUwAAAn6CyslIBDJCnBgwYEP3794958+bFQw89FO+++66lAFtlyZIlsddeezX1613PvgcASBEFMADAFnTq1CnbvHnzXk19ziVLlggLYAfJZDIxePDg2GOPPeLll1+OBx98MFauXGkxQGqu05o3b967Xbt2RatXr66XGABA8nkHMADAFowZM6ZnJpPJNuUZGxsbPZoUYCfIZDKx9957x4UXXhhjxoyJ9u3bWwrwiZYuXRqNjY1NesaCgoLsqaee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k8nE7NmzY+LEibFmzRoNAXif/VNSzJo161kTAwBongTAAAC70O233/7KOeecszU/P78022sdMGBAtG/f3tWu0My9+uqrMWnSpFi1apVmALyPjh07xgEHHJCIWhsbG6u/8Y1v/NXUAACaJwEwAMAutHLlyob169fP6tat2+hsrzWVSsXhhx8ekyZNMjhohubMmROTJ0+OJUuWaAbAh3D44YdHKpVKRK3r16+fVVFR0WhqAADNU54WAADsWq+++mpirts77LDDDAyamTfffDP+/d//PX7yk58IfwE+pFQqFSNGjEhMva+88sozpgYA0Hw5AQwAsIvddNNNz5166qnV+fn5rbO91m7dukX//v1j4cKFBgc5btmyZfHYY4/F/PnzNQPgIzrggAOic+fOiai1sbFxy4033jjL1AAAmi8BMADALrZy5cqG8vLyGT179vx0Euo9+uijBcCQw5YvXx7jxo0T/AJ8wv1SUpSXlz9TXl7eYGoAAM2XABgAYDeYMWPGUxdccEEiAuAhQ4ZE69ato7q62uAgh6xcuTImTJgQc+fOjUwmoyEAH1ObNm3i0EMPTUy9zz777FOmBgDQvPkGMADAbvDVr371lYaGhk1JqLWgoCCOOOIIQ4McsW7duvj5z38ed955Z8yZM0f4C/AJjRw5MvLz8xNRa0NDw8abbrrpVVMDAGjenAAGANgNKisrm1atWjW9T58+5ySh3qOPPjqefPJJQREk2Pr16+Oxxx6L2bNn+3cZYBdJpVIxatSoxNS7cuXKadXV1WmTAwBo3pwABgDYTaZNm5aY6/c6duwYAwYMMDRIoA0bNsSvf/3r+Nd//dd49dVXhb8Au9CAAQOiY8eOian36aefftLUAAAQAAMA7CZf+9rX5tTX11ckpd6jjjrK0CBBqqqq4v77749vf/vb8eKLL0ZTU5OmAOxiRx55ZGJqra+vX/eNb3zjdVMDAMAV0AAAu0ltbW16xYoVT++///6fT0K9hx56aLRt2zaqqqoMD7LYli1bYsqUKfHcc8/F9u3bNQRgN2nbtm0MGTIkMfUuX778qdraWtc/AwDgBDAAwO70xz/+cUJSas3Pz4/jjjvO0CBL1dTUxKOPPhq33XZb/OUvfxH+Auxmxx57bOTn5yel3Myvf/3rCaYGAECEABgAYLe66667llZXV89PSr1HH310tGjRwuAgi7wd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qATAAABZ4umnn968fPnyxF3xN3r06GjXrp0BAgBZqUOHDnH88ccnru5ly5ZNmD59+hYTBADgoxIAAwBkkbvvvvtPmUymKUk1FxYWxumnn254AEBWOvPMMxP3yYpMJtN41113/dH0AAD4OATAAABZ5Be/+MWatWvXTkta3UcccUT06tXLAAGArNK7d+847LDDEld3eXn5X+6///51JggAwMchAAYAyDIPP/zwn5JWcyqVijPPPNPwAICsMmbMmEilUomr+8EHH/yT6QEA8HEJgAEAsszXv/71NzZs2DAraXUPHDgwDj74YAMEALLCoEGDYsCAAYmru6KiYuatt966wAQBAPi4BMAAAFlo3Lhxv01i3WPGjIm8PFtMAGDvysvLizFjxiSy9j//+c+/NUEAAD7RflgLAACyz/XXXz+nqqrqr0mru1evXnHUUUcZIACwVx1zzDHRvXv3xNW9adOmV2666aa5JggAwCchAAYAyFJ/+tOf7k1i3WPGjInS0lIDBAD2ijZt2sRZZ52VyNofeOCBe00QAIBPSgAMAJClbrrpprlJPAVcXFwcZ555pgECAHvFWWedFS1btkxc3Zs2bXrl5ptvnmeCAAB8UgJgAIAsNm7cuF8lse5Ro0ZF7969DRAA2KP69OkTI0eOTGTtjz322K9MEACAXUEADACQxcaOHTu7qqrqb0mrO5VKxfnnnx+pVMoQAYA9tv/4/Oc/n8j9R2Vl5d+uueaav5kiAAC7ggAYACDLTZ069bdJrLtv374xZMgQAwQA9ojDDjsssTeQTJ48+TcmCADAriIABgDIcpdeeumLVVVVryax9s9//vNRXFxsiADAblVaWhrnn39+Imuvqqr66+WXX/6SKQIAsKsIgAEAEuChhx76WRLrLisri9NPP90AAYDd6qyzzoqSkpIklp753e9+91MTBABgVxIAAwAkwA033DB3w4YNs5JY+3HHHRd9+vQxRABgt+jbt28cddRRiay9oqJi1te//vU3TBEAgF1JAAwAkBA///nPfxoR6aTVnUql4vOf/3zk5dl6AgC7Vn5+flx00UWRSqWSWH76F7/4xX+bIgAAu5q3cAAACXHHHXe8tW7duulJrL13795xzDHHGCIAsEudcMIJ0b1790TWXl5e/pc77rjjLVMEAGBXEwADACTI3XfffW8mk2lKYu1nnXVWtG3b1hAB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onv37vEv//IvccABBzSrdWcymaYnnnji9s997nPPeAoAAODDEQADAJBYDz/88NJjjjlmY+/evY+KiGZzFKq0tDSGDx8eq1evjvXr13sQAHLcwIED45prrol27do1t6VnZsyY8YOzzjprqqcAAAA+PAEwAACJdv/99795zDHHVO6zzz5HRDMKgVu0aBGHHXZYtGzZMhYuXBjpdNrDAJBjCgoK4pxzzonzzz8/WrRo0dyWn37uuefuOuWUUyZ4EgAA4KMRAAMAkHi///3v5w8bNmxF3759j2lO10GnUqno27dvDB06NBYvXhxbtmzxMADkiJ49e8YNN9wQgwcPblbf+434x7XPU6ZM+fbpp58+2ZMAAAAfnQAYAICc8OCDDy4ZNmzYin79+jWrEDgionXr1nHEEUdEfX19LF261MMAkGCpVCpOOOGEuOKKK6JNmzbNbv07wt9vnXPOOX/xNAAAwMcjAAYAIGc89NBDS4YNG7a8X79+xza3EDg/Pz8OPvjg6NWrV8yfPz8aGho8EAAJU1JSEpdffnmccMIJkZ+f3+zWn8lkGp944olvffazn53maQAAgI9PAAwAQE556KGHlo4cOXJdnz59RqWa252ZEdG1a9cYNmxYLFu2LCorKz0QAAnRt2/fuO6662K//fZrluvPZDLpp59++rvnnHPO054GAAD4ZATAAADknD/96U+LDj300KX7779/s7sOOiKiuLg4jjzyyCgpKYk333wz0um0hwIgSxUUFMRnP/vZuPDCC6OkpKRZ9iCdTjc88sgjt5x//vnTPREAAPDJCYABAMhJDz/88NId3wQelUqlmt09mqlUKvr06RMHH3xwLFy4MLZt2+ahAMgynTt3jrFjx8bQoUOjGV5aERH/CH+feOKJ2y+88MLnPBEAALBrCIABAMhZDz300JIePXq8NmjQoGPz8vJaNMcetG3bNkaNGhVNTU2xZMkSDwVAFkilUjF69Oi48soro0OHDs22D01NTdt++9vf/stll132oqcCAAB2HQEwAAA5bdKkSeXdu3efM3jw4GYbAufn58eAAQOiV69esWDBgti+fbsHA2Avad26dVx66aVx/PHHR35+frPtQ2NjY/WvfvWrf7nuuute81QAAMCuJQAGACDnTZ48eW1jY+OMI4444uiCgoKS5tqHrl27xqhRo2Lbtm2xcuVKDwbAHpRKpWLUqFExduzY6NWrV7PuRX19/fo77rjjK9/61rcWejIAAGDXEwADANAsPP/881UbNmx45rjjjjuqsLCwrLn2obCwMAYNGhT77bdfLF68OGpraz0cALtZ+/bt44orrogTTzwxCgub9/uU2tralTfffPPVP/nJT1Z7MgAAYPcQAAMA0Gz87W9/27p27doZJ5xwwsjCwsK2zbkXnTp1ipEjR0Z1dbXTwAC70ciRI+Pqq6+OHj16NPte1NTULL/hhhuu/e1vf7vOkwEAALuPABgAgGbltdde2zpv3rynTznllKFFRUWdmnMvCgsL49BDD4399tsvFi1a5DQwwC709qnfk08+udmf+o2I2Lx587yLL774unHjxm30dAAAwO71fgFwat9zYsTOftC4LmLjq610DwCAxOrVq1fhs88++69du3Y9QTciGhoaYurUqTF58uRobGzUEICPqaCgIE499dQYPXq04HeH8vLyp4499tjvrly5skE3AABg9+swrDYKuuz8ZwJgAAByWuvWrfNeeumlm/fdd9+zdeMfVq9eHffff38sWbJEMwA+ov322y8uuugi1z2/w8KFC38/fPjwnzY0NGR0AwAA9gwBMAAAzd7zzz9/8aGHHnp1RKR0IyKTycTMmTPjz3/+c9TV1WkIwAcoKSmJ8847L0aMGBGplL9Kdki//PLL9xx77LEPagUAAOxZ7xcA+wYwAADNwn333Tfn+OOP39yrV6/DQwgcqVQqevfuHcOHD49169ZFRUWFhwTgPRxyyCExduzY6N+/v/B3h0wm0/jMM8/828knnzxONwAAYM97v28AC4ABAGg2fve7370xePDgJf369Ts6lUrl60hEcXFxjBgxInr06BFLly6N2tpaTQHYoUOHDvGFL3whzjzzzCguLtaQHZqammoeeOCBWz73uc9N1w0AANg7BMAAALDDww8/vKygoOC54cOHH1FQUFCqI//QrVu3OO6446K0tDQWL14cTU1NmgI0Wy1btoxzzjknLr300ujevbuGvENtbe2K22677arbbrvtDd0AAIC9RwAMAADv8Oyzz25avHjx0yeddNKQoqKiTjryD3l5edGnT58YOXJkbN26NVatWqUpQLNz+OGHx1e+8pUYMGBA5OXlacg7VFVV/e3CCy+8/oEHHvDdAAAA2MsEwAAA8C7z58+vefbZZ58+44wz+hcX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OigOOOCAKCoq0pQs0djYuGXmzJk/PvPMMyc2NDS4XgAAAPjQBMAAAJADjjzyyNY/+9nPrujbt++5EZGnI9mluro6Fi5cGPPnz4958+ZFZWWlprBXtGvXLg455JAYMGBA9O/fP1q39nsjWSj91ltv/fmqq676xaxZs6q1AwAA+KgEwAAAkEN++ctfjhgzZsyNrVq16q0b2SmdTsfKlStj0aJFsXDhwli8eHFs27ZNY9gtSkpKol+/ftG/f//Yf//9o1evXpGX53dEslVNTc3yRx999EdXXnnlK7oBAAB8XAJgAADIMd26dSt8+OGHPzd48ODL8vPzbdyzXCaTiTVr1sTChQtj0aJFsWjRotiyZYvG8LGUlZVF//79/xn6du/ePVKplMZkuaampprXXnvtV2PGjHmgoqKiUUcAAIBPQgAMAAA56rjjjiv7r//6r8tdC508mzdvjuXLl8eKFSti+fLlsXjx4qipqdEY/pfi4uLo169f9O7dO/bZZ5/Yd999o6ysTGMSJJPJpJcsWfLn66677pfTp0/3mx8AAMAuIQAGAIAc99Of/nTIueeee3NpaWlf3UimxsbGWLlyZSxdujSWLVsWy5cvj3Xr1kUmk9GcZiKVSkWXLl1in332iT59+kSfPn2iV69eUVBQoDkJtXXr1sUPPvjgj6699tq/6wYAALArCYABAKAZaNeuXf64cePOGTp06BUFBQWtdST56uvrY+XKlf88KbxixYpYu3ZtpNNpzUm4vLy86Nq1a+yzzz7//KdXr17RsmVLzckBjY2NW/7617/+4pxzznm0srKySUcAAIBdTQAMAADNyIknntjmnnvuuXzfffcdk0qlHB3MMdu3b481a9bEmjVrYu3atbF27dooLy+PDRs2CIazUF5eXnTs2DG6desWXbt2jW7dukW3bt2iR48eUVhYqEE5JpPJNC5ZsuRR1z0DAAC7mwAYAACaoa9+9av7Xnfdddd16NDhCN3IfY2Njf8MhNetWxfr1q2LioqKWLduXWzbtk2DdrPS0tLo3LnzP//p0qVLdO3aNbp27eoK52Ziw4YNM//rv/7rxz/60Y+W6wYAALC7CYABAKAZ++UvfznirLPOuq64uNj3gZupmpqaWL9+/T//qaioiMrKyqisrIxNmzZFY2OjJn2AgoKCaN++fbRr1y7at28fHTt2jC5dukSnTp2ic+fOUVxcrEnN1NatW98aP378PVdcccXLugEAAOwpAmAAAGjm2rVrl//ggw+eOWLEiCsLCwvb6gjvtHnz5n+GwZs2bYrKysqorq6OLVu2xJYtW6K6ujqqq6sjk8nk3NpTqVS0bt06WrduHWVlZdGmTZsoLS39X2Fvu3btok2bNh4U/peGhobKl1566efnnHPO+OrqavevAwAAe5QAGAAAiIiIoUOHFt97770XHHjggRfk5+c7ssiHlk6n/xkEV1dXR01Nzfv+k8lkora2NtLpdNTX10dTU1PU1dXt0u8U5+XlRcuWLSM/Pz+KiooiLy8vWrVqFalUKoqLi3f6T0lJSbRq1eqfgW9paWnk5eUZMB9aU1NTzYIFC/745S9/+Y+zZ8+u0REAAGBvEAADAAD/y2mnndb2rrvuurRPnz5n5+XlFeoIe9LbgfDbtm/f/r7XUBcUFESLFi3++b/fDnxhT8pkMg1LliwZd8stt/xq0qRJVToCAADsTQJgAABgp0477bS2d95554X777//5wTBAP9XJpNpWLhw4QO33nrrHwS/AABAtni/ADi/7UHRc2c/SG+LqC33/gcAAHLZokWL6u69995X0un0swcddFCnkpKS3roC8A8VFRUz/7//7/+77aKLLpq6aNGiOh0BAACyRXH3xsgr3fnPBMAAAEDMnDmz8u67736qqalpWr9+/Ypbt27dN5VKpXQGaG4ymUx6zZo1U+65555/Peeccx6cOXNmpa4AAADZRgAMAAB8KDNnzqz88Y9//Gw6nZ4uCAaak7eD37vvvvtfzz///McEvwAAQDYTAAMAAB+JIBhoLgS/AABAEgmAAQCAj+XtILisrOyFvn37diwuLu4VEYJgIBdkKioqnrv33nu/PWbMmEcEvwAAQJK8XwCc2vecGLGzHzSui9j4aivdAwAA/unqq6/u8ZWvfOX8Pn36nJWXl9dCR4CkSafT9UuXLh3/X//1Xw/84he/WKMjAABAEnUYVhsFXXb+MwEwAADwkZ1xxhntb7/99rMPPPDA8/Pz81vrCJDtmpqaqhcsWPDgd77znUcmTpzotC8AAJBoAmAAAGC3GD58eMkPf/jDzwwePPjioqKijjoCZJv6+voNr7322u9vvPHGx2fPnl2jIwAAQC4QAAMAALvV0KFDi++5556zDjnkkPOKioq66giwt9XV1a19/fXXH7z++uvHC34BAIBcIwAGAAD2iFatWuXdc889w0455ZTzO3bseJSOAHtYZsOGDbOmTJny4PXXX/9qbW1tWksAAIBcJAAGAAD2uH/913/tf/7555/dq1ev0/Ly8lroCLC7pNPp+pUrV05+4IEHHvnOd76zSEcAAIBcJwAGAAD2mjPOOKP97bfffvYBBxzw2YKCgjY6AuwqjY2NVW+++eafv/e97z06YcKETToCAAA0FwJgAABgrxs+fHjJ97///dGDBg0aU1paur+OAB9XdXX1wtdee+3Rr371q1Nfe+21Wh0BAACaGwEwAACQVb761a/ue8EFF3y6b9++ZxUUFLTWEeCDNDY2bnnrrbfG/+EPf5j4ox/9aLmOAAAAzZkAGAAAyEpDhw4t/sEPfnDy4MGDz27dunV/HQHerbq6+s2XX375weuuu+7ppUuXbtcRAAAAATAAAJDlCgsLU3ffffeQ0aNHn9G1a9fj8vLyinQFmq90Ol1XXl4+bcqUKROuvfbav+sIAADA/yYABgAAEqNPnz4t/v3f/33UyJEjz2rfvv2nIiKlK9AsZDZt2vTXF1544bGvfe1rzzntCwAA8N4EwAAAQCJddNFFXa6++uqTDzzwwLNbtmzZTUcg99TV1a1ZsGDBuJ/+9KdP3n///et0BAAA4IMJgAEAgETr1q1b4d13333k4YcffmqHDh2OyMvLK9QVSK50Ot2wcePGWbNmzZp8/fXXz6qoqGjUFQAAgA9PAAwAAOSMo48+uvWtt956/CGHHHJKu3btBkdEnq5AIqQrKytfmzdv3uQ777xz+owZM6q1BAAA4OMRAAMAADnpuOOOK/vGN75x/CGHHHJa27ZtB4bvBUO2yVRVVc2dN2/epO9///vTpk+fvkVLAAAAPjkBMAAAkPNuu+22vmedddZJffr0Oa5Vq1a9dQT2ntra2uXLly+f/uijjz51xx13vKUjAAAAu5YAGAAAaFa+9KUvdbv44ouP7t+//wlOBsMekamqqpq7cOHCv/z+97+fcd9995VrCQAAwO4jAAYAAJqtSy65pOtll112jDAYdrl0VVXVvIULF/7lV7/61bO/+93v1moJAADAniEABgAAiIirr766x/nnnz9q//33P7JNmzZDUqlUga7Ah5fJZBoqKyv/vnjx4uf+9Kc/zbr33ntX6woAAMCeJwAGAAB4l379+hV97WtfGzRy5MhRPXv2PLaoqKizrsD/VV9fv37VqlXPvPDCC8/9+7//+5zFixfX6woAAMDeJQAGAAB4H61bt8678847Bx599NFHde/efURpaen+4apomq/M1q1bF69Zs+bF5557btY3v/nNOdXV1WltAQAAyB4CYAAAgI9g8ODBrcaOHXvI8OHDD+vevfvw1q1bHxACYXJXprq6+s01a9a88sorr7z8k5/8ZN5rr71Wqy0AAADZSwAMAADwCVx//fX7nHHGGYf169dvePv27Yfm5+e31hWSrLGxsXrjxo2vvvXWWy+PHz/+lR//+McrdQUAACA5BMAAAAC70Je//OUe55xzzvA+ffoM7tix45CioqKuukI2q6+vX7t27doXFy9ePGfixImv3Xvvvat1BQAAILkEwAAAALvRl7/85R6f+cxnBvfr129Qly5dDm/ZsqVAmL2qrq5u7bp16wS+AAAAOUoADAAAsIe0atUq75prrtnn2GOPPXi//fY7uH379oeUlpb2TaVS+brDbpKuqalZtnHjxnlvvfXW3GeffXbef/3Xfy2vra1Naw0AAEBuEgADAADsRQceeGDLq6+++oAhQ4Yc3LNnz4Pbtm17sGuj+biampqqq6qqXi8vL583Z86ceb/85S/nvfjii1t1BgAAoPkQAAMAAGSZoUOHFn/xi1/cf9CgQQf26NHjwHbt2h3YqlWr3qlUKk932CFdU1OzvLKycsHq1asXzJkzZ8Gf//znJTNmzKjWGgAAgOZNAAwAAJAAxx13XNkFF1xw4MEHH3xA165dDywtLd23pKRkn1QqVag7uS2TyTRs27ZtRXV19dJ169YtfOONNxZOmDBh4YQJEzbpDgAAAO8mAAYAAEiw8847r+OJJ57Yp3///vt16dKlT5s2bfZr3bp1v/z8/GLdSZampqaa6urqxZs3b16ybt26pQsXLlzy9NNPL33ooYc26A4AAAAflgAYAAAgx7Rr1y7/kksu6TFkyJCe++67b89OnTr1Kisr61VcXNyzZcuW3VKpVL4u7R2ZTKaprq6uvKamZtWWLVtWVlRUrFy6dOnK2bNnr7r//vvXVFZWNukSAAAAn4QAGAAAoBnp1KlTwec+97luQ4cO7bnPPvv0aNeuXafWrVt3Li4u7tqyZcvORUVFnfLy8lro1MeTTqe319fXr6+rq6uoqalZW11dvb6y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AACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoMY3JP//9K8My551lzpAk293a7QAAAAAAAAD8iIw3r+SL7TpPxuSt4/ibJJuz20QDBgAAAAAAAHhzrJPp6NvHYcyyjLl7dJTPbl/Jp6sPLufSsM+5ec7q5YOrF0OeP/SVaAAAAAAAAIA3weH7u6zfm79dWDIMSw6225w785vsx3XyzasOby5ssz69c4sAAAAAAAAAr9n69C6bC9sT93a7rKdnORin5Otxynzi1JQcfiwCAwAAAAAAALxO69O7HH68TaaT98cp85R8vbp3Nfszv8q0LHn7xMF1sjk/ZzUPmZ/MmWefhAYAAAAAAAD4oayPdjn7223Gn7x6ZrXPnetX8mBKkpv3cufDd/Pufn5FL56SzcVtNheT3dNt8tQlAwAAAAAAAHyv1sm0ySv/9XtsNWZ3I/lHkgzHi7/4XY7WYz5yiwAAAAAAAAA/Ivtcv/3nPEyS1fHa42t5+vNLyX7JoRsCAAAAAAAAePPt1/nbV3/KvePn1Xc371/NYxEYAAAAAAAA4M0yTHk2rvNo2WdzvHZqzN9v/SF3vju3evng/at5fPDLPDu1yuGyZHSVAAAAAAAAAK/XOGe4ueSvZ4e8M8xZbVe5ceuPufvy3Oqkw4+v5emDX+fuuTlLhhwsEYIBAAAAAAAAXpclGR8OuXP0TR4cPM/9z/+SRyfNDf/1TZezOp/87KdjzizJZkhO7edMy/w/nAUAAAAAAADg/zaMWcZkP8/ZLsmLacr2/MV8+cnvs/tP5/4FmLjAq1ifcioAAAAASUVORK5CYII=';\n\n/**\n * PptxGenJS: Utility Methods\n */\n/**\n * Translates any type of `x`/`y`/`w`/`h` prop to EMU\n * - guaranteed to return a result regardless of undefined, null, etc. (0)\n * - {number} - 12800 (EMU)\n * - {number} - 0.5 (inches)\n * - {string} - \"75%\"\n * @param {number|string} size - numeric (\"5.5\") or percentage (\"90%\")\n * @param {'X' | 'Y'} xyDir - direction\n * @param {PresLayout} layout - presentation layout\n * @returns {number} calculated size\n */\nfunction getSmartParseNumber(size, xyDir, layout) {\n // FIRST: Convert string numeric value if reqd\n if (typeof size === 'string' && !isNaN(Number(size)))\n size = Number(size);\n // CASE 1: Number in inches\n // Assume any number less than 100 is inches\n if (typeof size === 'number' && size < 100)\n return inch2Emu(size);\n // CASE 2: Number is already converted to something other than inches\n // Assume any number greater than 100 sure isnt inches! Just return it (assume value is EMU already).\n if (typeof size === 'number' && size >= 100)\n return size;\n // CASE 3: Percentage (ex: '50%')\n if (typeof size === 'string' && size.includes('%')) {\n if (xyDir && xyDir === 'X')\n return Math.round((parseFloat(size) / 100) * layout.width);\n if (xyDir && xyDir === 'Y')\n return Math.round((parseFloat(size) / 100) * layout.height);\n // Default: Assume width (x/cx)\n return Math.round((parseFloat(size) / 100) * layout.width);\n }\n // LAST: Default value\n return 0;\n}\n/**\n * Basic UUID Generator Adapted\n * @link https://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript#answer-2117523\n * @param {string} uuidFormat - UUID format\n * @returns {string} UUID\n */\nfunction getUuid(uuidFormat) {\n return uuidFormat.replace(/[xy]/g, function (c) {\n const r = (Math.random() * 16) | 0;\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n}\n/**\n * Replace special XML characters with HTML-encoded strings\n * @param {string} xml - XML string to encode\n * @returns {string} escaped XML\n */\nfunction encodeXmlEntities(xml) {\n // NOTE: Dont use short-circuit eval here as value c/b \"0\" (zero) etc.!\n if (typeof xml === 'undefined' || xml == null)\n return '';\n return xml.toString().replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/\"/g, '&quot;').replace(/'/g, '&apos;');\n}\n/**\n * Convert inches into EMU\n * @param {number|string} inches - as string or number\n * @returns {number} EMU value\n */\nfunction inch2Emu(inches) {\n // NOTE: Provide Caller Safety: Numbers may get conv<->conv during flight, so be kind and do some simple checks to ensure inches were passed\n // Any value over 100 damn sure isnt inches, so lets assume its in EMU already, therefore, just return the same value\n if (typeof inches === 'number' && inches > 100)\n return inches;\n if (typeof inches === 'string')\n inches = Number(inches.replace(/in*/gi, ''));\n return Math.round(EMU * inches);\n}\n/**\n * Convert `pt` into points (using `ONEPT`)\n * @param {number|string} pt\n * @returns {number} value in points (`ONEPT`)\n */\nfunction valToPts(pt) {\n const points = Number(pt) || 0;\n return isNaN(points) ? 0 : Math.round(points * ONEPT);\n}\n/**\n * Convert degrees (0..360) to PowerPoint `rot` value\n * @param {number} d degrees\n * @returns {number} calculated `rot` value\n */\nfunction convertRotationDegrees(d) {\n d = d || 0;\n return Math.round((d > 360 ? d - 360 : d) * 60000);\n}\n/**\n * Converts component value to hex value\n * @param {number} c - component color\n * @returns {string} hex string\n */\nfunction componentToHex(c) {\n const hex = c.toString(16);\n return hex.length === 1 ? '0' + hex : hex;\n}\n/**\n * Converts RGB colors from css selectors to Hex for Presentation colors\n * @param {number} r - red value\n * @param {number} g - green value\n * @param {number} b - blue value\n * @returns {string} XML string\n */\nfunction rgbToHex(r, g, b) {\n return (componentToHex(r) + componentToHex(g) + componentToHex(b)).toUpperCase();\n}\n/** TODO: FUTURE: TODO-4.0:\n * @date 2022-04-10\n * @tldr this s/b a private method with all current calls switched to `genXmlColorSelection()`\n * @desc lots of code calls this method\n * @example [gen-charts.tx] `strXml += '<a:solidFill>' + createColorElement(seriesColor, `<a:alpha val=\"${Math.round(opts.chartColorsOpacity * 1000)}\"/>`) + '</a:solidFill>'`\n * Thi sis wrong. We s/b calling `genXmlColorSelection()` instead as it returns `<a:solidfill>BLAH</a:solidFill>`!!\n */\n/**\n * Create either a `a:schemeClr` - (scheme color) or `a:srgbClr` (hexa representation).\n * @param {string|SCHEME_COLORS} colorStr - hexa representation (eg. \"FFFF00\") or a scheme color constant (eg. pptx.SchemeColor.ACCENT1)\n * @param {string} innerElements - additional elements that adjust the color and are enclosed by the color element\n * @returns {string} XML string\n */\nfunction createColorElement(colorStr, innerElements) {\n let colorVal = (colorStr || '').replace('#', '');\n if (!REGEX_HEX_COLOR.test(colorVal) &&\n colorVal !== SchemeColor.background1 &&\n colorVal !== SchemeColor.background2 &&\n colorVal !== SchemeColor.text1 &&\n colorVal !== SchemeColor.text2 &&\n colorVal !== SchemeColor.accent1 &&\n colorVal !== SchemeColor.accent2 &&\n colorVal !== SchemeColor.accent3 &&\n colorVal !== SchemeColor.accent4 &&\n colorVal !== SchemeColor.accent5 &&\n colorVal !== SchemeColor.accent6) {\n console.warn(`\"${colorVal}\" is not a valid scheme color or hex RGB! \"${DEF_FONT_COLOR}\" used instead. Only provide 6-digit RGB or 'pptx.SchemeColor' values!`);\n colorVal = DEF_FONT_COLOR;\n }\n const tagName = REGEX_HEX_COLOR.test(colorVal) ? 'srgbClr' : 'schemeClr';\n const colorAttr = 'val=\"' + (REGEX_HEX_COLOR.test(colorVal) ? colorVal.toUpperCase() : colorVal) + '\"';\n return innerElements ? `<a:${tagName} ${colorAttr}>${innerElements}</a:${tagName}>` : `<a:${tagName} ${colorAttr}/>`;\n}\n/**\n * Creates `a:glow` element\n * @param {TextGlowProps} options glow properties\n * @param {TextGlowProps} defaults defaults for unspecified properties in `opts`\n * @see http://officeopenxml.com/drwSp-effects.php\n * { size: 8, color: 'FFFFFF', opacity: 0.75 };\n */\nfunction createGlowElement(options, defaults) {\n let strXml = '';\n const opts = Object.assign(Object.assign({}, defaults), options);\n const size = Math.round(opts.size * ONEPT);\n const color = opts.color;\n const opacity = Math.round(opts.opacity * 100000);\n strXml += `<a:glow rad=\"${size}\">`;\n strXml += createColorElement(color, `<a:alpha val=\"${opacity}\"/>`);\n strXml += '</a:glow>';\n return strXml;\n}\n/**\n * Create color selection\n * @param {Color | ShapeFillProps | ShapeLineProps} props fill props\n * @returns XML string\n */\nfunction genXmlColorSelection(props) {\n let fillType = 'solid';\n let colorVal = '';\n let internalElements = '';\n let outText = '';\n if (props) {\n if (typeof props === 'string')\n colorVal = props;\n else {\n if (props.type)\n fillType = props.type;\n if (props.color)\n colorVal = props.color;\n if (props.alpha)\n internalElements += `<a:alpha val=\"${Math.round((100 - props.alpha) * 1000)}\"/>`; // DEPRECATED: @deprecated v3.3.0\n if (props.transparency)\n internalElements += `<a:alpha val=\"${Math.round((100 - props.transparency) * 1000)}\"/>`;\n }\n switch (fillType) {\n case 'solid':\n outText += `<a:solidFill>${createColorElement(colorVal, internalElements)}</a:solidFill>`;\n break;\n default: // @note need a statement as having only \"break\" is removed by rollup, then tiggers \"no-default\" js-linter\n outText += '';\n break;\n }\n }\n return outText;\n}\n/**\n * Get a new rel ID (rId) for charts, media, etc.\n * @param {PresSlide} target - the slide to use\n * @returns {number} count of all current rels plus 1 for the caller to use as its \"rId\"\n */\nfunction getNewRelId(target) {\n return target._rels.length + target._relsChart.length + target._relsMedia.length + 1;\n}\n/**\n * Checks shadow options passed by user and performs corrections if needed.\n * @param {ShadowProps} ShadowProps - shadow options\n */\nfunction correctShadowOptions(ShadowProps) {\n if (!ShadowProps || typeof ShadowProps !== 'object') {\n // console.warn(\"`shadow` options must be an object. Ex: `{shadow: {type:'none'}}`\")\n return;\n }\n // OPT: `type`\n if (ShadowProps.type !== 'outer' && ShadowProps.type !== 'inner' && ShadowProps.type !== 'none') {\n console.warn('Warning: shadow.type options are `outer`, `inner` or `none`.');\n ShadowProps.type = 'outer';\n }\n // OPT: `angle`\n if (ShadowProps.angle) {\n // A: REALITY-CHECK\n if (isNaN(Number(ShadowProps.angle)) || ShadowProps.angle < 0 || ShadowProps.angle > 359) {\n console.warn('Warning: shadow.angle can only be 0-359');\n ShadowProps.angle = 270;\n }\n // B: ROBUST: Cast any type of valid arg to int: '12', 12.3, etc. -> 12\n ShadowProps.angle = Math.round(Number(ShadowProps.angle));\n }\n // OPT: `opacity`\n if (ShadowProps.opacity) {\n // A: REALITY-CHECK\n if (isNaN(Number(ShadowProps.opacity)) || ShadowProps.opacity < 0 || ShadowProps.opacity > 1) {\n console.warn('Warning: shadow.opacity can only be 0-1');\n ShadowProps.opacity = 0.75;\n }\n // B: ROBUST: Cast any type of valid arg to int: '12', 12.3, etc. -> 12\n ShadowProps.opacity = Number(ShadowProps.opacity);\n }\n // OPT: `color`\n if (ShadowProps.color) {\n // INCORRECT FORMAT\n if (ShadowProps.color.startsWith('#')) {\n console.warn('Warning: shadow.color should not include hash (#) character, , e.g. \"FF0000\"');\n ShadowProps.color = ShadowProps.color.replace('#', '');\n }\n }\n return ShadowProps;\n}\n\n/**\n * PptxGenJS: Table Generation\n */\n/**\n * Break cell text into lines based upon table column width (e.g.: Magic Happens Here(tm))\n * @param {TableCell} cell - table cell\n * @param {number} colWidth - table column width (inches)\n * @return {TableRow[]} - cell's text objects grouped into lines\n */\nfunction parseTextToLines(cell, colWidth, verbose) {\n var _a, _b;\n // FYI: CPL = Width / (font-size / font-constant)\n // FYI: CHAR:2.3, colWidth:10, fontSize:12 => CPL=138, (actual chars per line in PPT)=145 [14.5 CPI]\n // FYI: CHAR:2.3, colWidth:7 , fontSize:12 => CPL= 97, (actual chars per line in PPT)=100 [14.3 CPI]\n // FYI: CHAR:2.3, colWidth:9 , fontSize:16 => CPL= 96, (actual chars per line in PPT)=84 [ 9.3 CPI]\n const FOCO = 2.3 + (((_a = cell.options) === null || _a === void 0 ? void 0 : _a.autoPageCharWeight) ? cell.options.autoPageCharWeight : 0); // Character Constant\n const CPL = Math.floor((colWidth / ONEPT) * EMU) / ((((_b = cell.options) === null || _b === void 0 ? void 0 : _b.fontSize) ? cell.options.fontSize : DEF_FONT_SIZE) / FOCO); // Chars-Per-Line\n const parsedLines = [];\n let inputCells = [];\n const inputLines1 = [];\n const inputLines2 = [];\n /*\n if (cell.options && cell.options.autoPageCharWeight) {\n let CHR1 = 2.3 + (cell.options && cell.options.autoPageCharWeight ? cell.options.autoPageCharWeight : 0) // Character Constant\n let CPL1 = ((colWidth / ONEPT) * EMU) / ((cell.options && cell.options.fontSize ? cell.options.fontSize : DEF_FONT_SIZE) / CHR1) // Chars-Per-Line\n console.log(`cell.options.autoPageCharWeight: '${cell.options.autoPageCharWeight}' => CPL: ${CPL1}`)\n let CHR2 = 2.3 + 0\n let CPL2 = ((colWidth / ONEPT) * EMU) / ((cell.options && cell.options.fontSize ? cell.options.fontSize : DEF_FONT_SIZE) / CHR2) // Chars-Per-Line\n console.log(`cell.options.autoPageCharWeight: '0' => CPL: ${CPL2}`)\n }\n */\n /**\n * EX INPUTS: `cell.text`\n * - string....: \"Account Name Column\"\n * - object....: { text:\"Account Name Column\" }\n * - object[]..: [{ text:\"Account Name\", options:{ bold:true } }, { text:\" Column\" }]\n * - object[]..: [{ text:\"Account Name\", options:{ breakLine:true } }, { text:\"Input\" }]\n */\n /**\n * EX OUTPUTS:\n * - string....: [{ text:\"Account Name Column\" }]\n * - object....: [{ text:\"Account Name Column\" }]\n * - object[]..: [{ text:\"Account Name\", options:{ breakLine:true } }, { text:\"Input\" }]\n * - object[]..: [{ text:\"Account Name\", options:{ breakLine:true } }, { text:\"Input\" }]\n */\n // STEP 1: Ensure inputCells is an array of TableCells\n if (cell.text && cell.text.toString().trim().length === 0) {\n // Allow a single space/whitespace as cell text (user-requested feature)\n inputCells.push({ _type: SLIDE_OBJECT_TYPES.tablecell, text: ' ' });\n }\n else if (typeof cell.text === 'number' || typeof cell.text === 'string') {\n inputCells.push({ _type: SLIDE_OBJECT_TYPES.tablecell, text: (cell.text || '').toString().trim() });\n }\n else if (Array.isArray(cell.text)) {\n inputCells = cell.text;\n }\n // STEP 2: Group table cells into lines based on \"\\n\" or `breakLine` prop\n /**\n * - EX: `[{ text:\"Input Output\" }, { text:\"Extra\" }]` == 1 line\n * - EX: `[{ text:\"Input\" }, { text:\"Output\", options:{ breakLine:true } }]` == 1 line\n * - EX: `[{ text:\"Input\\nOutput\" }]` == 2 lines\n * - EX: `[{ text:\"Input\", options:{ breakLine:true } }, { text:\"Output\" }]` == 2 lines\n */\n let newLine = [];\n inputCells.forEach(cell => {\n var _a;\n // (this is always true, we just constructed them above, but we need to tell typescript b/c type is still string||Cell[])\n if (typeof cell.text === 'string') {\n if (cell.text.split('\\n').length > 1) {\n cell.text.split('\\n').forEach(textLine => {\n newLine.push({\n _type: SLIDE_OBJECT_TYPES.tablecell,\n text: textLine,\n options: Object.assign(Object.assign({}, cell.options), { breakLine: true }),\n });\n });\n }\n else {\n newLine.push({\n _type: SLIDE_OBJECT_TYPES.tablecell,\n text: cell.text.trim(),\n options: cell.options,\n });\n }\n if ((_a = cell.options) === null || _a === void 0 ? void 0 : _a.breakLine) {\n inputLines1.push(newLine);\n newLine = [];\n }\n }\n // Flush buffer\n if (newLine.length > 0) {\n inputLines1.push(newLine);\n newLine = [];\n }\n });\n // STEP 3: Tokenize every text object into words (then it's really easy to assemble lines below without having to break text, add its `options`, etc.)\n inputLines1.forEach(line => {\n line.forEach(cell => {\n const lineCells = [];\n const cellTextStr = String(cell.text); // force convert to string (compiled JS is better with this than a cast)\n const lineWords = cellTextStr.split(' ');\n lineWords.forEach((word, idx) => {\n const cellProps = Object.assign({}, cell.options);\n // IMPORTANT: Handle `breakLine` prop - we cannot apply to each word - only apply to very last word!\n if (cellProps === null || cellProps === void 0 ? void 0 : cellProps.breakLine)\n cellProps.breakLine = idx + 1 === lineWords.length;\n lineCells.push({ _type: SLIDE_OBJECT_TYPES.tablecell, text: word + (idx + 1 < lineWords.length ? ' ' : ''), options: cellProps });\n });\n inputLines2.push(lineCells);\n });\n });\n // STEP 4: Group cells/words into lines based upon space consumed by word letters\n inputLines2.forEach(line => {\n let lineCells = [];\n let strCurrLine = '';\n line.forEach(word => {\n // A: create new line when horizontal space is exhausted\n if (strCurrLine.length + word.text.length > CPL) {\n // if (verbose) console.log(`STEP 4: New line added: (${strCurrLine.length} + ${word.text.length} > ${CPL})`);\n parsedLines.push(lineCells);\n lineCells = [];\n strCurrLine = '';\n }\n // B: add current word to line cells\n lineCells.push(word);\n // C: add current word to `strCurrLine` which we use to keep track of line's char length\n strCurrLine += word.text.toString();\n });\n // Flush buffer: Only create a line when there's text to avoid empty row\n if (lineCells.length > 0)\n parsedLines.push(lineCells);\n });\n // Done:\n return parsedLines;\n}\n/**\n * Takes an array of table rows and breaks into an array of slides, which contain the calculated amount of table rows that fit on that slide\n * @param {TableCell[][]} tableRows - table rows\n * @param {TableToSlidesProps} tableProps - table2slides properties\n * @param {PresLayout} presLayout - presentation layout\n * @param {SlideLayout} masterSlide - master slide\n * @return {TableRowSlide[]} array of table rows\n */\nfunction getSlidesForTableRows(tableRows = [], tableProps = {}, presLayout, masterSlide) {\n let arrInchMargins = DEF_SLIDE_MARGIN_IN;\n let emuSlideTabW = EMU * 1;\n let emuSlideTabH = EMU * 1;\n let emuTabCurrH = 0;\n let numCols = 0;\n const tableRowSlides = [];\n const tablePropX = getSmartParseNumber(tableProps.x, 'X', presLayout);\n const tablePropY = getSmartParseNumber(tableProps.y, 'Y', presLayout);\n const tablePropW = getSmartParseNumber(tableProps.w, 'X', presLayout);\n const tablePropH = getSmartParseNumber(tableProps.h, 'Y', presLayout);\n let tableCalcW = tablePropW;\n function calcSlideTabH() {\n let emuStartY = 0;\n if (tableRowSlides.length === 0)\n emuStartY = tablePropY || inch2Emu(arrInchMargins[0]);\n if (tableRowSlides.length > 0)\n emuStartY = inch2Emu(tableProps.autoPageSlideStartY || tableProps.newSlideStartY || arrInchMargins[0]);\n emuSlideTabH = (tablePropH || presLayout.height) - emuStartY - inch2Emu(arrInchMargins[2]);\n // console.log(`| startY .......................................... = ${(emuStartY / EMU).toFixed(1)}`)\n // console.log(`| emuSlideTabH .................................... = ${(emuSlideTabH / EMU).toFixed(1)}`)\n if (tableRowSlides.length > 1) {\n // D: RULE: Use margins for starting point after the initial Slide, not `opt.y` (ISSUE #43, ISSUE #47, ISSUE #48)\n if (typeof tableProps.autoPageSlideStartY === 'number') {\n emuSlideTabH = (tablePropH || presLayout.height) - inch2Emu(tableProps.autoPageSlideStartY + arrInchMargins[2]);\n }\n else if (typeof tableProps.newSlideStartY === 'number') {\n // @deprecated v3.3.0\n emuSlideTabH = (tablePropH || presLayout.height) - inch2Emu(tableProps.newSlideStartY + arrInchMargins[2]);\n }\n else if (tablePropY) {\n emuSlideTabH = (tablePropH || presLayout.height) - inch2Emu((tablePropY / EMU < arrInchMargins[0] ? tablePropY / EMU : arrInchMargins[0]) + arrInchMargins[2]);\n // Use whichever is greater: area between margins or the table H provided (dont shrink usable area - the whole point of over-riding Y on paging is to *increase* usable space)\n if (emuSlideTabH < tablePropH)\n emuSlideTabH = tablePropH;\n }\n }\n }\n if (tableProps.verbose) {\n console.log('[[VERBOSE MODE]]');\n console.log('|-- TABLE PROPS --------------------------------------------------------|');\n console.log(`| presLayout.width ................................ = ${(presLayout.width / EMU).toFixed(1)}`);\n console.log(`| presLayout.height ............................... = ${(presLayout.height / EMU).toFixed(1)}`);\n console.log(`| tableProps.x .................................... = ${typeof tableProps.x === 'number' ? (tableProps.x / EMU).toFixed(1) : tableProps.x}`);\n console.log(`| tableProps.y .................................... = ${typeof tableProps.y === 'number' ? (tableProps.y / EMU).toFixed(1) : tableProps.y}`);\n console.log(`| tableProps.w .................................... = ${typeof tableProps.w === 'number' ? (tableProps.w / EMU).toFixed(1) : tableProps.w}`);\n console.log(`| tableProps.h .................................... = ${typeof tableProps.h === 'number' ? (tableProps.h / EMU).toFixed(1) : tableProps.h}`);\n console.log(`| tableProps.slideMargin .......................... = ${tableProps.slideMargin ? String(tableProps.slideMargin) : ''}`);\n console.log(`| tableProps.margin ............................... = ${String(tableProps.margin)}`);\n console.log(`| tableProps.colW ................................. = ${String(tableProps.colW)}`);\n console.log(`| tableProps.autoPageSlideStartY .................. = ${tableProps.autoPageSlideStartY}`);\n console.log(`| tableProps.autoPageCharWeight ................... = ${tableProps.autoPageCharWeight}`);\n console.log('|-- CALCULATIONS -------------------------------------------------------|');\n console.log(`| tablePropX ...................................... = ${tablePropX / EMU}`);\n console.log(`| tablePropY ...................................... = ${tablePropY / EMU}`);\n console.log(`| tablePropW ...................................... = ${tablePropW / EMU}`);\n console.log(`| tablePropH ...................................... = ${tablePropH / EMU}`);\n console.log(`| tableCalcW ...................................... = ${tableCalcW / EMU}`);\n }\n // STEP 1: Calculate margins\n {\n // Important: Use default size as zero cell margin is causing our tables to be too large and touch bottom of slide!\n if (!tableProps.slideMargin && tableProps.slideMargin !== 0)\n tableProps.slideMargin = DEF_SLIDE_MARGIN_IN[0];\n if (masterSlide && typeof masterSlide._margin !== 'undefined') {\n if (Array.isArray(masterSlide._margin))\n arrInchMargins = masterSlide._margin;\n else if (!isNaN(Number(masterSlide._margin))) {\n arrInchMargins = [Number(masterSlide._margin), Number(masterSlide._margin), Number(masterSlide._margin), Number(masterSlide._margin)];\n }\n }\n else if (tableProps.slideMargin || tableProps.slideMargin === 0) {\n if (Array.isArray(tableProps.slideMargin))\n arrInchMargins = tableProps.slideMargin;\n else if (!isNaN(tableProps.slideMargin))\n arrInchMargins = [tableProps.slideMargin, tableProps.slideMargin, tableProps.slideMargin, tableProps.slideMargin];\n }\n if (tableProps.verbose)\n console.log(`| arrInchMargins .................................. = [${arrInchMargins.join(', ')}]`);\n }\n // STEP 2: Calculate number of columns\n {\n // NOTE: Cells may have a colspan, so merely taking the length of the [0] (or any other) row is not\n // ....: sufficient to determine column count. Therefore, check each cell for a colspan and total cols as reqd\n const firstRow = tableRows[0] || [];\n firstRow.forEach(cell => {\n if (!cell)\n cell = { _type: SLIDE_OBJECT_TYPES.tablecell };\n const cellOpts = cell.options || null;\n numCols += Number((cellOpts === null || cellOpts === void 0 ? void 0 : cellOpts.colspan) ? cellOpts.colspan : 1);\n });\n if (tableProps.verbose)\n console.log(`| numCols ......................................... = ${numCols}`);\n }\n // STEP 3: Calculate width using tableProps.colW if possible\n if (!tablePropW && tableProps.colW) {\n tableCalcW = Array.isArray(tableProps.colW) ? tableProps.colW.reduce((p, n) => p + n) * EMU : tableProps.colW * numCols || 0;\n if (tableProps.verbose)\n console.log(`| tableCalcW ...................................... = ${tableCalcW / EMU}`);\n }\n // STEP 4: Calculate usable width now that total usable space is known (`emuSlideTabW`)\n {\n emuSlideTabW = tableCalcW || inch2Emu((tablePropX ? tablePropX / EMU : arrInchMargins[1]) + arrInchMargins[3]);\n if (tableProps.verbose)\n console.log(`| emuSlideTabW .................................... = ${(emuSlideTabW / EMU).toFixed(1)}`);\n }\n // STEP 5: Calculate column widths if not provided (emuSlideTabW will be used below to determine lines-per-col)\n if (!tableProps.colW || !Array.isArray(tableProps.colW)) {\n if (tableProps.colW && !isNaN(Number(tableProps.colW))) {\n const arrColW = [];\n const firstRow = tableRows[0] || [];\n firstRow.forEach(() => arrColW.push(tableProps.colW));\n tableProps.colW = [];\n arrColW.forEach(val => {\n if (Array.isArray(tableProps.colW))\n tableProps.colW.push(val);\n });\n }\n else {\n // No column widths provided? Then distribute cols.\n tableProps.colW = [];\n for (let iCol = 0; iCol < numCols; iCol++) {\n tableProps.colW.push(emuSlideTabW / EMU / numCols);\n }\n }\n }\n // STEP 6: **MAIN** Iterate over rows, add table content, create new slides as rows overflow\n let newTableRowSlide = { rows: [] };\n tableRows.forEach((row, iRow) => {\n // A: Row variables\n const rowCellLines = [];\n let maxCellMarTopEmu = 0;\n let maxCellMarBtmEmu = 0;\n // B: Create new row in data model, calc `maxCellMar*`\n let currTableRow = [];\n row.forEach(cell => {\n var _a, _b, _c, _d;\n currTableRow.push({\n _type: SLIDE_OBJECT_TYPES.tablecell,\n text: [],\n options: cell.options,\n });\n /** FUTURE: DEPRECATED:\n * - Backwards-Compat: Oops! Discovered we were still using points for cell margin before v3.8.0 (UGH!)\n * - We cant introduce a breaking change before v4.0, so...\n */\n if (cell.options.margin && cell.options.margin[0] >= 1) {\n if (((_a = cell.options) === null || _a === void 0 ? void 0 : _a.margin) && cell.options.margin[0] && valToPts(cell.options.margin[0]) > maxCellMarTopEmu)\n maxCellMarTopEmu = valToPts(cell.options.margin[0]);\n else if ((tableProps === null || tableProps === void 0 ? void 0 : tableProps.margin) && tableProps.margin[0] && valToPts(tableProps.margin[0]) > maxCellMarTopEmu)\n maxCellMarTopEmu = valToPts(tableProps.margin[0]);\n if (((_b = cell.options) === null || _b === void 0 ? void 0 : _b.margin) && cell.options.margin[2] && valToPts(cell.options.margin[2]) > maxCellMarBtmEmu)\n maxCellMarBtmEmu = valToPts(cell.options.margin[2]);\n else if ((tableProps === null || tableProps === void 0 ? void 0 : tableProps.margin) && tableProps.margin[2] && valToPts(tableProps.margin[2]) > maxCellMarBtmEmu)\n maxCellMarBtmEmu = valToPts(tableProps.margin[2]);\n }\n else {\n if (((_c = cell.options) === null || _c === void 0 ? void 0 : _c.margin) && cell.options.margin[0] && inch2Emu(cell.options.margin[0]) > maxCellMarTopEmu)\n maxCellMarTopEmu = inch2Emu(cell.options.margin[0]);\n else if ((tableProps === null || tableProps === void 0 ? void 0 : tableProps.margin) && tableProps.margin[0] && inch2Emu(tableProps.margin[0]) > maxCellMarTopEmu)\n maxCellMarTopEmu = inch2Emu(tableProps.margin[0]);\n if (((_d = cell.options) === null || _d === void 0 ? void 0 : _d.margin) && cell.options.margin[2] && inch2Emu(cell.options.margin[2]) > maxCellMarBtmEmu)\n maxCellMarBtmEmu = inch2Emu(cell.options.margin[2]);\n else if ((tableProps === null || tableProps === void 0 ? void 0 : tableProps.margin) && tableProps.margin[2] && inch2Emu(tableProps.margin[2]) > maxCellMarBtmEmu)\n maxCellMarBtmEmu = inch2Emu(tableProps.margin[2]);\n }\n });\n // C: Calc usable vertical space/table height. Set default value first, adjust below when necessary.\n calcSlideTabH();\n emuTabCurrH += maxCellMarTopEmu + maxCellMarBtmEmu; // Start row height with margins\n if (tableProps.verbose && iRow === 0)\n console.log(`| SLIDE [${tableRowSlides.length}]: emuSlideTabH ...... = ${(emuSlideTabH / EMU).toFixed(1)} `);\n // D: --==[[ BUILD DATA SET ]]==-- (iterate over cells: split text into lines[], set `lineHeight`)\n row.forEach((cell, iCell) => {\n var _a;\n const newCell = {\n _type: SLIDE_OBJECT_TYPES.tablecell,\n _lines: null,\n _lineHeight: inch2Emu(((((_a = cell.options) === null || _a === void 0 ? void 0 : _a.fontSize) ? cell.options.fontSize : tableProps.fontSize ? tableProps.fontSize : DEF_FONT_SIZE) *\n (LINEH_MODIFIER + (tableProps.autoPageLineWeight ? tableProps.autoPageLineWeight : 0))) /\n 100),\n text: [],\n options: cell.options,\n };\n // E-1: Exempt cells with `rowspan` from increasing lineHeight (or we could create a new slide when unecessary!)\n if (newCell.options.rowspan)\n newCell._lineHeight = 0;\n // E-2: The parseTextToLines method uses `autoPageCharWeight`, so inherit from table options\n newCell.options.autoPageCharWeight = tableProps.autoPageCharWeight ? tableProps.autoPageCharWeight : null;\n // E-3: **MAIN** Parse cell contents into lines based upon col width, font, etc\n let totalColW = tableProps.colW[iCell];\n if (cell.options.colspan && Array.isArray(tableProps.colW)) {\n totalColW = tableProps.colW.filter((_cell, idx) => idx >= iCell && idx < idx + cell.options.colspan).reduce((prev, curr) => prev + curr);\n }\n // E-4: Create lines based upon available column width\n newCell._lines = parseTextToLines(cell, totalColW);\n // E-5: Add cell to array\n rowCellLines.push(newCell);\n });\n /** E: --==[[ PAGE DATA SET ]]==--\n * Add text one-line-a-time to this row's cells until: lines are exhausted OR table height limit is hit\n *\n * Design:\n * - Building cells L-to-R/loop style wont work as one could be 100 lines and another 1 line\n * - Therefore, build the whole row, one-line-at-a-time, across each table columns\n * - Then, when the vertical size limit is hit is by any of the cells, make a new slide and continue adding any remaining lines\n *\n * Implementation:\n * - `rowCellLines` is an array of cells, one for each column in the table, with each cell containing an array of lines\n *\n * Sample Data:\n * - `rowCellLines` ..: [ TableCell, TableCell, TableCell ]\n * - `TableCell` .....: { _type: 'tablecell', _lines: TableCell[], _lineHeight: 10 }\n * - `_lines` ........: [ {_type: 'tablecell', text: 'cell-1,line-1', options: {…}}, {_type: 'tablecell', text: 'cell-1,line-2', options: {…}} }\n * - `_lines` is TableCell[] (the 1-N words in the line)\n * {\n * _lines: [{ text:'cell-1,line-1' }, { text:'cell-1,line-2' }], // TOTAL-CELL-HEIGHT = 2\n * _lines: [{ text:'cell-2,line-1' }, { text:'cell-2,line-2' }], // TOTAL-CELL-HEIGHT = 2\n * _lines: [{ text:'cell-3,line-1' }, { text:'cell-3,line-2' }, { text:'cell-3,line-3' }, { text:'cell-3,line-4' }], // TOTAL-CELL-HEIGHT = 4\n * }\n *\n * Example: 2 rows, with the firstrow overflowing onto a new slide\n * SLIDE 1:\n * |--------|--------|--------|--------|\n * | line-1 | line-1 | line-1 | line-1 |\n * | | | line-2 | |\n * | | | line-3 | |\n * |--------|--------|--------|--------|\n *\n * SLIDE 2:\n * |--------|--------|--------|--------|\n * | | | line-4 | |\n * |--------|--------|--------|--------|\n * | line-1 | line-1 | line-1 | line-1 |\n * |--------|--------|--------|--------|\n */\n if (tableProps.verbose)\n console.log(`\\n| SLIDE [${tableRowSlides.length}]: ROW [${iRow}]: START...`);\n let currCellIdx = 0;\n let emuLineMaxH = 0;\n let isDone = false;\n while (!isDone) {\n const srcCell = rowCellLines[currCellIdx];\n let tgtCell = currTableRow[currCellIdx]; // NOTE: may be redefined below (a new row may be created, thus changing this value)\n // 1: calc emuLineMaxH\n rowCellLines.forEach(cell => {\n if (cell._lineHeight >= emuLineMaxH)\n emuLineMaxH = cell._lineHeight;\n });\n // 2: create a new slide if there is insufficient room for the current row\n if (emuTabCurrH + emuLineMaxH > emuSlideTabH) {\n if (tableProps.verbose) {\n console.log('\\n|-----------------------------------------------------------------------|');\n // prettier-ignore\n console.log(`|-- NEW SLIDE CREATED (currTabH+currLineH > maxH) => ${(emuTabCurrH / EMU).toFixed(2)} + ${(srcCell._lineHeight / EMU).toFixed(2)} > ${emuSlideTabH / EMU}`);\n console.log('|-----------------------------------------------------------------------|\\n\\n');\n }\n // A: add current row slide or it will be lost (only if it has rows and text)\n if (currTableRow.length > 0 && currTableRow.map(cell => cell.text.length).reduce((p, n) => p + n) > 0)\n newTableRowSlide.rows.push(currTableRow);\n // B: add current slide to Slides array\n tableRowSlides.push(newTableRowSlide);\n // C: reset working/curr slide to hold rows as they're created\n const newRows = [];\n newTableRowSlide = { rows: newRows };\n // D: reset working/curr row\n currTableRow = [];\n row.forEach(cell => currTableRow.push({ _type: SLIDE_OBJECT_TYPES.tablecell, text: [], options: cell.options }));\n // E: Calc usable vertical space/table height now as we may still be in the same row and code above (\"C: Calc usable vertical space/table height.\") calc may now be invalid\n calcSlideTabH();\n emuTabCurrH += maxCellMarTopEmu + maxCellMarBtmEmu; // Start row height with margins\n if (tableProps.verbose)\n console.log(`| SLIDE [${tableRowSlides.length}]: emuSlideTabH ...... = ${(emuSlideTabH / EMU).toFixed(1)} `);\n // F: reset current table height for this new Slide\n emuTabCurrH = 0;\n // G: handle repeat headers option /or/ Add new empty row to continue current lines into\n if ((tableProps.addHeaderToEach || tableProps.autoPageRepeatHeader) && tableProps._arrObjTabHeadRows) {\n tableProps._arrObjTabHeadRows.forEach(row => {\n const newHeadRow = [];\n let maxLineHeight = 0;\n row.forEach(cell => {\n newHeadRow.push(cell);\n if (cell._lineHeight > maxLineHeight)\n maxLineHeight = cell._lineHeight;\n });\n newTableRowSlide.rows.push(newHeadRow);\n emuTabCurrH += maxLineHeight; // TODO: what about margins? dont we need to include cell margin in line height?\n });\n }\n // WIP: NEW: TEST THIS!!\n tgtCell = currTableRow[currCellIdx];\n }\n // 3: set array of words that comprise this line\n const currLine = srcCell._lines.shift();\n // 4: create new line by adding all words from curr line (or add empty if there are no words to avoid \"needs repair\" issue triggered when cells have null content)\n if (Array.isArray(tgtCell.text)) {\n if (currLine)\n tgtCell.text = tgtCell.text.concat(currLine);\n else if (tgtCell.text.length === 0)\n tgtCell.text = tgtCell.text.concat({ _type: SLIDE_OBJECT_TYPES.tablecell, text: '' });\n // IMPORTANT: ^^^ add empty if there are no words to avoid \"needs repair\" issue triggered when cells have null content\n }\n // 5: increase table height by the curr line height (if we're on the last column)\n if (currCellIdx === rowCellLines.length - 1)\n emuTabCurrH += emuLineMaxH;\n // 6: advance column/cell index (or circle back to first one to continue adding lines)\n currCellIdx = currCellIdx < rowCellLines.length - 1 ? currCellIdx + 1 : 0;\n // 7: WIP: done?\n const brent = rowCellLines.map(cell => cell._lines.length).reduce((prev, next) => prev + next);\n if (brent === 0)\n isDone = true;\n }\n // F: Flush/capture row buffer before it resets at the top of this loop\n if (currTableRow.length > 0)\n newTableRowSlide.rows.push(currTableRow);\n if (tableProps.verbose) {\n console.log(`- SLIDE [${tableRowSlides.length}]: ROW [${iRow}]: ...COMPLETE ...... emuTabCurrH = ${(emuTabCurrH / EMU).toFixed(2)} ( emuSlideTabH = ${(emuSlideTabH / EMU).toFixed(2)} )`);\n }\n });\n // STEP 7: Flush buffer / add final slide\n tableRowSlides.push(newTableRowSlide);\n if (tableProps.verbose) {\n console.log('\\n|================================================|');\n console.log(`| FINAL: tableRowSlides.length = ${tableRowSlides.length}`);\n tableRowSlides.forEach(slide => console.log(slide));\n console.log('|================================================|\\n\\n');\n }\n // LAST:\n return tableRowSlides;\n}\n/**\n * Reproduces an HTML table as a PowerPoint table - including column widths, style, etc. - creates 1 or more slides as needed\n * @param {PptxGenJS} pptx - pptxgenjs instance\n * @param {string} tabEleId - HTMLElementID of the table\n * @param {ITableToSlidesOpts} options - array of options (e.g.: tabsize)\n * @param {SlideLayout} masterSlide - masterSlide\n */\nfunction genTableToSlides(pptx, tabEleId, options = {}, masterSlide) {\n const opts = options || {};\n opts.slideMargin = opts.slideMargin || opts.slideMargin === 0 ? opts.slideMargin : 0.5;\n let emuSlideTabW = opts.w || pptx.presLayout.width;\n const arrObjTabHeadRows = [];\n const arrObjTabBodyRows = [];\n const arrObjTabFootRows = [];\n const arrColW = [];\n const arrTabColW = [];\n let arrInchMargins = [0.5, 0.5, 0.5, 0.5]; // TRBL-style\n let intTabW = 0;\n // REALITY-CHECK:\n if (!document.getElementById(tabEleId))\n throw new Error('tableToSlides: Table ID \"' + tabEleId + '\" does not exist!');\n // STEP 1: Set margins\n if (masterSlide === null || masterSlide === void 0 ? void 0 : masterSlide._margin) {\n if (Array.isArray(masterSlide._margin))\n arrInchMargins = masterSlide._margin;\n else if (!isNaN(masterSlide._margin))\n arrInchMargins = [masterSlide._margin, masterSlide._margin, masterSlide._margin, masterSlide._margin];\n opts.slideMargin = arrInchMargins;\n }\n else if (opts === null || opts === void 0 ? void 0 : opts.slideMargin) {\n if (Array.isArray(opts.slideMargin))\n arrInchMargins = opts.slideMargin;\n else if (!isNaN(opts.slideMargin))\n arrInchMargins = [opts.slideMargin, opts.slideMargin, opts.slideMargin, opts.slideMargin];\n }\n emuSlideTabW = (opts.w ? inch2Emu(opts.w) : pptx.presLayout.width) - inch2Emu(arrInchMargins[1] + arrInchMargins[3]);\n if (opts.verbose) {\n console.log('[[VERBOSE MODE]]');\n console.log('|-- `tableToSlides` ----------------------------------------------------|');\n console.log(`| tableProps.h .................................... = ${opts.h}`);\n console.log(`| tableProps.w .................................... = ${opts.w}`);\n console.log(`| pptx.presLayout.width ........................... = ${(pptx.presLayout.width / EMU).toFixed(1)}`);\n console.log(`| pptx.presLayout.height .......................... = ${(pptx.presLayout.height / EMU).toFixed(1)}`);\n console.log(`| emuSlideTabW .................................... = ${(emuSlideTabW / EMU).toFixed(1)}`);\n }\n // STEP 2: Grab table col widths - just find the first availble row, either thead/tbody/tfoot, others may have colspans, who cares, we only need col widths from 1\n let firstRowCells = document.querySelectorAll(`#${tabEleId} tr:first-child th`);\n if (firstRowCells.length === 0)\n firstRowCells = document.querySelectorAll(`#${tabEleId} tr:first-child td`);\n firstRowCells.forEach((cellEle) => {\n const cell = cellEle;\n if (cell.getAttribute('colspan')) {\n // Guesstimate (divide evenly) col widths\n // NOTE: both j$query and vanilla selectors return {0} when table is not visible)\n for (let idxc = 0; idxc < Number(cell.getAttribute('colspan')); idxc++) {\n arrTabColW.push(Math.round(cell.offsetWidth / Number(cell.getAttribute('colspan'))));\n }\n }\n else {\n arrTabColW.push(cell.offsetWidth);\n }\n });\n arrTabColW.forEach(colW => {\n intTabW += colW;\n });\n // STEP 3: Calc/Set column widths by using same column width percent from HTML table\n arrTabColW.forEach((colW, idxW) => {\n const intCalcWidth = Number(((Number(emuSlideTabW) * ((colW / intTabW) * 100)) / 100 / EMU).toFixed(2));\n let intMinWidth = 0;\n const colSelectorMin = document.querySelector(`#${tabEleId} thead tr:first-child th:nth-child(${idxW + 1})`);\n if (colSelectorMin)\n intMinWidth = Number(colSelectorMin.getAttribute('data-pptx-min-width'));\n const colSelectorSet = document.querySelector(`#${tabEleId} thead tr:first-child th:nth-child(${idxW + 1})`);\n if (colSelectorSet)\n intMinWidth = Number(colSelectorSet.getAttribute('data-pptx-width'));\n arrColW.push((intMinWidth > intCalcWidth ? intMinWidth : intCalcWidth));\n });\n if (opts.verbose) {\n console.log(`| arrColW ......................................... = [${arrColW.join(', ')}]`);\n }\n // STEP 4: Iterate over each table element and create data arrays (text and opts)\n // NOTE: We create 3 arrays instead of one so we can loop over body then show header/footer rows on first and last page\n const tableParts = ['thead', 'tbody', 'tfoot'];\n tableParts.forEach(part => {\n document.querySelectorAll(`#${tabEleId} ${part} tr`).forEach((row) => {\n const htmlRow = row;\n const arrObjTabCells = [];\n Array.from(htmlRow.cells).forEach(cell => {\n // A: Get RGB text/bkgd colors\n const arrRGB1 = window.getComputedStyle(cell).getPropertyValue('color').replace(/\\s+/gi, '').replace('rgba(', '').replace('rgb(', '').replace(')', '').split(',');\n let arrRGB2 = window\n .getComputedStyle(cell)\n .getPropertyValue('background-color')\n .replace(/\\s+/gi, '')\n .replace('rgba(', '')\n .replace('rgb(', '')\n .replace(')', '')\n .split(',');\n if (\n // NOTE: (ISSUE#57): Default for unstyled tables is black bkgd, so use white instead\n window.getComputedStyle(cell).getPropertyValue('background-color') === 'rgba(0, 0, 0, 0)' ||\n window.getComputedStyle(cell).getPropertyValue('transparent')) {\n arrRGB2 = ['255', '255', '255'];\n }\n // B: Create option object\n const cellOpts = {\n align: null,\n bold: !!(window.getComputedStyle(cell).getPropertyValue('font-weight') === 'bold' ||\n Number(window.getComputedStyle(cell).getPropertyValue('font-weight')) >= 500),\n border: null,\n color: rgbToHex(Number(arrRGB1[0]), Number(arrRGB1[1]), Number(arrRGB1[2])),\n fill: { color: rgbToHex(Number(arrRGB2[0]), Number(arrRGB2[1]), Number(arrRGB2[2])) },\n fontFace: (window.getComputedStyle(cell).getPropertyValue('font-family') || '').split(',')[0].replace(/\"/g, '').replace('inherit', '').replace('initial', '') ||\n null,\n fontSize: Number(window.getComputedStyle(cell).getPropertyValue('font-size').replace(/[a-z]/gi, '')),\n margin: null,\n colspan: Number(cell.getAttribute('colspan')) || null,\n rowspan: Number(cell.getAttribute('rowspan')) || null,\n valign: null,\n };\n if (['left', 'center', 'right', 'start', 'end'].includes(window.getComputedStyle(cell).getPropertyValue('text-align'))) {\n const align = window.getComputedStyle(cell).getPropertyValue('text-align').replace('start', 'left').replace('end', 'right');\n cellOpts.align = align === 'center' ? 'center' : align === 'left' ? 'left' : align === 'right' ? 'right' : null;\n }\n if (['top', 'middle', 'bottom'].includes(window.getComputedStyle(cell).getPropertyValue('vertical-align'))) {\n const valign = window.getComputedStyle(cell).getPropertyValue('vertical-align');\n cellOpts.valign = valign === 'top' ? 'top' : valign === 'middle' ? 'middle' : valign === 'bottom' ? 'bottom' : null;\n }\n // C: Add padding [margin] (if any)\n // NOTE: Margins translate: px->pt 1:1 (e.g.: a 20px padded cell looks the same in PPTX as 20pt Text Inset/Padding)\n if (window.getComputedStyle(cell).getPropertyValue('padding-left')) {\n cellOpts.margin = [0, 0, 0, 0];\n const sidesPad = ['padding-top', 'padding-right', 'padding-bottom', 'padding-left'];\n sidesPad.forEach((val, idxs) => {\n cellOpts.margin[idxs] = Math.round(Number(window.getComputedStyle(cell).getPropertyValue(val).replace(/\\D/gi, '')));\n });\n }\n // D: Add border (if any)\n if (window.getComputedStyle(cell).getPropertyValue('border-top-width') ||\n window.getComputedStyle(cell).getPropertyValue('border-right-width') ||\n window.getComputedStyle(cell).getPropertyValue('border-bottom-width') ||\n window.getComputedStyle(cell).getPropertyValue('border-left-width')) {\n cellOpts.border = [null, null, null, null];\n const sidesBor = ['top', 'right', 'bottom', 'left'];\n sidesBor.forEach((val, idxb) => {\n const intBorderW = Math.round(Number(window\n .getComputedStyle(cell)\n .getPropertyValue('border-' + val + '-width')\n .replace('px', '')));\n let arrRGB = [];\n arrRGB = window\n .getComputedStyle(cell)\n .getPropertyValue('border-' + val + '-color')\n .replace(/\\s+/gi, '')\n .replace('rgba(', '')\n .replace('rgb(', '')\n .replace(')', '')\n .split(',');\n const strBorderC = rgbToHex(Number(arrRGB[0]), Number(arrRGB[1]), Number(arrRGB[2]));\n cellOpts.border[idxb] = { pt: intBorderW, color: strBorderC };\n });\n }\n // LAST: Add cell\n arrObjTabCells.push({\n _type: SLIDE_OBJECT_TYPES.tablecell,\n text: cell.innerText, // `innerText` returns <br> as \"\\n\", so linebreak etc. work later!\n options: cellOpts,\n });\n });\n switch (part) {\n case 'thead':\n arrObjTabHeadRows.push(arrObjTabCells);\n break;\n case 'tbody':\n arrObjTabBodyRows.push(arrObjTabCells);\n break;\n case 'tfoot':\n arrObjTabFootRows.push(arrObjTabCells);\n break;\n default:\n console.log(`table parsing: unexpected table part: ${part}`);\n break;\n }\n });\n });\n // STEP 5: Break table into Slides as needed\n // Pass head-rows as there is an option to add to each table and the parse func needs this data to fulfill that option\n opts._arrObjTabHeadRows = arrObjTabHeadRows || null;\n opts.colW = arrColW;\n getSlidesForTableRows([...arrObjTabHeadRows, ...arrObjTabBodyRows, ...arrObjTabFootRows], opts, pptx.presLayout, masterSlide).forEach((slide, idxTr) => {\n // A: Create new Slide\n const newSlide = pptx.addSlide({ masterName: opts.masterSlideName || null });\n // B: DESIGN: Reset `y` to startY or margin after first Slide (ISSUE#43, ISSUE#47, ISSUE#48)\n if (idxTr === 0)\n opts.y = opts.y || arrInchMargins[0];\n if (idxTr > 0)\n opts.y = opts.autoPageSlideStartY || opts.newSlideStartY || arrInchMargins[0];\n if (opts.verbose)\n console.log(`| opts.autoPageSlideStartY: ${opts.autoPageSlideStartY} / arrInchMargins[0]: ${arrInchMargins[0]} => opts.y = ${opts.y}`);\n // C: Add table to Slide\n newSlide.addTable(slide.rows, { x: opts.x || arrInchMargins[3], y: opts.y, w: Number(emuSlideTabW) / EMU, colW: arrColW, autoPage: false });\n // D: Add any additional objects\n if (opts.addImage) {\n opts.addImage.options = opts.addImage.options || {};\n if (!opts.addImage.image || (!opts.addImage.image.path && !opts.addImage.image.data)) {\n console.warn('Warning: tableToSlides.addImage requires either `path` or `data`');\n }\n else {\n newSlide.addImage({\n path: opts.addImage.image.path,\n data: opts.addImage.image.data,\n x: opts.addImage.options.x,\n y: opts.addImage.options.y,\n w: opts.addImage.options.w,\n h: opts.addImage.options.h,\n });\n }\n }\n if (opts.addShape)\n newSlide.addShape(opts.addShape.shapeName, opts.addShape.options || {});\n if (opts.addTable)\n newSlide.addTable(opts.addTable.rows, opts.addTable.options || {});\n if (opts.addText)\n newSlide.addText(opts.addText.text, opts.addText.options || {});\n });\n}\n\n/**\n * PptxGenJS: Slide Object Generators\n */\n/** counter for included charts (used for index in their filenames) */\nlet _chartCounter = 0;\n/**\n * Transforms a slide definition to a slide object that is then passed to the XML transformation process.\n * @param {SlideMasterProps} props - slide definition\n * @param {PresSlide|SlideLayout} target - empty slide object that should be updated by the passed definition\n */\nfunction createSlideMaster(props, target) {\n // STEP 1: Add background if either the slide or layout has background props\n // if (props.background || target.background) addBackgroundDefinition(props.background, target)\n if (props.bkgd)\n target.bkgd = props.bkgd; // DEPRECATED: (remove in v4.0.0)\n // STEP 2: Add all Slide Master objects in the order they were given\n if (props.objects && Array.isArray(props.objects) && props.objects.length > 0) {\n props.objects.forEach((object, idx) => {\n const key = Object.keys(object)[0];\n const tgt = target;\n if (MASTER_OBJECTS[key] && key === 'chart')\n addChartDefinition(tgt, object[key].type, object[key].data, object[key].opts);\n else if (MASTER_OBJECTS[key] && key === 'image')\n addImageDefinition(tgt, object[key]);\n else if (MASTER_OBJECTS[key] && key === 'line')\n addShapeDefinition(tgt, SHAPE_TYPE.LINE, object[key]);\n else if (MASTER_OBJECTS[key] && key === 'rect')\n addShapeDefinition(tgt, SHAPE_TYPE.RECTANGLE, object[key]);\n else if (MASTER_OBJECTS[key] && key === 'text')\n addTextDefinition(tgt, [{ text: object[key].text }], object[key].options, false);\n else if (MASTER_OBJECTS[key] && key === 'placeholder') {\n // TODO: 20180820: Check for existing `name`?\n object[key].options.placeholder = object[key].options.name;\n delete object[key].options.name; // remap name for earier handling internally\n object[key].options._placeholderType = object[key].options.type;\n delete object[key].options.type; // remap name for earier handling internally\n object[key].options._placeholderIdx = 100 + idx;\n addTextDefinition(tgt, [{ text: object[key].text }], object[key].options, true);\n // TODO: ISSUE#599 - only text is suported now (add more below)\n // else if (object[key].image) addImageDefinition(tgt, object[key].image)\n /* 20200120: So... image placeholders go into the \"slideLayoutN.xml\" file and addImage doesnt do this yet...\n <p:sp>\n <p:nvSpPr>\n <p:cNvPr id=\"7\" name=\"Picture Placeholder 6\">\n <a:extLst>\n <a:ext uri=\"{FF2B5EF4-FFF2-40B4-BE49-F238E27FC236}\">\n <a16:creationId xmlns:a16=\"http://schemas.microsoft.com/office/drawing/2014/main\" id=\"{CE1AE45D-8641-0F4F-BDB5-080E69CCB034}\"/>\n </a:ext>\n </a:extLst>\n </p:cNvPr>\n <p:cNvSpPr>\n */\n }\n });\n }\n // STEP 3: Add Slide Numbers (NOTE: Do this last so numbers are not covered by objects!)\n if (props.slideNumber && typeof props.slideNumber === 'object')\n target._slideNumberProps = props.slideNumber;\n}\n/**\n * Generate the chart based on input data.\n * OOXML Chart Spec: ISO/IEC 29500-1:2016(E)\n *\n * @param {CHART_NAME | IChartMulti[]} `type` should belong to: 'column', 'pie'\n * @param {[]} `data` a JSON object with follow the following format\n * @param {IChartOptsLib} `opt` chart options\n * @param {PresSlide} `target` slide object that the chart will be added to\n * @return {object} chart object\n * {\n * title: 'eSurvey chart',\n * data: [\n * {\n * name: 'Income',\n * labels: ['2005', '2006', '2007', '2008', '2009'],\n * values: [23.5, 26.2, 30.1, 29.5, 24.6]\n * },\n * {\n * name: 'Expense',\n * labels: ['2005', '2006', '2007', '2008', '2009'],\n * values: [18.1, 22.8, 23.9, 25.1, 25]\n * }\n * ]\n * }\n */\nfunction addChartDefinition(target, type, data, opt) {\n var _a;\n function correctGridLineOptions(glOpts) {\n if (!glOpts || glOpts.style === 'none')\n return;\n if (glOpts.size !== undefined && (isNaN(Number(glOpts.size)) || glOpts.size <= 0)) {\n console.warn('Warning: chart.gridLine.size must be greater than 0.');\n delete glOpts.size; // delete prop to used defaults\n }\n if (glOpts.style && !['solid', 'dash', 'dot'].includes(glOpts.style)) {\n console.warn('Warning: chart.gridLine.style options: `solid`, `dash`, `dot`.');\n delete glOpts.style;\n }\n if (glOpts.cap && !['flat', 'square', 'round'].includes(glOpts.cap)) {\n console.warn('Warning: chart.gridLine.cap options: `flat`, `square`, `round`.');\n delete glOpts.cap;\n }\n }\n const chartId = ++_chartCounter;\n const resultObject = {\n _type: null,\n text: null,\n options: null,\n chartRid: null,\n };\n // DESIGN: `type` can an object (ex: `pptx.charts.DOUGHNUT`) or an array of chart objects\n // EX: addChartDefinition([ { type:pptx.charts.BAR, data:{name:'', labels:[], values[]} }, {<etc>} ])\n // Multi-Type Charts\n let tmpOpt = null;\n let tmpData = [];\n if (Array.isArray(type)) {\n // For multi-type charts there needs to be data for each type,\n // as well as a single data source for non-series operations.\n // The data is indexed below to keep the data in order when segmented\n // into types.\n type.forEach(obj => {\n tmpData = tmpData.concat(obj.data);\n });\n tmpOpt = data || opt;\n }\n else {\n tmpData = data;\n tmpOpt = opt;\n }\n tmpData.forEach((item, i) => {\n item._dataIndex = i;\n // Converts the 'labels' array from string[] to string[][] (or the respective primitive type), if needed\n if (item.labels !== undefined && !Array.isArray(item.labels[0])) {\n item.labels = [item.labels];\n }\n });\n const options = tmpOpt && typeof tmpOpt === 'object' ? tmpOpt : {};\n // STEP 1: TODO: check for reqd fields, correct type, etc\n // `type` exists in CHART_TYPE\n // Array.isArray(data)\n /*\n if ( Array.isArray(rel.data) && rel.data.length > 0 && typeof rel.data[0] === 'object'\n && rel.data[0].labels && Array.isArray(rel.data[0].labels)\n && rel.data[0].values && Array.isArray(rel.data[0].values) ) {\n obj = rel.data[0];\n }\n else {\n console.warn(\"USAGE: addChart( 'pie', [ {name:'Sales', labels:['Jan','Feb'], values:[10,20]} ], {x:1, y:1} )\");\n return;\n }\n */\n // STEP 2: Set default options/decode user options\n // A: Core\n options._type = type;\n options.x = typeof options.x !== 'undefined' && options.x != null && !isNaN(Number(options.x)) ? options.x : 1;\n options.y = typeof options.y !== 'undefined' && options.y != null && !isNaN(Number(options.y)) ? options.y : 1;\n options.w = options.w || '50%';\n options.h = options.h || '50%';\n options.objectName = options.objectName\n ? encodeXmlEntities(options.objectName)\n : `Chart ${target._slideObjects.filter(obj => obj._type === SLIDE_OBJECT_TYPES.chart).length}`;\n // B: Options: misc\n if (!['bar', 'col'].includes(options.barDir || ''))\n options.barDir = 'col';\n // barGrouping: \"21.2.3.17 ST_Grouping (Grouping)\"\n // barGrouping must be handled before data label validation as it can affect valid label positioning\n if (options._type === CHART_TYPE.AREA) {\n if (!['stacked', 'standard', 'percentStacked'].includes(options.barGrouping || ''))\n options.barGrouping = 'standard';\n }\n if (options._type === CHART_TYPE.BAR) {\n if (!['clustered', 'stacked', 'percentStacked'].includes(options.barGrouping || ''))\n options.barGrouping = 'clustered';\n }\n if (options._type === CHART_TYPE.BAR3D) {\n if (!['clustered', 'stacked', 'standard', 'percentStacked'].includes(options.barGrouping || ''))\n options.barGrouping = 'standard';\n }\n if ((_a = options.barGrouping) === null || _a === void 0 ? void 0 : _a.includes('tacked')) {\n if (!options.barGapWidthPct)\n options.barGapWidthPct = 50;\n }\n // Clean up and validate data label positions\n // REFERENCE: https://docs.microsoft.com/en-us/openspecs/office_standards/ms-oi29500/e2b1697c-7adc-463d-9081-3daef72f656f?redirectedfrom=MSDN\n if (options.dataLabelPosition) {\n if (options._type === CHART_TYPE.AREA || options._type === CHART_TYPE.BAR3D || options._type === CHART_TYPE.DOUGHNUT || options._type === CHART_TYPE.RADAR) {\n delete options.dataLabelPosition;\n }\n if (options._type === CHART_TYPE.PIE) {\n if (!['bestFit', 'ctr', 'inEnd', 'outEnd'].includes(options.dataLabelPosition))\n delete options.dataLabelPosition;\n }\n if (options._type === CHART_TYPE.BUBBLE || options._type === CHART_TYPE.BUBBLE3D || options._type === CHART_TYPE.LINE || options._type === CHART_TYPE.SCATTER) {\n if (!['b', 'ctr', 'l', 'r', 't'].includes(options.dataLabelPosition))\n delete options.dataLabelPosition;\n }\n if (options._type === CHART_TYPE.BAR) {\n if (!['stacked', 'percentStacked'].includes(options.barGrouping || '')) {\n if (!['ctr', 'inBase', 'inEnd'].includes(options.dataLabelPosition))\n delete options.dataLabelPosition;\n }\n if (!['clustered'].includes(options.barGrouping || '')) {\n if (!['ctr', 'inBase', 'inEnd', 'outEnd'].includes(options.dataLabelPosition))\n delete options.dataLabelPosition;\n }\n }\n }\n options.dataLabelBkgrdColors = options.dataLabelBkgrdColors || !options.dataLabelBkgrdColors ? options.dataLabelBkgrdColors : false;\n if (!['b', 'l', 'r', 't', 'tr'].includes(options.legendPos || ''))\n options.legendPos = 'r';\n // 3D bar: ST_Shape\n if (!['cone', 'coneToMax', 'box', 'cylinder', 'pyramid', 'pyramidToMax'].includes(options.bar3DShape || ''))\n options.bar3DShape = 'box';\n // lineDataSymbol: http://www.datypic.com/sc/ooxml/a-val-32.html\n // Spec has [plus,star,x] however neither PPT2013 nor PPT-Online support them\n if (!['circle', 'dash', 'diamond', 'dot', 'none', 'square', 'triangle'].includes(options.lineDataSymbol || ''))\n options.lineDataSymbol = 'circle';\n if (!['gap', 'span'].includes(options.displayBlanksAs || ''))\n options.displayBlanksAs = 'span';\n if (!['standard', 'marker', 'filled'].includes(options.radarStyle || ''))\n options.radarStyle = 'standard';\n options.lineDataSymbolSize = options.lineDataSymbolSize && !isNaN(options.lineDataSymbolSize) ? options.lineDataSymbolSize : 6;\n options.lineDataSymbolLineSize = options.lineDataSymbolLineSize && !isNaN(options.lineDataSymbolLineSize) ? valToPts(options.lineDataSymbolLineSize) : valToPts(0.75);\n // `layout` allows the override of PPT defaults to maximize space\n if (options.layout) {\n ['x', 'y', 'w', 'h'].forEach(key => {\n const val = options.layout[key];\n if (isNaN(Number(val)) || val < 0 || val > 1) {\n console.warn('Warning: chart.layout.' + key + ' can only be 0-1');\n delete options.layout[key]; // remove invalid value so that default will be used\n }\n });\n }\n // Set gridline defaults\n options.catGridLine = options.catGridLine || (options._type === CHART_TYPE.SCATTER ? { color: 'D9D9D9', size: 1 } : { style: 'none' });\n options.valGridLine = options.valGridLine || (options._type === CHART_TYPE.SCATTER ? { color: 'D9D9D9', size: 1 } : {});\n options.serGridLine = options.serGridLine || (options._type === CHART_TYPE.SCATTER ? { color: 'D9D9D9', size: 1 } : { style: 'none' });\n correctGridLineOptions(options.catGridLine);\n correctGridLineOptions(options.valGridLine);\n correctGridLineOptions(options.serGridLine);\n correctShadowOptions(options.shadow);\n // C: Options: plotArea\n options.showDataTable = options.showDataTable || !options.showDataTable ? options.showDataTable : false;\n options.showDataTableHorzBorder = options.showDataTableHorzBorder || !options.showDataTableHorzBorder ? options.showDataTableHorzBorder : true;\n options.showDataTableVertBorder = options.showDataTableVertBorder || !options.showDataTableVertBorder ? options.showDataTableVertBorder : true;\n options.showDataTableOutline = options.showDataTableOutline || !options.showDataTableOutline ? options.showDataTableOutline : true;\n options.showDataTableKeys = options.showDataTableKeys || !options.showDataTableKeys ? options.showDataTableKeys : true;\n options.showLabel = options.showLabel || !options.showLabel ? options.showLabel : false;\n options.showLegend = options.showLegend || !options.showLegend ? options.showLegend : false;\n options.showPercent = options.showPercent || !options.showPercent ? options.showPercent : true;\n options.showTitle = options.showTitle || !options.showTitle ? options.showTitle : false;\n options.showValue = options.showValue || !options.showValue ? options.showValue : false;\n options.showLeaderLines = options.showLeaderLines || !options.showLeaderLines ? options.showLeaderLines : false;\n options.catAxisLineShow = typeof options.catAxisLineShow !== 'undefined' ? options.catAxisLineShow : true;\n options.valAxisLineShow = typeof options.valAxisLineShow !== 'undefined' ? options.valAxisLineShow : true;\n options.serAxisLineShow = typeof options.serAxisLineShow !== 'undefined' ? options.serAxisLineShow : true;\n options.v3DRotX = !isNaN(options.v3DRotX) && options.v3DRotX >= -90 && options.v3DRotX <= 90 ? options.v3DRotX : 30;\n options.v3DRotY = !isNaN(options.v3DRotY) && options.v3DRotY >= 0 && options.v3DRotY <= 360 ? options.v3DRotY : 30;\n options.v3DRAngAx = options.v3DRAngAx || !options.v3DRAngAx ? options.v3DRAngAx : true;\n options.v3DPerspective = !isNaN(options.v3DPerspective) && options.v3DPerspective >= 0 && options.v3DPerspective <= 240 ? options.v3DPerspective : 30;\n // D: Options: chart\n options.barGapWidthPct = !isNaN(options.barGapWidthPct) && options.barGapWidthPct >= 0 && options.barGapWidthPct <= 1000 ? options.barGapWidthPct : 150;\n options.barGapDepthPct = !isNaN(options.barGapDepthPct) && options.barGapDepthPct >= 0 && options.barGapDepthPct <= 1000 ? options.barGapDepthPct : 150;\n options.chartColors = Array.isArray(options.chartColors)\n ? options.chartColors\n : options._type === CHART_TYPE.PIE || options._type === CHART_TYPE.DOUGHNUT\n ? PIECHART_COLORS\n : BARCHART_COLORS;\n options.chartColorsOpacity = options.chartColorsOpacity && !isNaN(options.chartColorsOpacity) ? options.chartColorsOpacity : null;\n // DEPRECATED: v3.11.0 - use `plotArea.border` vvv\n options.border = options.border && typeof options.border === 'object' ? options.border : null;\n if (options.border && (!options.border.pt || isNaN(options.border.pt)))\n options.border.pt = DEF_CHART_BORDER.pt;\n if (options.border && (!options.border.color || typeof options.border.color !== 'string'))\n options.border.color = DEF_CHART_BORDER.color;\n // DEPRECATED: (remove above in v4.0) ^^^\n options.plotArea = options.plotArea || {};\n options.plotArea.border = options.plotArea.border && typeof options.plotArea.border === 'object' ? options.plotArea.border : null;\n if (options.plotArea.border && (!options.plotArea.border.pt || isNaN(options.plotArea.border.pt)))\n options.plotArea.border.pt = DEF_CHART_BORDER.pt;\n if (options.plotArea.border && (!options.plotArea.border.color || typeof options.plotArea.border.color !== 'string')) {\n options.plotArea.border.color = DEF_CHART_BORDER.color;\n }\n if (options.border)\n options.plotArea.border = options.border; // @deprecated [[remove in v4.0]]\n options.plotArea.fill = options.plotArea.fill || { color: null, transparency: null };\n if (options.fill)\n options.plotArea.fill.color = options.fill; // @deprecated [[remove in v4.0]]\n //\n options.chartArea = options.chartArea || {};\n options.chartArea.border = options.chartArea.border && typeof options.chartArea.border === 'object' ? options.chartArea.border : null;\n if (options.chartArea.border) {\n options.chartArea.border = {\n color: options.chartArea.border.color || DEF_CHART_BORDER.color,\n pt: options.chartArea.border.pt || DEF_CHART_BORDER.pt,\n };\n }\n options.chartArea.roundedCorners = typeof options.chartArea.roundedCorners === 'boolean' ? options.chartArea.roundedCorners : true;\n //\n options.dataBorder = options.dataBorder && typeof options.dataBorder === 'object' ? options.dataBorder : null;\n if (options.dataBorder && (!options.dataBorder.pt || isNaN(options.dataBorder.pt)))\n options.dataBorder.pt = 0.75;\n if (options.dataBorder && options.dataBorder.color) {\n const isHexColor = typeof options.dataBorder.color === 'string' && options.dataBorder.color.length === 6 && /^[0-9A-Fa-f]{6}$/.test(options.dataBorder.color);\n const isSchemeColor = Object.values(SCHEME_COLOR_NAMES).includes(options.dataBorder.color);\n if (!isHexColor && !isSchemeColor) {\n options.dataBorder.color = 'F9F9F9'; // Fallback if neither hex nor scheme color\n }\n }\n //\n if (!options.dataLabelFormatCode && options._type === CHART_TYPE.SCATTER)\n options.dataLabelFormatCode = 'General';\n if (!options.dataLabelFormatCode && (options._type === CHART_TYPE.PIE || options._type === CHART_TYPE.DOUGHNUT)) {\n options.dataLabelFormatCode = options.showPercent ? '0%' : 'General';\n }\n options.dataLabelFormatCode = options.dataLabelFormatCode && typeof options.dataLabelFormatCode === 'string' ? options.dataLabelFormatCode : '#,##0';\n //\n // Set default format for Scatter chart labels to custom string if not defined\n if (!options.dataLabelFormatScatter && options._type === CHART_TYPE.SCATTER)\n options.dataLabelFormatScatter = 'custom';\n //\n options.lineSize = typeof options.lineSize === 'number' ? options.lineSize : 2;\n options.valAxisMajorUnit = typeof options.valAxisMajorUnit === 'number' ? options.valAxisMajorUnit : null;\n if (options._type === CHART_TYPE.AREA || options._type === CHART_TYPE.BAR || options._type === CHART_TYPE.BAR3D || options._type === CHART_TYPE.LINE) {\n options.catAxisMultiLevelLabels = !!options.catAxisMultiLevelLabels;\n }\n else {\n delete options.catAxisMultiLevelLabels;\n }\n // STEP 4: Set props\n resultObject._type = 'chart';\n resultObject.options = options;\n resultObject.chartRid = getNewRelId(target);\n // STEP 5: Add this chart to this Slide Rels (rId/rels count spans all slides! Count all images to get next rId)\n target._relsChart.push({\n rId: getNewRelId(target),\n data: tmpData,\n opts: options,\n type: options._type,\n globalId: chartId,\n fileName: `chart${chartId}.xml`,\n Target: `/ppt/charts/chart${chartId}.xml`,\n });\n target._slideObjects.push(resultObject);\n return resultObject;\n}\n/**\n * Adds an image object to a slide definition.\n * This method can be called with only two args (opt, target) - this is supposed to be the only way in future.\n * @param {ImageProps} `opt` - object containing `path`/`data`, `x`, `y`, etc.\n * @param {PresSlide} `target` - slide that the image should be added to (if not specified as the 2nd arg)\n * @note: Remote images (eg: \"http://whatev.com/blah\"/from web and/or remote server arent supported yet - we'd need to create an <img>, load it, then send to canvas\n * @see: https://stackoverflow.com/questions/164181/how-to-fetch-a-remote-image-to-display-in-a-canvas)\n */\nfunction addImageDefinition(target, opt) {\n const newObject = {\n _type: null,\n text: null,\n options: null,\n image: null,\n imageRid: null,\n hyperlink: null,\n };\n // FIRST: Set vars for this image (object param replaces positional args in 1.1.0)\n const intPosX = opt.x || 0;\n const intPosY = opt.y || 0;\n const intWidth = opt.w || 0;\n const intHeight = opt.h || 0;\n const sizing = opt.sizing || null;\n const objHyperlink = opt.hyperlink || '';\n const strImageData = opt.data || '';\n const strImagePath = opt.path || '';\n let imageRelId = getNewRelId(target);\n const objectName = opt.objectName ? encodeXmlEntities(opt.objectName) : `Image ${target._slideObjects.filter(obj => obj._type === SLIDE_OBJECT_TYPES.image).length}`;\n // REALITY-CHECK:\n if (!strImagePath && !strImageData) {\n console.error('ERROR: addImage() requires either \\'data\\' or \\'path\\' parameter!');\n return null;\n }\n else if (strImagePath && typeof strImagePath !== 'string') {\n console.error(`ERROR: addImage() 'path' should be a string, ex: {path:'/img/sample.png'} - you sent ${String(strImagePath)}`);\n return null;\n }\n else if (strImageData && typeof strImageData !== 'string') {\n console.error(`ERROR: addImage() 'data' should be a string, ex: {data:'image/png;base64,NMP[...]'} - you sent ${String(strImageData)}`);\n return null;\n }\n else if (strImageData && typeof strImageData === 'string' && !strImageData.toLowerCase().includes('base64,')) {\n console.error('ERROR: Image `data` value lacks a base64 header! Ex: \\'image/png;base64,NMP[...]\\')');\n return null;\n }\n // STEP 1: Set extension\n // NOTE: Split to address URLs with params (eg: `path/brent.jpg?someParam=true`)\n let strImgExtn = (strImagePath\n .substring(strImagePath.lastIndexOf('/') + 1)\n .split('?')[0]\n .split('.')\n .pop()\n .split('#')[0] || 'png').toLowerCase();\n // However, pre-encoded images can be whatever mime-type they want (and good for them!)\n if (strImageData && /image\\/(\\w+);/.exec(strImageData) && /image\\/(\\w+);/.exec(strImageData).length > 0) {\n strImgExtn = /image\\/(\\w+);/.exec(strImageData)[1];\n }\n else if (strImageData === null || strImageData === void 0 ? void 0 : strImageData.toLowerCase().includes('image/svg+xml')) {\n strImgExtn = 'svg';\n }\n // STEP 2: Set type/path\n newObject._type = SLIDE_OBJECT_TYPES.image;\n newObject.image = strImagePath || 'preencoded.png';\n // STEP 3: Set image properties & options\n // FIXME: Measure actual image when no intWidth/intHeight params passed\n // ....: This is an async process: we need to make getSizeFromImage use callback, then set H/W...\n // if ( !intWidth || !intHeight ) { var imgObj = getSizeFromImage(strImagePath);\n newObject.options = {\n x: intPosX || 0,\n y: intPosY || 0,\n w: intWidth || 1,\n h: intHeight || 1,\n altText: opt.altText || '',\n rounding: typeof opt.rounding === 'boolean' ? opt.rounding : false,\n sizing,\n placeholder: opt.placeholder,\n rotate: opt.rotate || 0,\n flipV: opt.flipV || false,\n flipH: opt.flipH || false,\n transparency: opt.transparency || 0,\n objectName,\n shadow: correctShadowOptions(opt.shadow),\n };\n // STEP 4: Add this image to this Slide Rels (rId/rels count spans all slides! Count all images to get next rId)\n if (strImgExtn === 'svg') {\n // SVG files consume *TWO* rId's: (a png version and the svg image)\n // <Relationship Id=\"rId3\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image\" Target=\"../media/image1.png\"/>\n // <Relationship Id=\"rId4\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image\" Target=\"../media/image2.svg\"/>\n target._relsMedia.push({\n path: strImagePath || strImageData + 'png',\n type: 'image/png',\n extn: 'png',\n data: strImageData || '',\n rId: imageRelId,\n Target: `../media/image-${target._slideNum}-${target._relsMedia.length + 1}.png`,\n isSvgPng: true,\n svgSize: { w: getSmartParseNumber(newObject.options.w, 'X', target._presLayout), h: getSmartParseNumber(newObject.options.h, 'Y', target._presLayout) },\n });\n newObject.imageRid = imageRelId;\n target._relsMedia.push({\n path: strImagePath || strImageData,\n type: 'image/svg+xml',\n extn: strImgExtn,\n data: strImageData || '',\n rId: imageRelId + 1,\n Target: `../media/image-${target._slideNum}-${target._relsMedia.length + 1}.${strImgExtn}`,\n });\n newObject.imageRid = imageRelId + 1;\n }\n else {\n // PERF: Duplicate media should reuse existing `Target` value and not create an additional copy\n const dupeItem = target._relsMedia.filter(item => item.path && item.path === strImagePath && item.type === 'image/' + strImgExtn && !item.isDuplicate)[0];\n target._relsMedia.push({\n path: strImagePath || 'preencoded.' + strImgExtn,\n type: 'image/' + strImgExtn,\n extn: strImgExtn,\n data: strImageData || '',\n rId: imageRelId,\n isDuplicate: !!(dupeItem === null || dupeItem === void 0 ? void 0 : dupeItem.Target),\n Target: (dupeItem === null || dupeItem === void 0 ? void 0 : dupeItem.Target) ? dupeItem.Target : `../media/image-${target._slideNum}-${target._relsMedia.length + 1}.${strImgExtn}`,\n });\n newObject.imageRid = imageRelId;\n }\n // STEP 5: Hyperlink support\n if (typeof objHyperlink === 'object') {\n if (!objHyperlink.url && !objHyperlink.slide)\n throw new Error('ERROR: `hyperlink` option requires either: `url` or `slide`');\n else {\n imageRelId++;\n target._rels.push({\n type: SLIDE_OBJECT_TYPES.hyperlink,\n data: objHyperlink.slide ? 'slide' : 'dummy',\n rId: imageRelId,\n Target: objHyperlink.url || objHyperlink.slide.toString(),\n });\n objHyperlink._rId = imageRelId;\n newObject.hyperlink = objHyperlink;\n }\n }\n // STEP 6: Add object to slide\n target._slideObjects.push(newObject);\n}\n/**\n * Adds a media object to a slide definition.\n * @param {PresSlide} `target` - slide object that the media will be added to\n * @param {MediaProps} `opt` - media options\n */\nfunction addMediaDefinition(target, opt) {\n const intPosX = opt.x || 0;\n const intPosY = opt.y || 0;\n const intSizeX = opt.w || 2;\n const intSizeY = opt.h || 2;\n const strData = opt.data || '';\n const strLink = opt.link || '';\n const strPath = opt.path || '';\n const strType = opt.type || 'audio';\n let strExtn = '';\n const strCover = opt.cover || IMG_PLAYBTN;\n const objectName = opt.objectName ? encodeXmlEntities(opt.objectName) : `Media ${target._slideObjects.filter(obj => obj._type === SLIDE_OBJECT_TYPES.media).length}`;\n const slideData = { _type: SLIDE_OBJECT_TYPES.media };\n // STEP 1: REALITY-CHECK\n if (!strPath && !strData && strType !== 'online') {\n throw new Error('addMedia() error: either `data` or `path` are required!');\n }\n else if (strData && !strData.toLowerCase().includes('base64,')) {\n throw new Error('addMedia() error: `data` value lacks a base64 header! Ex: \\'video/mpeg;base64,NMP[...]\\')');\n }\n else if (!strCover.toLowerCase().includes('base64,')) {\n throw new Error('addMedia() error: `cover` value lacks a base64 header! Ex: \\'data:image/png;base64,iV[...]\\')');\n }\n // Online Video: requires `link`\n if (strType === 'online' && !strLink) {\n throw new Error('addMedia() error: online videos require `link` value');\n }\n // FIXME: 20190707\n // strType = strData ? strData.split(';')[0].split('/')[0] : strType\n strExtn = opt.extn || (strData ? strData.split(';')[0].split('/')[1] : strPath.split('.').pop()) || 'mp3';\n // STEP 2: Set type, media\n slideData.mtype = strType;\n slideData.media = strPath || 'preencoded.mov';\n slideData.options = {};\n // STEP 3: Set media properties & options\n slideData.options.x = intPosX;\n slideData.options.y = intPosY;\n slideData.options.w = intSizeX;\n slideData.options.h = intSizeY;\n slideData.options.objectName = objectName;\n // STEP 4: Add this media to this Slide Rels (rId/rels count spans all slides! Count all media to get next rId)\n /**\n * NOTE:\n * - rId starts at 2 (hence the intRels+1 below) as slideLayout.xml is rId=1!\n *\n * NOTE:\n * - Audio/Video files consume *TWO* rId's:\n * <Relationship Id=\"rId2\" Target=\"../media/media1.mov\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/video\"/>\n * <Relationship Id=\"rId3\" Target=\"../media/media1.mov\" Type=\"http://schemas.microsoft.com/office/2007/relationships/media\"/>\n */\n if (strType === 'online') {\n const relId1 = getNewRelId(target);\n // A: Add video\n target._relsMedia.push({\n path: strPath || 'preencoded' + strExtn,\n data: 'dummy',\n type: 'online',\n extn: strExtn,\n rId: relId1,\n Target: strLink,\n });\n slideData.mediaRid = relId1;\n // B: Add cover (preview/overlay) image\n target._relsMedia.push({\n path: 'preencoded.png',\n data: strCover,\n type: 'image/png',\n extn: 'png',\n rId: getNewRelId(target),\n Target: `../media/image-${target._slideNum}-${target._relsMedia.length + 1}.png`,\n });\n }\n else {\n // PERF: Duplicate media should reuse existing `Target` value and not create an additional copy\n const dupeItem = target._relsMedia.filter(item => item.path && item.path === strPath && item.type === strType + '/' + strExtn && !item.isDuplicate)[0];\n // A: \"relationships/video\"\n const relId1 = getNewRelId(target);\n target._relsMedia.push({\n path: strPath || 'preencoded' + strExtn,\n type: strType + '/' + strExtn,\n extn: strExtn,\n data: strData || '',\n rId: relId1,\n isDuplicate: !!(dupeItem === null || dupeItem === void 0 ? void 0 : dupeItem.Target),\n Target: (dupeItem === null || dupeItem === void 0 ? void 0 : dupeItem.Target) ? dupeItem.Target : `../media/media-${target._slideNum}-${target._relsMedia.length + 1}.${strExtn}`,\n });\n slideData.mediaRid = relId1;\n // B: \"relationships/media\"\n target._relsMedia.push({\n path: strPath || 'preencoded' + strExtn,\n type: strType + '/' + strExtn,\n extn: strExtn,\n data: strData || '',\n rId: getNewRelId(target),\n isDuplicate: !!(dupeItem === null || dupeItem === void 0 ? void 0 : dupeItem.Target),\n Target: (dupeItem === null || dupeItem === void 0 ? void 0 : dupeItem.Target) ? dupeItem.Target : `../media/media-${target._slideNum}-${target._relsMedia.length + 0}.${strExtn}`,\n });\n // C: Add cover (preview/overlay) image\n target._relsMedia.push({\n path: 'preencoded.png',\n type: 'image/png',\n extn: 'png',\n data: strCover,\n rId: getNewRelId(target),\n Target: `../media/image-${target._slideNum}-${target._relsMedia.length + 1}.png`,\n });\n }\n // LAST\n target._slideObjects.push(slideData);\n}\n/**\n * Adds Notes to a slide.\n * @param {PresSlide} `target` slide object\n * @param {string} `notes`\n * @since 2.3.0\n */\nfunction addNotesDefinition(target, notes) {\n target._slideObjects.push({\n _type: SLIDE_OBJECT_TYPES.notes,\n text: [{ text: notes }],\n });\n}\n/**\n * Adds a shape object to a slide definition.\n * @param {PresSlide} target slide object that the shape should be added to\n * @param {SHAPE_NAME} shapeName shape name\n * @param {ShapeProps} opts shape options\n */\nfunction addShapeDefinition(target, shapeName, opts) {\n const options = typeof opts === 'object' ? opts : {};\n options.line = options.line || { type: 'none' };\n const newObject = {\n _type: SLIDE_OBJECT_TYPES.text,\n shape: shapeName || SHAPE_TYPE.RECTANGLE,\n options,\n text: null,\n };\n // Reality check\n if (!shapeName)\n throw new Error('Missing/Invalid shape parameter! Example: `addShape(pptxgen.shapes.LINE, {x:1, y:1, w:1, h:1});`');\n // 1: ShapeLineProps defaults\n const newLineOpts = {\n type: options.line.type || 'solid',\n color: options.line.color || DEF_SHAPE_LINE_COLOR,\n transparency: options.line.transparency || 0,\n width: options.line.width || 1,\n dashType: options.line.dashType || 'solid',\n beginArrowType: options.line.beginArrowType || null,\n endArrowType: options.line.endArrowType || null,\n };\n if (typeof options.line === 'object' && options.line.type !== 'none')\n options.line = newLineOpts;\n // 2: Set options defaults\n options.x = options.x || (options.x === 0 ? 0 : 1);\n options.y = options.y || (options.y === 0 ? 0 : 1);\n options.w = options.w || (options.w === 0 ? 0 : 1);\n options.h = options.h || (options.h === 0 ? 0 : 1);\n options.objectName = options.objectName\n ? encodeXmlEntities(options.objectName)\n : `Shape ${target._slideObjects.filter(obj => obj._type === SLIDE_OBJECT_TYPES.text).length}`;\n // 3: Handle line (lots of deprecated opts)\n if (typeof options.line === 'string') {\n const tmpOpts = newLineOpts;\n tmpOpts.color = String(options.line); // @deprecated `options.line` string (was line color)\n options.line = tmpOpts;\n }\n if (typeof options.lineSize === 'number')\n options.line.width = options.lineSize; // @deprecated (part of `ShapeLineProps` now)\n if (typeof options.lineDash === 'string')\n options.line.dashType = options.lineDash; // @deprecated (part of `ShapeLineProps` now)\n if (typeof options.lineHead === 'string')\n options.line.beginArrowType = options.lineHead; // @deprecated (part of `ShapeLineProps` now)\n if (typeof options.lineTail === 'string')\n options.line.endArrowType = options.lineTail; // @deprecated (part of `ShapeLineProps` now)\n // 4: Create hyperlink rels\n createHyperlinkRels(target, newObject);\n // LAST: Add object to slide\n target._slideObjects.push(newObject);\n}\n/**\n * Adds a table object to a slide definition.\n * @param {PresSlide} target - slide object that the table should be added to\n * @param {TableRow[]} tableRows - table data\n * @param {TableProps} options - table options\n * @param {SlideLayout} slideLayout - Slide layout\n * @param {PresLayout} presLayout - Presentation layout\n * @param {Function} addSlide - method\n * @param {Function} getSlide - method\n */\nfunction addTableDefinition(target, tableRows, options, slideLayout, presLayout, addSlide, getSlide) {\n const slides = [target]; // Create array of Slides as more may be added by auto-paging\n const opt = options && typeof options === 'object' ? options : {};\n opt.objectName = opt.objectName ? encodeXmlEntities(opt.objectName) : `Table ${target._slideObjects.filter(obj => obj._type === SLIDE_OBJECT_TYPES.table).length}`;\n // STEP 1: REALITY-CHECK\n {\n // A: check for empty\n if (tableRows === null || tableRows.length === 0 || !Array.isArray(tableRows)) {\n throw new Error('addTable: Array expected! EX: \\'slide.addTable( [rows], {options} );\\' (https://gitbrent.github.io/PptxGenJS/docs/api-tables.html)');\n }\n // B: check for non-well-formatted array (ex: rows=['a','b'] instead of [['a','b']])\n if (!tableRows[0] || !Array.isArray(tableRows[0])) {\n throw new Error('addTable: \\'rows\\' should be an array of cells! EX: \\'slide.addTable( [ [\\'A\\'], [\\'B\\'], {text:\\'C\\',options:{align:\\'center\\'}} ] );\\' (https://gitbrent.github.io/PptxGenJS/docs/api-tables.html)');\n }\n // TODO: FUTURE: This is wacky and wont function right (shows .w value when there is none from demo.js?!) 20191219\n /*\n if (opt.w && opt.colW) {\n console.warn('addTable: please use either `colW` or `w` - not both (table will use `colW` and ignore `w`)')\n console.log(`${opt.w} ${opt.colW}`)\n }\n */\n }\n // STEP 2: Transform `tableRows` into well-formatted TableCell's\n // tableRows can be object or plain text array: `[{text:'cell 1'}, {text:'cell 2', options:{color:'ff0000'}}]` | `[\"cell 1\", \"cell 2\"]`\n const arrRows = [];\n tableRows.forEach(row => {\n const newRow = [];\n if (Array.isArray(row)) {\n row.forEach((cell) => {\n // A:\n const newCell = {\n _type: SLIDE_OBJECT_TYPES.tablecell,\n text: '',\n options: typeof cell === 'object' && cell.options ? cell.options : {},\n };\n // B:\n if (typeof cell === 'string' || typeof cell === 'number')\n newCell.text = cell.toString();\n else if (cell.text) {\n // Cell can contain complex text type, or string, or number\n if (typeof cell.text === 'string' || typeof cell.text === 'number')\n newCell.text = cell.text.toString();\n else if (cell.text)\n newCell.text = cell.text;\n // Capture options\n if (cell.options && typeof cell.options === 'object')\n newCell.options = cell.options;\n }\n // C: Set cell borders\n newCell.options.border = newCell.options.border || opt.border || [{ type: 'none' }, { type: 'none' }, { type: 'none' }, { type: 'none' }];\n const cellBorder = newCell.options.border;\n // CASE 1: border interface is: BorderOptions | [BorderOptions, BorderOptions, BorderOptions, BorderOptions]\n if (!Array.isArray(cellBorder) && typeof cellBorder === 'object')\n newCell.options.border = [cellBorder, cellBorder, cellBorder, cellBorder];\n // Handle: [null, null, {type:'solid'}, null]\n if (!newCell.options.border[0])\n newCell.options.border[0] = { type: 'none' };\n if (!newCell.options.border[1])\n newCell.options.border[1] = { type: 'none' };\n if (!newCell.options.border[2])\n newCell.options.border[2] = { type: 'none' };\n if (!newCell.options.border[3])\n newCell.options.border[3] = { type: 'none' };\n // set complete BorderOptions for all sides\n const arrSides = [0, 1, 2, 3];\n arrSides.forEach(idx => {\n newCell.options.border[idx] = {\n type: newCell.options.border[idx].type || DEF_CELL_BORDER.type,\n color: newCell.options.border[idx].color || DEF_CELL_BORDER.color,\n pt: typeof newCell.options.border[idx].pt === 'number' ? newCell.options.border[idx].pt : DEF_CELL_BORDER.pt,\n };\n });\n // LAST:\n newRow.push(newCell);\n });\n }\n else {\n console.log('addTable: tableRows has a bad row. A row should be an array of cells. You provided:');\n console.log(row);\n }\n arrRows.push(newRow);\n });\n // STEP 3: Set options\n opt.x = getSmartParseNumber(opt.x || (opt.x === 0 ? 0 : EMU / 2), 'X', presLayout);\n opt.y = getSmartParseNumber(opt.y || (opt.y === 0 ? 0 : EMU / 2), 'Y', presLayout);\n if (opt.h)\n opt.h = getSmartParseNumber(opt.h, 'Y', presLayout); // NOTE: Dont set default `h` - leaving it null triggers auto-rowH in `makeXMLSlide()`\n opt.fontSize = opt.fontSize || DEF_FONT_SIZE;\n opt.margin = opt.margin === 0 || opt.margin ? opt.margin : DEF_CELL_MARGIN_IN;\n if (typeof opt.margin === 'number')\n opt.margin = [Number(opt.margin), Number(opt.margin), Number(opt.margin), Number(opt.margin)];\n // NOTE: dont add default color on tables with hyperlinks! (it causes any textObj's with hyperlinks to have subsequent words to be black)\n if (JSON.stringify({ arrRows: arrRows }).indexOf('hyperlink') === -1) {\n if (!opt.color)\n opt.color = opt.color || DEF_FONT_COLOR; // Set default color if needed (table option > inherit from Slide > default to black)\n }\n if (typeof opt.border === 'string') {\n console.warn('addTable `border` option must be an object. Ex: `{border: {type:\\'none\\'}}`');\n opt.border = null;\n }\n else if (Array.isArray(opt.border)) {\n [0, 1, 2, 3].forEach(idx => {\n opt.border[idx] = opt.border[idx]\n ? { type: opt.border[idx].type || DEF_CELL_BORDER.type, color: opt.border[idx].color || DEF_CELL_BORDER.color, pt: opt.border[idx].pt || DEF_CELL_BORDER.pt }\n : { type: 'none' };\n });\n }\n opt.autoPage = typeof opt.autoPage === 'boolean' ? opt.autoPage : false;\n opt.autoPageRepeatHeader = typeof opt.autoPageRepeatHeader === 'boolean' ? opt.autoPageRepeatHeader : false;\n opt.autoPageHeaderRows = typeof opt.autoPageHeaderRows !== 'undefined' && !isNaN(Number(opt.autoPageHeaderRows)) ? Number(opt.autoPageHeaderRows) : 1;\n opt.autoPageLineWeight = typeof opt.autoPageLineWeight !== 'undefined' && !isNaN(Number(opt.autoPageLineWeight)) ? Number(opt.autoPageLineWeight) : 0;\n if (opt.autoPageLineWeight) {\n if (opt.autoPageLineWeight > 1)\n opt.autoPageLineWeight = 1;\n else if (opt.autoPageLineWeight < -1)\n opt.autoPageLineWeight = -1;\n }\n // autoPage ^^^\n // Set/Calc table width\n // Get slide margins - start with default values, then adjust if master or slide margins exist\n let arrTableMargin = DEF_SLIDE_MARGIN_IN;\n // Case 1: Master margins\n if (slideLayout && typeof slideLayout._margin !== 'undefined') {\n if (Array.isArray(slideLayout._margin))\n arrTableMargin = slideLayout._margin;\n else if (!isNaN(Number(slideLayout._margin))) {\n arrTableMargin = [Number(slideLayout._margin), Number(slideLayout._margin), Number(slideLayout._margin), Number(slideLayout._margin)];\n }\n }\n // Case 2: Table margins\n /* FIXME: add `_margin` option to slide options\n else if ( addNewSlide._margin ) {\n if ( Array.isArray(addNewSlide._margin) ) arrTableMargin = addNewSlide._margin;\n else if ( !isNaN(Number(addNewSlide._margin)) ) arrTableMargin = [Number(addNewSlide._margin), Number(addNewSlide._margin), Number(addNewSlide._margin), Number(addNewSlide._margin)];\n }\n */\n /**\n * Calc table width depending upon what data we have - several scenarios exist (including bad data, eg: colW doesnt match col count)\n * The API does not require a `w` value, but XML generation does, hence, code to calc a width below using colW value(s)\n */\n if (opt.colW) {\n const firstRowColCnt = arrRows[0].reduce((totalLen, c) => {\n var _a;\n if (((_a = c === null || c === void 0 ? void 0 : c.options) === null || _a === void 0 ? void 0 : _a.colspan) && typeof c.options.colspan === 'number') {\n totalLen += c.options.colspan;\n }\n else {\n totalLen += 1;\n }\n return totalLen;\n }, 0);\n if (typeof opt.colW === 'string' || typeof opt.colW === 'number') {\n // Ex: `colW = 3` or `colW = '3'`\n opt.w = Math.floor(Number(opt.colW) * firstRowColCnt);\n opt.colW = null; // IMPORTANT: Unset `colW` so table is created using `opt.w`, which will evenly divide cols\n }\n else if (opt.colW && Array.isArray(opt.colW) && opt.colW.length === 1 && firstRowColCnt > 1) {\n // Ex: `colW=[3]` but with >1 cols (same as above, user is saying \"use this width for all\")\n opt.w = Math.floor(Number(opt.colW) * firstRowColCnt);\n opt.colW = null; // IMPORTANT: Unset `colW` so table is created using `opt.w`, which will evenly divide cols\n }\n else if (opt.colW && Array.isArray(opt.colW) && opt.colW.length !== firstRowColCnt) {\n // Err: Mismatched colW and cols count\n console.warn('addTable: mismatch: (colW.length != data.length) Therefore, defaulting to evenly distributed col widths.');\n opt.colW = null;\n }\n }\n else if (opt.w) {\n opt.w = getSmartParseNumber(opt.w, 'X', presLayout);\n }\n else {\n opt.w = Math.floor(presLayout._sizeW / EMU - arrTableMargin[1] - arrTableMargin[3]);\n }\n // STEP 4: Convert units to EMU now (we use different logic in makeSlide->table - smartCalc is not used)\n if (opt.x && opt.x < 20)\n opt.x = inch2Emu(opt.x);\n if (opt.y && opt.y < 20)\n opt.y = inch2Emu(opt.y);\n if (opt.w && typeof opt.w === 'number' && opt.w < 20)\n opt.w = inch2Emu(opt.w);\n if (opt.h && typeof opt.h === 'number' && opt.h < 20)\n opt.h = inch2Emu(opt.h);\n // STEP 5: Loop over cells: transform each to ITableCell; check to see whether to unset `autoPage` while here\n arrRows.forEach(row => {\n row.forEach((cell, idy) => {\n // A: Transform cell data if needed\n /* Table rows can be an object or plain text - transform into object when needed\n // EX:\n var arrTabRows1 = [\n [ { text:'A1\\nA2', options:{rowspan:2, fill:'99FFCC'} } ]\n ,[ 'B2', 'C2', 'D2', 'E2' ]\n ]\n */\n if (typeof cell === 'number' || typeof cell === 'string') {\n // Grab table formatting `opts` to use here so text style/format inherits as it should\n row[idy] = { _type: SLIDE_OBJECT_TYPES.tablecell, text: String(row[idy]), options: opt };\n }\n else if (typeof cell === 'object') {\n // ARG0: `text`\n if (typeof cell.text === 'number')\n row[idy].text = row[idy].text.toString();\n else if (typeof cell.text === 'undefined' || cell.text === null)\n row[idy].text = '';\n // ARG1: `options`: ensure options exists\n row[idy].options = cell.options || {};\n // Set type to tabelcell\n row[idy]._type = SLIDE_OBJECT_TYPES.tablecell;\n }\n // B: Check for fine-grained formatting, disable auto-page when found\n // Since genXmlTextBody already checks for text array ( text:[{},..{}] ) we're done!\n // Text in individual cells will be formatted as they are added by calls to genXmlTextBody within table builder\n // if (cell.text && Array.isArray(cell.text)) opt.autoPage = false\n // TODO: FIXME: WIP: 20210807: We cant do this anymore\n });\n });\n // If autoPage = true, we need to return references to newly created slides if any\n const newAutoPagedSlides = [];\n // STEP 6: Auto-Paging: (via {options} and used internally)\n // (used internally by `tableToSlides()` to not engage recursion - we've already paged the table data, just add this one)\n if (opt && !opt.autoPage) {\n // Create hyperlink rels (IMPORTANT: Wait until table has been shredded across Slides or all rels will end-up on Slide 1!)\n createHyperlinkRels(target, arrRows);\n // Add slideObjects (NOTE: Use `extend` to avoid mutation)\n target._slideObjects.push({\n _type: SLIDE_OBJECT_TYPES.table,\n arrTabRows: arrRows,\n options: Object.assign({}, opt),\n });\n }\n else {\n if (opt.autoPageRepeatHeader)\n opt._arrObjTabHeadRows = arrRows.filter((_row, idx) => idx < opt.autoPageHeaderRows);\n // Loop over rows and create 1-N tables as needed (ISSUE#21)\n getSlidesForTableRows(arrRows, opt, presLayout, slideLayout).forEach((slide, idx) => {\n // A: Create new Slide when needed, otherwise, use existing (NOTE: More than 1 table can be on a Slide, so we will go up AND down the Slide chain)\n if (!getSlide(target._slideNum + idx))\n slides.push(addSlide({ masterName: (slideLayout === null || slideLayout === void 0 ? void 0 : slideLayout._name) || null }));\n // B: Reset opt.y to `option`/`margin` after first Slide (ISSUE#43, ISSUE#47, ISSUE#48)\n if (idx > 0)\n opt.y = inch2Emu(opt.autoPageSlideStartY || opt.newSlideStartY || arrTableMargin[0]);\n // C: Add this table to new Slide\n {\n const newSlide = getSlide(target._slideNum + idx);\n opt.autoPage = false;\n // Create hyperlink rels (IMPORTANT: Wait until table has been shredded across Slides or all rels will end-up on Slide 1!)\n createHyperlinkRels(newSlide, slide.rows);\n // Add rows to new slide\n newSlide.addTable(slide.rows, Object.assign({}, opt));\n // Add reference to the new slide so it can be returned, but don't add the first one because the user already has a reference to that one.\n if (idx > 0)\n newAutoPagedSlides.push(newSlide);\n }\n });\n }\n return newAutoPagedSlides;\n}\n/**\n * Adds a text object to a slide definition.\n * @param {PresSlide} target - slide object that the text should be added to\n * @param {string|TextProps[]} text text string or object\n * @param {TextPropsOptions} opts text options\n * @param {boolean} isPlaceholder whether this a placeholder object\n * @since: 1.0.0\n */\nfunction addTextDefinition(target, text, opts, isPlaceholder) {\n const newObject = {\n _type: isPlaceholder ? SLIDE_OBJECT_TYPES.placeholder : SLIDE_OBJECT_TYPES.text,\n shape: (opts === null || opts === void 0 ? void 0 : opts.shape) || SHAPE_TYPE.RECTANGLE,\n text: !text || text.length === 0 ? [{ text: '', options: null }] : text,\n options: opts || {},\n };\n function cleanOpts(itemOpts) {\n // STEP 1: Set some options\n {\n // A.1: Color (placeholders should inherit their colors or override them, so don't default them)\n if (!itemOpts.placeholder) {\n itemOpts.color = itemOpts.color || newObject.options.color || target.color || DEF_FONT_COLOR;\n }\n // A.2: Placeholder should inherit their bullets or override them, so don't default them\n if (itemOpts.placeholder || isPlaceholder) {\n itemOpts.bullet = itemOpts.bullet || false;\n }\n // A.3: Text targeting a placeholder need to inherit the placeholders options (eg: margin, valign, etc.) (Issue #640)\n if (itemOpts.placeholder && target._slideLayout && target._slideLayout._slideObjects) {\n const placeHold = target._slideLayout._slideObjects.filter(item => item._type === 'placeholder' && item.options && item.options.placeholder && item.options.placeholder === itemOpts.placeholder)[0];\n if (placeHold === null || placeHold === void 0 ? void 0 : placeHold.options)\n itemOpts = Object.assign(Object.assign({}, itemOpts), placeHold.options);\n }\n // A.4: Other options\n itemOpts.objectName = itemOpts.objectName\n ? encodeXmlEntities(itemOpts.objectName)\n : `Text ${target._slideObjects.filter(obj => obj._type === SLIDE_OBJECT_TYPES.text).length}`;\n // B:\n if (itemOpts.shape === SHAPE_TYPE.LINE) {\n // ShapeLineProps defaults\n const newLineOpts = {\n type: itemOpts.line.type || 'solid',\n color: itemOpts.line.color || DEF_SHAPE_LINE_COLOR,\n transparency: itemOpts.line.transparency || 0,\n width: itemOpts.line.width || 1,\n dashType: itemOpts.line.dashType || 'solid',\n beginArrowType: itemOpts.line.beginArrowType || null,\n endArrowType: itemOpts.line.endArrowType || null,\n };\n if (typeof itemOpts.line === 'object')\n itemOpts.line = newLineOpts;\n // 3: Handle line (lots of deprecated opts)\n if (typeof itemOpts.line === 'string') {\n const tmpOpts = newLineOpts;\n if (typeof itemOpts.line === 'string')\n tmpOpts.color = itemOpts.line; // @deprecated [remove in v4.0]\n // tmpOpts.color = itemOpts.line!.toString() // @deprecated `itemOpts.line`:[string] (was line color)\n itemOpts.line = tmpOpts;\n }\n if (typeof itemOpts.lineSize === 'number')\n itemOpts.line.width = itemOpts.lineSize; // @deprecated (part of `ShapeLineProps` now)\n if (typeof itemOpts.lineDash === 'string')\n itemOpts.line.dashType = itemOpts.lineDash; // @deprecated (part of `ShapeLineProps` now)\n if (typeof itemOpts.lineHead === 'string')\n itemOpts.line.beginArrowType = itemOpts.lineHead; // @deprecated (part of `ShapeLineProps` now)\n if (typeof itemOpts.lineTail === 'string')\n itemOpts.line.endArrowType = itemOpts.lineTail; // @deprecated (part of `ShapeLineProps` now)\n }\n // C: Line opts\n itemOpts.line = itemOpts.line || {};\n itemOpts.lineSpacing = itemOpts.lineSpacing && !isNaN(itemOpts.lineSpacing) ? itemOpts.lineSpacing : null;\n itemOpts.lineSpacingMultiple = itemOpts.lineSpacingMultiple && !isNaN(itemOpts.lineSpacingMultiple) ? itemOpts.lineSpacingMultiple : null;\n // D: Transform text options to bodyProperties as thats how we build XML\n itemOpts._bodyProp = itemOpts._bodyProp || {};\n itemOpts._bodyProp.autoFit = itemOpts.autoFit || false; // DEPRECATED: (3.3.0) If true, shape will collapse to text size (Fit To shape)\n itemOpts._bodyProp.anchor = !itemOpts.placeholder ? TEXT_VALIGN.ctr : null; // VALS: [t,ctr,b]\n itemOpts._bodyProp.vert = itemOpts.vert || null; // VALS: [eaVert,horz,mongolianVert,vert,vert270,wordArtVert,wordArtVertRtl]\n itemOpts._bodyProp.wrap = typeof itemOpts.wrap === 'boolean' ? itemOpts.wrap : true;\n // E: Inset\n // @deprecated 3.10.0 (`inset` - use `margin`)\n if ((itemOpts.inset && !isNaN(Number(itemOpts.inset))) || itemOpts.inset === 0) {\n itemOpts._bodyProp.lIns = inch2Emu(itemOpts.inset);\n itemOpts._bodyProp.rIns = inch2Emu(itemOpts.inset);\n itemOpts._bodyProp.tIns = inch2Emu(itemOpts.inset);\n itemOpts._bodyProp.bIns = inch2Emu(itemOpts.inset);\n }\n // F: Transform @deprecated props\n if (typeof itemOpts.underline === 'boolean' && itemOpts.underline === true)\n itemOpts.underline = { style: 'sng' };\n }\n // STEP 2: Transform `align`/`valign` to XML values, store in _bodyProp for XML gen\n {\n if ((itemOpts.align || '').toLowerCase().indexOf('c') === 0)\n itemOpts._bodyProp.align = TEXT_HALIGN.center;\n else if ((itemOpts.align || '').toLowerCase().indexOf('l') === 0)\n itemOpts._bodyProp.align = TEXT_HALIGN.left;\n else if ((itemOpts.align || '').toLowerCase().indexOf('r') === 0)\n itemOpts._bodyProp.align = TEXT_HALIGN.right;\n else if ((itemOpts.align || '').toLowerCase().indexOf('j') === 0)\n itemOpts._bodyProp.align = TEXT_HALIGN.justify;\n if ((itemOpts.valign || '').toLowerCase().indexOf('b') === 0)\n itemOpts._bodyProp.anchor = TEXT_VALIGN.b;\n else if ((itemOpts.valign || '').toLowerCase().indexOf('m') === 0)\n itemOpts._bodyProp.anchor = TEXT_VALIGN.ctr;\n else if ((itemOpts.valign || '').toLowerCase().indexOf('t') === 0)\n itemOpts._bodyProp.anchor = TEXT_VALIGN.t;\n }\n // STEP 3: ROBUST: Set rational values for some shadow props if needed\n correctShadowOptions(itemOpts.shadow);\n return itemOpts;\n }\n // STEP 1: Create/Clean object options\n newObject.options = cleanOpts(newObject.options);\n // STEP 2: Create/Clean text options\n newObject.text.forEach(item => (item.options = cleanOpts(item.options || {})));\n // STEP 3: Create hyperlinks\n createHyperlinkRels(target, newObject.text || '');\n // LAST: Add object to Slide\n target._slideObjects.push(newObject);\n}\n/**\n * Adds placeholder objects to slide\n * @param {PresSlide} slide - slide object containing layouts\n */\nfunction addPlaceholdersToSlideLayouts(slide) {\n // Add all placeholders on this Slide that dont already exist\n (slide._slideLayout._slideObjects || []).forEach(slideLayoutObj => {\n if (slideLayoutObj._type === SLIDE_OBJECT_TYPES.placeholder) {\n // A: Search for this placeholder on Slide before we add\n // NOTE: Check to ensure a placeholder does not already exist on the Slide\n // They are created when they have been populated with text (ex: `slide.addText('Hi', { placeholder:'title' });`)\n if (slide._slideObjects.filter(slideObj => slideObj.options && slideObj.options.placeholder === slideLayoutObj.options.placeholder).length === 0) {\n addTextDefinition(slide, [{ text: '' }], slideLayoutObj.options, false);\n }\n }\n });\n}\n/* -------------------------------------------------------------------------------- */\n/**\n * Adds a background image or color to a slide definition.\n * @param {BackgroundProps} props - color string or an object with image definition\n * @param {PresSlide} target - slide object that the background is set to\n */\nfunction addBackgroundDefinition(props, target) {\n var _a;\n // A: @deprecated\n if (target.bkgd) {\n if (!target.background)\n target.background = {};\n if (typeof target.bkgd === 'string')\n target.background.color = target.bkgd;\n else {\n if (target.bkgd.data)\n target.background.data = target.bkgd.data;\n if (target.bkgd.path)\n target.background.path = target.bkgd.path;\n if (target.bkgd.src)\n target.background.path = target.bkgd.src; // @deprecated (drop in 4.x)\n }\n }\n if ((_a = target.background) === null || _a === void 0 ? void 0 : _a.fill)\n target.background.color = target.background.fill;\n // B: Handle media\n if (props && (props.path || props.data)) {\n // Allow the use of only the data key (`path` isnt reqd)\n props.path = props.path || 'preencoded.png';\n let strImgExtn = (props.path.split('.').pop() || 'png').split('?')[0]; // Handle \"blah.jpg?width=540\" etc.\n if (strImgExtn === 'jpg')\n strImgExtn = 'jpeg'; // base64-encoded jpg's come out as \"data:image/jpeg;base64,/9j/[...]\", so correct exttnesion to avoid content warnings at PPT startup\n target._relsMedia = target._relsMedia || [];\n const intRels = target._relsMedia.length + 1;\n // NOTE: `Target` cannot have spaces (eg:\"Slide 1-image-1.jpg\") or a \"presentation is corrupt\" warning comes up\n target._relsMedia.push({\n path: props.path,\n type: SLIDE_OBJECT_TYPES.image,\n extn: strImgExtn,\n data: props.data || null,\n rId: intRels,\n Target: `../media/${(target._name || '').replace(/\\s+/gi, '-')}-image-${target._relsMedia.length + 1}.${strImgExtn}`,\n });\n target._bkgdImgRid = intRels;\n }\n}\n/**\n * Parses text/text-objects from `addText()` and `addTable()` methods; creates 'hyperlink'-type Slide Rels for each hyperlink found\n * @param {PresSlide} target - slide object that any hyperlinks will be be added to\n * @param {number | string | TextProps | TextProps[] | ITableCell[][]} text - text to parse\n */\nfunction createHyperlinkRels(target, text, options) {\n let textObjs = [];\n // Only text objects can have hyperlinks, bail when text param is plain text\n if (typeof text === 'string' || typeof text === 'number')\n return;\n // IMPORTANT: \"else if\" Array.isArray must come before typeof===object! Otherwise, code will exhaust recursion!\n else if (Array.isArray(text))\n textObjs = text;\n else if (typeof text === 'object')\n textObjs = [text];\n textObjs.forEach((text, idx) => {\n // IMPORTANT: `options` are lost due to recursion/copy!\n if (options && options[idx] && options[idx].hyperlink)\n text.options = Object.assign(Object.assign({}, text.options), options[idx]);\n // NOTE: `text` can be an array of other `text` objects (table cell word-level formatting), continue parsing using recursion\n if (Array.isArray(text)) {\n const cellOpts = [];\n text.forEach((tablecell) => {\n if (tablecell.options && !tablecell.text.options) {\n cellOpts.push(tablecell.options);\n }\n });\n createHyperlinkRels(target, text, cellOpts);\n }\n else if (Array.isArray(text.text)) {\n createHyperlinkRels(target, text.text, options && options[idx] ? [options[idx]] : undefined);\n }\n else if (text && typeof text === 'object' && text.options && text.options.hyperlink && !text.options.hyperlink._rId) {\n if (typeof text.options.hyperlink !== 'object') {\n console.log('ERROR: text `hyperlink` option should be an object. Ex: `hyperlink: {url:\\'https://github.com\\'}` ');\n }\n else if (!text.options.hyperlink.url && !text.options.hyperlink.slide) {\n console.log('ERROR: \\'hyperlink requires either: `url` or `slide`\\'');\n }\n else {\n const relId = getNewRelId(target);\n target._rels.push({\n type: SLIDE_OBJECT_TYPES.hyperlink,\n data: text.options.hyperlink.slide ? 'slide' : 'dummy',\n rId: relId,\n Target: encodeXmlEntities(text.options.hyperlink.url) || text.options.hyperlink.slide.toString(),\n });\n text.options.hyperlink._rId = relId;\n }\n }\n else if (text && typeof text === 'object' && text.options && text.options.hyperlink && text.options.hyperlink._rId) {\n // NOTE: auto-paging will create new slides, but skip above as _rId exists, BUT this is a new slide, so add rels!\n if (target._rels.filter(rel => rel.rId === text.options.hyperlink._rId).length === 0) {\n target._rels.push({\n type: SLIDE_OBJECT_TYPES.hyperlink,\n data: text.options.hyperlink.slide ? 'slide' : 'dummy',\n rId: text.options.hyperlink._rId,\n Target: encodeXmlEntities(text.options.hyperlink.url) || text.options.hyperlink.slide.toString(),\n });\n }\n }\n });\n}\n\n/**\n * PptxGenJS: Slide Class\n */\nclass Slide {\n constructor(params) {\n var _a;\n this.addSlide = params.addSlide;\n this.getSlide = params.getSlide;\n this._name = `Slide ${params.slideNumber}`;\n this._presLayout = params.presLayout;\n this._rId = params.slideRId;\n this._rels = [];\n this._relsChart = [];\n this._relsMedia = [];\n this._setSlideNum = params.setSlideNum;\n this._slideId = params.slideId;\n this._slideLayout = params.slideLayout || null;\n this._slideNum = params.slideNumber;\n this._slideObjects = [];\n /** NOTE: Slide Numbers: In order for Slide Numbers to function they need to be in all 3 files: master/layout/slide\n * `defineSlideMaster` and `addNewSlide.slideNumber` will add {slideNumber} to `this.masterSlide` and `this.slideLayouts`\n * so, lastly, add to the Slide now.\n */\n this._slideNumberProps = ((_a = this._slideLayout) === null || _a === void 0 ? void 0 : _a._slideNumberProps) ? this._slideLayout._slideNumberProps : null;\n }\n set bkgd(value) {\n this._bkgd = value;\n if (!this._background || !this._background.color) {\n if (!this._background)\n this._background = {};\n if (typeof value === 'string')\n this._background.color = value;\n }\n }\n get bkgd() {\n return this._bkgd;\n }\n set background(props) {\n this._background = props;\n // Add background (image data/path must be captured before `exportPresentation()` is called)\n if (props)\n addBackgroundDefinition(props, this);\n }\n get background() {\n return this._background;\n }\n set color(value) {\n this._color = value;\n }\n get color() {\n return this._color;\n }\n set hidden(value) {\n this._hidden = value;\n }\n get hidden() {\n return this._hidden;\n }\n /**\n * @type {SlideNumberProps}\n */\n set slideNumber(value) {\n // NOTE: Slide Numbers: In order for Slide Numbers to function they need to be in all 3 files: master/layout/slide\n this._slideNumberProps = value;\n this._setSlideNum(value);\n }\n get slideNumber() {\n return this._slideNumberProps;\n }\n get newAutoPagedSlides() {\n return this._newAutoPagedSlides;\n }\n /**\n * Add chart to Slide\n * @param {CHART_NAME|IChartMulti[]} type - chart type\n * @param {object[]} data - data object\n * @param {IChartOpts} options - chart options\n * @return {Slide} this Slide\n */\n addChart(type, data, options) {\n // FUTURE: TODO-VERSION-4: Remove first arg - only take data and opts, with \"type\" required on opts\n // Set `_type` on IChartOptsLib as its what is used as object is passed around\n const optionsWithType = options || {};\n optionsWithType._type = type;\n addChartDefinition(this, type, data, options);\n return this;\n }\n /**\n * Add image to Slide\n * @param {ImageProps} options - image options\n * @return {Slide} this Slide\n */\n addImage(options) {\n addImageDefinition(this, options);\n return this;\n }\n /**\n * Add media (audio/video) to Slide\n * @param {MediaProps} options - media options\n * @return {Slide} this Slide\n */\n addMedia(options) {\n addMediaDefinition(this, options);\n return this;\n }\n /**\n * Add speaker notes to Slide\n * @docs https://gitbrent.github.io/PptxGenJS/docs/speaker-notes.html\n * @param {string} notes - notes to add to slide\n * @return {Slide} this Slide\n */\n addNotes(notes) {\n addNotesDefinition(this, notes);\n return this;\n }\n /**\n * Add shape to Slide\n * @param {SHAPE_NAME} shapeName - shape name\n * @param {ShapeProps} options - shape options\n * @return {Slide} this Slide\n */\n addShape(shapeName, options) {\n // NOTE: As of v3.1.0, <script> users are passing the old shape object from the shapes file (orig to the project)\n // But React/TypeScript users are passing the shapeName from an enum, which is a simple string, so lets cast\n // <script./> => `pptx.shapes.RECTANGLE` [string] \"rect\" ... shapeName['name'] = 'rect'\n // TypeScript => `pptxgen.shapes.RECTANGLE` [string] \"rect\" ... shapeName = 'rect'\n // let shapeNameDecode = typeof shapeName === 'object' && shapeName['name'] ? shapeName['name'] : shapeName\n addShapeDefinition(this, shapeName, options);\n return this;\n }\n /**\n * Add table to Slide\n * @param {TableRow[]} tableRows - table rows\n * @param {TableProps} options - table options\n * @return {Slide} this Slide\n */\n addTable(tableRows, options) {\n // FUTURE: we pass `this` - we dont need to pass layouts - they can be read from this!\n this._newAutoPagedSlides = addTableDefinition(this, tableRows, options, this._slideLayout, this._presLayout, this.addSlide, this.getSlide);\n return this;\n }\n /**\n * Add text to Slide\n * @param {string|TextProps[]} text - text string or complex object\n * @param {TextPropsOptions} options - text options\n * @return {Slide} this Slide\n */\n addText(text, options) {\n const textParam = typeof text === 'string' || typeof text === 'number' ? [{ text, options }] : text;\n addTextDefinition(this, textParam, options, false);\n return this;\n }\n}\n\n/**\n * PptxGenJS: Chart Generation\n */\n/**\n * Based on passed data, creates Excel Worksheet that is used as a data source for a chart.\n * @param {ISlideRelChart} chartObject - chart object\n * @param {JSZip} zip - file that the resulting XLSX should be added to\n * @return {Promise} promise of generating the XLSX file\n */\nfunction createExcelWorksheet(chartObject, zip) {\n return __awaiter(this, void 0, void 0, function* () {\n const data = chartObject.data;\n return yield new Promise((resolve, reject) => {\n var _a, _b;\n const zipExcel = new JSZip();\n const intBubbleCols = (data.length - 1) * 2 + 1; // 1 for \"X-Values\", then 2 for every Y-Axis\n const IS_MULTI_CAT_AXES = ((_b = (_a = data[0]) === null || _a === void 0 ? void 0 : _a.labels) === null || _b === void 0 ? void 0 : _b.length) > 1;\n // A: Add folders\n zipExcel.folder('_rels');\n zipExcel.folder('docProps');\n zipExcel.folder('xl/_rels');\n zipExcel.folder('xl/tables');\n zipExcel.folder('xl/theme');\n zipExcel.folder('xl/worksheets');\n zipExcel.folder('xl/worksheets/_rels');\n // B: Add core contents\n {\n zipExcel.file('[Content_Types].xml', '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><Types xmlns=\"http://schemas.openxmlformats.org/package/2006/content-types\">' +\n ' <Default Extension=\"rels\" ContentType=\"application/vnd.openxmlformats-package.relationships+xml\"/>' +\n ' <Default Extension=\"xml\" ContentType=\"application/xml\"/>' +\n ' <Override PartName=\"/xl/workbook.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml\"/>' +\n ' <Override PartName=\"/xl/worksheets/sheet1.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml\"/>' +\n ' <Override PartName=\"/xl/theme/theme1.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.theme+xml\"/>' +\n ' <Override PartName=\"/xl/styles.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml\"/>' +\n ' <Override PartName=\"/xl/sharedStrings.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml\"/>' +\n ' <Override PartName=\"/xl/tables/table1.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml\"/>' +\n ' <Override PartName=\"/docProps/core.xml\" ContentType=\"application/vnd.openxmlformats-package.core-properties+xml\"/>' +\n ' <Override PartName=\"/docProps/app.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.extended-properties+xml\"/>' +\n '</Types>\\n');\n zipExcel.file('_rels/.rels', '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><Relationships xmlns=\"http://schemas.openxmlformats.org/package/2006/relationships\">' +\n '<Relationship Id=\"rId1\" Type=\"http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties\" Target=\"docProps/core.xml\"/>' +\n '<Relationship Id=\"rId2\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties\" Target=\"docProps/app.xml\"/>' +\n '<Relationship Id=\"rId3\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument\" Target=\"xl/workbook.xml\"/>' +\n '</Relationships>\\n');\n zipExcel.file('docProps/app.xml', '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><Properties xmlns=\"http://schemas.openxmlformats.org/officeDocument/2006/extended-properties\" xmlns:vt=\"http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes\">' +\n '<Application>Microsoft Macintosh Excel</Application>' +\n '<DocSecurity>0</DocSecurity>' +\n '<ScaleCrop>false</ScaleCrop>' +\n '<HeadingPairs><vt:vector size=\"2\" baseType=\"variant\"><vt:variant><vt:lpstr>Worksheets</vt:lpstr></vt:variant><vt:variant><vt:i4>1</vt:i4></vt:variant></vt:vector></HeadingPairs>' +\n '<TitlesOfParts><vt:vector size=\"1\" baseType=\"lpstr\"><vt:lpstr>Sheet1</vt:lpstr></vt:vector></TitlesOfParts>' +\n '<Company></Company><LinksUpToDate>false</LinksUpToDate><SharedDoc>false</SharedDoc><HyperlinksChanged>false</HyperlinksChanged><AppVersion>16.0300</AppVersion>' +\n '</Properties>\\n');\n zipExcel.file('docProps/core.xml', '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><cp:coreProperties xmlns:cp=\"http://schemas.openxmlformats.org/package/2006/metadata/core-properties\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dcterms=\"http://purl.org/dc/terms/\" xmlns:dcmitype=\"http://purl.org/dc/dcmitype/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">' +\n '<dc:creator>PptxGenJS</dc:creator>' +\n '<cp:lastModifiedBy>PptxGenJS</cp:lastModifiedBy>' +\n '<dcterms:created xsi:type=\"dcterms:W3CDTF\">' +\n new Date().toISOString() +\n '</dcterms:created>' +\n '<dcterms:modified xsi:type=\"dcterms:W3CDTF\">' +\n new Date().toISOString() +\n '</dcterms:modified>' +\n '</cp:coreProperties>');\n zipExcel.file('xl/_rels/workbook.xml.rels', '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>' +\n '<Relationships xmlns=\"http://schemas.openxmlformats.org/package/2006/relationships\">' +\n '<Relationship Id=\"rId3\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles\" Target=\"styles.xml\"/>' +\n '<Relationship Id=\"rId2\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme\" Target=\"theme/theme1.xml\"/>' +\n '<Relationship Id=\"rId1\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet\" Target=\"worksheets/sheet1.xml\"/>' +\n '<Relationship Id=\"rId4\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings\" Target=\"sharedStrings.xml\"/>' +\n '</Relationships>');\n zipExcel.file('xl/styles.xml', '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><styleSheet xmlns=\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\"><numFmts count=\"1\"><numFmt numFmtId=\"0\" formatCode=\"General\"/></numFmts><fonts count=\"4\"><font><sz val=\"9\"/><color indexed=\"8\"/><name val=\"Geneva\"/></font><font><sz val=\"9\"/><color indexed=\"8\"/><name val=\"Geneva\"/></font><font><sz val=\"10\"/><color indexed=\"8\"/><name val=\"Geneva\"/></font><font><sz val=\"18\"/><color indexed=\"8\"/>' +\n '<name val=\"Arial\"/></font></fonts><fills count=\"2\"><fill><patternFill patternType=\"none\"/></fill><fill><patternFill patternType=\"gray125\"/></fill></fills><borders count=\"1\"><border><left/><right/><top/><bottom/><diagonal/></border></borders><dxfs count=\"0\"/><tableStyles count=\"0\"/><colors><indexedColors><rgbColor rgb=\"ff000000\"/><rgbColor rgb=\"ffffffff\"/><rgbColor rgb=\"ffff0000\"/><rgbColor rgb=\"ff00ff00\"/><rgbColor rgb=\"ff0000ff\"/>' +\n '<rgbColor rgb=\"ffffff00\"/><rgbColor rgb=\"ffff00ff\"/><rgbColor rgb=\"ff00ffff\"/><rgbColor rgb=\"ff000000\"/><rgbColor rgb=\"ffffffff\"/><rgbColor rgb=\"ff878787\"/><rgbColor rgb=\"fff9f9f9\"/></indexedColors></colors></styleSheet>\\n');\n zipExcel.file('xl/theme/theme1.xml', '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><a:theme xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\" name=\"Office Theme\"><a:themeElements><a:clrScheme name=\"Office\"><a:dk1><a:sysClr val=\"windowText\" lastClr=\"000000\"/></a:dk1><a:lt1><a:sysClr val=\"window\" lastClr=\"FFFFFF\"/></a:lt1><a:dk2><a:srgbClr val=\"44546A\"/></a:dk2><a:lt2><a:srgbClr val=\"E7E6E6\"/></a:lt2><a:accent1><a:srgbClr val=\"4472C4\"/></a:accent1><a:accent2><a:srgbClr val=\"ED7D31\"/></a:accent2><a:accent3><a:srgbClr val=\"A5A5A5\"/></a:accent3><a:accent4><a:srgbClr val=\"FFC000\"/></a:accent4><a:accent5><a:srgbClr val=\"5B9BD5\"/></a:accent5><a:accent6><a:srgbClr val=\"70AD47\"/></a:accent6><a:hlink><a:srgbClr val=\"0563C1\"/></a:hlink><a:folHlink><a:srgbClr val=\"954F72\"/></a:folHlink></a:clrScheme><a:fontScheme name=\"Office\"><a:majorFont><a:latin typeface=\"Calibri Light\" panose=\"020F0302020204030204\"/><a:ea typeface=\"\"/><a:cs typeface=\"\"/><a:font script=\"Jpan\" typeface=\"Yu Gothic Light\"/><a:font script=\"Hang\" typeface=\"맑은 고딕\"/><a:font script=\"Hans\" typeface=\"DengXian Light\"/><a:font script=\"Hant\" typeface=\"新細明體\"/><a:font script=\"Arab\" typeface=\"Times New Roman\"/><a:font script=\"Hebr\" typeface=\"Times New Roman\"/><a:font script=\"Thai\" typeface=\"Tahoma\"/><a:font script=\"Ethi\" typeface=\"Nyala\"/><a:font script=\"Beng\" typeface=\"Vrinda\"/><a:font script=\"Gujr\" typeface=\"Shruti\"/><a:font script=\"Khmr\" typeface=\"MoolBoran\"/><a:font script=\"Knda\" typeface=\"Tunga\"/><a:font script=\"Guru\" typeface=\"Raavi\"/><a:font script=\"Cans\" typeface=\"Euphemia\"/><a:font script=\"Cher\" typeface=\"Plantagenet Cherokee\"/><a:font script=\"Yiii\" typeface=\"Microsoft Yi Baiti\"/><a:font script=\"Tibt\" typeface=\"Microsoft Himalaya\"/><a:font script=\"Thaa\" typeface=\"MV Boli\"/><a:font script=\"Deva\" typeface=\"Mangal\"/><a:font script=\"Telu\" typeface=\"Gautami\"/><a:font script=\"Taml\" typeface=\"Latha\"/><a:font script=\"Syrc\" typeface=\"Estrangelo Edessa\"/><a:font script=\"Orya\" typeface=\"Kalinga\"/><a:font script=\"Mlym\" typeface=\"Kartika\"/><a:font script=\"Laoo\" typeface=\"DokChampa\"/><a:font script=\"Sinh\" typeface=\"Iskoola Pota\"/><a:font script=\"Mong\" typeface=\"Mongolian Baiti\"/><a:font script=\"Viet\" typeface=\"Times New Roman\"/><a:font script=\"Uigh\" typeface=\"Microsoft Uighur\"/><a:font script=\"Geor\" typeface=\"Sylfaen\"/></a:majorFont><a:minorFont><a:latin typeface=\"Calibri\" panose=\"020F0502020204030204\"/><a:ea typeface=\"\"/><a:cs typeface=\"\"/><a:font script=\"Jpan\" typeface=\"Yu Gothic\"/><a:font script=\"Hang\" typeface=\"맑은 고딕\"/><a:font script=\"Hans\" typeface=\"DengXian\"/><a:font script=\"Hant\" typeface=\"新細明體\"/><a:font script=\"Arab\" typeface=\"Arial\"/><a:font script=\"Hebr\" typeface=\"Arial\"/><a:font script=\"Thai\" typeface=\"Tahoma\"/><a:font script=\"Ethi\" typeface=\"Nyala\"/><a:font script=\"Beng\" typeface=\"Vrinda\"/><a:font script=\"Gujr\" typeface=\"Shruti\"/><a:font script=\"Khmr\" typeface=\"DaunPenh\"/><a:font script=\"Knda\" typeface=\"Tunga\"/><a:font script=\"Guru\" typeface=\"Raavi\"/><a:font script=\"Cans\" typeface=\"Euphemia\"/><a:font script=\"Cher\" typeface=\"Plantagenet Cherokee\"/><a:font script=\"Yiii\" typeface=\"Microsoft Yi Baiti\"/><a:font script=\"Tibt\" typeface=\"Microsoft Himalaya\"/><a:font script=\"Thaa\" typeface=\"MV Boli\"/><a:font script=\"Deva\" typeface=\"Mangal\"/><a:font script=\"Telu\" typeface=\"Gautami\"/><a:font script=\"Taml\" typeface=\"Latha\"/><a:font script=\"Syrc\" typeface=\"Estrangelo Edessa\"/><a:font script=\"Orya\" typeface=\"Kalinga\"/><a:font script=\"Mlym\" typeface=\"Kartika\"/><a:font script=\"Laoo\" typeface=\"DokChampa\"/><a:font script=\"Sinh\" typeface=\"Iskoola Pota\"/><a:font script=\"Mong\" typeface=\"Mongolian Baiti\"/><a:font script=\"Viet\" typeface=\"Arial\"/><a:font script=\"Uigh\" typeface=\"Microsoft Uighur\"/><a:font script=\"Geor\" typeface=\"Sylfaen\"/></a:minorFont></a:fontScheme><a:fmtScheme name=\"Office\"><a:fillStyleLst><a:solidFill><a:schemeClr val=\"phClr\"/></a:solidFill><a:gradFill rotWithShape=\"1\"><a:gsLst><a:gs pos=\"0\"><a:schemeClr val=\"phClr\"><a:lumMod val=\"110000\"/><a:satMod val=\"105000\"/><a:tint val=\"67000\"/></a:schemeClr></a:gs><a:gs pos=\"50000\"><a:schemeClr val=\"phClr\"><a:lumMod val=\"105000\"/><a:satMod val=\"103000\"/><a:tint val=\"73000\"/></a:schemeClr></a:gs><a:gs pos=\"100000\"><a:schemeClr val=\"phClr\"><a:lumMod val=\"105000\"/><a:satMod val=\"109000\"/><a:tint val=\"81000\"/></a:schemeClr></a:gs></a:gsLst><a:lin ang=\"5400000\" scaled=\"0\"/></a:gradFill><a:gradFill rotWithShape=\"1\"><a:gsLst><a:gs pos=\"0\"><a:schemeClr val=\"phClr\"><a:satMod val=\"103000\"/><a:lumMod val=\"102000\"/><a:tint val=\"94000\"/></a:schemeClr></a:gs><a:gs pos=\"50000\"><a:schemeClr val=\"phClr\"><a:satMod val=\"110000\"/><a:lumMod val=\"100000\"/><a:shade val=\"100000\"/></a:schemeClr></a:gs><a:gs pos=\"100000\"><a:schemeClr val=\"phClr\"><a:lumMod val=\"99000\"/><a:satMod val=\"120000\"/><a:shade val=\"78000\"/></a:schemeClr></a:gs></a:gsLst><a:lin ang=\"5400000\" scaled=\"0\"/></a:gradFill></a:fillStyleLst><a:lnStyleLst><a:ln w=\"6350\" cap=\"flat\" cmpd=\"sng\" algn=\"ctr\"><a:solidFill><a:schemeClr val=\"phClr\"/></a:solidFill><a:prstDash val=\"solid\"/><a:miter lim=\"800000\"/></a:ln><a:ln w=\"12700\" cap=\"flat\" cmpd=\"sng\" algn=\"ctr\"><a:solidFill><a:schemeClr val=\"phClr\"/></a:solidFill><a:prstDash val=\"solid\"/><a:miter lim=\"800000\"/></a:ln><a:ln w=\"19050\" cap=\"flat\" cmpd=\"sng\" algn=\"ctr\"><a:solidFill><a:schemeClr val=\"phClr\"/></a:solidFill><a:prstDash val=\"solid\"/><a:miter lim=\"800000\"/></a:ln></a:lnStyleLst><a:effectStyleLst><a:effectStyle><a:effectLst/></a:effectStyle><a:effectStyle><a:effectLst/></a:effectStyle><a:effectStyle><a:effectLst><a:outerShdw blurRad=\"57150\" dist=\"19050\" dir=\"5400000\" algn=\"ctr\" rotWithShape=\"0\"><a:srgbClr val=\"000000\"><a:alpha val=\"63000\"/></a:srgbClr></a:outerShdw></a:effectLst></a:effectStyle></a:effectStyleLst><a:bgFillStyleLst><a:solidFill><a:schemeClr val=\"phClr\"/></a:solidFill><a:solidFill><a:schemeClr val=\"phClr\"><a:tint val=\"95000\"/><a:satMod val=\"170000\"/></a:schemeClr></a:solidFill><a:gradFill rotWithShape=\"1\"><a:gsLst><a:gs pos=\"0\"><a:schemeClr val=\"phClr\"><a:tint val=\"93000\"/><a:satMod val=\"150000\"/><a:shade val=\"98000\"/><a:lumMod val=\"102000\"/></a:schemeClr></a:gs><a:gs pos=\"50000\"><a:schemeClr val=\"phClr\"><a:tint val=\"98000\"/><a:satMod val=\"130000\"/><a:shade val=\"90000\"/><a:lumMod val=\"103000\"/></a:schemeClr></a:gs><a:gs pos=\"100000\"><a:schemeClr val=\"phClr\"><a:shade val=\"63000\"/><a:satMod val=\"120000\"/></a:schemeClr></a:gs></a:gsLst><a:lin ang=\"5400000\" scaled=\"0\"/></a:gradFill></a:bgFillStyleLst></a:fmtScheme></a:themeElements><a:objectDefaults/><a:extraClrSchemeLst/><a:extLst><a:ext uri=\"{05A4C25C-085E-4340-85A3-A5531E510DB2}\"><thm15:themeFamily xmlns:thm15=\"http://schemas.microsoft.com/office/thememl/2012/main\" name=\"Office Theme\" id=\"{62F939B6-93AF-4DB8-9C6B-D6C7DFDC589F}\" vid=\"{4A3C46E8-61CC-4603-A589-7422A47A8E4A}\"/></a:ext></a:extLst></a:theme>');\n zipExcel.file('xl/workbook.xml', '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>' +\n '<workbook xmlns=\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\" mc:Ignorable=\"x15\" xmlns:x15=\"http://schemas.microsoft.com/office/spreadsheetml/2010/11/main\">' +\n '<fileVersion appName=\"xl\" lastEdited=\"7\" lowestEdited=\"6\" rupBuild=\"10507\"/>' +\n '<workbookPr/>' +\n '<bookViews><workbookView xWindow=\"0\" yWindow=\"500\" windowWidth=\"20960\" windowHeight=\"15960\"/></bookViews>' +\n '<sheets><sheet name=\"Sheet1\" sheetId=\"1\" r:id=\"rId1\"/></sheets>' +\n '<calcPr calcId=\"0\" concurrentCalc=\"0\"/>' +\n '</workbook>\\n');\n zipExcel.file('xl/worksheets/_rels/sheet1.xml.rels', '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>' +\n '<Relationships xmlns=\"http://schemas.openxmlformats.org/package/2006/relationships\">' +\n '<Relationship Id=\"rId1\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/table\" Target=\"../tables/table1.xml\"/>' +\n '</Relationships>\\n');\n }\n // sharedStrings.xml\n {\n // A: Start XML\n let strSharedStrings = '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>';\n if (chartObject.opts._type === CHART_TYPE.BUBBLE || chartObject.opts._type === CHART_TYPE.BUBBLE3D) {\n strSharedStrings += `<sst xmlns=\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\" count=\"${intBubbleCols}\" uniqueCount=\"${intBubbleCols}\">`;\n }\n else if (chartObject.opts._type === CHART_TYPE.SCATTER) {\n strSharedStrings += `<sst xmlns=\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\" count=\"${data.length}\" uniqueCount=\"${data.length}\">`;\n }\n else if (IS_MULTI_CAT_AXES) {\n let totCount = data.length;\n data[0].labels.forEach(arrLabel => (totCount += arrLabel.filter(label => label && label !== '').length));\n strSharedStrings += `<sst xmlns=\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\" count=\"${totCount}\" uniqueCount=\"${totCount}\">`;\n strSharedStrings += '<si><t/></si>';\n }\n else {\n // series names + all labels of one series + number of label groups (data.labels.length) of one series (i.e. how many times the blank string is used)\n const totCount = data.length + data[0].labels.length * data[0].labels[0].length + data[0].labels.length;\n // series names + labels of one series + blank string (same for all label groups)\n const unqCount = data.length + data[0].labels.length * data[0].labels[0].length + 1;\n // start `sst`\n strSharedStrings += `<sst xmlns=\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\" count=\"${totCount}\" uniqueCount=\"${unqCount}\">`;\n // B: Add 'blank' for A1, B1, ..., of every label group inside data[n].labels\n strSharedStrings += '<si><t xml:space=\"preserve\"></t></si>';\n }\n // C: Add `name`/Series\n if (chartObject.opts._type === CHART_TYPE.BUBBLE || chartObject.opts._type === CHART_TYPE.BUBBLE3D) {\n data.forEach((objData, idx) => {\n if (idx === 0)\n strSharedStrings += '<si><t>X-Axis</t></si>';\n else {\n strSharedStrings += `<si><t>${encodeXmlEntities(objData.name || `Y-Axis${idx}`)}</t></si>`;\n strSharedStrings += `<si><t>${encodeXmlEntities(`Size${idx}`)}</t></si>`;\n }\n });\n }\n else {\n data.forEach(objData => {\n strSharedStrings += `<si><t>${encodeXmlEntities((objData.name || ' ').replace('X-Axis', 'X-Values'))}</t></si>`;\n });\n }\n // D: Add `labels`/Categories\n if (chartObject.opts._type !== CHART_TYPE.BUBBLE && chartObject.opts._type !== CHART_TYPE.BUBBLE3D && chartObject.opts._type !== CHART_TYPE.SCATTER) {\n // Use forEach backwards & check for '' to support multi-cat axes\n data[0].labels\n .slice()\n .reverse()\n .forEach(labelsGroup => {\n labelsGroup\n .filter(label => label && label !== '')\n .forEach(label => {\n strSharedStrings += `<si><t>${encodeXmlEntities(label)}</t></si>`;\n });\n });\n }\n // DONE:\n strSharedStrings += '</sst>\\n';\n zipExcel.file('xl/sharedStrings.xml', strSharedStrings);\n }\n // tables/table1.xml\n {\n let strTableXml = '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>';\n if (chartObject.opts._type === CHART_TYPE.BUBBLE || chartObject.opts._type === CHART_TYPE.BUBBLE3D) {\n strTableXml += `<table xmlns=\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\" id=\"1\" name=\"Table1\" displayName=\"Table1\" ref=\"A1:${getExcelColName(intBubbleCols)}${intBubbleCols}\" totalsRowShown=\"0\">`;\n strTableXml += `<tableColumns count=\"${intBubbleCols}\">`;\n let idxColLtr = 1;\n data.forEach((obj, idx) => {\n if (idx === 0) {\n strTableXml += `<tableColumn id=\"${idx + 1}\" name=\"X-Values\"/>`;\n }\n else {\n strTableXml += `<tableColumn id=\"${idx + idxColLtr}\" name=\"${obj.name}\"/>`;\n idxColLtr++;\n strTableXml += `<tableColumn id=\"${idx + idxColLtr}\" name=\"Size${idx}\"/>`;\n }\n });\n }\n else if (chartObject.opts._type === CHART_TYPE.SCATTER) {\n strTableXml += `<table xmlns=\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\" id=\"1\" name=\"Table1\" displayName=\"Table1\" ref=\"A1:${getExcelColName(data.length)}${data[0].values.length + 1}\" totalsRowShown=\"0\">`;\n strTableXml += `<tableColumns count=\"${data.length}\">`;\n data.forEach((_obj, idx) => {\n strTableXml += `<tableColumn id=\"${idx + 1}\" name=\"${idx === 0 ? 'X-Values' : 'Y-Value '}${idx}\"/>`;\n });\n }\n else {\n strTableXml += `<table xmlns=\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\" id=\"1\" name=\"Table1\" displayName=\"Table1\" ref=\"A1:${getExcelColName(data.length + data[0].labels.length)}${data[0].labels[0].length + 1}'\" totalsRowShown=\"0\">`;\n strTableXml += `<tableColumns count=\"${data.length + data[0].labels.length}\">`;\n data[0].labels.forEach((_labelsGroup, idx) => {\n strTableXml += `<tableColumn id=\"${idx + 1}\" name=\"Column${idx + 1}\"/>`;\n });\n data.forEach((obj, idx) => {\n strTableXml += `<tableColumn id=\"${idx + data[0].labels.length + 1}\" name=\"${encodeXmlEntities(obj.name)}\"/>`;\n });\n }\n strTableXml += '</tableColumns>';\n strTableXml += '<tableStyleInfo showFirstColumn=\"0\" showLastColumn=\"0\" showRowStripes=\"1\" showColumnStripes=\"0\"/>';\n strTableXml += '</table>';\n zipExcel.file('xl/tables/table1.xml', strTableXml);\n }\n // worksheets/sheet1.xml\n {\n let strSheetXml = '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>';\n strSheetXml +=\n '<worksheet xmlns=\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\" mc:Ignorable=\"x14ac\" xmlns:x14ac=\"http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac\">';\n if (chartObject.opts._type === CHART_TYPE.BUBBLE || chartObject.opts._type === CHART_TYPE.BUBBLE3D) {\n strSheetXml += `<dimension ref=\"A1:${getExcelColName(intBubbleCols)}${data[0].values.length + 1}\"/>`;\n }\n else if (chartObject.opts._type === CHART_TYPE.SCATTER) {\n strSheetXml += `<dimension ref=\"A1:${getExcelColName(data.length)}${data[0].values.length + 1}\"/>`;\n }\n else {\n strSheetXml += `<dimension ref=\"A1:${getExcelColName(data.length + 1)}${data[0].values.length + 1}\"/>`;\n }\n strSheetXml += '<sheetViews><sheetView tabSelected=\"1\" workbookViewId=\"0\"><selection activeCell=\"B1\" sqref=\"B1\"/></sheetView></sheetViews>';\n strSheetXml += '<sheetFormatPr baseColWidth=\"10\" defaultRowHeight=\"16\"/>';\n if (chartObject.opts._type === CHART_TYPE.BUBBLE || chartObject.opts._type === CHART_TYPE.BUBBLE3D) {\n // UNUSED: strSheetXml += `<cols><col min=\"1\" max=\"${data.length}\" width=\"11\" customWidth=\"1\" /></cols>`\n /* EX: INPUT: `data`\n [\n { name:'X-Axis' , values:[10,11,12,13,14,15,16,17,18,19,20] },\n { name:'Y-Axis 1', values:[ 1, 6, 7, 8, 9], sizes:[ 4, 5, 6, 7, 8] },\n { name:'Y-Axis 2', values:[33,32,42,53,63], sizes:[11,12,13,14,15] }\n ];\n */\n /* EX: OUTPUT: bubbleChart Worksheet:\n -|----A-----|------B-----|------C-----|------D-----|------E-----|\n 1| X-Values | Y-Values 1 | Y-Sizes 1 | Y-Values 2 | Y-Sizes 2 |\n 2| 11 | 22 | 4 | 33 | 8 |\n -|----------|------------|------------|------------|------------|\n */\n strSheetXml += '<sheetData>';\n // A: Create header row first (NOTE: Start at index=1 as headers cols start with 'B')\n strSheetXml += `<row r=\"1\" spans=\"1:${intBubbleCols}\">`;\n strSheetXml += '<c r=\"A1\" t=\"s\"><v>0</v></c>';\n for (let idx = 1; idx < intBubbleCols; idx++) {\n strSheetXml += `<c r=\"${getExcelColName(idx + 1)}1\" t=\"s\"><v>${idx}</v></c>`; // NOTE: add `t=\"s\"` for label cols!\n }\n strSheetXml += '</row>';\n // B: Add row for each X-Axis value (Y-Axis* value is optional)\n data[0].values.forEach((val, idx) => {\n // Leading col is reserved for the 'X-Axis' value, so hard-code it, then loop over col values\n strSheetXml += `<row r=\"${idx + 2}\" spans=\"1:${intBubbleCols}\">`;\n strSheetXml += `<c r=\"A${idx + 2}\"><v>${val}</v></c>`;\n // Add Y-Axis 1->N (idy=0 = Xaxis)\n let idxColLtr = 2;\n for (let idy = 1; idy < data.length; idy++) {\n // y-value\n strSheetXml += `<c r=\"${getExcelColName(idxColLtr)}${idx + 2}\"><v>${data[idy].values[idx] || ''}</v></c>`;\n idxColLtr++;\n // y-size\n strSheetXml += `<c r=\"${getExcelColName(idxColLtr)}${idx + 2}\"><v>${data[idy].sizes[idx] || ''}</v></c>`;\n idxColLtr++;\n }\n strSheetXml += '</row>';\n });\n }\n else if (chartObject.opts._type === CHART_TYPE.SCATTER) {\n /* UNUSED:\n strSheetXml += '<cols>'\n strSheetXml += '<col min=\"1\" max=\"' + data.length + '\" width=\"11\" customWidth=\"1\" />'\n //data.forEach((obj,idx)=>{ strSheetXml += '<col min=\"'+(idx+1)+'\" max=\"'+(idx+1)+'\" width=\"11\" customWidth=\"1\" />' });\n strSheetXml += '</cols>'\n */\n /* EX: INPUT: `data`\n [\n { name:'X-AxisA', values:[ 1, 2, 3, 4, 5] },\n { name:'Y-AxisB', values:[ 2,22,42,52,62] },\n { name:'Y-AxisC', values:[ 3,33,43,53,63] }\n ];\n */\n /* EX: OUTPUT: sheet1.xml:\n -|----A----|----B----|----C----|\n 1| X-AxisA | Y-AxisB | Y-AxisC |\n 2| 1 | 2 | 3 |\n -|---------|---------|---------|\n */\n strSheetXml += '<sheetData>';\n // A: Create header row first (every `name` row provided)\n strSheetXml += `<row r=\"1\" spans=\"1:${data.length}\">`;\n for (let idx = 0; idx < data.length; idx++) {\n strSheetXml += `<c r=\"${getExcelColName(idx + 1)}1\" t=\"s\"><v>${idx}</v></c>`; // NOTE: add `t=\"s\"` for label cols!\n }\n strSheetXml += '</row>';\n // B: Add row for each X-Axis value (Y-Axis* value is optional)\n data[0].values.forEach((val, idx) => {\n // Leading col is reserved for the 'X-Axis' value, so hard-code it, then loop over col values\n strSheetXml += `<row r=\"${idx + 2}\" spans=\"1:${data.length}\">`;\n strSheetXml += `<c r=\"A${idx + 2}\"><v>${val}</v></c>`;\n // Add Y-Axis 1->N\n for (let idy = 1; idy < data.length; idy++) {\n strSheetXml += `<c r=\"${getExcelColName(idy + 1)}${idx + 2}\"><v>${data[idy].values[idx] || data[idy].values[idx] === 0 ? data[idy].values[idx] : ''}</v></c>`;\n }\n strSheetXml += '</row>';\n });\n }\n else {\n // strSheetXml += '<cols><col min=\"1\" max=\"1\" width=\"11\" customWidth=\"1\" /></cols>'\n strSheetXml += '<sheetData>';\n /* EX: INPUT: `data`\n [\n { name:'Red', labels:['Jan..May-17'], values:[11,13,14,15,16] },\n { name:'Amb', labels:['Jan..May-17'], values:[22, 6, 7, 8, 9] },\n { name:'Grn', labels:['Jan..May-17'], values:[33,32,42,53,63] }\n ];\n */\n /* EX: OUTPUT: lineChart Worksheet:\n -|---A---|--B--|--C--|--D--|\n 1| | Red | Amb | Grn |\n 2|Jan-17 | 11| 22| 33|\n 3|Feb-17 | 55| 43| 70|\n 4|Mar-17 | 56| 143| 99|\n 5|Apr-17 | 65| 3| 120|\n 6|May-17 | 75| 93| 170|\n -|-------|-----|-----|-----|\n */\n if (!IS_MULTI_CAT_AXES) {\n // A: Create header row first\n strSheetXml += `<row r=\"1\" spans=\"1:${data.length + data[0].labels.length}\">`;\n data[0].labels.forEach((_labelsGroup, idx) => {\n strSheetXml += `<c r=\"${getExcelColName(idx + 1)}1\" t=\"s\"><v>0</v></c>`;\n });\n for (let idx = 0; idx < data.length; idx++) {\n strSheetXml += `<c r=\"${getExcelColName(idx + 1 + data[0].labels.length)}1\" t=\"s\"><v>${idx + 1}</v></c>`; // NOTE: use `t=\"s\"` for label cols!\n }\n strSheetXml += '</row>';\n // B: Add data row(s) for each category\n data[0].labels[0].forEach((_cat, idx) => {\n strSheetXml += `<row r=\"${idx + 2}\" spans=\"1:${data.length + data[0].labels.length}\">`;\n // Leading cols are reserved for the label groups\n for (let idx2 = data[0].labels.length - 1; idx2 >= 0; idx2--) {\n strSheetXml += `<c r=\"${getExcelColName(data[0].labels.length - idx2)}${idx + 2}\" t=\"s\">`;\n strSheetXml += `<v>${data.length + idx + 1}</v>`;\n strSheetXml += '</c>';\n }\n for (let idy = 0; idy < data.length; idy++) {\n strSheetXml += `<c r=\"${getExcelColName(data[0].labels.length + idy + 1)}${idx + 2}\"><v>${data[idy].values[idx] || ''}</v></c>`;\n }\n strSheetXml += '</row>';\n });\n }\n else {\n // A: create header row\n strSheetXml += `<row r=\"1\" spans=\"1:${data.length + data[0].labels.length}\">`;\n for (let idx = 0; idx < data[0].labels.length; idx++) {\n strSheetXml += `<c r=\"${getExcelColName(idx + 1)}1\" t=\"s\"><v>0</v></c>`;\n }\n for (let idx = data[0].labels.length - 1; idx < data.length + data[0].labels.length - 1; idx++) {\n strSheetXml += `<c r=\"${getExcelColName(idx + data[0].labels.length)}1\" t=\"s\"><v>${idx}</v></c>`; // NOTE: use `t=\"s\"` for label cols!\n }\n strSheetXml += '</row>';\n // FIXME: 20220524 (v3.11.0)\n /**\n * @example INPUT\n * const LABELS = [\n * [\"Gear\", \"Berg\", \"Motr\", \"Swch\", \"Plug\", \"Cord\", \"Pump\", \"Leak\", \"Seal\"],\n * [\"Mech\", \"\", \"\", \"Elec\", \"\", \"\", \"Hydr\", \"\", \"\"],\n * ];\n * const arrDataRegions = [\n * { name: \"West\", labels: LABELS, values: [11, 8, 3, 0, 11, 3, 0, 0, 0] },\n * { name: \"Ctrl\", labels: LABELS, values: [0, 11, 6, 19, 12, 5, 0, 0, 0] },\n * { name: \"East\", labels: LABELS, values: [0, 3, 2, 0, 0, 0, 4, 3, 1] },\n * ];\n */\n /**\n * @example OUTPUT EXCEL SHEET\n * |/|---A--|---B--|---C--|---D--|---E--|\n * |1| | | West | Ctrl | East |\n * |2| Mech | Gear | ## | ## | ## |\n * |3| | Brng | ## | ## | ## |\n * |4| | Motr | ## | ## | ## |\n * |5| Elec | Swch | ## | ## | ## |\n * |6| | Plug | ## | ## | ## |\n * |7| | Cord | ## | ## | ## |\n * |8| Hydr | Pump | ## | ## | ## |\n * |9| | Leak | ## | ## | ## |\n *|10| | Seal | ## | ## | ## |\n */\n /**\n * @example OUTPUT EXCEL SHEET XML\n * <row r=\"1\" spans=\"1:5\">\n * <c r=\"A1\" t=\"s\"><v>0</v></c>\n * <c r=\"B1\" t=\"s\"><v>0</v></c>\n * <c r=\"C1\" t=\"s\"><v>1</v></c>\n * <c r=\"D1\" t=\"s\"><v>2</v></c>\n * <c r=\"E1\" t=\"s\"><v>3</v></c>\n * </row>\n * <row r=\"2\" spans=\"1:5\">\n * <c r=\"A2\" t=\"s\"><v>4</v></c>\n * <c r=\"B2\" t=\"s\"><v>7</v></c>\n * <c r=\"C2\" ><v>###</v></c>\n * </row>\n * <row r=\"3\" spans=\"1:5\">\n * <c r=\"A3\" />\n * <c r=\"B3\" t=\"s\"><v>8</v></c>\n * <c r=\"C3\" ><v>###</v></c>\n * </row>\n */\n /**\n * @example SHARED-STRINGS\n * 1=West, 2=Ctrl, 3=East, 4=Mech, 5=Elec, 6=Mydr, 7=Gear, 8=Brng, [...], 15=Seal\n */\n // B: Add data row(s) for each category\n /**\n * const LABELS = [\n * [\"Gear\", \"Berg\", \"Motr\", \"Swch\", \"Plug\", \"Cord\", \"Pump\", \"Leak\", \"Seal\"],\n * [\"Mech\", \"\", \"\", \"Elec\", \"\", \"\", \"Hydr\", \"\", \"\"],\n * [\"2010\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\"],\n * ];\n */\n const TOT_SER = data.length;\n const TOT_CAT = data[0].labels[0].length;\n const TOT_LVL = data[0].labels.length;\n // Iterate across labels/cats as these are the <row>'s\n for (let idx = 0; idx < TOT_CAT; idx++) {\n // A: start row\n strSheetXml += `<row r=\"${idx + 2}\" spans=\"1:${TOT_SER + TOT_LVL}\">`;\n // WIP: FIXME:\n // B: add a col for each label/cat\n let totLabels = TOT_SER;\n const revLabelGroups = data[0].labels.slice().reverse();\n revLabelGroups.forEach((labelsGroup, idy) => {\n /**\n * const LABELS_REVERSED = [\n * [\"Mech\", \"\", \"\", \"Elec\", \"\", \"\", \"Hydr\", \"\", \"\"],\n * [\"Gear\", \"Berg\", \"Motr\", \"Swch\", \"Plug\", \"Cord\", \"Pump\", \"Leak\", \"Seal\"],\n * ];\n */\n const colLabel = labelsGroup[idx];\n if (colLabel) {\n const totGrpLbls = idy === 0 ? 1 : revLabelGroups[idy - 1].filter(label => label && label !== '').length; // get unique label so we can add to get proper shared-string #\n totLabels += totGrpLbls;\n strSheetXml += `<c r=\"${getExcelColName(idx + 1 + idy)}${idx + 2}\" t=\"s\"><v>${totLabels}</v></c>`;\n }\n });\n // WIP: FIXME:\n // C: add a col for each data value\n for (let idy = 0; idy < TOT_SER; idy++) {\n strSheetXml += `<c r=\"${getExcelColName(TOT_LVL + idy + 1)}${idx + 2}\"><v>${data[idy].values[idx] || 0}</v></c>`;\n }\n // D: Done\n strSheetXml += '</row>';\n }\n // console.log(strSheetXml) // WIP: CHECK:\n // console.log(`---CHECK ABOVE---------------------`)\n }\n }\n strSheetXml += '</sheetData>';\n /* FIXME: support multi-level\n if (IS_MULTI_CAT_AXES) {\n strSheetXml += '<mergeCells count=\"3\">'\n strSheetXml += ' <mergeCell ref=\"A2:A4\"/>'\n strSheetXml += ' <mergeCell ref=\"A10:A12\"/>'\n strSheetXml += ' <mergeCell ref=\"A5:A9\"/>'\n strSheetXml += '</mergeCells>'\n }\n */\n strSheetXml += '<pageMargins left=\"0.7\" right=\"0.7\" top=\"0.75\" bottom=\"0.75\" header=\"0.3\" footer=\"0.3\"/>';\n // Link the `table1.xml` file to define an actual Table in Excel\n // NOTE: This only works with scatter charts - all others give a \"cannot find linked file\" error\n // ....: Since we dont need the table anyway (chart data can be edited/range selected, etc.), just dont use this\n // ....: Leaving this so nobody foolishly attempts to add this in the future\n // strSheetXml += '<tableParts count=\"1\"><tablePart r:id=\"rId1\"/></tableParts>'\n strSheetXml += '</worksheet>\\n';\n zipExcel.file('xl/worksheets/sheet1.xml', strSheetXml);\n }\n // C: Add XLSX to PPTX export\n zipExcel\n .generateAsync({ type: 'base64' })\n .then(content => {\n // 1: Create the embedded Excel worksheet with labels and data\n zip.file(`ppt/embeddings/Microsoft_Excel_Worksheet${chartObject.globalId}.xlsx`, content, { base64: true });\n // 2: Create the chart.xml and rel files\n zip.file('ppt/charts/_rels/' + chartObject.fileName + '.rels', '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>' +\n '<Relationships xmlns=\"http://schemas.openxmlformats.org/package/2006/relationships\">' +\n `<Relationship Id=\"rId1\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/package\" Target=\"../embeddings/Microsoft_Excel_Worksheet${chartObject.globalId}.xlsx\"/>` +\n '</Relationships>');\n zip.file(`ppt/charts/${chartObject.fileName}`, makeXmlCharts(chartObject));\n // 3: Done\n resolve('');\n })\n .catch(strErr => {\n reject(strErr);\n });\n });\n });\n}\n/**\n * Main entry point method for create charts\n * @see: http://www.datypic.com/sc/ooxml/s-dml-chart.xsd.html\n * @param {ISlideRelChart} rel - chart object\n * @return {string} XML\n */\nfunction makeXmlCharts(rel) {\n var _a, _b, _c, _d;\n let strXml = '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>';\n let usesSecondaryValAxis = false;\n // STEP 1: Create chart\n {\n // CHARTSPACE: BEGIN vvv\n strXml +=\n '<c:chartSpace xmlns:c=\"http://schemas.openxmlformats.org/drawingml/2006/chart\" xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\">';\n strXml += '<c:date1904 val=\"0\"/>'; // ppt defaults to 1904 dates, excel to 1900\n strXml += `<c:roundedCorners val=\"${rel.opts.chartArea.roundedCorners ? '1' : '0'}\"/>`;\n strXml += '<c:chart>';\n // OPTION: Title\n if (rel.opts.showTitle) {\n strXml += genXmlTitle({\n title: rel.opts.title || 'Chart Title',\n color: rel.opts.titleColor,\n fontFace: rel.opts.titleFontFace,\n fontSize: rel.opts.titleFontSize || DEF_FONT_TITLE_SIZE,\n titleAlign: rel.opts.titleAlign,\n titleBold: rel.opts.titleBold,\n titlePos: rel.opts.titlePos,\n titleRotate: rel.opts.titleRotate,\n }, rel.opts.x, rel.opts.y);\n strXml += '<c:autoTitleDeleted val=\"0\"/>';\n }\n else {\n // NOTE: Add autoTitleDeleted tag in else to prevent default creation of chart title even when showTitle is set to false\n strXml += '<c:autoTitleDeleted val=\"1\"/>';\n }\n /** Add 3D view tag\n * @see: https://c-rex.net/projects/samples/ooxml/e1/Part4/OOXML_P4_DOCX_perspective_topic_ID0E6BUQB.html\n */\n if (rel.opts._type === CHART_TYPE.BAR3D) {\n strXml += `<c:view3D><c:rotX val=\"${rel.opts.v3DRotX}\"/><c:rotY val=\"${rel.opts.v3DRotY}\"/><c:rAngAx val=\"${!rel.opts.v3DRAngAx ? 0 : 1}\"/><c:perspective val=\"${rel.opts.v3DPerspective}\"/></c:view3D>`;\n }\n strXml += '<c:plotArea>';\n // IMPORTANT: Dont specify layout to enable auto-fit: PPT does a great job maximizing space with all 4 TRBL locations\n if (rel.opts.layout) {\n strXml += '<c:layout>';\n strXml += ' <c:manualLayout>';\n strXml += ' <c:layoutTarget val=\"inner\" />';\n strXml += ' <c:xMode val=\"edge\" />';\n strXml += ' <c:yMode val=\"edge\" />';\n strXml += ' <c:x val=\"' + (rel.opts.layout.x || 0) + '\" />';\n strXml += ' <c:y val=\"' + (rel.opts.layout.y || 0) + '\" />';\n strXml += ' <c:w val=\"' + (rel.opts.layout.w || 1) + '\" />';\n strXml += ' <c:h val=\"' + (rel.opts.layout.h || 1) + '\" />';\n strXml += ' </c:manualLayout>';\n strXml += '</c:layout>';\n }\n else {\n strXml += '<c:layout/>';\n }\n }\n // A: Create Chart XML -----------------------------------------------------------\n if (Array.isArray(rel.opts._type)) {\n rel.opts._type.forEach(type => {\n // TODO: FIXME: theres `options` on chart rels??\n const options = Object.assign(Object.assign({}, rel.opts), type.options);\n // let options: IChartOptsLib = { type: type.type, }\n const valAxisId = options.secondaryValAxis ? AXIS_ID_VALUE_SECONDARY : AXIS_ID_VALUE_PRIMARY;\n const catAxisId = options.secondaryCatAxis ? AXIS_ID_CATEGORY_SECONDARY : AXIS_ID_CATEGORY_PRIMARY;\n usesSecondaryValAxis = usesSecondaryValAxis || options.secondaryValAxis;\n strXml += makeChartType(type.type, type.data, options, valAxisId, catAxisId);\n });\n }\n else {\n strXml += makeChartType(rel.opts._type, rel.data, rel.opts, AXIS_ID_VALUE_PRIMARY, AXIS_ID_CATEGORY_PRIMARY);\n }\n // B: Axes -----------------------------------------------------------\n if (rel.opts._type !== CHART_TYPE.PIE && rel.opts._type !== CHART_TYPE.DOUGHNUT) {\n // Param check\n if (rel.opts.valAxes && rel.opts.valAxes.length > 1 && !usesSecondaryValAxis) {\n throw new Error('Secondary axis must be used by one of the multiple charts');\n }\n if (rel.opts.catAxes) {\n if (!rel.opts.valAxes || rel.opts.valAxes.length !== rel.opts.catAxes.length) {\n throw new Error('There must be the same number of value and category axes.');\n }\n strXml += makeCatAxis(Object.assign(Object.assign({}, rel.opts), rel.opts.catAxes[0]), AXIS_ID_CATEGORY_PRIMARY, AXIS_ID_VALUE_PRIMARY);\n }\n else {\n strXml += makeCatAxis(rel.opts, AXIS_ID_CATEGORY_PRIMARY, AXIS_ID_VALUE_PRIMARY);\n }\n if (rel.opts.valAxes) {\n strXml += makeValAxis(Object.assign(Object.assign({}, rel.opts), rel.opts.valAxes[0]), AXIS_ID_VALUE_PRIMARY);\n if (rel.opts.valAxes[1]) {\n strXml += makeValAxis(Object.assign(Object.assign({}, rel.opts), rel.opts.valAxes[1]), AXIS_ID_VALUE_SECONDARY);\n }\n }\n else {\n strXml += makeValAxis(rel.opts, AXIS_ID_VALUE_PRIMARY);\n // Add series axis for 3D bar\n if (rel.opts._type === CHART_TYPE.BAR3D) {\n strXml += makeSerAxis(rel.opts, AXIS_ID_SERIES_PRIMARY, AXIS_ID_VALUE_PRIMARY);\n }\n }\n // Combo Charts: Add secondary axes after all vals\n if (((_a = rel.opts) === null || _a === void 0 ? void 0 : _a.catAxes) && ((_b = rel.opts) === null || _b === void 0 ? void 0 : _b.catAxes[1])) {\n strXml += makeCatAxis(Object.assign(Object.assign({}, rel.opts), rel.opts.catAxes[1]), AXIS_ID_CATEGORY_SECONDARY, AXIS_ID_VALUE_SECONDARY);\n }\n }\n // C: Chart Properties and plotArea Options: Border, Data Table, Fill, Legend\n {\n // NOTE: DataTable goes between '</c:valAx>' and '<c:spPr>'\n if (rel.opts.showDataTable) {\n strXml += '<c:dTable>';\n strXml += ` <c:showHorzBorder val=\"${!rel.opts.showDataTableHorzBorder ? 0 : 1}\"/>`;\n strXml += ` <c:showVertBorder val=\"${!rel.opts.showDataTableVertBorder ? 0 : 1}\"/>`;\n strXml += ` <c:showOutline val=\"${!rel.opts.showDataTableOutline ? 0 : 1}\"/>`;\n strXml += ` <c:showKeys val=\"${!rel.opts.showDataTableKeys ? 0 : 1}\"/>`;\n strXml += ' <c:spPr>';\n strXml += ' <a:noFill/>';\n strXml += ' <a:ln w=\"9525\" cap=\"flat\" cmpd=\"sng\" algn=\"ctr\"><a:solidFill><a:schemeClr val=\"tx1\"><a:lumMod val=\"15000\"/><a:lumOff val=\"85000\"/></a:schemeClr></a:solidFill><a:round/></a:ln>';\n strXml += ' <a:effectLst/>';\n strXml += ' </c:spPr>';\n strXml += ' <c:txPr>';\n strXml += ' <a:bodyPr rot=\"0\" spcFirstLastPara=\"1\" vertOverflow=\"ellipsis\" vert=\"horz\" wrap=\"square\" anchor=\"ctr\" anchorCtr=\"1\"/>';\n strXml += ' <a:lstStyle/>';\n strXml += ' <a:p>';\n strXml += ' <a:pPr rtl=\"0\">';\n strXml += ` <a:defRPr sz=\"${Math.round((rel.opts.dataTableFontSize || DEF_FONT_SIZE) * 100)}\" b=\"0\" i=\"0\" u=\"none\" strike=\"noStrike\" kern=\"1200\" baseline=\"0\">`;\n strXml += ' <a:solidFill><a:schemeClr val=\"tx1\"><a:lumMod val=\"65000\"/><a:lumOff val=\"35000\"/></a:schemeClr></a:solidFill>';\n strXml += ' <a:latin typeface=\"+mn-lt\"/>';\n strXml += ' <a:ea typeface=\"+mn-ea\"/>';\n strXml += ' <a:cs typeface=\"+mn-cs\"/>';\n strXml += ' </a:defRPr>';\n strXml += ' </a:pPr>';\n strXml += ' <a:endParaRPr lang=\"en-US\"/>';\n strXml += ' </a:p>';\n strXml += ' </c:txPr>';\n strXml += '</c:dTable>';\n }\n strXml += ' <c:spPr>';\n // OPTION: Fill\n strXml += ((_c = rel.opts.plotArea.fill) === null || _c === void 0 ? void 0 : _c.color) ? genXmlColorSelection(rel.opts.plotArea.fill) : '<a:noFill/>';\n // OPTION: Border\n strXml += rel.opts.plotArea.border\n ? `<a:ln w=\"${valToPts(rel.opts.plotArea.border.pt)}\" cap=\"flat\">${genXmlColorSelection(rel.opts.plotArea.border.color)}</a:ln>`\n : '<a:ln><a:noFill/></a:ln>';\n // Close shapeProp/plotArea before Legend\n strXml += ' <a:effectLst/>';\n strXml += ' </c:spPr>';\n strXml += '</c:plotArea>';\n // OPTION: Legend\n // IMPORTANT: Dont specify layout to enable auto-fit: PPT does a great job maximizing space with all 4 TRBL locations\n if (rel.opts.showLegend) {\n strXml += '<c:legend>';\n strXml += '<c:legendPos val=\"' + rel.opts.legendPos + '\"/>';\n // strXml += '<c:layout/>'\n strXml += '<c:overlay val=\"0\"/>';\n if (rel.opts.legendFontFace || rel.opts.legendFontSize || rel.opts.legendColor) {\n strXml += '<c:txPr>';\n strXml += ' <a:bodyPr/>';\n strXml += ' <a:lstStyle/>';\n strXml += ' <a:p>';\n strXml += ' <a:pPr>';\n strXml += rel.opts.legendFontSize ? `<a:defRPr sz=\"${Math.round(Number(rel.opts.legendFontSize) * 100)}\">` : '<a:defRPr>';\n if (rel.opts.legendColor)\n strXml += genXmlColorSelection(rel.opts.legendColor);\n if (rel.opts.legendFontFace)\n strXml += '<a:latin typeface=\"' + rel.opts.legendFontFace + '\"/>';\n if (rel.opts.legendFontFace)\n strXml += '<a:cs typeface=\"' + rel.opts.legendFontFace + '\"/>';\n strXml += ' </a:defRPr>';\n strXml += ' </a:pPr>';\n strXml += ' <a:endParaRPr lang=\"en-US\"/>';\n strXml += ' </a:p>';\n strXml += '</c:txPr>';\n }\n strXml += '</c:legend>';\n }\n }\n strXml += ' <c:plotVisOnly val=\"1\"/>';\n strXml += ' <c:dispBlanksAs val=\"' + rel.opts.displayBlanksAs + '\"/>';\n if (rel.opts._type === CHART_TYPE.SCATTER)\n strXml += '<c:showDLblsOverMax val=\"1\"/>';\n strXml += '</c:chart>';\n // D: CHARTSPACE SHAPE PROPS\n strXml += '<c:spPr>';\n strXml += ((_d = rel.opts.chartArea.fill) === null || _d === void 0 ? void 0 : _d.color) ? genXmlColorSelection(rel.opts.chartArea.fill) : '<a:noFill/>';\n strXml += rel.opts.chartArea.border\n ? `<a:ln w=\"${valToPts(rel.opts.chartArea.border.pt)}\" cap=\"flat\">${genXmlColorSelection(rel.opts.chartArea.border.color)}</a:ln>`\n : '<a:ln><a:noFill/></a:ln>';\n strXml += ' <a:effectLst/>';\n strXml += '</c:spPr>';\n // E: DATA (Add relID)\n strXml += '<c:externalData r:id=\"rId1\"><c:autoUpdate val=\"0\"/></c:externalData>';\n // LAST: chartSpace end\n strXml += '</c:chartSpace>';\n return strXml;\n}\n/**\n * Create XML string for any given chart type\n * @param {CHART_NAME} chartType chart type name\n * @param {IOptsChartData[]} data chart data\n * @param {IChartOptsLib} opts chart options\n * @param {string} valAxisId chart val axis id\n * @param {string} catAxisId chart cat axis id\n * @param {boolean} isMultiTypeChart is this a mutli-type chart?\n * @example 'bubble' returns <c:bubbleChart></c>\n * @example '<c:lineChart>'\n * @return {string} XML chart\n */\nfunction makeChartType(chartType, data, opts, valAxisId, catAxisId, isMultiTypeChart) {\n // NOTE: \"Chart Range\" (as shown in \"select Chart Area dialog\") is calculated.\n // ....: Ensure each X/Y Axis/Col has same row height (esp. applicable to XY Scatter where X can often be larger than Y's)\n let colorIndex = -1; // Maintain the color index by region\n let idxColLtr = 1;\n let optsChartData = null;\n let strXml = '';\n switch (chartType) {\n case CHART_TYPE.AREA:\n case CHART_TYPE.BAR:\n case CHART_TYPE.BAR3D:\n case CHART_TYPE.LINE:\n case CHART_TYPE.RADAR:\n // 1: Start Chart\n strXml += `<c:${chartType}Chart>`;\n if (chartType === CHART_TYPE.AREA && opts.barGrouping === 'stacked') {\n strXml += '<c:grouping val=\"' + opts.barGrouping + '\"/>';\n }\n if (chartType === CHART_TYPE.BAR || chartType === CHART_TYPE.BAR3D) {\n strXml += '<c:barDir val=\"' + opts.barDir + '\"/>';\n strXml += '<c:grouping val=\"' + (opts.barGrouping || 'clustered') + '\"/>';\n }\n if (chartType === CHART_TYPE.RADAR) {\n strXml += '<c:radarStyle val=\"' + opts.radarStyle + '\"/>';\n }\n strXml += '<c:varyColors val=\"0\"/>';\n // 2: \"Series\" block for every data row\n /* EX1:\n data: [\n {\n name: 'Region 1',\n labels: [['April', 'May', 'June', 'July']],\n values: [17, 26, 53, 96]\n },\n {\n name: 'Region 2',\n labels: [['April', 'May', 'June', 'July']],\n values: [55, 43, 70, 58]\n }\n ]\n */\n /* EX2:\n data: [\n {\n name: 'Region 1',\n labels: [\n ['April', 'May', 'June', 'April', 'May', 'June'],\n ['2020', '', '', '2021', '', '']\n ],\n values: [17, 26, 53, 96, 40, 33]\n },\n {\n name: 'Region 2',\n labels: [\n ['April', 'May', 'June', 'April', 'May', 'June'],\n ['2020', '', '', '2021', '', '']\n ],\n values: [55, 43, 70, 58, 78, 63]\n }\n ]\n */\n data.forEach(obj => {\n var _a;\n colorIndex++;\n strXml += '<c:ser>';\n strXml += ` <c:idx val=\"${obj._dataIndex}\"/><c:order val=\"${obj._dataIndex}\"/>`;\n strXml += ' <c:tx>';\n strXml += ' <c:strRef>';\n strXml += ' <c:f>Sheet1!$' + getExcelColName(obj._dataIndex + obj.labels.length + 1) + '$1</c:f>';\n strXml += ' <c:strCache><c:ptCount val=\"1\"/><c:pt idx=\"0\"><c:v>' + encodeXmlEntities(obj.name) + '</c:v></c:pt></c:strCache>';\n strXml += ' </c:strRef>';\n strXml += ' </c:tx>';\n // Fill and Border\n // TODO: CURRENT: Pull#727\n // TODO: let seriesColor = obj.color ? obj.color : opts.chartColors ? opts.chartColors[colorIndex % opts.chartColors.length] : null\n const seriesColor = opts.chartColors ? opts.chartColors[colorIndex % opts.chartColors.length] : null;\n strXml += ' <c:spPr>';\n if (seriesColor === 'transparent') {\n strXml += '<a:noFill/>';\n }\n else if (opts.chartColorsOpacity) {\n strXml += '<a:solidFill>' + createColorElement(seriesColor, `<a:alpha val=\"${Math.round(opts.chartColorsOpacity * 1000)}\"/>`) + '</a:solidFill>';\n }\n else {\n strXml += '<a:solidFill>' + createColorElement(seriesColor) + '</a:solidFill>';\n }\n if (chartType === CHART_TYPE.LINE || chartType === CHART_TYPE.RADAR) {\n if (opts.lineSize === 0) {\n strXml += '<a:ln><a:noFill/></a:ln>';\n }\n else {\n strXml += `<a:ln w=\"${valToPts(opts.lineSize)}\" cap=\"${createLineCap(opts.lineCap)}\"><a:solidFill>${createColorElement(seriesColor)}</a:solidFill>`;\n strXml += '<a:prstDash val=\"' + (opts.lineDash || 'solid') + '\"/><a:round/></a:ln>';\n }\n }\n else if (opts.dataBorder) {\n strXml += `<a:ln w=\"${valToPts(opts.dataBorder.pt)}\" cap=\"${createLineCap(opts.lineCap)}\"><a:solidFill>${createColorElement(opts.dataBorder.color)}</a:solidFill><a:prstDash val=\"solid\"/><a:round/></a:ln>`;\n }\n strXml += createShadowElement(opts.shadow, DEF_SHAPE_SHADOW);\n strXml += ' </c:spPr>';\n strXml += ' <c:invertIfNegative val=\"0\"/>';\n // Data Labels per series\n // NOTE: [20190117] Adding these to RADAR chart causes unrecoverable corruption!\n if (chartType !== CHART_TYPE.RADAR) {\n strXml += '<c:dLbls>';\n strXml += `<c:numFmt formatCode=\"${encodeXmlEntities(opts.dataLabelFormatCode) || 'General'}\" sourceLinked=\"0\"/>`;\n if (opts.dataLabelBkgrdColors)\n strXml += `<c:spPr><a:solidFill>${createColorElement(seriesColor)}</a:solidFill></c:spPr>`;\n strXml += '<c:txPr><a:bodyPr/><a:lstStyle/><a:p><a:pPr>';\n strXml += `<a:defRPr b=\"${opts.dataLabelFontBold ? 1 : 0}\" i=\"${opts.dataLabelFontItalic ? 1 : 0}\" strike=\"noStrike\" sz=\"${Math.round((opts.dataLabelFontSize || DEF_FONT_SIZE) * 100)}\" u=\"none\">`;\n strXml += `<a:solidFill>${createColorElement(opts.dataLabelColor || DEF_FONT_COLOR)}</a:solidFill>`;\n strXml += `<a:latin typeface=\"${opts.dataLabelFontFace || 'Arial'}\"/>`;\n strXml += '</a:defRPr></a:pPr></a:p></c:txPr>';\n if (opts.dataLabelPosition)\n strXml += `<c:dLblPos val=\"${opts.dataLabelPosition}\"/>`;\n strXml += '<c:showLegendKey val=\"0\"/>';\n strXml += `<c:showVal val=\"${opts.showValue ? '1' : '0'}\"/>`;\n strXml += `<c:showCatName val=\"0\"/><c:showSerName val=\"${opts.showSerName ? '1' : '0'}\"/><c:showPercent val=\"0\"/><c:showBubbleSize val=\"0\"/>`;\n strXml += `<c:showLeaderLines val=\"${opts.showLeaderLines ? '1' : '0'}\"/>`;\n strXml += '</c:dLbls>';\n }\n // 'c:marker' tag: `lineDataSymbol`\n if (chartType === CHART_TYPE.LINE || chartType === CHART_TYPE.RADAR) {\n strXml += '<c:marker>';\n strXml += ' <c:symbol val=\"' + opts.lineDataSymbol + '\"/>';\n if (opts.lineDataSymbolSize)\n strXml += `<c:size val=\"${opts.lineDataSymbolSize}\"/>`; // Defaults to \"auto\" otherwise (but this is usually too small, so there is a default)\n strXml += ' <c:spPr>';\n strXml += ` <a:solidFill>${createColorElement(opts.chartColors[obj._dataIndex + 1 > opts.chartColors.length ? Math.floor(Math.random() * opts.chartColors.length) : obj._dataIndex])}</a:solidFill>`;\n strXml += ` <a:ln w=\"${opts.lineDataSymbolLineSize}\" cap=\"flat\"><a:solidFill>${createColorElement(opts.lineDataSymbolLineColor || seriesColor)}</a:solidFill><a:prstDash val=\"solid\"/><a:round/></a:ln>`;\n strXml += ' <a:effectLst/>';\n strXml += ' </c:spPr>';\n strXml += '</c:marker>';\n }\n // Allow users with a single data set to pass their own array of colors (check for this using != ours)\n // Color chart bars various colors when >1 color\n // NOTE: `<c:dPt>` created with various colors will change PPT legend by design so each dataPt/color is an legend item!\n if ((chartType === CHART_TYPE.BAR || chartType === CHART_TYPE.BAR3D) &&\n data.length === 1 &&\n ((opts.chartColors && opts.chartColors !== BARCHART_COLORS && opts.chartColors.length > 1) || ((_a = opts.invertedColors) === null || _a === void 0 ? void 0 : _a.length))) {\n // Series Data Point colors\n obj.values.forEach((value, index) => {\n const arrColors = value < 0 ? opts.invertedColors || opts.chartColors || BARCHART_COLORS : opts.chartColors || [];\n strXml += ' <c:dPt>';\n strXml += ` <c:idx val=\"${index}\"/>`;\n strXml += ' <c:invertIfNegative val=\"0\"/>';\n strXml += ' <c:bubble3D val=\"0\"/>';\n strXml += ' <c:spPr>';\n if (opts.lineSize === 0) {\n strXml += '<a:ln><a:noFill/></a:ln>';\n }\n else if (chartType === CHART_TYPE.BAR) {\n strXml += '<a:solidFill>';\n strXml += ' <a:srgbClr val=\"' + arrColors[index % arrColors.length] + '\"/>';\n strXml += '</a:solidFill>';\n }\n else {\n strXml += '<a:ln>';\n strXml += ' <a:solidFill>';\n strXml += ' <a:srgbClr val=\"' + arrColors[index % arrColors.length] + '\"/>';\n strXml += ' </a:solidFill>';\n strXml += '</a:ln>';\n }\n strXml += createShadowElement(opts.shadow, DEF_SHAPE_SHADOW);\n strXml += ' </c:spPr>';\n strXml += ' </c:dPt>';\n });\n }\n // 2: \"Categories\"\n {\n strXml += '<c:cat>';\n if (opts.catLabelFormatCode) {\n // Use 'numRef' as catLabelFormatCode implies that we are expecting numbers here\n strXml += ' <c:numRef>';\n strXml += ` <c:f>Sheet1!$A$2:$A$${obj.labels[0].length + 1}</c:f>`;\n strXml += ' <c:numCache>';\n strXml += ' <c:formatCode>' + (opts.catLabelFormatCode || 'General') + '</c:formatCode>';\n strXml += ` <c:ptCount val=\"${obj.labels[0].length}\"/>`;\n obj.labels[0].forEach((label, idx) => (strXml += `<c:pt idx=\"${idx}\"><c:v>${encodeXmlEntities(label)}</c:v></c:pt>`));\n strXml += ' </c:numCache>';\n strXml += ' </c:numRef>';\n }\n else {\n strXml += ' <c:multiLvlStrRef>';\n strXml += ` <c:f>Sheet1!$A$2:$${getExcelColName(obj.labels.length)}$${obj.labels[0].length + 1}</c:f>`;\n strXml += ' <c:multiLvlStrCache>';\n strXml += ` <c:ptCount val=\"${obj.labels[0].length}\"/>`;\n obj.labels.forEach(labelsGroup => {\n strXml += '<c:lvl>';\n labelsGroup.forEach((label, idx) => (strXml += `<c:pt idx=\"${idx}\"><c:v>${encodeXmlEntities(label)}</c:v></c:pt>`));\n strXml += '</c:lvl>';\n });\n strXml += ' </c:multiLvlStrCache>';\n strXml += ' </c:multiLvlStrRef>';\n }\n strXml += '</c:cat>';\n }\n // 3: \"Values\"\n {\n strXml += '<c:val>';\n strXml += ' <c:numRef>';\n strXml += `<c:f>Sheet1!$${getExcelColName(obj._dataIndex + obj.labels.length + 1)}$2:$${getExcelColName(obj._dataIndex + obj.labels.length + 1)}$${obj.labels[0].length + 1}</c:f>`;\n strXml += ' <c:numCache>';\n strXml += ' <c:formatCode>' + (opts.valLabelFormatCode || opts.dataTableFormatCode || 'General') + '</c:formatCode>';\n strXml += ` <c:ptCount val=\"${obj.labels[0].length}\"/>`;\n obj.values.forEach((value, idx) => (strXml += `<c:pt idx=\"${idx}\"><c:v>${value || value === 0 ? value : ''}</c:v></c:pt>`));\n strXml += ' </c:numCache>';\n strXml += ' </c:numRef>';\n strXml += '</c:val>';\n }\n // Option: `smooth`\n if (chartType === CHART_TYPE.LINE)\n strXml += '<c:smooth val=\"' + (opts.lineSmooth ? '1' : '0') + '\"/>';\n // 4: Close \"SERIES\"\n strXml += '</c:ser>';\n });\n // 3: \"Data Labels\"\n {\n strXml += ' <c:dLbls>';\n strXml += ` <c:numFmt formatCode=\"${encodeXmlEntities(opts.dataLabelFormatCode) || 'General'}\" sourceLinked=\"0\"/>`;\n strXml += ' <c:txPr>';\n strXml += ' <a:bodyPr/>';\n strXml += ' <a:lstStyle/>';\n strXml += ' <a:p><a:pPr>';\n strXml += ` <a:defRPr b=\"${opts.dataLabelFontBold ? 1 : 0}\" i=\"${opts.dataLabelFontItalic ? 1 : 0}\" strike=\"noStrike\" sz=\"${Math.round((opts.dataLabelFontSize || DEF_FONT_SIZE) * 100)}\" u=\"none\">`;\n strXml += ' <a:solidFill>' + createColorElement(opts.dataLabelColor || DEF_FONT_COLOR) + '</a:solidFill>';\n strXml += ' <a:latin typeface=\"' + (opts.dataLabelFontFace || 'Arial') + '\"/>';\n strXml += ' </a:defRPr>';\n strXml += ' </a:pPr></a:p>';\n strXml += ' </c:txPr>';\n if (opts.dataLabelPosition)\n strXml += ' <c:dLblPos val=\"' + opts.dataLabelPosition + '\"/>';\n strXml += ' <c:showLegendKey val=\"0\"/>';\n strXml += ' <c:showVal val=\"' + (opts.showValue ? '1' : '0') + '\"/>';\n strXml += ' <c:showCatName val=\"0\"/>';\n strXml += ' <c:showSerName val=\"' + (opts.showSerName ? '1' : '0') + '\"/>';\n strXml += ' <c:showPercent val=\"0\"/>';\n strXml += ' <c:showBubbleSize val=\"0\"/>';\n strXml += ` <c:showLeaderLines val=\"${opts.showLeaderLines ? '1' : '0'}\"/>`;\n strXml += ' </c:dLbls>';\n }\n // 4: Add more chart options (gapWidth, line Marker, etc.)\n if (chartType === CHART_TYPE.BAR) {\n strXml += ` <c:gapWidth val=\"${opts.barGapWidthPct}\"/>`;\n strXml += ` <c:overlap val=\"${(opts.barGrouping || '').includes('tacked') ? 100 : opts.barOverlapPct ? opts.barOverlapPct : 0}\"/>`;\n }\n else if (chartType === CHART_TYPE.BAR3D) {\n strXml += ` <c:gapWidth val=\"${opts.barGapWidthPct}\"/>`;\n strXml += ` <c:gapDepth val=\"${opts.barGapDepthPct}\"/>`;\n strXml += ' <c:shape val=\"' + opts.bar3DShape + '\"/>';\n }\n else if (chartType === CHART_TYPE.LINE) {\n strXml += ' <c:marker val=\"1\"/>';\n }\n // 5: Add axisId (NOTE: order matters! (category comes first))\n strXml += `<c:axId val=\"${catAxisId}\"/><c:axId val=\"${valAxisId}\"/><c:axId val=\"${AXIS_ID_SERIES_PRIMARY}\"/>`;\n // 6: Close Chart tag\n strXml += `</c:${chartType}Chart>`;\n // end switch\n break;\n case CHART_TYPE.SCATTER:\n /*\n `data` = [\n { name:'X-Axis', values:[1,2,3,4,5,6,7,8,9,10,11,12] },\n { name:'Y-Value 1', values:[13, 20, 21, 25] },\n { name:'Y-Value 2', values:[ 1, 2, 5, 9] }\n ];\n */\n // 1: Start Chart\n strXml += '<c:' + chartType + 'Chart>';\n strXml += '<c:scatterStyle val=\"lineMarker\"/>';\n strXml += '<c:varyColors val=\"0\"/>';\n // 2: Series: (One for each Y-Axis)\n colorIndex = -1;\n data.filter((_obj, idx) => idx > 0).forEach((obj, idx) => {\n colorIndex++;\n strXml += '<c:ser>';\n strXml += ` <c:idx val=\"${idx}\"/>`;\n strXml += ` <c:order val=\"${idx}\"/>`;\n strXml += ' <c:tx>';\n strXml += ' <c:strRef>';\n strXml += ` <c:f>Sheet1!$${getExcelColName(idx + 2)}$1</c:f>`;\n strXml += ' <c:strCache><c:ptCount val=\"1\"/><c:pt idx=\"0\"><c:v>' + encodeXmlEntities(obj.name) + '</c:v></c:pt></c:strCache>';\n strXml += ' </c:strRef>';\n strXml += ' </c:tx>';\n // 'c:spPr': Fill, Border, Line, LineStyle (dash, etc.), Shadow\n strXml += ' <c:spPr>';\n {\n const tmpSerColor = opts.chartColors[colorIndex % opts.chartColors.length];\n if (tmpSerColor === 'transparent') {\n strXml += '<a:noFill/>';\n }\n else if (opts.chartColorsOpacity) {\n strXml += '<a:solidFill>' + createColorElement(tmpSerColor, '<a:alpha val=\"' + Math.round(opts.chartColorsOpacity * 1000).toString() + '\"/>') + '</a:solidFill>';\n }\n else {\n strXml += '<a:solidFill>' + createColorElement(tmpSerColor) + '</a:solidFill>';\n }\n if (opts.lineSize === 0) {\n strXml += '<a:ln><a:noFill/></a:ln>';\n }\n else {\n strXml += `<a:ln w=\"${valToPts(opts.lineSize)}\" cap=\"${createLineCap(opts.lineCap)}\"><a:solidFill>${createColorElement(tmpSerColor)}</a:solidFill>`;\n strXml += `<a:prstDash val=\"${opts.lineDash || 'solid'}\"/><a:round/></a:ln>`;\n }\n // Shadow\n strXml += createShadowElement(opts.shadow, DEF_SHAPE_SHADOW);\n }\n strXml += ' </c:spPr>';\n // 'c:marker' tag: `lineDataSymbol`\n {\n strXml += '<c:marker>';\n strXml += ' <c:symbol val=\"' + opts.lineDataSymbol + '\"/>';\n if (opts.lineDataSymbolSize) {\n // Defaults to \"auto\" otherwise (but this is usually too small, so there is a default)\n strXml += `<c:size val=\"${opts.lineDataSymbolSize}\"/>`;\n }\n strXml += '<c:spPr>';\n strXml += `<a:solidFill>${createColorElement(opts.chartColors[idx + 1 > opts.chartColors.length ? Math.floor(Math.random() * opts.chartColors.length) : idx])}</a:solidFill>`;\n strXml += `<a:ln w=\"${opts.lineDataSymbolLineSize}\" cap=\"flat\"><a:solidFill>${createColorElement(opts.lineDataSymbolLineColor || opts.chartColors[colorIndex % opts.chartColors.length])}</a:solidFill><a:prstDash val=\"solid\"/><a:round/></a:ln>`;\n strXml += '<a:effectLst/>';\n strXml += '</c:spPr>';\n strXml += '</c:marker>';\n }\n // Option: scatter data point labels\n if (opts.showLabel) {\n const chartUuid = getUuid('-xxxx-xxxx-xxxx-xxxxxxxxxxxx');\n if (obj.labels[0] && (opts.dataLabelFormatScatter === 'custom' || opts.dataLabelFormatScatter === 'customXY')) {\n strXml += '<c:dLbls>';\n obj.labels[0].forEach((label, idx) => {\n if (opts.dataLabelFormatScatter === 'custom' || opts.dataLabelFormatScatter === 'customXY') {\n strXml += ' <c:dLbl>';\n strXml += ` <c:idx val=\"${idx}\"/>`;\n strXml += ' <c:tx>';\n strXml += ' <c:rich>';\n strXml += ' <a:bodyPr>';\n strXml += ' <a:spAutoFit/>';\n strXml += ' </a:bodyPr>';\n strXml += ' <a:lstStyle/>';\n strXml += ' <a:p>';\n strXml += ' <a:pPr>';\n strXml += ' <a:defRPr/>';\n strXml += ' </a:pPr>';\n strXml += ' <a:r>';\n strXml += ' <a:rPr lang=\"' + (opts.lang || 'en-US') + '\" dirty=\"0\"/>';\n strXml += ' <a:t>' + encodeXmlEntities(label) + '</a:t>';\n strXml += ' </a:r>';\n // Apply XY values at end of custom label\n // Do not apply the values if the label was empty or just spaces\n // This allows for selective labelling where required\n if (opts.dataLabelFormatScatter === 'customXY' && !/^ *$/.test(label)) {\n strXml += ' <a:r>';\n strXml += ' <a:rPr lang=\"' + (opts.lang || 'en-US') + '\" baseline=\"0\" dirty=\"0\"/>';\n strXml += ' <a:t> (</a:t>';\n strXml += ' </a:r>';\n strXml += ' <a:fld id=\"{' + getUuid('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx') + '}\" type=\"XVALUE\">';\n strXml += ' <a:rPr lang=\"' + (opts.lang || 'en-US') + '\" baseline=\"0\"/>';\n strXml += ' <a:pPr>';\n strXml += ' <a:defRPr/>';\n strXml += ' </a:pPr>';\n strXml += ' <a:t>[' + encodeXmlEntities(obj.name) + '</a:t>';\n strXml += ' </a:fld>';\n strXml += ' <a:r>';\n strXml += ' <a:rPr lang=\"' + (opts.lang || 'en-US') + '\" baseline=\"0\" dirty=\"0\"/>';\n strXml += ' <a:t>, </a:t>';\n strXml += ' </a:r>';\n strXml += ' <a:fld id=\"{' + getUuid('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx') + '}\" type=\"YVALUE\">';\n strXml += ' <a:rPr lang=\"' + (opts.lang || 'en-US') + '\" baseline=\"0\"/>';\n strXml += ' <a:pPr>';\n strXml += ' <a:defRPr/>';\n strXml += ' </a:pPr>';\n strXml += ' <a:t>[' + encodeXmlEntities(obj.name) + ']</a:t>';\n strXml += ' </a:fld>';\n strXml += ' <a:r>';\n strXml += ' <a:rPr lang=\"' + (opts.lang || 'en-US') + '\" baseline=\"0\" dirty=\"0\"/>';\n strXml += ' <a:t>)</a:t>';\n strXml += ' </a:r>';\n strXml += ' <a:endParaRPr lang=\"' + (opts.lang || 'en-US') + '\" dirty=\"0\"/>';\n }\n strXml += ' </a:p>';\n strXml += ' </c:rich>';\n strXml += ' </c:tx>';\n strXml += ' <c:spPr>';\n strXml += ' <a:noFill/>';\n strXml += ' <a:ln>';\n strXml += ' <a:noFill/>';\n strXml += ' </a:ln>';\n strXml += ' <a:effectLst/>';\n strXml += ' </c:spPr>';\n if (opts.dataLabelPosition)\n strXml += ' <c:dLblPos val=\"' + opts.dataLabelPosition + '\"/>';\n strXml += ' <c:showLegendKey val=\"0\"/>';\n strXml += ' <c:showVal val=\"0\"/>';\n strXml += ' <c:showCatName val=\"0\"/>';\n strXml += ' <c:showSerName val=\"0\"/>';\n strXml += ' <c:showPercent val=\"0\"/>';\n strXml += ' <c:showBubbleSize val=\"0\"/>';\n strXml += ' <c:showLeaderLines val=\"1\"/>';\n strXml += ' <c:extLst>';\n strXml += ' <c:ext uri=\"{CE6537A1-D6FC-4f65-9D91-7224C49458BB}\" xmlns:c15=\"http://schemas.microsoft.com/office/drawing/2012/chart\"/>';\n strXml += ' <c:ext uri=\"{C3380CC4-5D6E-409C-BE32-E72D297353CC}\" xmlns:c16=\"http://schemas.microsoft.com/office/drawing/2014/chart\">';\n strXml += ` <c16:uniqueId val=\"{${'00000000'.substring(0, 8 - (idx + 1).toString().length).toString()}${idx + 1}${chartUuid}}\"/>`;\n strXml += ' </c:ext>';\n strXml += ' </c:extLst>';\n strXml += '</c:dLbl>';\n }\n });\n strXml += '</c:dLbls>';\n }\n if (opts.dataLabelFormatScatter === 'XY') {\n strXml += '<c:dLbls>';\n strXml += ' <c:spPr>';\n strXml += ' <a:noFill/>';\n strXml += ' <a:ln>';\n strXml += ' <a:noFill/>';\n strXml += ' </a:ln>';\n strXml += ' <a:effectLst/>';\n strXml += ' </c:spPr>';\n strXml += ' <c:txPr>';\n strXml += ' <a:bodyPr>';\n strXml += ' <a:spAutoFit/>';\n strXml += ' </a:bodyPr>';\n strXml += ' <a:lstStyle/>';\n strXml += ' <a:p>';\n strXml += ' <a:pPr>';\n strXml += ' <a:defRPr/>';\n strXml += ' </a:pPr>';\n strXml += ' <a:endParaRPr lang=\"en-US\"/>';\n strXml += ' </a:p>';\n strXml += ' </c:txPr>';\n if (opts.dataLabelPosition)\n strXml += ' <c:dLblPos val=\"' + opts.dataLabelPosition + '\"/>';\n strXml += ' <c:showLegendKey val=\"0\"/>';\n strXml += ` <c:showVal val=\"${opts.showLabel ? '1' : '0'}\"/>`;\n strXml += ` <c:showCatName val=\"${opts.showLabel ? '1' : '0'}\"/>`;\n strXml += ` <c:showSerName val=\"${opts.showSerName ? '1' : '0'}\"/>`;\n strXml += ' <c:showPercent val=\"0\"/>';\n strXml += ' <c:showBubbleSize val=\"0\"/>';\n strXml += ' <c:extLst>';\n strXml += ' <c:ext uri=\"{CE6537A1-D6FC-4f65-9D91-7224C49458BB}\" xmlns:c15=\"http://schemas.microsoft.com/office/drawing/2012/chart\">';\n strXml += ' <c15:showLeaderLines val=\"1\"/>';\n strXml += ' </c:ext>';\n strXml += ' </c:extLst>';\n strXml += '</c:dLbls>';\n }\n }\n // Color bar chart bars various colors\n // Allow users with a single data set to pass their own array of colors (check for this using != ours)\n if (data.length === 1 && opts.chartColors !== BARCHART_COLORS) {\n // Series Data Point colors\n obj.values.forEach((value, index) => {\n const arrColors = value < 0 ? opts.invertedColors || opts.chartColors || BARCHART_COLORS : opts.chartColors || [];\n strXml += ' <c:dPt>';\n strXml += ` <c:idx val=\"${index}\"/>`;\n strXml += ' <c:invertIfNegative val=\"0\"/>';\n strXml += ' <c:bubble3D val=\"0\"/>';\n strXml += ' <c:spPr>';\n if (opts.lineSize === 0) {\n strXml += '<a:ln><a:noFill/></a:ln>';\n }\n else {\n strXml += '<a:solidFill>';\n strXml += ' <a:srgbClr val=\"' + arrColors[index % arrColors.length] + '\"/>';\n strXml += '</a:solidFill>';\n }\n strXml += createShadowElement(opts.shadow, DEF_SHAPE_SHADOW);\n strXml += ' </c:spPr>';\n strXml += ' </c:dPt>';\n });\n }\n // 3: \"Values\": Scatter Chart has 2: `xVal` and `yVal`\n {\n // X-Axis is always the same\n strXml += '<c:xVal>';\n strXml += ' <c:numRef>';\n strXml += ` <c:f>Sheet1!$A$2:$A$${data[0].values.length + 1}</c:f>`;\n strXml += ' <c:numCache>';\n strXml += ' <c:formatCode>General</c:formatCode>';\n strXml += ` <c:ptCount val=\"${data[0].values.length}\"/>`;\n data[0].values.forEach((value, idx) => {\n strXml += `<c:pt idx=\"${idx}\"><c:v>${value || value === 0 ? value : ''}</c:v></c:pt>`;\n });\n strXml += ' </c:numCache>';\n strXml += ' </c:numRef>';\n strXml += '</c:xVal>';\n // Y-Axis vals are this object's `values`\n strXml += '<c:yVal>';\n strXml += ' <c:numRef>';\n strXml += ` <c:f>Sheet1!$${getExcelColName(idx + 2)}$2:$${getExcelColName(idx + 2)}$${data[0].values.length + 1}</c:f>`;\n strXml += ' <c:numCache>';\n strXml += ' <c:formatCode>General</c:formatCode>';\n // NOTE: Use pt count and iterate over data[0] (X-Axis) as user can have more values than data (eg: timeline where only first few months are populated)\n strXml += ` <c:ptCount val=\"${data[0].values.length}\"/>`;\n data[0].values.forEach((_value, idx) => {\n strXml += `<c:pt idx=\"${idx}\"><c:v>${obj.values[idx] || obj.values[idx] === 0 ? obj.values[idx] : ''}</c:v></c:pt>`;\n });\n strXml += ' </c:numCache>';\n strXml += ' </c:numRef>';\n strXml += '</c:yVal>';\n }\n // Option: `smooth`\n strXml += '<c:smooth val=\"' + (opts.lineSmooth ? '1' : '0') + '\"/>';\n // 4: Close \"SERIES\"\n strXml += '</c:ser>';\n });\n // 3: Data Labels\n {\n strXml += ' <c:dLbls>';\n strXml += ` <c:numFmt formatCode=\"${encodeXmlEntities(opts.dataLabelFormatCode) || 'General'}\" sourceLinked=\"0\"/>`;\n strXml += ' <c:txPr>';\n strXml += ' <a:bodyPr/>';\n strXml += ' <a:lstStyle/>';\n strXml += ' <a:p><a:pPr>';\n strXml += ` <a:defRPr b=\"${opts.dataLabelFontBold ? '1' : '0'}\" i=\"${opts.dataLabelFontItalic ? '1' : '0'}\" strike=\"noStrike\" sz=\"${Math.round((opts.dataLabelFontSize || DEF_FONT_SIZE) * 100)}\" u=\"none\">`;\n strXml += ' <a:solidFill>' + createColorElement(opts.dataLabelColor || DEF_FONT_COLOR) + '</a:solidFill>';\n strXml += ' <a:latin typeface=\"' + (opts.dataLabelFontFace || 'Arial') + '\"/>';\n strXml += ' </a:defRPr>';\n strXml += ' </a:pPr></a:p>';\n strXml += ' </c:txPr>';\n if (opts.dataLabelPosition)\n strXml += ' <c:dLblPos val=\"' + opts.dataLabelPosition + '\"/>';\n strXml += ' <c:showLegendKey val=\"0\"/>';\n strXml += ' <c:showVal val=\"' + (opts.showValue ? '1' : '0') + '\"/>';\n strXml += ' <c:showCatName val=\"0\"/>';\n strXml += ' <c:showSerName val=\"' + (opts.showSerName ? '1' : '0') + '\"/>';\n strXml += ' <c:showPercent val=\"0\"/>';\n strXml += ' <c:showBubbleSize val=\"0\"/>';\n strXml += ' </c:dLbls>';\n }\n // 4: Add axis Id (NOTE: order matters! - category comes first)\n strXml += `<c:axId val=\"${catAxisId}\"/><c:axId val=\"${valAxisId}\"/>`;\n // 5: Close Chart tag\n strXml += '</c:' + chartType + 'Chart>';\n // end switch\n break;\n case CHART_TYPE.BUBBLE:\n case CHART_TYPE.BUBBLE3D:\n /*\n `data` = [\n { name:'X-Axis', values:[1,2,3,4,5,6,7,8,9,10,11,12] },\n { name:'Y-Values 1', values:[13, 20, 21, 25], sizes:[10, 5, 20, 15] },\n { name:'Y-Values 2', values:[ 1, 2, 5, 9], sizes:[ 5, 3, 9, 3] }\n ];\n */\n // 1: Start Chart\n strXml += '<c:bubbleChart>';\n strXml += '<c:varyColors val=\"0\"/>';\n // 2: Series: (One for each Y-Axis)\n colorIndex = -1;\n data.filter((_obj, idx) => idx > 0).forEach((obj, idx) => {\n colorIndex++;\n strXml += '<c:ser>';\n strXml += ` <c:idx val=\"${idx}\"/>`;\n strXml += ` <c:order val=\"${idx}\"/>`;\n // A: `<c:tx>`\n strXml += ' <c:tx>';\n strXml += ' <c:strRef>';\n strXml += ' <c:f>Sheet1!$' + getExcelColName(idxColLtr + 1) + '$1</c:f>';\n strXml += ' <c:strCache><c:ptCount val=\"1\"/><c:pt idx=\"0\"><c:v>' + encodeXmlEntities(obj.name) + '</c:v></c:pt></c:strCache>';\n strXml += ' </c:strRef>';\n strXml += ' </c:tx>';\n // B: '<c:spPr>': Fill, Border, Line, LineStyle (dash, etc.), Shadow\n {\n strXml += '<c:spPr>';\n const tmpSerColor = opts.chartColors[colorIndex % opts.chartColors.length];\n if (tmpSerColor === 'transparent') {\n strXml += '<a:noFill/>';\n }\n else if (opts.chartColorsOpacity) {\n strXml += `<a:solidFill>${createColorElement(tmpSerColor, '<a:alpha val=\"' + Math.round(opts.chartColorsOpacity * 1000).toString() + '\"/>')}</a:solidFill>`;\n }\n else {\n strXml += '<a:solidFill>' + createColorElement(tmpSerColor) + '</a:solidFill>';\n }\n if (opts.lineSize === 0) {\n strXml += '<a:ln><a:noFill/></a:ln>';\n }\n else if (opts.dataBorder) {\n strXml += `<a:ln w=\"${valToPts(opts.dataBorder.pt)}\" cap=\"flat\"><a:solidFill>${createColorElement(opts.dataBorder.color)}</a:solidFill><a:prstDash val=\"solid\"/><a:round/></a:ln>`;\n }\n else {\n strXml += `<a:ln w=\"${valToPts(opts.lineSize)}\" cap=\"flat\"><a:solidFill>${createColorElement(tmpSerColor)}</a:solidFill>`;\n strXml += `<a:prstDash val=\"${opts.lineDash || 'solid'}\"/><a:round/></a:ln>`;\n }\n // Shadow\n strXml += createShadowElement(opts.shadow, DEF_SHAPE_SHADOW);\n strXml += '</c:spPr>';\n }\n // C: '<c:dLbls>' \"Data Labels\"\n // Let it be defaulted for now\n // D: '<c:xVal>'/'<c:yVal>' \"Values\": Scatter Chart has 2: `xVal` and `yVal`\n {\n // X-Axis is always the same\n strXml += '<c:xVal>';\n strXml += ' <c:numRef>';\n strXml += ` <c:f>Sheet1!$A$2:$A$${data[0].values.length + 1}</c:f>`;\n strXml += ' <c:numCache>';\n strXml += ' <c:formatCode>General</c:formatCode>';\n strXml += ` <c:ptCount val=\"${data[0].values.length}\"/>`;\n data[0].values.forEach((value, idx) => {\n strXml += `<c:pt idx=\"${idx}\"><c:v>${value || value === 0 ? value : ''}</c:v></c:pt>`;\n });\n strXml += ' </c:numCache>';\n strXml += ' </c:numRef>';\n strXml += '</c:xVal>';\n // Y-Axis vals are this object's `values`\n strXml += '<c:yVal>';\n strXml += ' <c:numRef>';\n strXml += `<c:f>Sheet1!$${getExcelColName(idxColLtr + 1)}$2:$${getExcelColName(idxColLtr + 1)}$${data[0].values.length + 1}</c:f>`;\n idxColLtr++;\n strXml += ' <c:numCache>';\n strXml += ' <c:formatCode>General</c:formatCode>';\n // NOTE: Use pt count and iterate over data[0] (X-Axis) as user can have more values than data (eg: timeline where only first few months are populated)\n strXml += ` <c:ptCount val=\"${data[0].values.length}\"/>`;\n data[0].values.forEach((_value, idx) => {\n strXml += `<c:pt idx=\"${idx}\"><c:v>${obj.values[idx] || obj.values[idx] === 0 ? obj.values[idx] : ''}</c:v></c:pt>`;\n });\n strXml += ' </c:numCache>';\n strXml += ' </c:numRef>';\n strXml += '</c:yVal>';\n }\n // E: '<c:bubbleSize>'\n strXml += ' <c:bubbleSize>';\n strXml += ' <c:numRef>';\n strXml += `<c:f>Sheet1!$${getExcelColName(idxColLtr + 1)}$2:$${getExcelColName(idxColLtr + 1)}$${obj.sizes.length + 1}</c:f>`;\n idxColLtr++;\n strXml += ' <c:numCache>';\n strXml += ' <c:formatCode>General</c:formatCode>';\n strXml += ` <c:ptCount val=\"${obj.sizes.length}\"/>`;\n obj.sizes.forEach((value, idx) => {\n strXml += `<c:pt idx=\"${idx}\"><c:v>${value || ''}</c:v></c:pt>`;\n });\n strXml += ' </c:numCache>';\n strXml += ' </c:numRef>';\n strXml += ' </c:bubbleSize>';\n strXml += ' <c:bubble3D val=\"' + (chartType === CHART_TYPE.BUBBLE3D ? '1' : '0') + '\"/>';\n // F: Close \"SERIES\"\n strXml += '</c:ser>';\n });\n // 3: Data Labels\n {\n strXml += '<c:dLbls>';\n strXml += `<c:numFmt formatCode=\"${encodeXmlEntities(opts.dataLabelFormatCode) || 'General'}\" sourceLinked=\"0\"/>`;\n strXml += '<c:txPr><a:bodyPr/><a:lstStyle/><a:p><a:pPr>';\n strXml += `<a:defRPr b=\"${opts.dataLabelFontBold ? 1 : 0}\" i=\"${opts.dataLabelFontItalic ? 1 : 0}\" strike=\"noStrike\" sz=\"${Math.round(Math.round(opts.dataLabelFontSize || DEF_FONT_SIZE) * 100)}\" u=\"none\">`;\n strXml += `<a:solidFill>${createColorElement(opts.dataLabelColor || DEF_FONT_COLOR)}</a:solidFill>`;\n strXml += `<a:latin typeface=\"${opts.dataLabelFontFace || 'Arial'}\"/>`;\n strXml += '</a:defRPr></a:pPr></a:p></c:txPr>';\n if (opts.dataLabelPosition)\n strXml += `<c:dLblPos val=\"${opts.dataLabelPosition}\"/>`;\n strXml += '<c:showLegendKey val=\"0\"/>';\n strXml += `<c:showVal val=\"${opts.showValue ? '1' : '0'}\"/>`;\n strXml += `<c:showCatName val=\"0\"/><c:showSerName val=\"${opts.showSerName ? '1' : '0'}\"/><c:showPercent val=\"0\"/><c:showBubbleSize val=\"0\"/>`;\n strXml += '<c:extLst>';\n strXml += ' <c:ext uri=\"{CE6537A1-D6FC-4f65-9D91-7224C49458BB}\" xmlns:c15=\"http://schemas.microsoft.com/office/drawing/2012/chart\">';\n strXml += ' <c15:showLeaderLines val=\"' + (opts.showLeaderLines ? '1' : '0') + '\"/>';\n strXml += ' </c:ext>';\n strXml += '</c:extLst>';\n strXml += '</c:dLbls>';\n }\n // 4: Bubble options\n // strXml += ' <c:bubbleScale val=\"100\"/>';\n // strXml += ' <c:showNegBubbles val=\"0\"/>';\n // Commented out to let it default to PPT until we create options\n // 5: AxisId (NOTE: order matters! (category comes first))\n strXml += `<c:axId val=\"${catAxisId}\"/><c:axId val=\"${valAxisId}\"/>`;\n // 6: Close Chart tag\n strXml += '</c:bubbleChart>';\n // end switch\n break;\n case CHART_TYPE.DOUGHNUT:\n case CHART_TYPE.PIE:\n // Use the same let name so code blocks from barChart are interchangeable\n optsChartData = data[0];\n /* EX:\n data: [\n {\n name: 'Project Status',\n labels: ['Red', 'Amber', 'Green', 'Unknown'],\n values: [10, 20, 38, 2]\n }\n ]\n */\n // 1: Start Chart\n strXml += '<c:' + chartType + 'Chart>';\n strXml += ' <c:varyColors val=\"1\"/>';\n strXml += '<c:ser>';\n strXml += ' <c:idx val=\"0\"/>';\n strXml += ' <c:order val=\"0\"/>';\n strXml += ' <c:tx>';\n strXml += ' <c:strRef>';\n strXml += ' <c:f>Sheet1!$B$1</c:f>';\n strXml += ' <c:strCache>';\n strXml += ' <c:ptCount val=\"1\"/>';\n strXml += ' <c:pt idx=\"0\"><c:v>' + encodeXmlEntities(optsChartData.name) + '</c:v></c:pt>';\n strXml += ' </c:strCache>';\n strXml += ' </c:strRef>';\n strXml += ' </c:tx>';\n strXml += ' <c:spPr>';\n strXml += ' <a:solidFill><a:schemeClr val=\"accent1\"/></a:solidFill>';\n strXml += ' <a:ln w=\"9525\" cap=\"flat\"><a:solidFill><a:srgbClr val=\"F9F9F9\"/></a:solidFill><a:prstDash val=\"solid\"/><a:round/></a:ln>';\n if (opts.dataNoEffects) {\n strXml += '<a:effectLst/>';\n }\n else {\n strXml += createShadowElement(opts.shadow, DEF_SHAPE_SHADOW);\n }\n strXml += ' </c:spPr>';\n // strXml += '<c:explosion val=\"0\"/>'\n // 2: \"Data Point\" block for every data row\n optsChartData.labels[0].forEach((_label, idx) => {\n strXml += '<c:dPt>';\n strXml += ` <c:idx val=\"${idx}\"/>`;\n strXml += ' <c:bubble3D val=\"0\"/>';\n strXml += ' <c:spPr>';\n strXml += `<a:solidFill>${createColorElement(opts.chartColors[idx + 1 > opts.chartColors.length ? Math.floor(Math.random() * opts.chartColors.length) : idx])}</a:solidFill>`;\n if (opts.dataBorder) {\n strXml += `<a:ln w=\"${valToPts(opts.dataBorder.pt)}\" cap=\"flat\"><a:solidFill>${createColorElement(opts.dataBorder.color)}</a:solidFill><a:prstDash val=\"solid\"/><a:round/></a:ln>`;\n }\n strXml += createShadowElement(opts.shadow, DEF_SHAPE_SHADOW);\n strXml += ' </c:spPr>';\n strXml += '</c:dPt>';\n });\n // 3: \"Data Label\" block for every data Label\n strXml += '<c:dLbls>';\n optsChartData.labels[0].forEach((_label, idx) => {\n strXml += '<c:dLbl>';\n strXml += ` <c:idx val=\"${idx}\"/>`;\n strXml += ` <c:numFmt formatCode=\"${encodeXmlEntities(opts.dataLabelFormatCode) || 'General'}\" sourceLinked=\"0\"/>`;\n strXml += ' <c:spPr/><c:txPr>';\n strXml += ' <a:bodyPr/><a:lstStyle/>';\n strXml += ' <a:p><a:pPr>';\n strXml += ` <a:defRPr sz=\"${Math.round((opts.dataLabelFontSize || DEF_FONT_SIZE) * 100)}\" b=\"${opts.dataLabelFontBold ? 1 : 0}\" i=\"${opts.dataLabelFontItalic ? 1 : 0}\" u=\"none\" strike=\"noStrike\">`;\n strXml += ' <a:solidFill>' + createColorElement(opts.dataLabelColor || DEF_FONT_COLOR) + '</a:solidFill>';\n strXml += ` <a:latin typeface=\"${opts.dataLabelFontFace || 'Arial'}\"/>`;\n strXml += ' </a:defRPr>';\n strXml += ' </a:pPr></a:p>';\n strXml += ' </c:txPr>';\n if (chartType === CHART_TYPE.PIE && opts.dataLabelPosition)\n strXml += `<c:dLblPos val=\"${opts.dataLabelPosition}\"/>`;\n strXml += ' <c:showLegendKey val=\"0\"/>';\n strXml += ' <c:showVal val=\"' + (opts.showValue ? '1' : '0') + '\"/>';\n strXml += ' <c:showCatName val=\"' + (opts.showLabel ? '1' : '0') + '\"/>';\n strXml += ' <c:showSerName val=\"' + (opts.showSerName ? '1' : '0') + '\"/>';\n strXml += ' <c:showPercent val=\"' + (opts.showPercent ? '1' : '0') + '\"/>';\n strXml += ' <c:showBubbleSize val=\"0\"/>';\n strXml += ' </c:dLbl>';\n });\n strXml += ` <c:numFmt formatCode=\"${encodeXmlEntities(opts.dataLabelFormatCode) || 'General'}\" sourceLinked=\"0\"/>`;\n strXml += ' <c:txPr>';\n strXml += ' <a:bodyPr/>';\n strXml += ' <a:lstStyle/>';\n strXml += ' <a:p>';\n strXml += ' <a:pPr>';\n strXml += ` <a:defRPr sz=\"1800\" b=\"${opts.dataLabelFontBold ? '1' : '0'}\" i=\"${opts.dataLabelFontItalic ? '1' : '0'}\" u=\"none\" strike=\"noStrike\">`;\n strXml += ' <a:solidFill><a:srgbClr val=\"000000\"/></a:solidFill><a:latin typeface=\"Arial\"/>';\n strXml += ' </a:defRPr>';\n strXml += ' </a:pPr>';\n strXml += ' </a:p>';\n strXml += ' </c:txPr>';\n strXml += chartType === CHART_TYPE.PIE ? '<c:dLblPos val=\"ctr\"/>' : '';\n strXml += ' <c:showLegendKey val=\"0\"/>';\n strXml += ' <c:showVal val=\"0\"/>';\n strXml += ' <c:showCatName val=\"1\"/>';\n strXml += ' <c:showSerName val=\"0\"/>';\n strXml += ' <c:showPercent val=\"1\"/>';\n strXml += ' <c:showBubbleSize val=\"0\"/>';\n strXml += ` <c:showLeaderLines val=\"${opts.showLeaderLines ? '1' : '0'}\"/>`;\n strXml += '</c:dLbls>';\n // 2: \"Categories\"\n strXml += '<c:cat>';\n strXml += ' <c:strRef>';\n strXml += ` <c:f>Sheet1!$A$2:$A$${optsChartData.labels[0].length + 1}</c:f>`;\n strXml += ' <c:strCache>';\n strXml += ` <c:ptCount val=\"${optsChartData.labels[0].length}\"/>`;\n optsChartData.labels[0].forEach((label, idx) => {\n strXml += `<c:pt idx=\"${idx}\"><c:v>${encodeXmlEntities(label)}</c:v></c:pt>`;\n });\n strXml += ' </c:strCache>';\n strXml += ' </c:strRef>';\n strXml += '</c:cat>';\n // 3: Create vals\n strXml += ' <c:val>';\n strXml += ' <c:numRef>';\n strXml += ` <c:f>Sheet1!$B$2:$B$${optsChartData.labels[0].length + 1}</c:f>`;\n strXml += ' <c:numCache>';\n strXml += ` <c:ptCount val=\"${optsChartData.labels[0].length}\"/>`;\n optsChartData.values.forEach((value, idx) => {\n strXml += `<c:pt idx=\"${idx}\"><c:v>${value || value === 0 ? value : ''}</c:v></c:pt>`;\n });\n strXml += ' </c:numCache>';\n strXml += ' </c:numRef>';\n strXml += ' </c:val>';\n // 4: Close \"SERIES\"\n strXml += ' </c:ser>';\n strXml += ` <c:firstSliceAng val=\"${opts.firstSliceAng ? Math.round(opts.firstSliceAng) : 0}\"/>`;\n if (chartType === CHART_TYPE.DOUGHNUT)\n strXml += `<c:holeSize val=\"${typeof opts.holeSize === 'number' ? opts.holeSize : '50'}\"/>`;\n strXml += '</c:' + chartType + 'Chart>';\n // Done with Doughnut/Pie\n break;\n default:\n strXml += '';\n break;\n }\n return strXml;\n}\n/**\n * Create Category axis\n * @param {IChartOptsLib} opts - chart options\n * @param {string} axisId - value\n * @param {string} valAxisId - value\n * @return {string} XML\n */\nfunction makeCatAxis(opts, axisId, valAxisId) {\n let strXml = '';\n // Build cat axis tag\n // NOTE: Scatter and Bubble chart need two Val axises as they display numbers on x axis\n if (opts._type === CHART_TYPE.SCATTER || opts._type === CHART_TYPE.BUBBLE || opts._type === CHART_TYPE.BUBBLE3D) {\n strXml += '<c:valAx>';\n }\n else {\n strXml += '<c:' + (opts.catLabelFormatCode ? 'dateAx' : 'catAx') + '>';\n }\n strXml += ' <c:axId val=\"' + axisId + '\"/>';\n strXml += ' <c:scaling>';\n strXml += '<c:orientation val=\"' + (opts.catAxisOrientation || (opts.barDir === 'col' ? 'minMax' : 'minMax')) + '\"/>';\n if (opts.catAxisMaxVal || opts.catAxisMaxVal === 0)\n strXml += `<c:max val=\"${opts.catAxisMaxVal}\"/>`;\n if (opts.catAxisMinVal || opts.catAxisMinVal === 0)\n strXml += `<c:min val=\"${opts.catAxisMinVal}\"/>`;\n strXml += '</c:scaling>';\n strXml += ' <c:delete val=\"' + (opts.catAxisHidden ? '1' : '0') + '\"/>';\n strXml += ' <c:axPos val=\"' + (opts.barDir === 'col' ? 'b' : 'l') + '\"/>';\n strXml += opts.catGridLine.style !== 'none' ? createGridLineElement(opts.catGridLine) : '';\n // '<c:title>' comes between '</c:majorGridlines>' and '<c:numFmt>'\n if (opts.showCatAxisTitle) {\n strXml += genXmlTitle({\n color: opts.catAxisTitleColor,\n fontFace: opts.catAxisTitleFontFace,\n fontSize: opts.catAxisTitleFontSize,\n titleRotate: opts.catAxisTitleRotate,\n title: opts.catAxisTitle || 'Axis Title',\n });\n }\n // NOTE: Adding Val Axis Formatting if scatter or bubble charts\n if (opts._type === CHART_TYPE.SCATTER || opts._type === CHART_TYPE.BUBBLE || opts._type === CHART_TYPE.BUBBLE3D) {\n strXml += ' <c:numFmt formatCode=\"' + (opts.valAxisLabelFormatCode ? encodeXmlEntities(opts.valAxisLabelFormatCode) : 'General') + '\" sourceLinked=\"1\"/>';\n }\n else {\n strXml += ' <c:numFmt formatCode=\"' + (encodeXmlEntities(opts.catLabelFormatCode) || 'General') + '\" sourceLinked=\"1\"/>';\n }\n if (opts._type === CHART_TYPE.SCATTER) {\n strXml += ' <c:majorTickMark val=\"none\"/>';\n strXml += ' <c:minorTickMark val=\"none\"/>';\n strXml += ' <c:tickLblPos val=\"nextTo\"/>';\n }\n else {\n strXml += ' <c:majorTickMark val=\"' + (opts.catAxisMajorTickMark || 'out') + '\"/>';\n strXml += ' <c:minorTickMark val=\"' + (opts.catAxisMinorTickMark || 'none') + '\"/>';\n strXml += ' <c:tickLblPos val=\"' + (opts.catAxisLabelPos || (opts.barDir === 'col' ? 'low' : 'nextTo')) + '\"/>';\n }\n strXml += ' <c:spPr>';\n strXml += ` <a:ln w=\"${opts.catAxisLineSize ? valToPts(opts.catAxisLineSize) : ONEPT}\" cap=\"flat\">`;\n strXml += !opts.catAxisLineShow ? '<a:noFill/>' : '<a:solidFill>' + createColorElement(opts.catAxisLineColor || DEF_CHART_GRIDLINE.color) + '</a:solidFill>';\n strXml += ' <a:prstDash val=\"' + (opts.catAxisLineStyle || 'solid') + '\"/>';\n strXml += ' <a:round/>';\n strXml += ' </a:ln>';\n strXml += ' </c:spPr>';\n strXml += ' <c:txPr>';\n if (opts.catAxisLabelRotate) {\n strXml += `<a:bodyPr rot=\"${convertRotationDegrees(opts.catAxisLabelRotate)}\"/>`;\n }\n else {\n // NOTE: don't specify \"`rot=0\" - that way the object will be auto behavior\n strXml += '<a:bodyPr/>';\n }\n strXml += ' <a:lstStyle/>';\n strXml += ' <a:p>';\n strXml += ' <a:pPr>';\n strXml += ` <a:defRPr sz=\"${Math.round((opts.catAxisLabelFontSize || DEF_FONT_SIZE) * 100)}\" b=\"${opts.catAxisLabelFontBold ? 1 : 0}\" i=\"${opts.catAxisLabelFontItalic ? 1 : 0}\" u=\"none\" strike=\"noStrike\">`;\n strXml += ' <a:solidFill>' + createColorElement(opts.catAxisLabelColor || DEF_FONT_COLOR) + '</a:solidFill>';\n strXml += ' <a:latin typeface=\"' + (opts.catAxisLabelFontFace || 'Arial') + '\"/>';\n strXml += ' </a:defRPr>';\n strXml += ' </a:pPr>';\n strXml += ' <a:endParaRPr lang=\"' + (opts.lang || 'en-US') + '\"/>';\n strXml += ' </a:p>';\n strXml += ' </c:txPr>';\n strXml += ' <c:crossAx val=\"' + valAxisId + '\"/>';\n strXml += ` <c:${typeof opts.valAxisCrossesAt === 'number' ? 'crossesAt' : 'crosses'} val=\"${opts.valAxisCrossesAt || 'autoZero'}\"/>`;\n strXml += ' <c:auto val=\"1\"/>';\n strXml += ' <c:lblAlgn val=\"ctr\"/>';\n strXml += ` <c:noMultiLvlLbl val=\"${opts.catAxisMultiLevelLabels ? 0 : 1}\"/>`;\n if (opts.catAxisLabelFrequency)\n strXml += ' <c:tickLblSkip val=\"' + opts.catAxisLabelFrequency + '\"/>';\n // Issue#149: PPT will auto-adjust these as needed after calcing the date bounds, so we only include them when specified by user\n // Allow major and minor units to be set for double value axis charts\n if (opts.catLabelFormatCode || opts._type === CHART_TYPE.SCATTER || opts._type === CHART_TYPE.BUBBLE || opts._type === CHART_TYPE.BUBBLE3D) {\n if (opts.catLabelFormatCode) {\n ['catAxisBaseTimeUnit', 'catAxisMajorTimeUnit', 'catAxisMinorTimeUnit'].forEach(opt => {\n // Validate input as poorly chosen/garbage options will cause chart corruption and it wont render at all!\n if (opts[opt] && (typeof opts[opt] !== 'string' || !['days', 'months', 'years'].includes(opts[opt].toLowerCase()))) {\n console.warn(`\"${opt}\" must be one of: 'days','months','years' !`);\n opts[opt] = null;\n }\n });\n if (opts.catAxisBaseTimeUnit)\n strXml += '<c:baseTimeUnit val=\"' + opts.catAxisBaseTimeUnit.toLowerCase() + '\"/>';\n if (opts.catAxisMajorTimeUnit)\n strXml += '<c:majorTimeUnit val=\"' + opts.catAxisMajorTimeUnit.toLowerCase() + '\"/>';\n if (opts.catAxisMinorTimeUnit)\n strXml += '<c:minorTimeUnit val=\"' + opts.catAxisMinorTimeUnit.toLowerCase() + '\"/>';\n }\n if (opts.catAxisMajorUnit)\n strXml += `<c:majorUnit val=\"${opts.catAxisMajorUnit}\"/>`;\n if (opts.catAxisMinorUnit)\n strXml += `<c:minorUnit val=\"${opts.catAxisMinorUnit}\"/>`;\n }\n // Close cat axis tag\n // NOTE: Added closing tag of val or cat axis based on chart type\n if (opts._type === CHART_TYPE.SCATTER || opts._type === CHART_TYPE.BUBBLE || opts._type === CHART_TYPE.BUBBLE3D) {\n strXml += '</c:valAx>';\n }\n else {\n strXml += '</c:' + (opts.catLabelFormatCode ? 'dateAx' : 'catAx') + '>';\n }\n return strXml;\n}\n/**\n * Create Value Axis (Used by `bar3D`)\n * @param {IChartOptsLib} opts - chart options\n * @param {string} valAxisId - value\n * @return {string} XML\n */\nfunction makeValAxis(opts, valAxisId) {\n let axisPos = valAxisId === AXIS_ID_VALUE_PRIMARY ? (opts.barDir === 'col' ? 'l' : 'b') : opts.barDir !== 'col' ? 'r' : 't';\n if (valAxisId === AXIS_ID_VALUE_SECONDARY)\n axisPos = 'r'; // default behavior for PPT is showing 2nd val axis on right (primary axis on left)\n const crossAxId = valAxisId === AXIS_ID_VALUE_PRIMARY ? AXIS_ID_CATEGORY_PRIMARY : AXIS_ID_CATEGORY_SECONDARY;\n let strXml = '';\n strXml += '<c:valAx>';\n strXml += ' <c:axId val=\"' + valAxisId + '\"/>';\n strXml += ' <c:scaling>';\n if (opts.valAxisLogScaleBase)\n strXml += `<c:logBase val=\"${opts.valAxisLogScaleBase}\"/>`;\n strXml += '<c:orientation val=\"' + (opts.valAxisOrientation || (opts.barDir === 'col' ? 'minMax' : 'minMax')) + '\"/>';\n if (opts.valAxisMaxVal || opts.valAxisMaxVal === 0)\n strXml += `<c:max val=\"${opts.valAxisMaxVal}\"/>`;\n if (opts.valAxisMinVal || opts.valAxisMinVal === 0)\n strXml += `<c:min val=\"${opts.valAxisMinVal}\"/>`;\n strXml += ' </c:scaling>';\n strXml += ` <c:delete val=\"${opts.valAxisHidden ? 1 : 0}\"/>`;\n strXml += ' <c:axPos val=\"' + axisPos + '\"/>';\n if (opts.valGridLine.style !== 'none')\n strXml += createGridLineElement(opts.valGridLine);\n // '<c:title>' comes between '</c:majorGridlines>' and '<c:numFmt>'\n if (opts.showValAxisTitle) {\n strXml += genXmlTitle({\n color: opts.valAxisTitleColor,\n fontFace: opts.valAxisTitleFontFace,\n fontSize: opts.valAxisTitleFontSize,\n titleRotate: opts.valAxisTitleRotate,\n title: opts.valAxisTitle || 'Axis Title',\n });\n }\n strXml += `<c:numFmt formatCode=\"${opts.valAxisLabelFormatCode ? encodeXmlEntities(opts.valAxisLabelFormatCode) : 'General'}\" sourceLinked=\"0\"/>`;\n if (opts._type === CHART_TYPE.SCATTER) {\n strXml += ' <c:majorTickMark val=\"none\"/>';\n strXml += ' <c:minorTickMark val=\"none\"/>';\n strXml += ' <c:tickLblPos val=\"nextTo\"/>';\n }\n else {\n strXml += ' <c:majorTickMark val=\"' + (opts.valAxisMajorTickMark || 'out') + '\"/>';\n strXml += ' <c:minorTickMark val=\"' + (opts.valAxisMinorTickMark || 'none') + '\"/>';\n strXml += ' <c:tickLblPos val=\"' + (opts.valAxisLabelPos || (opts.barDir === 'col' ? 'nextTo' : 'low')) + '\"/>';\n }\n strXml += ' <c:spPr>';\n strXml += ` <a:ln w=\"${opts.valAxisLineSize ? valToPts(opts.valAxisLineSize) : ONEPT}\" cap=\"flat\">`;\n strXml += !opts.valAxisLineShow ? '<a:noFill/>' : '<a:solidFill>' + createColorElement(opts.valAxisLineColor || DEF_CHART_GRIDLINE.color) + '</a:solidFill>';\n strXml += ' <a:prstDash val=\"' + (opts.valAxisLineStyle || 'solid') + '\"/>';\n strXml += ' <a:round/>';\n strXml += ' </a:ln>';\n strXml += ' </c:spPr>';\n strXml += ' <c:txPr>';\n strXml += ` <a:bodyPr${opts.valAxisLabelRotate ? (' rot=\"' + convertRotationDegrees(opts.valAxisLabelRotate).toString() + '\"') : ''}/>`; // don't specify rot 0 so we get the auto behavior\n strXml += ' <a:lstStyle/>';\n strXml += ' <a:p>';\n strXml += ' <a:pPr>';\n strXml += ` <a:defRPr sz=\"${Math.round((opts.valAxisLabelFontSize || DEF_FONT_SIZE) * 100)}\" b=\"${opts.valAxisLabelFontBold ? 1 : 0}\" i=\"${opts.valAxisLabelFontItalic ? 1 : 0}\" u=\"none\" strike=\"noStrike\">`;\n strXml += ' <a:solidFill>' + createColorElement(opts.valAxisLabelColor || DEF_FONT_COLOR) + '</a:solidFill>';\n strXml += ' <a:latin typeface=\"' + (opts.valAxisLabelFontFace || 'Arial') + '\"/>';\n strXml += ' </a:defRPr>';\n strXml += ' </a:pPr>';\n strXml += ' <a:endParaRPr lang=\"' + (opts.lang || 'en-US') + '\"/>';\n strXml += ' </a:p>';\n strXml += ' </c:txPr>';\n strXml += ' <c:crossAx val=\"' + crossAxId + '\"/>';\n if (typeof opts.catAxisCrossesAt === 'number') {\n strXml += ` <c:crossesAt val=\"${opts.catAxisCrossesAt}\"/>`;\n }\n else if (typeof opts.catAxisCrossesAt === 'string') {\n strXml += ' <c:crosses val=\"' + opts.catAxisCrossesAt + '\"/>';\n }\n else {\n const isRight = axisPos === 'r' || axisPos === 't';\n const crosses = isRight ? 'max' : 'autoZero';\n strXml += ' <c:crosses val=\"' + crosses + '\"/>';\n }\n strXml +=\n ' <c:crossBetween val=\"' +\n (opts._type === CHART_TYPE.SCATTER || (!!(Array.isArray(opts._type) && opts._type.filter(type => type.type === CHART_TYPE.AREA).length > 0)) ? 'midCat' : 'between') +\n '\"/>';\n if (opts.valAxisMajorUnit)\n strXml += ` <c:majorUnit val=\"${opts.valAxisMajorUnit}\"/>`;\n if (opts.valAxisDisplayUnit) {\n strXml += `<c:dispUnits><c:builtInUnit val=\"${opts.valAxisDisplayUnit}\"/>${opts.valAxisDisplayUnitLabel ? '<c:dispUnitsLbl/>' : ''}</c:dispUnits>`;\n }\n strXml += '</c:valAx>';\n return strXml;\n}\n/**\n * Create Series Axis (Used by `bar3D`)\n * @param {IChartOptsLib} opts - chart options\n * @param {string} axisId - axis ID\n * @param {string} valAxisId - value\n * @return {string} XML\n */\nfunction makeSerAxis(opts, axisId, valAxisId) {\n let strXml = '';\n // Build ser axis tag\n strXml += '<c:serAx>';\n strXml += ' <c:axId val=\"' + axisId + '\"/>';\n strXml += ' <c:scaling><c:orientation val=\"' + (opts.serAxisOrientation || (opts.barDir === 'col' ? 'minMax' : 'minMax')) + '\"/></c:scaling>';\n strXml += ' <c:delete val=\"' + (opts.serAxisHidden ? '1' : '0') + '\"/>';\n strXml += ' <c:axPos val=\"' + (opts.barDir === 'col' ? 'b' : 'l') + '\"/>';\n strXml += opts.serGridLine.style !== 'none' ? createGridLineElement(opts.serGridLine) : '';\n // '<c:title>' comes between '</c:majorGridlines>' and '<c:numFmt>'\n if (opts.showSerAxisTitle) {\n strXml += genXmlTitle({\n color: opts.serAxisTitleColor,\n fontFace: opts.serAxisTitleFontFace,\n fontSize: opts.serAxisTitleFontSize,\n titleRotate: opts.serAxisTitleRotate,\n title: opts.serAxisTitle || 'Axis Title',\n });\n }\n strXml += ` <c:numFmt formatCode=\"${encodeXmlEntities(opts.serLabelFormatCode) || 'General'}\" sourceLinked=\"0\"/>`;\n strXml += ' <c:majorTickMark val=\"out\"/>';\n strXml += ' <c:minorTickMark val=\"none\"/>';\n strXml += ` <c:tickLblPos val=\"${opts.serAxisLabelPos || opts.barDir === 'col' ? 'low' : 'nextTo'}\"/>`;\n strXml += ' <c:spPr>';\n strXml += ' <a:ln w=\"12700\" cap=\"flat\">';\n strXml += !opts.serAxisLineShow ? '<a:noFill/>' : `<a:solidFill>${createColorElement(opts.serAxisLineColor || DEF_CHART_GRIDLINE.color)}</a:solidFill>`;\n strXml += ' <a:prstDash val=\"solid\"/>';\n strXml += ' <a:round/>';\n strXml += ' </a:ln>';\n strXml += ' </c:spPr>';\n strXml += ' <c:txPr>';\n strXml += ' <a:bodyPr/>'; // don't specify rot 0 so we get the auto behavior\n strXml += ' <a:lstStyle/>';\n strXml += ' <a:p>';\n strXml += ' <a:pPr>';\n strXml += ` <a:defRPr sz=\"${Math.round((opts.serAxisLabelFontSize || DEF_FONT_SIZE) * 100)}\" b=\"${opts.serAxisLabelFontBold ? '1' : '0'}\" i=\"${opts.serAxisLabelFontItalic ? '1' : '0'}\" u=\"none\" strike=\"noStrike\">`;\n strXml += ` <a:solidFill>${createColorElement(opts.serAxisLabelColor || DEF_FONT_COLOR)}</a:solidFill>`;\n strXml += ` <a:latin typeface=\"${opts.serAxisLabelFontFace || 'Arial'}\"/>`;\n strXml += ' </a:defRPr>';\n strXml += ' </a:pPr>';\n strXml += ' <a:endParaRPr lang=\"' + (opts.lang || 'en-US') + '\"/>';\n strXml += ' </a:p>';\n strXml += ' </c:txPr>';\n strXml += ' <c:crossAx val=\"' + valAxisId + '\"/>';\n strXml += ' <c:crosses val=\"autoZero\"/>';\n if (opts.serAxisLabelFrequency)\n strXml += ' <c:tickLblSkip val=\"' + opts.serAxisLabelFrequency + '\"/>';\n // Issue#149: PPT will auto-adjust these as needed after calcing the date bounds, so we only include them when specified by user\n if (opts.serLabelFormatCode) {\n ['serAxisBaseTimeUnit', 'serAxisMajorTimeUnit', 'serAxisMinorTimeUnit'].forEach(opt => {\n // Validate input as poorly chosen/garbage options will cause chart corruption and it wont render at all!\n if (opts[opt] && (typeof opts[opt] !== 'string' || !['days', 'months', 'years'].includes(opt.toLowerCase()))) {\n console.warn(`\"${opt}\" must be one of: 'days','months','years' !`);\n opts[opt] = null;\n }\n });\n if (opts.serAxisBaseTimeUnit)\n strXml += ` <c:baseTimeUnit val=\"${opts.serAxisBaseTimeUnit.toLowerCase()}\"/>`;\n if (opts.serAxisMajorTimeUnit)\n strXml += ` <c:majorTimeUnit val=\"${opts.serAxisMajorTimeUnit.toLowerCase()}\"/>`;\n if (opts.serAxisMinorTimeUnit)\n strXml += ` <c:minorTimeUnit val=\"${opts.serAxisMinorTimeUnit.toLowerCase()}\"/>`;\n if (opts.serAxisMajorUnit)\n strXml += ` <c:majorUnit val=\"${opts.serAxisMajorUnit}\"/>`;\n if (opts.serAxisMinorUnit)\n strXml += ` <c:minorUnit val=\"${opts.serAxisMinorUnit}\"/>`;\n }\n // Close ser axis tag\n strXml += '</c:serAx>';\n return strXml;\n}\n/**\n * Create char title elements\n * @param {IChartPropsTitle} opts - options\n * @return {string} XML `<c:title>`\n */\nfunction genXmlTitle(opts, chartX, chartY) {\n const align = opts.titleAlign === 'left' || opts.titleAlign === 'right' ? `<a:pPr algn=\"${opts.titleAlign.substring(0, 1)}\">` : '<a:pPr>';\n const rotate = opts.titleRotate ? `<a:bodyPr rot=\"${convertRotationDegrees(opts.titleRotate)}\"/>` : '<a:bodyPr/>'; // don't specify rotation to get default (ex. vertical for cat axis)\n const sizeAttr = opts.fontSize ? `sz=\"${Math.round(opts.fontSize * 100)}\"` : ''; // only set the font size if specified. Powerpoint will handle the default size\n const titleBold = opts.titleBold ? 1 : 0;\n let layout = '<c:layout/>';\n if (opts.titlePos && typeof opts.titlePos.x === 'number' && typeof opts.titlePos.y === 'number') {\n // NOTE: manualLayout x/y vals are *relative to entire slide*\n const totalX = opts.titlePos.x + chartX;\n const totalY = opts.titlePos.y + chartY;\n let valX = totalX === 0 ? 0 : (totalX * (totalX / 5)) / 10;\n if (valX >= 1)\n valX = valX / 10;\n if (valX >= 0.1)\n valX = valX / 10;\n let valY = totalY === 0 ? 0 : (totalY * (totalY / 5)) / 10;\n if (valY >= 1)\n valY = valY / 10;\n if (valY >= 0.1)\n valY = valY / 10;\n layout = `<c:layout><c:manualLayout><c:xMode val=\"edge\"/><c:yMode val=\"edge\"/><c:x val=\"${valX}\"/><c:y val=\"${valY}\"/></c:manualLayout></c:layout>`;\n }\n return `<c:title>\n <c:tx>\n <c:rich>\n ${rotate}\n <a:lstStyle/>\n <a:p>\n ${align}\n <a:defRPr ${sizeAttr} b=\"${titleBold}\" i=\"0\" u=\"none\" strike=\"noStrike\">\n <a:solidFill>${createColorElement(opts.color || DEF_FONT_COLOR)}</a:solidFill>\n <a:latin typeface=\"${opts.fontFace || 'Arial'}\"/>\n </a:defRPr>\n </a:pPr>\n <a:r>\n <a:rPr ${sizeAttr} b=\"${titleBold}\" i=\"0\" u=\"none\" strike=\"noStrike\">\n <a:solidFill>${createColorElement(opts.color || DEF_FONT_COLOR)}</a:solidFill>\n <a:latin typeface=\"${opts.fontFace || 'Arial'}\"/>\n </a:rPr>\n <a:t>${encodeXmlEntities(opts.title) || ''}</a:t>\n </a:r>\n </a:p>\n </c:rich>\n </c:tx>\n ${layout}\n <c:overlay val=\"0\"/>\n </c:title>`;\n}\n/**\n * Calc and return excel column name for a given column length\n * @param colIndex column index\n * @return column name\n * @example 1 returns 'A'\n * @example 27 returns 'AA'\n */\nfunction getExcelColName(colIndex) {\n let colStr = '';\n const colIdx = colIndex - 1; // Subtract 1 so `LETTERS[columnIndex]` returns \"A\" etc\n if (colIdx <= 25) {\n // A-Z\n colStr = LETTERS[colIdx];\n }\n else {\n // AA-ZZ (ZZ = index 702)\n colStr = `${LETTERS[Math.floor(colIdx / LETTERS.length - 1)]}${LETTERS[colIdx % LETTERS.length]}`;\n }\n return colStr;\n}\n/**\n * Creates `a:innerShdw` or `a:outerShdw` depending on pass options `opts`.\n * @param {Object} opts optional shadow properties\n * @param {Object} defaults defaults for unspecified properties in `opts`\n * @see http://officeopenxml.com/drwSp-effects.php\n * @example { type: 'outer', blur: 3, offset: (23000 / 12700), angle: 90, color: '000000', opacity: 0.35, rotateWithShape: true };\n * @return {string} XML\n */\nfunction createShadowElement(options, defaults) {\n if (!options) {\n return '<a:effectLst/>';\n }\n else if (typeof options !== 'object') {\n console.warn('`shadow` options must be an object. Ex: `{shadow: {type:\\'none\\'}}`');\n return '<a:effectLst/>';\n }\n let strXml = '<a:effectLst>';\n const opts = Object.assign(Object.assign({}, defaults), options);\n const type = opts.type || 'outer';\n const blur = valToPts(opts.blur);\n const offset = valToPts(opts.offset);\n const angle = Math.round(opts.angle * 60000);\n const color = opts.color;\n const opacity = Math.round(opts.opacity * 100000);\n const rotShape = opts.rotateWithShape ? 1 : 0;\n strXml += `<a:${type}Shdw sx=\"100000\" sy=\"100000\" kx=\"0\" ky=\"0\" algn=\"bl\" blurRad=\"${blur}\" rotWithShape=\"${rotShape}\" dist=\"${offset}\" dir=\"${angle}\">`;\n strXml += `<a:srgbClr val=\"${color}\">`;\n strXml += `<a:alpha val=\"${opacity}\"/></a:srgbClr>`;\n strXml += `</a:${type}Shdw>`;\n strXml += '</a:effectLst>';\n return strXml;\n}\n/**\n * Create Grid Line Element\n * @param {OptsChartGridLine} glOpts {size, color, style}\n * @return {string} XML\n */\nfunction createGridLineElement(glOpts) {\n let strXml = '<c:majorGridlines>';\n strXml += ' <c:spPr>';\n strXml += ` <a:ln w=\"${valToPts(glOpts.size || DEF_CHART_GRIDLINE.size)}\" cap=\"${createLineCap(glOpts.cap || DEF_CHART_GRIDLINE.cap)}\">`;\n strXml += ' <a:solidFill><a:srgbClr val=\"' + (glOpts.color || DEF_CHART_GRIDLINE.color) + '\"/></a:solidFill>'; // should accept scheme colors as implemented in [Pull #135]\n strXml += ' <a:prstDash val=\"' + (glOpts.style || DEF_CHART_GRIDLINE.style) + '\"/><a:round/>';\n strXml += ' </a:ln>';\n strXml += ' </c:spPr>';\n strXml += '</c:majorGridlines>';\n return strXml;\n}\nfunction createLineCap(lineCap) {\n if (!lineCap || lineCap === 'flat') {\n return 'flat';\n }\n else if (lineCap === 'square') {\n return 'sq';\n }\n else if (lineCap === 'round') {\n return 'rnd';\n }\n else {\n const neverLineCap = lineCap;\n throw new Error(`Invalid chart line cap: ${neverLineCap}`);\n }\n}\n\n/**\n * PptxGenJS: Media Methods\n */\n/**\n * Encode Image/Audio/Video into base64\n * @param {PresSlide | SlideLayout} layout - slide layout\n * @return {Promise} promise\n */\nfunction encodeSlideMediaRels(layout) {\n var _a, _b;\n // STEP 1: Detect real Node runtime once\n const isNode = typeof process !== 'undefined' && !!((_a = process.versions) === null || _a === void 0 ? void 0 : _a.node) && ((_b = process.release) === null || _b === void 0 ? void 0 : _b.name) === 'node';\n // These will be filled only when we’re in Node\n let fs;\n let https;\n // STEP 2: Lazy-load Node built-ins if needed\n const loadNodeDeps = isNode\n ? () => __awaiter(this, void 0, void 0, function* () {\n ({ default: fs } = yield import('node:fs'));\n ({ default: https } = yield import('node:https'));\n })\n : () => __awaiter(this, void 0, void 0, function* () { });\n // Immediately start it when we know we’re in Node\n if (isNode)\n loadNodeDeps();\n // STEP 3: Prepare promises list\n const imageProms = [];\n // A: Capture all audio/image/video candidates for encoding (filtering online/pre-encoded)\n const candidateRels = layout._relsMedia.filter(rel => rel.type !== 'online' && !rel.data && (!rel.path || (rel.path && !rel.path.includes('preencoded'))));\n // B: PERF: Mark dupes (same `path`) to avoid loading the same media over-and-over!\n const unqPaths = [];\n candidateRels.forEach(rel => {\n if (!unqPaths.includes(rel.path)) {\n rel.isDuplicate = false;\n unqPaths.push(rel.path);\n }\n else {\n rel.isDuplicate = true;\n }\n });\n // STEP 4: Read/Encode each unique media item\n candidateRels\n .filter(rel => !rel.isDuplicate)\n .forEach(rel => {\n imageProms.push((() => __awaiter(this, void 0, void 0, function* () {\n if (!https)\n yield loadNodeDeps();\n // ──────────── NODE LOCAL FILE ────────────\n if (isNode && fs && rel.path.indexOf('http') !== 0) {\n try {\n const bitmap = fs.readFileSync(rel.path);\n rel.data = Buffer.from(bitmap).toString('base64');\n candidateRels\n .filter(dupe => dupe.isDuplicate && dupe.path === rel.path)\n .forEach(dupe => (dupe.data = rel.data));\n return 'done';\n }\n catch (ex) {\n rel.data = IMG_BROKEN;\n candidateRels\n .filter(dupe => dupe.isDuplicate && dupe.path === rel.path)\n .forEach(dupe => (dupe.data = rel.data));\n throw new Error(`ERROR: Unable to read media: \"${rel.path}\"\\n${String(ex)}`);\n }\n }\n // ──────────── NODE HTTP(S) ────────────\n if (isNode && https && rel.path.startsWith('http')) {\n return yield new Promise((resolve, reject) => {\n https.get(rel.path, res => {\n let raw = '';\n res.setEncoding('binary'); // IMPORTANT: Only binary encoding works\n res.on('data', chunk => (raw += chunk));\n res.on('end', () => {\n rel.data = Buffer.from(raw, 'binary').toString('base64');\n candidateRels\n .filter(dupe => dupe.isDuplicate && dupe.path === rel.path)\n .forEach(dupe => (dupe.data = rel.data));\n resolve('done');\n });\n res.on('error', () => {\n rel.data = IMG_BROKEN;\n candidateRels\n .filter(dupe => dupe.isDuplicate && dupe.path === rel.path)\n .forEach(dupe => (dupe.data = rel.data));\n reject(new Error(`ERROR! Unable to load image (https.get): ${rel.path}`));\n });\n });\n });\n }\n // ──────────── BROWSER ────────────\n return yield new Promise((resolve, reject) => {\n // A: build request\n const xhr = new XMLHttpRequest();\n xhr.onload = () => {\n const reader = new FileReader();\n reader.onloadend = () => {\n rel.data = reader.result;\n candidateRels\n .filter(dupe => dupe.isDuplicate && dupe.path === rel.path)\n .forEach(dupe => (dupe.data = rel.data));\n if (!rel.isSvgPng) {\n resolve('done');\n }\n else {\n createSvgPngPreview(rel)\n .then(() => resolve('done'))\n .catch(reject);\n }\n };\n reader.readAsDataURL(xhr.response);\n };\n xhr.onerror = () => {\n rel.data = IMG_BROKEN;\n candidateRels\n .filter(dupe => dupe.isDuplicate && dupe.path === rel.path)\n .forEach(dupe => (dupe.data = rel.data));\n reject(new Error(`ERROR! Unable to load image (xhr.onerror): ${rel.path}`));\n };\n // B: execute request\n xhr.open('GET', rel.path);\n xhr.responseType = 'blob';\n xhr.send();\n });\n }))());\n });\n // STEP 5: SVG-PNG previews\n // ......: \"SVG:\" base64 data still requires a png to be generated\n // ......: (`isSvgPng` flag this as the preview image, not the SVG itself)\n layout._relsMedia\n .filter(rel => rel.isSvgPng && rel.data)\n .forEach(rel => {\n (() => __awaiter(this, void 0, void 0, function* () {\n if (isNode && !fs)\n yield loadNodeDeps();\n if (isNode && fs) {\n // console.log('Sorry, SVG is not supported in Node (more info: https://github.com/gitbrent/PptxGenJS/issues/401)')\n rel.data = IMG_BROKEN;\n imageProms.push(Promise.resolve('done'));\n }\n else {\n imageProms.push(createSvgPngPreview(rel));\n }\n }))();\n });\n return imageProms;\n}\n/**\n * Create SVG preview image\n * @param {ISlideRelMedia} rel - slide rel\n * @return {Promise} promise\n */\nfunction createSvgPngPreview(rel) {\n return __awaiter(this, void 0, void 0, function* () {\n return yield new Promise((resolve, reject) => {\n // A: Create\n const image = new Image();\n // B: Set onload event\n image.onload = () => {\n // First: Check for any errors: This is the best method (try/catch wont work, etc.)\n if (image.width + image.height === 0) {\n image.onerror('h/w=0');\n }\n let canvas = document.createElement('CANVAS');\n const ctx = canvas.getContext('2d');\n canvas.width = image.width;\n canvas.height = image.height;\n ctx.drawImage(image, 0, 0);\n // Users running on local machine will get the following error:\n // \"SecurityError: Failed to execute 'toDataURL' on 'HTMLCanvasElement': Tainted canvases may not be exported.\"\n // when the canvas.toDataURL call executes below.\n try {\n rel.data = canvas.toDataURL(rel.type);\n resolve('done');\n }\n catch (ex) {\n image.onerror(ex.toString());\n }\n canvas = null;\n };\n image.onerror = () => {\n rel.data = IMG_BROKEN;\n reject(new Error(`ERROR! Unable to load image (image.onerror): ${rel.path}`));\n };\n // C: Load image\n image.src = typeof rel.data === 'string' ? rel.data : IMG_BROKEN;\n });\n });\n}\n/**\n * FIXME: TODO: currently unused\n * TODO: Should return a Promise\n */\n/*\nfunction getSizeFromImage (inImgUrl: string): { width: number, height: number } {\n const sizeOf = typeof require !== 'undefined' ? require('sizeof') : null // NodeJS\n\n if (sizeOf) {\n try {\n const dimensions = sizeOf(inImgUrl)\n return { width: dimensions.width, height: dimensions.height }\n } catch (ex) {\n console.error('ERROR: sizeOf: Unable to load image: ' + inImgUrl)\n return { width: 0, height: 0 }\n }\n } else if (Image && typeof Image === 'function') {\n // A: Create\n const image = new Image()\n\n // B: Set onload event\n image.onload = () => {\n // FIRST: Check for any errors: This is the best method (try/catch wont work, etc.)\n if (image.width + image.height === 0) {\n return { width: 0, height: 0 }\n }\n const obj = { width: image.width, height: image.height }\n return obj\n }\n image.onerror = () => {\n console.error(`ERROR: image.onload: Unable to load image: ${inImgUrl}`)\n }\n\n // C: Load image\n image.src = inImgUrl\n }\n}\n*/\n\n/**\n * PptxGenJS: XML Generation\n */\nconst ImageSizingXml = {\n cover: function (imgSize, boxDim) {\n const imgRatio = imgSize.h / imgSize.w;\n const boxRatio = boxDim.h / boxDim.w;\n const isBoxBased = boxRatio > imgRatio;\n const width = isBoxBased ? boxDim.h / imgRatio : boxDim.w;\n const height = isBoxBased ? boxDim.h : boxDim.w * imgRatio;\n const hzPerc = Math.round(1e5 * 0.5 * (1 - boxDim.w / width));\n const vzPerc = Math.round(1e5 * 0.5 * (1 - boxDim.h / height));\n return `<a:srcRect l=\"${hzPerc}\" r=\"${hzPerc}\" t=\"${vzPerc}\" b=\"${vzPerc}\"/><a:stretch/>`;\n },\n contain: function (imgSize, boxDim) {\n const imgRatio = imgSize.h / imgSize.w;\n const boxRatio = boxDim.h / boxDim.w;\n const widthBased = boxRatio > imgRatio;\n const width = widthBased ? boxDim.w : boxDim.h / imgRatio;\n const height = widthBased ? boxDim.w * imgRatio : boxDim.h;\n const hzPerc = Math.round(1e5 * 0.5 * (1 - boxDim.w / width));\n const vzPerc = Math.round(1e5 * 0.5 * (1 - boxDim.h / height));\n return `<a:srcRect l=\"${hzPerc}\" r=\"${hzPerc}\" t=\"${vzPerc}\" b=\"${vzPerc}\"/><a:stretch/>`;\n },\n crop: function (imgSize, boxDim) {\n const l = boxDim.x;\n const r = imgSize.w - (boxDim.x + boxDim.w);\n const t = boxDim.y;\n const b = imgSize.h - (boxDim.y + boxDim.h);\n const lPerc = Math.round(1e5 * (l / imgSize.w));\n const rPerc = Math.round(1e5 * (r / imgSize.w));\n const tPerc = Math.round(1e5 * (t / imgSize.h));\n const bPerc = Math.round(1e5 * (b / imgSize.h));\n return `<a:srcRect l=\"${lPerc}\" r=\"${rPerc}\" t=\"${tPerc}\" b=\"${bPerc}\"/><a:stretch/>`;\n },\n};\n/**\n * Transforms a slide or slideLayout to resulting XML string - Creates `ppt/slide*.xml`\n * @param {PresSlide|SlideLayout} slideObject - slide object created within createSlideObject\n * @return {string} XML string with <p:cSld> as the root\n */\nfunction slideObjectToXml(slide) {\n var _a;\n let strSlideXml = slide._name ? '<p:cSld name=\"' + slide._name + '\">' : '<p:cSld>';\n let intTableNum = 1;\n // STEP 1: Add background color/image (ensure only a single `<p:bg>` tag is created, ex: when master-baskground has both `color` and `path`)\n if (slide._bkgdImgRid) {\n strSlideXml += `<p:bg><p:bgPr><a:blipFill dpi=\"0\" rotWithShape=\"1\"><a:blip r:embed=\"rId${slide._bkgdImgRid}\"><a:lum/></a:blip><a:srcRect/><a:stretch><a:fillRect/></a:stretch></a:blipFill><a:effectLst/></p:bgPr></p:bg>`;\n }\n else if ((_a = slide.background) === null || _a === void 0 ? void 0 : _a.color) {\n strSlideXml += `<p:bg><p:bgPr>${genXmlColorSelection(slide.background)}</p:bgPr></p:bg>`;\n }\n else if (!slide.bkgd && slide._name && slide._name === DEF_PRES_LAYOUT_NAME) {\n // NOTE: Default [white] background is needed on slideMaster1.xml to avoid gray background in Keynote (and Finder previews)\n strSlideXml += '<p:bg><p:bgRef idx=\"1001\"><a:schemeClr val=\"bg1\"/></p:bgRef></p:bg>';\n }\n // STEP 2: Continue slide by starting spTree node\n strSlideXml += '<p:spTree>';\n strSlideXml += '<p:nvGrpSpPr><p:cNvPr id=\"1\" name=\"\"/><p:cNvGrpSpPr/><p:nvPr/></p:nvGrpSpPr>';\n strSlideXml += '<p:grpSpPr><a:xfrm><a:off x=\"0\" y=\"0\"/><a:ext cx=\"0\" cy=\"0\"/>';\n strSlideXml += '<a:chOff x=\"0\" y=\"0\"/><a:chExt cx=\"0\" cy=\"0\"/></a:xfrm></p:grpSpPr>';\n // STEP 3: Loop over all Slide.data objects and add them to this slide\n slide._slideObjects.forEach((slideItemObj, idx) => {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n let x = 0;\n let y = 0;\n let cx = getSmartParseNumber('75%', 'X', slide._presLayout);\n let cy = 0;\n let placeholderObj;\n let locationAttr = '';\n let arrTabRows = null;\n let objTabOpts = null;\n let intColCnt = 0;\n let intColW = 0;\n let cellOpts = null;\n let strXml = null;\n const sizing = (_a = slideItemObj.options) === null || _a === void 0 ? void 0 : _a.sizing;\n const rounding = (_b = slideItemObj.options) === null || _b === void 0 ? void 0 : _b.rounding;\n if (slide._slideLayout !== undefined &&\n slide._slideLayout._slideObjects !== undefined &&\n slideItemObj.options &&\n slideItemObj.options.placeholder) {\n placeholderObj = slide._slideLayout._slideObjects.filter((object) => object.options.placeholder === slideItemObj.options.placeholder)[0];\n }\n // A: Set option vars\n slideItemObj.options = slideItemObj.options || {};\n if (typeof slideItemObj.options.x !== 'undefined')\n x = getSmartParseNumber(slideItemObj.options.x, 'X', slide._presLayout);\n if (typeof slideItemObj.options.y !== 'undefined')\n y = getSmartParseNumber(slideItemObj.options.y, 'Y', slide._presLayout);\n if (typeof slideItemObj.options.w !== 'undefined')\n cx = getSmartParseNumber(slideItemObj.options.w, 'X', slide._presLayout);\n if (typeof slideItemObj.options.h !== 'undefined')\n cy = getSmartParseNumber(slideItemObj.options.h, 'Y', slide._presLayout);\n // Set w/h now that smart parse is done\n let imgWidth = cx;\n let imgHeight = cy;\n // If using a placeholder then inherit it's position\n if (placeholderObj) {\n if (placeholderObj.options.x || placeholderObj.options.x === 0)\n x = getSmartParseNumber(placeholderObj.options.x, 'X', slide._presLayout);\n if (placeholderObj.options.y || placeholderObj.options.y === 0)\n y = getSmartParseNumber(placeholderObj.options.y, 'Y', slide._presLayout);\n if (placeholderObj.options.w || placeholderObj.options.w === 0)\n cx = getSmartParseNumber(placeholderObj.options.w, 'X', slide._presLayout);\n if (placeholderObj.options.h || placeholderObj.options.h === 0)\n cy = getSmartParseNumber(placeholderObj.options.h, 'Y', slide._presLayout);\n }\n //\n if (slideItemObj.options.flipH)\n locationAttr += ' flipH=\"1\"';\n if (slideItemObj.options.flipV)\n locationAttr += ' flipV=\"1\"';\n if (slideItemObj.options.rotate)\n locationAttr += ` rot=\"${convertRotationDegrees(slideItemObj.options.rotate)}\"`;\n // B: Add OBJECT to the current Slide\n switch (slideItemObj._type) {\n case SLIDE_OBJECT_TYPES.table:\n arrTabRows = slideItemObj.arrTabRows;\n objTabOpts = slideItemObj.options;\n intColCnt = 0;\n intColW = 0;\n // Calc number of columns\n // NOTE: Cells may have a colspan, so merely taking the length of the [0] (or any other) row is not\n // ....: sufficient to determine column count. Therefore, check each cell for a colspan and total cols as reqd\n arrTabRows[0].forEach(cell => {\n cellOpts = cell.options || null;\n intColCnt += (cellOpts === null || cellOpts === void 0 ? void 0 : cellOpts.colspan) ? Number(cellOpts.colspan) : 1;\n });\n // STEP 1: Start Table XML\n // NOTE: Non-numeric cNvPr id values will trigger \"presentation needs repair\" type warning in MS-PPT-2013\n strXml = `<p:graphicFrame><p:nvGraphicFramePr><p:cNvPr id=\"${intTableNum * slide._slideNum + 1}\" name=\"${slideItemObj.options.objectName}\"/>`;\n strXml +=\n '<p:cNvGraphicFramePr><a:graphicFrameLocks noGrp=\"1\"/></p:cNvGraphicFramePr>' +\n ' <p:nvPr><p:extLst><p:ext uri=\"{D42A27DB-BD31-4B8C-83A1-F6EECF244321}\"><p14:modId xmlns:p14=\"http://schemas.microsoft.com/office/powerpoint/2010/main\" val=\"1579011935\"/></p:ext></p:extLst></p:nvPr>' +\n '</p:nvGraphicFramePr>';\n strXml += `<p:xfrm><a:off x=\"${x || (x === 0 ? 0 : EMU)}\" y=\"${y || (y === 0 ? 0 : EMU)}\"/><a:ext cx=\"${cx || (cx === 0 ? 0 : EMU)}\" cy=\"${cy || EMU}\"/></p:xfrm>`;\n strXml += '<a:graphic><a:graphicData uri=\"http://schemas.openxmlformats.org/drawingml/2006/table\"><a:tbl><a:tblPr/>';\n // + ' <a:tblPr bandRow=\"1\"/>';\n // TODO: Support banded rows, first/last row, etc.\n // NOTE: Banding, etc. only shows when using a table style! (or set alt row color if banding)\n // <a:tblPr firstCol=\"0\" firstRow=\"0\" lastCol=\"0\" lastRow=\"0\" bandCol=\"0\" bandRow=\"1\">\n // STEP 2: Set column widths\n // Evenly distribute cols/rows across size provided when applicable (calc them if only overall dimensions were provided)\n // A: Col widths provided?\n // B: Table Width provided without colW? Then distribute cols\n if (Array.isArray(objTabOpts.colW)) {\n strXml += '<a:tblGrid>';\n for (let col = 0; col < intColCnt; col++) {\n let w = inch2Emu(objTabOpts.colW[col]);\n if (w == null || isNaN(w)) {\n w = (typeof slideItemObj.options.w === 'number' ? slideItemObj.options.w : 1) / intColCnt;\n }\n strXml += `<a:gridCol w=\"${Math.round(w)}\"/>`;\n }\n strXml += '</a:tblGrid>';\n }\n else {\n intColW = objTabOpts.colW ? objTabOpts.colW : EMU;\n if (slideItemObj.options.w && !objTabOpts.colW)\n intColW = Math.round((typeof slideItemObj.options.w === 'number' ? slideItemObj.options.w : 1) / intColCnt);\n strXml += '<a:tblGrid>';\n for (let colw = 0; colw < intColCnt; colw++) {\n strXml += `<a:gridCol w=\"${intColW}\"/>`;\n }\n strXml += '</a:tblGrid>';\n }\n // STEP 3: Build our row arrays into an actual grid to match the XML we will be building next (ISSUE #36)\n // Note row arrays can arrive \"lopsided\" as in row1:[1,2,3] row2:[3] when first two cols rowspan!,\n // so a simple loop below in XML building wont suffice to build table correctly.\n // We have to build an actual grid now\n /*\n EX: (A0:rowspan=3, B1:rowspan=2, C1:colspan=2)\n\n /------|------|------|------\\\n | A0 | B0 | C0 | D0 |\n | | B1 | C1 | |\n | | | C2 | D2 |\n \\------|------|------|------/\n */\n // A: add _hmerge cell for colspan. should reserve rowspan\n arrTabRows.forEach(cells => {\n var _a, _b;\n for (let cIdx = 0; cIdx < cells.length;) {\n const cell = cells[cIdx];\n const colspan = (_a = cell.options) === null || _a === void 0 ? void 0 : _a.colspan;\n const rowspan = (_b = cell.options) === null || _b === void 0 ? void 0 : _b.rowspan;\n if (colspan && colspan > 1) {\n const vMergeCells = new Array(colspan - 1).fill(undefined).map(() => {\n return { _type: SLIDE_OBJECT_TYPES.tablecell, options: { rowspan }, _hmerge: true };\n });\n cells.splice(cIdx + 1, 0, ...vMergeCells);\n cIdx += colspan;\n }\n else {\n cIdx += 1;\n }\n }\n });\n // B: add _vmerge cell for rowspan. should reserve colspan/_hmerge\n arrTabRows.forEach((cells, rIdx) => {\n const nextRow = arrTabRows[rIdx + 1];\n if (!nextRow)\n return;\n cells.forEach((cell, cIdx) => {\n var _a, _b;\n const rowspan = cell._rowContinue || ((_a = cell.options) === null || _a === void 0 ? void 0 : _a.rowspan);\n const colspan = (_b = cell.options) === null || _b === void 0 ? void 0 : _b.colspan;\n const _hmerge = cell._hmerge;\n if (rowspan && rowspan > 1) {\n const hMergeCell = { _type: SLIDE_OBJECT_TYPES.tablecell, options: { colspan }, _rowContinue: rowspan - 1, _vmerge: true, _hmerge };\n nextRow.splice(cIdx, 0, hMergeCell);\n }\n });\n });\n // STEP 4: Build table rows/cells\n arrTabRows.forEach((cells, rIdx) => {\n // A: Table Height provided without rowH? Then distribute rows\n let intRowH = 0; // IMPORTANT: Default must be zero for auto-sizing to work\n if (Array.isArray(objTabOpts.rowH) && objTabOpts.rowH[rIdx])\n intRowH = inch2Emu(Number(objTabOpts.rowH[rIdx]));\n else if (objTabOpts.rowH && !isNaN(Number(objTabOpts.rowH)))\n intRowH = inch2Emu(Number(objTabOpts.rowH));\n else if (slideItemObj.options.cy || slideItemObj.options.h) {\n intRowH = Math.round((slideItemObj.options.h ? inch2Emu(slideItemObj.options.h) : typeof slideItemObj.options.cy === 'number' ? slideItemObj.options.cy : 1) /\n arrTabRows.length);\n }\n // B: Start row\n strXml += `<a:tr h=\"${intRowH}\">`;\n // C: Loop over each CELL\n cells.forEach(cellObj => {\n var _a, _b, _c, _d, _e;\n const cell = cellObj;\n const cellSpanAttrs = {\n rowSpan: ((_a = cell.options) === null || _a === void 0 ? void 0 : _a.rowspan) > 1 ? cell.options.rowspan : undefined,\n gridSpan: ((_b = cell.options) === null || _b === void 0 ? void 0 : _b.colspan) > 1 ? cell.options.colspan : undefined,\n vMerge: cell._vmerge ? 1 : undefined,\n hMerge: cell._hmerge ? 1 : undefined,\n };\n let cellSpanAttrStr = Object.keys(cellSpanAttrs)\n .map(k => [k, cellSpanAttrs[k]])\n .filter(([, v]) => !!v)\n .map(([k, v]) => `${String(k)}=\"${String(v)}\"`)\n .join(' ');\n if (cellSpanAttrStr)\n cellSpanAttrStr = ' ' + cellSpanAttrStr;\n // 1: COLSPAN/ROWSPAN: Add dummy cells for any active colspan/rowspan\n if (cell._hmerge || cell._vmerge) {\n strXml += `<a:tc${cellSpanAttrStr}><a:tcPr/></a:tc>`;\n return;\n }\n // 2: OPTIONS: Build/set cell options\n const cellOpts = cell.options || {};\n cell.options = cellOpts;\n ['align', 'bold', 'border', 'color', 'fill', 'fontFace', 'fontSize', 'margin', 'textDirection', 'underline', 'valign'].forEach(name => {\n if (objTabOpts[name] && !cellOpts[name] && cellOpts[name] !== 0)\n cellOpts[name] = objTabOpts[name];\n });\n const cellValign = cellOpts.valign\n ? ` anchor=\"${cellOpts.valign.replace(/^c$/i, 'ctr').replace(/^m$/i, 'ctr').replace('center', 'ctr').replace('middle', 'ctr').replace('top', 't').replace('btm', 'b').replace('bottom', 'b')}\"`\n : '';\n const cellTextDir = (cellOpts.textDirection && cellOpts.textDirection !== 'horz') ? ` vert=\"${cellOpts.textDirection}\"` : '';\n let fillColor = ((_d = (_c = cell._optImp) === null || _c === void 0 ? void 0 : _c.fill) === null || _d === void 0 ? void 0 : _d.color)\n ? cell._optImp.fill.color\n : ((_e = cell._optImp) === null || _e === void 0 ? void 0 : _e.fill) && typeof cell._optImp.fill === 'string'\n ? cell._optImp.fill\n : '';\n fillColor = fillColor || cellOpts.fill ? cellOpts.fill : '';\n const cellFill = fillColor ? genXmlColorSelection(fillColor) : '';\n let cellMargin = cellOpts.margin === 0 || cellOpts.margin ? cellOpts.margin : DEF_CELL_MARGIN_IN;\n if (!Array.isArray(cellMargin) && typeof cellMargin === 'number')\n cellMargin = [cellMargin, cellMargin, cellMargin, cellMargin];\n /** FUTURE: DEPRECATED:\n * - Backwards-Compat: Oops! Discovered we were still using points for cell margin before v3.8.0 (UGH!)\n * - We cant introduce a breaking change before v4.0, so...\n */\n let cellMarginXml = '';\n if (cellMargin[0] >= 1) {\n cellMarginXml = ` marL=\"${valToPts(cellMargin[3])}\" marR=\"${valToPts(cellMargin[1])}\" marT=\"${valToPts(cellMargin[0])}\" marB=\"${valToPts(cellMargin[2])}\"`;\n }\n else {\n cellMarginXml = ` marL=\"${inch2Emu(cellMargin[3])}\" marR=\"${inch2Emu(cellMargin[1])}\" marT=\"${inch2Emu(cellMargin[0])}\" marB=\"${inch2Emu(cellMargin[2])}\"`;\n }\n // FUTURE: Cell NOWRAP property (textwrap: add to a:tcPr (horzOverflow=\"overflow\" or whatever options exist)\n // 4: Set CELL content and properties ==================================\n strXml += `<a:tc${cellSpanAttrStr}>${genXmlTextBody(cell)}<a:tcPr${cellMarginXml}${cellValign}${cellTextDir}>`;\n // strXml += `<a:tc${cellColspan}${cellRowspan}>${genXmlTextBody(cell)}<a:tcPr${cellMarginXml}${cellValign}${cellTextDir}>`\n // FIXME: 20200525: ^^^\n // <a:tcPr marL=\"38100\" marR=\"38100\" marT=\"38100\" marB=\"38100\" vert=\"vert270\">\n // 5: Borders: Add any borders\n if (cellOpts.border && Array.isArray(cellOpts.border)) {\n // NOTE: *** IMPORTANT! *** LRTB order matters! (Reorder a line below to watch the borders go wonky in MS-PPT-2013!!)\n [\n { idx: 3, name: 'lnL' },\n { idx: 1, name: 'lnR' },\n { idx: 0, name: 'lnT' },\n { idx: 2, name: 'lnB' },\n ].forEach(obj => {\n if (cellOpts.border[obj.idx].type !== 'none') {\n strXml += `<a:${obj.name} w=\"${valToPts(cellOpts.border[obj.idx].pt)}\" cap=\"flat\" cmpd=\"sng\" algn=\"ctr\">`;\n strXml += `<a:solidFill>${createColorElement(cellOpts.border[obj.idx].color)}</a:solidFill>`;\n strXml += `<a:prstDash val=\"${cellOpts.border[obj.idx].type === 'dash' ? 'sysDash' : 'solid'}\"/><a:round/><a:headEnd type=\"none\" w=\"med\" len=\"med\"/><a:tailEnd type=\"none\" w=\"med\" len=\"med\"/>`;\n strXml += `</a:${obj.name}>`;\n }\n else {\n strXml += `<a:${obj.name} w=\"0\" cap=\"flat\" cmpd=\"sng\" algn=\"ctr\"><a:noFill/></a:${obj.name}>`;\n }\n });\n }\n // 6: Close cell Properties & Cell\n strXml += cellFill;\n strXml += ' </a:tcPr>';\n strXml += ' </a:tc>';\n });\n // D: Complete row\n strXml += '</a:tr>';\n });\n // STEP 5: Complete table\n strXml += ' </a:tbl>';\n strXml += ' </a:graphicData>';\n strXml += ' </a:graphic>';\n strXml += '</p:graphicFrame>';\n // STEP 6: Set table XML\n strSlideXml += strXml;\n // LAST: Increment counter\n intTableNum++;\n break;\n case SLIDE_OBJECT_TYPES.text:\n case SLIDE_OBJECT_TYPES.placeholder:\n // Lines can have zero cy, but text should not\n if (!slideItemObj.options.line && cy === 0)\n cy = EMU * 0.3;\n // Margin/Padding/Inset for textboxes\n if (!slideItemObj.options._bodyProp)\n slideItemObj.options._bodyProp = {};\n if (slideItemObj.options.margin && Array.isArray(slideItemObj.options.margin)) {\n slideItemObj.options._bodyProp.lIns = valToPts(slideItemObj.options.margin[0] || 0);\n slideItemObj.options._bodyProp.rIns = valToPts(slideItemObj.options.margin[1] || 0);\n slideItemObj.options._bodyProp.bIns = valToPts(slideItemObj.options.margin[2] || 0);\n slideItemObj.options._bodyProp.tIns = valToPts(slideItemObj.options.margin[3] || 0);\n }\n else if (typeof slideItemObj.options.margin === 'number') {\n slideItemObj.options._bodyProp.lIns = valToPts(slideItemObj.options.margin);\n slideItemObj.options._bodyProp.rIns = valToPts(slideItemObj.options.margin);\n slideItemObj.options._bodyProp.bIns = valToPts(slideItemObj.options.margin);\n slideItemObj.options._bodyProp.tIns = valToPts(slideItemObj.options.margin);\n }\n // A: Start SHAPE =======================================================\n strSlideXml += '<p:sp>';\n // B: The addition of the \"txBox\" attribute is the sole determiner of if an object is a shape or textbox\n strSlideXml += `<p:nvSpPr><p:cNvPr id=\"${idx + 2}\" name=\"${slideItemObj.options.objectName}\">`;\n // <Hyperlink>\n if ((_c = slideItemObj.options.hyperlink) === null || _c === void 0 ? void 0 : _c.url) {\n strSlideXml += `<a:hlinkClick r:id=\"rId${slideItemObj.options.hyperlink._rId}\" tooltip=\"${slideItemObj.options.hyperlink.tooltip ? encodeXmlEntities(slideItemObj.options.hyperlink.tooltip) : ''}\"/>`;\n }\n if ((_d = slideItemObj.options.hyperlink) === null || _d === void 0 ? void 0 : _d.slide) {\n strSlideXml += `<a:hlinkClick r:id=\"rId${slideItemObj.options.hyperlink._rId}\" tooltip=\"${slideItemObj.options.hyperlink.tooltip ? encodeXmlEntities(slideItemObj.options.hyperlink.tooltip) : ''}\" action=\"ppaction://hlinksldjump\"/>`;\n }\n // </Hyperlink>\n strSlideXml += '</p:cNvPr>';\n strSlideXml += '<p:cNvSpPr' + (((_e = slideItemObj.options) === null || _e === void 0 ? void 0 : _e.isTextBox) ? ' txBox=\"1\"/>' : '/>');\n strSlideXml += `<p:nvPr>${slideItemObj._type === 'placeholder' ? genXmlPlaceholder(slideItemObj) : genXmlPlaceholder(placeholderObj)}</p:nvPr>`;\n strSlideXml += '</p:nvSpPr><p:spPr>';\n strSlideXml += `<a:xfrm${locationAttr}>`;\n strSlideXml += `<a:off x=\"${x}\" y=\"${y}\"/>`;\n strSlideXml += `<a:ext cx=\"${cx}\" cy=\"${cy}\"/></a:xfrm>`;\n if (slideItemObj.shape === 'custGeom') {\n strSlideXml += '<a:custGeom><a:avLst />';\n strSlideXml += '<a:gdLst>';\n strSlideXml += '</a:gdLst>';\n strSlideXml += '<a:ahLst />';\n strSlideXml += '<a:cxnLst>';\n strSlideXml += '</a:cxnLst>';\n strSlideXml += '<a:rect l=\"l\" t=\"t\" r=\"r\" b=\"b\" />';\n strSlideXml += '<a:pathLst>';\n strSlideXml += `<a:path w=\"${cx}\" h=\"${cy}\">`;\n (_f = slideItemObj.options.points) === null || _f === void 0 ? void 0 : _f.forEach((point, i) => {\n if ('curve' in point) {\n switch (point.curve.type) {\n case 'arc':\n strSlideXml += `<a:arcTo hR=\"${getSmartParseNumber(point.curve.hR, 'Y', slide._presLayout)}\" wR=\"${getSmartParseNumber(point.curve.wR, 'X', slide._presLayout)}\" stAng=\"${convertRotationDegrees(point.curve.stAng)}\" swAng=\"${convertRotationDegrees(point.curve.swAng)}\" />`;\n break;\n case 'cubic':\n strSlideXml += `<a:cubicBezTo>\n\t\t\t\t\t\t\t\t\t<a:pt x=\"${getSmartParseNumber(point.curve.x1, 'X', slide._presLayout)}\" y=\"${getSmartParseNumber(point.curve.y1, 'Y', slide._presLayout)}\" />\n\t\t\t\t\t\t\t\t\t<a:pt x=\"${getSmartParseNumber(point.curve.x2, 'X', slide._presLayout)}\" y=\"${getSmartParseNumber(point.curve.y2, 'Y', slide._presLayout)}\" />\n\t\t\t\t\t\t\t\t\t<a:pt x=\"${getSmartParseNumber(point.x, 'X', slide._presLayout)}\" y=\"${getSmartParseNumber(point.y, 'Y', slide._presLayout)}\" />\n\t\t\t\t\t\t\t\t\t</a:cubicBezTo>`;\n break;\n case 'quadratic':\n strSlideXml += `<a:quadBezTo>\n\t\t\t\t\t\t\t\t\t<a:pt x=\"${getSmartParseNumber(point.curve.x1, 'X', slide._presLayout)}\" y=\"${getSmartParseNumber(point.curve.y1, 'Y', slide._presLayout)}\" />\n\t\t\t\t\t\t\t\t\t<a:pt x=\"${getSmartParseNumber(point.x, 'X', slide._presLayout)}\" y=\"${getSmartParseNumber(point.y, 'Y', slide._presLayout)}\" />\n\t\t\t\t\t\t\t\t\t</a:quadBezTo>`;\n break;\n }\n }\n else if ('close' in point) {\n strSlideXml += '<a:close />';\n }\n else if (point.moveTo || i === 0) {\n strSlideXml += `<a:moveTo><a:pt x=\"${getSmartParseNumber(point.x, 'X', slide._presLayout)}\" y=\"${getSmartParseNumber(point.y, 'Y', slide._presLayout)}\" /></a:moveTo>`;\n }\n else {\n strSlideXml += `<a:lnTo><a:pt x=\"${getSmartParseNumber(point.x, 'X', slide._presLayout)}\" y=\"${getSmartParseNumber(point.y, 'Y', slide._presLayout)}\" /></a:lnTo>`;\n }\n });\n strSlideXml += '</a:path>';\n strSlideXml += '</a:pathLst>';\n strSlideXml += '</a:custGeom>';\n }\n else {\n strSlideXml += '<a:prstGeom prst=\"' + slideItemObj.shape + '\"><a:avLst>';\n if (slideItemObj.options.rectRadius) {\n strSlideXml += `<a:gd name=\"adj\" fmla=\"val ${Math.round((slideItemObj.options.rectRadius * EMU * 100000) / Math.min(cx, cy))}\"/>`;\n }\n else if (slideItemObj.options.angleRange) {\n for (let i = 0; i < 2; i++) {\n const angle = slideItemObj.options.angleRange[i];\n strSlideXml += `<a:gd name=\"adj${i + 1}\" fmla=\"val ${convertRotationDegrees(angle)}\" />`;\n }\n if (slideItemObj.options.arcThicknessRatio) {\n strSlideXml += `<a:gd name=\"adj3\" fmla=\"val ${Math.round(slideItemObj.options.arcThicknessRatio * 50000)}\" />`;\n }\n }\n strSlideXml += '</a:avLst></a:prstGeom>';\n }\n // Option: FILL\n strSlideXml += slideItemObj.options.fill ? genXmlColorSelection(slideItemObj.options.fill) : '<a:noFill/>';\n // shape Type: LINE: line color\n if (slideItemObj.options.line) {\n strSlideXml += slideItemObj.options.line.width ? `<a:ln w=\"${valToPts(slideItemObj.options.line.width)}\">` : '<a:ln>';\n if (slideItemObj.options.line.color)\n strSlideXml += genXmlColorSelection(slideItemObj.options.line);\n if (slideItemObj.options.line.dashType)\n strSlideXml += `<a:prstDash val=\"${slideItemObj.options.line.dashType}\"/>`;\n if (slideItemObj.options.line.beginArrowType)\n strSlideXml += `<a:headEnd type=\"${slideItemObj.options.line.beginArrowType}\"/>`;\n if (slideItemObj.options.line.endArrowType)\n strSlideXml += `<a:tailEnd type=\"${slideItemObj.options.line.endArrowType}\"/>`;\n // FUTURE: `endArrowSize` < a: headEnd type = \"arrow\" w = \"lg\" len = \"lg\" /> 'sm' | 'med' | 'lg'(values are 1 - 9, making a 3x3 grid of w / len possibilities)\n strSlideXml += '</a:ln>';\n }\n // EFFECTS > SHADOW: REF: @see http://officeopenxml.com/drwSp-effects.php\n if (slideItemObj.options.shadow && slideItemObj.options.shadow.type !== 'none') {\n slideItemObj.options.shadow.type = slideItemObj.options.shadow.type || 'outer';\n slideItemObj.options.shadow.blur = valToPts(slideItemObj.options.shadow.blur || 8);\n slideItemObj.options.shadow.offset = valToPts(slideItemObj.options.shadow.offset || 4);\n slideItemObj.options.shadow.angle = Math.round((slideItemObj.options.shadow.angle || 270) * 60000);\n slideItemObj.options.shadow.opacity = Math.round((slideItemObj.options.shadow.opacity || 0.75) * 100000);\n slideItemObj.options.shadow.color = slideItemObj.options.shadow.color || DEF_TEXT_SHADOW.color;\n strSlideXml += '<a:effectLst>';\n strSlideXml += ` <a:${slideItemObj.options.shadow.type}Shdw ${slideItemObj.options.shadow.type === 'outer' ? 'sx=\"100000\" sy=\"100000\" kx=\"0\" ky=\"0\" algn=\"bl\" rotWithShape=\"0\"' : ''} blurRad=\"${slideItemObj.options.shadow.blur}\" dist=\"${slideItemObj.options.shadow.offset}\" dir=\"${slideItemObj.options.shadow.angle}\">`;\n strSlideXml += ` <a:srgbClr val=\"${slideItemObj.options.shadow.color}\">`;\n strSlideXml += ` <a:alpha val=\"${slideItemObj.options.shadow.opacity}\"/></a:srgbClr>`;\n strSlideXml += ' </a:outerShdw>';\n strSlideXml += '</a:effectLst>';\n }\n /* TODO: FUTURE: Text wrapping (copied from MS-PPTX export)\n // Commented out b/c i'm not even sure this works - current code produces text that wraps in shapes and textboxes, so...\n if ( slideItemObj.options.textWrap ) {\n strSlideXml += '<a:extLst>'\n + '<a:ext uri=\"{C572A759-6A51-4108-AA02-DFA0A04FC94B}\">'\n + '<ma14:wrappingTextBoxFlag xmlns:ma14=\"http://schemas.microsoft.com/office/mac/drawingml/2011/main\" val=\"1\"/>'\n + '</a:ext>'\n + '</a:extLst>';\n }\n */\n // B: Close shape Properties\n strSlideXml += '</p:spPr>';\n // C: Add formatted text (text body \"bodyPr\")\n strSlideXml += genXmlTextBody(slideItemObj);\n // LAST: Close SHAPE =======================================================\n strSlideXml += '</p:sp>';\n break;\n case SLIDE_OBJECT_TYPES.image:\n strSlideXml += '<p:pic>';\n strSlideXml += ' <p:nvPicPr>';\n strSlideXml += `<p:cNvPr id=\"${idx + 2}\" name=\"${slideItemObj.options.objectName}\" descr=\"${encodeXmlEntities(slideItemObj.options.altText || slideItemObj.image)}\">`;\n if ((_g = slideItemObj.hyperlink) === null || _g === void 0 ? void 0 : _g.url) {\n strSlideXml += `<a:hlinkClick r:id=\"rId${slideItemObj.hyperlink._rId}\" tooltip=\"${slideItemObj.hyperlink.tooltip ? encodeXmlEntities(slideItemObj.hyperlink.tooltip) : ''}\"/>`;\n }\n if ((_h = slideItemObj.hyperlink) === null || _h === void 0 ? void 0 : _h.slide) {\n strSlideXml += `<a:hlinkClick r:id=\"rId${slideItemObj.hyperlink._rId}\" tooltip=\"${slideItemObj.hyperlink.tooltip ? encodeXmlEntities(slideItemObj.hyperlink.tooltip) : ''}\" action=\"ppaction://hlinksldjump\"/>`;\n }\n strSlideXml += ' </p:cNvPr>';\n strSlideXml += ' <p:cNvPicPr><a:picLocks noChangeAspect=\"1\"/></p:cNvPicPr>';\n strSlideXml += ' <p:nvPr>' + genXmlPlaceholder(placeholderObj) + '</p:nvPr>';\n strSlideXml += ' </p:nvPicPr>';\n strSlideXml += '<p:blipFill>';\n // NOTE: This works for both cases: either `path` or `data` contains the SVG\n if ((slide._relsMedia || []).filter(rel => rel.rId === slideItemObj.imageRid)[0] &&\n (slide._relsMedia || []).filter(rel => rel.rId === slideItemObj.imageRid)[0].extn === 'svg') {\n strSlideXml += `<a:blip r:embed=\"rId${slideItemObj.imageRid - 1}\">`;\n strSlideXml += slideItemObj.options.transparency ? ` <a:alphaModFix amt=\"${Math.round((100 - slideItemObj.options.transparency) * 1000)}\"/>` : '';\n strSlideXml += ' <a:extLst>';\n strSlideXml += ' <a:ext uri=\"{96DAC541-7B7A-43D3-8B79-37D633B846F1}\">';\n strSlideXml += ` <asvg:svgBlip xmlns:asvg=\"http://schemas.microsoft.com/office/drawing/2016/SVG/main\" r:embed=\"rId${slideItemObj.imageRid}\"/>`;\n strSlideXml += ' </a:ext>';\n strSlideXml += ' </a:extLst>';\n strSlideXml += '</a:blip>';\n }\n else {\n strSlideXml += `<a:blip r:embed=\"rId${slideItemObj.imageRid}\">`;\n strSlideXml += slideItemObj.options.transparency ? `<a:alphaModFix amt=\"${Math.round((100 - slideItemObj.options.transparency) * 1000)}\"/>` : '';\n strSlideXml += '</a:blip>';\n }\n if (sizing === null || sizing === void 0 ? void 0 : sizing.type) {\n const boxW = sizing.w ? getSmartParseNumber(sizing.w, 'X', slide._presLayout) : cx;\n const boxH = sizing.h ? getSmartParseNumber(sizing.h, 'Y', slide._presLayout) : cy;\n const boxX = getSmartParseNumber(sizing.x || 0, 'X', slide._presLayout);\n const boxY = getSmartParseNumber(sizing.y || 0, 'Y', slide._presLayout);\n strSlideXml += ImageSizingXml[sizing.type]({ w: imgWidth, h: imgHeight }, { w: boxW, h: boxH, x: boxX, y: boxY });\n imgWidth = boxW;\n imgHeight = boxH;\n }\n else {\n strSlideXml += ' <a:stretch><a:fillRect/></a:stretch>';\n }\n strSlideXml += '</p:blipFill>';\n strSlideXml += '<p:spPr>';\n strSlideXml += ' <a:xfrm' + locationAttr + '>';\n strSlideXml += ` <a:off x=\"${x}\" y=\"${y}\"/>`;\n strSlideXml += ` <a:ext cx=\"${imgWidth}\" cy=\"${imgHeight}\"/>`;\n strSlideXml += ' </a:xfrm>';\n strSlideXml += ` <a:prstGeom prst=\"${rounding ? 'ellipse' : 'rect'}\"><a:avLst/></a:prstGeom>`;\n // EFFECTS > SHADOW: REF: @see http://officeopenxml.com/drwSp-effects.php\n if (slideItemObj.options.shadow && slideItemObj.options.shadow.type !== 'none') {\n slideItemObj.options.shadow.type = slideItemObj.options.shadow.type || 'outer';\n slideItemObj.options.shadow.blur = valToPts(slideItemObj.options.shadow.blur || 8);\n slideItemObj.options.shadow.offset = valToPts(slideItemObj.options.shadow.offset || 4);\n slideItemObj.options.shadow.angle = Math.round((slideItemObj.options.shadow.angle || 270) * 60000);\n slideItemObj.options.shadow.opacity = Math.round((slideItemObj.options.shadow.opacity || 0.75) * 100000);\n slideItemObj.options.shadow.color = slideItemObj.options.shadow.color || DEF_TEXT_SHADOW.color;\n strSlideXml += '<a:effectLst>';\n strSlideXml += `<a:${slideItemObj.options.shadow.type}Shdw ${slideItemObj.options.shadow.type === 'outer' ? 'sx=\"100000\" sy=\"100000\" kx=\"0\" ky=\"0\" algn=\"bl\" rotWithShape=\"0\"' : ''} blurRad=\"${slideItemObj.options.shadow.blur}\" dist=\"${slideItemObj.options.shadow.offset}\" dir=\"${slideItemObj.options.shadow.angle}\">`;\n strSlideXml += `<a:srgbClr val=\"${slideItemObj.options.shadow.color}\">`;\n strSlideXml += `<a:alpha val=\"${slideItemObj.options.shadow.opacity}\"/></a:srgbClr>`;\n strSlideXml += `</a:${slideItemObj.options.shadow.type}Shdw>`;\n strSlideXml += '</a:effectLst>';\n }\n strSlideXml += '</p:spPr>';\n strSlideXml += '</p:pic>';\n break;\n case SLIDE_OBJECT_TYPES.media:\n if (slideItemObj.mtype === 'online') {\n strSlideXml += '<p:pic>';\n strSlideXml += ' <p:nvPicPr>';\n // IMPORTANT: <p:cNvPr id=\"\" value is critical - if its not the same number as preview image `rId`, PowerPoint throws error!\n strSlideXml += `<p:cNvPr id=\"${slideItemObj.mediaRid + 2}\" name=\"${slideItemObj.options.objectName}\"/>`;\n strSlideXml += ' <p:cNvPicPr/>';\n strSlideXml += ' <p:nvPr>';\n strSlideXml += ` <a:videoFile r:link=\"rId${slideItemObj.mediaRid}\"/>`;\n strSlideXml += ' </p:nvPr>';\n strSlideXml += ' </p:nvPicPr>';\n // NOTE: `blip` is diferent than videos; also there's no preview \"p:extLst\" above but exists in videos\n strSlideXml += ` <p:blipFill><a:blip r:embed=\"rId${slideItemObj.mediaRid + 1}\"/><a:stretch><a:fillRect/></a:stretch></p:blipFill>`; // NOTE: Preview image is required!\n strSlideXml += ' <p:spPr>';\n strSlideXml += ` <a:xfrm${locationAttr}><a:off x=\"${x}\" y=\"${y}\"/><a:ext cx=\"${cx}\" cy=\"${cy}\"/></a:xfrm>`;\n strSlideXml += ' <a:prstGeom prst=\"rect\"><a:avLst/></a:prstGeom>';\n strSlideXml += ' </p:spPr>';\n strSlideXml += '</p:pic>';\n }\n else {\n strSlideXml += '<p:pic>';\n strSlideXml += ' <p:nvPicPr>';\n // IMPORTANT: <p:cNvPr id=\"\" value is critical - if not the same number as preiew image rId, PowerPoint throws error!\n strSlideXml += `<p:cNvPr id=\"${slideItemObj.mediaRid + 2}\" name=\"${slideItemObj.options.objectName}\"><a:hlinkClick r:id=\"\" action=\"ppaction://media\"/></p:cNvPr>`;\n strSlideXml += ' <p:cNvPicPr><a:picLocks noChangeAspect=\"1\"/></p:cNvPicPr>';\n strSlideXml += ' <p:nvPr>';\n strSlideXml += ` <a:videoFile r:link=\"rId${slideItemObj.mediaRid}\"/>`;\n strSlideXml += ' <p:extLst>';\n strSlideXml += ' <p:ext uri=\"{DAA4B4D4-6D71-4841-9C94-3DE7FCFB9230}\">';\n strSlideXml += ` <p14:media xmlns:p14=\"http://schemas.microsoft.com/office/powerpoint/2010/main\" r:embed=\"rId${slideItemObj.mediaRid + 1}\"/>`;\n strSlideXml += ' </p:ext>';\n strSlideXml += ' </p:extLst>';\n strSlideXml += ' </p:nvPr>';\n strSlideXml += ' </p:nvPicPr>';\n strSlideXml += ` <p:blipFill><a:blip r:embed=\"rId${slideItemObj.mediaRid + 2}\"/><a:stretch><a:fillRect/></a:stretch></p:blipFill>`; // NOTE: Preview image is required!\n strSlideXml += ' <p:spPr>';\n strSlideXml += ` <a:xfrm${locationAttr}><a:off x=\"${x}\" y=\"${y}\"/><a:ext cx=\"${cx}\" cy=\"${cy}\"/></a:xfrm>`;\n strSlideXml += ' <a:prstGeom prst=\"rect\"><a:avLst/></a:prstGeom>';\n strSlideXml += ' </p:spPr>';\n strSlideXml += '</p:pic>';\n }\n break;\n case SLIDE_OBJECT_TYPES.chart:\n strSlideXml += '<p:graphicFrame>';\n strSlideXml += ' <p:nvGraphicFramePr>';\n strSlideXml += ` <p:cNvPr id=\"${idx + 2}\" name=\"${slideItemObj.options.objectName}\" descr=\"${encodeXmlEntities(slideItemObj.options.altText || '')}\"/>`;\n strSlideXml += ' <p:cNvGraphicFramePr/>';\n strSlideXml += ` <p:nvPr>${genXmlPlaceholder(placeholderObj)}</p:nvPr>`;\n strSlideXml += ' </p:nvGraphicFramePr>';\n strSlideXml += ` <p:xfrm><a:off x=\"${x}\" y=\"${y}\"/><a:ext cx=\"${cx}\" cy=\"${cy}\"/></p:xfrm>`;\n strSlideXml += ' <a:graphic xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\">';\n strSlideXml += ' <a:graphicData uri=\"http://schemas.openxmlformats.org/drawingml/2006/chart\">';\n strSlideXml += ` <c:chart r:id=\"rId${slideItemObj.chartRid}\" xmlns:c=\"http://schemas.openxmlformats.org/drawingml/2006/chart\"/>`;\n strSlideXml += ' </a:graphicData>';\n strSlideXml += ' </a:graphic>';\n strSlideXml += '</p:graphicFrame>';\n break;\n default:\n strSlideXml += '';\n break;\n }\n });\n // STEP 4: Add slide numbers (if any) last\n if (slide._slideNumberProps) {\n // Set some defaults (done here b/c SlideNumber canbe added to masters or slides and has numerous entry points)\n if (!slide._slideNumberProps.align)\n slide._slideNumberProps.align = 'left';\n strSlideXml += '<p:sp>';\n strSlideXml += ' <p:nvSpPr>';\n strSlideXml += ' <p:cNvPr id=\"25\" name=\"Slide Number Placeholder 0\"/><p:cNvSpPr><a:spLocks noGrp=\"1\"/></p:cNvSpPr>';\n strSlideXml += ' <p:nvPr><p:ph type=\"sldNum\" sz=\"quarter\" idx=\"4294967295\"/></p:nvPr>';\n strSlideXml += ' </p:nvSpPr>';\n strSlideXml += ' <p:spPr>';\n strSlideXml += '<a:xfrm>' +\n `<a:off x=\"${getSmartParseNumber(slide._slideNumberProps.x, 'X', slide._presLayout)}\" y=\"${getSmartParseNumber(slide._slideNumberProps.y, 'Y', slide._presLayout)}\"/>` +\n `<a:ext cx=\"${slide._slideNumberProps.w ? getSmartParseNumber(slide._slideNumberProps.w, 'X', slide._presLayout) : '800000'}\" cy=\"${slide._slideNumberProps.h ? getSmartParseNumber(slide._slideNumberProps.h, 'Y', slide._presLayout) : '300000'}\"/>` +\n '</a:xfrm>' +\n ' <a:prstGeom prst=\"rect\"><a:avLst/></a:prstGeom>' +\n ' <a:extLst><a:ext uri=\"{C572A759-6A51-4108-AA02-DFA0A04FC94B}\"><ma14:wrappingTextBoxFlag val=\"0\" xmlns:ma14=\"http://schemas.microsoft.com/office/mac/drawingml/2011/main\"/></a:ext></a:extLst>' +\n '</p:spPr>';\n strSlideXml += '<p:txBody>';\n strSlideXml += '<a:bodyPr';\n if (slide._slideNumberProps.margin && Array.isArray(slide._slideNumberProps.margin)) {\n strSlideXml += ` lIns=\"${valToPts(slide._slideNumberProps.margin[3] || 0)}\"`;\n strSlideXml += ` tIns=\"${valToPts(slide._slideNumberProps.margin[0] || 0)}\"`;\n strSlideXml += ` rIns=\"${valToPts(slide._slideNumberProps.margin[1] || 0)}\"`;\n strSlideXml += ` bIns=\"${valToPts(slide._slideNumberProps.margin[2] || 0)}\"`;\n }\n else if (typeof slide._slideNumberProps.margin === 'number') {\n strSlideXml += ` lIns=\"${valToPts(slide._slideNumberProps.margin || 0)}\"`;\n strSlideXml += ` tIns=\"${valToPts(slide._slideNumberProps.margin || 0)}\"`;\n strSlideXml += ` rIns=\"${valToPts(slide._slideNumberProps.margin || 0)}\"`;\n strSlideXml += ` bIns=\"${valToPts(slide._slideNumberProps.margin || 0)}\"`;\n }\n if (slide._slideNumberProps.valign) {\n strSlideXml += ` anchor=\"${slide._slideNumberProps.valign.replace('top', 't').replace('middle', 'ctr').replace('bottom', 'b')}\"`;\n }\n strSlideXml += '/>';\n strSlideXml += ' <a:lstStyle><a:lvl1pPr>';\n if (slide._slideNumberProps.fontFace || slide._slideNumberProps.fontSize || slide._slideNumberProps.color) {\n strSlideXml += `<a:defRPr sz=\"${Math.round((slide._slideNumberProps.fontSize || 12) * 100)}\">`;\n if (slide._slideNumberProps.color)\n strSlideXml += genXmlColorSelection(slide._slideNumberProps.color);\n if (slide._slideNumberProps.fontFace) {\n strSlideXml += `<a:latin typeface=\"${slide._slideNumberProps.fontFace}\"/><a:ea typeface=\"${slide._slideNumberProps.fontFace}\"/><a:cs typeface=\"${slide._slideNumberProps.fontFace}\"/>`;\n }\n strSlideXml += '</a:defRPr>';\n }\n strSlideXml += '</a:lvl1pPr></a:lstStyle>';\n strSlideXml += '<a:p>';\n if (slide._slideNumberProps.align.startsWith('l'))\n strSlideXml += '<a:pPr algn=\"l\"/>';\n else if (slide._slideNumberProps.align.startsWith('c'))\n strSlideXml += '<a:pPr algn=\"ctr\"/>';\n else if (slide._slideNumberProps.align.startsWith('r'))\n strSlideXml += '<a:pPr algn=\"r\"/>';\n else\n strSlideXml += '<a:pPr algn=\"l\"/>';\n strSlideXml += `<a:fld id=\"${SLDNUMFLDID}\" type=\"slidenum\"><a:rPr b=\"${slide._slideNumberProps.bold ? 1 : 0}\" lang=\"en-US\"/>`;\n strSlideXml += `<a:t>${slide._slideNum}</a:t></a:fld><a:endParaRPr lang=\"en-US\"/></a:p>`;\n strSlideXml += '</p:txBody></p:sp>';\n }\n // STEP 5: Close spTree and finalize slide XML\n strSlideXml += '</p:spTree>';\n strSlideXml += '</p:cSld>';\n // LAST: Return\n return strSlideXml;\n}\n/**\n * Transforms slide relations to XML string.\n * Extra relations that are not dynamic can be passed using the 2nd arg (e.g. theme relation in master file).\n * These relations use rId series that starts with 1-increased maximum of rIds used for dynamic relations.\n * @param {PresSlide | SlideLayout} slide - slide object whose relations are being transformed\n * @param {{ target: string; type: string }[]} defaultRels - array of default relations\n * @return {string} XML\n */\nfunction slideObjectRelationsToXml(slide, defaultRels) {\n let lastRid = 0; // stores maximum rId used for dynamic relations\n let strXml = '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>' + CRLF + '<Relationships xmlns=\"http://schemas.openxmlformats.org/package/2006/relationships\">';\n // STEP 1: Add all rels for this Slide\n slide._rels.forEach((rel) => {\n lastRid = Math.max(lastRid, rel.rId);\n if (rel.type.toLowerCase().includes('hyperlink')) {\n if (rel.data === 'slide') {\n strXml += `<Relationship Id=\"rId${rel.rId}\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/slide\" Target=\"slide${rel.Target}.xml\"/>`;\n }\n else {\n strXml += `<Relationship Id=\"rId${rel.rId}\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink\" Target=\"${rel.Target}\" TargetMode=\"External\"/>`;\n }\n }\n else if (rel.type.toLowerCase().includes('notesSlide')) {\n strXml += `<Relationship Id=\"rId${rel.rId}\" Target=\"${rel.Target}\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/notesSlide\"/>`;\n }\n });\n (slide._relsChart || []).forEach((rel) => {\n lastRid = Math.max(lastRid, rel.rId);\n strXml += `<Relationship Id=\"rId${rel.rId}\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart\" Target=\"${rel.Target}\"/>`;\n });\n (slide._relsMedia || []).forEach((rel) => {\n const relRid = rel.rId.toString();\n lastRid = Math.max(lastRid, rel.rId);\n if (rel.type.toLowerCase().includes('image')) {\n strXml += '<Relationship Id=\"rId' + relRid + '\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image\" Target=\"' + rel.Target + '\"/>';\n }\n else if (rel.type.toLowerCase().includes('audio')) {\n // As media has *TWO* rel entries per item, check for first one, if found add second rel with alt style\n if (strXml.includes(' Target=\"' + rel.Target + '\"')) {\n strXml += '<Relationship Id=\"rId' + relRid + '\" Type=\"http://schemas.microsoft.com/office/2007/relationships/media\" Target=\"' + rel.Target + '\"/>';\n }\n else {\n strXml += '<Relationship Id=\"rId' + relRid + '\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/audio\" Target=\"' + rel.Target + '\"/>';\n }\n }\n else if (rel.type.toLowerCase().includes('video')) {\n // As media has *TWO* rel entries per item, check for first one, if found add second rel with alt style\n if (strXml.includes(' Target=\"' + rel.Target + '\"')) {\n strXml += '<Relationship Id=\"rId' + relRid + '\" Type=\"http://schemas.microsoft.com/office/2007/relationships/media\" Target=\"' + rel.Target + '\"/>';\n }\n else {\n strXml += '<Relationship Id=\"rId' + relRid + '\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/video\" Target=\"' + rel.Target + '\"/>';\n }\n }\n else if (rel.type.toLowerCase().includes('online')) {\n // As media has *TWO* rel entries per item, check for first one, if found add second rel with alt style\n if (strXml.includes(' Target=\"' + rel.Target + '\"')) {\n strXml += '<Relationship Id=\"rId' + relRid + '\" Type=\"http://schemas.microsoft.com/office/2007/relationships/image\" Target=\"' + rel.Target + '\"/>';\n }\n else {\n strXml += '<Relationship Id=\"rId' + relRid + '\" Target=\"' + rel.Target + '\" TargetMode=\"External\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/video\"/>';\n }\n }\n });\n // STEP 2: Add default rels\n defaultRels.forEach((rel, idx) => {\n strXml += `<Relationship Id=\"rId${lastRid + idx + 1}\" Type=\"${rel.type}\" Target=\"${rel.target}\"/>`;\n });\n strXml += '</Relationships>';\n return strXml;\n}\n/**\n * Generate XML Paragraph Properties\n * @param {ISlideObject|TextProps} textObj - text object\n * @param {boolean} isDefault - array of default relations\n * @return {string} XML\n */\nfunction genXmlParagraphProperties(textObj, isDefault) {\n var _a, _b;\n let strXmlBullet = '';\n let strXmlLnSpc = '';\n let strXmlParaSpc = '';\n let strXmlTabStops = '';\n const tag = isDefault ? 'a:lvl1pPr' : 'a:pPr';\n let bulletMarL = valToPts(DEF_BULLET_MARGIN);\n let paragraphPropXml = `<${tag}${textObj.options.rtlMode ? ' rtl=\"1\" ' : ''}`;\n // A: Build paragraphProperties\n {\n // OPTION: align\n if (textObj.options.align) {\n switch (textObj.options.align) {\n case 'left':\n paragraphPropXml += ' algn=\"l\"';\n break;\n case 'right':\n paragraphPropXml += ' algn=\"r\"';\n break;\n case 'center':\n paragraphPropXml += ' algn=\"ctr\"';\n break;\n case 'justify':\n paragraphPropXml += ' algn=\"just\"';\n break;\n default:\n paragraphPropXml += '';\n break;\n }\n }\n if (textObj.options.lineSpacing) {\n strXmlLnSpc = `<a:lnSpc><a:spcPts val=\"${Math.round(textObj.options.lineSpacing * 100)}\"/></a:lnSpc>`;\n }\n else if (textObj.options.lineSpacingMultiple) {\n strXmlLnSpc = `<a:lnSpc><a:spcPct val=\"${Math.round(textObj.options.lineSpacingMultiple * 100000)}\"/></a:lnSpc>`;\n }\n // OPTION: indent\n if (textObj.options.indentLevel && !isNaN(Number(textObj.options.indentLevel)) && textObj.options.indentLevel > 0) {\n paragraphPropXml += ` lvl=\"${textObj.options.indentLevel}\"`;\n }\n // OPTION: Paragraph Spacing: Before/After\n if (textObj.options.paraSpaceBefore && !isNaN(Number(textObj.options.paraSpaceBefore)) && textObj.options.paraSpaceBefore > 0) {\n strXmlParaSpc += `<a:spcBef><a:spcPts val=\"${Math.round(textObj.options.paraSpaceBefore * 100)}\"/></a:spcBef>`;\n }\n if (textObj.options.paraSpaceAfter && !isNaN(Number(textObj.options.paraSpaceAfter)) && textObj.options.paraSpaceAfter > 0) {\n strXmlParaSpc += `<a:spcAft><a:spcPts val=\"${Math.round(textObj.options.paraSpaceAfter * 100)}\"/></a:spcAft>`;\n }\n // OPTION: bullet\n // NOTE: OOXML uses the unicode character set for Bullets\n // EX: Unicode Character 'BULLET' (U+2022) ==> '<a:buChar char=\"&#x2022;\"/>'\n if (typeof textObj.options.bullet === 'object') {\n if ((_b = (_a = textObj === null || textObj === void 0 ? void 0 : textObj.options) === null || _a === void 0 ? void 0 : _a.bullet) === null || _b === void 0 ? void 0 : _b.indent)\n bulletMarL = valToPts(textObj.options.bullet.indent);\n if (textObj.options.bullet.type) {\n if (textObj.options.bullet.type.toString().toLowerCase() === 'number') {\n paragraphPropXml += ` marL=\"${textObj.options.indentLevel && textObj.options.indentLevel > 0 ? bulletMarL + bulletMarL * textObj.options.indentLevel : bulletMarL}\" indent=\"-${bulletMarL}\"`;\n strXmlBullet = `<a:buSzPct val=\"100000\"/><a:buFont typeface=\"+mj-lt\"/><a:buAutoNum type=\"${textObj.options.bullet.style || 'arabicPeriod'}\" startAt=\"${textObj.options.bullet.numberStartAt || textObj.options.bullet.startAt || '1'}\"/>`;\n }\n }\n else if (textObj.options.bullet.characterCode) {\n let bulletCode = `&#x${textObj.options.bullet.characterCode};`;\n // Check value for hex-ness (s/b 4 char hex)\n if (!/^[0-9A-Fa-f]{4}$/.test(textObj.options.bullet.characterCode)) {\n console.warn('Warning: `bullet.characterCode should be a 4-digit unicode charatcer (ex: 22AB)`!');\n bulletCode = BULLET_TYPES.DEFAULT;\n }\n paragraphPropXml += ` marL=\"${textObj.options.indentLevel && textObj.options.indentLevel > 0 ? bulletMarL + bulletMarL * textObj.options.indentLevel : bulletMarL}\" indent=\"-${bulletMarL}\"`;\n strXmlBullet = '<a:buSzPct val=\"100000\"/><a:buChar char=\"' + bulletCode + '\"/>';\n }\n else if (textObj.options.bullet.code) {\n // @deprecated `bullet.code` v3.3.0\n let bulletCode = `&#x${textObj.options.bullet.code};`;\n // Check value for hex-ness (s/b 4 char hex)\n if (!/^[0-9A-Fa-f]{4}$/.test(textObj.options.bullet.code)) {\n console.warn('Warning: `bullet.code should be a 4-digit hex code (ex: 22AB)`!');\n bulletCode = BULLET_TYPES.DEFAULT;\n }\n paragraphPropXml += ` marL=\"${textObj.options.indentLevel && textObj.options.indentLevel > 0 ? bulletMarL + bulletMarL * textObj.options.indentLevel : bulletMarL}\" indent=\"-${bulletMarL}\"`;\n strXmlBullet = '<a:buSzPct val=\"100000\"/><a:buChar char=\"' + bulletCode + '\"/>';\n }\n else {\n paragraphPropXml += ` marL=\"${textObj.options.indentLevel && textObj.options.indentLevel > 0 ? bulletMarL + bulletMarL * textObj.options.indentLevel : bulletMarL}\" indent=\"-${bulletMarL}\"`;\n strXmlBullet = `<a:buSzPct val=\"100000\"/><a:buChar char=\"${BULLET_TYPES.DEFAULT}\"/>`;\n }\n }\n else if (textObj.options.bullet) {\n paragraphPropXml += ` marL=\"${textObj.options.indentLevel && textObj.options.indentLevel > 0 ? bulletMarL + bulletMarL * textObj.options.indentLevel : bulletMarL}\" indent=\"-${bulletMarL}\"`;\n strXmlBullet = `<a:buSzPct val=\"100000\"/><a:buChar char=\"${BULLET_TYPES.DEFAULT}\"/>`;\n }\n else if (!textObj.options.bullet) {\n // We only add this when the user explicitely asks for no bullet, otherwise, it can override the master defaults!\n paragraphPropXml += ' indent=\"0\" marL=\"0\"'; // FIX: ISSUE#589 - specify zero indent and marL or default will be hanging paragraph\n strXmlBullet = '<a:buNone/>';\n }\n // OPTION: tabStops\n if (textObj.options.tabStops && Array.isArray(textObj.options.tabStops)) {\n const tabStopsXml = textObj.options.tabStops.map(stop => `<a:tab pos=\"${inch2Emu(stop.position || 1)}\" algn=\"${stop.alignment || 'l'}\"/>`).join('');\n strXmlTabStops = `<a:tabLst>${tabStopsXml}</a:tabLst>`;\n }\n // B: Close Paragraph-Properties\n // IMPORTANT: strXmlLnSpc, strXmlParaSpc, and strXmlBullet require strict ordering - anything out of order is ignored. (PPT-Online, PPT for Mac)\n paragraphPropXml += '>' + strXmlLnSpc + strXmlParaSpc + strXmlBullet + strXmlTabStops;\n if (isDefault)\n paragraphPropXml += genXmlTextRunProperties(textObj.options, true);\n paragraphPropXml += '</' + tag + '>';\n }\n return paragraphPropXml;\n}\n/**\n * Generate XML Text Run Properties (`a:rPr`)\n * @param {ObjectOptions|TextPropsOptions} opts - text options\n * @param {boolean} isDefault - whether these are the default text run properties\n * @return {string} XML\n */\nfunction genXmlTextRunProperties(opts, isDefault) {\n var _a;\n let runProps = '';\n const runPropsTag = isDefault ? 'a:defRPr' : 'a:rPr';\n // BEGIN runProperties (ex: `<a:rPr lang=\"en-US\" sz=\"1600\" b=\"1\" dirty=\"0\">`)\n runProps += '<' + runPropsTag + ' lang=\"' + (opts.lang ? opts.lang : 'en-US') + '\"' + (opts.lang ? ' altLang=\"en-US\"' : '');\n runProps += opts.fontSize ? ` sz=\"${Math.round(opts.fontSize * 100)}\"` : ''; // NOTE: Use round so sizes like '7.5' wont cause corrupt presentations\n runProps += (opts === null || opts === void 0 ? void 0 : opts.bold) ? ` b=\"${opts.bold ? '1' : '0'}\"` : '';\n runProps += (opts === null || opts === void 0 ? void 0 : opts.italic) ? ` i=\"${opts.italic ? '1' : '0'}\"` : '';\n runProps += (opts === null || opts === void 0 ? void 0 : opts.strike) ? ` strike=\"${typeof opts.strike === 'string' ? opts.strike : 'sngStrike'}\"` : '';\n if (typeof opts.underline === 'object' && ((_a = opts.underline) === null || _a === void 0 ? void 0 : _a.style)) {\n runProps += ` u=\"${opts.underline.style}\"`;\n }\n else if (typeof opts.underline === 'string') {\n // DEPRECATED: opts.underline is an object as of v3.5.0\n runProps += ` u=\"${String(opts.underline)}\"`;\n }\n else if (opts.hyperlink) {\n runProps += ' u=\"sng\"';\n }\n if (opts.baseline) {\n runProps += ` baseline=\"${Math.round(opts.baseline * 50)}\"`;\n }\n else if (opts.subscript) {\n runProps += ' baseline=\"-40000\"';\n }\n else if (opts.superscript) {\n runProps += ' baseline=\"30000\"';\n }\n runProps += opts.charSpacing ? ` spc=\"${Math.round(opts.charSpacing * 100)}\" kern=\"0\"` : ''; // IMPORTANT: Also disable kerning; otherwise text won't actually expand\n runProps += ' dirty=\"0\">';\n // Color / Font / Highlight / Outline are children of <a:rPr>, so add them now before closing the runProperties tag\n if (opts.color || opts.fontFace || opts.outline || (typeof opts.underline === 'object' && opts.underline.color)) {\n if (opts.outline && typeof opts.outline === 'object') {\n runProps += `<a:ln w=\"${valToPts(opts.outline.size || 0.75)}\">${genXmlColorSelection(opts.outline.color || 'FFFFFF')}</a:ln>`;\n }\n if (opts.color)\n runProps += genXmlColorSelection({ color: opts.color, transparency: opts.transparency });\n if (opts.highlight)\n runProps += `<a:highlight>${createColorElement(opts.highlight)}</a:highlight>`;\n if (typeof opts.underline === 'object' && opts.underline.color)\n runProps += `<a:uFill>${genXmlColorSelection(opts.underline.color)}</a:uFill>`;\n if (opts.glow)\n runProps += `<a:effectLst>${createGlowElement(opts.glow, DEF_TEXT_GLOW)}</a:effectLst>`;\n if (opts.fontFace) {\n // NOTE: 'cs' = Complex Script, 'ea' = East Asian (use \"-120\" instead of \"0\" - per Issue #174); ea must come first (Issue #174)\n runProps += `<a:latin typeface=\"${opts.fontFace}\" pitchFamily=\"34\" charset=\"0\"/><a:ea typeface=\"${opts.fontFace}\" pitchFamily=\"34\" charset=\"-122\"/><a:cs typeface=\"${opts.fontFace}\" pitchFamily=\"34\" charset=\"-120\"/>`;\n }\n }\n // Hyperlink support\n if (opts.hyperlink) {\n if (typeof opts.hyperlink !== 'object')\n throw new Error('ERROR: text `hyperlink` option should be an object. Ex: `hyperlink:{url:\\'https://github.com\\'}` ');\n else if (!opts.hyperlink.url && !opts.hyperlink.slide)\n throw new Error('ERROR: \\'hyperlink requires either `url` or `slide`\\'');\n else if (opts.hyperlink.url) {\n // runProps += '<a:uFill>'+ genXmlColorSelection('0000FF') +'</a:uFill>'; // Breaks PPT2010! (Issue#74)\n runProps += `<a:hlinkClick r:id=\"rId${opts.hyperlink._rId}\" invalidUrl=\"\" action=\"\" tgtFrame=\"\" tooltip=\"${opts.hyperlink.tooltip ? encodeXmlEntities(opts.hyperlink.tooltip) : ''}\" history=\"1\" highlightClick=\"0\" endSnd=\"0\"${opts.color ? '>' : '/>'}`;\n }\n else if (opts.hyperlink.slide) {\n runProps += `<a:hlinkClick r:id=\"rId${opts.hyperlink._rId}\" action=\"ppaction://hlinksldjump\" tooltip=\"${opts.hyperlink.tooltip ? encodeXmlEntities(opts.hyperlink.tooltip) : ''}\"${opts.color ? '>' : '/>'}`;\n }\n if (opts.color) {\n runProps += ' <a:extLst>';\n runProps += ' <a:ext uri=\"{A12FA001-AC4F-418D-AE19-62706E023703}\">';\n runProps += ' <ahyp:hlinkClr xmlns:ahyp=\"http://schemas.microsoft.com/office/drawing/2018/hyperlinkcolor\" val=\"tx\"/>';\n runProps += ' </a:ext>';\n runProps += ' </a:extLst>';\n runProps += '</a:hlinkClick>';\n }\n }\n // END runProperties\n runProps += `</${runPropsTag}>`;\n return runProps;\n}\n/**\n * Build textBody text runs [`<a:r></a:r>`] for paragraphs [`<a:p>`]\n * @param {TextProps} textObj - Text object\n * @return {string} XML string\n */\nfunction genXmlTextRun(textObj) {\n // NOTE: Dont create full rPr runProps for empty [lineBreak] runs\n // Why? The size of the lineBreak wont match (eg: below it will be 18px instead of the correct 36px)\n // Do this:\n /*\n <a:p>\n <a:pPr algn=\"r\"/>\n <a:endParaRPr lang=\"en-US\" sz=\"3600\" dirty=\"0\"/>\n </a:p>\n */\n // NOT this:\n /*\n <a:p>\n <a:pPr algn=\"r\"/>\n <a:r>\n <a:rPr lang=\"en-US\" sz=\"3600\" dirty=\"0\">\n <a:solidFill>\n <a:schemeClr val=\"accent5\"/>\n </a:solidFill>\n <a:latin typeface=\"Times\" pitchFamily=\"34\" charset=\"0\"/>\n <a:ea typeface=\"Times\" pitchFamily=\"34\" charset=\"-122\"/>\n <a:cs typeface=\"Times\" pitchFamily=\"34\" charset=\"-120\"/>\n </a:rPr>\n <a:t></a:t>\n </a:r>\n <a:endParaRPr lang=\"en-US\" dirty=\"0\"/>\n </a:p>\n */\n // Return paragraph with text run\n return textObj.text ? `<a:r>${genXmlTextRunProperties(textObj.options, false)}<a:t>${encodeXmlEntities(textObj.text)}</a:t></a:r>` : '';\n}\n/**\n * Builds `<a:bodyPr></a:bodyPr>` tag for \"genXmlTextBody()\"\n * @param {ISlideObject | TableCell} slideObject - various options\n * @return {string} XML string\n */\nfunction genXmlBodyProperties(slideObject) {\n let bodyProperties = '<a:bodyPr';\n if (slideObject && slideObject._type === SLIDE_OBJECT_TYPES.text && slideObject.options._bodyProp) {\n // PPT-2019 EX: <a:bodyPr wrap=\"square\" lIns=\"1270\" tIns=\"1270\" rIns=\"1270\" bIns=\"1270\" rtlCol=\"0\" anchor=\"ctr\"/>\n // A: Enable or disable textwrapping none or square\n bodyProperties += slideObject.options._bodyProp.wrap ? ' wrap=\"square\"' : ' wrap=\"none\"';\n // B: Textbox margins [padding]\n if (slideObject.options._bodyProp.lIns || slideObject.options._bodyProp.lIns === 0)\n bodyProperties += ` lIns=\"${slideObject.options._bodyProp.lIns}\"`;\n if (slideObject.options._bodyProp.tIns || slideObject.options._bodyProp.tIns === 0)\n bodyProperties += ` tIns=\"${slideObject.options._bodyProp.tIns}\"`;\n if (slideObject.options._bodyProp.rIns || slideObject.options._bodyProp.rIns === 0)\n bodyProperties += ` rIns=\"${slideObject.options._bodyProp.rIns}\"`;\n if (slideObject.options._bodyProp.bIns || slideObject.options._bodyProp.bIns === 0)\n bodyProperties += ` bIns=\"${slideObject.options._bodyProp.bIns}\"`;\n // C: Add rtl after margins\n bodyProperties += ' rtlCol=\"0\"';\n // D: Add anchorPoints\n if (slideObject.options._bodyProp.anchor)\n bodyProperties += ' anchor=\"' + slideObject.options._bodyProp.anchor + '\"'; // VALS: [t,ctr,b]\n if (slideObject.options._bodyProp.vert)\n bodyProperties += ' vert=\"' + slideObject.options._bodyProp.vert + '\"'; // VALS: [eaVert,horz,mongolianVert,vert,vert270,wordArtVert,wordArtVertRtl]\n // E: Close <a:bodyPr element\n bodyProperties += '>';\n /**\n * F: Text Fit/AutoFit/Shrink option\n * @see: http://officeopenxml.com/drwSp-text-bodyPr-fit.php\n * @see: http://www.datypic.com/sc/ooxml/g-a_EG_TextAutofit.html\n */\n if (slideObject.options.fit) {\n // NOTE: Use of '<a:noAutofit/>' instead of '' causes issues in PPT-2013!\n if (slideObject.options.fit === 'none')\n bodyProperties += '';\n // NOTE: Shrink does not work automatically - PowerPoint calculates the `fontScale` value dynamically upon resize\n // else if (slideObject.options.fit === 'shrink') bodyProperties += '<a:normAutofit fontScale=\"85000\" lnSpcReduction=\"20000\"/>' // MS-PPT > Format shape > Text Options: \"Shrink text on overflow\"\n else if (slideObject.options.fit === 'shrink')\n bodyProperties += '<a:normAutofit/>';\n else if (slideObject.options.fit === 'resize')\n bodyProperties += '<a:spAutoFit/>';\n }\n //\n // DEPRECATED: below (@deprecated v3.3.0)\n if (slideObject.options.shrinkText)\n bodyProperties += '<a:normAutofit/>'; // MS-PPT > Format shape > Text Options: \"Shrink text on overflow\"\n /* DEPRECATED: below (@deprecated v3.3.0)\n * MS-PPT > Format shape > Text Options: \"Resize shape to fit text\" [spAutoFit]\n * NOTE: Use of '<a:noAutofit/>' in lieu of '' below causes issues in PPT-2013\n */\n bodyProperties += slideObject.options._bodyProp.autoFit ? '<a:spAutoFit/>' : '';\n // LAST: Close _bodyProp\n bodyProperties += '</a:bodyPr>';\n }\n else {\n // DEFAULT:\n bodyProperties += ' wrap=\"square\" rtlCol=\"0\">';\n bodyProperties += '</a:bodyPr>';\n }\n // LAST: Return Close _bodyProp\n return slideObject._type === SLIDE_OBJECT_TYPES.tablecell ? '<a:bodyPr/>' : bodyProperties;\n}\n/**\n * Generate the XML for text and its options (bold, bullet, etc) including text runs (word-level formatting)\n * @param {ISlideObject|TableCell} slideObj - slideObj or tableCell\n * @note PPT text lines [lines followed by line-breaks] are created using <p>-aragraph's\n * @note Bullets are a paragragh-level formatting device\n * @template\n * <p:txBody>\n * <a:bodyPr wrap=\"square\" rtlCol=\"0\">\n * <a:spAutoFit/>\n * </a:bodyPr>\n * <a:lstStyle/>\n * <a:p>\n * <a:pPr algn=\"ctr\"/>\n * <a:r>\n * <a:rPr lang=\"en-US\" dirty=\"0\" err=\"1\"/>\n * <a:t>textbox text</a:t>\n * </a:r>\n * <a:endParaRPr lang=\"en-US\" dirty=\"0\"/>\n * </a:p>\n * </p:txBody>\n * @returns XML containing the param object's text and formatting\n */\nfunction genXmlTextBody(slideObj) {\n const opts = slideObj.options || {};\n let tmpTextObjects = [];\n const arrTextObjects = [];\n // FIRST: Shapes without text, etc. may be sent here during build, but have no text to render so return an empty string\n if (opts && slideObj._type !== SLIDE_OBJECT_TYPES.tablecell && (typeof slideObj.text === 'undefined' || slideObj.text === null))\n return '';\n // STEP 1: Start textBody\n let strSlideXml = slideObj._type === SLIDE_OBJECT_TYPES.tablecell ? '<a:txBody>' : '<p:txBody>';\n // STEP 2: Add bodyProperties\n {\n // A: 'bodyPr'\n strSlideXml += genXmlBodyProperties(slideObj);\n // B: 'lstStyle'\n // NOTE: shape type 'LINE' has different text align needs (a lstStyle.lvl1pPr between bodyPr and p)\n // FIXME: LINE horiz-align doesnt work (text is always to the left inside line) (FYI: the PPT code diff is substantial!)\n if (opts.h === 0 && opts.line && opts.align)\n strSlideXml += '<a:lstStyle><a:lvl1pPr algn=\"l\"/></a:lstStyle>';\n else if (slideObj._type === 'placeholder')\n strSlideXml += `<a:lstStyle>${genXmlParagraphProperties(slideObj, true)}</a:lstStyle>`;\n else\n strSlideXml += '<a:lstStyle/>';\n }\n /* STEP 3: Modify slideObj.text to array\n CASES:\n addText( 'string' ) // string\n addText( 'line1\\n line2' ) // string with lineBreak\n addText( {text:'word1'} ) // TextProps object\n addText( ['barry','allen'] ) // array of strings\n addText( [{text:'word1'}, {text:'word2'}] ) // TextProps object array\n addText( [{text:'line1\\n line2'}, {text:'end word'}] ) // TextProps object array with lineBreak\n */\n if (typeof slideObj.text === 'string' || typeof slideObj.text === 'number') {\n // Handle cases 1,2\n tmpTextObjects.push({ text: slideObj.text.toString(), options: opts || {} });\n }\n else if (slideObj.text && !Array.isArray(slideObj.text) && typeof slideObj.text === 'object' && Object.keys(slideObj.text).includes('text')) {\n // } else if (!Array.isArray(slideObj.text) && slideObj.text!.hasOwnProperty('text')) { // 20210706: replaced with below as ts compiler rejected it\n // Handle case 3\n tmpTextObjects.push({ text: slideObj.text || '', options: slideObj.options || {} });\n }\n else if (Array.isArray(slideObj.text)) {\n // Handle cases 4,5,6\n // NOTE: use cast as text is TextProps[]|TableCell[] and their `options` dont overlap (they share the same TextBaseProps though)\n tmpTextObjects = slideObj.text.map(item => ({ text: item.text, options: item.options }));\n }\n // STEP 4: Iterate over text objects, set text/options, break into pieces if '\\n'/breakLine found\n tmpTextObjects.forEach((itext, idx) => {\n if (!itext.text)\n itext.text = '';\n // A: Set options\n itext.options = itext.options || opts || {};\n if (idx === 0 && itext.options && !itext.options.bullet && opts.bullet)\n itext.options.bullet = opts.bullet;\n // B: Cast to text-object and fix line-breaks (if needed)\n if (typeof itext.text === 'string' || typeof itext.text === 'number') {\n // 1: Convert \"\\n\" or any variation into CRLF\n itext.text = itext.text.toString().replace(/\\r*\\n/g, CRLF);\n }\n // C: If text string has line-breaks, then create a separate text-object for each (much easier than dealing with split inside a loop below)\n // NOTE: Filter for trailing lineBreak prevents the creation of an empty textObj as the last item\n if (itext.text.includes(CRLF) && itext.text.match(/\\n$/g) === null) {\n itext.text.split(CRLF).forEach(line => {\n itext.options.breakLine = true;\n arrTextObjects.push({ text: line, options: itext.options });\n });\n }\n else {\n arrTextObjects.push(itext);\n }\n });\n // STEP 5: Group textObj into lines by checking for lineBreak, bullets, alignment change, etc.\n const arrLines = [];\n let arrTexts = [];\n arrTextObjects.forEach((textObj, idx) => {\n // A: Align or Bullet trigger new line\n if (arrTexts.length > 0 && (textObj.options.align || opts.align)) {\n // Only start a new paragraph when align *changes*\n if (textObj.options.align !== arrTextObjects[idx - 1].options.align) {\n arrLines.push(arrTexts);\n arrTexts = [];\n }\n }\n else if (arrTexts.length > 0 && textObj.options.bullet && arrTexts.length > 0) {\n arrLines.push(arrTexts);\n arrTexts = [];\n textObj.options.breakLine = false; // For cases with both `bullet` and `brekaLine` - prevent double lineBreak\n }\n // B: Add this text to current line\n arrTexts.push(textObj);\n // C: BreakLine begins new line **after** adding current text\n if (arrTexts.length > 0 && textObj.options.breakLine) {\n // Avoid starting a para right as loop is exhausted\n if (idx + 1 < arrTextObjects.length) {\n arrLines.push(arrTexts);\n arrTexts = [];\n }\n }\n // D: Flush buffer\n if (idx + 1 === arrTextObjects.length)\n arrLines.push(arrTexts);\n });\n // STEP 6: Loop over each line and create paragraph props, text run, etc.\n arrLines.forEach(line => {\n var _a;\n let reqsClosingFontSize = false;\n // A: Start paragraph, add paraProps\n strSlideXml += '<a:p>';\n // NOTE: `rtlMode` is like other opts, its propagated up to each text:options, so just check the 1st one\n let paragraphPropXml = `<a:pPr ${((_a = line[0].options) === null || _a === void 0 ? void 0 : _a.rtlMode) ? ' rtl=\"1\" ' : ''}`;\n // B: Start paragraph, loop over lines and add text runs\n line.forEach((textObj, idx) => {\n // A: Set line index\n textObj.options._lineIdx = idx;\n // A.1: Add soft break if not the first run of the line.\n if (idx > 0 && textObj.options.softBreakBefore) {\n strSlideXml += '<a:br/>';\n }\n // B: Inherit pPr-type options from parent shape's `options`\n textObj.options.align = textObj.options.align || opts.align;\n textObj.options.lineSpacing = textObj.options.lineSpacing || opts.lineSpacing;\n textObj.options.lineSpacingMultiple = textObj.options.lineSpacingMultiple || opts.lineSpacingMultiple;\n textObj.options.indentLevel = textObj.options.indentLevel || opts.indentLevel;\n textObj.options.paraSpaceBefore = textObj.options.paraSpaceBefore || opts.paraSpaceBefore;\n textObj.options.paraSpaceAfter = textObj.options.paraSpaceAfter || opts.paraSpaceAfter;\n paragraphPropXml = genXmlParagraphProperties(textObj, false);\n strSlideXml += paragraphPropXml.replace('<a:pPr></a:pPr>', ''); // IMPORTANT: Empty \"pPr\" blocks will generate needs-repair/corrupt msg\n // C: Inherit any main options (color, fontSize, etc.)\n // NOTE: We only pass the text.options to genXmlTextRun (not the Slide.options),\n // so the run building function cant just fallback to Slide.color, therefore, we need to do that here before passing options below.\n // FILTER RULE: Hyperlinks should not inherit `color` from main options (let PPT default to local color, eg: blue on MacOS)\n Object.entries(opts).filter(([key]) => !(textObj.options.hyperlink && key === 'color')).forEach(([key, val]) => {\n // if (textObj.options.hyperlink && key === 'color') null\n // NOTE: This loop will pick up unecessary keys (`x`, etc.), but it doesnt hurt anything\n if (key !== 'bullet' && !textObj.options[key])\n textObj.options[key] = val;\n });\n // D: Add formatted textrun\n strSlideXml += genXmlTextRun(textObj);\n // E: Flag close fontSize for empty [lineBreak] elements\n if ((!textObj.text && opts.fontSize) || textObj.options.fontSize) {\n reqsClosingFontSize = true;\n opts.fontSize = opts.fontSize || textObj.options.fontSize;\n }\n });\n /* C: Append 'endParaRPr' (when needed) and close current open paragraph\n * NOTE: (ISSUE#20, ISSUE#193): Add 'endParaRPr' with font/size props or PPT default (Arial/18pt en-us) is used making row \"too tall\"/not honoring options\n */\n if (slideObj._type === SLIDE_OBJECT_TYPES.tablecell && (opts.fontSize || opts.fontFace)) {\n if (opts.fontFace) {\n strSlideXml += `<a:endParaRPr lang=\"${opts.lang || 'en-US'}\"` + (opts.fontSize ? ` sz=\"${Math.round(opts.fontSize * 100)}\"` : '') + ' dirty=\"0\">';\n strSlideXml += `<a:latin typeface=\"${opts.fontFace}\" charset=\"0\"/>`;\n strSlideXml += `<a:ea typeface=\"${opts.fontFace}\" charset=\"0\"/>`;\n strSlideXml += `<a:cs typeface=\"${opts.fontFace}\" charset=\"0\"/>`;\n strSlideXml += '</a:endParaRPr>';\n }\n else {\n strSlideXml += `<a:endParaRPr lang=\"${opts.lang || 'en-US'}\"` + (opts.fontSize ? ` sz=\"${Math.round(opts.fontSize * 100)}\"` : '') + ' dirty=\"0\"/>';\n }\n }\n else if (reqsClosingFontSize) {\n // Empty [lineBreak] lines should not contain runProp, however, they need to specify fontSize in `endParaRPr`\n strSlideXml += `<a:endParaRPr lang=\"${opts.lang || 'en-US'}\"` + (opts.fontSize ? ` sz=\"${Math.round(opts.fontSize * 100)}\"` : '') + ' dirty=\"0\"/>';\n }\n else {\n strSlideXml += `<a:endParaRPr lang=\"${opts.lang || 'en-US'}\" dirty=\"0\"/>`; // Added 20180101 to address PPT-2007 issues\n }\n // D: End paragraph\n strSlideXml += '</a:p>';\n });\n // IMPORTANT: An empty txBody will cause \"needs repair\" error! Add <p> content if missing.\n // [FIXED in v3.13.0]: This fixes issue with table auto-paging where some cells w/b empty on subsequent pages.\n /*\n <a:txBody>\n <a:bodyPr/>\n <a:lstStyle/>\n </a:txBody>\n */\n if (strSlideXml.indexOf('<a:p>') === -1) {\n strSlideXml += '<a:p><a:endParaRPr/></a:p>';\n }\n // STEP 7: Close the textBody\n strSlideXml += slideObj._type === SLIDE_OBJECT_TYPES.tablecell ? '</a:txBody>' : '</p:txBody>';\n // LAST: Return XML\n return strSlideXml;\n}\n/**\n * Generate an XML Placeholder\n * @param {ISlideObject} placeholderObj\n * @returns XML\n */\nfunction genXmlPlaceholder(placeholderObj) {\n var _a, _b;\n if (!placeholderObj)\n return '';\n const placeholderIdx = ((_a = placeholderObj.options) === null || _a === void 0 ? void 0 : _a._placeholderIdx) ? placeholderObj.options._placeholderIdx : '';\n const placeholderTyp = ((_b = placeholderObj.options) === null || _b === void 0 ? void 0 : _b._placeholderType) ? placeholderObj.options._placeholderType : '';\n const placeholderType = placeholderTyp && PLACEHOLDER_TYPES[placeholderTyp] ? (PLACEHOLDER_TYPES[placeholderTyp]).toString() : '';\n return `<p:ph\n\t\t${placeholderIdx ? ' idx=\"' + placeholderIdx.toString() + '\"' : ''}\n\t\t${placeholderType && PLACEHOLDER_TYPES[placeholderType] ? ` type=\"${placeholderType}\"` : ''}\n\t\t${placeholderObj.text && placeholderObj.text.length > 0 ? ' hasCustomPrompt=\"1\"' : ''}\n\t\t/>`;\n}\n// XML-GEN: First 6 functions create the base /ppt files\n/**\n * Generate XML ContentType\n * @param {PresSlide[]} slides - slides\n * @param {SlideLayout[]} slideLayouts - slide layouts\n * @param {PresSlide} masterSlide - master slide\n * @returns XML\n */\nfunction makeXmlContTypes(slides, slideLayouts, masterSlide) {\n let strXml = '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>' + CRLF;\n strXml += '<Types xmlns=\"http://schemas.openxmlformats.org/package/2006/content-types\">';\n strXml += '<Default Extension=\"xml\" ContentType=\"application/xml\"/>';\n strXml += '<Default Extension=\"rels\" ContentType=\"application/vnd.openxmlformats-package.relationships+xml\"/>';\n strXml += '<Default Extension=\"jpeg\" ContentType=\"image/jpeg\"/>';\n strXml += '<Default Extension=\"jpg\" ContentType=\"image/jpg\"/>';\n strXml += '<Default Extension=\"svg\" ContentType=\"image/svg+xml\"/>';\n // STEP 1: Add standard/any media types used in Presentation\n strXml += '<Default Extension=\"png\" ContentType=\"image/png\"/>';\n strXml += '<Default Extension=\"gif\" ContentType=\"image/gif\"/>';\n strXml += '<Default Extension=\"m4v\" ContentType=\"video/mp4\"/>'; // NOTE: Hard-Code this extension as it wont be created in loop below (as extn !== type)\n strXml += '<Default Extension=\"mp4\" ContentType=\"video/mp4\"/>'; // NOTE: Hard-Code this extension as it wont be created in loop below (as extn !== type)\n slides.forEach(slide => {\n (slide._relsMedia || []).forEach(rel => {\n if (rel.type !== 'image' && rel.type !== 'online' && rel.type !== 'chart' && rel.extn !== 'm4v' && !strXml.includes(rel.type)) {\n strXml += '<Default Extension=\"' + rel.extn + '\" ContentType=\"' + rel.type + '\"/>';\n }\n });\n });\n strXml += '<Default Extension=\"vml\" ContentType=\"application/vnd.openxmlformats-officedocument.vmlDrawing\"/>';\n strXml += '<Default Extension=\"xlsx\" ContentType=\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"/>';\n // STEP 2: Add presentation and slide master(s)/slide(s)\n strXml += '<Override PartName=\"/ppt/presentation.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml\"/>';\n strXml += '<Override PartName=\"/ppt/notesMasters/notesMaster1.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.presentationml.notesMaster+xml\"/>';\n slides.forEach((slide, idx) => {\n strXml += `<Override PartName=\"/ppt/slideMasters/slideMaster${idx + 1}.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.presentationml.slideMaster+xml\"/>`;\n strXml += `<Override PartName=\"/ppt/slides/slide${idx + 1}.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.presentationml.slide+xml\"/>`;\n // Add charts if any\n slide._relsChart.forEach(rel => {\n strXml += `<Override PartName=\"${rel.Target}\" ContentType=\"application/vnd.openxmlformats-officedocument.drawingml.chart+xml\"/>`;\n });\n });\n // STEP 3: Core PPT\n strXml += '<Override PartName=\"/ppt/presProps.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.presentationml.presProps+xml\"/>';\n strXml += '<Override PartName=\"/ppt/viewProps.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.presentationml.viewProps+xml\"/>';\n strXml += '<Override PartName=\"/ppt/theme/theme1.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.theme+xml\"/>';\n strXml += '<Override PartName=\"/ppt/tableStyles.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.presentationml.tableStyles+xml\"/>';\n // STEP 4: Add Slide Layouts\n slideLayouts.forEach((layout, idx) => {\n strXml += `<Override PartName=\"/ppt/slideLayouts/slideLayout${idx + 1}.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.presentationml.slideLayout+xml\"/>`;\n (layout._relsChart || []).forEach(rel => {\n strXml += ' <Override PartName=\"' + rel.Target + '\" ContentType=\"application/vnd.openxmlformats-officedocument.drawingml.chart+xml\"/>';\n });\n });\n // STEP 5: Add notes slide(s)\n slides.forEach((_slide, idx) => {\n strXml += `<Override PartName=\"/ppt/notesSlides/notesSlide${idx + 1}.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.presentationml.notesSlide+xml\"/>`;\n });\n // STEP 6: Add rels\n masterSlide._relsChart.forEach(rel => {\n strXml += ' <Override PartName=\"' + rel.Target + '\" ContentType=\"application/vnd.openxmlformats-officedocument.drawingml.chart+xml\"/>';\n });\n masterSlide._relsMedia.forEach(rel => {\n if (rel.type !== 'image' && rel.type !== 'online' && rel.type !== 'chart' && rel.extn !== 'm4v' && !strXml.includes(rel.type)) {\n strXml += ' <Default Extension=\"' + rel.extn + '\" ContentType=\"' + rel.type + '\"/>';\n }\n });\n // LAST: Finish XML (Resume core)\n strXml += ' <Override PartName=\"/docProps/core.xml\" ContentType=\"application/vnd.openxmlformats-package.core-properties+xml\"/>';\n strXml += ' <Override PartName=\"/docProps/app.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.extended-properties+xml\"/>';\n strXml += '</Types>';\n return strXml;\n}\n/**\n * Creates `_rels/.rels`\n * @returns XML\n */\nfunction makeXmlRootRels() {\n return `<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>${CRLF}<Relationships xmlns=\"http://schemas.openxmlformats.org/package/2006/relationships\">\n\t\t<Relationship Id=\"rId1\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties\" Target=\"docProps/app.xml\"/>\n\t\t<Relationship Id=\"rId2\" Type=\"http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties\" Target=\"docProps/core.xml\"/>\n\t\t<Relationship Id=\"rId3\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument\" Target=\"ppt/presentation.xml\"/>\n\t\t</Relationships>`;\n}\n/**\n * Creates `docProps/app.xml`\n * @param {PresSlide[]} slides - Presenation Slides\n * @param {string} company - \"Company\" metadata\n * @returns XML\n */\nfunction makeXmlApp(slides, company) {\n return `<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>${CRLF}<Properties xmlns=\"http://schemas.openxmlformats.org/officeDocument/2006/extended-properties\" xmlns:vt=\"http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes\">\n\t<TotalTime>0</TotalTime>\n\t<Words>0</Words>\n\t<Application>Microsoft Office PowerPoint</Application>\n\t<PresentationFormat>On-screen Show (16:9)</PresentationFormat>\n\t<Paragraphs>0</Paragraphs>\n\t<Slides>${slides.length}</Slides>\n\t<Notes>${slides.length}</Notes>\n\t<HiddenSlides>0</HiddenSlides>\n\t<MMClips>0</MMClips>\n\t<ScaleCrop>false</ScaleCrop>\n\t<HeadingPairs>\n\t\t<vt:vector size=\"6\" baseType=\"variant\">\n\t\t\t<vt:variant><vt:lpstr>Fonts Used</vt:lpstr></vt:variant>\n\t\t\t<vt:variant><vt:i4>2</vt:i4></vt:variant>\n\t\t\t<vt:variant><vt:lpstr>Theme</vt:lpstr></vt:variant>\n\t\t\t<vt:variant><vt:i4>1</vt:i4></vt:variant>\n\t\t\t<vt:variant><vt:lpstr>Slide Titles</vt:lpstr></vt:variant>\n\t\t\t<vt:variant><vt:i4>${slides.length}</vt:i4></vt:variant>\n\t\t</vt:vector>\n\t</HeadingPairs>\n\t<TitlesOfParts>\n\t\t<vt:vector size=\"${slides.length + 1 + 2}\" baseType=\"lpstr\">\n\t\t\t<vt:lpstr>Arial</vt:lpstr>\n\t\t\t<vt:lpstr>Calibri</vt:lpstr>\n\t\t\t<vt:lpstr>Office Theme</vt:lpstr>\n\t\t\t${slides.map((_slideObj, idx) => `<vt:lpstr>Slide ${idx + 1}</vt:lpstr>`).join('')}\n\t\t</vt:vector>\n\t</TitlesOfParts>\n\t<Company>${company}</Company>\n\t<LinksUpToDate>false</LinksUpToDate>\n\t<SharedDoc>false</SharedDoc>\n\t<HyperlinksChanged>false</HyperlinksChanged>\n\t<AppVersion>16.0000</AppVersion>\n\t</Properties>`;\n}\n/**\n * Creates `docProps/core.xml`\n * @param {string} title - metadata data\n * @param {string} subject - metadata data\n * @param {string} author - metadata value\n * @param {string} revision - metadata value\n * @returns XML\n */\nfunction makeXmlCore(title, subject, author, revision) {\n return `<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n\t<cp:coreProperties xmlns:cp=\"http://schemas.openxmlformats.org/package/2006/metadata/core-properties\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dcterms=\"http://purl.org/dc/terms/\" xmlns:dcmitype=\"http://purl.org/dc/dcmitype/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n\t\t<dc:title>${encodeXmlEntities(title)}</dc:title>\n\t\t<dc:subject>${encodeXmlEntities(subject)}</dc:subject>\n\t\t<dc:creator>${encodeXmlEntities(author)}</dc:creator>\n\t\t<cp:lastModifiedBy>${encodeXmlEntities(author)}</cp:lastModifiedBy>\n\t\t<cp:revision>${revision}</cp:revision>\n\t\t<dcterms:created xsi:type=\"dcterms:W3CDTF\">${new Date().toISOString().replace(/\\.\\d\\d\\dZ/, 'Z')}</dcterms:created>\n\t\t<dcterms:modified xsi:type=\"dcterms:W3CDTF\">${new Date().toISOString().replace(/\\.\\d\\d\\dZ/, 'Z')}</dcterms:modified>\n\t</cp:coreProperties>`;\n}\n/**\n * Creates `ppt/_rels/presentation.xml.rels`\n * @param {PresSlide[]} slides - Presenation Slides\n * @returns XML\n */\nfunction makeXmlPresentationRels(slides) {\n let intRelNum = 1;\n let strXml = '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>' + CRLF;\n strXml += '<Relationships xmlns=\"http://schemas.openxmlformats.org/package/2006/relationships\">';\n strXml += '<Relationship Id=\"rId1\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideMaster\" Target=\"slideMasters/slideMaster1.xml\"/>';\n for (let idx = 1; idx <= slides.length; idx++) {\n strXml += `<Relationship Id=\"rId${++intRelNum}\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/slide\" Target=\"slides/slide${idx}.xml\"/>`;\n }\n intRelNum++;\n strXml +=\n `<Relationship Id=\"rId${intRelNum + 0}\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/notesMaster\" Target=\"notesMasters/notesMaster1.xml\"/>` +\n `<Relationship Id=\"rId${intRelNum + 1}\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/presProps\" Target=\"presProps.xml\"/>` +\n `<Relationship Id=\"rId${intRelNum + 2}\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/viewProps\" Target=\"viewProps.xml\"/>` +\n `<Relationship Id=\"rId${intRelNum + 3}\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme\" Target=\"theme/theme1.xml\"/>` +\n `<Relationship Id=\"rId${intRelNum + 4}\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/tableStyles\" Target=\"tableStyles.xml\"/>` +\n '</Relationships>';\n return strXml;\n}\n// XML-GEN: Functions that run 1-N times (once for each Slide)\n/**\n * Generates XML for the slide file (`ppt/slides/slide1.xml`)\n * @param {PresSlide} slide - the slide object to transform into XML\n * @return {string} XML\n */\nfunction makeXmlSlide(slide) {\n return (`<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>${CRLF}` +\n '<p:sld xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" ' +\n 'xmlns:p=\"http://schemas.openxmlformats.org/presentationml/2006/main\"' +\n `${(slide === null || slide === void 0 ? void 0 : slide.hidden) ? ' show=\"0\"' : ''}>` +\n `${slideObjectToXml(slide)}` +\n '<p:clrMapOvr><a:masterClrMapping/></p:clrMapOvr></p:sld>');\n}\n/**\n * Get text content of Notes from Slide\n * @param {PresSlide} slide - the slide object to transform into XML\n * @return {string} notes text\n */\nfunction getNotesFromSlide(slide) {\n let notesText = '';\n slide._slideObjects.forEach(data => {\n if (data._type === SLIDE_OBJECT_TYPES.notes)\n notesText += (data === null || data === void 0 ? void 0 : data.text) && data.text[0] ? data.text[0].text : '';\n });\n return notesText.replace(/\\r*\\n/g, CRLF);\n}\n/**\n * Generate XML for Notes Master (notesMaster1.xml)\n * @returns {string} XML\n */\nfunction makeXmlNotesMaster() {\n return `<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>${CRLF}<p:notesMaster xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" xmlns:p=\"http://schemas.openxmlformats.org/presentationml/2006/main\"><p:cSld><p:bg><p:bgRef idx=\"1001\"><a:schemeClr val=\"bg1\"/></p:bgRef></p:bg><p:spTree><p:nvGrpSpPr><p:cNvPr id=\"1\" name=\"\"/><p:cNvGrpSpPr/><p:nvPr/></p:nvGrpSpPr><p:grpSpPr><a:xfrm><a:off x=\"0\" y=\"0\"/><a:ext cx=\"0\" cy=\"0\"/><a:chOff x=\"0\" y=\"0\"/><a:chExt cx=\"0\" cy=\"0\"/></a:xfrm></p:grpSpPr><p:sp><p:nvSpPr><p:cNvPr id=\"2\" name=\"Header Placeholder 1\"/><p:cNvSpPr><a:spLocks noGrp=\"1\"/></p:cNvSpPr><p:nvPr><p:ph type=\"hdr\" sz=\"quarter\"/></p:nvPr></p:nvSpPr><p:spPr><a:xfrm><a:off x=\"0\" y=\"0\"/><a:ext cx=\"2971800\" cy=\"458788\"/></a:xfrm><a:prstGeom prst=\"rect\"><a:avLst/></a:prstGeom></p:spPr><p:txBody><a:bodyPr vert=\"horz\" lIns=\"91440\" tIns=\"45720\" rIns=\"91440\" bIns=\"45720\" rtlCol=\"0\"/><a:lstStyle><a:lvl1pPr algn=\"l\"><a:defRPr sz=\"1200\"/></a:lvl1pPr></a:lstStyle><a:p><a:endParaRPr lang=\"en-US\"/></a:p></p:txBody></p:sp><p:sp><p:nvSpPr><p:cNvPr id=\"3\" name=\"Date Placeholder 2\"/><p:cNvSpPr><a:spLocks noGrp=\"1\"/></p:cNvSpPr><p:nvPr><p:ph type=\"dt\" idx=\"1\"/></p:nvPr></p:nvSpPr><p:spPr><a:xfrm><a:off x=\"3884613\" y=\"0\"/><a:ext cx=\"2971800\" cy=\"458788\"/></a:xfrm><a:prstGeom prst=\"rect\"><a:avLst/></a:prstGeom></p:spPr><p:txBody><a:bodyPr vert=\"horz\" lIns=\"91440\" tIns=\"45720\" rIns=\"91440\" bIns=\"45720\" rtlCol=\"0\"/><a:lstStyle><a:lvl1pPr algn=\"r\"><a:defRPr sz=\"1200\"/></a:lvl1pPr></a:lstStyle><a:p><a:fld id=\"{5282F153-3F37-0F45-9E97-73ACFA13230C}\" type=\"datetimeFigureOut\"><a:rPr lang=\"en-US\"/><a:t>7/23/19</a:t></a:fld><a:endParaRPr lang=\"en-US\"/></a:p></p:txBody></p:sp><p:sp><p:nvSpPr><p:cNvPr id=\"4\" name=\"Slide Image Placeholder 3\"/><p:cNvSpPr><a:spLocks noGrp=\"1\" noRot=\"1\" noChangeAspect=\"1\"/></p:cNvSpPr><p:nvPr><p:ph type=\"sldImg\" idx=\"2\"/></p:nvPr></p:nvSpPr><p:spPr><a:xfrm><a:off x=\"685800\" y=\"1143000\"/><a:ext cx=\"5486400\" cy=\"3086100\"/></a:xfrm><a:prstGeom prst=\"rect\"><a:avLst/></a:prstGeom><a:noFill/><a:ln w=\"12700\"><a:solidFill><a:prstClr val=\"black\"/></a:solidFill></a:ln></p:spPr><p:txBody><a:bodyPr vert=\"horz\" lIns=\"91440\" tIns=\"45720\" rIns=\"91440\" bIns=\"45720\" rtlCol=\"0\" anchor=\"ctr\"/><a:lstStyle/><a:p><a:endParaRPr lang=\"en-US\"/></a:p></p:txBody></p:sp><p:sp><p:nvSpPr><p:cNvPr id=\"5\" name=\"Notes Placeholder 4\"/><p:cNvSpPr><a:spLocks noGrp=\"1\"/></p:cNvSpPr><p:nvPr><p:ph type=\"body\" sz=\"quarter\" idx=\"3\"/></p:nvPr></p:nvSpPr><p:spPr><a:xfrm><a:off x=\"685800\" y=\"4400550\"/><a:ext cx=\"5486400\" cy=\"3600450\"/></a:xfrm><a:prstGeom prst=\"rect\"><a:avLst/></a:prstGeom></p:spPr><p:txBody><a:bodyPr vert=\"horz\" lIns=\"91440\" tIns=\"45720\" rIns=\"91440\" bIns=\"45720\" rtlCol=\"0\"/><a:lstStyle/><a:p><a:pPr lvl=\"0\"/><a:r><a:rPr lang=\"en-US\"/><a:t>Click to edit Master text styles</a:t></a:r></a:p><a:p><a:pPr lvl=\"1\"/><a:r><a:rPr lang=\"en-US\"/><a:t>Second level</a:t></a:r></a:p><a:p><a:pPr lvl=\"2\"/><a:r><a:rPr lang=\"en-US\"/><a:t>Third level</a:t></a:r></a:p><a:p><a:pPr lvl=\"3\"/><a:r><a:rPr lang=\"en-US\"/><a:t>Fourth level</a:t></a:r></a:p><a:p><a:pPr lvl=\"4\"/><a:r><a:rPr lang=\"en-US\"/><a:t>Fifth level</a:t></a:r></a:p></p:txBody></p:sp><p:sp><p:nvSpPr><p:cNvPr id=\"6\" name=\"Footer Placeholder 5\"/><p:cNvSpPr><a:spLocks noGrp=\"1\"/></p:cNvSpPr><p:nvPr><p:ph type=\"ftr\" sz=\"quarter\" idx=\"4\"/></p:nvPr></p:nvSpPr><p:spPr><a:xfrm><a:off x=\"0\" y=\"8685213\"/><a:ext cx=\"2971800\" cy=\"458787\"/></a:xfrm><a:prstGeom prst=\"rect\"><a:avLst/></a:prstGeom></p:spPr><p:txBody><a:bodyPr vert=\"horz\" lIns=\"91440\" tIns=\"45720\" rIns=\"91440\" bIns=\"45720\" rtlCol=\"0\" anchor=\"b\"/><a:lstStyle><a:lvl1pPr algn=\"l\"><a:defRPr sz=\"1200\"/></a:lvl1pPr></a:lstStyle><a:p><a:endParaRPr lang=\"en-US\"/></a:p></p:txBody></p:sp><p:sp><p:nvSpPr><p:cNvPr id=\"7\" name=\"Slide Number Placeholder 6\"/><p:cNvSpPr><a:spLocks noGrp=\"1\"/></p:cNvSpPr><p:nvPr><p:ph type=\"sldNum\" sz=\"quarter\" idx=\"5\"/></p:nvPr></p:nvSpPr><p:spPr><a:xfrm><a:off x=\"3884613\" y=\"8685213\"/><a:ext cx=\"2971800\" cy=\"458787\"/></a:xfrm><a:prstGeom prst=\"rect\"><a:avLst/></a:prstGeom></p:spPr><p:txBody><a:bodyPr vert=\"horz\" lIns=\"91440\" tIns=\"45720\" rIns=\"91440\" bIns=\"45720\" rtlCol=\"0\" anchor=\"b\"/><a:lstStyle><a:lvl1pPr algn=\"r\"><a:defRPr sz=\"1200\"/></a:lvl1pPr></a:lstStyle><a:p><a:fld id=\"{CE5E9CC1-C706-0F49-92D6-E571CC5EEA8F}\" type=\"slidenum\"><a:rPr lang=\"en-US\"/><a:t>‹#›</a:t></a:fld><a:endParaRPr lang=\"en-US\"/></a:p></p:txBody></p:sp></p:spTree><p:extLst><p:ext uri=\"{BB962C8B-B14F-4D97-AF65-F5344CB8AC3E}\"><p14:creationId xmlns:p14=\"http://schemas.microsoft.com/office/powerpoint/2010/main\" val=\"1024086991\"/></p:ext></p:extLst></p:cSld><p:clrMap bg1=\"lt1\" tx1=\"dk1\" bg2=\"lt2\" tx2=\"dk2\" accent1=\"accent1\" accent2=\"accent2\" accent3=\"accent3\" accent4=\"accent4\" accent5=\"accent5\" accent6=\"accent6\" hlink=\"hlink\" folHlink=\"folHlink\"/><p:notesStyle><a:lvl1pPr marL=\"0\" algn=\"l\" defTabSz=\"914400\" rtl=\"0\" eaLnBrk=\"1\" latinLnBrk=\"0\" hangingPunct=\"1\"><a:defRPr sz=\"1200\" kern=\"1200\"><a:solidFill><a:schemeClr val=\"tx1\"/></a:solidFill><a:latin typeface=\"+mn-lt\"/><a:ea typeface=\"+mn-ea\"/><a:cs typeface=\"+mn-cs\"/></a:defRPr></a:lvl1pPr><a:lvl2pPr marL=\"457200\" algn=\"l\" defTabSz=\"914400\" rtl=\"0\" eaLnBrk=\"1\" latinLnBrk=\"0\" hangingPunct=\"1\"><a:defRPr sz=\"1200\" kern=\"1200\"><a:solidFill><a:schemeClr val=\"tx1\"/></a:solidFill><a:latin typeface=\"+mn-lt\"/><a:ea typeface=\"+mn-ea\"/><a:cs typeface=\"+mn-cs\"/></a:defRPr></a:lvl2pPr><a:lvl3pPr marL=\"914400\" algn=\"l\" defTabSz=\"914400\" rtl=\"0\" eaLnBrk=\"1\" latinLnBrk=\"0\" hangingPunct=\"1\"><a:defRPr sz=\"1200\" kern=\"1200\"><a:solidFill><a:schemeClr val=\"tx1\"/></a:solidFill><a:latin typeface=\"+mn-lt\"/><a:ea typeface=\"+mn-ea\"/><a:cs typeface=\"+mn-cs\"/></a:defRPr></a:lvl3pPr><a:lvl4pPr marL=\"1371600\" algn=\"l\" defTabSz=\"914400\" rtl=\"0\" eaLnBrk=\"1\" latinLnBrk=\"0\" hangingPunct=\"1\"><a:defRPr sz=\"1200\" kern=\"1200\"><a:solidFill><a:schemeClr val=\"tx1\"/></a:solidFill><a:latin typeface=\"+mn-lt\"/><a:ea typeface=\"+mn-ea\"/><a:cs typeface=\"+mn-cs\"/></a:defRPr></a:lvl4pPr><a:lvl5pPr marL=\"1828800\" algn=\"l\" defTabSz=\"914400\" rtl=\"0\" eaLnBrk=\"1\" latinLnBrk=\"0\" hangingPunct=\"1\"><a:defRPr sz=\"1200\" kern=\"1200\"><a:solidFill><a:schemeClr val=\"tx1\"/></a:solidFill><a:latin typeface=\"+mn-lt\"/><a:ea typeface=\"+mn-ea\"/><a:cs typeface=\"+mn-cs\"/></a:defRPr></a:lvl5pPr><a:lvl6pPr marL=\"2286000\" algn=\"l\" defTabSz=\"914400\" rtl=\"0\" eaLnBrk=\"1\" latinLnBrk=\"0\" hangingPunct=\"1\"><a:defRPr sz=\"1200\" kern=\"1200\"><a:solidFill><a:schemeClr val=\"tx1\"/></a:solidFill><a:latin typeface=\"+mn-lt\"/><a:ea typeface=\"+mn-ea\"/><a:cs typeface=\"+mn-cs\"/></a:defRPr></a:lvl6pPr><a:lvl7pPr marL=\"2743200\" algn=\"l\" defTabSz=\"914400\" rtl=\"0\" eaLnBrk=\"1\" latinLnBrk=\"0\" hangingPunct=\"1\"><a:defRPr sz=\"1200\" kern=\"1200\"><a:solidFill><a:schemeClr val=\"tx1\"/></a:solidFill><a:latin typeface=\"+mn-lt\"/><a:ea typeface=\"+mn-ea\"/><a:cs typeface=\"+mn-cs\"/></a:defRPr></a:lvl7pPr><a:lvl8pPr marL=\"3200400\" algn=\"l\" defTabSz=\"914400\" rtl=\"0\" eaLnBrk=\"1\" latinLnBrk=\"0\" hangingPunct=\"1\"><a:defRPr sz=\"1200\" kern=\"1200\"><a:solidFill><a:schemeClr val=\"tx1\"/></a:solidFill><a:latin typeface=\"+mn-lt\"/><a:ea typeface=\"+mn-ea\"/><a:cs typeface=\"+mn-cs\"/></a:defRPr></a:lvl8pPr><a:lvl9pPr marL=\"3657600\" algn=\"l\" defTabSz=\"914400\" rtl=\"0\" eaLnBrk=\"1\" latinLnBrk=\"0\" hangingPunct=\"1\"><a:defRPr sz=\"1200\" kern=\"1200\"><a:solidFill><a:schemeClr val=\"tx1\"/></a:solidFill><a:latin typeface=\"+mn-lt\"/><a:ea typeface=\"+mn-ea\"/><a:cs typeface=\"+mn-cs\"/></a:defRPr></a:lvl9pPr></p:notesStyle></p:notesMaster>`;\n}\n/**\n * Creates Notes Slide (`ppt/notesSlides/notesSlide1.xml`)\n * @param {PresSlide} slide - the slide object to transform into XML\n * @return {string} XML\n */\nfunction makeXmlNotesSlide(slide) {\n return (`<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>${CRLF}<p:notes xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" xmlns:p=\"http://schemas.openxmlformats.org/presentationml/2006/main\"><p:cSld><p:spTree><p:nvGrpSpPr><p:cNvPr id=\"1\" name=\"\"/><p:cNvGrpSpPr/><p:nvPr/></p:nvGrpSpPr><p:grpSpPr><a:xfrm><a:off x=\"0\" y=\"0\"/><a:ext cx=\"0\" cy=\"0\"/><a:chOff x=\"0\" y=\"0\"/><a:chExt cx=\"0\" cy=\"0\"/></a:xfrm></p:grpSpPr><p:sp><p:nvSpPr><p:cNvPr id=\"2\" name=\"Slide Image Placeholder 1\"/><p:cNvSpPr><a:spLocks noGrp=\"1\" noRot=\"1\" noChangeAspect=\"1\"/></p:cNvSpPr><p:nvPr><p:ph type=\"sldImg\"/></p:nvPr></p:nvSpPr><p:spPr/></p:sp><p:sp><p:nvSpPr><p:cNvPr id=\"3\" name=\"Notes Placeholder 2\"/><p:cNvSpPr><a:spLocks noGrp=\"1\"/></p:cNvSpPr><p:nvPr><p:ph type=\"body\" idx=\"1\"/></p:nvPr></p:nvSpPr><p:spPr/><p:txBody><a:bodyPr/><a:lstStyle/><a:p><a:r><a:rPr lang=\"en-US\" dirty=\"0\"/><a:t>${encodeXmlEntities(getNotesFromSlide(slide))}</a:t></a:r><a:endParaRPr lang=\"en-US\" dirty=\"0\"/></a:p></p:txBody></p:sp><p:sp><p:nvSpPr><p:cNvPr id=\"4\" name=\"Slide Number Placeholder 3\"/><p:cNvSpPr><a:spLocks noGrp=\"1\"/></p:cNvSpPr><p:nvPr><p:ph type=\"sldNum\" sz=\"quarter\" idx=\"10\"/></p:nvPr></p:nvSpPr><p:spPr/><p:txBody><a:bodyPr/><a:lstStyle/><a:p><a:fld id=\"${SLDNUMFLDID}\" type=\"slidenum\"><a:rPr lang=\"en-US\"/><a:t>${slide._slideNum}</a:t></a:fld><a:endParaRPr lang=\"en-US\"/></a:p></p:txBody></p:sp></p:spTree><p:extLst><p:ext uri=\"{BB962C8B-B14F-4D97-AF65-F5344CB8AC3E}\"><p14:creationId xmlns:p14=\"http://schemas.microsoft.com/office/powerpoint/2010/main\" val=\"1024086991\"/></p:ext></p:extLst></p:cSld><p:clrMapOvr><a:masterClrMapping/></p:clrMapOvr></p:notes>`);\n}\n/**\n * Generates the XML layout resource from a layout object\n * @param {SlideLayout} layout - slide layout (master)\n * @return {string} XML\n */\nfunction makeXmlLayout(layout) {\n return `<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n\t\t<p:sldLayout xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" xmlns:p=\"http://schemas.openxmlformats.org/presentationml/2006/main\" preserve=\"1\">\n\t\t${slideObjectToXml(layout)}\n\t\t<p:clrMapOvr><a:masterClrMapping/></p:clrMapOvr></p:sldLayout>`;\n}\n/**\n * Creates Slide Master 1 (`ppt/slideMasters/slideMaster1.xml`)\n * @param {PresSlide} slide - slide object that represents master slide layout\n * @param {SlideLayout[]} layouts - slide layouts\n * @return {string} XML\n */\nfunction makeXmlMaster(slide, layouts) {\n // NOTE: Pass layouts as static rels because they are not referenced any time\n const layoutDefs = layouts.map((_layoutDef, idx) => `<p:sldLayoutId id=\"${LAYOUT_IDX_SERIES_BASE + idx}\" r:id=\"rId${slide._rels.length + idx + 1}\"/>`);\n let strXml = '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>' + CRLF;\n strXml +=\n '<p:sldMaster xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" xmlns:p=\"http://schemas.openxmlformats.org/presentationml/2006/main\">';\n strXml += slideObjectToXml(slide);\n strXml +=\n '<p:clrMap bg1=\"lt1\" tx1=\"dk1\" bg2=\"lt2\" tx2=\"dk2\" accent1=\"accent1\" accent2=\"accent2\" accent3=\"accent3\" accent4=\"accent4\" accent5=\"accent5\" accent6=\"accent6\" hlink=\"hlink\" folHlink=\"folHlink\"/>';\n strXml += '<p:sldLayoutIdLst>' + layoutDefs.join('') + '</p:sldLayoutIdLst>';\n strXml += '<p:hf sldNum=\"0\" hdr=\"0\" ftr=\"0\" dt=\"0\"/>';\n strXml +=\n '<p:txStyles>' +\n ' <p:titleStyle>' +\n ' <a:lvl1pPr algn=\"ctr\" defTabSz=\"914400\" rtl=\"0\" eaLnBrk=\"1\" latinLnBrk=\"0\" hangingPunct=\"1\"><a:spcBef><a:spcPct val=\"0\"/></a:spcBef><a:buNone/><a:defRPr sz=\"4400\" kern=\"1200\"><a:solidFill><a:schemeClr val=\"tx1\"/></a:solidFill><a:latin typeface=\"+mj-lt\"/><a:ea typeface=\"+mj-ea\"/><a:cs typeface=\"+mj-cs\"/></a:defRPr></a:lvl1pPr>' +\n ' </p:titleStyle>' +\n ' <p:bodyStyle>' +\n ' <a:lvl1pPr marL=\"342900\" indent=\"-342900\" algn=\"l\" defTabSz=\"914400\" rtl=\"0\" eaLnBrk=\"1\" latinLnBrk=\"0\" hangingPunct=\"1\"><a:spcBef><a:spcPct val=\"20000\"/></a:spcBef><a:buFont typeface=\"Arial\" pitchFamily=\"34\" charset=\"0\"/><a:buChar char=\"•\"/><a:defRPr sz=\"3200\" kern=\"1200\"><a:solidFill><a:schemeClr val=\"tx1\"/></a:solidFill><a:latin typeface=\"+mn-lt\"/><a:ea typeface=\"+mn-ea\"/><a:cs typeface=\"+mn-cs\"/></a:defRPr></a:lvl1pPr>' +\n ' <a:lvl2pPr marL=\"742950\" indent=\"-285750\" algn=\"l\" defTabSz=\"914400\" rtl=\"0\" eaLnBrk=\"1\" latinLnBrk=\"0\" hangingPunct=\"1\"><a:spcBef><a:spcPct val=\"20000\"/></a:spcBef><a:buFont typeface=\"Arial\" pitchFamily=\"34\" charset=\"0\"/><a:buChar char=\"–\"/><a:defRPr sz=\"2800\" kern=\"1200\"><a:solidFill><a:schemeClr val=\"tx1\"/></a:solidFill><a:latin typeface=\"+mn-lt\"/><a:ea typeface=\"+mn-ea\"/><a:cs typeface=\"+mn-cs\"/></a:defRPr></a:lvl2pPr>' +\n ' <a:lvl3pPr marL=\"1143000\" indent=\"-228600\" algn=\"l\" defTabSz=\"914400\" rtl=\"0\" eaLnBrk=\"1\" latinLnBrk=\"0\" hangingPunct=\"1\"><a:spcBef><a:spcPct val=\"20000\"/></a:spcBef><a:buFont typeface=\"Arial\" pitchFamily=\"34\" charset=\"0\"/><a:buChar char=\"•\"/><a:defRPr sz=\"2400\" kern=\"1200\"><a:solidFill><a:schemeClr val=\"tx1\"/></a:solidFill><a:latin typeface=\"+mn-lt\"/><a:ea typeface=\"+mn-ea\"/><a:cs typeface=\"+mn-cs\"/></a:defRPr></a:lvl3pPr>' +\n ' <a:lvl4pPr marL=\"1600200\" indent=\"-228600\" algn=\"l\" defTabSz=\"914400\" rtl=\"0\" eaLnBrk=\"1\" latinLnBrk=\"0\" hangingPunct=\"1\"><a:spcBef><a:spcPct val=\"20000\"/></a:spcBef><a:buFont typeface=\"Arial\" pitchFamily=\"34\" charset=\"0\"/><a:buChar char=\"–\"/><a:defRPr sz=\"2000\" kern=\"1200\"><a:solidFill><a:schemeClr val=\"tx1\"/></a:solidFill><a:latin typeface=\"+mn-lt\"/><a:ea typeface=\"+mn-ea\"/><a:cs typeface=\"+mn-cs\"/></a:defRPr></a:lvl4pPr>' +\n ' <a:lvl5pPr marL=\"2057400\" indent=\"-228600\" algn=\"l\" defTabSz=\"914400\" rtl=\"0\" eaLnBrk=\"1\" latinLnBrk=\"0\" hangingPunct=\"1\"><a:spcBef><a:spcPct val=\"20000\"/></a:spcBef><a:buFont typeface=\"Arial\" pitchFamily=\"34\" charset=\"0\"/><a:buChar char=\"»\"/><a:defRPr sz=\"2000\" kern=\"1200\"><a:solidFill><a:schemeClr val=\"tx1\"/></a:solidFill><a:latin typeface=\"+mn-lt\"/><a:ea typeface=\"+mn-ea\"/><a:cs typeface=\"+mn-cs\"/></a:defRPr></a:lvl5pPr>' +\n ' <a:lvl6pPr marL=\"2514600\" indent=\"-228600\" algn=\"l\" defTabSz=\"914400\" rtl=\"0\" eaLnBrk=\"1\" latinLnBrk=\"0\" hangingPunct=\"1\"><a:spcBef><a:spcPct val=\"20000\"/></a:spcBef><a:buFont typeface=\"Arial\" pitchFamily=\"34\" charset=\"0\"/><a:buChar char=\"•\"/><a:defRPr sz=\"2000\" kern=\"1200\"><a:solidFill><a:schemeClr val=\"tx1\"/></a:solidFill><a:latin typeface=\"+mn-lt\"/><a:ea typeface=\"+mn-ea\"/><a:cs typeface=\"+mn-cs\"/></a:defRPr></a:lvl6pPr>' +\n ' <a:lvl7pPr marL=\"2971800\" indent=\"-228600\" algn=\"l\" defTabSz=\"914400\" rtl=\"0\" eaLnBrk=\"1\" latinLnBrk=\"0\" hangingPunct=\"1\"><a:spcBef><a:spcPct val=\"20000\"/></a:spcBef><a:buFont typeface=\"Arial\" pitchFamily=\"34\" charset=\"0\"/><a:buChar char=\"•\"/><a:defRPr sz=\"2000\" kern=\"1200\"><a:solidFill><a:schemeClr val=\"tx1\"/></a:solidFill><a:latin typeface=\"+mn-lt\"/><a:ea typeface=\"+mn-ea\"/><a:cs typeface=\"+mn-cs\"/></a:defRPr></a:lvl7pPr>' +\n ' <a:lvl8pPr marL=\"3429000\" indent=\"-228600\" algn=\"l\" defTabSz=\"914400\" rtl=\"0\" eaLnBrk=\"1\" latinLnBrk=\"0\" hangingPunct=\"1\"><a:spcBef><a:spcPct val=\"20000\"/></a:spcBef><a:buFont typeface=\"Arial\" pitchFamily=\"34\" charset=\"0\"/><a:buChar char=\"•\"/><a:defRPr sz=\"2000\" kern=\"1200\"><a:solidFill><a:schemeClr val=\"tx1\"/></a:solidFill><a:latin typeface=\"+mn-lt\"/><a:ea typeface=\"+mn-ea\"/><a:cs typeface=\"+mn-cs\"/></a:defRPr></a:lvl8pPr>' +\n ' <a:lvl9pPr marL=\"3886200\" indent=\"-228600\" algn=\"l\" defTabSz=\"914400\" rtl=\"0\" eaLnBrk=\"1\" latinLnBrk=\"0\" hangingPunct=\"1\"><a:spcBef><a:spcPct val=\"20000\"/></a:spcBef><a:buFont typeface=\"Arial\" pitchFamily=\"34\" charset=\"0\"/><a:buChar char=\"•\"/><a:defRPr sz=\"2000\" kern=\"1200\"><a:solidFill><a:schemeClr val=\"tx1\"/></a:solidFill><a:latin typeface=\"+mn-lt\"/><a:ea typeface=\"+mn-ea\"/><a:cs typeface=\"+mn-cs\"/></a:defRPr></a:lvl9pPr>' +\n ' </p:bodyStyle>' +\n ' <p:otherStyle>' +\n ' <a:defPPr><a:defRPr lang=\"en-US\"/></a:defPPr>' +\n ' <a:lvl1pPr marL=\"0\" algn=\"l\" defTabSz=\"914400\" rtl=\"0\" eaLnBrk=\"1\" latinLnBrk=\"0\" hangingPunct=\"1\"><a:defRPr sz=\"1800\" kern=\"1200\"><a:solidFill><a:schemeClr val=\"tx1\"/></a:solidFill><a:latin typeface=\"+mn-lt\"/><a:ea typeface=\"+mn-ea\"/><a:cs typeface=\"+mn-cs\"/></a:defRPr></a:lvl1pPr>' +\n ' <a:lvl2pPr marL=\"457200\" algn=\"l\" defTabSz=\"914400\" rtl=\"0\" eaLnBrk=\"1\" latinLnBrk=\"0\" hangingPunct=\"1\"><a:defRPr sz=\"1800\" kern=\"1200\"><a:solidFill><a:schemeClr val=\"tx1\"/></a:solidFill><a:latin typeface=\"+mn-lt\"/><a:ea typeface=\"+mn-ea\"/><a:cs typeface=\"+mn-cs\"/></a:defRPr></a:lvl2pPr>' +\n ' <a:lvl3pPr marL=\"914400\" algn=\"l\" defTabSz=\"914400\" rtl=\"0\" eaLnBrk=\"1\" latinLnBrk=\"0\" hangingPunct=\"1\"><a:defRPr sz=\"1800\" kern=\"1200\"><a:solidFill><a:schemeClr val=\"tx1\"/></a:solidFill><a:latin typeface=\"+mn-lt\"/><a:ea typeface=\"+mn-ea\"/><a:cs typeface=\"+mn-cs\"/></a:defRPr></a:lvl3pPr>' +\n ' <a:lvl4pPr marL=\"1371600\" algn=\"l\" defTabSz=\"914400\" rtl=\"0\" eaLnBrk=\"1\" latinLnBrk=\"0\" hangingPunct=\"1\"><a:defRPr sz=\"1800\" kern=\"1200\"><a:solidFill><a:schemeClr val=\"tx1\"/></a:solidFill><a:latin typeface=\"+mn-lt\"/><a:ea typeface=\"+mn-ea\"/><a:cs typeface=\"+mn-cs\"/></a:defRPr></a:lvl4pPr>' +\n ' <a:lvl5pPr marL=\"1828800\" algn=\"l\" defTabSz=\"914400\" rtl=\"0\" eaLnBrk=\"1\" latinLnBrk=\"0\" hangingPunct=\"1\"><a:defRPr sz=\"1800\" kern=\"1200\"><a:solidFill><a:schemeClr val=\"tx1\"/></a:solidFill><a:latin typeface=\"+mn-lt\"/><a:ea typeface=\"+mn-ea\"/><a:cs typeface=\"+mn-cs\"/></a:defRPr></a:lvl5pPr>' +\n ' <a:lvl6pPr marL=\"2286000\" algn=\"l\" defTabSz=\"914400\" rtl=\"0\" eaLnBrk=\"1\" latinLnBrk=\"0\" hangingPunct=\"1\"><a:defRPr sz=\"1800\" kern=\"1200\"><a:solidFill><a:schemeClr val=\"tx1\"/></a:solidFill><a:latin typeface=\"+mn-lt\"/><a:ea typeface=\"+mn-ea\"/><a:cs typeface=\"+mn-cs\"/></a:defRPr></a:lvl6pPr>' +\n ' <a:lvl7pPr marL=\"2743200\" algn=\"l\" defTabSz=\"914400\" rtl=\"0\" eaLnBrk=\"1\" latinLnBrk=\"0\" hangingPunct=\"1\"><a:defRPr sz=\"1800\" kern=\"1200\"><a:solidFill><a:schemeClr val=\"tx1\"/></a:solidFill><a:latin typeface=\"+mn-lt\"/><a:ea typeface=\"+mn-ea\"/><a:cs typeface=\"+mn-cs\"/></a:defRPr></a:lvl7pPr>' +\n ' <a:lvl8pPr marL=\"3200400\" algn=\"l\" defTabSz=\"914400\" rtl=\"0\" eaLnBrk=\"1\" latinLnBrk=\"0\" hangingPunct=\"1\"><a:defRPr sz=\"1800\" kern=\"1200\"><a:solidFill><a:schemeClr val=\"tx1\"/></a:solidFill><a:latin typeface=\"+mn-lt\"/><a:ea typeface=\"+mn-ea\"/><a:cs typeface=\"+mn-cs\"/></a:defRPr></a:lvl8pPr>' +\n ' <a:lvl9pPr marL=\"3657600\" algn=\"l\" defTabSz=\"914400\" rtl=\"0\" eaLnBrk=\"1\" latinLnBrk=\"0\" hangingPunct=\"1\"><a:defRPr sz=\"1800\" kern=\"1200\"><a:solidFill><a:schemeClr val=\"tx1\"/></a:solidFill><a:latin typeface=\"+mn-lt\"/><a:ea typeface=\"+mn-ea\"/><a:cs typeface=\"+mn-cs\"/></a:defRPr></a:lvl9pPr>' +\n ' </p:otherStyle>' +\n '</p:txStyles>';\n strXml += '</p:sldMaster>';\n return strXml;\n}\n/**\n * Generates XML string for a slide layout relation file\n * @param {number} layoutNumber - 1-indexed number of a layout that relations are generated for\n * @param {SlideLayout[]} slideLayouts - Slide Layouts\n * @return {string} XML\n */\nfunction makeXmlSlideLayoutRel(layoutNumber, slideLayouts) {\n return slideObjectRelationsToXml(slideLayouts[layoutNumber - 1], [\n {\n target: '../slideMasters/slideMaster1.xml',\n type: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideMaster',\n },\n ]);\n}\n/**\n * Creates `ppt/_rels/slide*.xml.rels`\n * @param {PresSlide[]} slides\n * @param {SlideLayout[]} slideLayouts - Slide Layout(s)\n * @param {number} `slideNumber` 1-indexed number of a layout that relations are generated for\n * @return {string} XML\n */\nfunction makeXmlSlideRel(slides, slideLayouts, slideNumber) {\n return slideObjectRelationsToXml(slides[slideNumber - 1], [\n {\n target: `../slideLayouts/slideLayout${getLayoutIdxForSlide(slides, slideLayouts, slideNumber)}.xml`,\n type: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideLayout',\n },\n {\n target: `../notesSlides/notesSlide${slideNumber}.xml`,\n type: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/notesSlide',\n },\n ]);\n}\n/**\n * Generates XML string for a slide relation file.\n * @param {number} slideNumber - 1-indexed number of a layout that relations are generated for\n * @return {string} XML\n */\nfunction makeXmlNotesSlideRel(slideNumber) {\n return `<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n\t\t<Relationships xmlns=\"http://schemas.openxmlformats.org/package/2006/relationships\">\n\t\t\t<Relationship Id=\"rId1\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/notesMaster\" Target=\"../notesMasters/notesMaster1.xml\"/>\n\t\t\t<Relationship Id=\"rId2\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/slide\" Target=\"../slides/slide${slideNumber}.xml\"/>\n\t\t</Relationships>`;\n}\n/**\n * Creates `ppt/slideMasters/_rels/slideMaster1.xml.rels`\n * @param {PresSlide} masterSlide - Slide object\n * @param {SlideLayout[]} slideLayouts - Slide Layouts\n * @return {string} XML\n */\nfunction makeXmlMasterRel(masterSlide, slideLayouts) {\n const defaultRels = slideLayouts.map((_layoutDef, idx) => ({\n target: `../slideLayouts/slideLayout${idx + 1}.xml`,\n type: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideLayout',\n }));\n defaultRels.push({ target: '../theme/theme1.xml', type: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme' });\n return slideObjectRelationsToXml(masterSlide, defaultRels);\n}\n/**\n * Creates `ppt/notesMasters/_rels/notesMaster1.xml.rels`\n * @return {string} XML\n */\nfunction makeXmlNotesMasterRel() {\n return `<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>${CRLF}<Relationships xmlns=\"http://schemas.openxmlformats.org/package/2006/relationships\">\n\t\t<Relationship Id=\"rId1\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme\" Target=\"../theme/theme1.xml\"/>\n\t\t</Relationships>`;\n}\n/**\n * For the passed slide number, resolves name of a layout that is used for.\n * @param {PresSlide[]} slides - srray of slides\n * @param {SlideLayout[]} slideLayouts - array of slideLayouts\n * @param {number} slideNumber\n * @return {number} slide number\n */\nfunction getLayoutIdxForSlide(slides, slideLayouts, slideNumber) {\n for (let i = 0; i < slideLayouts.length; i++) {\n if (slideLayouts[i]._name === slides[slideNumber - 1]._slideLayout._name) {\n return i + 1;\n }\n }\n // IMPORTANT: Return 1 (for `slideLayout1.xml`) when no def is found\n // So all objects are in Layout1 and every slide that references it uses this layout.\n return 1;\n}\n// XML-GEN: Last 5 functions create root /ppt files\n/**\n * Creates `ppt/theme/theme1.xml`\n * @return {string} XML\n */\nfunction makeXmlTheme(pres) {\n var _a, _b, _c, _d;\n const majorFont = ((_a = pres.theme) === null || _a === void 0 ? void 0 : _a.headFontFace) ? `<a:latin typeface=\"${(_b = pres.theme) === null || _b === void 0 ? void 0 : _b.headFontFace}\"/>` : '<a:latin typeface=\"Calibri Light\" panose=\"020F0302020204030204\"/>';\n const minorFont = ((_c = pres.theme) === null || _c === void 0 ? void 0 : _c.bodyFontFace) ? `<a:latin typeface=\"${(_d = pres.theme) === null || _d === void 0 ? void 0 : _d.bodyFontFace}\"/>` : '<a:latin typeface=\"Calibri\" panose=\"020F0502020204030204\"/>';\n return `<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><a:theme xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\" name=\"Office Theme\"><a:themeElements><a:clrScheme name=\"Office\"><a:dk1><a:sysClr val=\"windowText\" lastClr=\"000000\"/></a:dk1><a:lt1><a:sysClr val=\"window\" lastClr=\"FFFFFF\"/></a:lt1><a:dk2><a:srgbClr val=\"44546A\"/></a:dk2><a:lt2><a:srgbClr val=\"E7E6E6\"/></a:lt2><a:accent1><a:srgbClr val=\"4472C4\"/></a:accent1><a:accent2><a:srgbClr val=\"ED7D31\"/></a:accent2><a:accent3><a:srgbClr val=\"A5A5A5\"/></a:accent3><a:accent4><a:srgbClr val=\"FFC000\"/></a:accent4><a:accent5><a:srgbClr val=\"5B9BD5\"/></a:accent5><a:accent6><a:srgbClr val=\"70AD47\"/></a:accent6><a:hlink><a:srgbClr val=\"0563C1\"/></a:hlink><a:folHlink><a:srgbClr val=\"954F72\"/></a:folHlink></a:clrScheme><a:fontScheme name=\"Office\"><a:majorFont>${majorFont}<a:ea typeface=\"\"/><a:cs typeface=\"\"/><a:font script=\"Jpan\" typeface=\"游ゴシック Light\"/><a:font script=\"Hang\" typeface=\"맑은 고딕\"/><a:font script=\"Hans\" typeface=\"等线 Light\"/><a:font script=\"Hant\" typeface=\"新細明體\"/><a:font script=\"Arab\" typeface=\"Times New Roman\"/><a:font script=\"Hebr\" typeface=\"Times New Roman\"/><a:font script=\"Thai\" typeface=\"Angsana New\"/><a:font script=\"Ethi\" typeface=\"Nyala\"/><a:font script=\"Beng\" typeface=\"Vrinda\"/><a:font script=\"Gujr\" typeface=\"Shruti\"/><a:font script=\"Khmr\" typeface=\"MoolBoran\"/><a:font script=\"Knda\" typeface=\"Tunga\"/><a:font script=\"Guru\" typeface=\"Raavi\"/><a:font script=\"Cans\" typeface=\"Euphemia\"/><a:font script=\"Cher\" typeface=\"Plantagenet Cherokee\"/><a:font script=\"Yiii\" typeface=\"Microsoft Yi Baiti\"/><a:font script=\"Tibt\" typeface=\"Microsoft Himalaya\"/><a:font script=\"Thaa\" typeface=\"MV Boli\"/><a:font script=\"Deva\" typeface=\"Mangal\"/><a:font script=\"Telu\" typeface=\"Gautami\"/><a:font script=\"Taml\" typeface=\"Latha\"/><a:font script=\"Syrc\" typeface=\"Estrangelo Edessa\"/><a:font script=\"Orya\" typeface=\"Kalinga\"/><a:font script=\"Mlym\" typeface=\"Kartika\"/><a:font script=\"Laoo\" typeface=\"DokChampa\"/><a:font script=\"Sinh\" typeface=\"Iskoola Pota\"/><a:font script=\"Mong\" typeface=\"Mongolian Baiti\"/><a:font script=\"Viet\" typeface=\"Times New Roman\"/><a:font script=\"Uigh\" typeface=\"Microsoft Uighur\"/><a:font script=\"Geor\" typeface=\"Sylfaen\"/><a:font script=\"Armn\" typeface=\"Arial\"/><a:font script=\"Bugi\" typeface=\"Leelawadee UI\"/><a:font script=\"Bopo\" typeface=\"Microsoft JhengHei\"/><a:font script=\"Java\" typeface=\"Javanese Text\"/><a:font script=\"Lisu\" typeface=\"Segoe UI\"/><a:font script=\"Mymr\" typeface=\"Myanmar Text\"/><a:font script=\"Nkoo\" typeface=\"Ebrima\"/><a:font script=\"Olck\" typeface=\"Nirmala UI\"/><a:font script=\"Osma\" typeface=\"Ebrima\"/><a:font script=\"Phag\" typeface=\"Phagspa\"/><a:font script=\"Syrn\" typeface=\"Estrangelo Edessa\"/><a:font script=\"Syrj\" typeface=\"Estrangelo Edessa\"/><a:font script=\"Syre\" typeface=\"Estrangelo Edessa\"/><a:font script=\"Sora\" typeface=\"Nirmala UI\"/><a:font script=\"Tale\" typeface=\"Microsoft Tai Le\"/><a:font script=\"Talu\" typeface=\"Microsoft New Tai Lue\"/><a:font script=\"Tfng\" typeface=\"Ebrima\"/></a:majorFont><a:minorFont>${minorFont}<a:ea typeface=\"\"/><a:cs typeface=\"\"/><a:font script=\"Jpan\" typeface=\"游ゴシック\"/><a:font script=\"Hang\" typeface=\"맑은 고딕\"/><a:font script=\"Hans\" typeface=\"等线\"/><a:font script=\"Hant\" typeface=\"新細明體\"/><a:font script=\"Arab\" typeface=\"Arial\"/><a:font script=\"Hebr\" typeface=\"Arial\"/><a:font script=\"Thai\" typeface=\"Cordia New\"/><a:font script=\"Ethi\" typeface=\"Nyala\"/><a:font script=\"Beng\" typeface=\"Vrinda\"/><a:font script=\"Gujr\" typeface=\"Shruti\"/><a:font script=\"Khmr\" typeface=\"DaunPenh\"/><a:font script=\"Knda\" typeface=\"Tunga\"/><a:font script=\"Guru\" typeface=\"Raavi\"/><a:font script=\"Cans\" typeface=\"Euphemia\"/><a:font script=\"Cher\" typeface=\"Plantagenet Cherokee\"/><a:font script=\"Yiii\" typeface=\"Microsoft Yi Baiti\"/><a:font script=\"Tibt\" typeface=\"Microsoft Himalaya\"/><a:font script=\"Thaa\" typeface=\"MV Boli\"/><a:font script=\"Deva\" typeface=\"Mangal\"/><a:font script=\"Telu\" typeface=\"Gautami\"/><a:font script=\"Taml\" typeface=\"Latha\"/><a:font script=\"Syrc\" typeface=\"Estrangelo Edessa\"/><a:font script=\"Orya\" typeface=\"Kalinga\"/><a:font script=\"Mlym\" typeface=\"Kartika\"/><a:font script=\"Laoo\" typeface=\"DokChampa\"/><a:font script=\"Sinh\" typeface=\"Iskoola Pota\"/><a:font script=\"Mong\" typeface=\"Mongolian Baiti\"/><a:font script=\"Viet\" typeface=\"Arial\"/><a:font script=\"Uigh\" typeface=\"Microsoft Uighur\"/><a:font script=\"Geor\" typeface=\"Sylfaen\"/><a:font script=\"Armn\" typeface=\"Arial\"/><a:font script=\"Bugi\" typeface=\"Leelawadee UI\"/><a:font script=\"Bopo\" typeface=\"Microsoft JhengHei\"/><a:font script=\"Java\" typeface=\"Javanese Text\"/><a:font script=\"Lisu\" typeface=\"Segoe UI\"/><a:font script=\"Mymr\" typeface=\"Myanmar Text\"/><a:font script=\"Nkoo\" typeface=\"Ebrima\"/><a:font script=\"Olck\" typeface=\"Nirmala UI\"/><a:font script=\"Osma\" typeface=\"Ebrima\"/><a:font script=\"Phag\" typeface=\"Phagspa\"/><a:font script=\"Syrn\" typeface=\"Estrangelo Edessa\"/><a:font script=\"Syrj\" typeface=\"Estrangelo Edessa\"/><a:font script=\"Syre\" typeface=\"Estrangelo Edessa\"/><a:font script=\"Sora\" typeface=\"Nirmala UI\"/><a:font script=\"Tale\" typeface=\"Microsoft Tai Le\"/><a:font script=\"Talu\" typeface=\"Microsoft New Tai Lue\"/><a:font script=\"Tfng\" typeface=\"Ebrima\"/></a:minorFont></a:fontScheme><a:fmtScheme name=\"Office\"><a:fillStyleLst><a:solidFill><a:schemeClr val=\"phClr\"/></a:solidFill><a:gradFill rotWithShape=\"1\"><a:gsLst><a:gs pos=\"0\"><a:schemeClr val=\"phClr\"><a:lumMod val=\"110000\"/><a:satMod val=\"105000\"/><a:tint val=\"67000\"/></a:schemeClr></a:gs><a:gs pos=\"50000\"><a:schemeClr val=\"phClr\"><a:lumMod val=\"105000\"/><a:satMod val=\"103000\"/><a:tint val=\"73000\"/></a:schemeClr></a:gs><a:gs pos=\"100000\"><a:schemeClr val=\"phClr\"><a:lumMod val=\"105000\"/><a:satMod val=\"109000\"/><a:tint val=\"81000\"/></a:schemeClr></a:gs></a:gsLst><a:lin ang=\"5400000\" scaled=\"0\"/></a:gradFill><a:gradFill rotWithShape=\"1\"><a:gsLst><a:gs pos=\"0\"><a:schemeClr val=\"phClr\"><a:satMod val=\"103000\"/><a:lumMod val=\"102000\"/><a:tint val=\"94000\"/></a:schemeClr></a:gs><a:gs pos=\"50000\"><a:schemeClr val=\"phClr\"><a:satMod val=\"110000\"/><a:lumMod val=\"100000\"/><a:shade val=\"100000\"/></a:schemeClr></a:gs><a:gs pos=\"100000\"><a:schemeClr val=\"phClr\"><a:lumMod val=\"99000\"/><a:satMod val=\"120000\"/><a:shade val=\"78000\"/></a:schemeClr></a:gs></a:gsLst><a:lin ang=\"5400000\" scaled=\"0\"/></a:gradFill></a:fillStyleLst><a:lnStyleLst><a:ln w=\"6350\" cap=\"flat\" cmpd=\"sng\" algn=\"ctr\"><a:solidFill><a:schemeClr val=\"phClr\"/></a:solidFill><a:prstDash val=\"solid\"/><a:miter lim=\"800000\"/></a:ln><a:ln w=\"12700\" cap=\"flat\" cmpd=\"sng\" algn=\"ctr\"><a:solidFill><a:schemeClr val=\"phClr\"/></a:solidFill><a:prstDash val=\"solid\"/><a:miter lim=\"800000\"/></a:ln><a:ln w=\"19050\" cap=\"flat\" cmpd=\"sng\" algn=\"ctr\"><a:solidFill><a:schemeClr val=\"phClr\"/></a:solidFill><a:prstDash val=\"solid\"/><a:miter lim=\"800000\"/></a:ln></a:lnStyleLst><a:effectStyleLst><a:effectStyle><a:effectLst/></a:effectStyle><a:effectStyle><a:effectLst/></a:effectStyle><a:effectStyle><a:effectLst><a:outerShdw blurRad=\"57150\" dist=\"19050\" dir=\"5400000\" algn=\"ctr\" rotWithShape=\"0\"><a:srgbClr val=\"000000\"><a:alpha val=\"63000\"/></a:srgbClr></a:outerShdw></a:effectLst></a:effectStyle></a:effectStyleLst><a:bgFillStyleLst><a:solidFill><a:schemeClr val=\"phClr\"/></a:solidFill><a:solidFill><a:schemeClr val=\"phClr\"><a:tint val=\"95000\"/><a:satMod val=\"170000\"/></a:schemeClr></a:solidFill><a:gradFill rotWithShape=\"1\"><a:gsLst><a:gs pos=\"0\"><a:schemeClr val=\"phClr\"><a:tint val=\"93000\"/><a:satMod val=\"150000\"/><a:shade val=\"98000\"/><a:lumMod val=\"102000\"/></a:schemeClr></a:gs><a:gs pos=\"50000\"><a:schemeClr val=\"phClr\"><a:tint val=\"98000\"/><a:satMod val=\"130000\"/><a:shade val=\"90000\"/><a:lumMod val=\"103000\"/></a:schemeClr></a:gs><a:gs pos=\"100000\"><a:schemeClr val=\"phClr\"><a:shade val=\"63000\"/><a:satMod val=\"120000\"/></a:schemeClr></a:gs></a:gsLst><a:lin ang=\"5400000\" scaled=\"0\"/></a:gradFill></a:bgFillStyleLst></a:fmtScheme></a:themeElements><a:objectDefaults/><a:extraClrSchemeLst/><a:extLst><a:ext uri=\"{05A4C25C-085E-4340-85A3-A5531E510DB2}\"><thm15:themeFamily xmlns:thm15=\"http://schemas.microsoft.com/office/thememl/2012/main\" name=\"Office Theme\" id=\"{62F939B6-93AF-4DB8-9C6B-D6C7DFDC589F}\" vid=\"{4A3C46E8-61CC-4603-A589-7422A47A8E4A}\"/></a:ext></a:extLst></a:theme>`;\n}\n/**\n * Create presentation file (`ppt/presentation.xml`)\n * @see https://docs.microsoft.com/en-us/office/open-xml/structure-of-a-presentationml-document\n * @see http://www.datypic.com/sc/ooxml/t-p_CT_Presentation.html\n * @param {IPresentationProps} pres - presentation\n * @return {string} XML\n */\nfunction makeXmlPresentation(pres) {\n let strXml = `<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>${CRLF}` +\n '<p:presentation xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" ' +\n `xmlns:p=\"http://schemas.openxmlformats.org/presentationml/2006/main\" ${pres.rtlMode ? 'rtl=\"1\"' : ''} saveSubsetFonts=\"1\" autoCompressPictures=\"0\">`;\n // STEP 1: Add slide master (SPEC: tag 1 under <presentation>)\n strXml += '<p:sldMasterIdLst><p:sldMasterId id=\"2147483648\" r:id=\"rId1\"/></p:sldMasterIdLst>';\n // STEP 2: Add all Slides (SPEC: tag 3 under <presentation>)\n strXml += '<p:sldIdLst>';\n pres.slides.forEach(slide => (strXml += `<p:sldId id=\"${slide._slideId}\" r:id=\"rId${slide._rId}\"/>`));\n strXml += '</p:sldIdLst>';\n // STEP 3: Add Notes Master (SPEC: tag 2 under <presentation>)\n // (NOTE: length+2 is from `presentation.xml.rels` func (since we have to match this rId, we just use same logic))\n // IMPORTANT: In this order (matches PPT2019) PPT will give corruption message on open!\n // IMPORTANT: Placing this before `<p:sldIdLst>` causes warning in modern powerpoint!\n // IMPORTANT: Presentations open without warning Without this line, however, the pres isnt preview in Finder anymore or viewable in iOS!\n strXml += `<p:notesMasterIdLst><p:notesMasterId r:id=\"rId${pres.slides.length + 2}\"/></p:notesMasterIdLst>`;\n // STEP 4: Add sizes\n strXml += `<p:sldSz cx=\"${pres.presLayout.width}\" cy=\"${pres.presLayout.height}\"/>`;\n strXml += `<p:notesSz cx=\"${pres.presLayout.height}\" cy=\"${pres.presLayout.width}\"/>`;\n // STEP 5: Add text styles\n strXml += '<p:defaultTextStyle>';\n for (let idy = 1; idy < 10; idy++) {\n strXml +=\n `<a:lvl${idy}pPr marL=\"${(idy - 1) * 457200}\" algn=\"l\" defTabSz=\"914400\" rtl=\"0\" eaLnBrk=\"1\" latinLnBrk=\"0\" hangingPunct=\"1\">` +\n '<a:defRPr sz=\"1800\" kern=\"1200\"><a:solidFill><a:schemeClr val=\"tx1\"/></a:solidFill><a:latin typeface=\"+mn-lt\"/><a:ea typeface=\"+mn-ea\"/><a:cs typeface=\"+mn-cs\"/>' +\n `</a:defRPr></a:lvl${idy}pPr>`;\n }\n strXml += '</p:defaultTextStyle>';\n // STEP 6: Add Sections (if any)\n if (pres.sections && pres.sections.length > 0) {\n strXml += '<p:extLst><p:ext uri=\"{521415D9-36F7-43E2-AB2F-B90AF26B5E84}\">';\n strXml += '<p14:sectionLst xmlns:p14=\"http://schemas.microsoft.com/office/powerpoint/2010/main\">';\n pres.sections.forEach(sect => {\n strXml += `<p14:section name=\"${encodeXmlEntities(sect.title)}\" id=\"{${getUuid('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx')}}\"><p14:sldIdLst>`;\n sect._slides.forEach(slide => (strXml += `<p14:sldId id=\"${slide._slideId}\"/>`));\n strXml += '</p14:sldIdLst></p14:section>';\n });\n strXml += '</p14:sectionLst></p:ext>';\n strXml += '<p:ext uri=\"{EFAFB233-063F-42B5-8137-9DF3F51BA10A}\"><p15:sldGuideLst xmlns:p15=\"http://schemas.microsoft.com/office/powerpoint/2012/main\"/></p:ext>';\n strXml += '</p:extLst>';\n }\n // Done\n strXml += '</p:presentation>';\n return strXml;\n}\n/**\n * Create `ppt/presProps.xml`\n * @return {string} XML\n */\nfunction makeXmlPresProps() {\n return `<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>${CRLF}<p:presentationPr xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" xmlns:p=\"http://schemas.openxmlformats.org/presentationml/2006/main\"/>`;\n}\n/**\n * Create `ppt/tableStyles.xml`\n * @see: http://openxmldeveloper.org/discussions/formats/f/13/p/2398/8107.aspx\n * @return {string} XML\n */\nfunction makeXmlTableStyles() {\n return `<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>${CRLF}<a:tblStyleLst xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\" def=\"{5C22544A-7EE6-4342-B048-85BDC9FD1C3A}\"/>`;\n}\n/**\n * Creates `ppt/viewProps.xml`\n * @return {string} XML\n */\nfunction makeXmlViewProps() {\n return `<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>${CRLF}<p:viewPr xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" xmlns:p=\"http://schemas.openxmlformats.org/presentationml/2006/main\"><p:normalViewPr horzBarState=\"maximized\"><p:restoredLeft sz=\"15611\"/><p:restoredTop sz=\"94610\"/></p:normalViewPr><p:slideViewPr><p:cSldViewPr snapToGrid=\"0\" snapToObjects=\"1\"><p:cViewPr varScale=\"1\"><p:scale><a:sx n=\"136\" d=\"100\"/><a:sy n=\"136\" d=\"100\"/></p:scale><p:origin x=\"216\" y=\"312\"/></p:cViewPr><p:guideLst/></p:cSldViewPr></p:slideViewPr><p:notesTextViewPr><p:cViewPr><p:scale><a:sx n=\"1\" d=\"1\"/><a:sy n=\"1\" d=\"1\"/></p:scale><p:origin x=\"0\" y=\"0\"/></p:cViewPr></p:notesTextViewPr><p:gridSpacing cx=\"76200\" cy=\"76200\"/></p:viewPr>`;\n}\n\n/**\n * :: pptxgen.ts ::\n *\n * JavaScript framework that creates PowerPoint (pptx) presentations\n * https://github.com/gitbrent/PptxGenJS\n *\n * This framework is released under the MIT Public License (MIT)\n *\n * PptxGenJS (C) 2015-present Brent Ely -- https://github.com/gitbrent\n *\n * Some code derived from the OfficeGen project:\n * github.com/Ziv-Barber/officegen/ (Copyright 2013 Ziv Barber)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nconst VERSION = '4.0.1';\nclass PptxGenJS {\n set layout(value) {\n const newLayout = this.LAYOUTS[value];\n if (newLayout) {\n this._layout = value;\n this._presLayout = newLayout;\n }\n else {\n throw new Error('UNKNOWN-LAYOUT');\n }\n }\n get layout() {\n return this._layout;\n }\n get version() {\n return this._version;\n }\n set author(value) {\n this._author = value;\n }\n get author() {\n return this._author;\n }\n set company(value) {\n this._company = value;\n }\n get company() {\n return this._company;\n }\n set revision(value) {\n this._revision = value;\n }\n get revision() {\n return this._revision;\n }\n set subject(value) {\n this._subject = value;\n }\n get subject() {\n return this._subject;\n }\n set theme(value) {\n this._theme = value;\n }\n get theme() {\n return this._theme;\n }\n set title(value) {\n this._title = value;\n }\n get title() {\n return this._title;\n }\n set rtlMode(value) {\n this._rtlMode = value;\n }\n get rtlMode() {\n return this._rtlMode;\n }\n get masterSlide() {\n return this._masterSlide;\n }\n get slides() {\n return this._slides;\n }\n get sections() {\n return this._sections;\n }\n get slideLayouts() {\n return this._slideLayouts;\n }\n get AlignH() {\n return this._alignH;\n }\n get AlignV() {\n return this._alignV;\n }\n get ChartType() {\n return this._chartType;\n }\n get OutputType() {\n return this._outputType;\n }\n get presLayout() {\n return this._presLayout;\n }\n get SchemeColor() {\n return this._schemeColor;\n }\n get ShapeType() {\n return this._shapeType;\n }\n get charts() {\n return this._charts;\n }\n get colors() {\n return this._colors;\n }\n get shapes() {\n return this._shapes;\n }\n constructor() {\n /**\n * PptxGenJS Library Version\n */\n this._version = VERSION;\n // Exposed class props\n this._alignH = AlignH;\n this._alignV = AlignV;\n this._chartType = ChartType;\n this._outputType = OutputType;\n this._schemeColor = SchemeColor;\n this._shapeType = ShapeType;\n /**\n * @depricated use `ChartType`\n */\n this._charts = CHART_TYPE;\n /**\n * @depricated use `SchemeColor`\n */\n this._colors = SCHEME_COLOR_NAMES;\n /**\n * @depricated use `ShapeType`\n */\n this._shapes = SHAPE_TYPE;\n /**\n * Provides an API for `addTableDefinition` to create slides as needed for auto-paging\n * @param {AddSlideProps} options - slide masterName and/or sectionTitle\n * @return {PresSlide} new Slide\n */\n this.addNewSlide = (options) => {\n // Continue using sections if the first slide using auto-paging has a Section\n const sectAlreadyInUse = this.sections.length > 0 &&\n this.sections[this.sections.length - 1]._slides.filter(slide => slide._slideNum === this.slides[this.slides.length - 1]._slideNum).length > 0;\n options.sectionTitle = sectAlreadyInUse ? this.sections[this.sections.length - 1].title : null;\n return this.addSlide(options);\n };\n /**\n * Provides an API for `addTableDefinition` to get slide reference by number\n * @param {number} slideNum - slide number\n * @return {PresSlide} Slide\n * @since 3.0.0\n */\n this.getSlide = (slideNum) => this.slides.filter(slide => slide._slideNum === slideNum)[0];\n /**\n * Enables the `Slide` class to set PptxGenJS [Presentation] master/layout slidenumbers\n * @param {SlideNumberProps} slideNum - slide number config\n */\n this.setSlideNumber = (slideNum) => {\n // 1: Add slideNumber to slideMaster1.xml\n this.masterSlide._slideNumberProps = slideNum;\n // 2: Add slideNumber to DEF_PRES_LAYOUT_NAME layout\n this.slideLayouts.filter(layout => layout._name === DEF_PRES_LAYOUT_NAME)[0]._slideNumberProps = slideNum;\n };\n /**\n * Create all chart and media rels for this Presentation\n * @param {PresSlide | SlideLayout} slide - slide with rels\n * @param {JSZip} zip - JSZip instance\n * @param {Promise<string>[]} chartPromises - promise array\n */\n this.createChartMediaRels = (slide, zip, chartPromises) => {\n slide._relsChart.forEach(rel => chartPromises.push(createExcelWorksheet(rel, zip)));\n slide._relsMedia.forEach(rel => {\n if (rel.type !== 'online' && rel.type !== 'hyperlink') {\n // A: Loop vars\n let data = rel.data && typeof rel.data === 'string' ? rel.data : '';\n // B: Users will undoubtedly pass various string formats, so correct prefixes as needed\n if (!data.includes(',') && !data.includes(';'))\n data = 'image/png;base64,' + data;\n else if (!data.includes(','))\n data = 'image/png;base64,' + data;\n else if (!data.includes(';'))\n data = 'image/png;' + data;\n // C: Add media\n zip.file(rel.Target.replace('..', 'ppt'), data.split(',').pop(), { base64: true });\n }\n });\n };\n /**\n * Create and export the .pptx file\n * @param {string} exportName - output file type\n * @param {Blob} blobContent - Blob content\n * @return {Promise<string>} Promise with file name\n */\n this.writeFileToBrowser = (exportName, blobContent) => __awaiter(this, void 0, void 0, function* () {\n // STEP 1: Create element\n const eleLink = document.createElement('a');\n eleLink.setAttribute('style', 'display:none;');\n eleLink.dataset.interception = 'off'; // @see https://docs.microsoft.com/en-us/sharepoint/dev/spfx/hyperlinking\n document.body.appendChild(eleLink);\n // STEP 2: Download file to browser\n // DESIGN: Use `createObjectURL()` to D/L files in client browsers (FYI: synchronously executed)\n if (window.URL.createObjectURL) {\n const url = window.URL.createObjectURL(new Blob([blobContent], { type: 'application/vnd.openxmlformats-officedocument.presentationml.presentation' }));\n eleLink.href = url;\n eleLink.download = exportName;\n eleLink.click();\n // Clean-up (NOTE: Add a slight delay before removing to avoid 'blob:null' error in Firefox Issue#81)\n setTimeout(() => {\n window.URL.revokeObjectURL(url);\n document.body.removeChild(eleLink);\n }, 100);\n // Done\n return yield Promise.resolve(exportName);\n }\n });\n /**\n * Create and export the .pptx file\n * @param {WRITE_OUTPUT_TYPE} outputType - output file type\n * @return {Promise<string | ArrayBuffer | Blob | Buffer | Uint8Array>} Promise with data or stream (node) or filename (browser)\n */\n this.exportPresentation = (props) => __awaiter(this, void 0, void 0, function* () {\n const arrChartPromises = [];\n let arrMediaPromises = [];\n const zip = new JSZip();\n // STEP 1: Read/Encode all Media before zip as base64 content, etc. is required\n this.slides.forEach(slide => {\n arrMediaPromises = arrMediaPromises.concat(encodeSlideMediaRels(slide));\n });\n this.slideLayouts.forEach(layout => {\n arrMediaPromises = arrMediaPromises.concat(encodeSlideMediaRels(layout));\n });\n arrMediaPromises = arrMediaPromises.concat(encodeSlideMediaRels(this.masterSlide));\n // STEP 2: Wait for Promises (if any) then generate the PPTX file\n return yield Promise.all(arrMediaPromises).then(() => __awaiter(this, void 0, void 0, function* () {\n // A: Add empty placeholder objects to slides that don't already have them\n this.slides.forEach(slide => {\n if (slide._slideLayout)\n addPlaceholdersToSlideLayouts(slide);\n });\n // B: Add all required folders and files\n zip.folder('_rels');\n zip.folder('docProps');\n zip.folder('ppt').folder('_rels');\n zip.folder('ppt/charts').folder('_rels');\n zip.folder('ppt/embeddings');\n zip.folder('ppt/media');\n zip.folder('ppt/slideLayouts').folder('_rels');\n zip.folder('ppt/slideMasters').folder('_rels');\n zip.folder('ppt/slides').folder('_rels');\n zip.folder('ppt/theme');\n zip.folder('ppt/notesMasters').folder('_rels');\n zip.folder('ppt/notesSlides').folder('_rels');\n zip.file('[Content_Types].xml', makeXmlContTypes(this.slides, this.slideLayouts, this.masterSlide)); // TODO: pass only `this` like below! 20200206\n zip.file('_rels/.rels', makeXmlRootRels());\n zip.file('docProps/app.xml', makeXmlApp(this.slides, this.company)); // TODO: pass only `this` like below! 20200206\n zip.file('docProps/core.xml', makeXmlCore(this.title, this.subject, this.author, this.revision)); // TODO: pass only `this` like below! 20200206\n zip.file('ppt/_rels/presentation.xml.rels', makeXmlPresentationRels(this.slides));\n zip.file('ppt/theme/theme1.xml', makeXmlTheme(this));\n zip.file('ppt/presentation.xml', makeXmlPresentation(this));\n zip.file('ppt/presProps.xml', makeXmlPresProps());\n zip.file('ppt/tableStyles.xml', makeXmlTableStyles());\n zip.file('ppt/viewProps.xml', makeXmlViewProps());\n // C: Create a Layout/Master/Rel/Slide file for each SlideLayout and Slide\n this.slideLayouts.forEach((layout, idx) => {\n zip.file(`ppt/slideLayouts/slideLayout${idx + 1}.xml`, makeXmlLayout(layout));\n zip.file(`ppt/slideLayouts/_rels/slideLayout${idx + 1}.xml.rels`, makeXmlSlideLayoutRel(idx + 1, this.slideLayouts));\n });\n this.slides.forEach((slide, idx) => {\n zip.file(`ppt/slides/slide${idx + 1}.xml`, makeXmlSlide(slide));\n zip.file(`ppt/slides/_rels/slide${idx + 1}.xml.rels`, makeXmlSlideRel(this.slides, this.slideLayouts, idx + 1));\n // Create all slide notes related items. Notes of empty strings are created for slides which do not have notes specified, to keep track of _rels.\n zip.file(`ppt/notesSlides/notesSlide${idx + 1}.xml`, makeXmlNotesSlide(slide));\n zip.file(`ppt/notesSlides/_rels/notesSlide${idx + 1}.xml.rels`, makeXmlNotesSlideRel(idx + 1));\n });\n zip.file('ppt/slideMasters/slideMaster1.xml', makeXmlMaster(this.masterSlide, this.slideLayouts));\n zip.file('ppt/slideMasters/_rels/slideMaster1.xml.rels', makeXmlMasterRel(this.masterSlide, this.slideLayouts));\n zip.file('ppt/notesMasters/notesMaster1.xml', makeXmlNotesMaster());\n zip.file('ppt/notesMasters/_rels/notesMaster1.xml.rels', makeXmlNotesMasterRel());\n // D: Create all Rels (images, media, chart data)\n this.slideLayouts.forEach(layout => {\n this.createChartMediaRels(layout, zip, arrChartPromises);\n });\n this.slides.forEach(slide => {\n this.createChartMediaRels(slide, zip, arrChartPromises);\n });\n this.createChartMediaRels(this.masterSlide, zip, arrChartPromises);\n // E: Wait for Promises (if any) then generate the PPTX file\n return yield Promise.all(arrChartPromises).then(() => __awaiter(this, void 0, void 0, function* () {\n if (props.outputType === 'STREAM') {\n // A: stream file\n return yield zip.generateAsync({ type: 'nodebuffer', compression: props.compression ? 'DEFLATE' : 'STORE' });\n }\n else if (props.outputType) {\n // B: Node [fs]: Output type user option or default\n return yield zip.generateAsync({ type: props.outputType });\n }\n else {\n // C: Browser: Output blob as app/ms-pptx\n return yield zip.generateAsync({ type: 'blob', compression: props.compression ? 'DEFLATE' : 'STORE' });\n }\n }));\n }));\n });\n const layout4x3 = { name: 'screen4x3', width: 9144000, height: 6858000 };\n const layout16x9 = { name: 'screen16x9', width: 9144000, height: 5143500 };\n const layout16x10 = { name: 'screen16x10', width: 9144000, height: 5715000 };\n const layoutWide = { name: 'custom', width: 12192000, height: 6858000 };\n // Set available layouts\n this.LAYOUTS = {\n LAYOUT_4x3: layout4x3,\n LAYOUT_16x9: layout16x9,\n LAYOUT_16x10: layout16x10,\n LAYOUT_WIDE: layoutWide,\n };\n // Core\n this._author = 'PptxGenJS';\n this._company = 'PptxGenJS';\n this._revision = '1'; // Note: Must be a whole number\n this._subject = 'PptxGenJS Presentation';\n this._title = 'PptxGenJS Presentation';\n // PptxGenJS props\n this._presLayout = {\n name: this.LAYOUTS[DEF_PRES_LAYOUT].name,\n _sizeW: this.LAYOUTS[DEF_PRES_LAYOUT].width,\n _sizeH: this.LAYOUTS[DEF_PRES_LAYOUT].height,\n width: this.LAYOUTS[DEF_PRES_LAYOUT].width,\n height: this.LAYOUTS[DEF_PRES_LAYOUT].height,\n };\n this._rtlMode = false;\n //\n this._slideLayouts = [\n {\n _margin: DEF_SLIDE_MARGIN_IN,\n _name: DEF_PRES_LAYOUT_NAME,\n _presLayout: this._presLayout,\n _rels: [],\n _relsChart: [],\n _relsMedia: [],\n _slide: null,\n _slideNum: 1000,\n _slideNumberProps: null,\n _slideObjects: [],\n },\n ];\n this._slides = [];\n this._sections = [];\n this._masterSlide = {\n addChart: null,\n addImage: null,\n addMedia: null,\n addNotes: null,\n addShape: null,\n addTable: null,\n addText: null,\n //\n _name: null,\n _presLayout: this._presLayout,\n _rId: null,\n _rels: [],\n _relsChart: [],\n _relsMedia: [],\n _slideId: null,\n _slideLayout: null,\n _slideNum: null,\n _slideNumberProps: null,\n _slideObjects: [],\n };\n }\n // EXPORT METHODS\n /**\n * Export the current Presentation to stream\n * @param {WriteBaseProps} props - output properties\n * @returns {Promise<string | ArrayBuffer | Blob | Buffer | Uint8Array>} file stream\n */\n stream(props) {\n return __awaiter(this, void 0, void 0, function* () {\n return yield this.exportPresentation({\n compression: props === null || props === void 0 ? void 0 : props.compression,\n outputType: 'STREAM',\n });\n });\n }\n /**\n * Export the current Presentation as JSZip content with the selected type\n * @param {WriteProps} props output properties\n * @returns {Promise<string | ArrayBuffer | Blob | Buffer | Uint8Array>} file content in selected type\n */\n write(props) {\n return __awaiter(this, void 0, void 0, function* () {\n // DEPRECATED: @deprecated v3.5.0 - outputType - [[remove in v4.0.0]]\n const propsOutpType = typeof props === 'object' && (props === null || props === void 0 ? void 0 : props.outputType) ? props.outputType : props ? props : null;\n const propsCompress = typeof props === 'object' && (props === null || props === void 0 ? void 0 : props.compression) ? props.compression : false;\n return yield this.exportPresentation({\n compression: propsCompress,\n outputType: propsOutpType,\n });\n });\n }\n /**\n * Export the current Presentation.\n * Write the generated presentation to disk (Node) or trigger a download (browser).\n * @param {WriteFileProps} props - output file properties\n * @returns {Promise<string>} the presentation name\n */\n writeFile(props) {\n return __awaiter(this, void 0, void 0, function* () {\n var _a, _b;\n // STEP 1: Figure out where we are running\n const isNode = typeof process !== 'undefined' && !!((_a = process.versions) === null || _a === void 0 ? void 0 : _a.node) && ((_b = process.release) === null || _b === void 0 ? void 0 : _b.name) === 'node';\n // STEP 2: Normalise the user arguments\n if (typeof props === 'string') {\n // DEPRECATED: @deprecated v3.5.0 - fileName - [[remove in v4.0.0]]\n console.warn('[WARNING] writeFile(string) is deprecated - pass { fileName } instead.');\n props = { fileName: props };\n }\n const { fileName: rawName = 'Presentation.pptx', compression = false } = props;\n const fileName = rawName.toLowerCase().endsWith('.pptx') ? rawName : `${rawName}.pptx`;\n // STEP 3: Get the binary/Blob from exportPresentation()\n const outputType = isNode ? 'nodebuffer' : null;\n const data = yield this.exportPresentation({ compression, outputType });\n // STEP 4: Write the file out\n if (isNode) {\n // Dynamically import to avoid bundling fs in the browser build\n const { promises: fs } = yield import('node:fs');\n const { writeFile } = fs;\n yield writeFile(fileName, data);\n return fileName;\n }\n // Browser branch - push a download\n yield this.writeFileToBrowser(fileName, data);\n return fileName;\n });\n }\n // PRESENTATION METHODS\n /**\n * Add a new Section to Presentation\n * @param {ISectionProps} section - section properties\n * @example pptx.addSection({ title:'Charts' });\n */\n addSection(section) {\n if (!section)\n console.warn('addSection requires an argument');\n else if (!section.title)\n console.warn('addSection requires a title');\n const newSection = {\n _type: 'user',\n _slides: [],\n title: section.title,\n };\n if (section.order)\n this.sections.splice(section.order, 0, newSection);\n else\n this._sections.push(newSection);\n }\n /**\n * Add a new Slide to Presentation\n * @param {AddSlideProps} options - slide options\n * @returns {PresSlide} the new Slide\n */\n addSlide(options) {\n // TODO: DEPRECATED: arg0 string \"masterSlideName\" dep as of 3.2.0\n const masterSlideName = typeof options === 'string' ? options : (options === null || options === void 0 ? void 0 : options.masterName) ? options.masterName : '';\n let slideLayout = {\n _name: this.LAYOUTS[DEF_PRES_LAYOUT].name,\n _presLayout: this.presLayout,\n _rels: [],\n _relsChart: [],\n _relsMedia: [],\n _slideNum: this.slides.length + 1,\n };\n if (masterSlideName) {\n const tmpLayout = this.slideLayouts.filter(layout => layout._name === masterSlideName)[0];\n if (tmpLayout)\n slideLayout = tmpLayout;\n }\n const newSlide = new Slide({\n addSlide: this.addNewSlide,\n getSlide: this.getSlide,\n presLayout: this.presLayout,\n setSlideNum: this.setSlideNumber,\n slideId: this.slides.length + 256,\n slideRId: this.slides.length + 2,\n slideNumber: this.slides.length + 1,\n slideLayout,\n });\n // A: Add slide to pres\n this._slides.push(newSlide);\n // B: Sections\n // B-1: Add slide to section (if any provided)\n // B-2: Handle slides without a section when sections are already is use (\"loose\" slides arent allowed, they all need a section)\n if (options === null || options === void 0 ? void 0 : options.sectionTitle) {\n const sect = this.sections.filter(section => section.title === options.sectionTitle)[0];\n if (!sect)\n console.warn(`addSlide: unable to find section with title: \"${options.sectionTitle}\"`);\n else\n sect._slides.push(newSlide);\n }\n else if (this.sections && this.sections.length > 0 && (!(options === null || options === void 0 ? void 0 : options.sectionTitle))) {\n const lastSect = this._sections[this.sections.length - 1];\n // CASE 1: The latest section is a default type - just add this one\n if (lastSect._type === 'default')\n lastSect._slides.push(newSlide);\n // CASE 2: There latest section is NOT a default type - create the defualt, add this slide\n else {\n this._sections.push({\n title: `Default-${this.sections.filter(sect => sect._type === 'default').length + 1}`,\n _type: 'default',\n _slides: [newSlide],\n });\n }\n }\n return newSlide;\n }\n /**\n * Create a custom Slide Layout in any size\n * @param {PresLayout} layout - layout properties\n * @example pptx.defineLayout({ name:'A3', width:16.5, height:11.7 });\n */\n defineLayout(layout) {\n // @see https://support.office.com/en-us/article/Change-the-size-of-your-slides-040a811c-be43-40b9-8d04-0de5ed79987e\n if (!layout)\n console.warn('defineLayout requires `{name, width, height}`');\n else if (!layout.name)\n console.warn('defineLayout requires `name`');\n else if (!layout.width)\n console.warn('defineLayout requires `width`');\n else if (!layout.height)\n console.warn('defineLayout requires `height`');\n else if (typeof layout.height !== 'number')\n console.warn('defineLayout `height` should be a number (inches)');\n else if (typeof layout.width !== 'number')\n console.warn('defineLayout `width` should be a number (inches)');\n this.LAYOUTS[layout.name] = {\n name: layout.name,\n _sizeW: Math.round(Number(layout.width) * EMU),\n _sizeH: Math.round(Number(layout.height) * EMU),\n width: Math.round(Number(layout.width) * EMU),\n height: Math.round(Number(layout.height) * EMU),\n };\n }\n /**\n * Create a new slide master [layout] for the Presentation\n * @param {SlideMasterProps} props - layout properties\n */\n defineSlideMaster(props) {\n // (ISSUE#406;PULL#1176) deep clone the props object to avoid mutating the original object\n const propsClone = JSON.parse(JSON.stringify(props));\n if (!propsClone.title)\n throw new Error('defineSlideMaster() object argument requires a `title` value. (https://gitbrent.github.io/PptxGenJS/docs/masters.html)');\n const newLayout = {\n _margin: propsClone.margin || DEF_SLIDE_MARGIN_IN,\n _name: propsClone.title,\n _presLayout: this.presLayout,\n _rels: [],\n _relsChart: [],\n _relsMedia: [],\n _slide: null,\n _slideNum: 1000 + this.slideLayouts.length + 1,\n _slideNumberProps: propsClone.slideNumber || null,\n _slideObjects: [],\n background: propsClone.background || null,\n bkgd: propsClone.bkgd || null,\n };\n // STEP 1: Create the Slide Master/Layout\n createSlideMaster(propsClone, newLayout);\n // STEP 2: Add it to layout defs\n this.slideLayouts.push(newLayout);\n // STEP 3: Add background (image data/path must be captured before `exportPresentation()` is called)\n if (propsClone.background || propsClone.bkgd)\n addBackgroundDefinition(propsClone.background, newLayout);\n // STEP 4: Add slideNumber to master slide (if any)\n if (newLayout._slideNumberProps && !this.masterSlide._slideNumberProps)\n this.masterSlide._slideNumberProps = newLayout._slideNumberProps;\n }\n // HTML-TO-SLIDES METHODS\n /**\n * Reproduces an HTML table as a PowerPoint table - including column widths, style, etc. - creates 1 or more slides as needed\n * @param {string} eleId - table HTML element ID\n * @param {TableToSlidesProps} options - generation options\n */\n tableToSlides(eleId, options = {}) {\n // @note `verbose` option is undocumented; used for verbose output of layout process\n genTableToSlides(this, eleId, options, (options === null || options === void 0 ? void 0 : options.masterSlideName) ? this.slideLayouts.filter(layout => layout._name === options.masterSlideName)[0] : null);\n }\n}\n\nexport { PptxGenJS as default };\n","export interface ObjectTransform {\n readonly translateX: number;\n readonly translateY: number;\n readonly scale: number;\n // TODO: Add support for rotations in PowerPointRenderer\n readonly rotation: number;\n}\n\nexport const DEFAULT_OBJECT_TRANSFORM: ObjectTransform = {\n translateX: 0,\n translateY: 0,\n scale: 1,\n rotation: 0,\n};\n","export interface PowerPointRendererState {\n readonly imagePathById: Record<string, string>;\n}\n\nexport const POWERPOINT_RENDERER_DEFAULT_STATE: PowerPointRendererState = Object.freeze({\n imagePathById: {},\n});\n","import { BoundingBox } from \"../../types/BoundingBox\";\n\nexport function getLineBoundingBox(\n startX: number,\n startY: number,\n endX: number,\n endY: number,\n): BoundingBox {\n const originX = Math.min(startX, endX);\n const originY = Math.min(startY, endY);\n const width = Math.abs(endX - startX);\n const height = Math.abs(endY - startY);\n\n return BoundingBox({\n origin: { x: originX, y: originY },\n size: { width, height },\n });\n}\n","import { Color } from \"../../../types/Color\";\n\ninterface Return {\n /** RGB hex string for color, of length 6 */\n readonly color: string;\n\n /** Color opacity in [0, 100] */\n readonly transparency: number;\n}\n\nexport function getPptxFillColor(color: Color, opacity: number = 1): Return {\n const { red, green, blue } = color;\n const hex = (red << 16) | (green << 8) | blue;\n const hexString = `#${hex.toString(16).padStart(6, \"0\")}`;\n\n return {\n color: hexString,\n transparency: 100 - opacity * color.alpha * 100,\n };\n}\n","/** PowerPoint file assumes 96 pixels per inch. */\nconst POWERPOINT_PIXELS_PER_INCH = 96;\nconst POWERPOINT_FONT_SIZE_SCALE = 69;\n\n/**\n * Gets inches from pixels.\n */\nexport function getInchesFromPixels(pixels: number, pixelsPerInch: number): number {\n return pixels / pixelsPerInch;\n}\n\n/**\n * Gets PowerPoint pixels from Presenter.js pixels.\n */\nexport function getPptxPixelsFromPixels(pixels: number, pixelsPerInch: number): number {\n return getInchesFromPixels(pixels, pixelsPerInch) * POWERPOINT_PIXELS_PER_INCH;\n}\n\nexport function getPptxFontSizeFromPixels(pixels: number, pixelsPerInch: number): number {\n return getInchesFromPixels(pixels, pixelsPerInch) * POWERPOINT_FONT_SIZE_SCALE;\n}\n","import { Arrow } from \"../../../objects/Arrow\";\nimport { getLineBoundingBox } from \"../../../utils/layout/getLineBoundingBox\";\nimport { PowerPointObjectRenderer } from \"../types/PowerPointObjectRenderer\";\nimport { getPptxFillColor } from \"../utils/getPptxFillColor\";\nimport { getInchesFromPixels, getPptxPixelsFromPixels } from \"../utils/getUnitsFromPixels\";\n\nexport const renderArrow: PowerPointObjectRenderer<Arrow> = ({\n powerpoint,\n slide,\n object: arrow,\n opacity,\n pixelsPerInch,\n transform,\n}) => {\n const targetOpacity = arrow.opacity * opacity;\n if (arrow.drawn === 0 || targetOpacity === 0) {\n return;\n }\n\n const { origin, size } = getLineBoundingBox(\n arrow.startX + transform.translateX,\n arrow.startY + transform.translateY,\n arrow.endX + transform.translateX + transform.scale * (arrow.endX - arrow.startX),\n arrow.endY + transform.translateY + transform.scale * (arrow.endY - arrow.startY),\n );\n\n slide.addShape(powerpoint.ShapeType.line, {\n x: getInchesFromPixels(origin.x, pixelsPerInch),\n y: getInchesFromPixels(origin.y, pixelsPerInch),\n w: getInchesFromPixels(size.width, pixelsPerInch),\n h: getInchesFromPixels(size.height, pixelsPerInch),\n line: {\n ...getPptxFillColor(arrow.color, targetOpacity),\n width: getPptxPixelsFromPixels(arrow.width, pixelsPerInch),\n beginArrowType: arrow.isArrowheadDoubled ? \"triangle\" : \"none\",\n endArrowType: \"triangle\",\n },\n flipH: arrow.startX > arrow.endX,\n flipV: arrow.startY > arrow.endY,\n });\n};\n","import { Anchor } from \"../../../types/Anchor\";\nimport { BoundingBox } from \"../../../types/BoundingBox\";\nimport { Position } from \"../../../types/Position\";\nimport { Size } from \"../../../types/Size\";\nimport { getBoundingBox } from \"../../../utils/layout/getBoundingBox\";\nimport { ObjectTransform } from \"../types/ObjectTransform\";\n\nexport function getTransformedBoundingBox(\n position: Position,\n anchor: Anchor,\n size: Size,\n transform: ObjectTransform,\n): BoundingBox {\n return getBoundingBox(\n {\n x: position.x * transform.scale + transform.translateX,\n y: position.y * transform.scale + transform.translateY,\n },\n anchor,\n {\n width: size.width * transform.scale,\n height: size.height * transform.scale,\n },\n );\n}\n","import { Circle } from \"../../../objects/Circle\";\nimport { Position } from \"../../../types/Position\";\nimport { Size } from \"../../../types/Size\";\nimport { PowerPointObjectRenderer } from \"../types/PowerPointObjectRenderer\";\nimport { getPptxFillColor } from \"../utils/getPptxFillColor\";\nimport { getTransformedBoundingBox } from \"../utils/getTransformedBoundingBox\";\nimport { getInchesFromPixels, getPptxPixelsFromPixels } from \"../utils/getUnitsFromPixels\";\n\nexport const renderCircle: PowerPointObjectRenderer<Circle> = ({\n powerpoint,\n slide,\n object: circle,\n opacity,\n pixelsPerInch,\n transform,\n}) => {\n const targetOpacity = circle.opacity * opacity;\n if (circle.drawn === 0 || targetOpacity === 0) {\n return;\n }\n\n const { origin, size } = getTransformedBoundingBox(\n Position({ x: circle.x, y: circle.y }),\n circle.anchor,\n Size({ width: circle.radius * 2, height: circle.radius * 2 }),\n transform,\n );\n\n slide.addShape(powerpoint.ShapeType.ellipse, {\n fill: getPptxFillColor(circle.fill, targetOpacity),\n x: getInchesFromPixels(origin.x, pixelsPerInch),\n y: getInchesFromPixels(origin.y, pixelsPerInch),\n w: getInchesFromPixels(size.width, pixelsPerInch),\n h: getInchesFromPixels(size.height, pixelsPerInch),\n line:\n circle.borderWidth > 0\n ? {\n ...getPptxFillColor(circle.borderColor, targetOpacity),\n width: getPptxPixelsFromPixels(transform.scale * circle.borderWidth, pixelsPerInch),\n }\n : {},\n });\n};\n","import { Group } from \"../../../objects/Group\";\nimport { Position } from \"../../../types/Position\";\nimport { Size } from \"../../../types/Size\";\nimport { ObjectTransform } from \"../types/ObjectTransform\";\nimport { PowerPointObjectRenderer } from \"../types/PowerPointObjectRenderer\";\nimport { getTransformedBoundingBox } from \"../utils/getTransformedBoundingBox\";\n\nexport const renderGroup: PowerPointObjectRenderer<Group> = ({\n object: group,\n opacity,\n transform,\n renderObject,\n}) => {\n const targetOpacity = opacity * group.opacity;\n if (targetOpacity === 0) {\n return;\n }\n\n const boundingBox = getTransformedBoundingBox(\n Position({ x: group.x, y: group.y }),\n group.anchor,\n Size({\n width: group.width * group.scale,\n height: group.height * group.scale,\n }),\n transform,\n );\n\n const updatedTransform: ObjectTransform = {\n translateX: boundingBox.origin.x,\n translateY: boundingBox.origin.y,\n scale: group.scale * transform.scale,\n rotation: group.rotation + transform.rotation,\n };\n\n for (const child of group.objects) {\n renderObject(child, updatedTransform, targetOpacity);\n }\n\n return;\n};\n","import { Image } from \"../../../objects/Image\";\nimport { Position } from \"../../../types/Position\";\nimport { Size } from \"../../../types/Size\";\nimport { PowerPointObjectRenderer } from \"../types/PowerPointObjectRenderer\";\nimport { getTransformedBoundingBox } from \"../utils/getTransformedBoundingBox\";\nimport { getInchesFromPixels } from \"../utils/getUnitsFromPixels\";\n\nexport const renderImage: PowerPointObjectRenderer<Image> = ({\n imagePathById,\n slide,\n object: image,\n opacity,\n pixelsPerInch,\n transform,\n}) => {\n const targetOpacity = image.opacity * opacity;\n if (targetOpacity === 0) {\n return;\n }\n\n const path = imagePathById[image.imageId];\n if (path === undefined) {\n return;\n }\n\n const { origin, size } = getTransformedBoundingBox(\n Position({ x: image.x, y: image.y }),\n image.anchor,\n Size({ width: image.width, height: image.height }),\n transform,\n );\n\n slide.addImage({\n path,\n x: getInchesFromPixels(origin.x, pixelsPerInch),\n y: getInchesFromPixels(origin.y, pixelsPerInch),\n w: getInchesFromPixels(size.width, pixelsPerInch),\n h: getInchesFromPixels(size.height, pixelsPerInch),\n transparency: (1 - targetOpacity) * 100,\n });\n};\n","import { Line } from \"../../../objects/Line\";\nimport { getLineBoundingBox } from \"../../../utils/layout/getLineBoundingBox\";\nimport { PowerPointObjectRenderer } from \"../types/PowerPointObjectRenderer\";\nimport { getPptxFillColor } from \"../utils/getPptxFillColor\";\nimport { getInchesFromPixels, getPptxPixelsFromPixels } from \"../utils/getUnitsFromPixels\";\n\nexport const renderLine: PowerPointObjectRenderer<Line> = ({\n powerpoint,\n slide,\n object: line,\n opacity,\n pixelsPerInch,\n transform,\n}) => {\n const targetOpacity = line.opacity * opacity;\n if (line.drawn === 0 || targetOpacity === 0) {\n return;\n }\n\n const { origin, size } = getLineBoundingBox(\n line.startX + transform.translateX,\n line.startY + transform.translateY,\n line.endX + transform.translateX + transform.scale * (line.endX - line.startX),\n line.endY + transform.translateY + transform.scale * (line.endY - line.startY),\n );\n\n slide.addShape(powerpoint.ShapeType.line, {\n x: getInchesFromPixels(origin.x, pixelsPerInch),\n y: getInchesFromPixels(origin.y, pixelsPerInch),\n w: getInchesFromPixels(size.width, pixelsPerInch),\n h: getInchesFromPixels(size.height, pixelsPerInch),\n line: {\n ...getPptxFillColor(line.color, targetOpacity),\n width: transform.scale * getPptxPixelsFromPixels(line.width, pixelsPerInch),\n },\n flipH: line.startX > line.endX,\n flipV: line.startY > line.endY,\n });\n};\n","import { Path } from \"../../../objects/Path\";\nimport {\n CanvasContextType,\n UnifiedCanvasContext,\n} from \"../../../renderer/browser-canvas/types/UnifiedCanvasContext\";\nimport { drawStroke } from \"../../../renderer/browser-canvas/utils/drawStroke\";\nimport { fillPath } from \"../../../renderer/browser-canvas/utils/fillPath\";\nimport { createCanvasElement } from \"../../utils/createCanvasElement\";\nimport { createPath2D } from \"../../utils/createPath2D\";\nimport { PowerPointObjectRenderer } from \"../types/PowerPointObjectRenderer\";\nimport { getInchesFromPixels } from \"../utils/getUnitsFromPixels\";\n\nexport const renderPath: PowerPointObjectRenderer<Path> = ({\n slide,\n object: path,\n opacity,\n pixelsPerInch,\n transform,\n}) => {\n const targetOpacity = path.opacity * opacity;\n if (targetOpacity === 0 || (path.drawn === 0 && path.fill.alpha === 0)) {\n return;\n }\n\n const canvas = createCanvasElement({ width: path.width, height: path.height });\n const context = canvas.getContext(\"2d\");\n const ctx: UnifiedCanvasContext = {\n type: CanvasContextType.Node,\n context,\n };\n const path2D = createPath2D(path.path);\n\n fillPath({\n ctx,\n path: path2D,\n color: path.fill,\n opacity: targetOpacity,\n });\n\n drawStroke({\n color: path.color,\n ctx,\n drawn: path.drawn,\n path: path2D,\n pathLength: path.pathLength,\n opacity: targetOpacity,\n width: path.strokeWidth,\n });\n\n const dataUrl = canvas.toDataURL(\"png\");\n\n slide.addImage({\n data: dataUrl,\n x: getInchesFromPixels(transform.translateX, pixelsPerInch),\n y: getInchesFromPixels(transform.translateY, pixelsPerInch),\n w: getInchesFromPixels(path.width * transform.scale, pixelsPerInch),\n h: getInchesFromPixels(path.height * transform.scale, pixelsPerInch),\n transparency: 100 * (1 - targetOpacity),\n });\n};\n","import { Polygon } from \"../../../objects/Polygon\";\nimport {\n CanvasContextType,\n UnifiedCanvasContext,\n} from \"../../../renderer/browser-canvas/types/UnifiedCanvasContext\";\nimport { drawStroke } from \"../../../renderer/browser-canvas/utils/drawStroke\";\nimport { fillPath } from \"../../../renderer/browser-canvas/utils/fillPath\";\nimport { getPolygonPath } from \"../../../utils/objects/polygon/getPolygonPath\";\nimport { createCanvasElement } from \"../../utils/createCanvasElement\";\nimport { createPath2D } from \"../../utils/createPath2D\";\nimport { PowerPointObjectRenderer } from \"../types/PowerPointObjectRenderer\";\nimport { getInchesFromPixels } from \"../utils/getUnitsFromPixels\";\n\nexport const renderPolygon: PowerPointObjectRenderer<Polygon> = ({\n slide,\n object: polygon,\n opacity,\n pixelsPerInch,\n transform,\n}) => {\n const targetOpacity = polygon.opacity * opacity;\n if (\n targetOpacity === 0 ||\n (polygon.drawn === 0 && polygon.fill.alpha === 0) ||\n polygon.points.length === 0\n ) {\n return;\n }\n\n const polygonWidth = Math.max(...polygon.points.map((p) => p.x));\n const polygonHeight = Math.max(...polygon.points.map((p) => p.y));\n\n const canvas = createCanvasElement({ width: polygonWidth, height: polygonHeight });\n const context = canvas.getContext(\"2d\");\n const ctx: UnifiedCanvasContext = {\n type: CanvasContextType.Node,\n context,\n };\n\n const { path, length } = getPolygonPath(polygon, createPath2D);\n fillPath({\n ctx,\n path,\n color: polygon.fill,\n opacity: targetOpacity,\n });\n drawStroke({\n color: polygon.borderColor,\n ctx,\n drawn: polygon.drawn,\n path,\n pathLength: length,\n opacity: targetOpacity,\n width: polygon.borderWidth,\n });\n\n const dataUrl = canvas.toDataURL(\"png\");\n\n slide.addImage({\n data: dataUrl,\n x: getInchesFromPixels(transform.translateX, pixelsPerInch),\n y: getInchesFromPixels(transform.translateY, pixelsPerInch),\n w: getInchesFromPixels(polygonWidth * transform.scale, pixelsPerInch),\n h: getInchesFromPixels(polygonHeight * transform.scale, pixelsPerInch),\n transparency: 100 * (1 - targetOpacity),\n });\n};\n","import { Rectangle } from \"../../../objects/Rectangle\";\nimport { Position } from \"../../../types/Position\";\nimport { Size } from \"../../../types/Size\";\nimport { PowerPointObjectRenderer } from \"../types/PowerPointObjectRenderer\";\nimport { getPptxFillColor } from \"../utils/getPptxFillColor\";\nimport { getTransformedBoundingBox } from \"../utils/getTransformedBoundingBox\";\nimport { getInchesFromPixels, getPptxPixelsFromPixels } from \"../utils/getUnitsFromPixels\";\n\nexport const renderRectangle: PowerPointObjectRenderer<Rectangle> = ({\n powerpoint,\n slide,\n object: rectangle,\n opacity,\n pixelsPerInch,\n transform,\n}) => {\n const targetOpacity = rectangle.opacity * opacity;\n if (rectangle.drawn === 0 || targetOpacity === 0) {\n return;\n }\n\n const { origin, size } = getTransformedBoundingBox(\n Position({ x: rectangle.x, y: rectangle.y }),\n rectangle.anchor,\n Size({ width: rectangle.width, height: rectangle.height }),\n transform,\n );\n\n slide.addShape(\n rectangle.rounding > 0 ? powerpoint.ShapeType.roundRect : powerpoint.ShapeType.rect,\n {\n fill: getPptxFillColor(rectangle.fill, targetOpacity),\n x: getInchesFromPixels(origin.x, pixelsPerInch),\n y: getInchesFromPixels(origin.y, pixelsPerInch),\n w: getInchesFromPixels(size.width, pixelsPerInch),\n h: getInchesFromPixels(size.height, pixelsPerInch),\n line:\n rectangle.borderWidth > 0\n ? {\n ...getPptxFillColor(rectangle.borderColor, targetOpacity),\n width: getPptxPixelsFromPixels(\n rectangle.borderWidth * transform.scale,\n pixelsPerInch,\n ),\n }\n : {},\n rectRadius:\n rectangle.rounding > 0 ? (transform.scale * rectangle.rounding) / rectangle.height : 0,\n },\n );\n};\n","import { SVG } from \"../../../objects/SVG\";\nimport { Position } from \"../../../types/Position\";\nimport { Size } from \"../../../types/Size\";\nimport { PowerPointObjectRenderer } from \"../types/PowerPointObjectRenderer\";\nimport { getTransformedBoundingBox } from \"../utils/getTransformedBoundingBox\";\nimport { getInchesFromPixels } from \"../utils/getUnitsFromPixels\";\n\nexport const renderSvg: PowerPointObjectRenderer<SVG> = ({\n slide,\n object: svg,\n opacity,\n pixelsPerInch,\n transform,\n}) => {\n const targetOpacity = svg.opacity * opacity;\n if (targetOpacity === 0 || !svg.svg) {\n return;\n }\n\n const { origin, size } = getTransformedBoundingBox(\n Position({ x: svg.x, y: svg.y }),\n svg.anchor,\n Size({ width: svg.width, height: svg.height }),\n transform,\n );\n\n const sanitized = svg.svg.replace(/<\\?xml[^?]*\\?>\\s*/g, \"\");\n const base64 = Buffer.from(sanitized).toString(\"base64\");\n\n slide.addImage({\n data: `data:image/svg+xml;base64,${base64}`,\n x: getInchesFromPixels(origin.x, pixelsPerInch),\n y: getInchesFromPixels(origin.y, pixelsPerInch),\n w: getInchesFromPixels(size.width, pixelsPerInch),\n h: getInchesFromPixels(size.height, pixelsPerInch),\n transparency: (1 - targetOpacity) * 100,\n });\n};\n","/** Values for the CSS font-style property. */\nexport const FontStyle = {\n NORMAL: \"normal\",\n ITALIC: \"italic\",\n OBLIQUE: \"oblique\",\n} as const;\n\nexport type FontStyle = (typeof FontStyle)[keyof typeof FontStyle];\n\nexport const DEFAULT_FONT_STYLE: FontStyle = FontStyle.NORMAL;\n","export const FontWeight = {\n THIN: 100,\n EXTRA_LIGHT: 200,\n LIGHT: 300,\n NORMAL: 400,\n MEDIUM: 500,\n SEMI_BOLD: 600,\n BOLD: 700,\n EXTRA_BOLD: 800,\n BLACK: 900,\n} as const;\n\nexport type FontWeight = (typeof FontWeight)[keyof typeof FontWeight];\n\nexport const DEFAULT_FONT_WEIGHT: FontWeight = FontWeight.NORMAL;\n","import pptxgen from \"pptxgenjs\";\n\nimport { FontStyle } from \"../../../types/FontStyle\";\nimport { FontWeight } from \"../../../types/FontWeight\";\nimport { TextStyle } from \"../../../types/TextStyle\";\nimport { TextUnit } from \"../../../types/TextUnit\";\nimport { getPptxFillColor } from \"./getPptxFillColor\";\nimport { getPptxFontSizeFromPixels } from \"./getUnitsFromPixels\";\n\ninterface Args {\n readonly length: number | null;\n readonly opacity: number;\n readonly pixelsPerInch: number;\n readonly scale: number;\n readonly style: TextStyle;\n readonly textUnits: readonly TextUnit[][];\n}\n\nexport function getPptxText({\n length,\n opacity,\n pixelsPerInch,\n scale,\n style,\n textUnits,\n}: Args): pptxgen.TextProps[] {\n const textProps: pptxgen.TextProps[] = [];\n let consumedLength = 0;\n\n for (const line of textUnits) {\n if (textProps.length > 0) {\n textProps.push({ text: \"\\n\" });\n }\n\n for (const textUnit of line) {\n if (length !== null && consumedLength >= length) {\n break;\n }\n\n const { text: unitText, ...unitStyle } = textUnit;\n\n let truncatedUnitText: string | undefined;\n if (length !== null && consumedLength + unitText.length > length) {\n const remainingLength = length - consumedLength;\n truncatedUnitText = unitText.slice(0, remainingLength);\n }\n\n const targetUnitText = truncatedUnitText ?? unitText;\n consumedLength += targetUnitText.length;\n\n const combinedStyle: TextStyle = { ...style, ...unitStyle };\n textProps.push({\n text: unitText,\n options: {\n bold: combinedStyle.fontWeight >= FontWeight.BOLD,\n fontFace: combinedStyle.fontFamily,\n fontSize: scale * getPptxFontSizeFromPixels(combinedStyle.fontSize, pixelsPerInch),\n ...getPptxFillColor(combinedStyle.color, opacity),\n italic:\n combinedStyle.fontStyle === FontStyle.ITALIC ||\n combinedStyle.fontStyle === FontStyle.OBLIQUE,\n },\n });\n }\n }\n return textProps;\n}\n","import { Text } from \"../../../objects/Text\";\nimport { getTextUnitMeasurements } from \"../../../renderer/browser-canvas/utils/text/getTextUnitMeasurements\";\nimport { Position } from \"../../../types/Position\";\nimport { getTextStyleFromText } from \"../../../utils/objects/text/getTextStyleFromText\";\nimport { getTextUnitsFromTextContent } from \"../../../utils/objects/text/getTextUnitsFromTextContent\";\nimport { getCombinedSizes2D } from \"../../../utils/size/getCombinedSizes2D\";\nimport { PowerPointObjectRenderer } from \"../types/PowerPointObjectRenderer\";\nimport { getPptxText } from \"../utils/getPptxText\";\nimport { getTransformedBoundingBox } from \"../utils/getTransformedBoundingBox\";\nimport { getInchesFromPixels } from \"../utils/getUnitsFromPixels\";\n\nexport const renderText: PowerPointObjectRenderer<Text> = ({\n ctx,\n slide,\n object: text,\n opacity,\n pixelsPerInch,\n transform,\n}) => {\n const targetOpacity = text.opacity * opacity;\n if (text.length === 0 || targetOpacity === 0) {\n return;\n }\n\n const { length } = text;\n const textUnits = getTextUnitsFromTextContent(text.text);\n const style = getTextStyleFromText(text);\n\n const sizes = getTextUnitMeasurements(textUnits, style, ctx);\n const baseSize = getCombinedSizes2D(sizes, text.lineSpacing);\n const { origin, size } = getTransformedBoundingBox(\n Position({ x: text.x, y: text.y }),\n text.anchor,\n baseSize,\n transform,\n );\n\n const pptxText = getPptxText({\n length,\n opacity: targetOpacity,\n pixelsPerInch,\n scale: transform.scale,\n style,\n textUnits,\n });\n\n slide.addText(pptxText, {\n x: getInchesFromPixels(origin.x, pixelsPerInch),\n y: getInchesFromPixels(origin.y, pixelsPerInch),\n\n // Render text box slightly larger to account for variantion in text rendering\n h: getInchesFromPixels(size.height, pixelsPerInch) * 1.1,\n w: getInchesFromPixels(size.width, pixelsPerInch) * 1.1,\n });\n};\n","import { ObjectType } from \"../../../types/ObjectType\";\nimport { SlideObject } from \"../../../types/SlideObject\";\nimport { renderArrow } from \"../objects/renderArrow\";\nimport { renderCircle } from \"../objects/renderCircle\";\nimport { renderGroup } from \"../objects/renderGroup\";\nimport { renderImage } from \"../objects/renderImage\";\nimport { renderLine } from \"../objects/renderLine\";\nimport { renderPath } from \"../objects/renderPath\";\nimport { renderPolygon } from \"../objects/renderPolygon\";\nimport { renderRectangle } from \"../objects/renderRectangle\";\nimport { renderSvg } from \"../objects/renderSvg\";\nimport { renderText } from \"../objects/renderText\";\nimport { PowerPointObjectRenderer } from \"../types/PowerPointObjectRenderer\";\n\ntype ObjectRendererMap = {\n [T in ObjectType]: PowerPointObjectRenderer<SlideObject & { objectType: T }>;\n};\n\nconst notSupported: PowerPointObjectRenderer<SlideObject> = ({ object }) => {\n console.warn(\"Object type is not supported by PowerPoint renderer\", object);\n};\n\nexport const DEFAULT_OBJECT_RENDERERS: ObjectRendererMap = {\n [ObjectType.ARROW]: renderArrow,\n [ObjectType.CIRCLE]: renderCircle,\n [ObjectType.GROUP]: renderGroup,\n [ObjectType.IMAGE]: renderImage,\n [ObjectType.LINE]: renderLine,\n [ObjectType.MASK]: notSupported,\n [ObjectType.PATH]: renderPath,\n [ObjectType.POLYGON]: renderPolygon,\n [ObjectType.RECTANGLE]: renderRectangle,\n [ObjectType.SLIDE_OBJECT]: () => {},\n [ObjectType.SVG]: renderSvg,\n [ObjectType.TEXT]: renderText,\n};\n","import path from \"path\";\n\nexport function getImagePathById(\n relativeImagePathById: Record<string, string>,\n pathPrefix: string,\n): Record<string, string> {\n const result: Record<string, string> = {};\n for (const [id, relativePath] of Object.entries(relativeImagePathById)) {\n result[id] = path.join(pathPrefix, relativePath);\n }\n return result;\n}\n","import pptxgen from \"pptxgenjs\";\n\nimport {\n CanvasContextType,\n UnifiedCanvasContext,\n} from \"../../renderer/browser-canvas/types/UnifiedCanvasContext\";\nimport { Presentation } from \"../../types/Presentation\";\nimport { SlideObject } from \"../../types/SlideObject\";\nimport { getObjectState } from \"../../utils/presentation/getObjectState\";\nimport { getKeySlideBuildIndices } from \"../../utils/slide/getKeySlideBuildIndices\";\nimport { createCanvasElement } from \"../utils/createCanvasElement\";\nimport { DEFAULT_OBJECT_TRANSFORM, ObjectTransform } from \"./types/ObjectTransform\";\nimport { PowerPointRendererProps } from \"./types/PowerPointRendererProps\";\nimport {\n POWERPOINT_RENDERER_DEFAULT_STATE,\n PowerPointRendererState,\n} from \"./types/PowerPointRendererState\";\nimport { DEFAULT_OBJECT_RENDERERS } from \"./utils/defaultObjectRenderers\";\nimport { getImagePathById } from \"./utils/getImagePathById\";\nimport { getPptxFillColor } from \"./utils/getPptxFillColor\";\nimport { getInchesFromPixels } from \"./utils/getUnitsFromPixels\";\n\nexport class PowerPointRenderer {\n props: PowerPointRendererProps;\n state: PowerPointRendererState;\n\n constructor(props: Partial<PowerPointRendererProps>) {\n const { objectRenderers, ...rest } = props;\n this.props = {\n presentation: Presentation(),\n objectRenderers: {\n ...DEFAULT_OBJECT_RENDERERS,\n ...objectRenderers,\n },\n pixelsPerInch: 384,\n resourcePathPrefix: \"\",\n ...rest,\n };\n this.state = { ...POWERPOINT_RENDERER_DEFAULT_STATE };\n }\n\n save(filename: string): void {\n const { presentation, pixelsPerInch, resourcePathPrefix } = this.props;\n this.state = {\n ...POWERPOINT_RENDERER_DEFAULT_STATE,\n imagePathById: getImagePathById(presentation.resources.images, resourcePathPrefix),\n };\n\n // Canvas used for temporary drawing and measurement, not for render output\n const canvas = createCanvasElement(presentation.size);\n const context: UnifiedCanvasContext = {\n type: CanvasContextType.Node,\n context: canvas.getContext(\"2d\"),\n };\n\n const powerpoint = new pptxgen();\n powerpoint.defineLayout({\n name: \"CUSTOM\",\n width: getInchesFromPixels(presentation.size.width, pixelsPerInch),\n height: getInchesFromPixels(presentation.size.height, pixelsPerInch),\n });\n\n for (let slideIndex = 0; slideIndex < presentation.slides.length; slideIndex++) {\n const slide = presentation.slides[slideIndex];\n if (slide === undefined) {\n continue;\n }\n\n const keyBuildIndices = getKeySlideBuildIndices(slide);\n for (const buildIndex of keyBuildIndices) {\n this.addSlide(powerpoint, context, slideIndex, buildIndex);\n }\n }\n\n powerpoint.writeFile({ fileName: filename });\n }\n\n addSlide(\n powerpoint: pptxgen,\n context: UnifiedCanvasContext,\n slideIndex: number,\n buildIndex: number,\n ): void {\n const { objectRenderers, presentation, pixelsPerInch } = this.props;\n const { imagePathById } = this.state;\n const slide = presentation.slides[slideIndex];\n if (slide === undefined) {\n return;\n }\n\n const objectState = getObjectState({\n slide,\n buildIndex,\n buildTime: null,\n });\n\n const pptxSlide = powerpoint.addSlide();\n pptxSlide.background = getPptxFillColor(presentation.backgroundColor);\n\n function renderObject(object: SlideObject, transform: ObjectTransform, opacity: number) {\n const objectRenderer = objectRenderers[object.objectType];\n const currentObject = objectState.get(object);\n if (objectRenderer === undefined || currentObject === undefined) {\n return;\n }\n objectRenderer({\n ctx: context,\n imagePathById,\n object: currentObject,\n opacity,\n pixelsPerInch,\n powerpoint,\n renderObject,\n slide: pptxSlide,\n transform,\n });\n }\n\n // Render all objects in the slide.\n for (const object of slide.objects) {\n renderObject(object, DEFAULT_OBJECT_TRANSFORM, 1.0);\n }\n }\n}\n"],"names":["CanvasContextType","ObjectType","getArrowPoints","arrow","drawn","startX","startY","endX","endY","arrowheadSize","isArrowheadFilled","isDrawnFromCenter","start","end","angle","midpoint","dx","dy","drawnLength","unitX","unitY","drawnStart","drawnEnd","arrowAngle","adjustedArrowheadSize","arrowheadBase1","arrowheadBase2","doubledArrowheadBase1","doubledArrowheadBase2","getAlphaForColor","color","opacity","getHexStringForColor","red","green","blue","hex","alphaHex","assertNever","value","message","Path2DType","drawStroke","ctx","isRounded","path","pathLength","width","fullPathLength","getRgbStringForColor","alpha","fillPath","getPathFromPositions","positions","createPath","firstPosition","length","position","prevPosition","renderArrow","createPath2D","targetOpacity","arrowPoints","arrowheadPoints","doubledArrowheadPoints","arrowPath","arrowheadPath","doubledArrowheadPath","getCircleInsetFillPath","circle","insetRadius","startAngle","getCirclePath","clipToPath","renderCircle","insetFillPath","Position","props","DEFAULT_POSITION","Size","DEFAULT_SIZE","Anchor","BoundingBox","getBoundingBox","anchor","size","x","y","height","renderGroup","group","renderObject","boundingBox","rotation","rotateOriginX","rotateOriginY","child","getRoundedRectanglePath","origin","rounding","overshoot","ImageType","renderImage","imageById","image","imageData","roundedRectPath","getLinePath","line","renderLine","Color","hexString","DEFAULT_COLOR","renderMask","mask","bbox","renderPath","path2D","getPolygonPath","polygon","points","firstPoint","previousPoint","i","point","segmentLength","closingSegmentLength","renderPolygon","getRectangleInsetFillPath","rectangle","inset","insetWidth","insetHeight","insetOrigin","insetSize","getRectanglePath","renderRectangle","renderSvg","svg","Alignment","getTextStyleFromText","text","getTextUnitsFromTextContent","unit","getCombinedSizes2D","sizes","lineSpacing","a","b","previousLineHeight","lineHeight","getSizeFromTextMetrics","textMetrics","setContextWithTextStyle","textStyle","getTextUnitMeasurements","textUnits","style","lineSizes","unitStyle","combinedStyle","metrics","renderText","consumedLength","lineIndex","lineWidth","acc","curr","unitIndex","unitSize","unitText","truncatedUnitText","remainingLength","targetUnitText","DEFAULT_OBJECT_RENDERERS","Presentation","AnimationType","getSlideAnimationDuration","slideAnimation","animations","startTime","duration","animation","DEFAULT_INTERPOLATORS","from","to","proportion","_value","_from","interpolate","object","customInterpolators","interpolators","interpolatedProps","key","fromValue","toValue","interpolator","updateObjectStateWithAnimation","objectState","buildTime","elapsedTime","currentObject","timeIntoAnimation","getObjectChildren","getObjectState","slide","buildIndex","addObjectToState","childObject","completedBuildCount","getSvgImageUrlById","presentation","svgStrings","walkSlideObject","children","getKeySlideBuildIndices","buildIndices","animationIndex","anim","createCanvasElement","Canvas","pathData","Path2D","loadPresentationImages","imagePathById","pathPrefix","loadImage","src","resolve","sanitized","img","Image","reject","readFile","err","data","loadPromises","id","IMAGE_RENDERER_DEFAULT_STATE","ImageRenderer","objectRenderers","imageFormat","rest","imageIndex","directoryName","startImageIndex","animationHoldFrames","isAnimatedExport","slideIndex","durationMs","totalFrames","frameIndex","keyBuildIndices","getFilenameForImage","logFrequency","filename","canvas","context","objectRenderer","PDF_RENDERER_DEFAULT_STATE","PDFRenderer","e","module","s","o","h","u","t","require","l","n","r","d","c","p","f","A","O","I","m","g","v","w","k","S","z","C","B","E","R","_","global","T","D","U","P","L","j","Z","W","M","H","G","K","Y","F","N","X","V","q","J","__awaiter","thisArg","_arguments","generator","adopt","fulfilled","step","rejected","result","EMU","ONEPT","CRLF","LAYOUT_IDX_SERIES_BASE","REGEX_HEX_COLOR","LINEH_MODIFIER","DEF_BULLET_MARGIN","DEF_CELL_BORDER","DEF_CELL_MARGIN_IN","DEF_CHART_BORDER","DEF_CHART_GRIDLINE","DEF_FONT_COLOR","DEF_FONT_SIZE","DEF_FONT_TITLE_SIZE","DEF_PRES_LAYOUT","DEF_PRES_LAYOUT_NAME","DEF_SHAPE_LINE_COLOR","DEF_SHAPE_SHADOW","DEF_SLIDE_MARGIN_IN","DEF_TEXT_SHADOW","DEF_TEXT_GLOW","AXIS_ID_VALUE_PRIMARY","AXIS_ID_VALUE_SECONDARY","AXIS_ID_CATEGORY_PRIMARY","AXIS_ID_CATEGORY_SECONDARY","AXIS_ID_SERIES_PRIMARY","LETTERS","BARCHART_COLORS","PIECHART_COLORS","TEXT_HALIGN","TEXT_VALIGN","SLDNUMFLDID","OutputType","ChartType","ShapeType","SchemeColor","AlignH","AlignV","SHAPE_TYPE","CHART_TYPE","SCHEME_COLOR_NAMES","MASTER_OBJECTS","SLIDE_OBJECT_TYPES","PLACEHOLDER_TYPES","BULLET_TYPES","IMG_BROKEN","IMG_PLAYBTN","getSmartParseNumber","xyDir","layout","inch2Emu","getUuid","uuidFormat","encodeXmlEntities","xml","inches","valToPts","pt","convertRotationDegrees","componentToHex","rgbToHex","createColorElement","colorStr","innerElements","colorVal","tagName","colorAttr","createGlowElement","options","defaults","strXml","opts","genXmlColorSelection","fillType","internalElements","outText","getNewRelId","target","correctShadowOptions","ShadowProps","parseTextToLines","cell","colWidth","verbose","_a","_b","FOCO","CPL","parsedLines","inputCells","inputLines1","inputLines2","newLine","textLine","lineCells","lineWords","word","idx","cellProps","strCurrLine","getSlidesForTableRows","tableRows","tableProps","presLayout","masterSlide","arrInchMargins","emuSlideTabW","emuSlideTabH","emuTabCurrH","numCols","tableRowSlides","tablePropX","tablePropY","tablePropW","tablePropH","tableCalcW","calcSlideTabH","emuStartY","cellOpts","arrColW","val","iCol","newTableRowSlide","row","iRow","rowCellLines","maxCellMarTopEmu","maxCellMarBtmEmu","currTableRow","_c","_d","iCell","newCell","totalColW","_cell","prev","currCellIdx","emuLineMaxH","isDone","srcCell","tgtCell","newHeadRow","maxLineHeight","currLine","next","genTableToSlides","pptx","tabEleId","arrObjTabHeadRows","arrObjTabBodyRows","arrObjTabFootRows","arrTabColW","intTabW","firstRowCells","cellEle","idxc","colW","idxW","intCalcWidth","intMinWidth","colSelectorMin","colSelectorSet","part","htmlRow","arrObjTabCells","arrRGB1","arrRGB2","align","valign","idxs","idxb","intBorderW","arrRGB","strBorderC","idxTr","newSlide","_chartCounter","createSlideMaster","tgt","addChartDefinition","addImageDefinition","addShapeDefinition","addTextDefinition","type","opt","correctGridLineOptions","glOpts","chartId","resultObject","tmpOpt","tmpData","obj","item","isHexColor","isSchemeColor","newObject","intPosX","intPosY","intWidth","intHeight","sizing","objHyperlink","strImageData","strImagePath","imageRelId","objectName","strImgExtn","dupeItem","addMediaDefinition","intSizeX","intSizeY","strData","strLink","strPath","strType","strExtn","strCover","slideData","relId1","addNotesDefinition","notes","shapeName","newLineOpts","tmpOpts","createHyperlinkRels","addTableDefinition","slideLayout","addSlide","getSlide","slides","arrRows","newRow","cellBorder","arrTableMargin","firstRowColCnt","totalLen","idy","newAutoPagedSlides","_row","isPlaceholder","cleanOpts","itemOpts","placeHold","addPlaceholdersToSlideLayouts","slideLayoutObj","slideObj","addBackgroundDefinition","intRels","textObjs","tablecell","relId","rel","Slide","params","optionsWithType","createExcelWorksheet","chartObject","zip","zipExcel","JSZip","intBubbleCols","IS_MULTI_CAT_AXES","strSharedStrings","totCount","arrLabel","label","unqCount","objData","labelsGroup","strTableXml","getExcelColName","idxColLtr","_obj","_labelsGroup","strSheetXml","TOT_SER","TOT_CAT","TOT_LVL","totLabels","revLabelGroups","totGrpLbls","_cat","idx2","content","makeXmlCharts","strErr","usesSecondaryValAxis","genXmlTitle","valAxisId","catAxisId","makeChartType","makeCatAxis","makeValAxis","makeSerAxis","chartType","isMultiTypeChart","colorIndex","optsChartData","seriesColor","createLineCap","createShadowElement","index","arrColors","tmpSerColor","chartUuid","_label","axisId","createGridLineElement","axisPos","crossAxId","chartX","chartY","rotate","sizeAttr","titleBold","totalX","totalY","valX","valY","colIndex","colStr","colIdx","blur","offset","rotShape","lineCap","neverLineCap","encodeSlideMediaRels","isNode","fs","https","loadNodeDeps","imageProms","candidateRels","unqPaths","bitmap","dupe","ex","res","raw","chunk","xhr","reader","createSvgPngPreview","ImageSizingXml","imgSize","boxDim","imgRatio","isBoxBased","hzPerc","vzPerc","widthBased","lPerc","rPerc","tPerc","bPerc","slideObjectToXml","strSlideXml","intTableNum","slideItemObj","_e","_f","_g","_h","cx","cy","placeholderObj","locationAttr","arrTabRows","objTabOpts","intColCnt","intColW","imgWidth","imgHeight","col","colw","cells","cIdx","colspan","rowspan","vMergeCells","rIdx","nextRow","_hmerge","hMergeCell","intRowH","cellObj","cellSpanAttrs","cellSpanAttrStr","name","cellValign","cellTextDir","fillColor","cellFill","cellMargin","cellMarginXml","genXmlTextBody","genXmlPlaceholder","boxW","boxH","boxX","boxY","slideObjectRelationsToXml","defaultRels","lastRid","relRid","genXmlParagraphProperties","textObj","isDefault","strXmlBullet","strXmlLnSpc","strXmlParaSpc","strXmlTabStops","tag","bulletMarL","paragraphPropXml","bulletCode","stop","genXmlTextRunProperties","runProps","runPropsTag","genXmlTextRun","genXmlBodyProperties","slideObject","bodyProperties","tmpTextObjects","arrTextObjects","itext","arrLines","arrTexts","reqsClosingFontSize","placeholderIdx","placeholderTyp","placeholderType","makeXmlContTypes","slideLayouts","_slide","makeXmlRootRels","makeXmlApp","company","_slideObj","makeXmlCore","title","subject","author","revision","makeXmlPresentationRels","intRelNum","makeXmlSlide","getNotesFromSlide","notesText","makeXmlNotesMaster","makeXmlNotesSlide","makeXmlLayout","makeXmlMaster","layouts","layoutDefs","_layoutDef","makeXmlSlideLayoutRel","layoutNumber","makeXmlSlideRel","slideNumber","getLayoutIdxForSlide","makeXmlNotesSlideRel","makeXmlMasterRel","makeXmlNotesMasterRel","makeXmlTheme","pres","majorFont","minorFont","makeXmlPresentation","sect","makeXmlPresProps","makeXmlTableStyles","makeXmlViewProps","VERSION","PptxGenJS","newLayout","sectAlreadyInUse","slideNum","chartPromises","exportName","blobContent","eleLink","url","arrChartPromises","arrMediaPromises","layout4x3","layout16x9","layout16x10","layoutWide","propsOutpType","propsCompress","rawName","compression","fileName","outputType","writeFile","section","newSection","masterSlideName","tmpLayout","lastSect","propsClone","eleId","DEFAULT_OBJECT_TRANSFORM","POWERPOINT_RENDERER_DEFAULT_STATE","getLineBoundingBox","originX","originY","getPptxFillColor","POWERPOINT_PIXELS_PER_INCH","POWERPOINT_FONT_SIZE_SCALE","getInchesFromPixels","pixels","pixelsPerInch","getPptxPixelsFromPixels","getPptxFontSizeFromPixels","powerpoint","transform","getTransformedBoundingBox","updatedTransform","dataUrl","polygonWidth","polygonHeight","base64","FontStyle","FontWeight","getPptxText","scale","textProps","textUnit","baseSize","pptxText","notSupported","getImagePathById","relativeImagePathById","relativePath","PowerPointRenderer","resourcePathPrefix","pptxgen","pptxSlide"],"mappings":"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","x_google_ignoreList":[65,66]}