diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 78ecf59eb..f5a3c9beb 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -7,6 +7,13 @@ "option": "watch", "problemMatcher": ["$tsc-watch"], "runOptions": { "runOn": "folderOpen" } + }, + { + "type": "typescript", + "tsconfig": "tsconfig.scripts.json", + "option": "watch", + "problemMatcher": ["$tsc-watch"], + "runOptions": { "runOn": "folderOpen" } } ] } diff --git a/package.json b/package.json index 236a1a69c..3afa58bcc 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,7 @@ "contents": "ts-node --project tsconfig.scripts.json ./scripts/generateContentsBundle.ts", "sitemap": "ts-node --project tsconfig.scripts.json -r tsconfig-paths/register ./scripts/generateSitemap.ts", "contents:watch": "ts-node --project tsconfig.scripts.json ./scripts/generateContentsBundle.ts watch", + "precompute": "ts-node --project tsconfig.scripts.json -r tsconfig-paths/register ./scripts/precomputeExpressionContainers.ts", "tsc": "tsc", "eslint": "eslint --ext .js,.ts,.tsx .", "eslint:fix": "eslint --ext .js,.ts,.tsx --fix .", @@ -39,6 +40,7 @@ "devDependencies": { "@svgr/cli": "^4.3.0", "@types/color": "^3.0.0", + "@types/fs-extra": "^7.0.0", "@types/glob": "^7.1.1", "@types/jest": "^24.0.13", "@types/lodash": "^4.14.134", @@ -65,6 +67,7 @@ "eslint-plugin-prettier": "^3.1.0", "eslint-plugin-react": "^7.13.0", "eslint-plugin-react-hooks": "^1.6.0", + "fs-extra": "^8.0.1", "glob": "^7.1.4", "jest": "^24.8.0", "prettier": "^1.18.2", diff --git a/scripts/generateContentsBundle.ts b/scripts/generateContentsBundle.ts index 4aeda092d..8cab8a0e3 100644 --- a/scripts/generateContentsBundle.ts +++ b/scripts/generateContentsBundle.ts @@ -1,7 +1,7 @@ import chokidar from 'chokidar' import glob from 'glob' import fs from 'fs' -import prettier from 'prettier' +import prettierFormat from 'scripts/lib/prettierFormat' const regenerate = (path?: string) => { glob( @@ -34,14 +34,13 @@ const regenerate = (path?: string) => { ) .join(',\n') - const fileContents = prettier.format( + const fileContents = prettierFormat( `// WARNING: Do not modify this file - it's generated automatically. ${importString} export default { ${bundleObjectString} - }`, - { semi: false, singleQuote: true, parser: 'typescript' } + }` ) fs.writeFile('./src/lib/contentsBundle.tsx', fileContents, err => { diff --git a/scripts/generateEmojisBundle.ts b/scripts/generateEmojisBundle.ts index b47a3a6ea..7222ab5c3 100644 --- a/scripts/generateEmojisBundle.ts +++ b/scripts/generateEmojisBundle.ts @@ -1,7 +1,7 @@ import chokidar from 'chokidar' import glob from 'glob' import fs from 'fs' -import prettier from 'prettier' +import prettierFormat from 'scripts/lib/prettierFormat' import { exec } from 'child_process' const regenerate = () => { @@ -29,14 +29,13 @@ const regenerate = () => { .map(name => `'${name}': ${toComponentName(name)}`) .join(',\n') - const fileContents = prettier.format( + const fileContents = prettierFormat( `// WARNING: Do not modify this file - it's generated automatically. ${importString} export default { ${bundleObjectString} - }`, - { semi: false, singleQuote: true, parser: 'typescript' } + }` ) fs.writeFile('./src/lib/emojisBundle.tsx', fileContents, err => { diff --git a/scripts/lib/buildExpressionContainers.ts b/scripts/lib/buildExpressionContainers.ts new file mode 100644 index 000000000..51123aa99 --- /dev/null +++ b/scripts/lib/buildExpressionContainers.ts @@ -0,0 +1,109 @@ +import { ExpressionRunnerConfig } from 'scripts/lib/buildExpressionRunnerConfigFromShorthand' +import { isContainerWithState } from 'src/lib/expressionContainerGuards' +import stepExpressionContainer from 'src/lib/stepExpressionContainer' +import { ExpressionContainer } from 'src/types/ExpressionContainerTypes' + +const buildExpressionContainers = ({ + expressionContainer, + initializeInstructions, + showAllShowSteps, + skipAlphaConvert, + skipToTheEnd, + hideControls, + lastAllowedExpressionState, + lastAllowedExpressionStateAfterIterations, + hidePlayButton +}: ExpressionRunnerConfig): readonly ExpressionContainer[] => { + let currentExpressionContainer = expressionContainer + let results: ExpressionContainer[] = [] + const stepOptions = { showAllShowSteps, skipAlphaConvert } + + initializeInstructions.forEach(initializeInstruction => { + if ( + initializeInstruction.type === + 'stepForwardUntilPreviouslyChangedExpressionState' + ) { + while ( + currentExpressionContainer.previouslyChangedExpressionState !== + initializeInstruction.state && + !isContainerWithState(currentExpressionContainer, 'done') + ) { + currentExpressionContainer = stepExpressionContainer( + currentExpressionContainer, + stepOptions + ) + } + } else if (initializeInstruction.type === 'nextIteration') { + if (!isContainerWithState(currentExpressionContainer, 'done')) { + currentExpressionContainer = stepExpressionContainer( + currentExpressionContainer, + stepOptions + ) + while ( + currentExpressionContainer.previouslyChangedExpressionState !== + 'default' && + !isContainerWithState(currentExpressionContainer, 'done') + ) { + currentExpressionContainer = stepExpressionContainer( + currentExpressionContainer, + stepOptions + ) + } + } + } else { + while (!isContainerWithState(currentExpressionContainer, 'done')) { + currentExpressionContainer = stepExpressionContainer( + currentExpressionContainer, + stepOptions + ) + } + } + }) + + results.push(currentExpressionContainer) + + if (hideControls) { + return results + } + + if (skipToTheEnd) { + while (!isContainerWithState(currentExpressionContainer, 'done')) { + currentExpressionContainer = stepExpressionContainer( + currentExpressionContainer, + stepOptions + ) + } + results.push(currentExpressionContainer) + return results + } + + let becameDefaultCount = 0 + while (!isContainerWithState(currentExpressionContainer, 'done')) { + currentExpressionContainer = stepExpressionContainer( + currentExpressionContainer, + stepOptions + ) + results.push(currentExpressionContainer) + + if (hidePlayButton) { + break + } + + if ( + lastAllowedExpressionState && + lastAllowedExpressionState === + expressionContainer.previouslyChangedExpressionState && + (lastAllowedExpressionStateAfterIterations || 0) <= becameDefaultCount + ) { + break + } + + if (expressionContainer.previouslyChangedExpressionState === 'default') { + becameDefaultCount += 1 + } + } + + return results +} + +export default buildExpressionContainers diff --git a/scripts/lib/buildExpressionRunnerConfigFromShorthand.ts b/scripts/lib/buildExpressionRunnerConfigFromShorthand.ts new file mode 100644 index 000000000..72e3aa3fc --- /dev/null +++ b/scripts/lib/buildExpressionRunnerConfigFromShorthand.ts @@ -0,0 +1,291 @@ +import { + ExpressionRunnerShorthandConfig, + expressionRunnerSimpleConfigDefault, + expressionRunnerPlayButtonOnlyConfigDefault, + expressionRunnerSingleStepConfigDefault, + isExpressionRunnerSimpleConfig, + isExpressionRunnerPlayButtonOnlyConfig +} from 'scripts/lib/expressionRunnerShorthandConfig' +import { + SteppedExpressionContainer, + ExpressionContainer +} from 'src/types/ExpressionContainerTypes' +import { allMaxWidths } from 'src/lib/theme/maxWidths' +import { + InitializeInstruction, + ExpressionRunnerContextProps, + expressionRunnerContextDefault +} from 'src/types/ExpressionRunnerTypes' +import { HProps } from 'src/types/HTypes' + +export interface ExpressionRunnerConfig { + expressionContainer: SteppedExpressionContainer + hidePriorities: ExpressionRunnerContextProps['hidePriorities'] + hideBottomRightBadges: ExpressionRunnerContextProps['hideBottomRightBadges'] + hideControls: boolean + explanationsVisibility: + | 'visible' + | 'hidden' + | 'hiddenInitialPausedOnly' + | 'hiddenInitialAndLastPausedOnly' + variableSize: ExpressionRunnerContextProps['variableSize'] + initializeInstructions: readonly InitializeInstruction[] + maxStepsAllowed?: number + lastAllowedExpressionState?: ExpressionContainer['previouslyChangedExpressionState'] + lastAllowedExpressionStateAfterIterations?: number + containerSize: keyof typeof allMaxWidths + hidePlayButton?: boolean + speed: number + showAllShowSteps?: boolean + skipAlphaConvert?: boolean + skipToTheEnd: boolean + hideFuncUnboundBadgeOnExplanation: boolean + highlightOverridesCallArgAndFuncUnboundOnly: boolean + bottomRightBadgeOverrides: ExpressionRunnerContextProps['bottomRightBadgeOverrides'] + highlightOverrides: ExpressionRunnerContextProps['highlightOverrides'] + caption?: HProps['args'] + highlightOverrideActiveAfterStart: boolean + showOnlyFocused: ExpressionRunnerContextProps['showOnlyFocused'] + argPriorityAggHighlights: readonly number[] + funcPriorityAggHighlights: readonly number[] + highlightFunctions: boolean + superFastForward: boolean + highlightNumber?: number +} + +const expressionRunnerDefaults = { + hidePriorities: expressionRunnerContextDefault.hidePriorities, + hideBottomRightBadges: expressionRunnerContextDefault.hideBottomRightBadges, + hideControls: false, + explanationsVisibility: 'visible', + variableSize: expressionRunnerContextDefault.variableSize, + initializeInstructions: [], + containerSize: 'xxs', + skipToTheEnd: false, + hidePlayButton: false, + speed: 1, + hideFuncUnboundBadgeOnExplanation: false, + highlightOverridesCallArgAndFuncUnboundOnly: false, + bottomRightBadgeOverrides: + expressionRunnerContextDefault.bottomRightBadgeOverrides, + highlightOverrides: expressionRunnerContextDefault.highlightOverrides, + highlightOverrideActiveAfterStart: + expressionRunnerContextDefault.highlightOverrideActiveAfterStart, + showOnlyFocused: expressionRunnerContextDefault.showOnlyFocused, + argPriorityAggHighlights: [], + funcPriorityAggHighlights: [], + highlightFunctions: false, + superFastForward: false +} + +const buildInitializeInstructions = ({ + nextIteration, + nextIterations, + isDone, + initialState +}: { + nextIteration?: boolean + nextIterations?: number + isDone?: boolean + initialState: ExpressionContainer['previouslyChangedExpressionState'] +}): readonly InitializeInstruction[] => + nextIteration + ? [ + { + type: 'nextIteration' + }, + { + type: 'stepForwardUntilPreviouslyChangedExpressionState', + state: initialState + } + ] + : nextIterations + ? [ + ...Array(nextIterations).fill({ type: 'nextIteration' }), + { + type: 'stepForwardUntilPreviouslyChangedExpressionState', + state: initialState + } + ] + : [ + isDone + ? { + type: 'stepForwardUntilTheEnd' + } + : { + type: 'stepForwardUntilPreviouslyChangedExpressionState', + state: initialState + } + ] + +function mergeWithDefault< + A extends Record, + B extends Record +>(base: A, defaults: B): A & B { + let result: Record = { ...base } + Object.keys(defaults).forEach(key => { + if (base[key] === undefined) { + result[key] = defaults[key] + } + }) + return result as A & B +} + +const convertConfig = ( + config: ExpressionRunnerShorthandConfig +): ExpressionRunnerConfig => { + let runnerProps + if (isExpressionRunnerSimpleConfig(config)) { + const { + expressionContainer, + initialState, + isDone, + skipAlphaConvert, + nextIteration, + nextIterations, + showPriorities, + showAllShowSteps, + explanationsVisibility, + caption, + bottomRightBadgeOverrides, + variableSize, + containerSize, + highlightOverrides, + highlightOverrideActiveAfterStart, + highlightOverridesCallArgAndFuncUnboundOnly, + showOnlyFocused, + highlightFunctions, + argPriorityAggHighlights, + funcPriorityAggHighlights + } = mergeWithDefault< + typeof config, + typeof expressionRunnerSimpleConfigDefault + >(config, expressionRunnerSimpleConfigDefault) + + runnerProps = { + expressionContainer, + hideControls: true, + hidePriorities: !showPriorities, + explanationsVisibility, + showAllShowSteps, + variableSize, + highlightOverridesCallArgAndFuncUnboundOnly, + showOnlyFocused, + containerSize, + caption, + skipAlphaConvert, + bottomRightBadgeOverrides, + highlightOverrides, + highlightFunctions, + highlightOverrideActiveAfterStart, + initializeInstructions: buildInitializeInstructions({ + nextIteration, + nextIterations, + isDone, + initialState + }), + argPriorityAggHighlights, + funcPriorityAggHighlights + } + } else if (isExpressionRunnerPlayButtonOnlyConfig(config)) { + const { + expressionContainer, + initialState, + skipToTheEnd, + hideFuncUnboundBadgeOnExplanation, + showPriorities, + lastAllowedExpressionState, + lastAllowedExpressionStateAfterIterations, + nextIteration, + nextIterations, + showAllShowSteps, + speed, + skipAlphaConvert, + variableSize, + containerSize, + highlightOverrides, + explanationsVisibility, + superFastForward, + highlightNumber + } = mergeWithDefault< + typeof config, + typeof expressionRunnerPlayButtonOnlyConfigDefault + >(config, expressionRunnerPlayButtonOnlyConfigDefault) + + runnerProps = { + speed, + highlightNumber, + expressionContainer, + hidePriorities: !showPriorities, + highlightOverrides, + showAllShowSteps, + hideFuncUnboundBadgeOnExplanation, + skipToTheEnd, + variableSize, + containerSize, + skipAlphaConvert, + explanationsVisibility: + explanationsVisibility || 'hiddenInitialPausedOnly', + lastAllowedExpressionState, + lastAllowedExpressionStateAfterIterations, + initializeInstructions: buildInitializeInstructions({ + nextIteration, + nextIterations, + initialState + }), + superFastForward + } + } else { + const { + expressionContainer, + initialState, + finalState, + hideFuncUnboundBadgeOnExplanation, + showPriorities, + explanationsVisibility, + showAllShowSteps, + variableSize, + containerSize, + nextIteration, + nextIterations + } = mergeWithDefault< + typeof config, + typeof expressionRunnerSingleStepConfigDefault + >(config, expressionRunnerSingleStepConfigDefault) + + runnerProps = { + variableSize, + containerSize, + expressionContainer, + hidePriorities: !showPriorities, + hideFuncUnboundBadgeOnExplanation, + hidePlayButton: true, + explanationsVisibility, + lastAllowedExpressionState: finalState, + lastAllowedExpressionStateAfterIterations: nextIterations, + showAllShowSteps, + initializeInstructions: buildInitializeInstructions({ + nextIteration, + nextIterations, + initialState + }) + } + } + + return mergeWithDefault( + runnerProps, + expressionRunnerDefaults + ) +} + +const buildExpressionRunnerConfigFromShorthand = ( + shorthand: Record +): Record => { + return Object.entries(shorthand) + .map(([key, config]) => ({ + [key]: convertConfig(config) + })) + .reduce((acc, current) => ({ ...acc, ...current }), {}) +} + +export default buildExpressionRunnerConfigFromShorthand diff --git a/scripts/lib/expressionRunnerShorthandConfig.ts b/scripts/lib/expressionRunnerShorthandConfig.ts new file mode 100644 index 000000000..413b4513d --- /dev/null +++ b/scripts/lib/expressionRunnerShorthandConfig.ts @@ -0,0 +1,2349 @@ +import * as lessonExpressions from 'src/lib/lessonExpressions' +import { + ExpressionContainer, + SteppedExpressionContainer +} from 'src/types/ExpressionContainerTypes' +import { ExpressionRunnerProps } from 'src/types/ExpressionRunnerTypes' +import { HProps } from 'src/types/HTypes' + +export const expressionRunnerSimpleConfigDefault = { + isDone: false, + initialState: 'default', + showPriorities: false, + explanationsVisibility: 'hidden', + variableSize: 'lg', + skipAlphaConvert: false +} + +interface ExpressionRunnerSimpleConfig { + runner: 'simple' + expressionContainer: SteppedExpressionContainer + initialState?: ExpressionContainer['previouslyChangedExpressionState'] + isDone?: boolean + skipAlphaConvert?: boolean + nextIteration?: boolean + nextIterations?: number + showPriorities?: boolean + showAllShowSteps?: ExpressionRunnerProps['showAllShowSteps'] + explanationsVisibility?: ExpressionRunnerProps['explanationsVisibility'] + caption?: HProps['args'] + bottomRightBadgeOverrides?: ExpressionRunnerProps['bottomRightBadgeOverrides'] + variableSize?: ExpressionRunnerProps['variableSize'] + containerSize?: ExpressionRunnerProps['containerSize'] + highlightOverrides?: ExpressionRunnerProps['highlightOverrides'] + highlightOverrideActiveAfterStart?: ExpressionRunnerProps['highlightOverrideActiveAfterStart'] + highlightOverridesCallArgAndFuncUnboundOnly?: ExpressionRunnerProps['highlightOverridesCallArgAndFuncUnboundOnly'] + showOnlyFocused?: ExpressionRunnerProps['showOnlyFocused'] + highlightFunctions?: ExpressionRunnerProps['highlightFunctions'] + argPriorityAggHighlights?: readonly number[] + funcPriorityAggHighlights?: readonly number[] +} + +export function isExpressionRunnerSimpleConfig( + c: ExpressionRunnerShorthandConfig +): c is ExpressionRunnerSimpleConfig { + return c.runner === 'simple' +} + +export const expressionRunnerPlayButtonOnlyConfigDefault = { + initialState: 'default', + skipToTheEnd: true, + hideFuncUnboundBadgeOnExplanation: true, + showPriorities: false, + speed: 1, + skipAlphaConvert: false, + variableSize: 'lg', + explanationsVisibility: 'hiddenInitialPausedOnly' +} + +export function isExpressionRunnerPlayButtonOnlyConfig( + c: ExpressionRunnerShorthandConfig +): c is ExpressionRunnerPlayButtonOnlyConfig { + return c.runner === 'playButtonOnly' +} + +interface ExpressionRunnerPlayButtonOnlyConfig { + runner: 'playButtonOnly' + expressionContainer: SteppedExpressionContainer + initialState?: ExpressionContainer['previouslyChangedExpressionState'] + skipToTheEnd?: boolean + hideFuncUnboundBadgeOnExplanation?: boolean + showPriorities?: boolean + lastAllowedExpressionState?: ExpressionContainer['previouslyChangedExpressionState'] + lastAllowedExpressionStateAfterIterations?: number + nextIteration?: boolean + nextIterations?: number + showAllShowSteps?: ExpressionRunnerProps['showAllShowSteps'] + speed?: number + skipAlphaConvert?: boolean + variableSize?: ExpressionRunnerProps['variableSize'] + containerSize?: ExpressionRunnerProps['containerSize'] + highlightOverrides?: ExpressionRunnerProps['highlightOverrides'] + explanationsVisibility?: ExpressionRunnerProps['explanationsVisibility'] + superFastForward?: ExpressionRunnerProps['superFastForward'] + highlightNumber?: number +} + +export const expressionRunnerSingleStepConfigDefault = { + hideFuncUnboundBadgeOnExplanation: false, + showPriorities: false, + explanationsVisibility: 'hiddenInitialPausedOnly', + variableSize: 'lg' +} + +export function isExpressionRunnerSingleStepConfig( + c: ExpressionRunnerShorthandConfig +): c is ExpressionRunnerSingleStepConfig { + return c.runner === 'singleStep' +} + +interface ExpressionRunnerSingleStepConfig { + runner: 'singleStep' + expressionContainer: SteppedExpressionContainer + initialState: ExpressionContainer['previouslyChangedExpressionState'] + finalState: ExpressionContainer['previouslyChangedExpressionState'] + hideFuncUnboundBadgeOnExplanation?: boolean + showPriorities?: boolean + nextIteration?: boolean + nextIterations?: number + variableSize?: ExpressionRunnerProps['variableSize'] + containerSize?: ExpressionRunnerProps['containerSize'] + explanationsVisibility?: ExpressionRunnerProps['explanationsVisibility'] + showAllShowSteps?: ExpressionRunnerProps['showAllShowSteps'] +} + +export type ExpressionRunnerShorthandConfig = + | ExpressionRunnerSimpleConfig + | ExpressionRunnerPlayButtonOnlyConfig + | ExpressionRunnerSingleStepConfig + +const config: Record = { + ilpo: { + runner: 'simple', + expressionContainer: lessonExpressions.e1E1 + }, + imyd: { + runner: 'simple', + expressionContainer: lessonExpressions.e1E2 + }, + emmb: { + runner: 'simple', + expressionContainer: lessonExpressions.e1E3 + }, + jozw: { + runner: 'simple', + expressionContainer: lessonExpressions.e1E4 + }, + itbm: { + runner: 'playButtonOnly', + expressionContainer: lessonExpressions.e1E1 + }, + zwpj: { + runner: 'playButtonOnly', + expressionContainer: lessonExpressions.e1E2 + }, + dqkc: { + runner: 'playButtonOnly', + expressionContainer: lessonExpressions.e1E3 + }, + ldox: { + runner: 'playButtonOnly', + expressionContainer: lessonExpressions.e1E4 + }, + bgfl: { + runner: 'simple', + expressionContainer: lessonExpressions.e1E2, + isDone: true + }, + tuqr: { + runner: 'simple', + expressionContainer: lessonExpressions.e1E3, + isDone: true + }, + cpkp: { + runner: 'simple', + expressionContainer: lessonExpressions.e1E4, + isDone: true + }, + loai: { + runner: 'simple', + expressionContainer: lessonExpressions.e1E5 + }, + vvjn: { + runner: 'simple', + expressionContainer: lessonExpressions.e1E5, + isDone: true + }, + hbgo: { + runner: 'simple', + expressionContainer: lessonExpressions.e1E6 + }, + olef: { + runner: 'simple', + expressionContainer: lessonExpressions.e1E7 + }, + zzyu: { + runner: 'playButtonOnly', + expressionContainer: lessonExpressions.e1E5 + }, + qpjt: { + runner: 'playButtonOnly', + expressionContainer: lessonExpressions.e1E6 + }, + ozbe: { + runner: 'singleStep', + hideFuncUnboundBadgeOnExplanation: true, + expressionContainer: lessonExpressions.e1E1, + initialState: 'active', + finalState: 'showFuncBound' + }, + rqjo: { + runner: 'singleStep', + hideFuncUnboundBadgeOnExplanation: true, + expressionContainer: lessonExpressions.e1E1, + initialState: 'showFuncBound', + finalState: 'betaReducePreviewBefore' + }, + zzxj: { + runner: 'simple', + expressionContainer: lessonExpressions.e1E1, + initialState: 'showFuncBound' + }, + evqx: { + runner: 'singleStep', + hideFuncUnboundBadgeOnExplanation: true, + expressionContainer: lessonExpressions.e1E1, + initialState: 'betaReducePreviewBefore', + finalState: 'betaReducePreviewAfter' + }, + keck: { + runner: 'simple', + expressionContainer: lessonExpressions.e1E1, + initialState: 'betaReducePreviewBefore' + }, + msiw: { + runner: 'singleStep', + hideFuncUnboundBadgeOnExplanation: true, + expressionContainer: lessonExpressions.e1E1, + initialState: 'betaReducePreviewAfter', + finalState: 'betaReducePreviewCrossed' + }, + qoms: { + runner: 'simple', + expressionContainer: lessonExpressions.e1E1, + initialState: 'betaReducePreviewAfter' + }, + mhgm: { + runner: 'simple', + expressionContainer: lessonExpressions.e1E1, + initialState: 'betaReducePreviewCrossed' + }, + osqo: { + runner: 'simple', + expressionContainer: lessonExpressions.e1E1, + isDone: true + }, + sgfj: { + runner: 'singleStep', + hideFuncUnboundBadgeOnExplanation: true, + expressionContainer: lessonExpressions.e1E2, + initialState: 'showFuncBound', + finalState: 'betaReducePreviewBefore' + }, + gwtp: { + runner: 'singleStep', + hideFuncUnboundBadgeOnExplanation: true, + expressionContainer: lessonExpressions.e1E2, + initialState: 'betaReducePreviewBefore', + finalState: 'betaReducePreviewCrossed' + }, + jwzh: { + runner: 'simple', + expressionContainer: lessonExpressions.e1E2, + initialState: 'betaReducePreviewBefore' + }, + knhw: { + runner: 'simple', + expressionContainer: lessonExpressions.e1E2, + initialState: 'betaReducePreviewCrossed' + }, + ahsd: { + runner: 'simple', + expressionContainer: lessonExpressions.e1E2, + isDone: true + }, + wunw: { + runner: 'playButtonOnly', + expressionContainer: lessonExpressions.e1E1, + initialState: 'active', + skipToTheEnd: false + }, + jbam: { + runner: 'playButtonOnly', + expressionContainer: lessonExpressions.e1E2, + initialState: 'active', + skipToTheEnd: false + }, + xwim: { + runner: 'simple', + expressionContainer: lessonExpressions.e2E1 + }, + awxz: { + runner: 'simple', + expressionContainer: lessonExpressions.e2E1, + isDone: true + }, + ldts: { + runner: 'playButtonOnly', + expressionContainer: lessonExpressions.e2E1 + }, + rmsd: { + runner: 'singleStep', + expressionContainer: lessonExpressions.e2E1, + initialState: 'active', + finalState: 'showFuncUnbound' + }, + jmqh: { + runner: 'playButtonOnly', + expressionContainer: lessonExpressions.e2E1, + initialState: 'showFuncUnbound', + skipToTheEnd: false + }, + qwke: { + runner: 'simple', + expressionContainer: lessonExpressions.e2E1, + initialState: 'showFuncUnbound' + }, + cvtc: { + runner: 'simple', + expressionContainer: lessonExpressions.e3E1, + showPriorities: true + }, + uemm: { + runner: 'simple', + expressionContainer: lessonExpressions.e3E1, + showPriorities: true, + isDone: true + }, + xhbi: { + runner: 'playButtonOnly', + expressionContainer: lessonExpressions.e3E1, + showPriorities: true + }, + dkiy: { + runner: 'simple', + expressionContainer: lessonExpressions.e3E2, + showPriorities: true + }, + owcy: { + runner: 'simple', + expressionContainer: lessonExpressions.e3E3 + }, + aaov: { + runner: 'singleStep', + expressionContainer: lessonExpressions.e3E1, + initialState: 'default', + finalState: 'active', + showPriorities: true + }, + qxgl: { + runner: 'playButtonOnly', + expressionContainer: lessonExpressions.e3E1, + showPriorities: true, + initialState: 'active', + lastAllowedExpressionState: 'betaReducePreviewCrossed', + skipToTheEnd: false + }, + uwma: { + runner: 'singleStep', + expressionContainer: lessonExpressions.e3E1, + initialState: 'betaReducePreviewCrossed', + finalState: 'default', + showPriorities: true + }, + kvso: { + runner: 'playButtonOnly', + expressionContainer: lessonExpressions.e3E1, + nextIteration: true, + showPriorities: true, + skipToTheEnd: false + }, + snsr: { + runner: 'playButtonOnly', + expressionContainer: lessonExpressions.e3E1, + showPriorities: true, + skipToTheEnd: false + }, + udic: { + runner: 'simple', + expressionContainer: lessonExpressions.e3E1, + initialState: 'showFuncUnbound', + showPriorities: true + }, + xzqu: { + runner: 'simple', + expressionContainer: lessonExpressions.e3E1, + showPriorities: true, + nextIteration: true + }, + dnvw: { + runner: 'simple', + expressionContainer: lessonExpressions.e3E1, + nextIteration: true, + initialState: 'showFuncBound', + showPriorities: true + }, + nric: { + runner: 'simple', + isDone: true, + expressionContainer: lessonExpressions.e3E1, + showPriorities: true + }, + hdxc: { + runner: 'playButtonOnly', + expressionContainer: lessonExpressions.e3E2, + showPriorities: true, + skipToTheEnd: false + }, + eial: { + runner: 'simple', + expressionContainer: lessonExpressions.e3E2, + initialState: 'showFuncUnbound', + showPriorities: true + }, + iwkx: { + runner: 'simple', + expressionContainer: lessonExpressions.e3E2, + nextIteration: true, + showPriorities: true + }, + vjaa: { + runner: 'simple', + expressionContainer: lessonExpressions.e3E2, + initialState: 'showFuncBound', + showPriorities: true, + nextIteration: true + }, + iifq: { + runner: 'simple', + expressionContainer: lessonExpressions.e3E2, + isDone: true, + showPriorities: true + }, + laea: { + runner: 'simple', + expressionContainer: lessonExpressions.e5E1, + showPriorities: true + }, + cgpd: { + runner: 'simple', + expressionContainer: lessonExpressions.e5E1, + isDone: true + }, + ijot: { + runner: 'playButtonOnly', + expressionContainer: lessonExpressions.e5E1, + showPriorities: true + }, + aezk: { + runner: 'simple', + expressionContainer: lessonExpressions.e5E1, + initialState: 'active', + showPriorities: true + }, + ainx: { + runner: 'playButtonOnly', + expressionContainer: lessonExpressions.e5E1, + initialState: 'active', + lastAllowedExpressionState: 'showFuncBound', + showPriorities: true, + showAllShowSteps: true, + skipToTheEnd: false, + explanationsVisibility: 'hiddenInitialAndLastPausedOnly' + }, + hykj: { + runner: 'simple', + expressionContainer: lessonExpressions.e5E1, + initialState: 'showFuncUnbound', + showPriorities: true + }, + ielw: { + runner: 'simple', + showAllShowSteps: true, + expressionContainer: lessonExpressions.e5E1, + initialState: 'showFuncUnbound', + showPriorities: true + }, + dtzu: { + runner: 'simple', + expressionContainer: lessonExpressions.e5E1, + initialState: 'betaReducePreviewBefore', + showPriorities: true, + explanationsVisibility: 'visible' + }, + efyy: { + runner: 'singleStep', + expressionContainer: lessonExpressions.e5E1, + initialState: 'betaReducePreviewBefore', + finalState: 'betaReducePreviewAfter', + showPriorities: true + }, + izgz: { + runner: 'playButtonOnly', + expressionContainer: lessonExpressions.e5E1, + initialState: 'betaReducePreviewAfter', + showPriorities: true, + skipToTheEnd: false + }, + ljjg: { + runner: 'simple', + expressionContainer: lessonExpressions.e3E5 + }, + ebag: { + runner: 'simple', + expressionContainer: lessonExpressions.e3E5, + isDone: true + }, + skzv: { + runner: 'playButtonOnly', + expressionContainer: lessonExpressions.e3E5 + }, + egmr: { + runner: 'singleStep', + expressionContainer: lessonExpressions.e3E5, + initialState: 'active', + finalState: 'showFuncBound', + hideFuncUnboundBadgeOnExplanation: true + }, + lygz: { + runner: 'simple', + expressionContainer: lessonExpressions.e3E5, + initialState: 'betaReducePreviewBefore', + explanationsVisibility: 'visible' + }, + fivy: { + runner: 'singleStep', + expressionContainer: lessonExpressions.e3E5, + initialState: 'betaReducePreviewBefore', + finalState: 'betaReducePreviewAfter' + }, + dmwy: { + runner: 'playButtonOnly', + expressionContainer: lessonExpressions.e3E5, + initialState: 'betaReducePreviewAfter', + skipToTheEnd: false + }, + fpsd: { + runner: 'simple', + expressionContainer: lessonExpressions.e3E5, + initialState: 'showFuncBound' + }, + vegw: { + runner: 'simple', + expressionContainer: lessonExpressions.e3E5, + initialState: 'betaReducePreviewAfter' + }, + zywk: { + runner: 'simple', + expressionContainer: lessonExpressions.e5E2, + showPriorities: true, + initialState: 'default' + }, + pqfs: { + runner: 'simple', + expressionContainer: lessonExpressions.e5E2, + showPriorities: true, + initialState: 'active' + }, + tntc: { + runner: 'simple', + expressionContainer: lessonExpressions.e5E2, + initialState: 'active', + showPriorities: true + }, + mbrh: { + runner: 'simple', + expressionContainer: lessonExpressions.e5E2, + showPriorities: true, + isDone: true + }, + wbru: { + runner: 'playButtonOnly', + expressionContainer: lessonExpressions.e5E2, + showPriorities: true + }, + hwtu: { + runner: 'simple', + expressionContainer: lessonExpressions.e5E2, + initialState: 'showCallArg', + showAllShowSteps: true, + showPriorities: true + }, + usta: { + runner: 'playButtonOnly', + expressionContainer: lessonExpressions.e5E2, + initialState: 'showCallArg', + skipToTheEnd: false, + showAllShowSteps: true, + showPriorities: true + }, + mpal: { + runner: 'simple', + expressionContainer: lessonExpressions.e5E2, + initialState: 'showFuncBound', + showPriorities: true + }, + gtdu: { + runner: 'simple', + expressionContainer: lessonExpressions.e5E3, + showPriorities: true + }, + jmmp: { + runner: 'simple', + expressionContainer: lessonExpressions.e5E3, + showPriorities: true, + highlightOverrides: { b: 'highlighted' } + }, + qpkm: { + runner: 'simple', + expressionContainer: lessonExpressions.e5E3, + showPriorities: true, + isDone: true + }, + udvh: { + runner: 'playButtonOnly', + expressionContainer: lessonExpressions.e5E3, + showPriorities: true + }, + dqey: { + runner: 'simple', + expressionContainer: lessonExpressions.e5E3, + initialState: 'active', + showPriorities: true + }, + diis: { + runner: 'playButtonOnly', + expressionContainer: lessonExpressions.e5E3, + initialState: 'active', + skipToTheEnd: false, + showPriorities: true + }, + tiok: { + runner: 'simple', + expressionContainer: lessonExpressions.e6E1, + showPriorities: true, + caption: { name: 'secretCodeCaptionSimple', number: 0 } + }, + tfho: { + runner: 'simple', + expressionContainer: lessonExpressions.e6E2, + showPriorities: true, + caption: { name: 'secretCodeCaptionSimple', number: 1 } + }, + idcf: { + runner: 'simple', + expressionContainer: lessonExpressions.e6E3, + showPriorities: true, + caption: { name: 'secretCodeCaptionSimple', number: 2 } + }, + xemt: { + runner: 'simple', + expressionContainer: lessonExpressions.e6E4, + showPriorities: true + }, + howy: { + runner: 'simple', + expressionContainer: lessonExpressions.e6E12, + showPriorities: true, + variableSize: 'md' + }, + imqy: { + runner: 'simple', + expressionContainer: lessonExpressions.e6E13, + showPriorities: true, + variableSize: 'md', + caption: { name: 'secretCodeCaption', number: 5, letter: 'i' }, + bottomRightBadgeOverrides: { j: '🅱️', i: '🅰️' } + }, + bpwl: { + runner: 'simple', + expressionContainer: lessonExpressions.e6E4, + showPriorities: true, + caption: { name: 'secretCodeCaptionSimple', number: 3 } + }, + eozk: { + runner: 'simple', + expressionContainer: lessonExpressions.e6E5 + }, + stio: { + runner: 'simple', + expressionContainer: lessonExpressions.e6E5, + highlightOverrides: { Amult: 'highlighted' }, + caption: { name: 'numberOfAIsSecretCodeCaption' } + }, + cqpa: { + runner: 'simple', + expressionContainer: lessonExpressions.e6E6, + showPriorities: true, + caption: { name: 'secretCodeCaption', number: 2, letter: 'A' } + }, + blre: { + runner: 'simple', + expressionContainer: lessonExpressions.e6E1, + showPriorities: true, + bottomRightBadgeOverrides: { b: '🅱️', a: '🅰️' } + }, + jmyv: { + runner: 'simple', + expressionContainer: lessonExpressions.e6E2, + showPriorities: true, + bottomRightBadgeOverrides: { d: '🅱️', c: '🅰️' } + }, + ilnb: { + runner: 'simple', + expressionContainer: lessonExpressions.e6E3, + showPriorities: true, + bottomRightBadgeOverrides: { f: '🅱️', e: '🅰️' } + }, + qvxe: { + runner: 'simple', + expressionContainer: lessonExpressions.e6E11, + showPriorities: true, + bottomRightBadgeOverrides: { f: '🅱️', e: '🅰️' }, + caption: { name: 'secretCodeCaption', number: 2, letter: 'e' } + }, + qsfp: { + runner: 'simple', + expressionContainer: lessonExpressions.e6E4, + showPriorities: true, + bottomRightBadgeOverrides: { h: '🅱️', g: '🅰️' } + }, + sfop: { + runner: 'simple', + expressionContainer: lessonExpressions.e6E10, + showPriorities: true, + bottomRightBadgeOverrides: { h: '🅱️', g: '🅰️' }, + caption: { name: 'secretCodeCaption', number: 3, letter: 'g' } + }, + xpvh: { + runner: 'simple', + expressionContainer: lessonExpressions.e6E1, + showPriorities: true, + caption: { name: 'secretCodeCaption', number: 0, letter: 'a' }, + bottomRightBadgeOverrides: { b: '🅱️', a: '🅰️' } + }, + nicg: { + runner: 'simple', + expressionContainer: lessonExpressions.e6E8, + showPriorities: true, + caption: { name: 'secretCodeCaption', number: 0, letter: 'd' } + }, + qmof: { + runner: 'simple', + expressionContainer: lessonExpressions.e6E7, + showPriorities: true, + containerSize: 'xs', + variableSize: 'md' + }, + xgei: { + runner: 'simple', + expressionContainer: lessonExpressions.e6E7, + showPriorities: true, + containerSize: 'xs', + variableSize: 'md', + caption: { name: 'secretCodeAddOneCaption' } + }, + mauj: { + runner: 'simple', + expressionContainer: lessonExpressions.e6E9, + showPriorities: true, + containerSize: 'xs', + variableSize: 'md', + highlightOverrides: { d: 'highlighted', e: 'highlighted' } + }, + eavp: { + runner: 'simple', + expressionContainer: lessonExpressions.e6E9, + showPriorities: true, + containerSize: 'xs', + variableSize: 'md' + }, + wafy: { + runner: 'playButtonOnly', + expressionContainer: lessonExpressions.e6E9, + showPriorities: true, + containerSize: 'xs', + variableSize: 'md', + skipToTheEnd: false, + speed: 1.75 + }, + badn: { + runner: 'simple', + expressionContainer: lessonExpressions.e6E9, + showPriorities: true, + isDone: true, + caption: { name: 'secretCodeCaption', number: 1, letter: 'b' } + }, + slyk: { + runner: 'simple', + expressionContainer: lessonExpressions.e7E1, + showPriorities: true, + caption: { name: 'secretCodeCaption', number: 1, letter: 'd' } + }, + eemn: { + runner: 'playButtonOnly', + expressionContainer: lessonExpressions.e7E2, + showPriorities: true, + containerSize: 'xs', + variableSize: 'md', + skipToTheEnd: false, + speed: 3, + highlightOverrides: { d: 'highlighted', e: 'highlighted' } + }, + rceu: { + runner: 'simple', + expressionContainer: lessonExpressions.e7E2, + showPriorities: true, + isDone: true, + caption: { name: 'secretCodeCaption', number: 2, letter: 'b' } + }, + sisn: { + runner: 'simple', + expressionContainer: lessonExpressions.e7E3, + showPriorities: true, + caption: { name: 'secretCodeCaption', number: 2, letter: 'd' } + }, + syhh: { + runner: 'playButtonOnly', + expressionContainer: lessonExpressions.e7E4, + showPriorities: true, + containerSize: 'xs', + variableSize: 'md', + skipToTheEnd: false, + highlightOverrides: { d: 'highlighted', e: 'highlighted' }, + speed: 3 + }, + ablz: { + runner: 'simple', + expressionContainer: lessonExpressions.e7E4, + showPriorities: true, + isDone: true, + caption: { name: 'secretCodeCaption', number: 3, letter: 'b' } + }, + bpza: { + runner: 'simple', + expressionContainer: lessonExpressions.e7E5, + showPriorities: true, + caption: { name: 'secretCodeCaption', number: 1, letter: 'e' } + }, + vrvl: { + runner: 'simple', + expressionContainer: lessonExpressions.e7E6, + showPriorities: true, + caption: { name: 'secretCodeCaption', number: 2, letter: 'g' } + }, + goif: { + runner: 'simple', + expressionContainer: lessonExpressions.e7E7, + showPriorities: true, + containerSize: 'xs', + variableSize: 'md' + }, + fatm: { + runner: 'simple', + expressionContainer: lessonExpressions.e7E11, + showPriorities: true, + containerSize: 'xs', + variableSize: 'sm', + highlightOverrides: { g: 'highlighted', h: 'highlighted' } + }, + bxdf: { + runner: 'simple', + expressionContainer: lessonExpressions.e7E7, + showPriorities: true, + caption: { name: 'secretCodeAddCaption' }, + containerSize: 'xs', + variableSize: 'md' + }, + hdwy: { + runner: 'simple', + expressionContainer: lessonExpressions.e7E8, + showPriorities: true, + containerSize: 'xs', + variableSize: 'sm', + highlightOverrides: { g: 'highlighted', h: 'highlighted' } + }, + entr: { + runner: 'simple', + expressionContainer: lessonExpressions.e7E8, + showPriorities: true, + containerSize: 'xs', + variableSize: 'sm' + }, + brrh: { + runner: 'simple', + expressionContainer: lessonExpressions.e7E10, + showPriorities: true, + containerSize: 'xs', + variableSize: 'sm', + highlightOverrides: { e: 'highlighted', f: 'highlighted' } + }, + rome: { + runner: 'playButtonOnly', + expressionContainer: lessonExpressions.e7E8, + showPriorities: true, + containerSize: 'xs', + variableSize: 'sm', + skipToTheEnd: false, + speed: 5 + }, + dhdk: { + runner: 'simple', + expressionContainer: lessonExpressions.e7E8, + showPriorities: true, + isDone: true, + caption: { name: 'secretCodeCaption', number: 3, letter: 'c' } + }, + dyov: { + runner: 'simple', + expressionContainer: lessonExpressions.e7E9, + showPriorities: true, + containerSize: 'xs', + variableSize: 'sm', + highlightOverrides: { e: 'highlighted', f: 'highlighted' } + }, + unck: { + runner: 'playButtonOnly', + expressionContainer: lessonExpressions.e7E9, + showPriorities: true, + containerSize: 'xs', + variableSize: 'sm', + skipToTheEnd: false, + speed: 5 + }, + cpbj: { + runner: 'simple', + expressionContainer: lessonExpressions.e7E9, + showPriorities: true, + isDone: true, + caption: { name: 'secretCodeCaption', number: 4, letter: 'c' } + }, + ksya: { + runner: 'simple', + expressionContainer: lessonExpressions.e8E8, + showPriorities: true, + containerSize: 'xs', + variableSize: 'md' + }, + drvu: { + runner: 'simple', + expressionContainer: lessonExpressions.e8E1, + showPriorities: true, + containerSize: 'xs', + variableSize: 'md', + caption: { name: 'secretCodeMultiplyCaption' } + }, + bdlj: { + runner: 'simple', + expressionContainer: lessonExpressions.e8E2, + showPriorities: true, + caption: { name: 'secretCodeCaption', number: 2, letter: 'e' } + }, + ifwb: { + runner: 'simple', + expressionContainer: lessonExpressions.e8E3, + showPriorities: true, + caption: { name: 'secretCodeCaption', number: 3, letter: 'g' } + }, + mame: { + runner: 'simple', + expressionContainer: lessonExpressions.e8E4, + showPriorities: true, + containerSize: 'xs', + variableSize: 'md', + highlightOverrides: { + e: 'highlighted', + f: 'highlighted', + g: 'highlighted', + h: 'highlighted' + } + }, + ngus: { + runner: 'playButtonOnly', + expressionContainer: lessonExpressions.e8E4, + showPriorities: true, + containerSize: 'xs', + variableSize: 'sm', + skipToTheEnd: false, + speed: 5, + highlightOverrides: { + e: 'highlighted', + f: 'highlighted', + g: 'highlighted', + h: 'highlighted' + } + }, + pzwe: { + runner: 'simple', + expressionContainer: lessonExpressions.e8E4, + showPriorities: true, + containerSize: 'xs', + variableSize: 'sm' + }, + ujfj: { + runner: 'simple', + expressionContainer: lessonExpressions.e8E4, + showPriorities: true, + isDone: true, + variableSize: 'md', + caption: { name: 'secretCodeCaption', number: 6, letter: 'c' } + }, + dymt: { + runner: 'simple', + expressionContainer: lessonExpressions.e8E5, + showPriorities: true, + caption: { name: 'secretCodeCaption', number: 1, letter: 'e' } + }, + mhwq: { + runner: 'simple', + expressionContainer: lessonExpressions.e8E6, + showPriorities: true, + caption: { name: 'secretCodeCaption', number: 1, letter: 'g' } + }, + sojz: { + runner: 'simple', + expressionContainer: lessonExpressions.e8E7, + showPriorities: true, + containerSize: 'xs', + variableSize: 'md', + highlightOverrides: { + e: 'highlighted', + f: 'highlighted', + g: 'highlighted', + h: 'highlighted' + } + }, + ktyt: { + runner: 'playButtonOnly', + expressionContainer: lessonExpressions.e8E7, + showPriorities: true, + containerSize: 'xs', + variableSize: 'md', + skipToTheEnd: false, + speed: 5 + }, + aeyv: { + runner: 'simple', + expressionContainer: lessonExpressions.e8E7, + showPriorities: true, + isDone: true, + caption: { name: 'secretCodeCaption', number: 1, letter: 'c' } + }, + bxfv: { + runner: 'simple', + expressionContainer: lessonExpressions.e9E1, + showPriorities: true, + containerSize: 'xs', + variableSize: 'md', + highlightOverrides: { z: 'highlighted', y: 'highlighted' } + }, + fqwj: { + runner: 'simple', + expressionContainer: lessonExpressions.e9E1, + showPriorities: true, + containerSize: 'xs', + variableSize: 'md' + }, + tkqr: { + runner: 'simple', + expressionContainer: lessonExpressions.e9E2, + showPriorities: true, + containerSize: 'xs', + variableSize: 'md', + highlightOverrides: { f: 'highlighted', g: 'highlighted' } + }, + fhlw: { + runner: 'simple', + expressionContainer: lessonExpressions.e9E3, + caption: { name: 'secretCodeCaption', number: 0, letter: 'f' } + }, + jliw: { + runner: 'playButtonOnly', + expressionContainer: lessonExpressions.e9E2, + showPriorities: true, + containerSize: 'xs', + variableSize: 'md', + skipToTheEnd: false, + speed: 3 + }, + yehl: { + runner: 'simple', + expressionContainer: lessonExpressions.e9E4, + caption: { name: 'secretCodeCaption', number: 1, letter: 'f' } + }, + mrky: { + runner: 'simple', + expressionContainer: lessonExpressions.e9E5, + showPriorities: true, + containerSize: 'xs', + variableSize: 'md', + highlightOverrides: { f: 'highlighted', g: 'highlighted' } + }, + ctyl: { + runner: 'playButtonOnly', + expressionContainer: lessonExpressions.e9E5, + showPriorities: true, + containerSize: 'xs', + variableSize: 'md', + skipToTheEnd: false, + speed: 4 + }, + kupy: { + runner: 'simple', + expressionContainer: lessonExpressions.e9E6, + caption: { name: 'secretCodeCaption', number: 2, letter: 'f' } + }, + qdkf: { + runner: 'simple', + expressionContainer: lessonExpressions.e9E7, + showPriorities: true, + containerSize: 'xs', + variableSize: 'md', + highlightOverrides: { f: 'highlighted', g: 'highlighted' } + }, + gtwk: { + runner: 'playButtonOnly', + expressionContainer: lessonExpressions.e9E7, + showPriorities: true, + containerSize: 'xs', + variableSize: 'md', + skipToTheEnd: false, + speed: 4, + skipAlphaConvert: true + }, + nlxe: { + runner: 'simple', + expressionContainer: lessonExpressions.e9E1, + showPriorities: true, + containerSize: 'xs', + variableSize: 'md', + caption: { name: 'ifCaption', ifZero: 'y', ifNonZero: 'z' } + }, + dvrw: { + runner: 'simple', + expressionContainer: lessonExpressions.e9E8, + showPriorities: true, + containerSize: 'xs', + variableSize: 'md', + caption: { name: 'ifCaption', ifZero: 'y', ifNonZero: ['w', 'x'] }, + highlightOverrides: { w: 'highlighted', x: 'highlighted' } + }, + wbpx: { + runner: 'simple', + expressionContainer: lessonExpressions.e10E1, + showPriorities: true + }, + gszp: { + runner: 'playButtonOnly', + expressionContainer: lessonExpressions.e10E2, + showPriorities: true, + skipToTheEnd: false, + speed: 1.75, + highlightOverrides: { c: 'highlighted' } + }, + kntz: { + runner: 'playButtonOnly', + expressionContainer: lessonExpressions.e10E3, + showPriorities: true, + skipToTheEnd: false, + speed: 1.75, + highlightOverrides: { d: 'highlighted' } + }, + bmms: { + runner: 'playButtonOnly', + expressionContainer: lessonExpressions.e10E4, + showPriorities: true, + skipAlphaConvert: true, + speed: 1.75, + skipToTheEnd: false + }, + gmcn: { + runner: 'simple', + expressionContainer: lessonExpressions.e10E4, + showPriorities: true, + skipAlphaConvert: true, + initialState: 'showFuncUnbound', + highlightOverrides: { b: 'highlighted' }, + caption: { name: 'isCallArgAndFuncUnboundTheSameCaption', same: true }, + highlightOverrideActiveAfterStart: true + }, + vpjw: { + runner: 'playButtonOnly', + expressionContainer: lessonExpressions.e10E4, + explanationsVisibility: 'hiddenInitialAndLastPausedOnly', + skipAlphaConvert: true, + showPriorities: true, + initialState: 'showFuncUnbound', + lastAllowedExpressionState: 'showFuncBound', + highlightOverrides: { b: 'highlighted' }, + skipToTheEnd: false, + speed: 1.75 + }, + kjyi: { + runner: 'playButtonOnly', + expressionContainer: lessonExpressions.e10E4, + skipAlphaConvert: true, + showPriorities: true, + nextIteration: true, + initialState: 'showFuncBound', + skipToTheEnd: false, + speed: 1.75 + }, + dpst: { + runner: 'simple', + expressionContainer: lessonExpressions.e10E2, + showPriorities: true, + skipAlphaConvert: true, + initialState: 'showFuncUnbound', + caption: { name: 'isCallArgAndFuncUnboundTheSameCaption', same: false } + }, + xhwx: { + runner: 'playButtonOnly', + expressionContainer: lessonExpressions.e10E2, + skipAlphaConvert: true, + showPriorities: true, + initialState: 'showFuncUnbound', + lastAllowedExpressionState: 'showFuncBound', + skipToTheEnd: false, + speed: 1.75 + }, + ttvy: { + runner: 'playButtonOnly', + expressionContainer: lessonExpressions.e10E2, + skipAlphaConvert: true, + showPriorities: true, + nextIteration: true, + initialState: 'showFuncBound', + skipToTheEnd: false, + speed: 1.75 + }, + lrja: { + runner: 'simple', + expressionContainer: lessonExpressions.e11E1, + showPriorities: true, + caption: { name: 'secretCodeCaption', number: 1, letter: 'd' } + }, + bcae: { + runner: 'simple', + expressionContainer: lessonExpressions.e11E2, + showPriorities: true, + skipAlphaConvert: true, + containerSize: 'xs', + variableSize: 'md' + }, + zuam: { + runner: 'playButtonOnly', + expressionContainer: lessonExpressions.e11E2, + showPriorities: true, + skipToTheEnd: false, + skipAlphaConvert: true, + speed: 3, + containerSize: 'xs', + variableSize: 'md' + }, + kfcw: { + runner: 'simple', + expressionContainer: lessonExpressions.e11E2, + showPriorities: true, + isDone: true, + skipAlphaConvert: true, + containerSize: 'xs', + variableSize: 'md', + caption: { name: 'notSecretCodeCaption', number: 2, letter: 'b' } + }, + jxyg: { + runner: 'simple', + expressionContainer: lessonExpressions.e11E2, + showPriorities: true, + initialState: 'showFuncUnbound', + containerSize: 'xs', + variableSize: 'md', + highlightOverrides: { b: 'highlighted' }, + highlightOverridesCallArgAndFuncUnboundOnly: true, + highlightOverrideActiveAfterStart: true, + caption: { name: 'isCallArgAndFuncUnboundTheSameCaption', same: true } + }, + oiwu: { + runner: 'simple', + expressionContainer: lessonExpressions.e11E3, + showPriorities: true, + initialState: 'showFuncUnbound', + containerSize: 'xs', + variableSize: 'md', + highlightOverrides: { b: 'highlighted' }, + highlightOverrideActiveAfterStart: true, + showOnlyFocused: true, + caption: { name: 'mustChangeBothFuncUnboundAndBound' } + }, + uqpp: { + runner: 'simple', + expressionContainer: lessonExpressions.e11E3, + showPriorities: true, + initialState: 'alphaConvertDone', + containerSize: 'xs', + variableSize: 'md', + highlightOverrides: { b: 'highlighted' }, + highlightOverrideActiveAfterStart: true, + showOnlyFocused: true + }, + hxmk: { + runner: 'simple', + expressionContainer: lessonExpressions.e11E3, + showPriorities: true, + initialState: 'alphaConvertDone', + containerSize: 'xs', + variableSize: 'md', + highlightOverrides: { b: 'highlighted' }, + highlightOverrideActiveAfterStart: true, + caption: { name: 'isCallArgAndFuncUnboundTheSameCaption', same: false } + }, + rzbq: { + runner: 'playButtonOnly', + expressionContainer: lessonExpressions.e11E3, + showPriorities: true, + initialState: 'alphaConvertDone', + containerSize: 'xs', + variableSize: 'md', + skipToTheEnd: false, + speed: 3 + }, + jlet: { + runner: 'simple', + expressionContainer: lessonExpressions.e11E3, + isDone: true, + showPriorities: true, + containerSize: 'xs', + variableSize: 'md', + caption: { name: 'secretCodeCaption', number: 2, letter: 'e' } + }, + kqip: { + runner: 'simple', + expressionContainer: lessonExpressions.e11E2, + showPriorities: true, + initialState: 'needsAlphaConvert', + containerSize: 'xs', + variableSize: 'md', + explanationsVisibility: 'visible' + }, + tkbr: { + runner: 'simple', + expressionContainer: lessonExpressions.e11E2, + showPriorities: true, + initialState: 'alphaConvertDone', + containerSize: 'xs', + variableSize: 'md', + explanationsVisibility: 'visible' + }, + gopk: { + runner: 'simple', + expressionContainer: lessonExpressions.e12E1, + showPriorities: true, + containerSize: 'xs', + variableSize: 'md' + }, + imgp: { + runner: 'simple', + expressionContainer: lessonExpressions.e12E2, + showPriorities: true, + caption: { name: 'secretCodeCaption', number: 2, letter: 'g' } + }, + lxnu: { + runner: 'simple', + expressionContainer: lessonExpressions.e12E3, + showPriorities: true, + containerSize: 'xs', + variableSize: 'md' + }, + ccon: { + runner: 'playButtonOnly', + expressionContainer: lessonExpressions.e12E3, + showPriorities: true, + skipToTheEnd: false, + containerSize: 'xs', + variableSize: 'sm', + speed: 5 + }, + npfx: { + runner: 'simple', + expressionContainer: lessonExpressions.e12E3, + isDone: true, + showPriorities: true, + containerSize: 'xs', + variableSize: 'md', + caption: { name: 'secretCodeCaption', number: 1, letter: 'b' } + }, + pnob: { + runner: 'simple', + expressionContainer: lessonExpressions.e12E1, + showPriorities: true, + containerSize: 'xs', + variableSize: 'md', + caption: { name: 'secretCodeMinusOneCaption' } + }, + rqdn: { + runner: 'playButtonOnly', + expressionContainer: lessonExpressions.e12E3, + showPriorities: true, + explanationsVisibility: 'hiddenInitialPausedOnly', + lastAllowedExpressionState: 'needsAlphaConvert', + containerSize: 'xs', + variableSize: 'md', + speed: 5, + skipToTheEnd: false + }, + fiab: { + runner: 'playButtonOnly', + expressionContainer: lessonExpressions.e12E4, + showPriorities: true, + explanationsVisibility: 'hiddenInitialPausedOnly', + lastAllowedExpressionState: 'needsAlphaConvert', + containerSize: 'xs', + variableSize: 'md', + speed: 5, + skipToTheEnd: false + }, + plxd: { + runner: 'singleStep', + expressionContainer: lessonExpressions.e12E3, + showPriorities: true, + explanationsVisibility: 'visible', + initialState: 'needsAlphaConvert', + finalState: 'alphaConvertDone', + containerSize: 'xs', + variableSize: 'md' + }, + zaoc: { + runner: 'simple', + expressionContainer: lessonExpressions.e12E4, + showPriorities: true, + containerSize: 'xs', + variableSize: 'md', + caption: { name: 'secretCodeTwoMinusOneCaption' } + }, + xekr: { + runner: 'simple', + expressionContainer: lessonExpressions.e12E5 + }, + lial: { + runner: 'simple', + expressionContainer: lessonExpressions.e12E6, + showPriorities: true, + containerSize: 'xs', + variableSize: 'md', + caption: { name: 'secretCodeTwoMinusOneCaption' } + }, + uqts: { + runner: 'simple', + expressionContainer: lessonExpressions.e12E6, + showPriorities: true, + containerSize: 'xs', + variableSize: 'md' + }, + ojma: { + runner: 'simple', + expressionContainer: lessonExpressions.e12E7 + }, + yykk: { + runner: 'playButtonOnly', + expressionContainer: lessonExpressions.e12E7 + }, + exww: { + runner: 'simple', + expressionContainer: lessonExpressions.e12E8, + showPriorities: true, + containerSize: 'xs', + variableSize: 'md' + }, + qgun: { + runner: 'simple', + expressionContainer: lessonExpressions.e12E8, + showPriorities: true, + containerSize: 'xs', + variableSize: 'md', + highlightOverrides: { g: 'highlighted', h: 'highlighted' }, + caption: { name: 'secretCodeCaption', number: 1, letter: 'g' } + }, + yvia: { + runner: 'simple', + expressionContainer: lessonExpressions.e12E9, + showPriorities: true, + containerSize: 'xs', + variableSize: 'md' + }, + qifg: { + runner: 'simple', + expressionContainer: lessonExpressions.e12E10, + showPriorities: true, + containerSize: 'xs', + variableSize: 'md' + }, + ssns: { + runner: 'simple', + expressionContainer: lessonExpressions.e12E10, + showPriorities: true, + containerSize: 'xs', + variableSize: 'md', + highlightOverrides: { + a: 'highlighted', + b: 'highlighted', + c: 'highlighted', + d: 'highlighted', + e: 'highlighted', + f: 'highlighted' + } + }, + tboe: { + runner: 'simple', + expressionContainer: lessonExpressions.e12E13, + showPriorities: true, + containerSize: 'xs', + variableSize: 'md', + highlightOverrides: { + a: 'highlighted', + b: 'highlighted', + c: 'highlighted', + d: 'highlighted', + e: 'highlighted', + f: 'highlighted' + } + }, + ufyc: { + runner: 'simple', + expressionContainer: lessonExpressions.e12E11, + showPriorities: true + }, + pbgd: { + runner: 'playButtonOnly', + expressionContainer: lessonExpressions.e12E12, + showPriorities: true, + skipToTheEnd: false, + speed: 1.75 + }, + hvdn: { + runner: 'simple', + expressionContainer: lessonExpressions.e13E1, + caption: { name: 'ifCaption', ifZero: 'y', ifNonZero: 'z' } + }, + vxnm: { + runner: 'simple', + expressionContainer: lessonExpressions.e13E2 + }, + xefx: { + runner: 'playButtonOnly', + expressionContainer: lessonExpressions.e13E2, + skipToTheEnd: false + }, + wcsz: { + runner: 'simple', + expressionContainer: lessonExpressions.e13E2, + explanationsVisibility: 'visible', + initialState: 'conditionActive' + }, + psqo: { + runner: 'simple', + expressionContainer: lessonExpressions.e13E2, + explanationsVisibility: 'visible', + initialState: 'falseCaseActive' + }, + xsby: { + runner: 'simple', + expressionContainer: lessonExpressions.e13E2, + isDone: true + }, + repd: { + runner: 'simple', + expressionContainer: lessonExpressions.e13E3, + showPriorities: true + }, + cnoq: { + runner: 'playButtonOnly', + expressionContainer: lessonExpressions.e13E3, + skipToTheEnd: false, + showPriorities: true, + speed: 1.75 + }, + dwnj: { + runner: 'playButtonOnly', + expressionContainer: lessonExpressions.e13E3, + skipToTheEnd: false, + showPriorities: true, + lastAllowedExpressionState: 'default' + }, + guuf: { + runner: 'simple', + expressionContainer: lessonExpressions.e13E3, + showPriorities: true, + explanationsVisibility: 'visible', + nextIteration: true, + initialState: 'conditionActive' + }, + lrrr: { + runner: 'simple', + expressionContainer: lessonExpressions.e13E3, + showPriorities: true, + nextIteration: true, + explanationsVisibility: 'visible', + initialState: 'trueCaseActive' + }, + dpar: { + runner: 'playButtonOnly', + expressionContainer: lessonExpressions.e13E3, + showPriorities: true, + speed: 1.75, + skipToTheEnd: false, + nextIteration: true, + explanationsVisibility: 'visible', + initialState: 'trueCaseOnly' + }, + ylil: { + runner: 'simple', + expressionContainer: lessonExpressions.e13E4, + showPriorities: true, + containerSize: 'xs', + variableSize: 'md' + }, + vqcw: { + runner: 'simple', + expressionContainer: lessonExpressions.e13E5, + showPriorities: true, + containerSize: 'xs', + variableSize: 'md' + }, + dcfi: { + runner: 'playButtonOnly', + expressionContainer: lessonExpressions.e13E6, + showPriorities: true, + skipToTheEnd: false, + containerSize: 'xs', + variableSize: 'md', + speed: 5 + }, + bmnc: { + runner: 'simple', + expressionContainer: lessonExpressions.e13E6, + isDone: true, + showPriorities: true, + containerSize: 'xs', + variableSize: 'md', + caption: { name: 'secretCodeCaption', number: 2, letter: 'l' } + }, + ufze: { + runner: 'simple', + expressionContainer: lessonExpressions.e13E3, + showPriorities: true, + isDone: true + }, + rreb: { + runner: 'simple', + expressionContainer: lessonExpressions.e13E7, + caption: { name: 'whatCanComputeFactorial', start: 3 } + }, + kqzn: { + runner: 'simple', + expressionContainer: lessonExpressions.e13E8, + caption: { name: 'whatCanComputeFactorial', start: 4 } + }, + aimh: { + runner: 'simple', + expressionContainer: lessonExpressions.e13E12, + caption: { name: 'whatCanComputeFactorial', start: 5 } + }, + lyod: { + runner: 'simple', + expressionContainer: lessonExpressions.e13E9, + caption: { name: 'secretCodeMultiplyCaption' } + }, + imba: { + runner: 'simple', + expressionContainer: lessonExpressions.e13E10, + caption: { name: 'secretCodeMultiplyCaption' } + }, + zifr: { + runner: 'playButtonOnly', + expressionContainer: lessonExpressions.e13E11 + }, + omlc: { + runner: 'simple', + expressionContainer: lessonExpressions.e13E11, + caption: { name: 'secretCodeMultiplyCaption', arg1: 2, arg2: 3 } + }, + zxux: { + runner: 'simple', + expressionContainer: lessonExpressions.e14E1, + showPriorities: true, + variableSize: 'md' + }, + itzl: { + runner: 'singleStep', + expressionContainer: lessonExpressions.e14E1, + showPriorities: true, + initialState: 'active', + finalState: 'magicalExpanded', + variableSize: 'md' + }, + gtnr: { + runner: 'simple', + expressionContainer: lessonExpressions.e14E1, + showPriorities: true, + nextIteration: true, + highlightOverrideActiveAfterStart: true, + highlightOverrides: { magical: 'highlighted' }, + variableSize: 'md', + caption: { name: 'witchAppearsAgainCaption' } + }, + cfms: { + runner: 'simple', + expressionContainer: lessonExpressions.e14E6, + showPriorities: true, + nextIteration: true, + highlightOverrideActiveAfterStart: true, + highlightOverrides: { magical: 'highlighted' }, + variableSize: 'md', + caption: { name: 'witchAppearsAgainCaption' } + }, + syfp: { + runner: 'playButtonOnly', + expressionContainer: lessonExpressions.e14E1, + showPriorities: true, + nextIteration: true, + skipToTheEnd: false, + lastAllowedExpressionState: 'default', + lastAllowedExpressionStateAfterIterations: 1, + variableSize: 'md' + }, + wdol: { + runner: 'playButtonOnly', + expressionContainer: lessonExpressions.e14E1, + showPriorities: true, + nextIterations: 2, + skipToTheEnd: false, + lastAllowedExpressionState: 'default', + lastAllowedExpressionStateAfterIterations: 2, + variableSize: 'md', + highlightNumber: 2 + }, + luir: { + runner: 'playButtonOnly', + expressionContainer: lessonExpressions.e14E1, + showPriorities: true, + nextIterations: 3, + skipToTheEnd: false, + lastAllowedExpressionState: 'default', + lastAllowedExpressionStateAfterIterations: 3, + variableSize: 'md' + }, + ifxr: { + runner: 'simple', + expressionContainer: lessonExpressions.e14E1, + showPriorities: true, + nextIterations: 4, + initialState: 'default', + variableSize: 'md', + caption: { name: 'magicalChangedCaption', fromNumber: 3 }, + argPriorityAggHighlights: [1], + funcPriorityAggHighlights: [1, 2] + }, + vkpm: { + runner: 'singleStep', + expressionContainer: lessonExpressions.e14E1, + showPriorities: true, + nextIterations: 4, + variableSize: 'sm', + initialState: 'active', + finalState: 'magicalExpanded' + }, + mihy: { + runner: 'playButtonOnly', + expressionContainer: lessonExpressions.e14E1, + showPriorities: true, + nextIterations: 4, + skipToTheEnd: false, + initialState: 'magicalExpanded', + lastAllowedExpressionState: 'default', + lastAllowedExpressionStateAfterIterations: 7, + speed: 1.75, + variableSize: 'sm' + }, + dxum: { + runner: 'simple', + expressionContainer: lessonExpressions.e14E1, + showPriorities: true, + nextIterations: 4, + variableSize: 'sm' + }, + davn: { + runner: 'simple', + expressionContainer: lessonExpressions.e14E1, + showPriorities: true, + initialState: 'default', + nextIterations: 8, + caption: { name: 'magicalChangedCaption', fromNumber: 2 }, + variableSize: 'sm', + argPriorityAggHighlights: [1], + funcPriorityAggHighlights: [3, 4] + }, + qltx: { + runner: 'singleStep', + expressionContainer: lessonExpressions.e14E1, + showPriorities: true, + nextIterations: 8, + initialState: 'active', + finalState: 'magicalExpanded', + variableSize: 'sm' + }, + zvet: { + runner: 'playButtonOnly', + expressionContainer: lessonExpressions.e14E1, + showPriorities: true, + nextIterations: 8, + skipToTheEnd: false, + lastAllowedExpressionState: 'conditionActive', + lastAllowedExpressionStateAfterIterations: 8, + initialState: 'magicalExpanded', + speed: 1.75, + variableSize: 'sm' + }, + yvty: { + runner: 'simple', + expressionContainer: lessonExpressions.e14E1, + showPriorities: true, + nextIterations: 8, + explanationsVisibility: 'visible', + initialState: 'conditionActive', + variableSize: 'sm' + }, + umce: { + runner: 'simple', + expressionContainer: lessonExpressions.e14E1, + showPriorities: true, + nextIterations: 8, + initialState: 'trueCaseActive', + explanationsVisibility: 'visible', + variableSize: 'sm' + }, + orhx: { + runner: 'playButtonOnly', + expressionContainer: lessonExpressions.e14E1, + showPriorities: true, + nextIterations: 12, + variableSize: 'sm', + skipToTheEnd: false, + speed: 1.75 + }, + wqdb: { + runner: 'simple', + expressionContainer: lessonExpressions.e14E1, + showPriorities: true, + nextIterations: 12, + variableSize: 'sm' + }, + xtjt: { + runner: 'simple', + expressionContainer: lessonExpressions.e14E1, + isDone: true, + showPriorities: true, + variableSize: 'sm' + }, + mnfh: { + runner: 'playButtonOnly', + expressionContainer: lessonExpressions.e14E1, + showPriorities: true, + skipToTheEnd: false, + speed: 5, + variableSize: 'sm' + }, + yklt: { + runner: 'simple', + expressionContainer: lessonExpressions.e14E2, + showPriorities: true, + variableSize: 'sm' + }, + fsmk: { + runner: 'simple', + expressionContainer: lessonExpressions.e14E2, + showPriorities: true, + nextIterations: 16, + variableSize: 'sm' + }, + peoq: { + runner: 'playButtonOnly', + expressionContainer: lessonExpressions.e14E2, + showPriorities: true, + skipToTheEnd: false, + speed: 5, + variableSize: 'xs', + lastAllowedExpressionState: 'default', + lastAllowedExpressionStateAfterIterations: 15 + }, + nfkp: { + runner: 'playButtonOnly', + expressionContainer: lessonExpressions.e14E2, + showPriorities: true, + skipToTheEnd: false, + speed: 1.75, + nextIterations: 16, + variableSize: 'sm' + }, + fora: { + runner: 'simple', + expressionContainer: lessonExpressions.e14E3, + showPriorities: true, + variableSize: 'sm' + }, + eobj: { + runner: 'simple', + expressionContainer: lessonExpressions.e14E3, + showPriorities: true, + variableSize: 'sm', + nextIterations: 20 + }, + osqg: { + runner: 'simple', + expressionContainer: lessonExpressions.e14E3, + showPriorities: true, + variableSize: 'sm', + isDone: true + }, + vrwt: { + runner: 'simple', + expressionContainer: lessonExpressions.e14E1, + variableSize: 'md' + }, + lodr: { + runner: 'simple', + expressionContainer: lessonExpressions.e14E2, + variableSize: 'md' + }, + fjyk: { + runner: 'simple', + expressionContainer: lessonExpressions.e14E3, + variableSize: 'md' + }, + miez: { + runner: 'simple', + expressionContainer: lessonExpressions.e14E4, + variableSize: 'md' + }, + fapu: { + runner: 'simple', + expressionContainer: lessonExpressions.e14E5, + variableSize: 'sm' + }, + xjae: { + runner: 'simple', + expressionContainer: lessonExpressions.e14E6, + variableSize: 'md' + }, + xsve: { + runner: 'simple', + expressionContainer: lessonExpressions.e14E6, + variableSize: 'md', + explanationsVisibility: 'visible', + initialState: 'magicalExpanded' + }, + igrt: { + runner: 'simple', + expressionContainer: lessonExpressions.e14E1, + showPriorities: true, + variableSize: 'sm' + }, + woft: { + runner: 'simple', + expressionContainer: lessonExpressions.e14E1, + showPriorities: true, + nextIterations: 12, + variableSize: 'sm' + }, + urhc: { + runner: 'simple', + expressionContainer: lessonExpressions.e14E1, + showPriorities: true, + variableSize: 'sm', + isDone: true + }, + tdau: { + runner: 'simple', + expressionContainer: lessonExpressions.e15E1, + showPriorities: true, + highlightOverrides: { s: 'highlighted' }, + variableSize: 'md', + caption: { name: 'witchReplacedCaption' } + }, + lkwr: { + runner: 'simple', + expressionContainer: lessonExpressions.e15E2, + showPriorities: true, + highlightOverrides: { s: 'highlighted' }, + variableSize: 'md', + containerSize: 'xs' + }, + osih: { + runner: 'simple', + expressionContainer: lessonExpressions.e15E3, + showPriorities: true, + highlightOverrides: { a: 'highlighted', b: 'highlighted' }, + variableSize: 'xs', + containerSize: 'xs' + }, + dkbt: { + runner: 'simple', + expressionContainer: lessonExpressions.e15E3, + showPriorities: true, + variableSize: 'xs', + containerSize: 'xs' + }, + hzlj: { + runner: 'simple', + expressionContainer: lessonExpressions.e15E4, + showPriorities: true, + containerSize: 'xs', + variableSize: 'xs' + }, + plts: { + runner: 'playButtonOnly', + expressionContainer: lessonExpressions.e15E5, + showPriorities: true, + skipToTheEnd: false, + containerSize: 'xs', + variableSize: 'xxs', + lastAllowedExpressionState: 'default', + lastAllowedExpressionStateAfterIterations: 5, + speed: 4 + }, + pnux: { + runner: 'simple', + expressionContainer: lessonExpressions.e15E5, + showPriorities: true, + highlightFunctions: true, + containerSize: 'xs', + variableSize: 'xxs', + nextIterations: 6 + }, + zhby: { + runner: 'simple', + expressionContainer: lessonExpressions.e15E6, + showPriorities: true, + variableSize: 'md', + highlightOverrides: { abbreviated: 'highlighted' }, + highlightOverrideActiveAfterStart: true + }, + xcnu: { + runner: 'simple', + expressionContainer: lessonExpressions.e15E6, + showPriorities: true, + variableSize: 'md', + caption: { name: 'ycChangedCaption', fromNumber: 3 }, + argPriorityAggHighlights: [1], + funcPriorityAggHighlights: [1, 2] + }, + iisx: { + runner: 'simple', + expressionContainer: lessonExpressions.e14E1, + showPriorities: true, + nextIterations: 4, + initialState: 'default', + variableSize: 'md', + caption: { name: 'magicalChangedCaption', fromNumber: 3 }, + argPriorityAggHighlights: [1], + funcPriorityAggHighlights: [1, 2] + }, + pzui: { + runner: 'playButtonOnly', + expressionContainer: lessonExpressions.e15E5, + showPriorities: true, + containerSize: 'xs', + variableSize: 'xxs', + nextIterations: 6, + skipToTheEnd: false, + lastAllowedExpressionState: 'default', + lastAllowedExpressionStateAfterIterations: 10, + speed: 4 + }, + kfrt: { + runner: 'simple', + expressionContainer: lessonExpressions.e15E5, + showPriorities: true, + containerSize: 'xs', + variableSize: 'xxs', + nextIterations: 11, + highlightFunctions: true + }, + iygh: { + runner: 'simple', + expressionContainer: lessonExpressions.e15E7, + showPriorities: true, + variableSize: 'md', + highlightOverrides: { abbreviated: 'highlighted' }, + highlightOverrideActiveAfterStart: true + }, + ines: { + runner: 'simple', + expressionContainer: lessonExpressions.e15E7, + showPriorities: true, + variableSize: 'md', + caption: { name: 'ycChangedCaption', fromNumber: 2 }, + argPriorityAggHighlights: [1], + funcPriorityAggHighlights: [3, 4] + }, + gcnt: { + runner: 'simple', + expressionContainer: lessonExpressions.e14E1, + showPriorities: true, + nextIterations: 8, + initialState: 'default', + variableSize: 'md', + caption: { name: 'magicalChangedCaption', fromNumber: 2 }, + argPriorityAggHighlights: [1], + funcPriorityAggHighlights: [3, 4] + }, + pgtx: { + runner: 'playButtonOnly', + expressionContainer: lessonExpressions.e15E5, + showPriorities: true, + containerSize: 'xs', + variableSize: 'xxs', + nextIterations: 11, + skipToTheEnd: false, + lastAllowedExpressionState: 'conditionActive', + lastAllowedExpressionStateAfterIterations: 14, + speed: 4 + }, + gswd: { + runner: 'playButtonOnly', + expressionContainer: lessonExpressions.e15E5, + showPriorities: true, + containerSize: 'xs', + variableSize: 'xxs', + nextIterations: 14, + skipToTheEnd: false, + initialState: 'conditionActive', + lastAllowedExpressionState: 'default', + lastAllowedExpressionStateAfterIterations: 15 + }, + jruw: { + runner: 'playButtonOnly', + expressionContainer: lessonExpressions.e15E5, + showPriorities: true, + containerSize: 'xs', + variableSize: 'xxs', + nextIterations: 16, + skipToTheEnd: false, + speed: 1.75 + }, + nnhc: { + runner: 'simple', + expressionContainer: lessonExpressions.e15E5, + showPriorities: true, + variableSize: 'xs', + containerSize: 'xs' + }, + pzvr: { + runner: 'simple', + expressionContainer: lessonExpressions.e15E5, + showPriorities: true, + variableSize: 'xs', + containerSize: 'xs', + nextIterations: 16 + }, + mscz: { + runner: 'simple', + expressionContainer: lessonExpressions.e15E5, + showPriorities: true, + variableSize: 'xs', + containerSize: 'xs', + isDone: true + }, + jreq: { + runner: 'playButtonOnly', + expressionContainer: lessonExpressions.e15E8, + showPriorities: true, + containerSize: 'xs', + variableSize: 'xxs', + lastAllowedExpressionState: 'default', + skipToTheEnd: false, + speed: 5, + lastAllowedExpressionStateAfterIterations: 20, + superFastForward: true + }, + vpmj: { + runner: 'simple', + expressionContainer: lessonExpressions.e15E8, + showPriorities: true, + containerSize: 'xs', + variableSize: 'xs', + nextIterations: 21 + }, + uitu: { + runner: 'simple', + expressionContainer: lessonExpressions.e15E8, + showPriorities: true, + containerSize: 'xs', + variableSize: 'xs', + isDone: true + }, + bozr: { + runner: 'playButtonOnly', + expressionContainer: lessonExpressions.e15E9, + showPriorities: true, + containerSize: 'xs', + variableSize: 'xxs', + lastAllowedExpressionState: 'default', + skipToTheEnd: false, + speed: 5, + lastAllowedExpressionStateAfterIterations: 25, + superFastForward: true + }, + angp: { + runner: 'simple', + expressionContainer: lessonExpressions.e15E9, + showPriorities: true, + containerSize: 'xs', + variableSize: 'xs', + nextIterations: 26 + }, + wxqy: { + runner: 'simple', + expressionContainer: lessonExpressions.e15E9, + showPriorities: true, + containerSize: 'xs', + variableSize: 'xs', + isDone: true + }, + wcwd: { + runner: 'simple', + expressionContainer: lessonExpressions.e15E10, + showPriorities: true, + variableSize: 'xs', + containerSize: 'xs' + }, + bcgc: { + runner: 'simple', + expressionContainer: lessonExpressions.e15E11, + showPriorities: true, + containerSize: 'xs', + variableSize: 'xs' + }, + szou: { + runner: 'simple', + expressionContainer: lessonExpressions.e15E12, + showPriorities: true, + containerSize: 'xs', + variableSize: 'xs', + caption: { name: 'changedToPowerCaption' } + }, + ysji: { + runner: 'simple', + expressionContainer: lessonExpressions.e15E12, + isDone: true + }, + ilrn: { + runner: 'playButtonOnly', + expressionContainer: lessonExpressions.e15E12, + showPriorities: true, + containerSize: 'xs', + variableSize: 'xxs', + lastAllowedExpressionState: 'default', + skipToTheEnd: false, + speed: 5, + lastAllowedExpressionStateAfterIterations: 15, + superFastForward: true + }, + xsgz: { + runner: 'simple', + expressionContainer: lessonExpressions.e15E12, + showPriorities: true, + containerSize: 'xs', + variableSize: 'xs', + nextIterations: 16 + }, + dret: { + runner: 'simple', + expressionContainer: lessonExpressions.e15E12, + showPriorities: true, + containerSize: 'xs', + variableSize: 'xs', + isDone: true + }, + bpsz: { + runner: 'playButtonOnly', + expressionContainer: lessonExpressions.e15E13, + showPriorities: true, + containerSize: 'xs', + variableSize: 'xxs', + lastAllowedExpressionState: 'default', + skipToTheEnd: false, + speed: 5, + lastAllowedExpressionStateAfterIterations: 20, + superFastForward: true + }, + fotb: { + runner: 'simple', + expressionContainer: lessonExpressions.e15E13, + showPriorities: true, + containerSize: 'xs', + variableSize: 'xs', + nextIterations: 21 + }, + zfcz: { + runner: 'simple', + expressionContainer: lessonExpressions.e15E13, + showPriorities: true, + containerSize: 'xs', + variableSize: 'xs', + isDone: true + }, + jtai: { + runner: 'simple', + expressionContainer: lessonExpressions.e15E14, + showPriorities: true, + containerSize: 'xs', + variableSize: 'xs' + }, + nmoc: { + runner: 'simple', + expressionContainer: lessonExpressions.e15E15, + showPriorities: true, + containerSize: 'xs', + variableSize: 'sm' + }, + cnef: { + runner: 'simple', + expressionContainer: lessonExpressions.e15E15, + showPriorities: true, + containerSize: 'xs', + variableSize: 'sm', + highlightOverrides: { a: 'highlighted', b: 'highlighted' } + }, + news: { + runner: 'simple', + expressionContainer: lessonExpressions.e15E16, + showPriorities: true, + containerSize: 'xs', + variableSize: 'md', + caption: { name: 'thisIsYCombinatorCaption' } + }, + xrzv: { + runner: 'simple', + expressionContainer: lessonExpressions.e15E17, + showPriorities: true, + containerSize: 'xs', + variableSize: 'md', + caption: { name: 'thisIsYCombinatorCaption', too: true } + }, + ytcf: { + runner: 'simple', + expressionContainer: lessonExpressions.e16E1 + } +} + +export default config diff --git a/scripts/lib/prettierFormat.ts b/scripts/lib/prettierFormat.ts new file mode 100644 index 000000000..e0e0362cb --- /dev/null +++ b/scripts/lib/prettierFormat.ts @@ -0,0 +1,6 @@ +import { format } from 'prettier' + +const prettierFormat = (s: string) => + format(s, { semi: false, singleQuote: true, parser: 'typescript' }) + +export default prettierFormat diff --git a/scripts/precomputeExpressionContainers.ts b/scripts/precomputeExpressionContainers.ts new file mode 100644 index 000000000..ff2899ca9 --- /dev/null +++ b/scripts/precomputeExpressionContainers.ts @@ -0,0 +1,109 @@ +import util from 'util' +import fs from 'fs-extra' +import expressionRunnerShorthandConfig from 'scripts/lib/expressionRunnerShorthandConfig' +import buildExpressionContainers from 'scripts/lib/buildExpressionContainers' +import buildExpressionRunnerConfigFromShorthand, { + ExpressionRunnerConfig +} from 'scripts/lib/buildExpressionRunnerConfigFromShorthand' +// import prettier from 'prettier' +import fsExtra from 'fs-extra' +import prettierFormat from 'scripts/lib/prettierFormat' + +const regenerate = () => { + const config: Record< + string, + ExpressionRunnerConfig + > = buildExpressionRunnerConfigFromShorthand(expressionRunnerShorthandConfig) + + fsExtra.emptyDirSync('src/components/Runners') + + Object.keys(config).forEach((key, index) => { + const componentName = `${key[0].toUpperCase()}${key.slice(1)}` + const expressionContainers = buildExpressionContainers(config[key]) + const { + speed, + showOnlyFocused, + caption, + hideControls, + explanationsVisibility, + hidePriorities, + variableSize, + containerSize, + hidePlayButton, + showAllShowSteps, + hideBottomRightBadges, + skipToTheEnd, + hideFuncUnboundBadgeOnExplanation, + highlightOverridesCallArgAndFuncUnboundOnly, + bottomRightBadgeOverrides, + highlightOverrides, + highlightOverrideActiveAfterStart, + argPriorityAggHighlights, + funcPriorityAggHighlights, + highlightFunctions, + superFastForward, + highlightNumber + } = config[key] + + const fileContents = prettierFormat(` + import React from 'react' + import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + + const ${componentName} = () => + + export default ${componentName} + `) + + fs.writeFileSync( + `src/components/Runners/${componentName}.tsx`, + fileContents + ) + + console.log( + `Generated ${componentName} / ${index + 1} out of ${ + Object.keys(config).length + }` + ) + }) + + const indexContents = prettierFormat(` +${Object.keys(config) + .map(key => { + const componentName = `${key[0].toUpperCase()}${key.slice(1)}` + return `export { default as ${componentName} } from 'src/components/Runners/${componentName}'` + }) + .join('\n')} +`) + + fs.writeFileSync('src/components/Runners/index.ts', indexContents) +} + +regenerate() diff --git a/src/components/ConditionalBorder.tsx b/src/components/ConditionalBorder.tsx index f2a8ea04c..d8c0b1882 100644 --- a/src/components/ConditionalBorder.tsx +++ b/src/components/ConditionalBorder.tsx @@ -3,9 +3,8 @@ import { css, jsx } from '@emotion/core' import { useContext } from 'react' import Emoji from 'src/components/Emoji' import { zIndices, colors, fontSizes } from 'src/lib/theme' -import ExpressionRunnerContext, { - ExpressionRunnerContextProps -} from 'src/components/ExpressionRunnerContext' +import ExpressionRunnerContext from 'src/components/ExpressionRunnerContext' +import { ExpressionRunnerContextProps } from 'src/types/ExpressionRunnerTypes' import EmojiNumber from 'src/components/EmojiNumber' export interface ConditionalBorderProps { diff --git a/src/components/ContentTags/Inline.tsx b/src/components/ContentTags/Inline.tsx index 7515f977e..2a4c99003 100644 --- a/src/components/ContentTags/Inline.tsx +++ b/src/components/ContentTags/Inline.tsx @@ -9,14 +9,7 @@ import { CardProps } from 'src/components/Card' import { LinkContext } from 'src/components/ContentTags/Links' - -export type InlineHighlightType = - | 'default' - | 'white' - | 'none' - | 'blue' - | 'yellow' - | 'pink' +import { InlineHighlightType } from 'src/types/ContentTagTypes' interface HighlightContextProps { inHighlightType: InlineHighlightType diff --git a/src/components/ExpressionPrioritiesLabel.tsx b/src/components/ExpressionPrioritiesLabel.tsx index b516606e3..d5342841c 100644 --- a/src/components/ExpressionPrioritiesLabel.tsx +++ b/src/components/ExpressionPrioritiesLabel.tsx @@ -5,9 +5,8 @@ import Flex from 'src/components/Flex' import FlexCenter from 'src/components/FlexCenter' import ExpressionPriorityContext from 'src/components/ExpressionPriorityContext' import Emoji from 'src/components/Emoji' -import ExpressionRunnerContext, { - ExpressionRunnerContextProps -} from 'src/components/ExpressionRunnerContext' +import ExpressionRunnerContext from 'src/components/ExpressionRunnerContext' +import { ExpressionRunnerContextProps } from 'src/types/ExpressionRunnerTypes' import { colors, fontSizes, zIndices, radii } from 'src/lib/theme' interface ExpressionPrioritiesLabelProps { diff --git a/src/components/ExpressionRunner.tsx b/src/components/ExpressionRunner.tsx index 8470457f4..2f780797e 100644 --- a/src/components/ExpressionRunner.tsx +++ b/src/components/ExpressionRunner.tsx @@ -1,84 +1,28 @@ /** @jsx jsx */ import { css, jsx } from '@emotion/core' import React, { useState, useRef } from 'react' -import Container, { ContainerProps } from 'src/components/Container' +import Container from 'src/components/Container' import ExpressionBox from 'src/components/ExpressionBox' import H from 'src/components/H' import ExpressionRunnerCaptionWrapper from 'src/components/ExpressionRunnerCaptionWrapper' -import ExpressionRunnerContext, { - expressionRunnerContextDefault, - ExpressionRunnerContextProps -} from 'src/components/ExpressionRunnerContext' +import ExpressionRunnerContext from 'src/components/ExpressionRunnerContext' import ExpressionRunnerControls from 'src/components/ExpressionRunnerControls' import ExpressionRunnerExplanation from 'src/components/ExpressionRunnerExplanation' import { lineHeights } from 'src/lib/theme' import { isContainerWithState } from 'src/lib/expressionContainerGuards' import ExpressionContainerManager from 'src/lib/ExpressionContainerManager' -import { - ExpressionContainerStates, - SteppedExpressionContainer, - ExpressionContainer -} from 'src/types/ExpressionContainerTypes' import useExpressionContainerManager from 'src/hooks/useExpressionContainerManager' import ExpressionRunnerScrollAdjuster from 'src/components/ExpressionRunnerScrollAdjuster' import { spaces } from 'src/lib/theme' +import { + ExpressionRunnerProps, + expressionRunnerContextDefault +} from 'src/types/ExpressionRunnerTypes' // Must be equal to 1 / N to make timer count seconds evenly const autoplaySpeed = (speed: number) => 1000 / speed const FASTFORWARDING_THRESHOLD = 2 -export type InitializeInstruction = - | { - type: 'stepForwardUntilContainerState' - state: ExpressionContainerStates - } - | { - type: 'stepForwardUntilPreviouslyChangedExpressionState' - state: ExpressionContainer['previouslyChangedExpressionState'] - } - | { - type: 'nextIteration' - } - | { - type: 'stepForwardUntilTheEnd' - } - -export interface ExpressionRunnerProps { - expressionContainer: SteppedExpressionContainer - hidePriorities: ExpressionRunnerContextProps['hidePriorities'] - hideBottomRightBadges: ExpressionRunnerContextProps['hideBottomRightBadges'] - hideControls: boolean - explanationsVisibility: - | 'visible' - | 'hidden' - | 'hiddenInitialPausedOnly' - | 'hiddenInitialAndLastPausedOnly' - variableSize: ExpressionRunnerContextProps['variableSize'] - initializeInstructions: readonly InitializeInstruction[] - maxStepsAllowed?: number - lastAllowedExpressionState?: ExpressionContainer['previouslyChangedExpressionState'] - lastAllowedExpressionStateAfterIterations?: number - containerSize: ContainerProps['size'] - resetIndex: boolean - hidePlayButton?: boolean - speed: number - showAllShowSteps?: boolean - skipAlphaConvert?: boolean - skipToTheEnd: boolean - hideFuncUnboundBadgeOnExplanation: boolean - highlightOverridesCallArgAndFuncUnboundOnly: boolean - bottomRightBadgeOverrides: ExpressionRunnerContextProps['bottomRightBadgeOverrides'] - highlightOverrides: ExpressionRunnerContextProps['highlightOverrides'] - caption?: React.ReactNode - highlightOverrideActiveAfterStart: boolean - showOnlyFocused: ExpressionRunnerContextProps['showOnlyFocused'] - argPriorityAggHighlights: readonly number[] - funcPriorityAggHighlights: readonly number[] - highlightFunctions: boolean - superFastForward: boolean - highlightNumber?: number -} - interface PlaybackState { isFastForwarding: boolean isPlaying: boolean @@ -208,7 +152,6 @@ const ExpressionRunner = ({ skipAlphaConvert, hideBottomRightBadges, initializeInstructions, - resetIndex, skipToTheEnd, hideFuncUnboundBadgeOnExplanation, highlightOverridesCallArgAndFuncUnboundOnly, @@ -231,8 +174,7 @@ const ExpressionRunner = ({ lastAllowedExpressionStateAfterIterations, showAllShowSteps, skipAlphaConvert, - initializeInstructions, - resetIndex + initializeInstructions }) const interval = useRef() const [{ isFastForwarding, isPlaying }, setPlaybackStatus] = useState< @@ -414,7 +356,6 @@ ExpressionRunner.defaultProps = { variableSize: expressionRunnerContextDefault.variableSize, initializeInstructions: [], containerSize: 'xxs', - resetIndex: false, skipToTheEnd: false, hidePlayButton: false, speed: 1, diff --git a/src/components/ExpressionRunnerContext.ts b/src/components/ExpressionRunnerContext.ts index cfa972d06..35642e99f 100644 --- a/src/components/ExpressionRunnerContext.ts +++ b/src/components/ExpressionRunnerContext.ts @@ -1,43 +1,8 @@ import React from 'react' -import { VariableNames } from 'src/types/VariableNames' -import { VariableExpression } from 'src/types/ExpressionTypes' - -export interface ExpressionRunnerContextProps { - hidePriorities: boolean - hideBottomRightBadges: boolean - variableSize: 'sm' | 'md' | 'lg' | 'xs' | 'xxs' - isDoneOrReady: boolean - bottomRightBadgeOverrides: { [key in VariableNames]?: string } - highlightOverrides: { - [key in VariableNames]?: VariableExpression['highlightType'] - } - started: boolean - highlightOverrideActiveAfterStart: boolean - highlightOverridesCallArgAndFuncUnboundOnly: boolean - showOnlyFocused: boolean - argPriorityAggHighlights: readonly number[] - funcPriorityAggHighlights: readonly number[] - highlightFunctions: boolean - highlightAllChildren: boolean - highlightNumber?: number -} - -export const expressionRunnerContextDefault: ExpressionRunnerContextProps = { - hidePriorities: false, - hideBottomRightBadges: false, - variableSize: 'sm', - isDoneOrReady: false, - started: false, - bottomRightBadgeOverrides: {}, - highlightOverrides: {}, - highlightOverrideActiveAfterStart: false, - highlightOverridesCallArgAndFuncUnboundOnly: false, - showOnlyFocused: false, - argPriorityAggHighlights: [], - funcPriorityAggHighlights: [], - highlightFunctions: false, - highlightAllChildren: false -} +import { + ExpressionRunnerContextProps, + expressionRunnerContextDefault +} from 'src/types/ExpressionRunnerTypes' export default React.createContext( expressionRunnerContextDefault diff --git a/src/components/ExpressionRunnerPrecomputed.tsx b/src/components/ExpressionRunnerPrecomputed.tsx new file mode 100644 index 000000000..f1224333d --- /dev/null +++ b/src/components/ExpressionRunnerPrecomputed.tsx @@ -0,0 +1,326 @@ +/** @jsx jsx */ +import { css, jsx } from '@emotion/core' +import { useState, useRef } from 'react' +import Container from 'src/components/Container' +import ExpressionBox from 'src/components/ExpressionBox' +import H from 'src/components/H' +import ExpressionRunnerCaptionWrapper from 'src/components/ExpressionRunnerCaptionWrapper' +import ExpressionRunnerContext from 'src/components/ExpressionRunnerContext' +import ExpressionRunnerControls from 'src/components/ExpressionRunnerControls' +import ExpressionRunnerExplanation from 'src/components/ExpressionRunnerExplanation' +import { lineHeights } from 'src/lib/theme' +import { isContainerWithState } from 'src/lib/expressionContainerGuards' +import ExpressionRunnerScrollAdjuster from 'src/components/ExpressionRunnerScrollAdjuster' +import { spaces } from 'src/lib/theme' +import { expressionRunnerContextDefault } from 'src/types/ExpressionRunnerTypes' +import { ExpressionRunnerConfig } from 'scripts/lib/buildExpressionRunnerConfigFromShorthand' +import { SteppedExpressionContainer } from 'src/types/ExpressionContainerTypes' + +interface ExpressionRunnerPrecomputedProps { + expressionContainers: readonly SteppedExpressionContainer[] + speed: ExpressionRunnerConfig['speed'] + showOnlyFocused: ExpressionRunnerConfig['showOnlyFocused'] + caption: ExpressionRunnerConfig['caption'] + hideControls: ExpressionRunnerConfig['hideControls'] + explanationsVisibility: ExpressionRunnerConfig['explanationsVisibility'] + hidePriorities: ExpressionRunnerConfig['hidePriorities'] + variableSize: ExpressionRunnerConfig['variableSize'] + containerSize: ExpressionRunnerConfig['containerSize'] + hidePlayButton: ExpressionRunnerConfig['hidePlayButton'] + hideBottomRightBadges: ExpressionRunnerConfig['hideBottomRightBadges'] + skipToTheEnd: ExpressionRunnerConfig['skipToTheEnd'] + hideFuncUnboundBadgeOnExplanation: ExpressionRunnerConfig['hideFuncUnboundBadgeOnExplanation'] + highlightOverridesCallArgAndFuncUnboundOnly: ExpressionRunnerConfig['highlightOverridesCallArgAndFuncUnboundOnly'] + bottomRightBadgeOverrides: ExpressionRunnerConfig['bottomRightBadgeOverrides'] + highlightOverrides: ExpressionRunnerConfig['highlightOverrides'] + highlightOverrideActiveAfterStart: ExpressionRunnerConfig['highlightOverrideActiveAfterStart'] + argPriorityAggHighlights: ExpressionRunnerConfig['argPriorityAggHighlights'] + funcPriorityAggHighlights: ExpressionRunnerConfig['funcPriorityAggHighlights'] + highlightFunctions: ExpressionRunnerConfig['highlightFunctions'] + superFastForward: ExpressionRunnerConfig['superFastForward'] + highlightNumber: ExpressionRunnerConfig['highlightNumber'] + showAllShowSteps: ExpressionRunnerConfig['showAllShowSteps'] +} + +// Must be equal to 1 / N to make timer count seconds evenly +const autoplaySpeed = (speed: number) => 1000 / speed +const FASTFORWARDING_THRESHOLD = 2 + +interface PlaybackState { + isFastForwarding: boolean + isPlaying: boolean +} + +// Use floor() + 1 instead of ceil() to make sure it's nonzero +const numSecondsRemaining = (numStepsRemaining: number, speed: number) => + Math.floor((numStepsRemaining * autoplaySpeed(speed)) / 1000) + 1 + +const ExpressionRunnerPrecomputed = ({ + speed, + showOnlyFocused, + caption, + expressionContainers, + hideControls, + explanationsVisibility, + hidePriorities, + variableSize, + containerSize, + hidePlayButton, + hideBottomRightBadges, + skipToTheEnd, + hideFuncUnboundBadgeOnExplanation, + highlightOverridesCallArgAndFuncUnboundOnly, + bottomRightBadgeOverrides, + highlightOverrides, + highlightOverrideActiveAfterStart, + argPriorityAggHighlights, + funcPriorityAggHighlights, + highlightFunctions, + superFastForward, + highlightNumber, + showAllShowSteps +}: ExpressionRunnerPrecomputedProps) => { + const interval = useRef() + const [{ isFastForwarding, isPlaying }, setPlaybackStatus] = useState< + PlaybackState + >({ + isFastForwarding: false, + isPlaying: false + }) + + const [currentIndex, setCurrentIndex] = useState(0) + + const actions = { + stepForward() { + actions.step('forward') + }, + + stepBackward() { + actions.step('backward') + }, + + skipToTheEnd() { + actions.step('skipToEnd') + }, + + autoplay() { + interval.current = setInterval(() => { + // Must use getExpressionContainerManager() + if (currentIndex < expressionContainers.length - 1) { + if (superFastForward) { + actions.step('forwardUntilActiveOrDefault') + } else { + actions.step('forward') + } + } + // As soon as canStepForward is false, cancel immediately + if (currentIndex >= expressionContainers.length - 1) { + actions.pause() + } + }, autoplaySpeed(speed)) + setPlaybackStatus({ + isPlaying: true, + isFastForwarding: speed >= FASTFORWARDING_THRESHOLD + }) + }, + + pause() { + if (interval.current) { + clearInterval(interval.current) + } + setPlaybackStatus({ + isPlaying: false, + isFastForwarding: false + }) + }, + + reset() { + if (interval.current) { + clearInterval(interval.current) + } + setPlaybackStatus({ + isPlaying: false, + isFastForwarding: false + }) + actions.step('reset') + }, + + step( + direction: + | 'forward' + | 'backward' + | 'reset' + | 'skipToEnd' + | 'forwardUntilActiveOrDefault' + ) { + if (direction === 'forward') { + if (currentIndex < expressionContainers.length - 1) { + setCurrentIndex(currentIndex + 1) + } + } else if (direction === 'backward') { + if (currentIndex > 0) { + setCurrentIndex(currentIndex - 1) + } + } else if (direction === 'skipToEnd') { + setCurrentIndex(expressionContainers.length - 1) + } else if (direction === 'forwardUntilActiveOrDefault') { + // TODO + } else { + setCurrentIndex(0) + } + } + } + + const isDone = isContainerWithState( + expressionContainers[currentIndex], + 'done' + ) + const isReady = isContainerWithState( + expressionContainers[currentIndex], + 'ready' + ) + const atLeastOneStepTaken = currentIndex > 0 + const explanationsVisible = + explanationsVisibility === 'visible' || + (explanationsVisibility === 'hiddenInitialPausedOnly' && + !isPlaying && + currentIndex > 0) || + (explanationsVisibility === 'hiddenInitialAndLastPausedOnly' && + !isPlaying && + currentIndex > 0 && + currentIndex < expressionContainers.length - 1) + + return ( + +
+ + {explanationsVisible && ( + + + + )} + {caption && ( + + {caption} + + )} + {!caption && isPlaying && ( + + + + )} + + +
+
+ +
+
+
+ + + {!hideControls && ( + 0} + showPlayButton={!hidePlayButton} + isPlaying={isPlaying} + isDone={isDone} + onAutoClick={actions.autoplay} + onSkipToTheEndClick={actions.skipToTheEnd} + onResetClick={actions.reset} + skipToTheEnd={skipToTheEnd} + onPauseClick={actions.pause} + /> + )} + + + {isPlaying && isFastForwarding && !isDone && ( + <> + + + + + )} + {!hideControls && + currentIndex >= expressionContainers.length - 1 && + !hidePlayButton && ( + + + + )} + +
+
+ ) +} + +export default ExpressionRunnerPrecomputed diff --git a/src/components/ExpressionRunnerShorthand.tsx b/src/components/ExpressionRunnerShorthand.tsx index e81643b95..a15ff2071 100644 --- a/src/components/ExpressionRunnerShorthand.tsx +++ b/src/components/ExpressionRunnerShorthand.tsx @@ -1,12 +1,13 @@ import React from 'react' -import ExpressionRunner, { - ExpressionRunnerProps, - InitializeInstruction -} from 'src/components/ExpressionRunner' +import ExpressionRunner from 'src/components/ExpressionRunner' import { ExpressionContainer, SteppedExpressionContainer } from 'src/types/ExpressionContainerTypes' +import { + ExpressionRunnerProps, + InitializeInstruction +} from 'src/types/ExpressionRunnerTypes' const initializeInstructions = ({ nextIteration, @@ -176,7 +177,6 @@ export const ExpressionRunnerPlayButtonOnly = ({ expressionContainer={expressionContainer} hidePriorities={!showPriorities} highlightOverrides={highlightOverrides} - resetIndex showAllShowSteps={showAllShowSteps} hideFuncUnboundBadgeOnExplanation={hideFuncUnboundBadgeOnExplanation} skipToTheEnd={skipToTheEnd} @@ -241,7 +241,6 @@ export const ExpressionRunnerSingleStep = ({ hideFuncUnboundBadgeOnExplanation={hideFuncUnboundBadgeOnExplanation} hidePlayButton explanationsVisibility={explanationsVisibility} - resetIndex lastAllowedExpressionState={finalState} lastAllowedExpressionStateAfterIterations={nextIterations} showAllShowSteps={showAllShowSteps} diff --git a/src/components/H.tsx b/src/components/H.tsx index 7325a79b1..199a5a46b 100644 --- a/src/components/H.tsx +++ b/src/components/H.tsx @@ -18,7 +18,6 @@ import { Hr, Img } from 'src/components/ContentTags' -import { InlineHighlightType } from 'src/components/ContentTags/Inline' import Emoji from 'src/components/Emoji' import locale from 'src/lib/locale' import { @@ -36,7 +35,6 @@ import { import EmojiForLetter from 'src/components/EmojiForLetter' import EmojiWithText from 'src/components/EmojiWithText' import EmojiNumber from 'src/components/EmojiNumber' -import { VariableNames } from 'src/types/VariableNames' import EmojiSeparator from 'src/components/EmojiSeparator' import BottomRightBadge from 'src/components/BottomRightBadge' import TwitterEmbed from 'src/components/TwitterEmbed' @@ -45,130 +43,7 @@ import { magicalVariableName } from 'src/lib/specialVariableNames' import { dateString, dateSchemaString } from 'src/lib/date' import { githubRepo } from 'src/lib/meta' import letterEmojiMapping from 'src/lib/letterEmojiMapping' - -export interface HProps { - highlightType: InlineHighlightType - episodeNumberOverrides?: number - args: - | { name: 'dateAndSource'; includeAboutMe?: boolean } - | { name: 'pressNext' } - | { name: 'isFaster' } - | { name: 'yesNoQuiz' } - | { name: 'yesNoQuizCorrect' } - | { name: 'yesNoQuizIncorrect' } - | { name: 'yesNoQuizYes'; hideText?: boolean } - | { name: 'yesNoQuizNo'; hideText?: boolean } - | { name: 'yesNoQuizCorrectPostfix' } - | { name: 'yesNoQuizIncorrectPostfix'; isYes: boolean } - | { name: 'pauseIfLost' } - | { name: 'byTheWay' } - | { name: 'computerScience' } - | { name: 'yCombinator' } - | { name: 'isZeroReview' } - | { - name: 'bentoBoxPuzzle' - plural?: boolean - } - | { name: 'next' } - | { name: 'play' } - | { name: 'fastForwarding' } - | { name: 'pause' } - | { name: 'fastForward' } - | { name: 'reset' } - | { name: 'previous' } - | { name: 'done' } - | { name: 'match' } - | { name: 'unmatch' } - | { name: 'nextButtonNextPagePrimaryText' } - | { name: 'nextButtonSecondaryText'; nextEpisodeNumber: number } - | { name: 'pressPlay'; capitalize?: boolean } - | { name: 'indexPageLink' } - | { name: 'sideNotePrefix' } - | { name: 'continueReading' } - | { name: 'titlePrefix' } - | { name: 'titlePrefixColored'; addColon?: boolean } - | { name: 'titleWithPrefixColored' } - | { name: 'episodeWelcomeText' } - | { name: 'newUser' } - | { name: 'titleSplit' } - | { name: 'toc' } - | { name: 'tocClose' } - | { name: 'playButton' } - | { name: 'afterPlay' } - | { name: 'yesNoQuizDontWorry'; tooHard: boolean } - | { name: 'unknownRule' } - | { name: 'pageUnderConstruction' } - | { name: 'question' } - | { name: 'prevAndNextLinks' } - | { name: 'whatHappensAtTheEndQuestion' } - | { name: 'whatHappensInTheMiddleQuestion' } - | { name: 'whatsTheNumberQuestion'; number: number } - | { name: 'lookAtThisBentoBox' } - | { - name: 'pressFastForward' - skipColon?: boolean - pleaseWait?: boolean - skippingSteps?: boolean - isFaster?: boolean - mentionRightArrow?: boolean - } - | { name: 'copy' } - | { name: 'summary' } - | { name: 'mustChangeBothFuncUnboundAndBound' } - | { name: 'secretCode' } - | { name: 'secretCodeCaptionSimple'; number: number } - | { name: 'isCallArgAndFuncUnboundTheSameCaption'; same: boolean } - | { name: 'secretCodeAddOneCaption' } - | { name: 'secretCodeAddCaption' } - | { name: 'secretCodeMultiplyCaption'; arg1?: number; arg2?: number } - | { name: 'secretCodeCaption'; number: number; letter: VariableNames } - | { name: 'notSecretCodeCaption'; number: number; letter: VariableNames } - | { name: 'theAnswerIs'; isYes: boolean; sentence?: boolean } - | { - name: 'ifCaption' - ifZero: VariableNames | VariableNames[] - ifNonZero: VariableNames | VariableNames[] - } - | { name: 'epiloguePrefix' } - | { name: 'yesOrNo' } - | { name: 'shareContent' } - | { name: 'shareTitle' } - | { name: 'privacyPolicy' } - | { name: 'witch' } - | { name: 'AmultTop' } - | { name: 'AmultBottom' } - | { name: 'witchAppearsAgainCaption' } - | { name: 'witchReplacedCaption' } - | { name: 'aboutThisSite' } - | { - name: 'categoryNameColored' - category: keyof typeof episodePrefixes - } - | { name: 'stoppedForExplanation' } - | { name: 'infinitelyAddingQuestionCaption' } - | { name: 'secretCodeAddOneCaptionWithoutQuestion' } - | { name: 'secretCodeMinusOneCaption' } - | { name: 'secretCodeTwoMinusOneCaption' } - | { name: 'pageNotFound' } - | { name: 'lookAtToc' } - | { name: 'magicalChangedCaption'; fromNumber: number } - | { name: 'ycChangedCaption'; fromNumber: number } - | { name: 'timer'; numSecondsRemaining: number } - | { name: 'whatCanComputeFactorial'; start: 3 | 4 | 5 } - | { name: 'abbreviated' } - | { name: 'itWillTakeTime' } - | { name: 'skippingSteps' } - | { name: 'inlineFactorial'; start: 3 | 4 | 5 } - | { name: 'factorialDefinition' } - | { name: 'factorialComputation'; start: 3 | 4 | 5 } - | { name: 'changedToPowerCaption' } - | { name: 'powerComputation'; power: 3 | 4 } - | { name: 'thisIsYCombinatorCaption'; too?: boolean } - | { name: 'csDescriptionPreface' } - | { name: 'csDescription' } - | { name: 'numberOfAIsSecretCodeCaption' } - | { name: 'mentionRightArrow' } -} +import { HProps } from 'src/types/HTypes' const slightlyLargeCaptionCss = css` font-size: ${fontSizes(1.2)}; diff --git a/src/components/Runners/Aaov.tsx b/src/components/Runners/Aaov.tsx new file mode 100644 index 000000000..ef56c22eb --- /dev/null +++ b/src/components/Runners/Aaov.tsx @@ -0,0 +1,193 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Aaov = () => ( + +) + +export default Aaov diff --git a/src/components/Runners/Ablz.tsx b/src/components/Runners/Ablz.tsx new file mode 100644 index 000000000..cbd6a6e2a --- /dev/null +++ b/src/components/Runners/Ablz.tsx @@ -0,0 +1,132 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Ablz = () => ( + +) + +export default Ablz diff --git a/src/components/Runners/Aeyv.tsx b/src/components/Runners/Aeyv.tsx new file mode 100644 index 000000000..b01eea670 --- /dev/null +++ b/src/components/Runners/Aeyv.tsx @@ -0,0 +1,99 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Aeyv = () => ( + +) + +export default Aeyv diff --git a/src/components/Runners/Aezk.tsx b/src/components/Runners/Aezk.tsx new file mode 100644 index 000000000..630614e5e --- /dev/null +++ b/src/components/Runners/Aezk.tsx @@ -0,0 +1,115 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Aezk = () => ( + +) + +export default Aezk diff --git a/src/components/Runners/Ahsd.tsx b/src/components/Runners/Ahsd.tsx new file mode 100644 index 000000000..9f5b0b3f5 --- /dev/null +++ b/src/components/Runners/Ahsd.tsx @@ -0,0 +1,51 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Ahsd = () => ( + +) + +export default Ahsd diff --git a/src/components/Runners/Aimh.tsx b/src/components/Runners/Aimh.tsx new file mode 100644 index 000000000..c292be439 --- /dev/null +++ b/src/components/Runners/Aimh.tsx @@ -0,0 +1,69 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Aimh = () => ( + +) + +export default Aimh diff --git a/src/components/Runners/Ainx.tsx b/src/components/Runners/Ainx.tsx new file mode 100644 index 000000000..ee523abf8 --- /dev/null +++ b/src/components/Runners/Ainx.tsx @@ -0,0 +1,1094 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Ainx = () => ( + +) + +export default Ainx diff --git a/src/components/Runners/Angp.tsx b/src/components/Runners/Angp.tsx new file mode 100644 index 000000000..d0393a533 --- /dev/null +++ b/src/components/Runners/Angp.tsx @@ -0,0 +1,197 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Angp = () => ( + +) + +export default Angp diff --git a/src/components/Runners/Awxz.tsx b/src/components/Runners/Awxz.tsx new file mode 100644 index 000000000..d7872a38f --- /dev/null +++ b/src/components/Runners/Awxz.tsx @@ -0,0 +1,67 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Awxz = () => ( + +) + +export default Awxz diff --git a/src/components/Runners/Badn.tsx b/src/components/Runners/Badn.tsx new file mode 100644 index 000000000..8d799a622 --- /dev/null +++ b/src/components/Runners/Badn.tsx @@ -0,0 +1,98 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Badn = () => ( + +) + +export default Badn diff --git a/src/components/Runners/Bcae.tsx b/src/components/Runners/Bcae.tsx new file mode 100644 index 000000000..a83989672 --- /dev/null +++ b/src/components/Runners/Bcae.tsx @@ -0,0 +1,206 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Bcae = () => ( + +) + +export default Bcae diff --git a/src/components/Runners/Bcgc.tsx b/src/components/Runners/Bcgc.tsx new file mode 100644 index 000000000..dc2bdf995 --- /dev/null +++ b/src/components/Runners/Bcgc.tsx @@ -0,0 +1,321 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Bcgc = () => ( + +) + +export default Bcgc diff --git a/src/components/Runners/Bdlj.tsx b/src/components/Runners/Bdlj.tsx new file mode 100644 index 000000000..cd458aa09 --- /dev/null +++ b/src/components/Runners/Bdlj.tsx @@ -0,0 +1,113 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Bdlj = () => ( + +) + +export default Bdlj diff --git a/src/components/Runners/Bgfl.tsx b/src/components/Runners/Bgfl.tsx new file mode 100644 index 000000000..ff1b0e6f2 --- /dev/null +++ b/src/components/Runners/Bgfl.tsx @@ -0,0 +1,51 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Bgfl = () => ( + +) + +export default Bgfl diff --git a/src/components/Runners/Blre.tsx b/src/components/Runners/Blre.tsx new file mode 100644 index 000000000..67e8ffd56 --- /dev/null +++ b/src/components/Runners/Blre.tsx @@ -0,0 +1,81 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Blre = () => ( + +) + +export default Blre diff --git a/src/components/Runners/Bmms.tsx b/src/components/Runners/Bmms.tsx new file mode 100644 index 000000000..6c5a22ead --- /dev/null +++ b/src/components/Runners/Bmms.tsx @@ -0,0 +1,830 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Bmms = () => ( + +) + +export default Bmms diff --git a/src/components/Runners/Bmnc.tsx b/src/components/Runners/Bmnc.tsx new file mode 100644 index 000000000..fadd2cf61 --- /dev/null +++ b/src/components/Runners/Bmnc.tsx @@ -0,0 +1,118 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Bmnc = () => ( + +) + +export default Bmnc diff --git a/src/components/Runners/Bozr.tsx b/src/components/Runners/Bozr.tsx new file mode 100644 index 000000000..5f7dc48b9 --- /dev/null +++ b/src/components/Runners/Bozr.tsx @@ -0,0 +1,13051 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Bozr = () => ( + +) + +export default Bozr diff --git a/src/components/Runners/Bpsz.tsx b/src/components/Runners/Bpsz.tsx new file mode 100644 index 000000000..ce5be7f85 --- /dev/null +++ b/src/components/Runners/Bpsz.tsx @@ -0,0 +1,10727 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Bpsz = () => ( + +) + +export default Bpsz diff --git a/src/components/Runners/Bpwl.tsx b/src/components/Runners/Bpwl.tsx new file mode 100644 index 000000000..f129587f6 --- /dev/null +++ b/src/components/Runners/Bpwl.tsx @@ -0,0 +1,129 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Bpwl = () => ( + +) + +export default Bpwl diff --git a/src/components/Runners/Bpza.tsx b/src/components/Runners/Bpza.tsx new file mode 100644 index 000000000..75539f8ec --- /dev/null +++ b/src/components/Runners/Bpza.tsx @@ -0,0 +1,97 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Bpza = () => ( + +) + +export default Bpza diff --git a/src/components/Runners/Brrh.tsx b/src/components/Runners/Brrh.tsx new file mode 100644 index 000000000..b21048faf --- /dev/null +++ b/src/components/Runners/Brrh.tsx @@ -0,0 +1,253 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Brrh = () => ( + +) + +export default Brrh diff --git a/src/components/Runners/Bxdf.tsx b/src/components/Runners/Bxdf.tsx new file mode 100644 index 000000000..c1c18d901 --- /dev/null +++ b/src/components/Runners/Bxdf.tsx @@ -0,0 +1,207 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Bxdf = () => ( + +) + +export default Bxdf diff --git a/src/components/Runners/Bxfv.tsx b/src/components/Runners/Bxfv.tsx new file mode 100644 index 000000000..26654ac5e --- /dev/null +++ b/src/components/Runners/Bxfv.tsx @@ -0,0 +1,190 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Bxfv = () => ( + +) + +export default Bxfv diff --git a/src/components/Runners/Ccon.tsx b/src/components/Runners/Ccon.tsx new file mode 100644 index 000000000..91e150b59 --- /dev/null +++ b/src/components/Runners/Ccon.tsx @@ -0,0 +1,13372 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Ccon = () => ( + +) + +export default Ccon diff --git a/src/components/Runners/Cfms.tsx b/src/components/Runners/Cfms.tsx new file mode 100644 index 000000000..a29f587a3 --- /dev/null +++ b/src/components/Runners/Cfms.tsx @@ -0,0 +1,163 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Cfms = () => ( + +) + +export default Cfms diff --git a/src/components/Runners/Cgpd.tsx b/src/components/Runners/Cgpd.tsx new file mode 100644 index 000000000..ecf8b2951 --- /dev/null +++ b/src/components/Runners/Cgpd.tsx @@ -0,0 +1,52 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Cgpd = () => ( + +) + +export default Cgpd diff --git a/src/components/Runners/Cnef.tsx b/src/components/Runners/Cnef.tsx new file mode 100644 index 000000000..e283b5746 --- /dev/null +++ b/src/components/Runners/Cnef.tsx @@ -0,0 +1,267 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Cnef = () => ( + +) + +export default Cnef diff --git a/src/components/Runners/Cnoq.tsx b/src/components/Runners/Cnoq.tsx new file mode 100644 index 000000000..4c2e6ca30 --- /dev/null +++ b/src/components/Runners/Cnoq.tsx @@ -0,0 +1,1377 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Cnoq = () => ( + +) + +export default Cnoq diff --git a/src/components/Runners/Cpbj.tsx b/src/components/Runners/Cpbj.tsx new file mode 100644 index 000000000..28d2552f8 --- /dev/null +++ b/src/components/Runners/Cpbj.tsx @@ -0,0 +1,150 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Cpbj = () => ( + +) + +export default Cpbj diff --git a/src/components/Runners/Cpkp.tsx b/src/components/Runners/Cpkp.tsx new file mode 100644 index 000000000..14b40e627 --- /dev/null +++ b/src/components/Runners/Cpkp.tsx @@ -0,0 +1,51 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Cpkp = () => ( + +) + +export default Cpkp diff --git a/src/components/Runners/Cqpa.tsx b/src/components/Runners/Cqpa.tsx new file mode 100644 index 000000000..32b9e30ef --- /dev/null +++ b/src/components/Runners/Cqpa.tsx @@ -0,0 +1,113 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Cqpa = () => ( + +) + +export default Cqpa diff --git a/src/components/Runners/Ctyl.tsx b/src/components/Runners/Ctyl.tsx new file mode 100644 index 000000000..75e99f2a5 --- /dev/null +++ b/src/components/Runners/Ctyl.tsx @@ -0,0 +1,3941 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Ctyl = () => ( + +) + +export default Ctyl diff --git a/src/components/Runners/Cvtc.tsx b/src/components/Runners/Cvtc.tsx new file mode 100644 index 000000000..3535b6622 --- /dev/null +++ b/src/components/Runners/Cvtc.tsx @@ -0,0 +1,113 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Cvtc = () => ( + +) + +export default Cvtc diff --git a/src/components/Runners/Davn.tsx b/src/components/Runners/Davn.tsx new file mode 100644 index 000000000..bc556345f --- /dev/null +++ b/src/components/Runners/Davn.tsx @@ -0,0 +1,140 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Davn = () => ( + +) + +export default Davn diff --git a/src/components/Runners/Dcfi.tsx b/src/components/Runners/Dcfi.tsx new file mode 100644 index 000000000..01e98ac20 --- /dev/null +++ b/src/components/Runners/Dcfi.tsx @@ -0,0 +1,8664 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Dcfi = () => ( + +) + +export default Dcfi diff --git a/src/components/Runners/Dhdk.tsx b/src/components/Runners/Dhdk.tsx new file mode 100644 index 000000000..d32e0b96c --- /dev/null +++ b/src/components/Runners/Dhdk.tsx @@ -0,0 +1,133 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Dhdk = () => ( + +) + +export default Dhdk diff --git a/src/components/Runners/Diis.tsx b/src/components/Runners/Diis.tsx new file mode 100644 index 000000000..c104a00a4 --- /dev/null +++ b/src/components/Runners/Diis.tsx @@ -0,0 +1,395 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Diis = () => ( + +) + +export default Diis diff --git a/src/components/Runners/Dkbt.tsx b/src/components/Runners/Dkbt.tsx new file mode 100644 index 000000000..74c121732 --- /dev/null +++ b/src/components/Runners/Dkbt.tsx @@ -0,0 +1,319 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Dkbt = () => ( + +) + +export default Dkbt diff --git a/src/components/Runners/Dkiy.tsx b/src/components/Runners/Dkiy.tsx new file mode 100644 index 000000000..bc6ba3a1c --- /dev/null +++ b/src/components/Runners/Dkiy.tsx @@ -0,0 +1,113 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Dkiy = () => ( + +) + +export default Dkiy diff --git a/src/components/Runners/Dmwy.tsx b/src/components/Runners/Dmwy.tsx new file mode 100644 index 000000000..d0c07ce30 --- /dev/null +++ b/src/components/Runners/Dmwy.tsx @@ -0,0 +1,230 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Dmwy = () => ( + +) + +export default Dmwy diff --git a/src/components/Runners/Dnvw.tsx b/src/components/Runners/Dnvw.tsx new file mode 100644 index 000000000..a7d004fd5 --- /dev/null +++ b/src/components/Runners/Dnvw.tsx @@ -0,0 +1,85 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Dnvw = () => ( + +) + +export default Dnvw diff --git a/src/components/Runners/Dpar.tsx b/src/components/Runners/Dpar.tsx new file mode 100644 index 000000000..726105363 --- /dev/null +++ b/src/components/Runners/Dpar.tsx @@ -0,0 +1,444 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Dpar = () => ( + +) + +export default Dpar diff --git a/src/components/Runners/Dpst.tsx b/src/components/Runners/Dpst.tsx new file mode 100644 index 000000000..e17245871 --- /dev/null +++ b/src/components/Runners/Dpst.tsx @@ -0,0 +1,115 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Dpst = () => ( + +) + +export default Dpst diff --git a/src/components/Runners/Dqey.tsx b/src/components/Runners/Dqey.tsx new file mode 100644 index 000000000..9ddc38c38 --- /dev/null +++ b/src/components/Runners/Dqey.tsx @@ -0,0 +1,100 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Dqey = () => ( + +) + +export default Dqey diff --git a/src/components/Runners/Dqkc.tsx b/src/components/Runners/Dqkc.tsx new file mode 100644 index 000000000..9a76c76a9 --- /dev/null +++ b/src/components/Runners/Dqkc.tsx @@ -0,0 +1,99 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Dqkc = () => ( + +) + +export default Dqkc diff --git a/src/components/Runners/Dret.tsx b/src/components/Runners/Dret.tsx new file mode 100644 index 000000000..e4601bdba --- /dev/null +++ b/src/components/Runners/Dret.tsx @@ -0,0 +1,52 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Dret = () => ( + +) + +export default Dret diff --git a/src/components/Runners/Drvu.tsx b/src/components/Runners/Drvu.tsx new file mode 100644 index 000000000..e012e5f81 --- /dev/null +++ b/src/components/Runners/Drvu.tsx @@ -0,0 +1,191 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Drvu = () => ( + +) + +export default Drvu diff --git a/src/components/Runners/Dtzu.tsx b/src/components/Runners/Dtzu.tsx new file mode 100644 index 000000000..679511957 --- /dev/null +++ b/src/components/Runners/Dtzu.tsx @@ -0,0 +1,115 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Dtzu = () => ( + +) + +export default Dtzu diff --git a/src/components/Runners/Dvrw.tsx b/src/components/Runners/Dvrw.tsx new file mode 100644 index 000000000..564fbe29b --- /dev/null +++ b/src/components/Runners/Dvrw.tsx @@ -0,0 +1,205 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Dvrw = () => ( + +) + +export default Dvrw diff --git a/src/components/Runners/Dwnj.tsx b/src/components/Runners/Dwnj.tsx new file mode 100644 index 000000000..35592cdfb --- /dev/null +++ b/src/components/Runners/Dwnj.tsx @@ -0,0 +1,261 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Dwnj = () => ( + +) + +export default Dwnj diff --git a/src/components/Runners/Dxum.tsx b/src/components/Runners/Dxum.tsx new file mode 100644 index 000000000..e12551d7a --- /dev/null +++ b/src/components/Runners/Dxum.tsx @@ -0,0 +1,105 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Dxum = () => ( + +) + +export default Dxum diff --git a/src/components/Runners/Dymt.tsx b/src/components/Runners/Dymt.tsx new file mode 100644 index 000000000..b9402ac69 --- /dev/null +++ b/src/components/Runners/Dymt.tsx @@ -0,0 +1,97 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Dymt = () => ( + +) + +export default Dymt diff --git a/src/components/Runners/Dyov.tsx b/src/components/Runners/Dyov.tsx new file mode 100644 index 000000000..851c92e28 --- /dev/null +++ b/src/components/Runners/Dyov.tsx @@ -0,0 +1,331 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Dyov = () => ( + +) + +export default Dyov diff --git a/src/components/Runners/Eavp.tsx b/src/components/Runners/Eavp.tsx new file mode 100644 index 000000000..c41403b8e --- /dev/null +++ b/src/components/Runners/Eavp.tsx @@ -0,0 +1,190 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Eavp = () => ( + +) + +export default Eavp diff --git a/src/components/Runners/Ebag.tsx b/src/components/Runners/Ebag.tsx new file mode 100644 index 000000000..2d86393cc --- /dev/null +++ b/src/components/Runners/Ebag.tsx @@ -0,0 +1,68 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Ebag = () => ( + +) + +export default Ebag diff --git a/src/components/Runners/Eemn.tsx b/src/components/Runners/Eemn.tsx new file mode 100644 index 000000000..2a1efa4c9 --- /dev/null +++ b/src/components/Runners/Eemn.tsx @@ -0,0 +1,2807 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Eemn = () => ( + +) + +export default Eemn diff --git a/src/components/Runners/Efyy.tsx b/src/components/Runners/Efyy.tsx new file mode 100644 index 000000000..f52b831b3 --- /dev/null +++ b/src/components/Runners/Efyy.tsx @@ -0,0 +1,196 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Efyy = () => ( + +) + +export default Efyy diff --git a/src/components/Runners/Egmr.tsx b/src/components/Runners/Egmr.tsx new file mode 100644 index 000000000..376197b82 --- /dev/null +++ b/src/components/Runners/Egmr.tsx @@ -0,0 +1,163 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Egmr = () => ( + +) + +export default Egmr diff --git a/src/components/Runners/Eial.tsx b/src/components/Runners/Eial.tsx new file mode 100644 index 000000000..1a3e5b651 --- /dev/null +++ b/src/components/Runners/Eial.tsx @@ -0,0 +1,115 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Eial = () => ( + +) + +export default Eial diff --git a/src/components/Runners/Emmb.tsx b/src/components/Runners/Emmb.tsx new file mode 100644 index 000000000..39a855c38 --- /dev/null +++ b/src/components/Runners/Emmb.tsx @@ -0,0 +1,82 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Emmb = () => ( + +) + +export default Emmb diff --git a/src/components/Runners/Entr.tsx b/src/components/Runners/Entr.tsx new file mode 100644 index 000000000..2d326f3c8 --- /dev/null +++ b/src/components/Runners/Entr.tsx @@ -0,0 +1,315 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Entr = () => ( + +) + +export default Entr diff --git a/src/components/Runners/Eobj.tsx b/src/components/Runners/Eobj.tsx new file mode 100644 index 000000000..d0867d009 --- /dev/null +++ b/src/components/Runners/Eobj.tsx @@ -0,0 +1,193 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Eobj = () => ( + +) + +export default Eobj diff --git a/src/components/Runners/Eozk.tsx b/src/components/Runners/Eozk.tsx new file mode 100644 index 000000000..f85fc726a --- /dev/null +++ b/src/components/Runners/Eozk.tsx @@ -0,0 +1,97 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Eozk = () => ( + +) + +export default Eozk diff --git a/src/components/Runners/Evqx.tsx b/src/components/Runners/Evqx.tsx new file mode 100644 index 000000000..e307b2642 --- /dev/null +++ b/src/components/Runners/Evqx.tsx @@ -0,0 +1,134 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Evqx = () => ( + +) + +export default Evqx diff --git a/src/components/Runners/Exww.tsx b/src/components/Runners/Exww.tsx new file mode 100644 index 000000000..932f133a0 --- /dev/null +++ b/src/components/Runners/Exww.tsx @@ -0,0 +1,329 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Exww = () => ( + +) + +export default Exww diff --git a/src/components/Runners/Fapu.tsx b/src/components/Runners/Fapu.tsx new file mode 100644 index 000000000..0b5eeedbe --- /dev/null +++ b/src/components/Runners/Fapu.tsx @@ -0,0 +1,189 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Fapu = () => ( + +) + +export default Fapu diff --git a/src/components/Runners/Fatm.tsx b/src/components/Runners/Fatm.tsx new file mode 100644 index 000000000..e18529497 --- /dev/null +++ b/src/components/Runners/Fatm.tsx @@ -0,0 +1,285 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Fatm = () => ( + +) + +export default Fatm diff --git a/src/components/Runners/Fhlw.tsx b/src/components/Runners/Fhlw.tsx new file mode 100644 index 000000000..0c2dd4507 --- /dev/null +++ b/src/components/Runners/Fhlw.tsx @@ -0,0 +1,81 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Fhlw = () => ( + +) + +export default Fhlw diff --git a/src/components/Runners/Fiab.tsx b/src/components/Runners/Fiab.tsx new file mode 100644 index 000000000..b495e4d77 --- /dev/null +++ b/src/components/Runners/Fiab.tsx @@ -0,0 +1,13372 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Fiab = () => ( + +) + +export default Fiab diff --git a/src/components/Runners/Fivy.tsx b/src/components/Runners/Fivy.tsx new file mode 100644 index 000000000..e2ee06a9a --- /dev/null +++ b/src/components/Runners/Fivy.tsx @@ -0,0 +1,180 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Fivy = () => ( + +) + +export default Fivy diff --git a/src/components/Runners/Fjyk.tsx b/src/components/Runners/Fjyk.tsx new file mode 100644 index 000000000..6827c24ca --- /dev/null +++ b/src/components/Runners/Fjyk.tsx @@ -0,0 +1,70 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Fjyk = () => ( + +) + +export default Fjyk diff --git a/src/components/Runners/Fora.tsx b/src/components/Runners/Fora.tsx new file mode 100644 index 000000000..112accdcc --- /dev/null +++ b/src/components/Runners/Fora.tsx @@ -0,0 +1,70 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Fora = () => ( + +) + +export default Fora diff --git a/src/components/Runners/Fotb.tsx b/src/components/Runners/Fotb.tsx new file mode 100644 index 000000000..e96a03720 --- /dev/null +++ b/src/components/Runners/Fotb.tsx @@ -0,0 +1,161 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Fotb = () => ( + +) + +export default Fotb diff --git a/src/components/Runners/Fpsd.tsx b/src/components/Runners/Fpsd.tsx new file mode 100644 index 000000000..021614a4b --- /dev/null +++ b/src/components/Runners/Fpsd.tsx @@ -0,0 +1,99 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Fpsd = () => ( + +) + +export default Fpsd diff --git a/src/components/Runners/Fqwj.tsx b/src/components/Runners/Fqwj.tsx new file mode 100644 index 000000000..6c7d5292b --- /dev/null +++ b/src/components/Runners/Fqwj.tsx @@ -0,0 +1,190 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Fqwj = () => ( + +) + +export default Fqwj diff --git a/src/components/Runners/Fsmk.tsx b/src/components/Runners/Fsmk.tsx new file mode 100644 index 000000000..67a7c4924 --- /dev/null +++ b/src/components/Runners/Fsmk.tsx @@ -0,0 +1,158 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Fsmk = () => ( + +) + +export default Fsmk diff --git a/src/components/Runners/Gcnt.tsx b/src/components/Runners/Gcnt.tsx new file mode 100644 index 000000000..7134666e0 --- /dev/null +++ b/src/components/Runners/Gcnt.tsx @@ -0,0 +1,140 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Gcnt = () => ( + +) + +export default Gcnt diff --git a/src/components/Runners/Gmcn.tsx b/src/components/Runners/Gmcn.tsx new file mode 100644 index 000000000..7d4a2895f --- /dev/null +++ b/src/components/Runners/Gmcn.tsx @@ -0,0 +1,115 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Gmcn = () => ( + +) + +export default Gmcn diff --git a/src/components/Runners/Goif.tsx b/src/components/Runners/Goif.tsx new file mode 100644 index 000000000..c50e848e6 --- /dev/null +++ b/src/components/Runners/Goif.tsx @@ -0,0 +1,207 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Goif = () => ( + +) + +export default Goif diff --git a/src/components/Runners/Gopk.tsx b/src/components/Runners/Gopk.tsx new file mode 100644 index 000000000..9802f2fa6 --- /dev/null +++ b/src/components/Runners/Gopk.tsx @@ -0,0 +1,252 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Gopk = () => ( + +) + +export default Gopk diff --git a/src/components/Runners/Gswd.tsx b/src/components/Runners/Gswd.tsx new file mode 100644 index 000000000..3c9974660 --- /dev/null +++ b/src/components/Runners/Gswd.tsx @@ -0,0 +1,1914 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Gswd = () => ( + +) + +export default Gswd diff --git a/src/components/Runners/Gszp.tsx b/src/components/Runners/Gszp.tsx new file mode 100644 index 000000000..6ee2fc258 --- /dev/null +++ b/src/components/Runners/Gszp.tsx @@ -0,0 +1,780 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Gszp = () => ( + +) + +export default Gszp diff --git a/src/components/Runners/Gtdu.tsx b/src/components/Runners/Gtdu.tsx new file mode 100644 index 000000000..5ba4ec045 --- /dev/null +++ b/src/components/Runners/Gtdu.tsx @@ -0,0 +1,98 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Gtdu = () => ( + +) + +export default Gtdu diff --git a/src/components/Runners/Gtnr.tsx b/src/components/Runners/Gtnr.tsx new file mode 100644 index 000000000..fb56bd046 --- /dev/null +++ b/src/components/Runners/Gtnr.tsx @@ -0,0 +1,165 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Gtnr = () => ( + +) + +export default Gtnr diff --git a/src/components/Runners/Gtwk.tsx b/src/components/Runners/Gtwk.tsx new file mode 100644 index 000000000..81474ceb8 --- /dev/null +++ b/src/components/Runners/Gtwk.tsx @@ -0,0 +1,4850 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Gtwk = () => ( + +) + +export default Gtwk diff --git a/src/components/Runners/Guuf.tsx b/src/components/Runners/Guuf.tsx new file mode 100644 index 000000000..2a5484d46 --- /dev/null +++ b/src/components/Runners/Guuf.tsx @@ -0,0 +1,118 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Guuf = () => ( + +) + +export default Guuf diff --git a/src/components/Runners/Gwtp.tsx b/src/components/Runners/Gwtp.tsx new file mode 100644 index 000000000..d450e6ff4 --- /dev/null +++ b/src/components/Runners/Gwtp.tsx @@ -0,0 +1,133 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Gwtp = () => ( + +) + +export default Gwtp diff --git a/src/components/Runners/Hbgo.tsx b/src/components/Runners/Hbgo.tsx new file mode 100644 index 000000000..4ce0ad970 --- /dev/null +++ b/src/components/Runners/Hbgo.tsx @@ -0,0 +1,82 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Hbgo = () => ( + +) + +export default Hbgo diff --git a/src/components/Runners/Hdwy.tsx b/src/components/Runners/Hdwy.tsx new file mode 100644 index 000000000..722ca5ae8 --- /dev/null +++ b/src/components/Runners/Hdwy.tsx @@ -0,0 +1,315 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Hdwy = () => ( + +) + +export default Hdwy diff --git a/src/components/Runners/Hdxc.tsx b/src/components/Runners/Hdxc.tsx new file mode 100644 index 000000000..233e231c1 --- /dev/null +++ b/src/components/Runners/Hdxc.tsx @@ -0,0 +1,744 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Hdxc = () => ( + +) + +export default Hdxc diff --git a/src/components/Runners/Howy.tsx b/src/components/Runners/Howy.tsx new file mode 100644 index 000000000..34e6c5a0f --- /dev/null +++ b/src/components/Runners/Howy.tsx @@ -0,0 +1,161 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Howy = () => ( + +) + +export default Howy diff --git a/src/components/Runners/Hvdn.tsx b/src/components/Runners/Hvdn.tsx new file mode 100644 index 000000000..1b0c060d8 --- /dev/null +++ b/src/components/Runners/Hvdn.tsx @@ -0,0 +1,79 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Hvdn = () => ( + +) + +export default Hvdn diff --git a/src/components/Runners/Hwtu.tsx b/src/components/Runners/Hwtu.tsx new file mode 100644 index 000000000..19d23a6a9 --- /dev/null +++ b/src/components/Runners/Hwtu.tsx @@ -0,0 +1,100 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Hwtu = () => ( + +) + +export default Hwtu diff --git a/src/components/Runners/Hxmk.tsx b/src/components/Runners/Hxmk.tsx new file mode 100644 index 000000000..3a2b199e8 --- /dev/null +++ b/src/components/Runners/Hxmk.tsx @@ -0,0 +1,208 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Hxmk = () => ( + +) + +export default Hxmk diff --git a/src/components/Runners/Hykj.tsx b/src/components/Runners/Hykj.tsx new file mode 100644 index 000000000..5548c8462 --- /dev/null +++ b/src/components/Runners/Hykj.tsx @@ -0,0 +1,115 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Hykj = () => ( + +) + +export default Hykj diff --git a/src/components/Runners/Hzlj.tsx b/src/components/Runners/Hzlj.tsx new file mode 100644 index 000000000..027614944 --- /dev/null +++ b/src/components/Runners/Hzlj.tsx @@ -0,0 +1,321 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Hzlj = () => ( + +) + +export default Hzlj diff --git a/src/components/Runners/Idcf.tsx b/src/components/Runners/Idcf.tsx new file mode 100644 index 000000000..e01fd7e2d --- /dev/null +++ b/src/components/Runners/Idcf.tsx @@ -0,0 +1,113 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Idcf = () => ( + +) + +export default Idcf diff --git a/src/components/Runners/Ielw.tsx b/src/components/Runners/Ielw.tsx new file mode 100644 index 000000000..c1748b320 --- /dev/null +++ b/src/components/Runners/Ielw.tsx @@ -0,0 +1,115 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Ielw = () => ( + +) + +export default Ielw diff --git a/src/components/Runners/Ifwb.tsx b/src/components/Runners/Ifwb.tsx new file mode 100644 index 000000000..a2220a0fe --- /dev/null +++ b/src/components/Runners/Ifwb.tsx @@ -0,0 +1,129 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Ifwb = () => ( + +) + +export default Ifwb diff --git a/src/components/Runners/Ifxr.tsx b/src/components/Runners/Ifxr.tsx new file mode 100644 index 000000000..5435912ae --- /dev/null +++ b/src/components/Runners/Ifxr.tsx @@ -0,0 +1,105 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Ifxr = () => ( + +) + +export default Ifxr diff --git a/src/components/Runners/Igrt.tsx b/src/components/Runners/Igrt.tsx new file mode 100644 index 000000000..f2f524be8 --- /dev/null +++ b/src/components/Runners/Igrt.tsx @@ -0,0 +1,70 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Igrt = () => ( + +) + +export default Igrt diff --git a/src/components/Runners/Iifq.tsx b/src/components/Runners/Iifq.tsx new file mode 100644 index 000000000..1d324235a --- /dev/null +++ b/src/components/Runners/Iifq.tsx @@ -0,0 +1,52 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Iifq = () => ( + +) + +export default Iifq diff --git a/src/components/Runners/Iisx.tsx b/src/components/Runners/Iisx.tsx new file mode 100644 index 000000000..cb64442eb --- /dev/null +++ b/src/components/Runners/Iisx.tsx @@ -0,0 +1,105 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Iisx = () => ( + +) + +export default Iisx diff --git a/src/components/Runners/Ijot.tsx b/src/components/Runners/Ijot.tsx new file mode 100644 index 000000000..849a8fb91 --- /dev/null +++ b/src/components/Runners/Ijot.tsx @@ -0,0 +1,130 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Ijot = () => ( + +) + +export default Ijot diff --git a/src/components/Runners/Ilnb.tsx b/src/components/Runners/Ilnb.tsx new file mode 100644 index 000000000..eeccc90a9 --- /dev/null +++ b/src/components/Runners/Ilnb.tsx @@ -0,0 +1,113 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Ilnb = () => ( + +) + +export default Ilnb diff --git a/src/components/Runners/Ilpo.tsx b/src/components/Runners/Ilpo.tsx new file mode 100644 index 000000000..a9d0ac96e --- /dev/null +++ b/src/components/Runners/Ilpo.tsx @@ -0,0 +1,82 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Ilpo = () => ( + +) + +export default Ilpo diff --git a/src/components/Runners/Ilrn.tsx b/src/components/Runners/Ilrn.tsx new file mode 100644 index 000000000..4bce75eb1 --- /dev/null +++ b/src/components/Runners/Ilrn.tsx @@ -0,0 +1,7502 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Ilrn = () => ( + +) + +export default Ilrn diff --git a/src/components/Runners/Imba.tsx b/src/components/Runners/Imba.tsx new file mode 100644 index 000000000..e0636d2b1 --- /dev/null +++ b/src/components/Runners/Imba.tsx @@ -0,0 +1,84 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Imba = () => ( + +) + +export default Imba diff --git a/src/components/Runners/Imgp.tsx b/src/components/Runners/Imgp.tsx new file mode 100644 index 000000000..bdaf9e807 --- /dev/null +++ b/src/components/Runners/Imgp.tsx @@ -0,0 +1,113 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Imgp = () => ( + +) + +export default Imgp diff --git a/src/components/Runners/Imqy.tsx b/src/components/Runners/Imqy.tsx new file mode 100644 index 000000000..1104320c7 --- /dev/null +++ b/src/components/Runners/Imqy.tsx @@ -0,0 +1,161 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Imqy = () => ( + +) + +export default Imqy diff --git a/src/components/Runners/Imyd.tsx b/src/components/Runners/Imyd.tsx new file mode 100644 index 000000000..a7b00201d --- /dev/null +++ b/src/components/Runners/Imyd.tsx @@ -0,0 +1,82 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Imyd = () => ( + +) + +export default Imyd diff --git a/src/components/Runners/Ines.tsx b/src/components/Runners/Ines.tsx new file mode 100644 index 000000000..c7821f2d1 --- /dev/null +++ b/src/components/Runners/Ines.tsx @@ -0,0 +1,155 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Ines = () => ( + +) + +export default Ines diff --git a/src/components/Runners/Itbm.tsx b/src/components/Runners/Itbm.tsx new file mode 100644 index 000000000..a1a0fe90d --- /dev/null +++ b/src/components/Runners/Itbm.tsx @@ -0,0 +1,99 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Itbm = () => ( + +) + +export default Itbm diff --git a/src/components/Runners/Itzl.tsx b/src/components/Runners/Itzl.tsx new file mode 100644 index 000000000..66774cacb --- /dev/null +++ b/src/components/Runners/Itzl.tsx @@ -0,0 +1,204 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Itzl = () => ( + +) + +export default Itzl diff --git a/src/components/Runners/Iwkx.tsx b/src/components/Runners/Iwkx.tsx new file mode 100644 index 000000000..71a22f2d7 --- /dev/null +++ b/src/components/Runners/Iwkx.tsx @@ -0,0 +1,82 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Iwkx = () => ( + +) + +export default Iwkx diff --git a/src/components/Runners/Iygh.tsx b/src/components/Runners/Iygh.tsx new file mode 100644 index 000000000..ee9e78f3d --- /dev/null +++ b/src/components/Runners/Iygh.tsx @@ -0,0 +1,155 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Iygh = () => ( + +) + +export default Iygh diff --git a/src/components/Runners/Izgz.tsx b/src/components/Runners/Izgz.tsx new file mode 100644 index 000000000..3e5be2d31 --- /dev/null +++ b/src/components/Runners/Izgz.tsx @@ -0,0 +1,514 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Izgz = () => ( + +) + +export default Izgz diff --git a/src/components/Runners/Jbam.tsx b/src/components/Runners/Jbam.tsx new file mode 100644 index 000000000..a0c725f4d --- /dev/null +++ b/src/components/Runners/Jbam.tsx @@ -0,0 +1,247 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Jbam = () => ( + +) + +export default Jbam diff --git a/src/components/Runners/Jlet.tsx b/src/components/Runners/Jlet.tsx new file mode 100644 index 000000000..be4c26a32 --- /dev/null +++ b/src/components/Runners/Jlet.tsx @@ -0,0 +1,115 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Jlet = () => ( + +) + +export default Jlet diff --git a/src/components/Runners/Jliw.tsx b/src/components/Runners/Jliw.tsx new file mode 100644 index 000000000..6d065995b --- /dev/null +++ b/src/components/Runners/Jliw.tsx @@ -0,0 +1,2464 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Jliw = () => ( + +) + +export default Jliw diff --git a/src/components/Runners/Jmmp.tsx b/src/components/Runners/Jmmp.tsx new file mode 100644 index 000000000..4c2fae329 --- /dev/null +++ b/src/components/Runners/Jmmp.tsx @@ -0,0 +1,98 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Jmmp = () => ( + +) + +export default Jmmp diff --git a/src/components/Runners/Jmqh.tsx b/src/components/Runners/Jmqh.tsx new file mode 100644 index 000000000..62eec50e9 --- /dev/null +++ b/src/components/Runners/Jmqh.tsx @@ -0,0 +1,325 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Jmqh = () => ( + +) + +export default Jmqh diff --git a/src/components/Runners/Jmyv.tsx b/src/components/Runners/Jmyv.tsx new file mode 100644 index 000000000..e57bd427c --- /dev/null +++ b/src/components/Runners/Jmyv.tsx @@ -0,0 +1,97 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Jmyv = () => ( + +) + +export default Jmyv diff --git a/src/components/Runners/Jozw.tsx b/src/components/Runners/Jozw.tsx new file mode 100644 index 000000000..278fb5d46 --- /dev/null +++ b/src/components/Runners/Jozw.tsx @@ -0,0 +1,82 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Jozw = () => ( + +) + +export default Jozw diff --git a/src/components/Runners/Jreq.tsx b/src/components/Runners/Jreq.tsx new file mode 100644 index 000000000..00e55a003 --- /dev/null +++ b/src/components/Runners/Jreq.tsx @@ -0,0 +1,10663 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Jreq = () => ( + +) + +export default Jreq diff --git a/src/components/Runners/Jruw.tsx b/src/components/Runners/Jruw.tsx new file mode 100644 index 000000000..9b0c44111 --- /dev/null +++ b/src/components/Runners/Jruw.tsx @@ -0,0 +1,342 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Jruw = () => ( + +) + +export default Jruw diff --git a/src/components/Runners/Jtai.tsx b/src/components/Runners/Jtai.tsx new file mode 100644 index 000000000..cf599c8bc --- /dev/null +++ b/src/components/Runners/Jtai.tsx @@ -0,0 +1,321 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Jtai = () => ( + +) + +export default Jtai diff --git a/src/components/Runners/Jwzh.tsx b/src/components/Runners/Jwzh.tsx new file mode 100644 index 000000000..7cf5825f6 --- /dev/null +++ b/src/components/Runners/Jwzh.tsx @@ -0,0 +1,84 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Jwzh = () => ( + +) + +export default Jwzh diff --git a/src/components/Runners/Jxyg.tsx b/src/components/Runners/Jxyg.tsx new file mode 100644 index 000000000..c2dd1e776 --- /dev/null +++ b/src/components/Runners/Jxyg.tsx @@ -0,0 +1,208 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Jxyg = () => ( + +) + +export default Jxyg diff --git a/src/components/Runners/Keck.tsx b/src/components/Runners/Keck.tsx new file mode 100644 index 000000000..8dabd3c55 --- /dev/null +++ b/src/components/Runners/Keck.tsx @@ -0,0 +1,84 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Keck = () => ( + +) + +export default Keck diff --git a/src/components/Runners/Kfcw.tsx b/src/components/Runners/Kfcw.tsx new file mode 100644 index 000000000..4fbbbeabf --- /dev/null +++ b/src/components/Runners/Kfcw.tsx @@ -0,0 +1,115 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Kfcw = () => ( + +) + +export default Kfcw diff --git a/src/components/Runners/Kfrt.tsx b/src/components/Runners/Kfrt.tsx new file mode 100644 index 000000000..40b300b25 --- /dev/null +++ b/src/components/Runners/Kfrt.tsx @@ -0,0 +1,489 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Kfrt = () => ( + +) + +export default Kfrt diff --git a/src/components/Runners/Kjyi.tsx b/src/components/Runners/Kjyi.tsx new file mode 100644 index 000000000..e828a6923 --- /dev/null +++ b/src/components/Runners/Kjyi.tsx @@ -0,0 +1,252 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Kjyi = () => ( + +) + +export default Kjyi diff --git a/src/components/Runners/Knhw.tsx b/src/components/Runners/Knhw.tsx new file mode 100644 index 000000000..dd9f81936 --- /dev/null +++ b/src/components/Runners/Knhw.tsx @@ -0,0 +1,84 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Knhw = () => ( + +) + +export default Knhw diff --git a/src/components/Runners/Kntz.tsx b/src/components/Runners/Kntz.tsx new file mode 100644 index 000000000..38deefc3f --- /dev/null +++ b/src/components/Runners/Kntz.tsx @@ -0,0 +1,780 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Kntz = () => ( + +) + +export default Kntz diff --git a/src/components/Runners/Kqip.tsx b/src/components/Runners/Kqip.tsx new file mode 100644 index 000000000..b3e65b768 --- /dev/null +++ b/src/components/Runners/Kqip.tsx @@ -0,0 +1,208 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Kqip = () => ( + +) + +export default Kqip diff --git a/src/components/Runners/Kqzn.tsx b/src/components/Runners/Kqzn.tsx new file mode 100644 index 000000000..e423e32b4 --- /dev/null +++ b/src/components/Runners/Kqzn.tsx @@ -0,0 +1,69 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Kqzn = () => ( + +) + +export default Kqzn diff --git a/src/components/Runners/Ksya.tsx b/src/components/Runners/Ksya.tsx new file mode 100644 index 000000000..234ea230b --- /dev/null +++ b/src/components/Runners/Ksya.tsx @@ -0,0 +1,191 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Ksya = () => ( + +) + +export default Ksya diff --git a/src/components/Runners/Ktyt.tsx b/src/components/Runners/Ktyt.tsx new file mode 100644 index 000000000..99761c8ff --- /dev/null +++ b/src/components/Runners/Ktyt.tsx @@ -0,0 +1,6803 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Ktyt = () => ( + +) + +export default Ktyt diff --git a/src/components/Runners/Kupy.tsx b/src/components/Runners/Kupy.tsx new file mode 100644 index 000000000..1e407e44d --- /dev/null +++ b/src/components/Runners/Kupy.tsx @@ -0,0 +1,113 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Kupy = () => ( + +) + +export default Kupy diff --git a/src/components/Runners/Kvso.tsx b/src/components/Runners/Kvso.tsx new file mode 100644 index 000000000..1a1926557 --- /dev/null +++ b/src/components/Runners/Kvso.tsx @@ -0,0 +1,300 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Kvso = () => ( + +) + +export default Kvso diff --git a/src/components/Runners/Laea.tsx b/src/components/Runners/Laea.tsx new file mode 100644 index 000000000..a2007c33a --- /dev/null +++ b/src/components/Runners/Laea.tsx @@ -0,0 +1,113 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Laea = () => ( + +) + +export default Laea diff --git a/src/components/Runners/Ldox.tsx b/src/components/Runners/Ldox.tsx new file mode 100644 index 000000000..1d2bec252 --- /dev/null +++ b/src/components/Runners/Ldox.tsx @@ -0,0 +1,98 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Ldox = () => ( + +) + +export default Ldox diff --git a/src/components/Runners/Ldts.tsx b/src/components/Runners/Ldts.tsx new file mode 100644 index 000000000..1baddcfd6 --- /dev/null +++ b/src/components/Runners/Ldts.tsx @@ -0,0 +1,129 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Ldts = () => ( + +) + +export default Ldts diff --git a/src/components/Runners/Lial.tsx b/src/components/Runners/Lial.tsx new file mode 100644 index 000000000..68a254dbf --- /dev/null +++ b/src/components/Runners/Lial.tsx @@ -0,0 +1,254 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Lial = () => ( + +) + +export default Lial diff --git a/src/components/Runners/Ljjg.tsx b/src/components/Runners/Ljjg.tsx new file mode 100644 index 000000000..76999a27f --- /dev/null +++ b/src/components/Runners/Ljjg.tsx @@ -0,0 +1,97 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Ljjg = () => ( + +) + +export default Ljjg diff --git a/src/components/Runners/Lkwr.tsx b/src/components/Runners/Lkwr.tsx new file mode 100644 index 000000000..53bf6f902 --- /dev/null +++ b/src/components/Runners/Lkwr.tsx @@ -0,0 +1,178 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Lkwr = () => ( + +) + +export default Lkwr diff --git a/src/components/Runners/Loai.tsx b/src/components/Runners/Loai.tsx new file mode 100644 index 000000000..71e0fac1b --- /dev/null +++ b/src/components/Runners/Loai.tsx @@ -0,0 +1,82 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Loai = () => ( + +) + +export default Loai diff --git a/src/components/Runners/Lodr.tsx b/src/components/Runners/Lodr.tsx new file mode 100644 index 000000000..abb4004ed --- /dev/null +++ b/src/components/Runners/Lodr.tsx @@ -0,0 +1,70 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Lodr = () => ( + +) + +export default Lodr diff --git a/src/components/Runners/Lrja.tsx b/src/components/Runners/Lrja.tsx new file mode 100644 index 000000000..2612098d3 --- /dev/null +++ b/src/components/Runners/Lrja.tsx @@ -0,0 +1,97 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Lrja = () => ( + +) + +export default Lrja diff --git a/src/components/Runners/Lrrr.tsx b/src/components/Runners/Lrrr.tsx new file mode 100644 index 000000000..4aa39950b --- /dev/null +++ b/src/components/Runners/Lrrr.tsx @@ -0,0 +1,118 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Lrrr = () => ( + +) + +export default Lrrr diff --git a/src/components/Runners/Luir.tsx b/src/components/Runners/Luir.tsx new file mode 100644 index 000000000..ea59becfb --- /dev/null +++ b/src/components/Runners/Luir.tsx @@ -0,0 +1,519 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Luir = () => ( + +) + +export default Luir diff --git a/src/components/Runners/Lxnu.tsx b/src/components/Runners/Lxnu.tsx new file mode 100644 index 000000000..d54804fe8 --- /dev/null +++ b/src/components/Runners/Lxnu.tsx @@ -0,0 +1,314 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Lxnu = () => ( + +) + +export default Lxnu diff --git a/src/components/Runners/Lygz.tsx b/src/components/Runners/Lygz.tsx new file mode 100644 index 000000000..453e73720 --- /dev/null +++ b/src/components/Runners/Lygz.tsx @@ -0,0 +1,99 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Lygz = () => ( + +) + +export default Lygz diff --git a/src/components/Runners/Lyod.tsx b/src/components/Runners/Lyod.tsx new file mode 100644 index 000000000..494edc2f1 --- /dev/null +++ b/src/components/Runners/Lyod.tsx @@ -0,0 +1,84 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Lyod = () => ( + +) + +export default Lyod diff --git a/src/components/Runners/Mame.tsx b/src/components/Runners/Mame.tsx new file mode 100644 index 000000000..27a3e8150 --- /dev/null +++ b/src/components/Runners/Mame.tsx @@ -0,0 +1,336 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Mame = () => ( + +) + +export default Mame diff --git a/src/components/Runners/Mauj.tsx b/src/components/Runners/Mauj.tsx new file mode 100644 index 000000000..7b024adf2 --- /dev/null +++ b/src/components/Runners/Mauj.tsx @@ -0,0 +1,190 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Mauj = () => ( + +) + +export default Mauj diff --git a/src/components/Runners/Mbrh.tsx b/src/components/Runners/Mbrh.tsx new file mode 100644 index 000000000..9bd1332f4 --- /dev/null +++ b/src/components/Runners/Mbrh.tsx @@ -0,0 +1,69 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Mbrh = () => ( + +) + +export default Mbrh diff --git a/src/components/Runners/Mhgm.tsx b/src/components/Runners/Mhgm.tsx new file mode 100644 index 000000000..12a75adb7 --- /dev/null +++ b/src/components/Runners/Mhgm.tsx @@ -0,0 +1,85 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Mhgm = () => ( + +) + +export default Mhgm diff --git a/src/components/Runners/Mhwq.tsx b/src/components/Runners/Mhwq.tsx new file mode 100644 index 000000000..5484b9260 --- /dev/null +++ b/src/components/Runners/Mhwq.tsx @@ -0,0 +1,97 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Mhwq = () => ( + +) + +export default Mhwq diff --git a/src/components/Runners/Miez.tsx b/src/components/Runners/Miez.tsx new file mode 100644 index 000000000..05e7ec2d6 --- /dev/null +++ b/src/components/Runners/Miez.tsx @@ -0,0 +1,68 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Miez = () => ( + +) + +export default Miez diff --git a/src/components/Runners/Mihy.tsx b/src/components/Runners/Mihy.tsx new file mode 100644 index 000000000..ec1e6230d --- /dev/null +++ b/src/components/Runners/Mihy.tsx @@ -0,0 +1,1484 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Mihy = () => ( + +) + +export default Mihy diff --git a/src/components/Runners/Mnfh.tsx b/src/components/Runners/Mnfh.tsx new file mode 100644 index 000000000..1a8c8a722 --- /dev/null +++ b/src/components/Runners/Mnfh.tsx @@ -0,0 +1,6771 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Mnfh = () => ( + +) + +export default Mnfh diff --git a/src/components/Runners/Mpal.tsx b/src/components/Runners/Mpal.tsx new file mode 100644 index 000000000..d4be64fa6 --- /dev/null +++ b/src/components/Runners/Mpal.tsx @@ -0,0 +1,100 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Mpal = () => ( + +) + +export default Mpal diff --git a/src/components/Runners/Mrky.tsx b/src/components/Runners/Mrky.tsx new file mode 100644 index 000000000..62fa73365 --- /dev/null +++ b/src/components/Runners/Mrky.tsx @@ -0,0 +1,236 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Mrky = () => ( + +) + +export default Mrky diff --git a/src/components/Runners/Mscz.tsx b/src/components/Runners/Mscz.tsx new file mode 100644 index 000000000..0e54f4f68 --- /dev/null +++ b/src/components/Runners/Mscz.tsx @@ -0,0 +1,52 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Mscz = () => ( + +) + +export default Mscz diff --git a/src/components/Runners/Msiw.tsx b/src/components/Runners/Msiw.tsx new file mode 100644 index 000000000..173687edc --- /dev/null +++ b/src/components/Runners/Msiw.tsx @@ -0,0 +1,135 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Msiw = () => ( + +) + +export default Msiw diff --git a/src/components/Runners/News.tsx b/src/components/Runners/News.tsx new file mode 100644 index 000000000..bd5b9fab6 --- /dev/null +++ b/src/components/Runners/News.tsx @@ -0,0 +1,176 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const News = () => ( + +) + +export default News diff --git a/src/components/Runners/Nfkp.tsx b/src/components/Runners/Nfkp.tsx new file mode 100644 index 000000000..ec1941b9d --- /dev/null +++ b/src/components/Runners/Nfkp.tsx @@ -0,0 +1,582 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Nfkp = () => ( + +) + +export default Nfkp diff --git a/src/components/Runners/Ngus.tsx b/src/components/Runners/Ngus.tsx new file mode 100644 index 000000000..39ee93ed4 --- /dev/null +++ b/src/components/Runners/Ngus.tsx @@ -0,0 +1,18357 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Ngus = () => ( + +) + +export default Ngus diff --git a/src/components/Runners/Nicg.tsx b/src/components/Runners/Nicg.tsx new file mode 100644 index 000000000..afe9581d6 --- /dev/null +++ b/src/components/Runners/Nicg.tsx @@ -0,0 +1,81 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Nicg = () => ( + +) + +export default Nicg diff --git a/src/components/Runners/Nlxe.tsx b/src/components/Runners/Nlxe.tsx new file mode 100644 index 000000000..ab3e0d8c9 --- /dev/null +++ b/src/components/Runners/Nlxe.tsx @@ -0,0 +1,190 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Nlxe = () => ( + +) + +export default Nlxe diff --git a/src/components/Runners/Nmoc.tsx b/src/components/Runners/Nmoc.tsx new file mode 100644 index 000000000..89cf844cd --- /dev/null +++ b/src/components/Runners/Nmoc.tsx @@ -0,0 +1,267 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Nmoc = () => ( + +) + +export default Nmoc diff --git a/src/components/Runners/Nnhc.tsx b/src/components/Runners/Nnhc.tsx new file mode 100644 index 000000000..9a0e9b4b4 --- /dev/null +++ b/src/components/Runners/Nnhc.tsx @@ -0,0 +1,321 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Nnhc = () => ( + +) + +export default Nnhc diff --git a/src/components/Runners/Npfx.tsx b/src/components/Runners/Npfx.tsx new file mode 100644 index 000000000..48d116a24 --- /dev/null +++ b/src/components/Runners/Npfx.tsx @@ -0,0 +1,99 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Npfx = () => ( + +) + +export default Npfx diff --git a/src/components/Runners/Nric.tsx b/src/components/Runners/Nric.tsx new file mode 100644 index 000000000..139e1e33a --- /dev/null +++ b/src/components/Runners/Nric.tsx @@ -0,0 +1,52 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Nric = () => ( + +) + +export default Nric diff --git a/src/components/Runners/Oiwu.tsx b/src/components/Runners/Oiwu.tsx new file mode 100644 index 000000000..3fb267f0a --- /dev/null +++ b/src/components/Runners/Oiwu.tsx @@ -0,0 +1,208 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Oiwu = () => ( + +) + +export default Oiwu diff --git a/src/components/Runners/Ojma.tsx b/src/components/Runners/Ojma.tsx new file mode 100644 index 000000000..243d07ec5 --- /dev/null +++ b/src/components/Runners/Ojma.tsx @@ -0,0 +1,53 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Ojma = () => ( + +) + +export default Ojma diff --git a/src/components/Runners/Olef.tsx b/src/components/Runners/Olef.tsx new file mode 100644 index 000000000..fa71d942e --- /dev/null +++ b/src/components/Runners/Olef.tsx @@ -0,0 +1,51 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Olef = () => ( + +) + +export default Olef diff --git a/src/components/Runners/Omlc.tsx b/src/components/Runners/Omlc.tsx new file mode 100644 index 000000000..643b0e503 --- /dev/null +++ b/src/components/Runners/Omlc.tsx @@ -0,0 +1,88 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Omlc = () => ( + +) + +export default Omlc diff --git a/src/components/Runners/Orhx.tsx b/src/components/Runners/Orhx.tsx new file mode 100644 index 000000000..5bffe592a --- /dev/null +++ b/src/components/Runners/Orhx.tsx @@ -0,0 +1,336 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Orhx = () => ( + +) + +export default Orhx diff --git a/src/components/Runners/Osih.tsx b/src/components/Runners/Osih.tsx new file mode 100644 index 000000000..4593b56f5 --- /dev/null +++ b/src/components/Runners/Osih.tsx @@ -0,0 +1,319 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Osih = () => ( + +) + +export default Osih diff --git a/src/components/Runners/Osqg.tsx b/src/components/Runners/Osqg.tsx new file mode 100644 index 000000000..018ca20e1 --- /dev/null +++ b/src/components/Runners/Osqg.tsx @@ -0,0 +1,52 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Osqg = () => ( + +) + +export default Osqg diff --git a/src/components/Runners/Osqo.tsx b/src/components/Runners/Osqo.tsx new file mode 100644 index 000000000..cec7b1c76 --- /dev/null +++ b/src/components/Runners/Osqo.tsx @@ -0,0 +1,52 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Osqo = () => ( + +) + +export default Osqo diff --git a/src/components/Runners/Owcy.tsx b/src/components/Runners/Owcy.tsx new file mode 100644 index 000000000..44fe55b99 --- /dev/null +++ b/src/components/Runners/Owcy.tsx @@ -0,0 +1,51 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Owcy = () => ( + +) + +export default Owcy diff --git a/src/components/Runners/Ozbe.tsx b/src/components/Runners/Ozbe.tsx new file mode 100644 index 000000000..af12c8d1d --- /dev/null +++ b/src/components/Runners/Ozbe.tsx @@ -0,0 +1,133 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Ozbe = () => ( + +) + +export default Ozbe diff --git a/src/components/Runners/Pbgd.tsx b/src/components/Runners/Pbgd.tsx new file mode 100644 index 000000000..173ef2626 --- /dev/null +++ b/src/components/Runners/Pbgd.tsx @@ -0,0 +1,383 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Pbgd = () => ( + +) + +export default Pbgd diff --git a/src/components/Runners/Peoq.tsx b/src/components/Runners/Peoq.tsx new file mode 100644 index 000000000..b072e9a77 --- /dev/null +++ b/src/components/Runners/Peoq.tsx @@ -0,0 +1,1797 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Peoq = () => ( + +) + +export default Peoq diff --git a/src/components/Runners/Pgtx.tsx b/src/components/Runners/Pgtx.tsx new file mode 100644 index 000000000..abfd8ddcf --- /dev/null +++ b/src/components/Runners/Pgtx.tsx @@ -0,0 +1,15443 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Pgtx = () => ( + +) + +export default Pgtx diff --git a/src/components/Runners/Plts.tsx b/src/components/Runners/Plts.tsx new file mode 100644 index 000000000..ccf6e30e6 --- /dev/null +++ b/src/components/Runners/Plts.tsx @@ -0,0 +1,2601 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Plts = () => ( + +) + +export default Plts diff --git a/src/components/Runners/Plxd.tsx b/src/components/Runners/Plxd.tsx new file mode 100644 index 000000000..624f0067c --- /dev/null +++ b/src/components/Runners/Plxd.tsx @@ -0,0 +1,559 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Plxd = () => ( + +) + +export default Plxd diff --git a/src/components/Runners/Pnob.tsx b/src/components/Runners/Pnob.tsx new file mode 100644 index 000000000..5805f63e1 --- /dev/null +++ b/src/components/Runners/Pnob.tsx @@ -0,0 +1,252 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Pnob = () => ( + +) + +export default Pnob diff --git a/src/components/Runners/Pnux.tsx b/src/components/Runners/Pnux.tsx new file mode 100644 index 000000000..01d688afd --- /dev/null +++ b/src/components/Runners/Pnux.tsx @@ -0,0 +1,453 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Pnux = () => ( + +) + +export default Pnux diff --git a/src/components/Runners/Pqfs.tsx b/src/components/Runners/Pqfs.tsx new file mode 100644 index 000000000..4dc8cbc51 --- /dev/null +++ b/src/components/Runners/Pqfs.tsx @@ -0,0 +1,100 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Pqfs = () => ( + +) + +export default Pqfs diff --git a/src/components/Runners/Psqo.tsx b/src/components/Runners/Psqo.tsx new file mode 100644 index 000000000..3d3d8ff3a --- /dev/null +++ b/src/components/Runners/Psqo.tsx @@ -0,0 +1,87 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Psqo = () => ( + +) + +export default Psqo diff --git a/src/components/Runners/Pzui.tsx b/src/components/Runners/Pzui.tsx new file mode 100644 index 000000000..431752898 --- /dev/null +++ b/src/components/Runners/Pzui.tsx @@ -0,0 +1,6263 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Pzui = () => ( + +) + +export default Pzui diff --git a/src/components/Runners/Pzvr.tsx b/src/components/Runners/Pzvr.tsx new file mode 100644 index 000000000..c8cf87eb2 --- /dev/null +++ b/src/components/Runners/Pzvr.tsx @@ -0,0 +1,125 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Pzvr = () => ( + +) + +export default Pzvr diff --git a/src/components/Runners/Pzwe.tsx b/src/components/Runners/Pzwe.tsx new file mode 100644 index 000000000..aa2faad86 --- /dev/null +++ b/src/components/Runners/Pzwe.tsx @@ -0,0 +1,331 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Pzwe = () => ( + +) + +export default Pzwe diff --git a/src/components/Runners/Qdkf.tsx b/src/components/Runners/Qdkf.tsx new file mode 100644 index 000000000..40a4af340 --- /dev/null +++ b/src/components/Runners/Qdkf.tsx @@ -0,0 +1,252 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Qdkf = () => ( + +) + +export default Qdkf diff --git a/src/components/Runners/Qgun.tsx b/src/components/Runners/Qgun.tsx new file mode 100644 index 000000000..761b1d731 --- /dev/null +++ b/src/components/Runners/Qgun.tsx @@ -0,0 +1,329 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Qgun = () => ( + +) + +export default Qgun diff --git a/src/components/Runners/Qifg.tsx b/src/components/Runners/Qifg.tsx new file mode 100644 index 000000000..dcedc1bfb --- /dev/null +++ b/src/components/Runners/Qifg.tsx @@ -0,0 +1,285 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Qifg = () => ( + +) + +export default Qifg diff --git a/src/components/Runners/Qltx.tsx b/src/components/Runners/Qltx.tsx new file mode 100644 index 000000000..924ba5c60 --- /dev/null +++ b/src/components/Runners/Qltx.tsx @@ -0,0 +1,344 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Qltx = () => ( + +) + +export default Qltx diff --git a/src/components/Runners/Qmof.tsx b/src/components/Runners/Qmof.tsx new file mode 100644 index 000000000..e6ee2e68a --- /dev/null +++ b/src/components/Runners/Qmof.tsx @@ -0,0 +1,160 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Qmof = () => ( + +) + +export default Qmof diff --git a/src/components/Runners/Qoms.tsx b/src/components/Runners/Qoms.tsx new file mode 100644 index 000000000..cc43234f3 --- /dev/null +++ b/src/components/Runners/Qoms.tsx @@ -0,0 +1,85 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Qoms = () => ( + +) + +export default Qoms diff --git a/src/components/Runners/Qpjt.tsx b/src/components/Runners/Qpjt.tsx new file mode 100644 index 000000000..51572c508 --- /dev/null +++ b/src/components/Runners/Qpjt.tsx @@ -0,0 +1,98 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Qpjt = () => ( + +) + +export default Qpjt diff --git a/src/components/Runners/Qpkm.tsx b/src/components/Runners/Qpkm.tsx new file mode 100644 index 000000000..651848c99 --- /dev/null +++ b/src/components/Runners/Qpkm.tsx @@ -0,0 +1,68 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Qpkm = () => ( + +) + +export default Qpkm diff --git a/src/components/Runners/Qsfp.tsx b/src/components/Runners/Qsfp.tsx new file mode 100644 index 000000000..656ad0cec --- /dev/null +++ b/src/components/Runners/Qsfp.tsx @@ -0,0 +1,129 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Qsfp = () => ( + +) + +export default Qsfp diff --git a/src/components/Runners/Qvxe.tsx b/src/components/Runners/Qvxe.tsx new file mode 100644 index 000000000..090ee2c34 --- /dev/null +++ b/src/components/Runners/Qvxe.tsx @@ -0,0 +1,113 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Qvxe = () => ( + +) + +export default Qvxe diff --git a/src/components/Runners/Qwke.tsx b/src/components/Runners/Qwke.tsx new file mode 100644 index 000000000..3dc402f96 --- /dev/null +++ b/src/components/Runners/Qwke.tsx @@ -0,0 +1,99 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Qwke = () => ( + +) + +export default Qwke diff --git a/src/components/Runners/Qxgl.tsx b/src/components/Runners/Qxgl.tsx new file mode 100644 index 000000000..aaa02b8a4 --- /dev/null +++ b/src/components/Runners/Qxgl.tsx @@ -0,0 +1,702 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Qxgl = () => ( + +) + +export default Qxgl diff --git a/src/components/Runners/Rceu.tsx b/src/components/Runners/Rceu.tsx new file mode 100644 index 000000000..846bcdce0 --- /dev/null +++ b/src/components/Runners/Rceu.tsx @@ -0,0 +1,115 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Rceu = () => ( + +) + +export default Rceu diff --git a/src/components/Runners/Repd.tsx b/src/components/Runners/Repd.tsx new file mode 100644 index 000000000..1d42da046 --- /dev/null +++ b/src/components/Runners/Repd.tsx @@ -0,0 +1,147 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Repd = () => ( + +) + +export default Repd diff --git a/src/components/Runners/Rmsd.tsx b/src/components/Runners/Rmsd.tsx new file mode 100644 index 000000000..78eaf9aab --- /dev/null +++ b/src/components/Runners/Rmsd.tsx @@ -0,0 +1,163 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Rmsd = () => ( + +) + +export default Rmsd diff --git a/src/components/Runners/Rome.tsx b/src/components/Runners/Rome.tsx new file mode 100644 index 000000000..07a24051b --- /dev/null +++ b/src/components/Runners/Rome.tsx @@ -0,0 +1,8099 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Rome = () => ( + +) + +export default Rome diff --git a/src/components/Runners/Rqdn.tsx b/src/components/Runners/Rqdn.tsx new file mode 100644 index 000000000..7001ab5cf --- /dev/null +++ b/src/components/Runners/Rqdn.tsx @@ -0,0 +1,13372 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Rqdn = () => ( + +) + +export default Rqdn diff --git a/src/components/Runners/Rqjo.tsx b/src/components/Runners/Rqjo.tsx new file mode 100644 index 000000000..dbd667d81 --- /dev/null +++ b/src/components/Runners/Rqjo.tsx @@ -0,0 +1,133 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Rqjo = () => ( + +) + +export default Rqjo diff --git a/src/components/Runners/Rreb.tsx b/src/components/Runners/Rreb.tsx new file mode 100644 index 000000000..fb557c452 --- /dev/null +++ b/src/components/Runners/Rreb.tsx @@ -0,0 +1,69 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Rreb = () => ( + +) + +export default Rreb diff --git a/src/components/Runners/Rzbq.tsx b/src/components/Runners/Rzbq.tsx new file mode 100644 index 000000000..6bd70a477 --- /dev/null +++ b/src/components/Runners/Rzbq.tsx @@ -0,0 +1,2463 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Rzbq = () => ( + +) + +export default Rzbq diff --git a/src/components/Runners/Sfop.tsx b/src/components/Runners/Sfop.tsx new file mode 100644 index 000000000..314857b74 --- /dev/null +++ b/src/components/Runners/Sfop.tsx @@ -0,0 +1,129 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Sfop = () => ( + +) + +export default Sfop diff --git a/src/components/Runners/Sgfj.tsx b/src/components/Runners/Sgfj.tsx new file mode 100644 index 000000000..bee41a4ae --- /dev/null +++ b/src/components/Runners/Sgfj.tsx @@ -0,0 +1,133 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Sgfj = () => ( + +) + +export default Sgfj diff --git a/src/components/Runners/Sisn.tsx b/src/components/Runners/Sisn.tsx new file mode 100644 index 000000000..b2cbc2097 --- /dev/null +++ b/src/components/Runners/Sisn.tsx @@ -0,0 +1,113 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Sisn = () => ( + +) + +export default Sisn diff --git a/src/components/Runners/Skzv.tsx b/src/components/Runners/Skzv.tsx new file mode 100644 index 000000000..65759101c --- /dev/null +++ b/src/components/Runners/Skzv.tsx @@ -0,0 +1,130 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Skzv = () => ( + +) + +export default Skzv diff --git a/src/components/Runners/Slyk.tsx b/src/components/Runners/Slyk.tsx new file mode 100644 index 000000000..dbd44323b --- /dev/null +++ b/src/components/Runners/Slyk.tsx @@ -0,0 +1,97 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Slyk = () => ( + +) + +export default Slyk diff --git a/src/components/Runners/Snsr.tsx b/src/components/Runners/Snsr.tsx new file mode 100644 index 000000000..fcdefbf43 --- /dev/null +++ b/src/components/Runners/Snsr.tsx @@ -0,0 +1,780 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Snsr = () => ( + +) + +export default Snsr diff --git a/src/components/Runners/Sojz.tsx b/src/components/Runners/Sojz.tsx new file mode 100644 index 000000000..1001a6d09 --- /dev/null +++ b/src/components/Runners/Sojz.tsx @@ -0,0 +1,288 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Sojz = () => ( + +) + +export default Sojz diff --git a/src/components/Runners/Ssns.tsx b/src/components/Runners/Ssns.tsx new file mode 100644 index 000000000..2bc13e8b3 --- /dev/null +++ b/src/components/Runners/Ssns.tsx @@ -0,0 +1,292 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Ssns = () => ( + +) + +export default Ssns diff --git a/src/components/Runners/Stio.tsx b/src/components/Runners/Stio.tsx new file mode 100644 index 000000000..7cb50da48 --- /dev/null +++ b/src/components/Runners/Stio.tsx @@ -0,0 +1,97 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Stio = () => ( + +) + +export default Stio diff --git a/src/components/Runners/Syfp.tsx b/src/components/Runners/Syfp.tsx new file mode 100644 index 000000000..6fdbfd553 --- /dev/null +++ b/src/components/Runners/Syfp.tsx @@ -0,0 +1,429 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Syfp = () => ( + +) + +export default Syfp diff --git a/src/components/Runners/Syhh.tsx b/src/components/Runners/Syhh.tsx new file mode 100644 index 000000000..7e7d473a2 --- /dev/null +++ b/src/components/Runners/Syhh.tsx @@ -0,0 +1,3158 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Syhh = () => ( + +) + +export default Syhh diff --git a/src/components/Runners/Szou.tsx b/src/components/Runners/Szou.tsx new file mode 100644 index 000000000..614569bbf --- /dev/null +++ b/src/components/Runners/Szou.tsx @@ -0,0 +1,323 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Szou = () => ( + +) + +export default Szou diff --git a/src/components/Runners/Tboe.tsx b/src/components/Runners/Tboe.tsx new file mode 100644 index 000000000..a3f36661f --- /dev/null +++ b/src/components/Runners/Tboe.tsx @@ -0,0 +1,292 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Tboe = () => ( + +) + +export default Tboe diff --git a/src/components/Runners/Tdau.tsx b/src/components/Runners/Tdau.tsx new file mode 100644 index 000000000..65133a449 --- /dev/null +++ b/src/components/Runners/Tdau.tsx @@ -0,0 +1,163 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Tdau = () => ( + +) + +export default Tdau diff --git a/src/components/Runners/Tfho.tsx b/src/components/Runners/Tfho.tsx new file mode 100644 index 000000000..8fe6837cb --- /dev/null +++ b/src/components/Runners/Tfho.tsx @@ -0,0 +1,97 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Tfho = () => ( + +) + +export default Tfho diff --git a/src/components/Runners/Tiok.tsx b/src/components/Runners/Tiok.tsx new file mode 100644 index 000000000..118413627 --- /dev/null +++ b/src/components/Runners/Tiok.tsx @@ -0,0 +1,81 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Tiok = () => ( + +) + +export default Tiok diff --git a/src/components/Runners/Tkbr.tsx b/src/components/Runners/Tkbr.tsx new file mode 100644 index 000000000..135344903 --- /dev/null +++ b/src/components/Runners/Tkbr.tsx @@ -0,0 +1,208 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Tkbr = () => ( + +) + +export default Tkbr diff --git a/src/components/Runners/Tkqr.tsx b/src/components/Runners/Tkqr.tsx new file mode 100644 index 000000000..c38dd3bdd --- /dev/null +++ b/src/components/Runners/Tkqr.tsx @@ -0,0 +1,220 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Tkqr = () => ( + +) + +export default Tkqr diff --git a/src/components/Runners/Tntc.tsx b/src/components/Runners/Tntc.tsx new file mode 100644 index 000000000..0cc2029bc --- /dev/null +++ b/src/components/Runners/Tntc.tsx @@ -0,0 +1,100 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Tntc = () => ( + +) + +export default Tntc diff --git a/src/components/Runners/Ttvy.tsx b/src/components/Runners/Ttvy.tsx new file mode 100644 index 000000000..05e419628 --- /dev/null +++ b/src/components/Runners/Ttvy.tsx @@ -0,0 +1,202 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Ttvy = () => ( + +) + +export default Ttvy diff --git a/src/components/Runners/Tuqr.tsx b/src/components/Runners/Tuqr.tsx new file mode 100644 index 000000000..6adb5f356 --- /dev/null +++ b/src/components/Runners/Tuqr.tsx @@ -0,0 +1,52 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Tuqr = () => ( + +) + +export default Tuqr diff --git a/src/components/Runners/Udic.tsx b/src/components/Runners/Udic.tsx new file mode 100644 index 000000000..1e6fa9727 --- /dev/null +++ b/src/components/Runners/Udic.tsx @@ -0,0 +1,115 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Udic = () => ( + +) + +export default Udic diff --git a/src/components/Runners/Udvh.tsx b/src/components/Runners/Udvh.tsx new file mode 100644 index 000000000..b828d0add --- /dev/null +++ b/src/components/Runners/Udvh.tsx @@ -0,0 +1,131 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Udvh = () => ( + +) + +export default Udvh diff --git a/src/components/Runners/Uemm.tsx b/src/components/Runners/Uemm.tsx new file mode 100644 index 000000000..aa78034b4 --- /dev/null +++ b/src/components/Runners/Uemm.tsx @@ -0,0 +1,52 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Uemm = () => ( + +) + +export default Uemm diff --git a/src/components/Runners/Ufyc.tsx b/src/components/Runners/Ufyc.tsx new file mode 100644 index 000000000..785748b25 --- /dev/null +++ b/src/components/Runners/Ufyc.tsx @@ -0,0 +1,85 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Ufyc = () => ( + +) + +export default Ufyc diff --git a/src/components/Runners/Ufze.tsx b/src/components/Runners/Ufze.tsx new file mode 100644 index 000000000..5c27c6143 --- /dev/null +++ b/src/components/Runners/Ufze.tsx @@ -0,0 +1,53 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Ufze = () => ( + +) + +export default Ufze diff --git a/src/components/Runners/Uitu.tsx b/src/components/Runners/Uitu.tsx new file mode 100644 index 000000000..c079ce140 --- /dev/null +++ b/src/components/Runners/Uitu.tsx @@ -0,0 +1,52 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Uitu = () => ( + +) + +export default Uitu diff --git a/src/components/Runners/Ujfj.tsx b/src/components/Runners/Ujfj.tsx new file mode 100644 index 000000000..ca62f5122 --- /dev/null +++ b/src/components/Runners/Ujfj.tsx @@ -0,0 +1,184 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Ujfj = () => ( + +) + +export default Ujfj diff --git a/src/components/Runners/Umce.tsx b/src/components/Runners/Umce.tsx new file mode 100644 index 000000000..dccc3f28d --- /dev/null +++ b/src/components/Runners/Umce.tsx @@ -0,0 +1,209 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Umce = () => ( + +) + +export default Umce diff --git a/src/components/Runners/Unck.tsx b/src/components/Runners/Unck.tsx new file mode 100644 index 000000000..7a2604915 --- /dev/null +++ b/src/components/Runners/Unck.tsx @@ -0,0 +1,8812 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Unck = () => ( + +) + +export default Unck diff --git a/src/components/Runners/Uqpp.tsx b/src/components/Runners/Uqpp.tsx new file mode 100644 index 000000000..75a8f2131 --- /dev/null +++ b/src/components/Runners/Uqpp.tsx @@ -0,0 +1,208 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Uqpp = () => ( + +) + +export default Uqpp diff --git a/src/components/Runners/Uqts.tsx b/src/components/Runners/Uqts.tsx new file mode 100644 index 000000000..ff0204b82 --- /dev/null +++ b/src/components/Runners/Uqts.tsx @@ -0,0 +1,254 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Uqts = () => ( + +) + +export default Uqts diff --git a/src/components/Runners/Urhc.tsx b/src/components/Runners/Urhc.tsx new file mode 100644 index 000000000..5f6477063 --- /dev/null +++ b/src/components/Runners/Urhc.tsx @@ -0,0 +1,52 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Urhc = () => ( + +) + +export default Urhc diff --git a/src/components/Runners/Usta.tsx b/src/components/Runners/Usta.tsx new file mode 100644 index 000000000..3071155c7 --- /dev/null +++ b/src/components/Runners/Usta.tsx @@ -0,0 +1,495 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Usta = () => ( + +) + +export default Usta diff --git a/src/components/Runners/Uwma.tsx b/src/components/Runners/Uwma.tsx new file mode 100644 index 000000000..f5f612cb8 --- /dev/null +++ b/src/components/Runners/Uwma.tsx @@ -0,0 +1,164 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Uwma = () => ( + +) + +export default Uwma diff --git a/src/components/Runners/Vegw.tsx b/src/components/Runners/Vegw.tsx new file mode 100644 index 000000000..2a06ff176 --- /dev/null +++ b/src/components/Runners/Vegw.tsx @@ -0,0 +1,116 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Vegw = () => ( + +) + +export default Vegw diff --git a/src/components/Runners/Vjaa.tsx b/src/components/Runners/Vjaa.tsx new file mode 100644 index 000000000..19a58fcd7 --- /dev/null +++ b/src/components/Runners/Vjaa.tsx @@ -0,0 +1,84 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Vjaa = () => ( + +) + +export default Vjaa diff --git a/src/components/Runners/Vkpm.tsx b/src/components/Runners/Vkpm.tsx new file mode 100644 index 000000000..6ca52f6b0 --- /dev/null +++ b/src/components/Runners/Vkpm.tsx @@ -0,0 +1,274 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Vkpm = () => ( + +) + +export default Vkpm diff --git a/src/components/Runners/Vpjw.tsx b/src/components/Runners/Vpjw.tsx new file mode 100644 index 000000000..d419989cb --- /dev/null +++ b/src/components/Runners/Vpjw.tsx @@ -0,0 +1,672 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Vpjw = () => ( + +) + +export default Vpjw diff --git a/src/components/Runners/Vpmj.tsx b/src/components/Runners/Vpmj.tsx new file mode 100644 index 000000000..0269b2bfc --- /dev/null +++ b/src/components/Runners/Vpmj.tsx @@ -0,0 +1,161 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Vpmj = () => ( + +) + +export default Vpmj diff --git a/src/components/Runners/Vqcw.tsx b/src/components/Runners/Vqcw.tsx new file mode 100644 index 000000000..8f8eab7d9 --- /dev/null +++ b/src/components/Runners/Vqcw.tsx @@ -0,0 +1,390 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Vqcw = () => ( + +) + +export default Vqcw diff --git a/src/components/Runners/Vrvl.tsx b/src/components/Runners/Vrvl.tsx new file mode 100644 index 000000000..9969aaf61 --- /dev/null +++ b/src/components/Runners/Vrvl.tsx @@ -0,0 +1,113 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Vrvl = () => ( + +) + +export default Vrvl diff --git a/src/components/Runners/Vrwt.tsx b/src/components/Runners/Vrwt.tsx new file mode 100644 index 000000000..a2258aed0 --- /dev/null +++ b/src/components/Runners/Vrwt.tsx @@ -0,0 +1,70 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Vrwt = () => ( + +) + +export default Vrwt diff --git a/src/components/Runners/Vvjn.tsx b/src/components/Runners/Vvjn.tsx new file mode 100644 index 000000000..41afc24cd --- /dev/null +++ b/src/components/Runners/Vvjn.tsx @@ -0,0 +1,52 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Vvjn = () => ( + +) + +export default Vvjn diff --git a/src/components/Runners/Vxnm.tsx b/src/components/Runners/Vxnm.tsx new file mode 100644 index 000000000..7acceead1 --- /dev/null +++ b/src/components/Runners/Vxnm.tsx @@ -0,0 +1,85 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Vxnm = () => ( + +) + +export default Vxnm diff --git a/src/components/Runners/Wafy.tsx b/src/components/Runners/Wafy.tsx new file mode 100644 index 000000000..de5d660f9 --- /dev/null +++ b/src/components/Runners/Wafy.tsx @@ -0,0 +1,2327 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Wafy = () => ( + +) + +export default Wafy diff --git a/src/components/Runners/Wbpx.tsx b/src/components/Runners/Wbpx.tsx new file mode 100644 index 000000000..3bca3a58a --- /dev/null +++ b/src/components/Runners/Wbpx.tsx @@ -0,0 +1,113 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Wbpx = () => ( + +) + +export default Wbpx diff --git a/src/components/Runners/Wbru.tsx b/src/components/Runners/Wbru.tsx new file mode 100644 index 000000000..98d3de93e --- /dev/null +++ b/src/components/Runners/Wbru.tsx @@ -0,0 +1,132 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Wbru = () => ( + +) + +export default Wbru diff --git a/src/components/Runners/Wcsz.tsx b/src/components/Runners/Wcsz.tsx new file mode 100644 index 000000000..7febcbe7c --- /dev/null +++ b/src/components/Runners/Wcsz.tsx @@ -0,0 +1,87 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Wcsz = () => ( + +) + +export default Wcsz diff --git a/src/components/Runners/Wcwd.tsx b/src/components/Runners/Wcwd.tsx new file mode 100644 index 000000000..14ff5d697 --- /dev/null +++ b/src/components/Runners/Wcwd.tsx @@ -0,0 +1,319 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Wcwd = () => ( + +) + +export default Wcwd diff --git a/src/components/Runners/Wdol.tsx b/src/components/Runners/Wdol.tsx new file mode 100644 index 000000000..e5d50c8d7 --- /dev/null +++ b/src/components/Runners/Wdol.tsx @@ -0,0 +1,445 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Wdol = () => ( + +) + +export default Wdol diff --git a/src/components/Runners/Woft.tsx b/src/components/Runners/Woft.tsx new file mode 100644 index 000000000..59055a05f --- /dev/null +++ b/src/components/Runners/Woft.tsx @@ -0,0 +1,123 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Woft = () => ( + +) + +export default Woft diff --git a/src/components/Runners/Wqdb.tsx b/src/components/Runners/Wqdb.tsx new file mode 100644 index 000000000..2c86f0b5e --- /dev/null +++ b/src/components/Runners/Wqdb.tsx @@ -0,0 +1,123 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Wqdb = () => ( + +) + +export default Wqdb diff --git a/src/components/Runners/Wunw.tsx b/src/components/Runners/Wunw.tsx new file mode 100644 index 000000000..a012f574d --- /dev/null +++ b/src/components/Runners/Wunw.tsx @@ -0,0 +1,299 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Wunw = () => ( + +) + +export default Wunw diff --git a/src/components/Runners/Wxqy.tsx b/src/components/Runners/Wxqy.tsx new file mode 100644 index 000000000..9f35ef632 --- /dev/null +++ b/src/components/Runners/Wxqy.tsx @@ -0,0 +1,52 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Wxqy = () => ( + +) + +export default Wxqy diff --git a/src/components/Runners/Xcnu.tsx b/src/components/Runners/Xcnu.tsx new file mode 100644 index 000000000..08b56a2ec --- /dev/null +++ b/src/components/Runners/Xcnu.tsx @@ -0,0 +1,120 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Xcnu = () => ( + +) + +export default Xcnu diff --git a/src/components/Runners/Xefx.tsx b/src/components/Runners/Xefx.tsx new file mode 100644 index 000000000..53cd7c3a9 --- /dev/null +++ b/src/components/Runners/Xefx.tsx @@ -0,0 +1,259 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Xefx = () => ( + +) + +export default Xefx diff --git a/src/components/Runners/Xekr.tsx b/src/components/Runners/Xekr.tsx new file mode 100644 index 000000000..00fb642c2 --- /dev/null +++ b/src/components/Runners/Xekr.tsx @@ -0,0 +1,53 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Xekr = () => ( + +) + +export default Xekr diff --git a/src/components/Runners/Xemt.tsx b/src/components/Runners/Xemt.tsx new file mode 100644 index 000000000..3de225cfd --- /dev/null +++ b/src/components/Runners/Xemt.tsx @@ -0,0 +1,129 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Xemt = () => ( + +) + +export default Xemt diff --git a/src/components/Runners/Xgei.tsx b/src/components/Runners/Xgei.tsx new file mode 100644 index 000000000..832545a41 --- /dev/null +++ b/src/components/Runners/Xgei.tsx @@ -0,0 +1,160 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Xgei = () => ( + +) + +export default Xgei diff --git a/src/components/Runners/Xhbi.tsx b/src/components/Runners/Xhbi.tsx new file mode 100644 index 000000000..cf3c58f02 --- /dev/null +++ b/src/components/Runners/Xhbi.tsx @@ -0,0 +1,130 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Xhbi = () => ( + +) + +export default Xhbi diff --git a/src/components/Runners/Xhwx.tsx b/src/components/Runners/Xhwx.tsx new file mode 100644 index 000000000..e671a1743 --- /dev/null +++ b/src/components/Runners/Xhwx.tsx @@ -0,0 +1,622 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Xhwx = () => ( + +) + +export default Xhwx diff --git a/src/components/Runners/Xjae.tsx b/src/components/Runners/Xjae.tsx new file mode 100644 index 000000000..e33097de9 --- /dev/null +++ b/src/components/Runners/Xjae.tsx @@ -0,0 +1,68 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Xjae = () => ( + +) + +export default Xjae diff --git a/src/components/Runners/Xpvh.tsx b/src/components/Runners/Xpvh.tsx new file mode 100644 index 000000000..f900b4ffb --- /dev/null +++ b/src/components/Runners/Xpvh.tsx @@ -0,0 +1,81 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Xpvh = () => ( + +) + +export default Xpvh diff --git a/src/components/Runners/Xrzv.tsx b/src/components/Runners/Xrzv.tsx new file mode 100644 index 000000000..9aab1c41a --- /dev/null +++ b/src/components/Runners/Xrzv.tsx @@ -0,0 +1,176 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Xrzv = () => ( + +) + +export default Xrzv diff --git a/src/components/Runners/Xsby.tsx b/src/components/Runners/Xsby.tsx new file mode 100644 index 000000000..fb1f2e9af --- /dev/null +++ b/src/components/Runners/Xsby.tsx @@ -0,0 +1,53 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Xsby = () => ( + +) + +export default Xsby diff --git a/src/components/Runners/Xsgz.tsx b/src/components/Runners/Xsgz.tsx new file mode 100644 index 000000000..454ab632e --- /dev/null +++ b/src/components/Runners/Xsgz.tsx @@ -0,0 +1,125 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Xsgz = () => ( + +) + +export default Xsgz diff --git a/src/components/Runners/Xsve.tsx b/src/components/Runners/Xsve.tsx new file mode 100644 index 000000000..9c00f3a53 --- /dev/null +++ b/src/components/Runners/Xsve.tsx @@ -0,0 +1,165 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Xsve = () => ( + +) + +export default Xsve diff --git a/src/components/Runners/Xtjt.tsx b/src/components/Runners/Xtjt.tsx new file mode 100644 index 000000000..e81801ed6 --- /dev/null +++ b/src/components/Runners/Xtjt.tsx @@ -0,0 +1,52 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Xtjt = () => ( + +) + +export default Xtjt diff --git a/src/components/Runners/Xwim.tsx b/src/components/Runners/Xwim.tsx new file mode 100644 index 000000000..b8723236e --- /dev/null +++ b/src/components/Runners/Xwim.tsx @@ -0,0 +1,97 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Xwim = () => ( + +) + +export default Xwim diff --git a/src/components/Runners/Xzqu.tsx b/src/components/Runners/Xzqu.tsx new file mode 100644 index 000000000..3ac0dcf27 --- /dev/null +++ b/src/components/Runners/Xzqu.tsx @@ -0,0 +1,83 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Xzqu = () => ( + +) + +export default Xzqu diff --git a/src/components/Runners/Yehl.tsx b/src/components/Runners/Yehl.tsx new file mode 100644 index 000000000..39d72c27e --- /dev/null +++ b/src/components/Runners/Yehl.tsx @@ -0,0 +1,97 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Yehl = () => ( + +) + +export default Yehl diff --git a/src/components/Runners/Yklt.tsx b/src/components/Runners/Yklt.tsx new file mode 100644 index 000000000..6a3190895 --- /dev/null +++ b/src/components/Runners/Yklt.tsx @@ -0,0 +1,70 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Yklt = () => ( + +) + +export default Yklt diff --git a/src/components/Runners/Ylil.tsx b/src/components/Runners/Ylil.tsx new file mode 100644 index 000000000..3a47fc467 --- /dev/null +++ b/src/components/Runners/Ylil.tsx @@ -0,0 +1,258 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Ylil = () => ( + +) + +export default Ylil diff --git a/src/components/Runners/Ysji.tsx b/src/components/Runners/Ysji.tsx new file mode 100644 index 000000000..06c5095eb --- /dev/null +++ b/src/components/Runners/Ysji.tsx @@ -0,0 +1,52 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Ysji = () => ( + +) + +export default Ysji diff --git a/src/components/Runners/Ytcf.tsx b/src/components/Runners/Ytcf.tsx new file mode 100644 index 000000000..1e1b2f300 --- /dev/null +++ b/src/components/Runners/Ytcf.tsx @@ -0,0 +1,82 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Ytcf = () => ( + +) + +export default Ytcf diff --git a/src/components/Runners/Yvia.tsx b/src/components/Runners/Yvia.tsx new file mode 100644 index 000000000..6de52da4f --- /dev/null +++ b/src/components/Runners/Yvia.tsx @@ -0,0 +1,285 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Yvia = () => ( + +) + +export default Yvia diff --git a/src/components/Runners/Yvty.tsx b/src/components/Runners/Yvty.tsx new file mode 100644 index 000000000..acbb6482f --- /dev/null +++ b/src/components/Runners/Yvty.tsx @@ -0,0 +1,209 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Yvty = () => ( + +) + +export default Yvty diff --git a/src/components/Runners/Yykk.tsx b/src/components/Runners/Yykk.tsx new file mode 100644 index 000000000..3ca345032 --- /dev/null +++ b/src/components/Runners/Yykk.tsx @@ -0,0 +1,71 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Yykk = () => ( + +) + +export default Yykk diff --git a/src/components/Runners/Zaoc.tsx b/src/components/Runners/Zaoc.tsx new file mode 100644 index 000000000..7f08084b3 --- /dev/null +++ b/src/components/Runners/Zaoc.tsx @@ -0,0 +1,314 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Zaoc = () => ( + +) + +export default Zaoc diff --git a/src/components/Runners/Zfcz.tsx b/src/components/Runners/Zfcz.tsx new file mode 100644 index 000000000..b8211b9d3 --- /dev/null +++ b/src/components/Runners/Zfcz.tsx @@ -0,0 +1,52 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Zfcz = () => ( + +) + +export default Zfcz diff --git a/src/components/Runners/Zhby.tsx b/src/components/Runners/Zhby.tsx new file mode 100644 index 000000000..890c3980a --- /dev/null +++ b/src/components/Runners/Zhby.tsx @@ -0,0 +1,120 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Zhby = () => ( + +) + +export default Zhby diff --git a/src/components/Runners/Zifr.tsx b/src/components/Runners/Zifr.tsx new file mode 100644 index 000000000..a778e2f98 --- /dev/null +++ b/src/components/Runners/Zifr.tsx @@ -0,0 +1,105 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Zifr = () => ( + +) + +export default Zifr diff --git a/src/components/Runners/Zuam.tsx b/src/components/Runners/Zuam.tsx new file mode 100644 index 000000000..a9328122c --- /dev/null +++ b/src/components/Runners/Zuam.tsx @@ -0,0 +1,2807 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Zuam = () => ( + +) + +export default Zuam diff --git a/src/components/Runners/Zvet.tsx b/src/components/Runners/Zvet.tsx new file mode 100644 index 000000000..e9e213728 --- /dev/null +++ b/src/components/Runners/Zvet.tsx @@ -0,0 +1,2794 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Zvet = () => ( + +) + +export default Zvet diff --git a/src/components/Runners/Zwpj.tsx b/src/components/Runners/Zwpj.tsx new file mode 100644 index 000000000..51c2c095c --- /dev/null +++ b/src/components/Runners/Zwpj.tsx @@ -0,0 +1,98 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Zwpj = () => ( + +) + +export default Zwpj diff --git a/src/components/Runners/Zxux.tsx b/src/components/Runners/Zxux.tsx new file mode 100644 index 000000000..8e7eb63fb --- /dev/null +++ b/src/components/Runners/Zxux.tsx @@ -0,0 +1,70 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Zxux = () => ( + +) + +export default Zxux diff --git a/src/components/Runners/Zywk.tsx b/src/components/Runners/Zywk.tsx new file mode 100644 index 000000000..c4a341c25 --- /dev/null +++ b/src/components/Runners/Zywk.tsx @@ -0,0 +1,98 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Zywk = () => ( + +) + +export default Zywk diff --git a/src/components/Runners/Zzxj.tsx b/src/components/Runners/Zzxj.tsx new file mode 100644 index 000000000..b7d2a469f --- /dev/null +++ b/src/components/Runners/Zzxj.tsx @@ -0,0 +1,84 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Zzxj = () => ( + +) + +export default Zzxj diff --git a/src/components/Runners/Zzyu.tsx b/src/components/Runners/Zzyu.tsx new file mode 100644 index 000000000..38c39af5d --- /dev/null +++ b/src/components/Runners/Zzyu.tsx @@ -0,0 +1,99 @@ +import React from 'react' +import ExpressionRunnerPrecomputed from 'src/components/ExpressionRunnerPrecomputed' + +const Zzyu = () => ( + +) + +export default Zzyu diff --git a/src/components/Runners/index.ts b/src/components/Runners/index.ts new file mode 100644 index 000000000..e3232ae23 --- /dev/null +++ b/src/components/Runners/index.ts @@ -0,0 +1,309 @@ +export { default as Ilpo } from 'src/components/Runners/Ilpo' +export { default as Imyd } from 'src/components/Runners/Imyd' +export { default as Emmb } from 'src/components/Runners/Emmb' +export { default as Jozw } from 'src/components/Runners/Jozw' +export { default as Itbm } from 'src/components/Runners/Itbm' +export { default as Zwpj } from 'src/components/Runners/Zwpj' +export { default as Dqkc } from 'src/components/Runners/Dqkc' +export { default as Ldox } from 'src/components/Runners/Ldox' +export { default as Bgfl } from 'src/components/Runners/Bgfl' +export { default as Tuqr } from 'src/components/Runners/Tuqr' +export { default as Cpkp } from 'src/components/Runners/Cpkp' +export { default as Loai } from 'src/components/Runners/Loai' +export { default as Vvjn } from 'src/components/Runners/Vvjn' +export { default as Hbgo } from 'src/components/Runners/Hbgo' +export { default as Olef } from 'src/components/Runners/Olef' +export { default as Zzyu } from 'src/components/Runners/Zzyu' +export { default as Qpjt } from 'src/components/Runners/Qpjt' +export { default as Ozbe } from 'src/components/Runners/Ozbe' +export { default as Rqjo } from 'src/components/Runners/Rqjo' +export { default as Zzxj } from 'src/components/Runners/Zzxj' +export { default as Evqx } from 'src/components/Runners/Evqx' +export { default as Keck } from 'src/components/Runners/Keck' +export { default as Msiw } from 'src/components/Runners/Msiw' +export { default as Qoms } from 'src/components/Runners/Qoms' +export { default as Mhgm } from 'src/components/Runners/Mhgm' +export { default as Osqo } from 'src/components/Runners/Osqo' +export { default as Sgfj } from 'src/components/Runners/Sgfj' +export { default as Gwtp } from 'src/components/Runners/Gwtp' +export { default as Jwzh } from 'src/components/Runners/Jwzh' +export { default as Knhw } from 'src/components/Runners/Knhw' +export { default as Ahsd } from 'src/components/Runners/Ahsd' +export { default as Wunw } from 'src/components/Runners/Wunw' +export { default as Jbam } from 'src/components/Runners/Jbam' +export { default as Xwim } from 'src/components/Runners/Xwim' +export { default as Awxz } from 'src/components/Runners/Awxz' +export { default as Ldts } from 'src/components/Runners/Ldts' +export { default as Rmsd } from 'src/components/Runners/Rmsd' +export { default as Jmqh } from 'src/components/Runners/Jmqh' +export { default as Qwke } from 'src/components/Runners/Qwke' +export { default as Cvtc } from 'src/components/Runners/Cvtc' +export { default as Uemm } from 'src/components/Runners/Uemm' +export { default as Xhbi } from 'src/components/Runners/Xhbi' +export { default as Dkiy } from 'src/components/Runners/Dkiy' +export { default as Owcy } from 'src/components/Runners/Owcy' +export { default as Aaov } from 'src/components/Runners/Aaov' +export { default as Qxgl } from 'src/components/Runners/Qxgl' +export { default as Uwma } from 'src/components/Runners/Uwma' +export { default as Kvso } from 'src/components/Runners/Kvso' +export { default as Snsr } from 'src/components/Runners/Snsr' +export { default as Udic } from 'src/components/Runners/Udic' +export { default as Xzqu } from 'src/components/Runners/Xzqu' +export { default as Dnvw } from 'src/components/Runners/Dnvw' +export { default as Nric } from 'src/components/Runners/Nric' +export { default as Hdxc } from 'src/components/Runners/Hdxc' +export { default as Eial } from 'src/components/Runners/Eial' +export { default as Iwkx } from 'src/components/Runners/Iwkx' +export { default as Vjaa } from 'src/components/Runners/Vjaa' +export { default as Iifq } from 'src/components/Runners/Iifq' +export { default as Laea } from 'src/components/Runners/Laea' +export { default as Cgpd } from 'src/components/Runners/Cgpd' +export { default as Ijot } from 'src/components/Runners/Ijot' +export { default as Aezk } from 'src/components/Runners/Aezk' +export { default as Ainx } from 'src/components/Runners/Ainx' +export { default as Hykj } from 'src/components/Runners/Hykj' +export { default as Ielw } from 'src/components/Runners/Ielw' +export { default as Dtzu } from 'src/components/Runners/Dtzu' +export { default as Efyy } from 'src/components/Runners/Efyy' +export { default as Izgz } from 'src/components/Runners/Izgz' +export { default as Ljjg } from 'src/components/Runners/Ljjg' +export { default as Ebag } from 'src/components/Runners/Ebag' +export { default as Skzv } from 'src/components/Runners/Skzv' +export { default as Egmr } from 'src/components/Runners/Egmr' +export { default as Lygz } from 'src/components/Runners/Lygz' +export { default as Fivy } from 'src/components/Runners/Fivy' +export { default as Dmwy } from 'src/components/Runners/Dmwy' +export { default as Fpsd } from 'src/components/Runners/Fpsd' +export { default as Vegw } from 'src/components/Runners/Vegw' +export { default as Zywk } from 'src/components/Runners/Zywk' +export { default as Pqfs } from 'src/components/Runners/Pqfs' +export { default as Tntc } from 'src/components/Runners/Tntc' +export { default as Mbrh } from 'src/components/Runners/Mbrh' +export { default as Wbru } from 'src/components/Runners/Wbru' +export { default as Hwtu } from 'src/components/Runners/Hwtu' +export { default as Usta } from 'src/components/Runners/Usta' +export { default as Mpal } from 'src/components/Runners/Mpal' +export { default as Gtdu } from 'src/components/Runners/Gtdu' +export { default as Jmmp } from 'src/components/Runners/Jmmp' +export { default as Qpkm } from 'src/components/Runners/Qpkm' +export { default as Udvh } from 'src/components/Runners/Udvh' +export { default as Dqey } from 'src/components/Runners/Dqey' +export { default as Diis } from 'src/components/Runners/Diis' +export { default as Tiok } from 'src/components/Runners/Tiok' +export { default as Tfho } from 'src/components/Runners/Tfho' +export { default as Idcf } from 'src/components/Runners/Idcf' +export { default as Xemt } from 'src/components/Runners/Xemt' +export { default as Howy } from 'src/components/Runners/Howy' +export { default as Imqy } from 'src/components/Runners/Imqy' +export { default as Bpwl } from 'src/components/Runners/Bpwl' +export { default as Eozk } from 'src/components/Runners/Eozk' +export { default as Stio } from 'src/components/Runners/Stio' +export { default as Cqpa } from 'src/components/Runners/Cqpa' +export { default as Blre } from 'src/components/Runners/Blre' +export { default as Jmyv } from 'src/components/Runners/Jmyv' +export { default as Ilnb } from 'src/components/Runners/Ilnb' +export { default as Qvxe } from 'src/components/Runners/Qvxe' +export { default as Qsfp } from 'src/components/Runners/Qsfp' +export { default as Sfop } from 'src/components/Runners/Sfop' +export { default as Xpvh } from 'src/components/Runners/Xpvh' +export { default as Nicg } from 'src/components/Runners/Nicg' +export { default as Qmof } from 'src/components/Runners/Qmof' +export { default as Xgei } from 'src/components/Runners/Xgei' +export { default as Mauj } from 'src/components/Runners/Mauj' +export { default as Eavp } from 'src/components/Runners/Eavp' +export { default as Wafy } from 'src/components/Runners/Wafy' +export { default as Badn } from 'src/components/Runners/Badn' +export { default as Slyk } from 'src/components/Runners/Slyk' +export { default as Eemn } from 'src/components/Runners/Eemn' +export { default as Rceu } from 'src/components/Runners/Rceu' +export { default as Sisn } from 'src/components/Runners/Sisn' +export { default as Syhh } from 'src/components/Runners/Syhh' +export { default as Ablz } from 'src/components/Runners/Ablz' +export { default as Bpza } from 'src/components/Runners/Bpza' +export { default as Vrvl } from 'src/components/Runners/Vrvl' +export { default as Goif } from 'src/components/Runners/Goif' +export { default as Fatm } from 'src/components/Runners/Fatm' +export { default as Bxdf } from 'src/components/Runners/Bxdf' +export { default as Hdwy } from 'src/components/Runners/Hdwy' +export { default as Entr } from 'src/components/Runners/Entr' +export { default as Brrh } from 'src/components/Runners/Brrh' +export { default as Rome } from 'src/components/Runners/Rome' +export { default as Dhdk } from 'src/components/Runners/Dhdk' +export { default as Dyov } from 'src/components/Runners/Dyov' +export { default as Unck } from 'src/components/Runners/Unck' +export { default as Cpbj } from 'src/components/Runners/Cpbj' +export { default as Ksya } from 'src/components/Runners/Ksya' +export { default as Drvu } from 'src/components/Runners/Drvu' +export { default as Bdlj } from 'src/components/Runners/Bdlj' +export { default as Ifwb } from 'src/components/Runners/Ifwb' +export { default as Mame } from 'src/components/Runners/Mame' +export { default as Ngus } from 'src/components/Runners/Ngus' +export { default as Pzwe } from 'src/components/Runners/Pzwe' +export { default as Ujfj } from 'src/components/Runners/Ujfj' +export { default as Dymt } from 'src/components/Runners/Dymt' +export { default as Mhwq } from 'src/components/Runners/Mhwq' +export { default as Sojz } from 'src/components/Runners/Sojz' +export { default as Ktyt } from 'src/components/Runners/Ktyt' +export { default as Aeyv } from 'src/components/Runners/Aeyv' +export { default as Bxfv } from 'src/components/Runners/Bxfv' +export { default as Fqwj } from 'src/components/Runners/Fqwj' +export { default as Tkqr } from 'src/components/Runners/Tkqr' +export { default as Fhlw } from 'src/components/Runners/Fhlw' +export { default as Jliw } from 'src/components/Runners/Jliw' +export { default as Yehl } from 'src/components/Runners/Yehl' +export { default as Mrky } from 'src/components/Runners/Mrky' +export { default as Ctyl } from 'src/components/Runners/Ctyl' +export { default as Kupy } from 'src/components/Runners/Kupy' +export { default as Qdkf } from 'src/components/Runners/Qdkf' +export { default as Gtwk } from 'src/components/Runners/Gtwk' +export { default as Nlxe } from 'src/components/Runners/Nlxe' +export { default as Dvrw } from 'src/components/Runners/Dvrw' +export { default as Wbpx } from 'src/components/Runners/Wbpx' +export { default as Gszp } from 'src/components/Runners/Gszp' +export { default as Kntz } from 'src/components/Runners/Kntz' +export { default as Bmms } from 'src/components/Runners/Bmms' +export { default as Gmcn } from 'src/components/Runners/Gmcn' +export { default as Vpjw } from 'src/components/Runners/Vpjw' +export { default as Kjyi } from 'src/components/Runners/Kjyi' +export { default as Dpst } from 'src/components/Runners/Dpst' +export { default as Xhwx } from 'src/components/Runners/Xhwx' +export { default as Ttvy } from 'src/components/Runners/Ttvy' +export { default as Lrja } from 'src/components/Runners/Lrja' +export { default as Bcae } from 'src/components/Runners/Bcae' +export { default as Zuam } from 'src/components/Runners/Zuam' +export { default as Kfcw } from 'src/components/Runners/Kfcw' +export { default as Jxyg } from 'src/components/Runners/Jxyg' +export { default as Oiwu } from 'src/components/Runners/Oiwu' +export { default as Uqpp } from 'src/components/Runners/Uqpp' +export { default as Hxmk } from 'src/components/Runners/Hxmk' +export { default as Rzbq } from 'src/components/Runners/Rzbq' +export { default as Jlet } from 'src/components/Runners/Jlet' +export { default as Kqip } from 'src/components/Runners/Kqip' +export { default as Tkbr } from 'src/components/Runners/Tkbr' +export { default as Gopk } from 'src/components/Runners/Gopk' +export { default as Imgp } from 'src/components/Runners/Imgp' +export { default as Lxnu } from 'src/components/Runners/Lxnu' +export { default as Ccon } from 'src/components/Runners/Ccon' +export { default as Npfx } from 'src/components/Runners/Npfx' +export { default as Pnob } from 'src/components/Runners/Pnob' +export { default as Rqdn } from 'src/components/Runners/Rqdn' +export { default as Fiab } from 'src/components/Runners/Fiab' +export { default as Plxd } from 'src/components/Runners/Plxd' +export { default as Zaoc } from 'src/components/Runners/Zaoc' +export { default as Xekr } from 'src/components/Runners/Xekr' +export { default as Lial } from 'src/components/Runners/Lial' +export { default as Uqts } from 'src/components/Runners/Uqts' +export { default as Ojma } from 'src/components/Runners/Ojma' +export { default as Yykk } from 'src/components/Runners/Yykk' +export { default as Exww } from 'src/components/Runners/Exww' +export { default as Qgun } from 'src/components/Runners/Qgun' +export { default as Yvia } from 'src/components/Runners/Yvia' +export { default as Qifg } from 'src/components/Runners/Qifg' +export { default as Ssns } from 'src/components/Runners/Ssns' +export { default as Tboe } from 'src/components/Runners/Tboe' +export { default as Ufyc } from 'src/components/Runners/Ufyc' +export { default as Pbgd } from 'src/components/Runners/Pbgd' +export { default as Hvdn } from 'src/components/Runners/Hvdn' +export { default as Vxnm } from 'src/components/Runners/Vxnm' +export { default as Xefx } from 'src/components/Runners/Xefx' +export { default as Wcsz } from 'src/components/Runners/Wcsz' +export { default as Psqo } from 'src/components/Runners/Psqo' +export { default as Xsby } from 'src/components/Runners/Xsby' +export { default as Repd } from 'src/components/Runners/Repd' +export { default as Cnoq } from 'src/components/Runners/Cnoq' +export { default as Dwnj } from 'src/components/Runners/Dwnj' +export { default as Guuf } from 'src/components/Runners/Guuf' +export { default as Lrrr } from 'src/components/Runners/Lrrr' +export { default as Dpar } from 'src/components/Runners/Dpar' +export { default as Ylil } from 'src/components/Runners/Ylil' +export { default as Vqcw } from 'src/components/Runners/Vqcw' +export { default as Dcfi } from 'src/components/Runners/Dcfi' +export { default as Bmnc } from 'src/components/Runners/Bmnc' +export { default as Ufze } from 'src/components/Runners/Ufze' +export { default as Rreb } from 'src/components/Runners/Rreb' +export { default as Kqzn } from 'src/components/Runners/Kqzn' +export { default as Aimh } from 'src/components/Runners/Aimh' +export { default as Lyod } from 'src/components/Runners/Lyod' +export { default as Imba } from 'src/components/Runners/Imba' +export { default as Zifr } from 'src/components/Runners/Zifr' +export { default as Omlc } from 'src/components/Runners/Omlc' +export { default as Zxux } from 'src/components/Runners/Zxux' +export { default as Itzl } from 'src/components/Runners/Itzl' +export { default as Gtnr } from 'src/components/Runners/Gtnr' +export { default as Cfms } from 'src/components/Runners/Cfms' +export { default as Syfp } from 'src/components/Runners/Syfp' +export { default as Wdol } from 'src/components/Runners/Wdol' +export { default as Luir } from 'src/components/Runners/Luir' +export { default as Ifxr } from 'src/components/Runners/Ifxr' +export { default as Vkpm } from 'src/components/Runners/Vkpm' +export { default as Mihy } from 'src/components/Runners/Mihy' +export { default as Dxum } from 'src/components/Runners/Dxum' +export { default as Davn } from 'src/components/Runners/Davn' +export { default as Qltx } from 'src/components/Runners/Qltx' +export { default as Zvet } from 'src/components/Runners/Zvet' +export { default as Yvty } from 'src/components/Runners/Yvty' +export { default as Umce } from 'src/components/Runners/Umce' +export { default as Orhx } from 'src/components/Runners/Orhx' +export { default as Wqdb } from 'src/components/Runners/Wqdb' +export { default as Xtjt } from 'src/components/Runners/Xtjt' +export { default as Mnfh } from 'src/components/Runners/Mnfh' +export { default as Yklt } from 'src/components/Runners/Yklt' +export { default as Fsmk } from 'src/components/Runners/Fsmk' +export { default as Peoq } from 'src/components/Runners/Peoq' +export { default as Nfkp } from 'src/components/Runners/Nfkp' +export { default as Fora } from 'src/components/Runners/Fora' +export { default as Eobj } from 'src/components/Runners/Eobj' +export { default as Osqg } from 'src/components/Runners/Osqg' +export { default as Vrwt } from 'src/components/Runners/Vrwt' +export { default as Lodr } from 'src/components/Runners/Lodr' +export { default as Fjyk } from 'src/components/Runners/Fjyk' +export { default as Miez } from 'src/components/Runners/Miez' +export { default as Fapu } from 'src/components/Runners/Fapu' +export { default as Xjae } from 'src/components/Runners/Xjae' +export { default as Xsve } from 'src/components/Runners/Xsve' +export { default as Igrt } from 'src/components/Runners/Igrt' +export { default as Woft } from 'src/components/Runners/Woft' +export { default as Urhc } from 'src/components/Runners/Urhc' +export { default as Tdau } from 'src/components/Runners/Tdau' +export { default as Lkwr } from 'src/components/Runners/Lkwr' +export { default as Osih } from 'src/components/Runners/Osih' +export { default as Dkbt } from 'src/components/Runners/Dkbt' +export { default as Hzlj } from 'src/components/Runners/Hzlj' +export { default as Plts } from 'src/components/Runners/Plts' +export { default as Pnux } from 'src/components/Runners/Pnux' +export { default as Zhby } from 'src/components/Runners/Zhby' +export { default as Xcnu } from 'src/components/Runners/Xcnu' +export { default as Iisx } from 'src/components/Runners/Iisx' +export { default as Pzui } from 'src/components/Runners/Pzui' +export { default as Kfrt } from 'src/components/Runners/Kfrt' +export { default as Iygh } from 'src/components/Runners/Iygh' +export { default as Ines } from 'src/components/Runners/Ines' +export { default as Gcnt } from 'src/components/Runners/Gcnt' +export { default as Pgtx } from 'src/components/Runners/Pgtx' +export { default as Gswd } from 'src/components/Runners/Gswd' +export { default as Jruw } from 'src/components/Runners/Jruw' +export { default as Nnhc } from 'src/components/Runners/Nnhc' +export { default as Pzvr } from 'src/components/Runners/Pzvr' +export { default as Mscz } from 'src/components/Runners/Mscz' +export { default as Jreq } from 'src/components/Runners/Jreq' +export { default as Vpmj } from 'src/components/Runners/Vpmj' +export { default as Uitu } from 'src/components/Runners/Uitu' +export { default as Bozr } from 'src/components/Runners/Bozr' +export { default as Angp } from 'src/components/Runners/Angp' +export { default as Wxqy } from 'src/components/Runners/Wxqy' +export { default as Wcwd } from 'src/components/Runners/Wcwd' +export { default as Bcgc } from 'src/components/Runners/Bcgc' +export { default as Szou } from 'src/components/Runners/Szou' +export { default as Ysji } from 'src/components/Runners/Ysji' +export { default as Ilrn } from 'src/components/Runners/Ilrn' +export { default as Xsgz } from 'src/components/Runners/Xsgz' +export { default as Dret } from 'src/components/Runners/Dret' +export { default as Bpsz } from 'src/components/Runners/Bpsz' +export { default as Fotb } from 'src/components/Runners/Fotb' +export { default as Zfcz } from 'src/components/Runners/Zfcz' +export { default as Jtai } from 'src/components/Runners/Jtai' +export { default as Nmoc } from 'src/components/Runners/Nmoc' +export { default as Cnef } from 'src/components/Runners/Cnef' +export { default as News } from 'src/components/Runners/News' +export { default as Xrzv } from 'src/components/Runners/Xrzv' +export { default as Ytcf } from 'src/components/Runners/Ytcf' diff --git a/src/components/VariableExpressionBox.tsx b/src/components/VariableExpressionBox.tsx index 0546674ee..18a22b007 100644 --- a/src/components/VariableExpressionBox.tsx +++ b/src/components/VariableExpressionBox.tsx @@ -6,9 +6,7 @@ import EmojiNumber from 'src/components/EmojiNumber' import FlexCenter from 'src/components/FlexCenter' import BottomRightBadge from 'src/components/BottomRightBadge' import ExpressionPrioritiesLabel from 'src/components/ExpressionPrioritiesLabel' -import ExpressionRunnerContext, { - ExpressionRunnerContextProps -} from 'src/components/ExpressionRunnerContext' +import ExpressionRunnerContext from 'src/components/ExpressionRunnerContext' import ConditionalContext from 'src/components/ConditionalContext' import TopLeftBadge from 'src/components/TopLeftBadge' import TopRightBadge from 'src/components/TopRightBadge' @@ -16,6 +14,7 @@ import { fontSizes, spaces, zIndices, colors, radii } from 'src/lib/theme' import letterEmojiMapping from 'src/lib/letterEmojiMapping' import { VariableExpression } from 'src/types/ExpressionTypes' import H from 'src/components/H' +import { ExpressionRunnerContextProps } from 'src/types/ExpressionRunnerTypes' interface VariableExpressionBoxProps { expression: VariableExpression diff --git a/src/hooks/useExpressionContainerManager.ts b/src/hooks/useExpressionContainerManager.ts index 390482c0b..0758119f0 100644 --- a/src/hooks/useExpressionContainerManager.ts +++ b/src/hooks/useExpressionContainerManager.ts @@ -1,24 +1,18 @@ import { useState, useRef } from 'react' import ExpressionContainerManager from 'src/lib/ExpressionContainerManager' import { SteppedExpressionContainer } from 'src/types/ExpressionContainerTypes' -import { ExpressionRunnerProps } from 'src/components/ExpressionRunner' +import { ExpressionRunnerProps } from 'src/types/ExpressionRunnerTypes' const initializeExpressionManager = ({ initializeInstructions, - resetIndex, expressionContainerManager }: { initializeInstructions: ExpressionRunnerProps['initializeInstructions'] - resetIndex: ExpressionRunnerProps['resetIndex'] expressionContainerManager: ExpressionContainerManager }) => { if (initializeInstructions) { initializeInstructions.forEach(initializeInstruction => { - if (initializeInstruction.type === 'stepForwardUntilContainerState') { - expressionContainerManager.stepForwardUntilContainerState( - initializeInstruction.state - ) - } else if ( + if ( initializeInstruction.type === 'stepForwardUntilPreviouslyChangedExpressionState' ) { @@ -35,10 +29,6 @@ const initializeExpressionManager = ({ } }) - if (resetIndex) { - expressionContainerManager.startIndex = - expressionContainerManager.currentIndex - } expressionContainerManager.minimumIndex = expressionContainerManager.currentIndex } @@ -48,7 +38,6 @@ const initializeExpressionManager = ({ const useExpressionContainerManager = ({ initializeInstructions, - resetIndex, expressionContainer, lastAllowedExpressionState, lastAllowedExpressionStateAfterIterations, @@ -56,7 +45,6 @@ const useExpressionContainerManager = ({ skipAlphaConvert }: { initializeInstructions: ExpressionRunnerProps['initializeInstructions'] - resetIndex: ExpressionRunnerProps['resetIndex'] expressionContainer: SteppedExpressionContainer lastAllowedExpressionState?: ExpressionRunnerProps['lastAllowedExpressionState'] lastAllowedExpressionStateAfterIterations?: number @@ -80,7 +68,6 @@ const useExpressionContainerManager = ({ }) expressionContainerManager = initializeExpressionManager({ initializeInstructions, - resetIndex, expressionContainerManager }) ref.current = expressionContainerManager diff --git a/src/lib/ExpressionContainerManager.ts b/src/lib/ExpressionContainerManager.ts index 54a868bc6..637faa41e 100644 --- a/src/lib/ExpressionContainerManager.ts +++ b/src/lib/ExpressionContainerManager.ts @@ -1,7 +1,6 @@ import { isContainerWithState } from 'src/lib/expressionContainerGuards' import stepExpressionContainer from 'src/lib/stepExpressionContainer' import { - ExpressionContainerStates, SteppedExpressionContainer, ExpressionContainer } from 'src/types/ExpressionContainerTypes' @@ -24,14 +23,13 @@ export default class ExpressionContainerManager { numStepsRemaining: this.numStepsRemaining, numStepsRemainingDefaultAndActiveOnly: this .numStepsRemainingDefaultAndActiveOnly, - numStepsTaken: this.currentIndex - this.startIndex, + numStepsTaken: this.currentIndex - this.minimumIndex, maxIndexSet: this.maximumIndex !== DEFAULT_MAX_INDEX } } public expressionContainers: SteppedExpressionContainer[] = [] public currentIndex = 0 - public startIndex = 0 public minimumIndex = 0 public maximumIndex = DEFAULT_MAX_INDEX public stepOptions: StepOptions @@ -55,7 +53,7 @@ export default class ExpressionContainerManager { } public reset() { - this.currentIndex = this.startIndex + this.currentIndex = this.minimumIndex } public stepForwardUntilActiveOrDefault() { @@ -84,15 +82,6 @@ export default class ExpressionContainerManager { } } - public stepForwardUntilContainerState(state: ExpressionContainerStates) { - while ( - this.currentExpressionContainer.containerState !== state && - this.canStepForward - ) { - this.stepForward() - } - } - public stepForward() { if (this.canRedo) { this.currentIndex++ diff --git a/src/types/ContentTagTypes.ts b/src/types/ContentTagTypes.ts new file mode 100644 index 000000000..178f80557 --- /dev/null +++ b/src/types/ContentTagTypes.ts @@ -0,0 +1,7 @@ +export type InlineHighlightType = + | 'default' + | 'white' + | 'none' + | 'blue' + | 'yellow' + | 'pink' diff --git a/src/types/ExpressionRunnerTypes.ts b/src/types/ExpressionRunnerTypes.ts new file mode 100644 index 000000000..9b59b540b --- /dev/null +++ b/src/types/ExpressionRunnerTypes.ts @@ -0,0 +1,91 @@ +import { + SteppedExpressionContainer, + ExpressionContainer +} from 'src/types/ExpressionContainerTypes' +import { VariableExpression } from 'src/types/ExpressionTypes' +import { VariableNames } from 'src/types/VariableNames' +import { allMaxWidths } from 'src/lib/theme/maxWidths' + +export interface ExpressionRunnerContextProps { + hidePriorities: boolean + hideBottomRightBadges: boolean + variableSize: 'sm' | 'md' | 'lg' | 'xs' | 'xxs' + isDoneOrReady: boolean + bottomRightBadgeOverrides: { [key in VariableNames]?: string } + highlightOverrides: { + [key in VariableNames]?: VariableExpression['highlightType'] + } + started: boolean + highlightOverrideActiveAfterStart: boolean + highlightOverridesCallArgAndFuncUnboundOnly: boolean + showOnlyFocused: boolean + argPriorityAggHighlights: readonly number[] + funcPriorityAggHighlights: readonly number[] + highlightFunctions: boolean + highlightAllChildren: boolean + highlightNumber?: number +} + +export type InitializeInstruction = + | { + type: 'stepForwardUntilPreviouslyChangedExpressionState' + state: ExpressionContainer['previouslyChangedExpressionState'] + } + | { + type: 'nextIteration' + } + | { + type: 'stepForwardUntilTheEnd' + } + +export interface ExpressionRunnerProps { + expressionContainer: SteppedExpressionContainer + hidePriorities: ExpressionRunnerContextProps['hidePriorities'] + hideBottomRightBadges: ExpressionRunnerContextProps['hideBottomRightBadges'] + hideControls: boolean + explanationsVisibility: + | 'visible' + | 'hidden' + | 'hiddenInitialPausedOnly' + | 'hiddenInitialAndLastPausedOnly' + variableSize: ExpressionRunnerContextProps['variableSize'] + initializeInstructions: readonly InitializeInstruction[] + maxStepsAllowed?: number + lastAllowedExpressionState?: ExpressionContainer['previouslyChangedExpressionState'] + lastAllowedExpressionStateAfterIterations?: number + containerSize: keyof typeof allMaxWidths + hidePlayButton?: boolean + speed: number + showAllShowSteps?: boolean + skipAlphaConvert?: boolean + skipToTheEnd: boolean + hideFuncUnboundBadgeOnExplanation: boolean + highlightOverridesCallArgAndFuncUnboundOnly: boolean + bottomRightBadgeOverrides: ExpressionRunnerContextProps['bottomRightBadgeOverrides'] + highlightOverrides: ExpressionRunnerContextProps['highlightOverrides'] + caption?: React.ReactNode + highlightOverrideActiveAfterStart: boolean + showOnlyFocused: ExpressionRunnerContextProps['showOnlyFocused'] + argPriorityAggHighlights: readonly number[] + funcPriorityAggHighlights: readonly number[] + highlightFunctions: boolean + superFastForward: boolean + highlightNumber?: number +} + +export const expressionRunnerContextDefault: ExpressionRunnerContextProps = { + hidePriorities: false, + hideBottomRightBadges: false, + variableSize: 'sm', + isDoneOrReady: false, + started: false, + bottomRightBadgeOverrides: {}, + highlightOverrides: {}, + highlightOverrideActiveAfterStart: false, + highlightOverridesCallArgAndFuncUnboundOnly: false, + showOnlyFocused: false, + argPriorityAggHighlights: [], + funcPriorityAggHighlights: [], + highlightFunctions: false, + highlightAllChildren: false +} diff --git a/src/types/HTypes.ts b/src/types/HTypes.ts new file mode 100644 index 000000000..0ed2f6fb3 --- /dev/null +++ b/src/types/HTypes.ts @@ -0,0 +1,127 @@ +import { InlineHighlightType } from 'src/types/ContentTagTypes' +import { VariableNames } from 'src/types/VariableNames' +import { episodePrefixes } from 'src/lib/titles' + +export interface HProps { + highlightType: InlineHighlightType + episodeNumberOverrides?: number + args: + | { name: 'dateAndSource'; includeAboutMe?: boolean } + | { name: 'pressNext' } + | { name: 'isFaster' } + | { name: 'yesNoQuiz' } + | { name: 'yesNoQuizCorrect' } + | { name: 'yesNoQuizIncorrect' } + | { name: 'yesNoQuizYes'; hideText?: boolean } + | { name: 'yesNoQuizNo'; hideText?: boolean } + | { name: 'yesNoQuizCorrectPostfix' } + | { name: 'yesNoQuizIncorrectPostfix'; isYes: boolean } + | { name: 'pauseIfLost' } + | { name: 'byTheWay' } + | { name: 'computerScience' } + | { name: 'yCombinator' } + | { name: 'isZeroReview' } + | { + name: 'bentoBoxPuzzle' + plural?: boolean + } + | { name: 'next' } + | { name: 'play' } + | { name: 'fastForwarding' } + | { name: 'pause' } + | { name: 'fastForward' } + | { name: 'reset' } + | { name: 'previous' } + | { name: 'done' } + | { name: 'match' } + | { name: 'unmatch' } + | { name: 'nextButtonNextPagePrimaryText' } + | { name: 'nextButtonSecondaryText'; nextEpisodeNumber: number } + | { name: 'pressPlay'; capitalize?: boolean } + | { name: 'indexPageLink' } + | { name: 'sideNotePrefix' } + | { name: 'continueReading' } + | { name: 'titlePrefix' } + | { name: 'titlePrefixColored'; addColon?: boolean } + | { name: 'titleWithPrefixColored' } + | { name: 'episodeWelcomeText' } + | { name: 'newUser' } + | { name: 'titleSplit' } + | { name: 'toc' } + | { name: 'tocClose' } + | { name: 'playButton' } + | { name: 'afterPlay' } + | { name: 'yesNoQuizDontWorry'; tooHard: boolean } + | { name: 'unknownRule' } + | { name: 'pageUnderConstruction' } + | { name: 'question' } + | { name: 'prevAndNextLinks' } + | { name: 'whatHappensAtTheEndQuestion' } + | { name: 'whatHappensInTheMiddleQuestion' } + | { name: 'whatsTheNumberQuestion'; number: number } + | { name: 'lookAtThisBentoBox' } + | { + name: 'pressFastForward' + skipColon?: boolean + pleaseWait?: boolean + skippingSteps?: boolean + isFaster?: boolean + mentionRightArrow?: boolean + } + | { name: 'copy' } + | { name: 'summary' } + | { name: 'mustChangeBothFuncUnboundAndBound' } + | { name: 'secretCode' } + | { name: 'secretCodeCaptionSimple'; number: number } + | { name: 'isCallArgAndFuncUnboundTheSameCaption'; same: boolean } + | { name: 'secretCodeAddOneCaption' } + | { name: 'secretCodeAddCaption' } + | { name: 'secretCodeMultiplyCaption'; arg1?: number; arg2?: number } + | { name: 'secretCodeCaption'; number: number; letter: VariableNames } + | { name: 'notSecretCodeCaption'; number: number; letter: VariableNames } + | { name: 'theAnswerIs'; isYes: boolean; sentence?: boolean } + | { + name: 'ifCaption' + ifZero: VariableNames | VariableNames[] + ifNonZero: VariableNames | VariableNames[] + } + | { name: 'epiloguePrefix' } + | { name: 'yesOrNo' } + | { name: 'shareContent' } + | { name: 'shareTitle' } + | { name: 'privacyPolicy' } + | { name: 'witch' } + | { name: 'AmultTop' } + | { name: 'AmultBottom' } + | { name: 'witchAppearsAgainCaption' } + | { name: 'witchReplacedCaption' } + | { name: 'aboutThisSite' } + | { + name: 'categoryNameColored' + category: keyof typeof episodePrefixes + } + | { name: 'stoppedForExplanation' } + | { name: 'infinitelyAddingQuestionCaption' } + | { name: 'secretCodeAddOneCaptionWithoutQuestion' } + | { name: 'secretCodeMinusOneCaption' } + | { name: 'secretCodeTwoMinusOneCaption' } + | { name: 'pageNotFound' } + | { name: 'lookAtToc' } + | { name: 'magicalChangedCaption'; fromNumber: number } + | { name: 'ycChangedCaption'; fromNumber: number } + | { name: 'timer'; numSecondsRemaining: number } + | { name: 'whatCanComputeFactorial'; start: 3 | 4 | 5 } + | { name: 'abbreviated' } + | { name: 'itWillTakeTime' } + | { name: 'skippingSteps' } + | { name: 'inlineFactorial'; start: 3 | 4 | 5 } + | { name: 'factorialDefinition' } + | { name: 'factorialComputation'; start: 3 | 4 | 5 } + | { name: 'changedToPowerCaption' } + | { name: 'powerComputation'; power: 3 | 4 } + | { name: 'thisIsYCombinatorCaption'; too?: boolean } + | { name: 'csDescriptionPreface' } + | { name: 'csDescription' } + | { name: 'numberOfAIsSecretCodeCaption' } + | { name: 'mentionRightArrow' } +} diff --git a/tsconfig.json b/tsconfig.json index e92ebd91b..5ccebb48b 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -21,6 +21,7 @@ "paths": { "src/*": ["src/*"], "test/*": ["test/*"], + "scripts/*": ["scripts/*"], "*": ["node_modules/*", "src/types/*"] } }, diff --git a/yarn.lock b/yarn.lock index 68ea2d404..35d387468 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1269,6 +1269,13 @@ resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g== +"@types/fs-extra@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-7.0.0.tgz#9c4ad9e1339e7448a76698829def1f159c1b636c" + integrity sha512-ndoMMbGyuToTy4qB6Lex/inR98nPiNHacsgMPvy+zqMLgSxbt8VtWpDArpGp69h1fEDQHn1KB+9DWD++wgbwYA== + dependencies: + "@types/node" "*" + "@types/glob@^7.1.1": version "7.1.1" resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575" @@ -3879,6 +3886,15 @@ from2@^2.1.0: inherits "^2.0.1" readable-stream "^2.0.0" +fs-extra@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.0.1.tgz#90294081f978b1f182f347a440a209154344285b" + integrity sha512-W+XLrggcDzlle47X/XnS7FXrXu9sDo+Ze9zpndeBxdgv88FHLm1HtmkhEwavruS6koanBjp098rUpHs65EmG7A== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + fs-minipass@^1.2.5: version "1.2.6" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.6.tgz#2c5cc30ded81282bfe8a0d7c7c1853ddeb102c07" @@ -4022,7 +4038,7 @@ globby@^6.1.0: pify "^2.0.0" pinkie-promise "^2.0.0" -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.4: +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.4, graceful-fs@^4.1.6: version "4.1.15" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== @@ -5117,6 +5133,13 @@ json5@^1.0.1: dependencies: minimist "^1.2.0" +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= + optionalDependencies: + graceful-fs "^4.1.6" + jsonify@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" @@ -8006,6 +8029,11 @@ unist-util-stringify-position@^2.0.0: dependencies: "@types/unist" "^2.0.2" +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + unquote@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544"