diff --git a/README.md b/README.md index b5069d324e5..cedc257c18d 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@

- npm Downloads + npm Downloads undefined diff --git a/crates/swc/tests/fixture/sourcemap/issue-3854/1-true/input/.swcrc b/crates/swc/tests/fixture/sourcemap/issue-3854/1-true/input/.swcrc new file mode 100644 index 00000000000..85a9eadbe88 --- /dev/null +++ b/crates/swc/tests/fixture/sourcemap/issue-3854/1-true/input/.swcrc @@ -0,0 +1,22 @@ +{ + "test": ".*.ts$", + "jsc": { + "target": "es2020", + "parser": { + "syntax": "typescript", + "tsx": false, + "decorators": false, + "dynamicImport": false + }, + "externalHelpers": true, + "transform": { + "hidden": { + "jest": true + } + } + }, + "module": { + "type": "commonjs" + }, + "sourceMaps": true +} \ No newline at end of file diff --git a/crates/swc/tests/fixture/sourcemap/issue-3854/1-true/input/index.ts b/crates/swc/tests/fixture/sourcemap/issue-3854/1-true/input/index.ts new file mode 100644 index 00000000000..0ffd16b7223 --- /dev/null +++ b/crates/swc/tests/fixture/sourcemap/issue-3854/1-true/input/index.ts @@ -0,0 +1,256 @@ +import { AbstractBuilder, AbstractSeqBuilder } from './AbstractBuilders'; +import { hash, mapBuildArg, mapBuildArgs } from './Builder.utils'; +import { image } from './ElementBuilder'; + +import type { + Body, + BodyStage, + TrustBox, + RichText, + Opener, + BodyHeader, + Stage, + ArticleSource, + ArticleSources, +} from '@paper/models'; +import type { BuildArg, BuildArgs, CreateBuilder, SeqElement, SeqNextElementConverter } from './types'; + +/** + * @deprecated use {Builder.body.node.img()} + */ +export * from './BodyNodesBuilder'; +export * as node from './BodyNodesBuilder'; + +export const create: CreateBuilder = () => new BodyBuilder(); +export const trustBox: CreateBuilder = () => new TrustBoxBuilder(); +export const opener: CreateBuilder = () => new OpenerBuilder(); +export const stage: CreateBuilder = () => new BodyStageBuilder(); +export const header: CreateBuilder = () => new BodyHeaderBuilder(); +export const source: CreateBuilder> = ( + nodes: BuildArgs = [], +) => new ArticleSourceBuilder(...nodes); +export const sources: CreateBuilder = () => new ArticleSourcesBuilder(); + +export const seq = { + stage: (() => new BodyStageSeqBuilder()) as CreateBuilder, + source: (() => new ArticleSourceSeqBuilder()) as CreateBuilder, +} as const; + +class BodyBuilder extends AbstractBuilder { + #stages: BodyStage[] = []; + #trustBox?: TrustBox = undefined; + #disclaimer?: RichText.Node[] = undefined; + #articleSources?: ArticleSources = undefined; + + stages(...stages: BuildArgs): this { + this.#stages = stages.map(mapBuildArg); + return this; + } + + trustBox(trustBox?: BuildArg): this { + this.#trustBox = mapBuildArg(trustBox); + return this; + } + + disclaimer(disclaimer?: BuildArgs): this { + this.#disclaimer = disclaimer?.map(mapBuildArg); + return this; + } + + articleSources(articleSources?: BuildArg): this { + this.#articleSources = mapBuildArg(articleSources); + return this; + } + + build(): Body { + return { + stages: this.#stages, + trustBox: this.#trustBox, + disclaimer: this.#disclaimer, + articleSources: this.#articleSources, + }; + } +} + +class TrustBoxBuilder extends AbstractBuilder { + #nodes: RichText.Node[] = []; + #hidden: RichText.Node[] = []; + + nodes(nodes: BuildArgs): this { + this.#nodes = nodes.map(mapBuildArg); + return this; + } + + hidden(hidden: BuildArgs): this { + this.#hidden = hidden.map(mapBuildArg); + return this; + } + + build(): TrustBox { + return { + nodes: this.#nodes, + hidden: this.#hidden, + }; + } +} + +class OpenerBuilder extends AbstractBuilder { + #element: Opener['element'] = image().build(); + + element(element: BuildArg): this { + this.#element = mapBuildArg(element); + return this; + } + + build(): Opener { + return { + element: this.#element, + }; + } +} + +class BodyStageSeqBuilder extends AbstractSeqBuilder { + #nodes: SeqElement = []; + #header?: SeqElement = undefined; + #companions: SeqElement = []; + #commercialsEndOfStage: SeqElement = []; + + nodes(nodes: SeqElement>): this { + this.#nodes = nodes.map(mapBuildArgs); + return this; + } + + header(header?: SeqElement>): this { + this.#header = mapBuildArgs(header ?? []); + return this; + } + + companions(companions: SeqElement>): this { + this.#companions = companions.map(mapBuildArgs); + return this; + } + + commercialsEndOfStage(commercialsEndOfStage: SeqElement>): this { + this.#commercialsEndOfStage = commercialsEndOfStage.map(mapBuildArgs); + return this; + } + + buildListItem(seqNextElement: SeqNextElementConverter): BodyStage { + return { + id: hash('bodyStage', this.#nodes, this.#companions, this.#commercialsEndOfStage, this.#header), + nodes: seqNextElement.array(this.#nodes), + header: seqNextElement.maybe(this.#header), + companions: seqNextElement.array(this.#companions), + commercialsEndOfStage: seqNextElement.array(this.#commercialsEndOfStage), + }; + } +} + +class BodyStageBuilder extends AbstractBuilder { + #seqBuilder: BodyStageSeqBuilder = new BodyStageSeqBuilder(); + + nodes(nodes: BuildArgs): this { + this.#seqBuilder.nodes([nodes]); + return this; + } + + header(header?: BuildArg): this { + if (header) { + this.#seqBuilder.header([header]); + } + return this; + } + + companions(companions: BuildArgs): this { + this.#seqBuilder.companions([companions]); + return this; + } + + commercialsEndOfStage(commercialsEndOfStage: BuildArgs): this { + this.#seqBuilder.commercialsEndOfStage([commercialsEndOfStage]); + return this; + } + + build(): BodyStage { + return this.#seqBuilder.build(); + } +} + +class BodyHeaderBuilder extends AbstractBuilder { + #variant: BodyHeader['variant'] = 'full'; + #opener?: Opener = undefined; + + variant(variant: BodyHeader['variant']): this { + this.#variant = variant; + return this; + } + + opener(opener: BuildArg): this { + this.#opener = mapBuildArg(opener); + return this; + } + + build(): BodyHeader { + return { + variant: this.#variant, + opener: this.#opener, + }; + } +} + +class ArticleSourceSeqBuilder extends AbstractSeqBuilder { + #nodes: SeqElement = []; + + nodes(nodes: SeqElement>): this { + this.#nodes = nodes.map(mapBuildArgs); + return this; + } + + buildListItem(seqNextElement: SeqNextElementConverter): ArticleSource { + const id = hash('article-source', this.#nodes); + return { + id, + nodes: seqNextElement.array(this.#nodes), + }; + } +} + +class ArticleSourceBuilder extends AbstractBuilder { + #seqBuilder: ArticleSourceSeqBuilder = new ArticleSourceSeqBuilder(); + + constructor(...nodes: BuildArgs) { + super(); + this.nodes(...nodes); + } + + nodes(...nodes: BuildArgs): this { + this.#seqBuilder.nodes([nodes]); + return this; + } + + build(): ArticleSource { + return this.#seqBuilder.build(); + } +} + +class ArticleSourcesBuilder extends AbstractBuilder { + #nodes: ArticleSource[] = []; + #hidden: ArticleSource[] = []; + + nodes(...nodes: BuildArgs): this { + this.#nodes = nodes.map(mapBuildArg); + return this; + } + + hidden(...hidden: BuildArgs): this { + this.#hidden = hidden.map(mapBuildArg); + return this; + } + + build(): ArticleSources { + return { + nodes: this.#nodes, + hidden: this.#hidden, + }; + } +} \ No newline at end of file diff --git a/crates/swc/tests/fixture/sourcemap/issue-3854/1-true/output/index.map b/crates/swc/tests/fixture/sourcemap/issue-3854/1-true/output/index.map new file mode 100644 index 00000000000..d66d12fca51 --- /dev/null +++ b/crates/swc/tests/fixture/sourcemap/issue-3854/1-true/output/index.map @@ -0,0 +1,54 @@ +{ + "mappings": "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", + "names": [ + "node", + "create", + "BodyBuilder", + "trustBox", + "TrustBoxBuilder", + "opener", + "OpenerBuilder", + "stage", + "BodyStageBuilder", + "header", + "BodyHeaderBuilder", + "source", + "nodes", + "ArticleSourceBuilder", + "sources", + "ArticleSourcesBuilder", + "seq", + "BodyStageSeqBuilder", + "ArticleSourceSeqBuilder", + "AbstractBuilder", + "stages", + "map", + "mapBuildArg", + "disclaimer", + "articleSources", + "build", + "undefined", + "hidden", + "element", + "image", + "AbstractSeqBuilder", + "mapBuildArgs", + "companions", + "commercialsEndOfStage", + "buildListItem", + "seqNextElement", + "id", + "hash", + "array", + "maybe", + "seqBuilder", + "variant" + ], + "sources": [ + "../../input/index.ts" + ], + "sourcesContent": [ + "import { AbstractBuilder, AbstractSeqBuilder } from './AbstractBuilders';\nimport { hash, mapBuildArg, mapBuildArgs } from './Builder.utils';\nimport { image } from './ElementBuilder';\n\nimport type {\n Body,\n BodyStage,\n TrustBox,\n RichText,\n Opener,\n BodyHeader,\n Stage,\n ArticleSource,\n ArticleSources,\n} from '@paper/models';\nimport type { BuildArg, BuildArgs, CreateBuilder, SeqElement, SeqNextElementConverter } from './types';\n\n/**\n * @deprecated use {Builder.body.node.img()}\n */\nexport * from './BodyNodesBuilder';\nexport * as node from './BodyNodesBuilder';\n\nexport const create: CreateBuilder = () => new BodyBuilder();\nexport const trustBox: CreateBuilder = () => new TrustBoxBuilder();\nexport const opener: CreateBuilder = () => new OpenerBuilder();\nexport const stage: CreateBuilder = () => new BodyStageBuilder();\nexport const header: CreateBuilder = () => new BodyHeaderBuilder();\nexport const source: CreateBuilder> = (\n nodes: BuildArgs = [],\n) => new ArticleSourceBuilder(...nodes);\nexport const sources: CreateBuilder = () => new ArticleSourcesBuilder();\n\nexport const seq = {\n stage: (() => new BodyStageSeqBuilder()) as CreateBuilder,\n source: (() => new ArticleSourceSeqBuilder()) as CreateBuilder,\n} as const;\n\nclass BodyBuilder extends AbstractBuilder {\n #stages: BodyStage[] = [];\n #trustBox?: TrustBox = undefined;\n #disclaimer?: RichText.Node[] = undefined;\n #articleSources?: ArticleSources = undefined;\n\n stages(...stages: BuildArgs): this {\n this.#stages = stages.map(mapBuildArg);\n return this;\n }\n\n trustBox(trustBox?: BuildArg): this {\n this.#trustBox = mapBuildArg(trustBox);\n return this;\n }\n\n disclaimer(disclaimer?: BuildArgs): this {\n this.#disclaimer = disclaimer?.map(mapBuildArg);\n return this;\n }\n\n articleSources(articleSources?: BuildArg): this {\n this.#articleSources = mapBuildArg(articleSources);\n return this;\n }\n\n build(): Body {\n return {\n stages: this.#stages,\n trustBox: this.#trustBox,\n disclaimer: this.#disclaimer,\n articleSources: this.#articleSources,\n };\n }\n}\n\nclass TrustBoxBuilder extends AbstractBuilder {\n #nodes: RichText.Node[] = [];\n #hidden: RichText.Node[] = [];\n\n nodes(nodes: BuildArgs): this {\n this.#nodes = nodes.map(mapBuildArg);\n return this;\n }\n\n hidden(hidden: BuildArgs): this {\n this.#hidden = hidden.map(mapBuildArg);\n return this;\n }\n\n build(): TrustBox {\n return {\n nodes: this.#nodes,\n hidden: this.#hidden,\n };\n }\n}\n\nclass OpenerBuilder extends AbstractBuilder {\n #element: Opener['element'] = image().build();\n\n element(element: BuildArg): this {\n this.#element = mapBuildArg(element);\n return this;\n }\n\n build(): Opener {\n return {\n element: this.#element,\n };\n }\n}\n\nclass BodyStageSeqBuilder extends AbstractSeqBuilder {\n #nodes: SeqElement = [];\n #header?: SeqElement = undefined;\n #companions: SeqElement = [];\n #commercialsEndOfStage: SeqElement = [];\n\n nodes(nodes: SeqElement>): this {\n this.#nodes = nodes.map(mapBuildArgs);\n return this;\n }\n\n header(header?: SeqElement>): this {\n this.#header = mapBuildArgs(header ?? []);\n return this;\n }\n\n companions(companions: SeqElement>): this {\n this.#companions = companions.map(mapBuildArgs);\n return this;\n }\n\n commercialsEndOfStage(commercialsEndOfStage: SeqElement>): this {\n this.#commercialsEndOfStage = commercialsEndOfStage.map(mapBuildArgs);\n return this;\n }\n\n buildListItem(seqNextElement: SeqNextElementConverter): BodyStage {\n return {\n id: hash('bodyStage', this.#nodes, this.#companions, this.#commercialsEndOfStage, this.#header),\n nodes: seqNextElement.array(this.#nodes),\n header: seqNextElement.maybe(this.#header),\n companions: seqNextElement.array(this.#companions),\n commercialsEndOfStage: seqNextElement.array(this.#commercialsEndOfStage),\n };\n }\n}\n\nclass BodyStageBuilder extends AbstractBuilder {\n #seqBuilder: BodyStageSeqBuilder = new BodyStageSeqBuilder();\n\n nodes(nodes: BuildArgs): this {\n this.#seqBuilder.nodes([nodes]);\n return this;\n }\n\n header(header?: BuildArg): this {\n if (header) {\n this.#seqBuilder.header([header]);\n }\n return this;\n }\n\n companions(companions: BuildArgs): this {\n this.#seqBuilder.companions([companions]);\n return this;\n }\n\n commercialsEndOfStage(commercialsEndOfStage: BuildArgs): this {\n this.#seqBuilder.commercialsEndOfStage([commercialsEndOfStage]);\n return this;\n }\n\n build(): BodyStage {\n return this.#seqBuilder.build();\n }\n}\n\nclass BodyHeaderBuilder extends AbstractBuilder {\n #variant: BodyHeader['variant'] = 'full';\n #opener?: Opener = undefined;\n\n variant(variant: BodyHeader['variant']): this {\n this.#variant = variant;\n return this;\n }\n\n opener(opener: BuildArg): this {\n this.#opener = mapBuildArg(opener);\n return this;\n }\n\n build(): BodyHeader {\n return {\n variant: this.#variant,\n opener: this.#opener,\n };\n }\n}\n\nclass ArticleSourceSeqBuilder extends AbstractSeqBuilder {\n #nodes: SeqElement = [];\n\n nodes(nodes: SeqElement>): this {\n this.#nodes = nodes.map(mapBuildArgs);\n return this;\n }\n\n buildListItem(seqNextElement: SeqNextElementConverter): ArticleSource {\n const id = hash('article-source', this.#nodes);\n return {\n id,\n nodes: seqNextElement.array(this.#nodes),\n };\n }\n}\n\nclass ArticleSourceBuilder extends AbstractBuilder {\n #seqBuilder: ArticleSourceSeqBuilder = new ArticleSourceSeqBuilder();\n\n constructor(...nodes: BuildArgs) {\n super();\n this.nodes(...nodes);\n }\n\n nodes(...nodes: BuildArgs): this {\n this.#seqBuilder.nodes([nodes]);\n return this;\n }\n\n build(): ArticleSource {\n return this.#seqBuilder.build();\n }\n}\n\nclass ArticleSourcesBuilder extends AbstractBuilder {\n #nodes: ArticleSource[] = [];\n #hidden: ArticleSource[] = [];\n\n nodes(...nodes: BuildArgs): this {\n this.#nodes = nodes.map(mapBuildArg);\n return this;\n }\n\n hidden(...hidden: BuildArgs): this {\n this.#hidden = hidden.map(mapBuildArg);\n return this;\n }\n\n build(): ArticleSources {\n return {\n nodes: this.#nodes,\n hidden: this.#hidden,\n };\n }\n}" + ], + "version": 3 +} diff --git a/crates/swc/tests/fixture/sourcemap/issue-3854/1-true/output/index.ts b/crates/swc/tests/fixture/sourcemap/issue-3854/1-true/output/index.ts new file mode 100644 index 00000000000..0bfb00e093c --- /dev/null +++ b/crates/swc/tests/fixture/sourcemap/issue-3854/1-true/output/index.ts @@ -0,0 +1,329 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { + value: true +}); +var _exportNames = { + node: true, + node: true +}; +exports.seq = exports.sources = exports.source = exports.header = exports.stage = exports.opener = exports.trustBox = exports.create = exports.node = void 0; +var swcHelpers = require("@swc/helpers"); +var _abstractBuilders = require("./AbstractBuilders"); +var _builderUtils = require("./Builder.utils"); +var _elementBuilder = require("./ElementBuilder"); +var _node = swcHelpers.interopRequireWildcard(require("./BodyNodesBuilder")); +Object.keys(_node).forEach(function(key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _node[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function() { + return _node[key]; + } + }); +}); +exports.node = _node; +const create = ()=>new BodyBuilder() +; +exports.create = create; +const trustBox = ()=>new TrustBoxBuilder() +; +exports.trustBox = trustBox; +const opener = ()=>new OpenerBuilder() +; +exports.opener = opener; +const stage = ()=>new BodyStageBuilder() +; +exports.stage = stage; +const header = ()=>new BodyHeaderBuilder() +; +exports.header = header; +const source = (nodes = [])=>new ArticleSourceBuilder(...nodes) +; +exports.source = source; +const sources = ()=>new ArticleSourcesBuilder() +; +exports.sources = sources; +const seq = { + stage: ()=>new BodyStageSeqBuilder() + , + source: ()=>new ArticleSourceSeqBuilder() +}; +exports.seq = seq; +var _stages = new WeakMap(), _trustBox = new WeakMap(), _disclaimer = new WeakMap(), _articleSources = new WeakMap(); +class BodyBuilder extends _abstractBuilders.AbstractBuilder { + stages(...stages) { + swcHelpers.classPrivateFieldSet(this, _stages, stages.map(_builderUtils.mapBuildArg)); + return this; + } + trustBox(trustBox1) { + swcHelpers.classPrivateFieldSet(this, _trustBox, (0, _builderUtils).mapBuildArg(trustBox1)); + return this; + } + disclaimer(disclaimer) { + swcHelpers.classPrivateFieldSet(this, _disclaimer, disclaimer?.map(_builderUtils.mapBuildArg)); + return this; + } + articleSources(articleSources) { + swcHelpers.classPrivateFieldSet(this, _articleSources, (0, _builderUtils).mapBuildArg(articleSources)); + return this; + } + build() { + return { + stages: swcHelpers.classPrivateFieldGet(this, _stages), + trustBox: swcHelpers.classPrivateFieldGet(this, _trustBox), + disclaimer: swcHelpers.classPrivateFieldGet(this, _disclaimer), + articleSources: swcHelpers.classPrivateFieldGet(this, _articleSources) + }; + } + constructor(...args){ + super(...args); + swcHelpers.classPrivateFieldInit(this, _stages, { + writable: true, + value: [] + }); + swcHelpers.classPrivateFieldInit(this, _trustBox, { + writable: true, + value: undefined + }); + swcHelpers.classPrivateFieldInit(this, _disclaimer, { + writable: true, + value: undefined + }); + swcHelpers.classPrivateFieldInit(this, _articleSources, { + writable: true, + value: undefined + }); + } +} +var _nodes = new WeakMap(), _hidden = new WeakMap(); +class TrustBoxBuilder extends _abstractBuilders.AbstractBuilder { + nodes(nodes) { + swcHelpers.classPrivateFieldSet(this, _nodes, nodes.map(_builderUtils.mapBuildArg)); + return this; + } + hidden(hidden) { + swcHelpers.classPrivateFieldSet(this, _hidden, hidden.map(_builderUtils.mapBuildArg)); + return this; + } + build() { + return { + nodes: swcHelpers.classPrivateFieldGet(this, _nodes), + hidden: swcHelpers.classPrivateFieldGet(this, _hidden) + }; + } + constructor(...args){ + super(...args); + swcHelpers.classPrivateFieldInit(this, _nodes, { + writable: true, + value: [] + }); + swcHelpers.classPrivateFieldInit(this, _hidden, { + writable: true, + value: [] + }); + } +} +var _element = new WeakMap(); +class OpenerBuilder extends _abstractBuilders.AbstractBuilder { + element(element) { + swcHelpers.classPrivateFieldSet(this, _element, (0, _builderUtils).mapBuildArg(element)); + return this; + } + build() { + return { + element: swcHelpers.classPrivateFieldGet(this, _element) + }; + } + constructor(...args){ + super(...args); + swcHelpers.classPrivateFieldInit(this, _element, { + writable: true, + value: (0, _elementBuilder).image().build() + }); + } +} +var _nodes1 = new WeakMap(), _header = new WeakMap(), _companions = new WeakMap(), _commercialsEndOfStage = new WeakMap(); +class BodyStageSeqBuilder extends _abstractBuilders.AbstractSeqBuilder { + nodes(nodes) { + swcHelpers.classPrivateFieldSet(this, _nodes1, nodes.map(_builderUtils.mapBuildArgs)); + return this; + } + header(header1) { + swcHelpers.classPrivateFieldSet(this, _header, (0, _builderUtils).mapBuildArgs(header1 ?? [])); + return this; + } + companions(companions) { + swcHelpers.classPrivateFieldSet(this, _companions, companions.map(_builderUtils.mapBuildArgs)); + return this; + } + commercialsEndOfStage(commercialsEndOfStage) { + swcHelpers.classPrivateFieldSet(this, _commercialsEndOfStage, commercialsEndOfStage.map(_builderUtils.mapBuildArgs)); + return this; + } + buildListItem(seqNextElement) { + return { + id: (0, _builderUtils).hash('bodyStage', swcHelpers.classPrivateFieldGet(this, _nodes1), swcHelpers.classPrivateFieldGet(this, _companions), swcHelpers.classPrivateFieldGet(this, _commercialsEndOfStage), swcHelpers.classPrivateFieldGet(this, _header)), + nodes: seqNextElement.array(swcHelpers.classPrivateFieldGet(this, _nodes1)), + header: seqNextElement.maybe(swcHelpers.classPrivateFieldGet(this, _header)), + companions: seqNextElement.array(swcHelpers.classPrivateFieldGet(this, _companions)), + commercialsEndOfStage: seqNextElement.array(swcHelpers.classPrivateFieldGet(this, _commercialsEndOfStage)) + }; + } + constructor(...args){ + super(...args); + swcHelpers.classPrivateFieldInit(this, _nodes1, { + writable: true, + value: [] + }); + swcHelpers.classPrivateFieldInit(this, _header, { + writable: true, + value: undefined + }); + swcHelpers.classPrivateFieldInit(this, _companions, { + writable: true, + value: [] + }); + swcHelpers.classPrivateFieldInit(this, _commercialsEndOfStage, { + writable: true, + value: [] + }); + } +} +var _seqBuilder = new WeakMap(); +class BodyStageBuilder extends _abstractBuilders.AbstractBuilder { + nodes(nodes) { + swcHelpers.classPrivateFieldGet(this, _seqBuilder).nodes([ + nodes + ]); + return this; + } + header(header2) { + if (header2) { + swcHelpers.classPrivateFieldGet(this, _seqBuilder).header([ + header2 + ]); + } + return this; + } + companions(companions) { + swcHelpers.classPrivateFieldGet(this, _seqBuilder).companions([ + companions + ]); + return this; + } + commercialsEndOfStage(commercialsEndOfStage) { + swcHelpers.classPrivateFieldGet(this, _seqBuilder).commercialsEndOfStage([ + commercialsEndOfStage + ]); + return this; + } + build() { + return swcHelpers.classPrivateFieldGet(this, _seqBuilder).build(); + } + constructor(...args){ + super(...args); + swcHelpers.classPrivateFieldInit(this, _seqBuilder, { + writable: true, + value: new BodyStageSeqBuilder() + }); + } +} +var _variant = new WeakMap(), _opener = new WeakMap(); +class BodyHeaderBuilder extends _abstractBuilders.AbstractBuilder { + variant(variant) { + swcHelpers.classPrivateFieldSet(this, _variant, variant); + return this; + } + opener(opener1) { + swcHelpers.classPrivateFieldSet(this, _opener, (0, _builderUtils).mapBuildArg(opener1)); + return this; + } + build() { + return { + variant: swcHelpers.classPrivateFieldGet(this, _variant), + opener: swcHelpers.classPrivateFieldGet(this, _opener) + }; + } + constructor(...args){ + super(...args); + swcHelpers.classPrivateFieldInit(this, _variant, { + writable: true, + value: 'full' + }); + swcHelpers.classPrivateFieldInit(this, _opener, { + writable: true, + value: undefined + }); + } +} +var _nodes2 = new WeakMap(); +class ArticleSourceSeqBuilder extends _abstractBuilders.AbstractSeqBuilder { + nodes(nodes) { + swcHelpers.classPrivateFieldSet(this, _nodes2, nodes.map(_builderUtils.mapBuildArgs)); + return this; + } + buildListItem(seqNextElement) { + const id = (0, _builderUtils).hash('article-source', swcHelpers.classPrivateFieldGet(this, _nodes2)); + return { + id, + nodes: seqNextElement.array(swcHelpers.classPrivateFieldGet(this, _nodes2)) + }; + } + constructor(...args){ + super(...args); + swcHelpers.classPrivateFieldInit(this, _nodes2, { + writable: true, + value: [] + }); + } +} +var _seqBuilder1 = new WeakMap(); +class ArticleSourceBuilder extends _abstractBuilders.AbstractBuilder { + nodes(...nodes) { + swcHelpers.classPrivateFieldGet(this, _seqBuilder1).nodes([ + nodes + ]); + return this; + } + build() { + return swcHelpers.classPrivateFieldGet(this, _seqBuilder1).build(); + } + constructor(...nodes){ + super(); + swcHelpers.classPrivateFieldInit(this, _seqBuilder1, { + writable: true, + value: new ArticleSourceSeqBuilder() + }); + this.nodes(...nodes); + } +} +var _nodes3 = new WeakMap(), _hidden1 = new WeakMap(); +class ArticleSourcesBuilder extends _abstractBuilders.AbstractBuilder { + nodes(...nodes) { + swcHelpers.classPrivateFieldSet(this, _nodes3, nodes.map(_builderUtils.mapBuildArg)); + return this; + } + hidden(...hidden) { + swcHelpers.classPrivateFieldSet(this, _hidden1, hidden.map(_builderUtils.mapBuildArg)); + return this; + } + build() { + return { + nodes: swcHelpers.classPrivateFieldGet(this, _nodes3), + hidden: swcHelpers.classPrivateFieldGet(this, _hidden1) + }; + } + constructor(...args){ + super(...args); + swcHelpers.classPrivateFieldInit(this, _nodes3, { + writable: true, + value: [] + }); + swcHelpers.classPrivateFieldInit(this, _hidden1, { + writable: true, + value: [] + }); + } +} diff --git a/crates/swc/tests/fixture/sourcemap/issue-3854/2-inline/input/.swcrc b/crates/swc/tests/fixture/sourcemap/issue-3854/2-inline/input/.swcrc new file mode 100644 index 00000000000..98c93ceb85e --- /dev/null +++ b/crates/swc/tests/fixture/sourcemap/issue-3854/2-inline/input/.swcrc @@ -0,0 +1,22 @@ +{ + "test": ".*.ts$", + "jsc": { + "target": "es2020", + "parser": { + "syntax": "typescript", + "tsx": false, + "decorators": false, + "dynamicImport": false + }, + "externalHelpers": true, + "transform": { + "hidden": { + "jest": true + } + } + }, + "module": { + "type": "commonjs" + }, + "sourceMaps": "inline" +} \ No newline at end of file diff --git a/crates/swc/tests/fixture/sourcemap/issue-3854/2-inline/input/index.ts b/crates/swc/tests/fixture/sourcemap/issue-3854/2-inline/input/index.ts new file mode 100644 index 00000000000..0ffd16b7223 --- /dev/null +++ b/crates/swc/tests/fixture/sourcemap/issue-3854/2-inline/input/index.ts @@ -0,0 +1,256 @@ +import { AbstractBuilder, AbstractSeqBuilder } from './AbstractBuilders'; +import { hash, mapBuildArg, mapBuildArgs } from './Builder.utils'; +import { image } from './ElementBuilder'; + +import type { + Body, + BodyStage, + TrustBox, + RichText, + Opener, + BodyHeader, + Stage, + ArticleSource, + ArticleSources, +} from '@paper/models'; +import type { BuildArg, BuildArgs, CreateBuilder, SeqElement, SeqNextElementConverter } from './types'; + +/** + * @deprecated use {Builder.body.node.img()} + */ +export * from './BodyNodesBuilder'; +export * as node from './BodyNodesBuilder'; + +export const create: CreateBuilder = () => new BodyBuilder(); +export const trustBox: CreateBuilder = () => new TrustBoxBuilder(); +export const opener: CreateBuilder = () => new OpenerBuilder(); +export const stage: CreateBuilder = () => new BodyStageBuilder(); +export const header: CreateBuilder = () => new BodyHeaderBuilder(); +export const source: CreateBuilder> = ( + nodes: BuildArgs = [], +) => new ArticleSourceBuilder(...nodes); +export const sources: CreateBuilder = () => new ArticleSourcesBuilder(); + +export const seq = { + stage: (() => new BodyStageSeqBuilder()) as CreateBuilder, + source: (() => new ArticleSourceSeqBuilder()) as CreateBuilder, +} as const; + +class BodyBuilder extends AbstractBuilder { + #stages: BodyStage[] = []; + #trustBox?: TrustBox = undefined; + #disclaimer?: RichText.Node[] = undefined; + #articleSources?: ArticleSources = undefined; + + stages(...stages: BuildArgs): this { + this.#stages = stages.map(mapBuildArg); + return this; + } + + trustBox(trustBox?: BuildArg): this { + this.#trustBox = mapBuildArg(trustBox); + return this; + } + + disclaimer(disclaimer?: BuildArgs): this { + this.#disclaimer = disclaimer?.map(mapBuildArg); + return this; + } + + articleSources(articleSources?: BuildArg): this { + this.#articleSources = mapBuildArg(articleSources); + return this; + } + + build(): Body { + return { + stages: this.#stages, + trustBox: this.#trustBox, + disclaimer: this.#disclaimer, + articleSources: this.#articleSources, + }; + } +} + +class TrustBoxBuilder extends AbstractBuilder { + #nodes: RichText.Node[] = []; + #hidden: RichText.Node[] = []; + + nodes(nodes: BuildArgs): this { + this.#nodes = nodes.map(mapBuildArg); + return this; + } + + hidden(hidden: BuildArgs): this { + this.#hidden = hidden.map(mapBuildArg); + return this; + } + + build(): TrustBox { + return { + nodes: this.#nodes, + hidden: this.#hidden, + }; + } +} + +class OpenerBuilder extends AbstractBuilder { + #element: Opener['element'] = image().build(); + + element(element: BuildArg): this { + this.#element = mapBuildArg(element); + return this; + } + + build(): Opener { + return { + element: this.#element, + }; + } +} + +class BodyStageSeqBuilder extends AbstractSeqBuilder { + #nodes: SeqElement = []; + #header?: SeqElement = undefined; + #companions: SeqElement = []; + #commercialsEndOfStage: SeqElement = []; + + nodes(nodes: SeqElement>): this { + this.#nodes = nodes.map(mapBuildArgs); + return this; + } + + header(header?: SeqElement>): this { + this.#header = mapBuildArgs(header ?? []); + return this; + } + + companions(companions: SeqElement>): this { + this.#companions = companions.map(mapBuildArgs); + return this; + } + + commercialsEndOfStage(commercialsEndOfStage: SeqElement>): this { + this.#commercialsEndOfStage = commercialsEndOfStage.map(mapBuildArgs); + return this; + } + + buildListItem(seqNextElement: SeqNextElementConverter): BodyStage { + return { + id: hash('bodyStage', this.#nodes, this.#companions, this.#commercialsEndOfStage, this.#header), + nodes: seqNextElement.array(this.#nodes), + header: seqNextElement.maybe(this.#header), + companions: seqNextElement.array(this.#companions), + commercialsEndOfStage: seqNextElement.array(this.#commercialsEndOfStage), + }; + } +} + +class BodyStageBuilder extends AbstractBuilder { + #seqBuilder: BodyStageSeqBuilder = new BodyStageSeqBuilder(); + + nodes(nodes: BuildArgs): this { + this.#seqBuilder.nodes([nodes]); + return this; + } + + header(header?: BuildArg): this { + if (header) { + this.#seqBuilder.header([header]); + } + return this; + } + + companions(companions: BuildArgs): this { + this.#seqBuilder.companions([companions]); + return this; + } + + commercialsEndOfStage(commercialsEndOfStage: BuildArgs): this { + this.#seqBuilder.commercialsEndOfStage([commercialsEndOfStage]); + return this; + } + + build(): BodyStage { + return this.#seqBuilder.build(); + } +} + +class BodyHeaderBuilder extends AbstractBuilder { + #variant: BodyHeader['variant'] = 'full'; + #opener?: Opener = undefined; + + variant(variant: BodyHeader['variant']): this { + this.#variant = variant; + return this; + } + + opener(opener: BuildArg): this { + this.#opener = mapBuildArg(opener); + return this; + } + + build(): BodyHeader { + return { + variant: this.#variant, + opener: this.#opener, + }; + } +} + +class ArticleSourceSeqBuilder extends AbstractSeqBuilder { + #nodes: SeqElement = []; + + nodes(nodes: SeqElement>): this { + this.#nodes = nodes.map(mapBuildArgs); + return this; + } + + buildListItem(seqNextElement: SeqNextElementConverter): ArticleSource { + const id = hash('article-source', this.#nodes); + return { + id, + nodes: seqNextElement.array(this.#nodes), + }; + } +} + +class ArticleSourceBuilder extends AbstractBuilder { + #seqBuilder: ArticleSourceSeqBuilder = new ArticleSourceSeqBuilder(); + + constructor(...nodes: BuildArgs) { + super(); + this.nodes(...nodes); + } + + nodes(...nodes: BuildArgs): this { + this.#seqBuilder.nodes([nodes]); + return this; + } + + build(): ArticleSource { + return this.#seqBuilder.build(); + } +} + +class ArticleSourcesBuilder extends AbstractBuilder { + #nodes: ArticleSource[] = []; + #hidden: ArticleSource[] = []; + + nodes(...nodes: BuildArgs): this { + this.#nodes = nodes.map(mapBuildArg); + return this; + } + + hidden(...hidden: BuildArgs): this { + this.#hidden = hidden.map(mapBuildArg); + return this; + } + + build(): ArticleSources { + return { + nodes: this.#nodes, + hidden: this.#hidden, + }; + } +} \ No newline at end of file diff --git a/crates/swc/tests/fixture/sourcemap/issue-3854/2-inline/output/index.map b/crates/swc/tests/fixture/sourcemap/issue-3854/2-inline/output/index.map new file mode 100644 index 00000000000..e69de29bb2d diff --git a/crates/swc/tests/fixture/sourcemap/issue-3854/2-inline/output/index.ts b/crates/swc/tests/fixture/sourcemap/issue-3854/2-inline/output/index.ts new file mode 100644 index 00000000000..9d3cf1c2c59 --- /dev/null +++ b/crates/swc/tests/fixture/sourcemap/issue-3854/2-inline/output/index.ts @@ -0,0 +1,331 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { + value: true +}); +var _exportNames = { + node: true, + node: true +}; +exports.seq = exports.sources = exports.source = exports.header = exports.stage = exports.opener = exports.trustBox = exports.create = exports.node = void 0; +var swcHelpers = require("@swc/helpers"); +var _abstractBuilders = require("./AbstractBuilders"); +var _builderUtils = require("./Builder.utils"); +var _elementBuilder = require("./ElementBuilder"); +var _node = swcHelpers.interopRequireWildcard(require("./BodyNodesBuilder")); +Object.keys(_node).forEach(function(key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports && exports[key] === _node[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function() { + return _node[key]; + } + }); +}); +exports.node = _node; +const create = ()=>new BodyBuilder() +; +exports.create = create; +const trustBox = ()=>new TrustBoxBuilder() +; +exports.trustBox = trustBox; +const opener = ()=>new OpenerBuilder() +; +exports.opener = opener; +const stage = ()=>new BodyStageBuilder() +; +exports.stage = stage; +const header = ()=>new BodyHeaderBuilder() +; +exports.header = header; +const source = (nodes = [])=>new ArticleSourceBuilder(...nodes) +; +exports.source = source; +const sources = ()=>new ArticleSourcesBuilder() +; +exports.sources = sources; +const seq = { + stage: ()=>new BodyStageSeqBuilder() + , + source: ()=>new ArticleSourceSeqBuilder() +}; +exports.seq = seq; +var _stages = new WeakMap(), _trustBox = new WeakMap(), _disclaimer = new WeakMap(), _articleSources = new WeakMap(); +class BodyBuilder extends _abstractBuilders.AbstractBuilder { + stages(...stages) { + swcHelpers.classPrivateFieldSet(this, _stages, stages.map(_builderUtils.mapBuildArg)); + return this; + } + trustBox(trustBox1) { + swcHelpers.classPrivateFieldSet(this, _trustBox, (0, _builderUtils).mapBuildArg(trustBox1)); + return this; + } + disclaimer(disclaimer) { + swcHelpers.classPrivateFieldSet(this, _disclaimer, disclaimer?.map(_builderUtils.mapBuildArg)); + return this; + } + articleSources(articleSources) { + swcHelpers.classPrivateFieldSet(this, _articleSources, (0, _builderUtils).mapBuildArg(articleSources)); + return this; + } + build() { + return { + stages: swcHelpers.classPrivateFieldGet(this, _stages), + trustBox: swcHelpers.classPrivateFieldGet(this, _trustBox), + disclaimer: swcHelpers.classPrivateFieldGet(this, _disclaimer), + articleSources: swcHelpers.classPrivateFieldGet(this, _articleSources) + }; + } + constructor(...args){ + super(...args); + swcHelpers.classPrivateFieldInit(this, _stages, { + writable: true, + value: [] + }); + swcHelpers.classPrivateFieldInit(this, _trustBox, { + writable: true, + value: undefined + }); + swcHelpers.classPrivateFieldInit(this, _disclaimer, { + writable: true, + value: undefined + }); + swcHelpers.classPrivateFieldInit(this, _articleSources, { + writable: true, + value: undefined + }); + } +} +var _nodes = new WeakMap(), _hidden = new WeakMap(); +class TrustBoxBuilder extends _abstractBuilders.AbstractBuilder { + nodes(nodes) { + swcHelpers.classPrivateFieldSet(this, _nodes, nodes.map(_builderUtils.mapBuildArg)); + return this; + } + hidden(hidden) { + swcHelpers.classPrivateFieldSet(this, _hidden, hidden.map(_builderUtils.mapBuildArg)); + return this; + } + build() { + return { + nodes: swcHelpers.classPrivateFieldGet(this, _nodes), + hidden: swcHelpers.classPrivateFieldGet(this, _hidden) + }; + } + constructor(...args){ + super(...args); + swcHelpers.classPrivateFieldInit(this, _nodes, { + writable: true, + value: [] + }); + swcHelpers.classPrivateFieldInit(this, _hidden, { + writable: true, + value: [] + }); + } +} +var _element = new WeakMap(); +class OpenerBuilder extends _abstractBuilders.AbstractBuilder { + element(element) { + swcHelpers.classPrivateFieldSet(this, _element, (0, _builderUtils).mapBuildArg(element)); + return this; + } + build() { + return { + element: swcHelpers.classPrivateFieldGet(this, _element) + }; + } + constructor(...args){ + super(...args); + swcHelpers.classPrivateFieldInit(this, _element, { + writable: true, + value: (0, _elementBuilder).image().build() + }); + } +} +var _nodes1 = new WeakMap(), _header = new WeakMap(), _companions = new WeakMap(), _commercialsEndOfStage = new WeakMap(); +class BodyStageSeqBuilder extends _abstractBuilders.AbstractSeqBuilder { + nodes(nodes) { + swcHelpers.classPrivateFieldSet(this, _nodes1, nodes.map(_builderUtils.mapBuildArgs)); + return this; + } + header(header1) { + swcHelpers.classPrivateFieldSet(this, _header, (0, _builderUtils).mapBuildArgs(header1 ?? [])); + return this; + } + companions(companions) { + swcHelpers.classPrivateFieldSet(this, _companions, companions.map(_builderUtils.mapBuildArgs)); + return this; + } + commercialsEndOfStage(commercialsEndOfStage) { + swcHelpers.classPrivateFieldSet(this, _commercialsEndOfStage, commercialsEndOfStage.map(_builderUtils.mapBuildArgs)); + return this; + } + buildListItem(seqNextElement) { + return { + id: (0, _builderUtils).hash('bodyStage', swcHelpers.classPrivateFieldGet(this, _nodes1), swcHelpers.classPrivateFieldGet(this, _companions), swcHelpers.classPrivateFieldGet(this, _commercialsEndOfStage), swcHelpers.classPrivateFieldGet(this, _header)), + nodes: seqNextElement.array(swcHelpers.classPrivateFieldGet(this, _nodes1)), + header: seqNextElement.maybe(swcHelpers.classPrivateFieldGet(this, _header)), + companions: seqNextElement.array(swcHelpers.classPrivateFieldGet(this, _companions)), + commercialsEndOfStage: seqNextElement.array(swcHelpers.classPrivateFieldGet(this, _commercialsEndOfStage)) + }; + } + constructor(...args){ + super(...args); + swcHelpers.classPrivateFieldInit(this, _nodes1, { + writable: true, + value: [] + }); + swcHelpers.classPrivateFieldInit(this, _header, { + writable: true, + value: undefined + }); + swcHelpers.classPrivateFieldInit(this, _companions, { + writable: true, + value: [] + }); + swcHelpers.classPrivateFieldInit(this, _commercialsEndOfStage, { + writable: true, + value: [] + }); + } +} +var _seqBuilder = new WeakMap(); +class BodyStageBuilder extends _abstractBuilders.AbstractBuilder { + nodes(nodes) { + swcHelpers.classPrivateFieldGet(this, _seqBuilder).nodes([ + nodes + ]); + return this; + } + header(header2) { + if (header2) { + swcHelpers.classPrivateFieldGet(this, _seqBuilder).header([ + header2 + ]); + } + return this; + } + companions(companions) { + swcHelpers.classPrivateFieldGet(this, _seqBuilder).companions([ + companions + ]); + return this; + } + commercialsEndOfStage(commercialsEndOfStage) { + swcHelpers.classPrivateFieldGet(this, _seqBuilder).commercialsEndOfStage([ + commercialsEndOfStage + ]); + return this; + } + build() { + return swcHelpers.classPrivateFieldGet(this, _seqBuilder).build(); + } + constructor(...args){ + super(...args); + swcHelpers.classPrivateFieldInit(this, _seqBuilder, { + writable: true, + value: new BodyStageSeqBuilder() + }); + } +} +var _variant = new WeakMap(), _opener = new WeakMap(); +class BodyHeaderBuilder extends _abstractBuilders.AbstractBuilder { + variant(variant) { + swcHelpers.classPrivateFieldSet(this, _variant, variant); + return this; + } + opener(opener1) { + swcHelpers.classPrivateFieldSet(this, _opener, (0, _builderUtils).mapBuildArg(opener1)); + return this; + } + build() { + return { + variant: swcHelpers.classPrivateFieldGet(this, _variant), + opener: swcHelpers.classPrivateFieldGet(this, _opener) + }; + } + constructor(...args){ + super(...args); + swcHelpers.classPrivateFieldInit(this, _variant, { + writable: true, + value: 'full' + }); + swcHelpers.classPrivateFieldInit(this, _opener, { + writable: true, + value: undefined + }); + } +} +var _nodes2 = new WeakMap(); +class ArticleSourceSeqBuilder extends _abstractBuilders.AbstractSeqBuilder { + nodes(nodes) { + swcHelpers.classPrivateFieldSet(this, _nodes2, nodes.map(_builderUtils.mapBuildArgs)); + return this; + } + buildListItem(seqNextElement) { + const id = (0, _builderUtils).hash('article-source', swcHelpers.classPrivateFieldGet(this, _nodes2)); + return { + id, + nodes: seqNextElement.array(swcHelpers.classPrivateFieldGet(this, _nodes2)) + }; + } + constructor(...args){ + super(...args); + swcHelpers.classPrivateFieldInit(this, _nodes2, { + writable: true, + value: [] + }); + } +} +var _seqBuilder1 = new WeakMap(); +class ArticleSourceBuilder extends _abstractBuilders.AbstractBuilder { + nodes(...nodes) { + swcHelpers.classPrivateFieldGet(this, _seqBuilder1).nodes([ + nodes + ]); + return this; + } + build() { + return swcHelpers.classPrivateFieldGet(this, _seqBuilder1).build(); + } + constructor(...nodes){ + super(); + swcHelpers.classPrivateFieldInit(this, _seqBuilder1, { + writable: true, + value: new ArticleSourceSeqBuilder() + }); + this.nodes(...nodes); + } +} +var _nodes3 = new WeakMap(), _hidden1 = new WeakMap(); +class ArticleSourcesBuilder extends _abstractBuilders.AbstractBuilder { + nodes(...nodes) { + swcHelpers.classPrivateFieldSet(this, _nodes3, nodes.map(_builderUtils.mapBuildArg)); + return this; + } + hidden(...hidden) { + swcHelpers.classPrivateFieldSet(this, _hidden1, hidden.map(_builderUtils.mapBuildArg)); + return this; + } + build() { + return { + nodes: swcHelpers.classPrivateFieldGet(this, _nodes3), + hidden: swcHelpers.classPrivateFieldGet(this, _hidden1) + }; + } + constructor(...args){ + super(...args); + swcHelpers.classPrivateFieldInit(this, _nodes3, { + writable: true, + value: [] + }); + swcHelpers.classPrivateFieldInit(this, _hidden1, { + writable: true, + value: [] + }); + } +} + +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2lucHV0L2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0QnVpbGRlciwgQWJzdHJhY3RTZXFCdWlsZGVyIH0gZnJvbSAnLi9BYnN0cmFjdEJ1aWxkZXJzJztcbmltcG9ydCB7IGhhc2gsIG1hcEJ1aWxkQXJnLCBtYXBCdWlsZEFyZ3MgfSBmcm9tICcuL0J1aWxkZXIudXRpbHMnO1xuaW1wb3J0IHsgaW1hZ2UgfSBmcm9tICcuL0VsZW1lbnRCdWlsZGVyJztcblxuaW1wb3J0IHR5cGUge1xuICAgIEJvZHksXG4gICAgQm9keVN0YWdlLFxuICAgIFRydXN0Qm94LFxuICAgIFJpY2hUZXh0LFxuICAgIE9wZW5lcixcbiAgICBCb2R5SGVhZGVyLFxuICAgIFN0YWdlLFxuICAgIEFydGljbGVTb3VyY2UsXG4gICAgQXJ0aWNsZVNvdXJjZXMsXG59IGZyb20gJ0BwYXBlci9tb2RlbHMnO1xuaW1wb3J0IHR5cGUgeyBCdWlsZEFyZywgQnVpbGRBcmdzLCBDcmVhdGVCdWlsZGVyLCBTZXFFbGVtZW50LCBTZXFOZXh0RWxlbWVudENvbnZlcnRlciB9IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkIHVzZSB7QnVpbGRlci5ib2R5Lm5vZGUuaW1nKCl9XG4gKi9cbmV4cG9ydCAqIGZyb20gJy4vQm9keU5vZGVzQnVpbGRlcic7XG5leHBvcnQgKiBhcyBub2RlIGZyb20gJy4vQm9keU5vZGVzQnVpbGRlcic7XG5cbmV4cG9ydCBjb25zdCBjcmVhdGU6IENyZWF0ZUJ1aWxkZXI8Qm9keUJ1aWxkZXI+ID0gKCkgPT4gbmV3IEJvZHlCdWlsZGVyKCk7XG5leHBvcnQgY29uc3QgdHJ1c3RCb3g6IENyZWF0ZUJ1aWxkZXI8VHJ1c3RCb3hCdWlsZGVyPiA9ICgpID0+IG5ldyBUcnVzdEJveEJ1aWxkZXIoKTtcbmV4cG9ydCBjb25zdCBvcGVuZXI6IENyZWF0ZUJ1aWxkZXI8T3BlbmVyQnVpbGRlcj4gPSAoKSA9PiBuZXcgT3BlbmVyQnVpbGRlcigpO1xuZXhwb3J0IGNvbnN0IHN0YWdlOiBDcmVhdGVCdWlsZGVyPEJvZHlTdGFnZUJ1aWxkZXI+ID0gKCkgPT4gbmV3IEJvZHlTdGFnZUJ1aWxkZXIoKTtcbmV4cG9ydCBjb25zdCBoZWFkZXI6IENyZWF0ZUJ1aWxkZXI8Qm9keUhlYWRlckJ1aWxkZXI+ID0gKCkgPT4gbmV3IEJvZHlIZWFkZXJCdWlsZGVyKCk7XG5leHBvcnQgY29uc3Qgc291cmNlOiBDcmVhdGVCdWlsZGVyPEFydGljbGVTb3VyY2VCdWlsZGVyLCBCdWlsZEFyZ3M8UmljaFRleHQuTm9kZT4+ID0gKFxuICAgIG5vZGVzOiBCdWlsZEFyZ3M8UmljaFRleHQuTm9kZT4gPSBbXSxcbikgPT4gbmV3IEFydGljbGVTb3VyY2VCdWlsZGVyKC4uLm5vZGVzKTtcbmV4cG9ydCBjb25zdCBzb3VyY2VzOiBDcmVhdGVCdWlsZGVyPEFydGljbGVTb3VyY2VzQnVpbGRlcj4gPSAoKSA9PiBuZXcgQXJ0aWNsZVNvdXJjZXNCdWlsZGVyKCk7XG5cbmV4cG9ydCBjb25zdCBzZXEgPSB7XG4gICAgc3RhZ2U6ICgoKSA9PiBuZXcgQm9keVN0YWdlU2VxQnVpbGRlcigpKSBhcyBDcmVhdGVCdWlsZGVyPEJvZHlTdGFnZVNlcUJ1aWxkZXI+LFxuICAgIHNvdXJjZTogKCgpID0+IG5ldyBBcnRpY2xlU291cmNlU2VxQnVpbGRlcigpKSBhcyBDcmVhdGVCdWlsZGVyPEFydGljbGVTb3VyY2VTZXFCdWlsZGVyPixcbn0gYXMgY29uc3Q7XG5cbmNsYXNzIEJvZHlCdWlsZGVyIGV4dGVuZHMgQWJzdHJhY3RCdWlsZGVyPEJvZHk+IHtcbiAgICAjc3RhZ2VzOiBCb2R5U3RhZ2VbXSA9IFtdO1xuICAgICN0cnVzdEJveD86IFRydXN0Qm94ID0gdW5kZWZpbmVkO1xuICAgICNkaXNjbGFpbWVyPzogUmljaFRleHQuTm9kZVtdID0gdW5kZWZpbmVkO1xuICAgICNhcnRpY2xlU291cmNlcz86IEFydGljbGVTb3VyY2VzID0gdW5kZWZpbmVkO1xuXG4gICAgc3RhZ2VzKC4uLnN0YWdlczogQnVpbGRBcmdzPEJvZHlTdGFnZT4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy4jc3RhZ2VzID0gc3RhZ2VzLm1hcChtYXBCdWlsZEFyZyk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHRydXN0Qm94KHRydXN0Qm94PzogQnVpbGRBcmc8VHJ1c3RCb3g+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuI3RydXN0Qm94ID0gbWFwQnVpbGRBcmcodHJ1c3RCb3gpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBkaXNjbGFpbWVyKGRpc2NsYWltZXI/OiBCdWlsZEFyZ3M8UmljaFRleHQuTm9kZT4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy4jZGlzY2xhaW1lciA9IGRpc2NsYWltZXI/Lm1hcChtYXBCdWlsZEFyZyk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGFydGljbGVTb3VyY2VzKGFydGljbGVTb3VyY2VzPzogQnVpbGRBcmc8QXJ0aWNsZVNvdXJjZXM+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuI2FydGljbGVTb3VyY2VzID0gbWFwQnVpbGRBcmcoYXJ0aWNsZVNvdXJjZXMpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBidWlsZCgpOiBCb2R5IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHN0YWdlczogdGhpcy4jc3RhZ2VzLFxuICAgICAgICAgICAgdHJ1c3RCb3g6IHRoaXMuI3RydXN0Qm94LFxuICAgICAgICAgICAgZGlzY2xhaW1lcjogdGhpcy4jZGlzY2xhaW1lcixcbiAgICAgICAgICAgIGFydGljbGVTb3VyY2VzOiB0aGlzLiNhcnRpY2xlU291cmNlcyxcbiAgICAgICAgfTtcbiAgICB9XG59XG5cbmNsYXNzIFRydXN0Qm94QnVpbGRlciBleHRlbmRzIEFic3RyYWN0QnVpbGRlcjxUcnVzdEJveD4ge1xuICAgICNub2RlczogUmljaFRleHQuTm9kZVtdID0gW107XG4gICAgI2hpZGRlbjogUmljaFRleHQuTm9kZVtdID0gW107XG5cbiAgICBub2Rlcyhub2RlczogQnVpbGRBcmdzPFJpY2hUZXh0Lk5vZGU+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuI25vZGVzID0gbm9kZXMubWFwKG1hcEJ1aWxkQXJnKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgaGlkZGVuKGhpZGRlbjogQnVpbGRBcmdzPFJpY2hUZXh0Lk5vZGU+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuI2hpZGRlbiA9IGhpZGRlbi5tYXAobWFwQnVpbGRBcmcpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBidWlsZCgpOiBUcnVzdEJveCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBub2RlczogdGhpcy4jbm9kZXMsXG4gICAgICAgICAgICBoaWRkZW46IHRoaXMuI2hpZGRlbixcbiAgICAgICAgfTtcbiAgICB9XG59XG5cbmNsYXNzIE9wZW5lckJ1aWxkZXIgZXh0ZW5kcyBBYnN0cmFjdEJ1aWxkZXI8T3BlbmVyPiB7XG4gICAgI2VsZW1lbnQ6IE9wZW5lclsnZWxlbWVudCddID0gaW1hZ2UoKS5idWlsZCgpO1xuXG4gICAgZWxlbWVudChlbGVtZW50OiBCdWlsZEFyZzxPcGVuZXJbJ2VsZW1lbnQnXT4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy4jZWxlbWVudCA9IG1hcEJ1aWxkQXJnKGVsZW1lbnQpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBidWlsZCgpOiBPcGVuZXIge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZWxlbWVudDogdGhpcy4jZWxlbWVudCxcbiAgICAgICAgfTtcbiAgICB9XG59XG5cbmNsYXNzIEJvZHlTdGFnZVNlcUJ1aWxkZXIgZXh0ZW5kcyBBYnN0cmFjdFNlcUJ1aWxkZXI8Qm9keVN0YWdlPiB7XG4gICAgI25vZGVzOiBTZXFFbGVtZW50PFJpY2hUZXh0Lk5vZGVbXT4gPSBbXTtcbiAgICAjaGVhZGVyPzogU2VxRWxlbWVudDxCb2R5SGVhZGVyPiA9IHVuZGVmaW5lZDtcbiAgICAjY29tcGFuaW9uczogU2VxRWxlbWVudDxTdGFnZS5Db21wYW5pb25JdGVtW10+ID0gW107XG4gICAgI2NvbW1lcmNpYWxzRW5kT2ZTdGFnZTogU2VxRWxlbWVudDxSaWNoVGV4dC5Ob2RlW10+ID0gW107XG5cbiAgICBub2Rlcyhub2RlczogU2VxRWxlbWVudDxCdWlsZEFyZ3M8UmljaFRleHQuTm9kZT4+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuI25vZGVzID0gbm9kZXMubWFwKG1hcEJ1aWxkQXJncyk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGhlYWRlcihoZWFkZXI/OiBTZXFFbGVtZW50PEJ1aWxkQXJnPEJvZHlIZWFkZXI+Pik6IHRoaXMge1xuICAgICAgICB0aGlzLiNoZWFkZXIgPSBtYXBCdWlsZEFyZ3MoaGVhZGVyID8/IFtdKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgY29tcGFuaW9ucyhjb21wYW5pb25zOiBTZXFFbGVtZW50PEJ1aWxkQXJnczxTdGFnZS5Db21wYW5pb25JdGVtPj4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy4jY29tcGFuaW9ucyA9IGNvbXBhbmlvbnMubWFwKG1hcEJ1aWxkQXJncyk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGNvbW1lcmNpYWxzRW5kT2ZTdGFnZShjb21tZXJjaWFsc0VuZE9mU3RhZ2U6IFNlcUVsZW1lbnQ8QnVpbGRBcmdzPFJpY2hUZXh0Lk5vZGU+Pik6IHRoaXMge1xuICAgICAgICB0aGlzLiNjb21tZXJjaWFsc0VuZE9mU3RhZ2UgPSBjb21tZXJjaWFsc0VuZE9mU3RhZ2UubWFwKG1hcEJ1aWxkQXJncyk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGJ1aWxkTGlzdEl0ZW0oc2VxTmV4dEVsZW1lbnQ6IFNlcU5leHRFbGVtZW50Q29udmVydGVyKTogQm9keVN0YWdlIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGlkOiBoYXNoKCdib2R5U3RhZ2UnLCB0aGlzLiNub2RlcywgdGhpcy4jY29tcGFuaW9ucywgdGhpcy4jY29tbWVyY2lhbHNFbmRPZlN0YWdlLCB0aGlzLiNoZWFkZXIpLFxuICAgICAgICAgICAgbm9kZXM6IHNlcU5leHRFbGVtZW50LmFycmF5KHRoaXMuI25vZGVzKSxcbiAgICAgICAgICAgIGhlYWRlcjogc2VxTmV4dEVsZW1lbnQubWF5YmUodGhpcy4jaGVhZGVyKSxcbiAgICAgICAgICAgIGNvbXBhbmlvbnM6IHNlcU5leHRFbGVtZW50LmFycmF5KHRoaXMuI2NvbXBhbmlvbnMpLFxuICAgICAgICAgICAgY29tbWVyY2lhbHNFbmRPZlN0YWdlOiBzZXFOZXh0RWxlbWVudC5hcnJheSh0aGlzLiNjb21tZXJjaWFsc0VuZE9mU3RhZ2UpLFxuICAgICAgICB9O1xuICAgIH1cbn1cblxuY2xhc3MgQm9keVN0YWdlQnVpbGRlciBleHRlbmRzIEFic3RyYWN0QnVpbGRlcjxCb2R5U3RhZ2U+IHtcbiAgICAjc2VxQnVpbGRlcjogQm9keVN0YWdlU2VxQnVpbGRlciA9IG5ldyBCb2R5U3RhZ2VTZXFCdWlsZGVyKCk7XG5cbiAgICBub2Rlcyhub2RlczogQnVpbGRBcmdzPFJpY2hUZXh0Lk5vZGU+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuI3NlcUJ1aWxkZXIubm9kZXMoW25vZGVzXSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGhlYWRlcihoZWFkZXI/OiBCdWlsZEFyZzxCb2R5SGVhZGVyPik6IHRoaXMge1xuICAgICAgICBpZiAoaGVhZGVyKSB7XG4gICAgICAgICAgICB0aGlzLiNzZXFCdWlsZGVyLmhlYWRlcihbaGVhZGVyXSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgY29tcGFuaW9ucyhjb21wYW5pb25zOiBCdWlsZEFyZ3M8U3RhZ2UuQ29tcGFuaW9uSXRlbT4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy4jc2VxQnVpbGRlci5jb21wYW5pb25zKFtjb21wYW5pb25zXSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGNvbW1lcmNpYWxzRW5kT2ZTdGFnZShjb21tZXJjaWFsc0VuZE9mU3RhZ2U6IEJ1aWxkQXJnczxSaWNoVGV4dC5Ob2RlPik6IHRoaXMge1xuICAgICAgICB0aGlzLiNzZXFCdWlsZGVyLmNvbW1lcmNpYWxzRW5kT2ZTdGFnZShbY29tbWVyY2lhbHNFbmRPZlN0YWdlXSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGJ1aWxkKCk6IEJvZHlTdGFnZSB7XG4gICAgICAgIHJldHVybiB0aGlzLiNzZXFCdWlsZGVyLmJ1aWxkKCk7XG4gICAgfVxufVxuXG5jbGFzcyBCb2R5SGVhZGVyQnVpbGRlciBleHRlbmRzIEFic3RyYWN0QnVpbGRlcjxCb2R5SGVhZGVyPiB7XG4gICAgI3ZhcmlhbnQ6IEJvZHlIZWFkZXJbJ3ZhcmlhbnQnXSA9ICdmdWxsJztcbiAgICAjb3BlbmVyPzogT3BlbmVyID0gdW5kZWZpbmVkO1xuXG4gICAgdmFyaWFudCh2YXJpYW50OiBCb2R5SGVhZGVyWyd2YXJpYW50J10pOiB0aGlzIHtcbiAgICAgICAgdGhpcy4jdmFyaWFudCA9IHZhcmlhbnQ7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIG9wZW5lcihvcGVuZXI6IEJ1aWxkQXJnPE9wZW5lcj4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy4jb3BlbmVyID0gbWFwQnVpbGRBcmcob3BlbmVyKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgYnVpbGQoKTogQm9keUhlYWRlciB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB2YXJpYW50OiB0aGlzLiN2YXJpYW50LFxuICAgICAgICAgICAgb3BlbmVyOiB0aGlzLiNvcGVuZXIsXG4gICAgICAgIH07XG4gICAgfVxufVxuXG5jbGFzcyBBcnRpY2xlU291cmNlU2VxQnVpbGRlciBleHRlbmRzIEFic3RyYWN0U2VxQnVpbGRlcjxBcnRpY2xlU291cmNlPiB7XG4gICAgI25vZGVzOiBTZXFFbGVtZW50PFJpY2hUZXh0Lk5vZGVbXT4gPSBbXTtcblxuICAgIG5vZGVzKG5vZGVzOiBTZXFFbGVtZW50PEJ1aWxkQXJnczxSaWNoVGV4dC5Ob2RlPj4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy4jbm9kZXMgPSBub2Rlcy5tYXAobWFwQnVpbGRBcmdzKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgYnVpbGRMaXN0SXRlbShzZXFOZXh0RWxlbWVudDogU2VxTmV4dEVsZW1lbnRDb252ZXJ0ZXIpOiBBcnRpY2xlU291cmNlIHtcbiAgICAgICAgY29uc3QgaWQgPSBoYXNoKCdhcnRpY2xlLXNvdXJjZScsIHRoaXMuI25vZGVzKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgbm9kZXM6IHNlcU5leHRFbGVtZW50LmFycmF5KHRoaXMuI25vZGVzKSxcbiAgICAgICAgfTtcbiAgICB9XG59XG5cbmNsYXNzIEFydGljbGVTb3VyY2VCdWlsZGVyIGV4dGVuZHMgQWJzdHJhY3RCdWlsZGVyPEFydGljbGVTb3VyY2U+IHtcbiAgICAjc2VxQnVpbGRlcjogQXJ0aWNsZVNvdXJjZVNlcUJ1aWxkZXIgPSBuZXcgQXJ0aWNsZVNvdXJjZVNlcUJ1aWxkZXIoKTtcblxuICAgIGNvbnN0cnVjdG9yKC4uLm5vZGVzOiBCdWlsZEFyZ3M8UmljaFRleHQuTm9kZT4pIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5ub2RlcyguLi5ub2Rlcyk7XG4gICAgfVxuXG4gICAgbm9kZXMoLi4ubm9kZXM6IEJ1aWxkQXJnczxSaWNoVGV4dC5Ob2RlPik6IHRoaXMge1xuICAgICAgICB0aGlzLiNzZXFCdWlsZGVyLm5vZGVzKFtub2Rlc10pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBidWlsZCgpOiBBcnRpY2xlU291cmNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuI3NlcUJ1aWxkZXIuYnVpbGQoKTtcbiAgICB9XG59XG5cbmNsYXNzIEFydGljbGVTb3VyY2VzQnVpbGRlciBleHRlbmRzIEFic3RyYWN0QnVpbGRlcjxBcnRpY2xlU291cmNlcz4ge1xuICAgICNub2RlczogQXJ0aWNsZVNvdXJjZVtdID0gW107XG4gICAgI2hpZGRlbjogQXJ0aWNsZVNvdXJjZVtdID0gW107XG5cbiAgICBub2RlcyguLi5ub2RlczogQnVpbGRBcmdzPEFydGljbGVTb3VyY2U+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuI25vZGVzID0gbm9kZXMubWFwKG1hcEJ1aWxkQXJnKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgaGlkZGVuKC4uLmhpZGRlbjogQnVpbGRBcmdzPEFydGljbGVTb3VyY2U+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuI2hpZGRlbiA9IGhpZGRlbi5tYXAobWFwQnVpbGRBcmcpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBidWlsZCgpOiBBcnRpY2xlU291cmNlcyB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBub2RlczogdGhpcy4jbm9kZXMsXG4gICAgICAgICAgICBoaWRkZW46IHRoaXMuI2hpZGRlbixcbiAgICAgICAgfTtcbiAgICB9XG59Il0sIm5hbWVzIjpbIm5vZGUiLCJjcmVhdGUiLCJCb2R5QnVpbGRlciIsInRydXN0Qm94IiwiVHJ1c3RCb3hCdWlsZGVyIiwib3BlbmVyIiwiT3BlbmVyQnVpbGRlciIsInN0YWdlIiwiQm9keVN0YWdlQnVpbGRlciIsImhlYWRlciIsIkJvZHlIZWFkZXJCdWlsZGVyIiwic291cmNlIiwibm9kZXMiLCJBcnRpY2xlU291cmNlQnVpbGRlciIsInNvdXJjZXMiLCJBcnRpY2xlU291cmNlc0J1aWxkZXIiLCJzZXEiLCJCb2R5U3RhZ2VTZXFCdWlsZGVyIiwiQXJ0aWNsZVNvdXJjZVNlcUJ1aWxkZXIiLCJBYnN0cmFjdEJ1aWxkZXIiLCJzdGFnZXMiLCJtYXAiLCJtYXBCdWlsZEFyZyIsImRpc2NsYWltZXIiLCJhcnRpY2xlU291cmNlcyIsImJ1aWxkIiwidW5kZWZpbmVkIiwiaGlkZGVuIiwiZWxlbWVudCIsImltYWdlIiwiQWJzdHJhY3RTZXFCdWlsZGVyIiwibWFwQnVpbGRBcmdzIiwiY29tcGFuaW9ucyIsImNvbW1lcmNpYWxzRW5kT2ZTdGFnZSIsImJ1aWxkTGlzdEl0ZW0iLCJzZXFOZXh0RWxlbWVudCIsImlkIiwiaGFzaCIsImFycmF5IiwibWF5YmUiLCJzZXFCdWlsZGVyIiwidmFyaWFudCJdLCJtYXBwaW5ncyI6Ilk7OztFOzs7Ozs0Sjs7QUFBb0QsR0FBb0IsQ0FBcEIsaUJBQW9CO0FBQ3hCLEdBQWlCLENBQWpCLGFBQWlCO0FBQzNDLEdBQWtCLENBQWxCLGVBQWtCO0FBbUI1QkEsR0FBSSxDQUFKQSxLQUFJO1lBQUpBLEtBQUk7OzsyQ0FBSkEsS0FBSTs7OzttQkFBSkEsS0FBSTs7TTtFO1FBQUpBLElBQUksR0FBSkEsS0FBSSxBO0FBRVQsS0FBSyxDQUFDQyxNQUFNLE9BQXFDLEdBQUcsQ0FBQ0MsV0FBVzs7UUFBMURELE1BQU0sR0FBTkEsTUFBTSxBO0FBQ1osS0FBSyxDQUFDRSxRQUFRLE9BQXlDLEdBQUcsQ0FBQ0MsZUFBZTs7UUFBcEVELFFBQVEsR0FBUkEsUUFBUSxBO0FBQ2QsS0FBSyxDQUFDRSxNQUFNLE9BQXVDLEdBQUcsQ0FBQ0MsYUFBYTs7UUFBOURELE1BQU0sR0FBTkEsTUFBTSxBO0FBQ1osS0FBSyxDQUFDRSxLQUFLLE9BQTBDLEdBQUcsQ0FBQ0MsZ0JBQWdCOztRQUFuRUQsS0FBSyxHQUFMQSxLQUFLLEE7QUFDWCxLQUFLLENBQUNFLE1BQU0sT0FBMkMsR0FBRyxDQUFDQyxpQkFBaUI7O1FBQXRFRCxNQUFNLEdBQU5BLE1BQU0sQTtBQUNaLEtBQUssQ0FBQ0UsTUFBTSxJQUNmQyxLQUErQixHQUFHLENBQUMsQ0FBQyxHQUNu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