diff --git a/lib/vscode/.devcontainer/README.md b/lib/vscode/.devcontainer/README.md
deleted file mode 100644
index 827166823d73..000000000000
--- a/lib/vscode/.devcontainer/README.md
+++ /dev/null
@@ -1,101 +0,0 @@
-# Code - OSS Development Container
-
-This repository includes configuration for a development container for working with Code - OSS in a local container or using [GitHub Codespaces](https://github.com/features/codespaces).
-
-> **Tip:** The default VNC password is `vscode`. The VNC server runs on port `5901` and a web client is available on port `6080`.
-
-## Quick start - local
-
-1. Install Docker Desktop or Docker for Linux on your local machine. (See [docs](https://aka.ms/vscode-remote/containers/getting-started) for additional details.)
-
-2. **Important**: Docker needs at least **4 Cores and 6 GB of RAM (8 GB recommended)** to run a full build. If you are on macOS, or are using the old Hyper-V engine for Windows, update these values for Docker Desktop by right-clicking on the Docker status bar item and going to **Preferences/Settings > Resources > Advanced**.
-
-    > **Note:** The [Resource Monitor](https://marketplace.visualstudio.com/items?itemName=mutantdino.resourcemonitor) extension is included in the container so you can keep an eye on CPU/Memory in the status bar.
-
-3. Install [Visual Studio Code Stable](https://code.visualstudio.com/) or [Insiders](https://code.visualstudio.com/insiders/) and the [Remote - Containers](https://aka.ms/vscode-remote/download/containers) extension.
-
-    ![Image of Remote - Containers extension](https://microsoft.github.io/vscode-remote-release/images/remote-containers-extn.png)
-
-    > **Note:** The Remote - Containers extension requires the Visual Studio Code distribution of Code - OSS. See the [FAQ](https://aka.ms/vscode-remote/faq/license) for details.
-
-4. Press <kbd>Ctrl/Cmd</kbd> + <kbd>Shift</kbd> + <kbd>P</kbd> or <kbd>F1</kbd> and select **Remote-Containers: Clone Repository in Container Volume...**.
-
-    > **Tip:** While you can use your local source tree instead, operations like `yarn install` can be slow on macOS or when using the Hyper-V engine on Windows. We recommend the "clone repository in container" approach instead since it uses "named volume" rather than the local filesystem.
-
-5. Type `https://github.com/microsoft/vscode` (or a branch or PR URL) in the input box and press <kbd>Enter</kbd>.
-
-6. After the container is running, open a web browser and go to [http://localhost:6080](http://localhost:6080), or use a [VNC Viewer](https://www.realvnc.com/en/connect/download/viewer/) to connect to `localhost:5901` and enter `vscode` as the password.
-
-Anything you start in VS Code, or the integrated terminal, will appear here.
-
-Next: **[Try it out!](#try-it)**
-
-## Quick start - GitHub Codespaces
-
-1. From the [microsoft/vscode GitHub repository](https://github.com/microsoft/vscode), click on the **Code** dropdown, select **Open with Codespaces**, and then click on **New codespace**. If prompted, select the **Standard** machine size (which is also the default).
-
-   > **Note:** You will not see these options within GitHub if you are not in the Codespaces beta.
-
-2. After the codespace is up and running in your browser, press <kbd>Ctrl/Cmd</kbd> + <kbd>Shift</kbd> + <kbd>P</kbd> or <kbd>F1</kbd> and select **Ports: Focus on Ports View**.
-
-3. You should see **VNC web client (6080)** under in the list of ports. Select the line and click on the globe icon to open it in a browser tab.
-
-    > **Tip:** If you do not see the port, <kbd>Ctrl/Cmd</kbd> + <kbd>Shift</kbd> + <kbd>P</kbd> or <kbd>F1</kbd>, select **Forward a Port** and enter port `6080`.
-
-4. In the new tab, you should see noVNC. Click **Connect** and enter `vscode` as the password.
-
-Anything you start in VS Code, or the integrated terminal, will appear here.
-
-Next: **[Try it out!](#try-it)**
-
-### Using VS Code with GitHub Codespaces
-
-You may see improved VNC responsiveness when accessing a codespace from VS Code client since you can use a [VNC Viewer](https://www.realvnc.com/en/connect/download/viewer/). Here's how to do it.
-
-1.  Install [Visual Studio Code Stable](https://code.visualstudio.com/) or [Insiders](https://code.visualstudio.com/insiders/) and the the [GitHub Codespaces extension](https://marketplace.visualstudio.com/items?itemName=GitHub.codespaces).
-
-	> **Note:** The GitHub Codespaces extension requires the Visual Studio Code distribution of Code - OSS.
-
-2. After the VS Code is up and running, press <kbd>Ctrl/Cmd</kbd> + <kbd>Shift</kbd> + <kbd>P</kbd> or <kbd>F1</kbd>, choose **Codespaces: Create New Codespace**, and use the following settings:
-    - `microsoft/vscode` for the repository.
-	- Select any branch (e.g. **main**) - you select a different one later.
-	- Choose **Standard** (4-core, 8GB) as the size.
-
-4. After you have connected to the codespace, you can use a [VNC Viewer](https://www.realvnc.com/en/connect/download/viewer/) to connect to `localhost:5901` and enter `vscode` as the password.
-
-    > **Tip:** You may also need change your VNC client's **Picture Quaility** setting to **High** to get a full color desktop.
-
-5. Anything you start in VS Code, or the integrated terminal, will appear here.
-
-Next: **[Try it out!](#try-it)**
-
-## Try it!
-
-This container uses the [Fluxbox](http://fluxbox.org/) window manager to keep things lean. **Right-click on the desktop** to see menu options. It works with GNOME and GTK applications, so other tools can be installed if needed.
-
-> **Note:** You can also set the resolution from the command line by typing `set-resolution`.
-
-To start working with Code - OSS, follow these steps:
-
-1. In your local VS Code client, open a terminal (<kbd>Ctrl/Cmd</kbd> + <kbd>Shift</kbd> + <kbd>\`</kbd>) and type the following commands:
-
-    ```bash
-    yarn install
-    bash scripts/code.sh
-    ```
-
-2. After the build is complete, open a web browser or a [VNC Viewer](https://www.realvnc.com/en/connect/download/viewer/) to connect to the desktop environment as described in the quick start and enter `vscode` as the password.
-
-3. You should now see Code - OSS!
-
-Next, let's try debugging.
-
-1. Shut down Code - OSS by clicking the box in the upper right corner of the Code - OSS window through your browser or VNC viewer.
-
-2. Go to your local VS Code client, and use the **Run / Debug** view to launch the **VS Code** configuration. (Typically the default, so you can likely just press <kbd>F5</kbd>).
-
-    > **Note:** If launching times out, you can increase the value of `timeout` in the "VS Code", "Attach Main Process", "Attach Extension Host", and "Attach to Shared Process" configurations in [launch.json](../.vscode/launch.json). However, running `scripts/code.sh` first will set up Electron which will usually solve timeout issues.
-
-3. After a bit, Code - OSS will appear with the debugger attached!
-
-Enjoy!
diff --git a/lib/vscode/.devcontainer/cache/.gitignore b/lib/vscode/.devcontainer/cache/.gitignore
deleted file mode 100644
index 4f96ddff4023..000000000000
--- a/lib/vscode/.devcontainer/cache/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-*.manifest
diff --git a/lib/vscode/.devcontainer/cache/before-cache.sh b/lib/vscode/.devcontainer/cache/before-cache.sh
deleted file mode 100755
index cfa7acc9d957..000000000000
--- a/lib/vscode/.devcontainer/cache/before-cache.sh
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/bin/bash
-
-# This file establishes a basline for the reposuitory before any steps in the "prepare.sh"
-# are run. Its just a find command that filters out a few things we don't need to watch.
-
-set -e
-
-SCRIPT_PATH="$(cd "$(dirname $0)" && pwd)"
-SOURCE_FOLDER="${1:-"."}"
-
-cd "${SOURCE_FOLDER}"
-echo "[$(date)] Generating ""before"" manifest..."
-find -L . -not -path "*/.git/*" -and -not -path "${SCRIPT_PATH}/*.manifest" -type f >  "${SCRIPT_PATH}/before.manifest"
-echo "[$(date)] Done!"
-
diff --git a/lib/vscode/.devcontainer/cache/build-cache-image.sh b/lib/vscode/.devcontainer/cache/build-cache-image.sh
deleted file mode 100755
index 42e143d7af43..000000000000
--- a/lib/vscode/.devcontainer/cache/build-cache-image.sh
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/bin/bash
-
-# This file simply wraps the dockeer build command used to build the image with the
-# cached result of the commands from "prepare.sh" and pushes it to the specified
-# container image registry.
-
-set -e
-
-SCRIPT_PATH="$(cd "$(dirname $0)" && pwd)"
-CONTAINER_IMAGE_REPOSITORY="$1"
-BRANCH="${2:-"main"}"
-
-if [ "${CONTAINER_IMAGE_REPOSITORY}" = "" ]; then
-	echo "Container repository not specified!"
-	exit 1
-fi
-
-TAG="branch-${BRANCH//\//-}"
-echo "[$(date)] ${BRANCH} => ${TAG}"
-cd "${SCRIPT_PATH}/../.."
-
-echo "[$(date)] Starting image build..."
-docker build -t ${CONTAINER_IMAGE_REPOSITORY}:"${TAG}" -f "${SCRIPT_PATH}/cache.Dockerfile" .
-echo "[$(date)] Image build complete."
-
-echo "[$(date)] Pushing image..."
-docker push ${CONTAINER_IMAGE_REPOSITORY}:"${TAG}"
-echo "[$(date)] Done!"
diff --git a/lib/vscode/.devcontainer/cache/cache-diff.sh b/lib/vscode/.devcontainer/cache/cache-diff.sh
deleted file mode 100755
index 362337ce6eb0..000000000000
--- a/lib/vscode/.devcontainer/cache/cache-diff.sh
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/bin/bash
-
-# This file is used to archive off a copy of any differences in the source tree into another location
-# in the image. Once the codespace is up, this will be restored into its proper location (which is
-# quick and happens parallel to other startup activities)
-
-set -e
-
-SCRIPT_PATH="$(cd "$(dirname $0)" && pwd)"
-SOURCE_FOLDER="${1:-"."}"
-CACHE_FOLDER="${2:-"/usr/local/etc/devcontainer-cache"}"
-
-echo "[$(date)] Starting cache operation..."
-cd "${SOURCE_FOLDER}"
-echo "[$(date)] Determining diffs..."
-find -L . -not -path "*/.git/*" -and -not -path "${SCRIPT_PATH}/*.manifest" -type f > "${SCRIPT_PATH}/after.manifest"
-grep -Fxvf  "${SCRIPT_PATH}/before.manifest" "${SCRIPT_PATH}/after.manifest" > "${SCRIPT_PATH}/cache.manifest"
-echo "[$(date)] Archiving diffs..."
-mkdir -p "${CACHE_FOLDER}"
-tar -cf "${CACHE_FOLDER}/cache.tar" --totals --files-from "${SCRIPT_PATH}/cache.manifest"
-echo "[$(date)] Done! $(du -h "${CACHE_FOLDER}/cache.tar")"
diff --git a/lib/vscode/.devcontainer/cache/cache.Dockerfile b/lib/vscode/.devcontainer/cache/cache.Dockerfile
deleted file mode 100644
index 79af3ee8a355..000000000000
--- a/lib/vscode/.devcontainer/cache/cache.Dockerfile
+++ /dev/null
@@ -1,14 +0,0 @@
-# This dockerfile is used to build up from a base image to create an image with cached results of running "prepare.sh".
-# Other image contents: https://github.com/microsoft/vscode-dev-containers/blob/master/repository-containers/images/github.com/microsoft/vscode/.devcontainer/base.Dockerfile
-FROM mcr.microsoft.com/vscode/devcontainers/repos/microsoft/vscode:dev
-
-ARG USERNAME=node
-COPY --chown=${USERNAME}:${USERNAME} . /repo-source-tmp/
-RUN mkdir /usr/local/etc/devcontainer-cache \
-	&& chown ${USERNAME} /usr/local/etc/devcontainer-cache /repo-source-tmp \
-	&& su ${USERNAME} -c "\
-		cd /repo-source-tmp \
-		&& .devcontainer/cache/before-cache.sh \
-		&& .devcontainer/prepare.sh \
-		&& .devcontainer/cache/cache-diff.sh" \
-	&& rm -rf /repo-source-tmp
diff --git a/lib/vscode/.devcontainer/cache/restore-diff.sh b/lib/vscode/.devcontainer/cache/restore-diff.sh
deleted file mode 100755
index 2f418d874809..000000000000
--- a/lib/vscode/.devcontainer/cache/restore-diff.sh
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/bash
-
-# This file restores the results of the "prepare.sh" into their proper locations
-# once the container has been created. It runs as a postCreateCommand which
-# in GitHub Codespaces occurs parallel to other startup activities and does not
-# really add to the overal startup time given how quick the operation ends up being.
-
-set -e
-
-SOURCE_FOLDER="$(cd "${1:-"."}" && pwd)"
-CACHE_FOLDER="${2:-"/usr/local/etc/devcontainer-cache"}"
-
-if [ ! -d "${CACHE_FOLDER}" ]; then
-	echo "No cache folder found."
-	exit 0
-fi
-
-echo "[$(date)] Expanding $(du -h "${CACHE_FOLDER}/cache.tar") file to ${SOURCE_FOLDER}..."
-cd "${SOURCE_FOLDER}"
-tar -xf "${CACHE_FOLDER}/cache.tar"
-rm -f "${CACHE_FOLDER}/cache.tar"
-echo "[$(date)] Done!"
-
diff --git a/lib/vscode/.devcontainer/devcontainer.json b/lib/vscode/.devcontainer/devcontainer.json
deleted file mode 100644
index d66344eccf65..000000000000
--- a/lib/vscode/.devcontainer/devcontainer.json
+++ /dev/null
@@ -1,36 +0,0 @@
-{
-	"name": "Code - OSS",
-
-	// Image contents: https://github.com/microsoft/vscode-dev-containers/blob/master/repository-containers/images/github.com/microsoft/vscode/.devcontainer/base.Dockerfile
-	"image": "mcr.microsoft.com/vscode/devcontainers/repos/microsoft/vscode:branch-main",
-	"overrideCommand": false,
-	"runArgs": [ "--init", "--security-opt", "seccomp=unconfined"],
-
-	"settings": {
-		"resmon.show.battery": false,
-		"resmon.show.cpufreq": false
-	},
-
-	// noVNC, VNC
-	"forwardPorts": [6080, 5901],
-	"portsAttributes": {
-		"6080": {
-			"label": "VNC web client (noVNC)",
-			"onAutoForward": "silent"
-		},
-		"5901": {
-			"label": "VNC TCP port",
-			"onAutoForward": "silent"
-		}
-	},
-
-	"extensions": [
-		"dbaeumer.vscode-eslint",
-		"mutantdino.resourcemonitor"
-	],
-
-	// Optionally loads a cached yarn install for the repo
-	"postCreateCommand": ".devcontainer/cache/restore-diff.sh",
-
-	"remoteUser": "node"
-}
diff --git a/lib/vscode/.devcontainer/prepare.sh b/lib/vscode/.devcontainer/prepare.sh
deleted file mode 100755
index 47a77a533aec..000000000000
--- a/lib/vscode/.devcontainer/prepare.sh
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/bash
-
-# This file contains the steps that should be run when creating the intermediary image that contains
-# contents for that should be in the image by default. It will be used to build up from the base image
-# to create an image that speeds up first time use of the dev container by "caching" the results
-# of these commands. Developers can still run these commands without an issue once the container is
-# up, but only differences will be processed which also speeds up the first time these operations occur.
-
-yarn install
-yarn electron
diff --git a/lib/vscode/.editorconfig b/lib/vscode/.editorconfig
deleted file mode 100644
index e7e99b5bcb52..000000000000
--- a/lib/vscode/.editorconfig
+++ /dev/null
@@ -1,15 +0,0 @@
-# EditorConfig is awesome: https://EditorConfig.org
-
-# top-most EditorConfig file
-root = true
-
-# Tab indentation
-[*]
-indent_style = tab
-trim_trailing_whitespace = true
-
-# The indent size used in the `package.json` file cannot be changed
-# https://github.com/npm/npm/pull/3180#issuecomment-16336516
-[{*.yml,*.yaml,package.json}]
-indent_style = space
-indent_size = 2
diff --git a/lib/vscode/.eslintignore b/lib/vscode/.eslintignore
deleted file mode 100644
index f9c117426c75..000000000000
--- a/lib/vscode/.eslintignore
+++ /dev/null
@@ -1,23 +0,0 @@
-**/vs/nls.build.js
-**/vs/nls.js
-**/vs/css.build.js
-**/vs/css.js
-**/vs/loader.js
-**/insane/**
-**/marked/**
-**/semver/**
-**/test/**/*.js
-**/node_modules/**
-**/vscode-api-tests/testWorkspace/**
-**/vscode-api-tests/testWorkspace2/**
-**/extensions/**/out/**
-**/extensions/**/build/**
-**/extensions/markdown-language-features/media/**
-**/extensions/markdown-language-features/notebook-out/**
-**/extensions/typescript-basics/test/colorize-fixtures/**
-**/extensions/**/dist/**
-# These are code-server code symlinks.
-src/vs/base/common/util.ts
-src/vs/base/common/ipc.d.ts
-src/vs/base/node/proxy_agent.ts
-src/vs/server/uriTransformer.ts
diff --git a/lib/vscode/.eslintrc.json b/lib/vscode/.eslintrc.json
deleted file mode 100644
index dac80d296476..000000000000
--- a/lib/vscode/.eslintrc.json
+++ /dev/null
@@ -1,1036 +0,0 @@
-{
-	"root": true,
-	"parser": "@typescript-eslint/parser",
-	"parserOptions": {
-		"ecmaVersion": 6,
-		"sourceType": "module"
-	},
-	"plugins": [
-		"@typescript-eslint",
-		"jsdoc"
-	],
-	"rules": {
-		"constructor-super": "warn",
-		"curly": "warn",
-		"eqeqeq": "warn",
-		"no-buffer-constructor": "warn",
-		"no-caller": "warn",
-		"no-debugger": "warn",
-		"no-duplicate-case": "warn",
-		"no-duplicate-imports": "warn",
-		"no-eval": "warn",
-		"no-extra-semi": "warn",
-		"no-new-wrappers": "warn",
-		"no-redeclare": "off",
-		"no-sparse-arrays": "warn",
-		"no-throw-literal": "warn",
-		"no-unsafe-finally": "warn",
-		"no-unused-labels": "warn",
-		"no-restricted-globals": [
-			"warn",
-			"name",
-			"length",
-			"event",
-			"closed",
-			"external",
-			"status",
-			"origin",
-			"orientation",
-			"context"
-		], // non-complete list of globals that are easy to access unintentionally
-		"no-var": "warn",
-		"jsdoc/no-types": "warn",
-		"semi": "off",
-		"@typescript-eslint/semi": "warn",
-		"@typescript-eslint/naming-convention": [
-			"warn",
-			{
-				"selector": "class",
-				"format": [
-					"PascalCase"
-				]
-			}
-		],
-		"code-no-unused-expressions": [
-			"warn",
-			{
-				"allowTernary": true
-			}
-		],
-		"code-translation-remind": "warn",
-		"code-no-nls-in-standalone-editor": "warn",
-		"code-no-standalone-editor": "warn",
-		"code-no-unexternalized-strings": "warn",
-		"code-layering": [
-			"warn",
-			{
-				"common": [],
-				"node": [
-					"common"
-				],
-				"browser": [
-					"common"
-				],
-				"electron-sandbox": [
-					"common",
-					"browser"
-				],
-				"electron-browser": [
-					"common",
-					"browser",
-					"node",
-					"electron-sandbox"
-				],
-				"electron-main": [
-					"common",
-					"node"
-				]
-			}
-		],
-		"code-import-patterns": [
-			"warn",
-			// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-			// !!! Do not relax these rules !!!
-			// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-			{
-				"target": "**/vs/base/common/**",
-				"restrictions": [
-					"vs/nls",
-					"**/vs/base/common/**"
-				]
-			},
-			{
-				"target": "**/vs/base/test/common/**",
-				"restrictions": [
-					"assert",
-					"sinon",
-					"vs/nls",
-					"**/vs/base/common/**",
-					"**/vs/base/test/common/**"
-				]
-			},
-			{
-				"target": "**/vs/base/browser/**",
-				"restrictions": [
-					"vs/nls",
-					"vs/css!./**/*",
-					"**/vs/base/{common,browser}/**"
-				]
-			},
-			{
-				"target": "**/vs/base/electron-sandbox/**",
-				"restrictions": [
-					"vs/nls",
-					"vs/css!./**/*",
-					"**/vs/base/{common,browser,electron-sandbox}/**"
-				]
-			},
-			{
-				"target": "**/vs/base/node/**",
-				"restrictions": [
-					"vs/nls",
-					"**/vs/base/{common,node}/**",
-					"*" // node modules
-				]
-			},
-			{
-				// vs/base/test/browser contains tests for vs/base/browser
-				"target": "**/vs/base/test/browser/**",
-				"restrictions": [
-					"assert",
-					"sinon",
-					"vs/nls",
-					"**/vs/base/{common,browser}/**",
-					"**/vs/base/test/{common,browser}/**"
-				]
-			},
-			{
-				"target": "**/vs/base/parts/*/common/**",
-				"restrictions": [
-					"vs/nls",
-					"**/vs/base/common/**",
-					"**/vs/base/parts/*/common/**"
-				]
-			},
-			{
-				"target": "**/vs/base/parts/*/browser/**",
-				"restrictions": [
-					"vs/nls",
-					"vs/css!./**/*",
-					"**/vs/base/{common,browser}/**",
-					"**/vs/base/parts/*/{common,browser}/**"
-				]
-			},
-			{
-				"target": "**/vs/base/parts/*/node/**",
-				"restrictions": [
-					"vs/nls",
-					"**/vs/base/{common,node}/**",
-					"**/vs/base/parts/*/{common,node}/**",
-					"*" // node modules
-				]
-			},
-			{
-				"target": "**/vs/base/parts/*/electron-sandbox/**",
-				"restrictions": [
-					"vs/nls",
-					"vs/css!./**/*",
-					"**/vs/base/{common,browser,electron-sandbox}/**",
-					"**/vs/base/parts/*/{common,browser,electron-sandbox}/**"
-				]
-			},
-			{
-				"target": "**/vs/base/parts/*/electron-browser/**",
-				"restrictions": [
-					"vs/nls",
-					"vs/css!./**/*",
-					"**/vs/base/{common,browser,node,electron-sandbox,electron-browser}/**",
-					"**/vs/base/parts/*/{common,browser,node,electron-sandbox,electron-browser}/**",
-					"*" // node modules
-				]
-			},
-			{
-				"target": "**/vs/base/parts/*/electron-main/**",
-				"restrictions": [
-					"vs/nls",
-					"**/vs/base/{common,node,electron-main}/**",
-					"**/vs/base/parts/*/{common,node,electron-main}/**",
-					"*" // node modules
-				]
-			},
-			{
-				"target": "**/vs/platform/*/common/**",
-				"restrictions": [
-					"vs/nls",
-					"**/vs/base/common/**",
-					"**/vs/base/parts/*/common/**",
-					"**/vs/platform/*/common/**"
-				]
-			},
-			{
-				"target": "**/vs/platform/*/test/common/**",
-				"restrictions": [
-					"assert",
-					"sinon",
-					"vs/nls",
-					"**/vs/base/common/**",
-					"**/vs/base/parts/*/common/**",
-					"**/vs/base/test/common/**",
-					"**/vs/platform/*/common/**",
-					"**/vs/platform/*/test/common/**"
-				]
-			},
-			{
-				"target": "**/vs/platform/*/browser/**",
-				"restrictions": [
-					"vs/nls",
-					"vs/css!./**/*",
-					"**/vs/base/{common,browser}/**",
-					"**/vs/base/parts/*/{common,browser}/**",
-					"**/vs/platform/*/{common,browser}/**"
-				]
-			},
-			{
-				"target": "**/vs/platform/*/node/**",
-				"restrictions": [
-					"vs/nls",
-					"**/vs/base/{common,node}/**",
-					"**/vs/base/parts/*/{common,node}/**",
-					"**/vs/platform/*/{common,node}/**",
-					"*" // node modules
-				]
-			},
-			{
-				"target": "**/vs/platform/*/electron-sandbox/**",
-				"restrictions": [
-					"vs/nls",
-					"vs/css!./**/*",
-					"**/vs/base/{common,browser,electron-sandbox}/**",
-					"**/vs/base/parts/*/{common,browser,electron-sandbox}/**",
-					"**/vs/platform/*/{common,browser,electron-sandbox}/**"
-				]
-			},
-			{
-				"target": "**/vs/platform/*/electron-browser/**",
-				"restrictions": [
-					"vs/nls",
-					"vs/css!./**/*",
-					"**/vs/base/{common,browser,node,electron-sandbox,electron-browser}/**",
-					"**/vs/base/parts/*/{common,browser,node,electron-sandbox,electron-browser}/**",
-					"**/vs/platform/*/{common,browser,node,electron-sandbox,electron-browser}/**",
-					"*" // node modules
-				]
-			},
-			{
-				"target": "**/vs/platform/*/electron-main/**",
-				"restrictions": [
-					"vs/nls",
-					"**/vs/base/{common,node,electron-main}/**",
-					"**/vs/base/parts/*/{common,node,electron-main}/**",
-					"**/vs/platform/*/{common,node,electron-main}/**",
-					"*" // node modules
-				]
-			},
-			{
-				"target": "**/vs/platform/*/test/browser/**",
-				"restrictions": [
-					"assert",
-					"sinon",
-					"vs/nls",
-					"**/vs/base/{common,browser}/**",
-					"**/vs/base/parts/*/{common,browser}/**",
-					"**/vs/platform/*/{common,browser}/**",
-					"**/vs/platform/*/test/{common,browser}/**"
-				]
-			},
-			{
-				"target": "**/vs/editor/common/**",
-				"restrictions": [
-					"vs/nls",
-					"**/vs/base/common/**",
-					"**/vs/base/worker/**",
-					"**/vs/platform/*/common/**",
-					"**/vs/editor/common/**"
-				]
-			},
-			{
-				"target": "**/vs/editor/test/common/**",
-				"restrictions": [
-					"assert",
-					"sinon",
-					"vs/nls",
-					"**/vs/base/common/**",
-					"**/vs/platform/*/common/**",
-					"**/vs/platform/*/test/common/**",
-					"**/vs/editor/common/**",
-					"**/vs/editor/test/common/**"
-				]
-			},
-			{
-				"target": "**/vs/editor/browser/**",
-				"restrictions": [
-					"vs/nls",
-					"vs/css!./**/*",
-					"**/vs/base/{common,browser}/**",
-					"**/vs/platform/*/{common,browser}/**",
-					"**/vs/editor/{common,browser}/**"
-				]
-			},
-			{
-				"target": "**/vs/editor/test/browser/**",
-				"restrictions": [
-					"assert",
-					"sinon",
-					"vs/nls",
-					"**/vs/base/{common,browser}/**",
-					"**/vs/platform/*/{common,browser}/**",
-					"**/vs/platform/*/test/{common,browser}/**",
-					"**/vs/editor/{common,browser}/**",
-					"**/vs/editor/test/{common,browser}/**"
-				]
-			},
-			{
-				"target": "**/vs/editor/standalone/common/**",
-				"restrictions": [
-					"vs/nls",
-					"**/vs/base/common/**",
-					"**/vs/platform/*/common/**",
-					"**/vs/editor/common/**",
-					"**/vs/editor/standalone/common/**"
-				]
-			},
-			{
-				"target": "**/vs/editor/standalone/test/common/**",
-				"restrictions": [
-					"assert",
-					"sinon",
-					"vs/nls",
-					"**/vs/base/common/**",
-					"**/vs/platform/*/common/**",
-					"**/vs/platform/*/test/common/**",
-					"**/vs/editor/common/**",
-					"**/vs/editor/test/common/**"
-				]
-			},
-			{
-				"target": "**/vs/editor/standalone/browser/**",
-				"restrictions": [
-					"vs/nls",
-					"vs/css!./**/*",
-					"**/vs/base/{common,browser}/**",
-					"**/vs/base/parts/*/{common,browser}/**",
-					"**/vs/platform/*/{common,browser}/**",
-					"**/vs/editor/{common,browser}/**",
-					"**/vs/editor/contrib/**",
-					"**/vs/editor/standalone/{common,browser}/**"
-				]
-			},
-			{
-				"target": "**/vs/editor/standalone/test/browser/**",
-				"restrictions": [
-					"assert",
-					"sinon",
-					"vs/nls",
-					"**/vs/base/{common,browser}/**",
-					"**/vs/platform/*/{common,browser}/**",
-					"**/vs/platform/*/test/{common,browser}/**",
-					"**/vs/editor/{common,browser}/**",
-					"**/vs/editor/standalone/{common,browser}/**",
-					"**/vs/editor/test/{common,browser}/**"
-				]
-			},
-			{
-				"target": "**/vs/editor/contrib/*/test/**",
-				"restrictions": [
-					"assert",
-					"sinon",
-					"vs/nls",
-					"**/vs/base/{common,browser}/**",
-					"**/vs/base/test/{common,browser}/**",
-					"**/vs/base/parts/*/{common,browser}/**",
-					"**/vs/platform/*/{common,browser}/**",
-					"**/vs/platform/*/test/{common,browser}/**",
-					"**/vs/editor/{common,browser}/**",
-					"**/vs/editor/test/{common,browser}/**",
-					"**/vs/editor/contrib/**"
-				]
-			},
-			{
-				"target": "**/vs/editor/contrib/**",
-				"restrictions": [
-					"vs/nls",
-					"vs/css!./**/*",
-					"**/vs/base/{common,browser}/**",
-					"**/vs/base/parts/*/{common,browser}/**",
-					"**/vs/platform/{common,browser}/**",
-					"**/vs/platform/*/{common,browser}/**",
-					"**/vs/editor/{common,browser}/**",
-					"**/vs/editor/contrib/**"
-				]
-			},
-			{
-				"target": "**/vs/workbench/common/**",
-				"restrictions": [
-					"vs/nls",
-					"**/vs/base/common/**",
-					"**/vs/base/parts/*/common/**",
-					"**/vs/platform/*/common/**",
-					"**/vs/editor/common/**",
-					"**/vs/editor/contrib/*/common/**",
-					"**/vs/workbench/common/**",
-					"**/vs/workbench/services/*/common/**",
-					"assert"
-				]
-			},
-			{
-				"target": "**/vs/workbench/browser/**",
-				"restrictions": [
-					"vs/nls",
-					"vs/css!./**/*",
-					"**/vs/base/{common,browser}/**",
-					"**/vs/base/parts/*/{common,browser}/**",
-					"**/vs/platform/*/{common,browser}/**",
-					"**/vs/editor/{common,browser}/**",
-					"**/vs/editor/contrib/**", // editor/contrib is equivalent to /browser/ by convention
-					"**/vs/workbench/workbench.web.api",
-					"**/vs/workbench/{common,browser}/**",
-					"**/vs/workbench/services/*/{common,browser}/**",
-					"assert"
-				]
-			},
-			{
-				"target": "**/vs/workbench/api/common/**",
-				"restrictions": [
-					"vscode",
-					"vs/nls",
-					"**/vs/base/common/**",
-					"**/vs/platform/*/common/**",
-					"**/vs/editor/common/**",
-					"**/vs/editor/contrib/*/common/**",
-					"**/vs/workbench/api/common/**",
-					"**/vs/workbench/common/**",
-					"**/vs/workbench/services/*/common/**",
-					"**/vs/workbench/contrib/*/common/**"
-				]
-			},
-			{
-				"target": "**/vs/workbench/api/worker/**",
-				"restrictions": [
-					"vscode",
-					"vs/nls",
-					"**/vs/**/{common,worker}/**"
-				]
-			},
-			{
-				"target": "**/vs/workbench/electron-sandbox/**",
-				"restrictions": [
-					"vs/nls",
-					"vs/css!./**/*",
-					"**/vs/base/{common,browser,electron-sandbox}/**",
-					"**/vs/base/parts/*/{common,browser,electron-sandbox}/**",
-					"**/vs/platform/*/{common,browser,electron-sandbox}/**",
-					"**/vs/editor/{common,browser,electron-sandbox}/**",
-					"**/vs/editor/contrib/**", // editor/contrib is equivalent to /browser/ by convention
-					"**/vs/workbench/{common,browser,electron-sandbox}/**",
-					"**/vs/workbench/api/{common,browser,electron-sandbox}/**",
-					"**/vs/workbench/services/*/{common,browser,electron-sandbox}/**"
-				]
-			},
-			{
-				"target": "**/vs/workbench/electron-browser/**",
-				"restrictions": [
-					"vs/nls",
-					"vs/css!./**/*",
-					"**/vs/base/{common,browser,node,electron-sandbox,electron-browser}/**",
-					"**/vs/base/parts/*/{common,browser,node,electron-sandbox,electron-browser}/**",
-					"**/vs/platform/*/{common,browser,node,electron-sandbox,electron-browser}/**",
-					"**/vs/editor/{common,browser,node,electron-sandbox,electron-browser}/**",
-					"**/vs/editor/contrib/**", // editor/contrib is equivalent to /browser/ by convention
-					"**/vs/workbench/{common,browser,node,electron-sandbox,electron-browser}/**",
-					"**/vs/workbench/api/{common,browser,node,electron-sandbox,electron-browser}/**",
-					"**/vs/workbench/services/*/{common,browser,node,electron-sandbox,electron-browser}/**",
-					"*" // node modules
-				]
-			},
-			{
-				"target": "**/vs/workbench/services/**/test/**",
-				"restrictions": [
-					"vs/nls",
-					"vs/css!./**/*",
-					"**/vs/base/**",
-					"**/vs/platform/**",
-					"**/vs/editor/**",
-					"**/vs/workbench/{common,browser,node,electron-sandbox,electron-browser}/**",
-					"vs/workbench/contrib/files/browser/editors/fileEditorInput",
-					"**/vs/workbench/services/**",
-					"**/vs/workbench/test/**",
-					"*" // node modules
-				]
-			},
-			{
-				"target": "**/vs/workbench/services/**/common/**",
-				"restrictions": [
-					"vs/nls",
-					"**/vs/base/**/common/**",
-					"**/vs/platform/**/common/**",
-					"**/vs/editor/common/**",
-					"**/vs/workbench/workbench.web.api",
-					"**/vs/workbench/common/**",
-					"**/vs/workbench/services/**/common/**",
-					"**/vs/workbench/api/**/common/**",
-					"vscode-textmate",
-					"vscode-oniguruma",
-					"iconv-lite-umd",
-					"tas-client-umd",
-					"jschardet"
-				]
-			},
-			{
-				"target": "**/vs/workbench/services/**/worker/**",
-				"restrictions": [
-					"vs/nls",
-					"**/vs/base/**/common/**",
-					"**/vs/platform/**/common/**",
-					"**/vs/editor/common/**",
-					"**/vs/workbench/**/common/**",
-					"**/vs/workbench/**/worker/**",
-					"**/vs/workbench/services/**/common/**",
-					"vscode"
-				]
-			},
-			{
-				"target": "**/vs/workbench/services/**/browser/**",
-				"restrictions": [
-					"vs/nls",
-					"vs/css!./**/*",
-					"**/vs/base/**/{common,browser,worker}/**",
-					"**/vs/platform/**/{common,browser}/**",
-					"**/vs/editor/{common,browser}/**",
-					"**/vs/workbench/workbench.web.api",
-					"**/vs/workbench/{common,browser}/**",
-					"**/vs/workbench/api/{common,browser}/**",
-					"**/vs/workbench/services/**/{common,browser}/**",
-					"vscode-textmate",
-					"vscode-oniguruma",
-					"iconv-lite-umd",
-					"jschardet"
-				]
-			},
-			{
-				"target": "**/vs/workbench/services/**/node/**",
-				"restrictions": [
-					"vs/nls",
-					"**/vs/base/**/{common,node}/**",
-					"**/vs/platform/**/{common,node}/**",
-					"**/vs/editor/{common,node}/**",
-					"**/vs/workbench/{common,node}/**",
-					"**/vs/workbench/api/{common,node}/**",
-					"**/vs/workbench/services/**/{common,node}/**",
-					"*" // node modules
-				]
-			},
-			{
-				"target": "**/vs/workbench/services/**/electron-sandbox/**",
-				"restrictions": [
-					"vs/nls",
-					"vs/css!./**/*",
-					"**/vs/base/**/{common,browser,worker,electron-sandbox}/**",
-					"**/vs/platform/**/{common,browser,electron-sandbox}/**",
-					"**/vs/editor/**",
-					"**/vs/workbench/{common,browser,electron-sandbox}/**",
-					"**/vs/workbench/api/{common,browser,electron-sandbox}/**",
-					"**/vs/workbench/services/**/{common,browser,electron-sandbox}/**",
-					"vscode-textmate",
-					"vscode-oniguruma",
-					"iconv-lite-umd",
-					"jschardet"
-				]
-			},
-			{
-				"target": "**/vs/workbench/services/**/electron-browser/**",
-				"restrictions": [
-					"vs/nls",
-					"vs/css!./**/*",
-					"**/vs/base/**/{common,browser,worker,node,electron-sandbox,electron-browser}/**",
-					"**/vs/platform/**/{common,browser,node,electron-sandbox,electron-browser}/**",
-					"**/vs/editor/**",
-					"**/vs/workbench/{common,browser,node,electron-sandbox,electron-browser}/**",
-					"**/vs/workbench/api/{common,browser,node,electron-sandbox,electron-browser}/**",
-					"**/vs/workbench/services/**/{common,browser,node,electron-sandbox,electron-browser}/**",
-					"*" // node modules
-				]
-			},
-			{
-				"target": "**/vs/workbench/contrib/**/test/**",
-				"restrictions": [
-					"assert",
-					"vs/nls",
-					"vs/css!./**/*",
-					"**/vs/base/**",
-					"**/vs/platform/**",
-					"**/vs/editor/**",
-					"**/vs/workbench/{common,browser,node,electron-sandbox,electron-browser}/**",
-					"**/vs/workbench/services/**",
-					"**/vs/workbench/contrib/**",
-					"**/vs/workbench/test/**",
-					"*"
-				]
-			},
-			{
-				"target": "**/vs/workbench/contrib/terminal/browser/**",
-				"restrictions": [
-					// xterm and its addons are strictly browser-only components
-					"xterm",
-					"xterm-addon-*",
-					"vs/nls",
-					"vs/css!./**/*",
-					"**/vs/base/**/{common,browser}/**",
-					"**/vs/platform/**/{common,browser}/**",
-					"**/vs/editor/**",
-					"**/vs/workbench/{common,browser}/**",
-					"**/vs/workbench/contrib/**/{common,browser}/**",
-					"**/vs/workbench/services/**/{common,browser}/**"
-				]
-			},
-			{
-				"target": "**/vs/workbench/contrib/extensions/browser/**",
-				"restrictions": [
-					"vs/nls",
-					"vs/css!./**/*",
-					"**/vs/base/**/{common,browser}/**",
-					"**/vs/platform/**/{common,browser}/**",
-					"**/vs/editor/**",
-					"**/vs/workbench/{common,browser}/**",
-					"**/vs/workbench/contrib/**/{common,browser}/**",
-					"**/vs/workbench/services/**/{common,browser}/**"
-				]
-			},
-			{
-				"target": "**/vs/workbench/contrib/update/browser/update.ts",
-				"restrictions": [
-					"vs/nls",
-					"vs/css!./**/*",
-					"**/vs/base/**/{common,browser}/**",
-					"**/vs/platform/**/{common,browser}/**",
-					"**/vs/editor/**",
-					"**/vs/workbench/{common,browser}/**",
-					"**/vs/workbench/contrib/**/{common,browser}/**",
-					"**/vs/workbench/services/**/{common,browser}/**"
-				]
-			},
-			{
-				"target": "**/vs/workbench/contrib/notebook/common/**",
-				"restrictions": [
-					"vs/nls",
-					"vs/css!./**/*",
-					"**/vs/base/**/{common,worker}/**",
-					"**/vs/platform/**/common/**",
-					"**/vs/editor/**",
-					"**/vs/workbench/common/**",
-					"**/vs/workbench/api/common/**",
-					"**/vs/workbench/services/**/common/**",
-					"**/vs/workbench/contrib/**/common/**"
-				]
-			},
-			{
-				"target": "**/vs/workbench/contrib/**/common/**",
-				"restrictions": [
-					"vs/nls",
-					"vs/css!./**/*",
-					"**/vs/base/**/common/**",
-					"**/vs/platform/**/common/**",
-					"**/vs/editor/**",
-					"**/vs/workbench/common/**",
-					"**/vs/workbench/api/common/**",
-					"**/vs/workbench/services/**/common/**",
-					"**/vs/workbench/contrib/**/common/**"
-				]
-			},
-			{
-				"target": "**/vs/workbench/contrib/**/browser/**",
-				"restrictions": [
-					"vs/nls",
-					"vs/css!./**/*",
-					"**/vs/base/**/{common,browser}/**",
-					"**/vs/platform/**/{common,browser}/**",
-					"**/vs/editor/**",
-					"**/vs/workbench/{common,browser}/**",
-					"**/vs/workbench/api/{common,browser}/**",
-					"**/vs/workbench/services/**/{common,browser}/**",
-					"**/vs/workbench/contrib/**/{common,browser}/**",
-					"vscode-textmate",
-					"vscode-oniguruma",
-					"iconv-lite-umd",
-					"jschardet"
-				]
-			},
-			{
-				"target": "**/vs/workbench/contrib/**/node/**",
-				"restrictions": [
-					"vs/nls",
-					"vs/css!./**/*",
-					"**/vs/base/**/{common,node}/**",
-					"**/vs/platform/**/{common,node}/**",
-					"**/vs/editor/**/common/**",
-					"**/vs/workbench/{common,node}/**",
-					"**/vs/workbench/api/{common,node}/**",
-					"**/vs/workbench/services/**/{common,node}/**",
-					"**/vs/workbench/contrib/**/{common,node}/**",
-					"*" // node modules
-				]
-			},
-			{
-				"target": "**/vs/workbench/contrib/**/electron-sandbox/**",
-				"restrictions": [
-					"vs/nls",
-					"vs/css!./**/*",
-					"**/vs/base/**/{common,browser,worker,electron-sandbox}/**",
-					"**/vs/platform/**/{common,browser,electron-sandbox}/**",
-					"**/vs/editor/**",
-					"**/vs/workbench/{common,browser,electron-sandbox}/**",
-					"**/vs/workbench/api/{common,browser,electron-sandbox}/**",
-					"**/vs/workbench/services/**/{common,browser,electron-sandbox}/**",
-					"**/vs/workbench/contrib/**/{common,browser,electron-sandbox}/**",
-					"vscode-textmate",
-					"vscode-oniguruma",
-					"iconv-lite-umd",
-					"jschardet"
-				]
-			},
-			{
-				"target": "**/vs/workbench/contrib/**/electron-browser/**",
-				"restrictions": [
-					"vs/nls",
-					"vs/css!./**/*",
-					"**/vs/base/**/{common,browser,worker,node,electron-sandbox,electron-browser}/**",
-					"**/vs/platform/**/{common,browser,node,electron-sandbox,electron-browser}/**",
-					"**/vs/editor/**",
-					"**/vs/workbench/{common,browser,node,electron-sandbox,electron-browser}/**",
-					"**/vs/workbench/api/{common,browser,node,electron-sandbox,electron-browser}/**",
-					"**/vs/workbench/services/**/{common,browser,node,electron-sandbox,electron-browser}/**",
-					"**/vs/workbench/contrib/**/{common,browser,node,electron-sandbox,electron-browser}/**",
-					"*" // node modules
-				]
-			},
-			{
-				"target": "**/vs/code/browser/**",
-				"restrictions": [
-					"vs/nls",
-					"vs/css!./**/*",
-					"**/vs/base/**/{common,browser}/**",
-					"**/vs/base/parts/**/{common,browser}/**",
-					"**/vs/platform/**/{common,browser}/**",
-					"**/vs/code/**/{common,browser}/**",
-					"**/vs/workbench/workbench.web.api"
-				]
-			},
-			{
-				"target": "**/vs/code/node/**",
-				"restrictions": [
-					"vs/nls",
-					"**/vs/base/**/{common,node}/**",
-					"**/vs/base/parts/**/{common,node}/**",
-					"**/vs/platform/**/{common,node}/**",
-					"**/vs/code/**/{common,node}/**",
-					"*" // node modules
-				]
-			},
-			{
-				"target": "**/vs/code/electron-browser/**",
-				"restrictions": [
-					"vs/nls",
-					"vs/css!./**/*",
-					"**/vs/base/**/{common,browser,node,electron-sandbox,electron-browser}/**",
-					"**/vs/base/parts/**/{common,browser,node,electron-sandbox,electron-browser}/**",
-					"**/vs/platform/**/{common,browser,node,electron-sandbox,electron-browser}/**",
-					"**/vs/code/**/{common,browser,node,electron-sandbox,electron-browser}/**",
-					"*" // node modules
-				]
-			},
-			{
-				"target": "**/vs/code/electron-main/**",
-				"restrictions": [
-					"vs/nls",
-					"**/vs/base/**/{common,node,electron-main}/**",
-					"**/vs/base/parts/**/{common,node,electron-main}/**",
-					"**/vs/platform/**/{common,node,electron-main}/**",
-					"**/vs/code/**/{common,node,electron-main}/**",
-					"*" // node modules
-				]
-			},
-			{
-				"target": "**/vs/server/**",
-				"restrictions": [
-					"vs/nls",
-					"**/vs/base/**/{common,node}/**",
-					"**/vs/base/parts/**/{common,node}/**",
-					"**/vs/platform/**/{common,node}/**",
-					"**/vs/workbench/**/{common,node}/**",
-					"**/vs/server/**",
-					"@coder/logger", // NOTE@coder: add logger
-					"*" // node modules
-				]
-			},
-			{
-				"target": "**/src/vs/workbench/workbench.common.main.ts",
-				"restrictions": [
-					"vs/nls",
-					"**/vs/base/**/{common,browser}/**",
-					"**/vs/base/parts/**/{common,browser}/**",
-					"**/vs/platform/**/{common,browser}/**",
-					"**/vs/editor/**",
-					"**/vs/workbench/**/{common,browser}/**"
-				]
-			},
-			{
-				"target": "**/src/vs/workbench/workbench.web.main.ts",
-				"restrictions": [
-					"vs/nls",
-					"**/vs/base/**/{common,browser}/**",
-					"**/vs/base/parts/**/{common,browser}/**",
-					"**/vs/platform/**/{common,browser}/**",
-					"**/vs/editor/**",
-					"**/vs/workbench/**/{common,browser}/**",
-					"**/vs/workbench/workbench.common.main"
-				]
-			},
-			{
-				"target": "**/src/vs/workbench/workbench.web.api.ts",
-				"restrictions": [
-					"vs/nls",
-					"**/vs/base/**/{common,browser}/**",
-					"**/vs/base/parts/**/{common,browser}/**",
-					"**/vs/platform/**/{common,browser}/**",
-					"**/vs/editor/**",
-					"**/vs/workbench/**/{common,browser}/**",
-					"**/vs/workbench/workbench.web.main"
-				]
-			},
-			{
-				"target": "**/src/vs/workbench/workbench.sandbox.main.ts",
-				"restrictions": [
-					"vs/nls",
-					"**/vs/base/**/{common,browser,electron-sandbox}/**",
-					"**/vs/base/parts/**/{common,browser,electron-sandbox}/**",
-					"**/vs/platform/**/{common,browser,electron-sandbox}/**",
-					"**/vs/editor/**",
-					"**/vs/workbench/**/{common,browser,electron-sandbox}/**",
-					"**/vs/workbench/workbench.common.main"
-				]
-			},
-			{
-				"target": "**/src/vs/workbench/workbench.desktop.main.ts",
-				"restrictions": [
-					"vs/nls",
-					"**/vs/base/**/{common,browser,node,electron-sandbox,electron-browser}/**",
-					"**/vs/base/parts/**/{common,browser,node,electron-sandbox,electron-browser}/**",
-					"**/vs/platform/**/{common,browser,node,electron-sandbox,electron-browser}/**",
-					"**/vs/editor/**",
-					"**/vs/workbench/**/{common,browser,node,electron-sandbox,electron-browser}/**",
-					"**/vs/workbench/workbench.common.main",
-					"**/vs/workbench/workbench.sandbox.main"
-				]
-			},
-			{
-				"target": "**/extensions/**",
-				"restrictions": "**/*"
-			},
-			{
-				"target": "**/test/smoke/**",
-				"restrictions": [
-					"**/test/smoke/**",
-					"*" // node modules
-				]
-			},
-			{
-				"target": "**/test/automation/**",
-				"restrictions": [
-					"**/test/automation/**",
-					"*" // node modules
-				]
-			},
-			{
-				"target": "**/test/integration/**",
-				"restrictions": [
-					"**/test/integration/**",
-					"*" // node modules
-				]
-			},
-			{
-				"target": "**/test/monaco/**",
-				"restrictions": [
-					"**/test/monaco/**",
-					"*" // node modules
-				]
-			},
-			{
-				"target": "**/api/**.test.ts",
-				"restrictions": [
-					"**/vs/**",
-					"assert",
-					"sinon",
-					"crypto",
-					"vscode"
-				]
-			},
-			{
-				"target": "**/{node,electron-browser,electron-main}/**/*.test.ts",
-				"restrictions": [
-					"**/vs/**",
-					"*" // node modules
-				]
-			},
-			{
-				"target": "**/{node,electron-browser,electron-main}/**/test/**",
-				"restrictions": [
-					"**/vs/**",
-					"*" // node modules
-				]
-			},
-			{
-				"target": "**/test/{node,electron-browser,electron-main}/**",
-				"restrictions": [
-					"**/vs/**",
-					"*" // node modules
-				]
-			},
-			{
-				"target": "**/**.test.ts",
-				"restrictions": [
-					"**/vs/**",
-					"assert",
-					"sinon",
-					"crypto",
-					"xterm*"
-				]
-			},
-			{
-				"target": "**/test/**",
-				"restrictions": [
-					"**/vs/**",
-					"assert",
-					"sinon",
-					"crypto",
-					"xterm*"
-				]
-			}
-		]
-	},
-	"overrides": [
-		{
-			"files": [
-				"*.js"
-			],
-			"rules": {
-				"jsdoc/no-types": "off"
-			}
-		},
-		{
-			"files": [
-				"**/vscode.d.ts",
-				"**/vscode.proposed.d.ts"
-			],
-			"rules": {
-				"vscode-dts-create-func": "warn",
-				"vscode-dts-literal-or-types": "warn",
-				"vscode-dts-interface-naming": "warn",
-				"vscode-dts-cancellation": "warn",
-				"vscode-dts-use-thenable": "warn",
-				"vscode-dts-region-comments": "warn",
-				"vscode-dts-provider-naming": [
-					"warn",
-					{
-						"allowed": [
-							"FileSystemProvider",
-							"TreeDataProvider",
-							"TestProvider",
-							"CustomEditorProvider",
-							"CustomReadonlyEditorProvider",
-							"TerminalLinkProvider",
-							"AuthenticationProvider",
-							"NotebookContentProvider"
-						]
-					}
-				],
-				"vscode-dts-event-naming": [
-					"warn",
-					{
-						"allowed": [
-							"onCancellationRequested",
-							"event"
-						],
-						"verbs": [
-							"accept",
-							"change",
-							"close",
-							"collapse",
-							"create",
-							"delete",
-							"discover",
-							"dispose",
-							"edit",
-							"end",
-							"expand",
-							"grant",
-							"hide",
-							"invalidate",
-							"open",
-							"override",
-							"receive",
-							"register",
-							"remove",
-							"rename",
-							"save",
-							"send",
-							"start",
-							"terminate",
-							"trigger",
-							"unregister",
-							"write"
-						]
-					}
-				]
-			}
-		}
-	]
-}
diff --git a/lib/vscode/.gitattributes b/lib/vscode/.gitattributes
deleted file mode 100644
index 5a817c30b6d7..000000000000
--- a/lib/vscode/.gitattributes
+++ /dev/null
@@ -1,10 +0,0 @@
-* text=auto
-
-LICENSE.txt eol=crlf
-ThirdPartyNotices.txt eol=crlf
-
-*.bat eol=crlf
-*.cmd eol=crlf
-*.ps1 eol=lf
-*.sh eol=lf
-*.rtf -text
\ No newline at end of file
diff --git a/lib/vscode/.github/ISSUE_TEMPLATE/bug_report.md b/lib/vscode/.github/ISSUE_TEMPLATE/bug_report.md
deleted file mode 100644
index 8a44ce8c7ac1..000000000000
--- a/lib/vscode/.github/ISSUE_TEMPLATE/bug_report.md
+++ /dev/null
@@ -1,22 +0,0 @@
----
-name: Bug report
-about: Create a report to help us improve
----
-<!-- ⚠️⚠️ Do Not Delete This! bug_report_template ⚠️⚠️ -->
-<!-- Please read our Rules of Conduct: https://opensource.microsoft.com/codeofconduct/ -->
-<!-- 🕮 Read our guide about submitting issues: https://github.com/microsoft/vscode/wiki/Submitting-Bugs-and-Suggestions -->
-<!-- 🔎 Search existing issues to avoid creating duplicates. -->
-<!-- 🧪 Test using the latest Insiders build to see if your issue has already been fixed: https://code.visualstudio.com/insiders/ -->
-<!-- 💡 Instead of creating your report here, use 'Report Issue' from the 'Help' menu in VS Code to pre-fill useful information. -->
-<!-- 🔧 Launch with `code --disable-extensions` to check. -->
-Does this issue occur when all extensions are disabled?: Yes/No
-
-<!-- 🪓 If you answered No above, use 'Help: Start Extension Bisect' from Command Palette to try to identify the cause. -->
-<!-- 📣 Issues caused by an extension need to be reported directly to the extension publisher. The 'Help > Report Issue' dialog can assist with this. -->
-- VS Code Version:
-- OS Version:
-
-Steps to Reproduce:
-
-1.
-2.
diff --git a/lib/vscode/.github/ISSUE_TEMPLATE/config.yml b/lib/vscode/.github/ISSUE_TEMPLATE/config.yml
deleted file mode 100644
index 51e7f3660431..000000000000
--- a/lib/vscode/.github/ISSUE_TEMPLATE/config.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-blank_issues_enabled: false
-contact_links:
-  - name: Question
-    url: https://stackoverflow.com/questions/tagged/visual-studio-code
-    about: Please ask and answer questions here.
diff --git a/lib/vscode/.github/ISSUE_TEMPLATE/feature_request.md b/lib/vscode/.github/ISSUE_TEMPLATE/feature_request.md
deleted file mode 100644
index b9c6c83caa3d..000000000000
--- a/lib/vscode/.github/ISSUE_TEMPLATE/feature_request.md
+++ /dev/null
@@ -1,11 +0,0 @@
----
-name: Feature request
-about: Suggest an idea for this project
-
----
-
-<!-- ⚠️⚠️ Do Not Delete This! feature_request_template ⚠️⚠️ -->
-<!-- Please read our Rules of Conduct: https://opensource.microsoft.com/codeofconduct/ -->
-<!-- Please search existing issues to avoid creating duplicates. -->
-
-<!-- Describe the feature you'd like. -->
diff --git a/lib/vscode/.github/calendar.yml b/lib/vscode/.github/calendar.yml
deleted file mode 100644
index c1b5a2569809..000000000000
--- a/lib/vscode/.github/calendar.yml
+++ /dev/null
@@ -1,37 +0,0 @@
-{
-  "2018-01-29 18:00, US/Pacific": "endgame",
-  "2018-02-07 12:00, US/Pacific": "release", # 1.20.0
-  "2018-02-12 12:00, US/Pacific": "development",
-  "2018-02-14 16:00, Europe/Zurich": "release", # 1.20.1
-  "2018-02-19 16:00, Europe/Zurich": "development",
-  "2018-02-26 18:00, US/Pacific": "endgame",
-  "2018-03-07 12:00, US/Pacific": "release", # 1.21.0
-  "2018-03-12 12:00, US/Pacific": "development",
-  "2018-03-15 12:00, US/Pacific": "release", # 1.21.1
-  "2018-03-20 12:00, US/Pacific": "development",
-  "2018-03-26 18:00, US/Pacific": "endgame",
-  "2018-04-06 18:00, US/Pacific": "release", # 1.22.1
-  "2018-04-11 18:00, US/Pacific": "development",
-  "2018-04-12 12:00, US/Pacific": "release", # 1.22.2
-  "2018-04-17 12:00, US/Pacific": "development",
-  "2018-04-23 18:00, US/Pacific": "endgame",
-  "2018-05-03 12:00, US/Pacific": "release", # 1.23.0
-  "2018-05-08 12:00, US/Pacific": "development",
-  "2018-05-10 12:00, US/Pacific": "release", # 1.23.1
-  "2018-05-15 12:00, US/Pacific": "development",
-  "2018-05-28 18:00, US/Pacific": "endgame",
-  # 'release' not needed anymore, return to 'development' after releasing.
-  "2018-06-06 12:00, US/Pacific": "development", # 1.24.0 released
-  "2018-06-25 18:00, US/Pacific": "endgame",
-  "2018-07-05 12:00, US/Pacific": "development", # 1.25.0 released
-  "2018-07-30 18:00, US/Pacific": "endgame",
-  "2018-08-13 12:00, US/Pacific": "development", # 1.26.0 released
-  "2018-08-27 18:00, US/Pacific": "endgame",
-  "2018-09-05 12:00, US/Pacific": "development", # 1.27.0 released
-  "2018-09-24 18:00, US/Pacific": "endgame",
-  "2018-10-08 09:00, US/Pacific": "development", # 1.28.0 released
-  "2018-10-29 18:00, US/Pacific": "endgame",
-  "2018-11-12 11:00, US/Pacific": "development", # 1.29.0 released
-  "2018-12-03 18:00, US/Pacific": "endgame",
-  "2018-12-12 13:00, US/Pacific": "development", # 1.30.0 released
-}
diff --git a/lib/vscode/.github/classifier.json b/lib/vscode/.github/classifier.json
deleted file mode 100644
index 1783b82c8797..000000000000
--- a/lib/vscode/.github/classifier.json
+++ /dev/null
@@ -1,183 +0,0 @@
-{
-	"$schema": "https://raw.githubusercontent.com/microsoft/vscode-github-triage-actions/master/classifier-deep/apply/apply-labels/deep-classifier-config.schema.json",
-	"vacation": ["RMacfarlane"],
-	"assignees": {
-		"JacksonKearl": {"accuracy": 0.5}
-	},
-	"labels": {
-		"L10N": {"assign": []},
-		"VIM": {"assign": []},
-		"accessibility": { "assign": ["isidorn"]},
-		"api": {"assign": ["jrieken"]},
-		"api-finalization": {"assign": []},
-		"api-proposal": {"assign": ["jrieken"]},
-		"authentication": {"assign": ["TylerLeonhardt"]},
-		"breadcrumbs": {"assign": ["jrieken"]},
-		"callhierarchy": {"assign": ["jrieken"]},
-		"code-lens": {"assign": ["jrieken"]},
-		"color-palette": {"assign": []},
-		"comments": {"assign": ["rebornix"]},
-		"config": {"assign": ["sandy081"]},
-		"context-keys": {"assign": []},
-		"css-less-scss": {"assign": ["aeschli"]},
-		"custom-editors": {"assign": ["mjbvz"]},
-		"debug": {"assign": ["weinand"]},
-		"dialogs": {"assign": ["sbatten"]},
-		"diff-editor": {"assign": []},
-		"dropdown": {"assign": []},
-		"editor": {"assign": ["rebornix"]},
-		"editor-autoclosing": {"assign": []},
-		"editor-autoindent": {"assign": ["rebornix"]},
-		"editor-bracket-matching": {"assign": []},
-		"editor-clipboard": {"assign": ["jrieken"]},
-		"editor-code-actions": {"assign": []},
-		"editor-color-picker": {"assign": ["rebornix"]},
-		"editor-columnselect": {"assign": ["alexdima"]},
-		"editor-commands": {"assign": ["jrieken"]},
-		"editor-comments": {"assign": []},
-		"editor-contrib": {"assign": []},
-		"editor-core": {"assign": []},
-		"editor-drag-and-drop": {"assign": ["rebornix"]},
-		"editor-error-widget": {"assign": ["sandy081"]},
-		"editor-find": {"assign": ["rebornix"]},
-		"editor-folding": {"assign": ["aeschli"]},
-		"editor-hover": {"assign": []},
-		"editor-indent-guides": {"assign": []},
-		"editor-input": {"assign": ["alexdima"]},
-		"editor-input-IME": {"assign": ["rebornix"]},
-		"editor-minimap": {"assign": []},
-		"editor-multicursor": {"assign": ["alexdima"]},
-		"editor-parameter-hints": {"assign": []},
-		"editor-render-whitespace": {"assign": []},
-		"editor-rendering": {"assign": ["alexdima"]},
-		"editor-scrollbar": {"assign": []},
-		"editor-symbols": {"assign": ["jrieken"]},
-		"editor-synced-region": {"assign": ["aeschli"]},
-		"editor-textbuffer": {"assign": ["rebornix"]},
-		"editor-theming": {"assign": []},
-		"editor-wordnav": {"assign": ["alexdima"]},
-		"editor-wrapping": {"assign": ["alexdima"]},
-		"emmet": {"assign": ["rzhao271"]},
-		"error-list": {"assign": ["sandy081"]},
-		"explorer-custom": {"assign": ["sandy081"]},
-		"extension-host": {"assign": []},
-		"extensions": {"assign": ["sandy081"]},
-		"extensions-development": {"assign": []},
-		"file-decorations": {"assign": ["jrieken"]},
-		"file-encoding": {"assign": ["bpasero"]},
-		"file-explorer": {"assign": ["isidorn"]},
-		"file-glob": {"assign": []},
-		"file-guess-encoding": {"assign": ["bpasero"]},
-		"file-io": {"assign": ["bpasero"]},
-		"file-watcher": {"assign": ["bpasero"]},
-		"font-rendering": {"assign": []},
-		"formatting": {"assign": []},
-		"git": {"assign": ["eamodio"]},
-		"gpu": {"assign": ["deepak1556"]},
-		"grammar": {"assign": ["mjbvz"]},
-		"grid-view": {"assign": ["joaomoreno"]},
-		"html": {"assign": ["aeschli"]},
-		"i18n": {"assign": []},
-		"icon-brand": {"assign": []},
-		"icons-product": {"assign": ["misolori"]},
-		"install-update": {"assign": []},
-		"terminal": {"assign": ["meganrogge"]},
-		"terminal-conpty": {"assign": ["meganrogge"]},
-		"terminal-links": {"assign": ["meganrogge"]},
-		"terminal-external": {"assign": ["meganrogge"]},
-		"integration-test": {"assign": []},
-		"intellisense-config": {"assign": []},
-		"ipc": {"assign": ["joaomoreno"]},
-		"issue-bot": {"assign": ["chrmarti"]},
-		"issue-reporter": {"assign": ["TylerLeonhardt"]},
-		"javascript": {"assign": ["mjbvz"]},
-		"json": {"assign": ["aeschli"]},
-		"keybindings": {"assign": []},
-		"keybindings-editor": {"assign": ["sandy081"]},
-		"keyboard-layout": {"assign": ["alexdima"]},
-		"languages-basic": {"assign": ["aeschli"]},
-		"languages-diagnostics": {"assign": ["jrieken"]},
-		"layout": {"assign": ["sbatten"]},
-		"lcd-text-rendering": {"assign": []},
-		"list": {"assign": ["joaomoreno"]},
-		"log": {"assign": []},
-		"markdown": {"assign": ["mjbvz"]},
-		"marketplace": {"assign": []},
-		"menus": {"assign": ["sbatten"]},
-		"merge-conflict": {"assign": ["chrmarti"]},
-		"notebook": {"assign": ["rebornix"]},
-		"outline": {"assign": ["jrieken"]},
-		"output": {"assign": []},
-		"perf": {"assign": []},
-		"perf-bloat": {"assign": []},
-		"perf-startup": {"assign": []},
-		"php": {"assign": ["roblourens"]},
-		"portable-mode": {"assign": ["joaomoreno"]},
-		"proxy": {"assign": []},
-		"quick-pick": {"assign": ["TylerLeonhardt"]},
-		"references-viewlet": {"assign": ["jrieken"]},
-		"release-notes": {"assign": []},
-		"remote": {"assign": []},
-		"remote-explorer": {"assign": ["alexr00"]},
-		"rename": {"assign": ["jrieken"]},
-		"scm": {"assign": ["eamodio"]},
-		"screencast-mode": {"assign": ["lszomoru"]},
-		"search": {"assign": ["roblourens"]},
-		"search-editor": {"assign": ["JacksonKearl"]},
-		"search-replace": {"assign": ["sandy081"]},
-		"semantic-tokens": {"assign": ["aeschli"]},
-		"settings-editor": {"assign": ["roblourens"]},
-		"settings-sync": {"assign": ["sandy081"]},
-		"simple-file-dialog": {"assign": ["alexr00"]},
-		"smart-select": {"assign": ["jrieken"]},
-		"smoke-test": {"assign": []},
-		"snap": {"assign": ["joaomoreno"]},
-		"snippets": {"assign": ["jrieken"]},
-		"splitview": {"assign": ["joaomoreno"]},
-		"suggest": {"assign": ["jrieken"]},
-		"tasks": {"assign": ["alexr00"], "accuracy": 0.85},
-		"telemetry": {"assign": []},
-		"themes": {"assign": ["aeschli"]},
-		"timeline": {"assign": ["eamodio"]},
-		"timeline-git": {"assign": ["eamodio"]},
-		"titlebar": {"assign": ["sbatten"]},
-		"tokenization": {"assign": []},
-		"tree": {"assign": ["joaomoreno"]},
-		"typescript": {"assign": ["mjbvz"]},
-		"undo-redo": {"assign": []},
-		"unit-test": {"assign": []},
-		"uri": {"assign": ["jrieken"]},
-		"ux": {"assign": ["misolori"]},
-		"variable-resolving": {"assign": []},
-		"vscode-build": {"assign": []},
-		"web": {"assign": ["bpasero"]},
-		"webview": {"assign": ["mjbvz"]},
-		"workbench-cli": {"assign": []},
-		"workbench-diagnostics": {"assign": ["Tyriar"]},
-		"workbench-dnd": {"assign": ["bpasero"]},
-		"workbench-editor-grid": {"assign": ["sbatten"]},
-		"workbench-editors": {"assign": ["bpasero"]},
-		"workbench-electron": {"assign": ["deepak1556"]},
-		"workbench-feedback": {"assign": ["bpasero"]},
-		"workbench-history": {"assign": ["bpasero"]},
-		"workbench-hot-exit": {"assign": []},
-		"workbench-launch": {"assign": []},
-		"workbench-link": {"assign": []},
-		"workbench-multiroot": {"assign": ["bpasero"]},
-		"workbench-notifications": {"assign": ["bpasero"]},
-		"workbench-os-integration": {"assign": []},
-		"workbench-rapid-render": {"assign": ["jrieken"]},
-		"workbench-run-as-admin": {"assign": []},
-		"workbench-state": {"assign": ["bpasero"]},
-		"workbench-status": {"assign": ["bpasero"]},
-		"workbench-tabs": {"assign": ["bpasero"]},
-		"workbench-touchbar": {"assign": ["bpasero"]},
-		"workbench-views": {"assign": ["sbatten"]},
-		"workbench-welcome": {"assign": ["JacksonKearl"]},
-		"workbench-window": {"assign": ["bpasero"]},
-		"workbench-zen": {"assign": ["isidorn"]},
-		"workspace-edit": {"assign": ["jrieken"]},
-		"workspace-symbols": {"assign": []},
-		"zoom": {"assign": ["alexdima"] }
-		}
-}
diff --git a/lib/vscode/.github/commands.json b/lib/vscode/.github/commands.json
deleted file mode 100644
index 388a9c3dbb33..000000000000
--- a/lib/vscode/.github/commands.json
+++ /dev/null
@@ -1,413 +0,0 @@
-[
-	{
-		"type": "comment",
-		"name": "question",
-		"allowUsers": [
-			"cleidigh",
-			"usernamehw",
-			"gjsjohnmurray",
-			"IllusionMH"
-		],
-		"action": "updateLabels",
-		"addLabel": "*question"
-	},
-	{
-		"type": "label",
-		"name": "*question",
-		"action": "close",
-		"comment": "Please ask your question on [StackOverflow](https://aka.ms/vscodestackoverflow). We have a great community over [there](https://aka.ms/vscodestackoverflow). They have already answered thousands of questions and are happy to answer yours as well. See also our [issue reporting](https://aka.ms/vscodeissuereporting) guidelines.\n\nHappy Coding!"
-	},
-	{
-		"type": "label",
-		"name": "*dev-question",
-		"action": "close",
-		"comment": "We have a great developer community [over on slack](https://aka.ms/vscode-dev-community) where extension authors help each other. This is a great place for you to ask questions and find support.\n\nHappy Coding!"
-	},
-	{
-		"type": "label",
-		"name": "*extension-candidate",
-		"action": "close",
-		"comment": "We try to keep VS Code lean and we think the functionality you're asking for is great for a VS Code extension. Maybe you can already find one that suits you in the [VS Code Marketplace](https://aka.ms/vscodemarketplace). Just in case, in a few simple steps you can get started [writing your own extension](https://aka.ms/vscodewritingextensions). See also our [issue reporting](https://aka.ms/vscodeissuereporting) guidelines.\n\nHappy Coding!"
-	},
-	{
-		"type": "label",
-		"name": "*not-reproducible",
-		"action": "close",
-		"comment": "We closed this issue because we are unable to reproduce the problem with the steps you describe. Chances are we've already fixed your problem in a recent version of VS Code. If not, please ask us to reopen the issue and provide us with more detail. Our [issue reporting](https://aka.ms/vscodeissuereporting) guidelines might help you with that.\n\nHappy Coding!"
-	},
-	{
-		"type": "label",
-		"name": "*out-of-scope",
-		"action": "close",
-		"comment": "We closed this issue because we don't plan to address it in the foreseeable future. You can find more detailed information about our decision-making process [here](https://aka.ms/vscode-out-of-scope). If you disagree and feel that this issue is crucial: We are happy to listen and to reconsider.\n\nIf you wonder what we are up to, please see our [roadmap](https://aka.ms/vscoderoadmap) and [issue reporting](https://aka.ms/vscodeissuereporting) guidelines.\n\nThanks for your understanding and happy coding!"
-	},
-	{
-		"type": "comment",
-		"name": "causedByExtension",
-		"allowUsers": [
-			"cleidigh",
-			"usernamehw",
-			"gjsjohnmurray",
-			"IllusionMH"
-		],
-		"action": "updateLabels",
-		"addLabel": "*caused-by-extension"
-	},
-	{
-		"type": "label",
-		"name": "*caused-by-extension",
-		"action": "close",
-		"comment": "This issue is caused by an extension, please file it with the repository (or contact) the extension has linked in its overview in VS Code or the [marketplace](https://aka.ms/vscodemarketplace) for VS Code. See also our [issue reporting](https://aka.ms/vscodeissuereporting) guidelines.\n\nHappy Coding!"
-	},
-	{
-		"type": "label",
-		"name": "*as-designed",
-		"action": "close",
-		"comment": "The described behavior is how it is expected to work. If you disagree, please explain what is expected and what is not in more detail. See also our [issue reporting](https://aka.ms/vscodeissuereporting) guidelines.\n\nHappy Coding!"
-	},
-	{
-		"type": "comment",
-		"name": "duplicate",
-		"allowUsers": [
-			"cleidigh",
-			"usernamehw",
-			"gjsjohnmurray",
-			"IllusionMH"
-		],
-		"action": "updateLabels",
-		"addLabel": "*duplicate"
-	},
-	{
-		"type": "label",
-		"name": "*duplicate",
-		"action": "close",
-		"comment": "Thanks for creating this issue! We figured it's covering the same as another one we already have. Thus, we closed this one as a duplicate. You can search for existing issues [here](${duplicateQuery}). See also our [issue reporting](https://aka.ms/vscodeissuereporting) guidelines.\n\nHappy Coding!"
-	},
-	{
-		"type": "comment",
-		"name": "verified",
-		"allowUsers": [
-			"@author"
-		],
-		"action": "updateLabels",
-		"addLabel": "verified",
-		"removeLabel": "author-verification-requested",
-		"requireLabel": "author-verification-requested",
-		"disallowLabel": "unreleased"
-	},
-	{
-		"type": "comment",
-		"name": "confirm",
-		"allowUsers": [
-			"cleidigh",
-			"usernamehw",
-			"gjsjohnmurray",
-			"IllusionMH"
-		],
-		"action": "updateLabels",
-		"addLabel": "confirmed",
-		"removeLabel": "confirmation-pending"
-	},
-	{
-		"type": "comment",
-		"name": "confirmationPending",
-		"allowUsers": [
-			"cleidigh",
-			"usernamehw",
-			"gjsjohnmurray",
-			"IllusionMH"
-		],
-		"action": "updateLabels",
-		"addLabel": "confirmation-pending",
-		"removeLabel": "confirmed"
-	},
-	{
-		"type": "comment",
-		"name": "needsMoreInfo",
-		"allowUsers": [
-			"cleidigh",
-			"usernamehw",
-			"gjsjohnmurray",
-			"IllusionMH"
-		],
-		"action": "updateLabels",
-		"addLabel": "~needs more info"
-	},
-	{
-		"type": "comment",
-		"name": "needsPerfInfo",
-		"allowUsers": [
-			"cleidigh",
-			"usernamehw",
-			"gjsjohnmurray",
-			"IllusionMH"
-		],
-		"addLabel": "needs more info",
-		"comment": "Thanks for creating this issue regarding performance! Please follow this guide to help us diagnose performance issues: https://github.com/microsoft/vscode/wiki/Performance-Issues \n\nHappy Coding!"
-	},
-	{
-		"type": "comment",
-		"name": "jsDebugLogs",
-		"action": "updateLabels",
-		"addLabel": "needs more info",
-		"comment": "Please collect trace logs using the following instructions:\n\n> If you're able to, add `\"trace\": true` to your `launch.json` and reproduce the issue. The location of the log file on your disk will be written to the Debug Console. Share that with us.\n>\n> ⚠️ This log file will not contain source code, but will contain file paths. You can drop it into https://microsoft.github.io/vscode-pwa-analyzer/index.html to see what it contains. If you'd rather not share the log publicly, you can email it to connor@xbox.com"
-	},
-	{
-		"type": "comment",
-		"name": "closedWith",
-		"allowUsers": [
-			"cleidigh",
-			"usernamehw",
-			"gjsjohnmurray",
-			"IllusionMH"
-		],
-		"action": "close",
-		"addLabel": "unreleased"
-	},
-	{
-		"type": "label",
-		"name": "~needs more info",
-		"action": "updateLabels",
-		"addLabel": "needs more info",
-		"removeLabel": "~needs more info",
-		"comment": "Thanks for creating this issue! We figured it's missing some basic information or in some other way doesn't follow our [issue reporting](https://aka.ms/vscodeissuereporting) guidelines. Please take the time to review these and update the issue.\n\nHappy Coding!"
-	},
-	{
-		"type": "label",
-		"name": "~needs version info",
-		"action": "updateLabels",
-		"addLabel": "needs more info",
-		"removeLabel": "~needs version info",
-		"comment": "Thanks for creating this issue! We figured it's missing some basic information, such as a version number, or in some other way doesn't follow our [issue reporting](https://aka.ms/vscodeissuereporting) guidelines. Please take the time to review these and update the issue.\n\nHappy Coding!"
-	},
-	{
-		"type": "comment",
-		"name": "a11ymas",
-		"allowUsers": [
-			"AccessibilityTestingTeam-TCS",
-			"dixitsonali95",
-			"Mohini78",
-			"ChitrarupaSharma",
-			"mspatil110",
-			"umasarath52",
-			"v-umnaik"
-		],
-		"action": "updateLabels",
-		"addLabel": "a11ymas"
-	},
-	{
-		"type": "label",
-		"name": "*off-topic",
-		"action": "close",
-		"comment": "Thanks for creating this issue. We think this issue is unactionable or unrelated to the goals of this project. Please follow our [issue reporting](https://aka.ms/vscodeissuereporting) guidelines.\n\nHappy Coding!"
-	},
-	{
-		"type": "comment",
-		"name": "extPython",
-		"allowUsers": [
-			"cleidigh",
-			"usernamehw",
-			"gjsjohnmurray",
-			"IllusionMH"
-		],
-		"action": "close",
-		"addLabel": "*caused-by-extension",
-		"comment": "It looks like this is caused by the Python extension. Please file it with the repository [here](https://github.com/microsoft/vscode-python). Make sure to check their issue reporting template and provide them relevant information such as the extension version you're using. See also our [issue reporting](https://aka.ms/vscodeissuereporting) guidelines for more information.\n\nHappy Coding!"
-	},
-	{
-		"type": "comment",
-		"name": "extJupyter",
-		"allowUsers": [
-			"cleidigh",
-			"usernamehw",
-			"gjsjohnmurray",
-			"IllusionMH"
-		],
-		"action": "close",
-		"addLabel": "*caused-by-extension",
-		"comment": "It looks like this is caused by the Jupyter extension. Please file it with the repository [here](https://github.com/microsoft/vscode-jupyter). Make sure to check their issue reporting template and provide them relevant information such as the extension version you're using. See also our [issue reporting](https://aka.ms/vscodeissuereporting) guidelines for more information.\n\nHappy Coding!"
-	},
-	{
-		"type": "comment",
-		"name": "extC",
-		"allowUsers": [
-			"cleidigh",
-			"usernamehw",
-			"gjsjohnmurray",
-			"IllusionMH"
-		],
-		"action": "close",
-		"addLabel": "*caused-by-extension",
-		"comment": "It looks like this is caused by the C extension. Please file it with the repository [here](https://github.com/microsoft/vscode-cpptools). Make sure to check their issue reporting template and provide them relevant information such as the extension version you're using. See also our [issue reporting](https://aka.ms/vscodeissuereporting) guidelines for more information.\n\nHappy Coding!"
-	},
-	{
-		"type": "comment",
-		"name": "extC++",
-		"allowUsers": [
-			"cleidigh",
-			"usernamehw",
-			"gjsjohnmurray",
-			"IllusionMH"
-		],
-		"action": "close",
-		"addLabel": "*caused-by-extension",
-		"comment": "It looks like this is caused by the C++ extension. Please file it with the repository [here](https://github.com/microsoft/vscode-cpptools). Make sure to check their issue reporting template and provide them relevant information such as the extension version you're using. See also our [issue reporting](https://aka.ms/vscodeissuereporting) guidelines for more information.\n\nHappy Coding!"
-	},
-	{
-		"type": "comment",
-		"name": "extCpp",
-		"allowUsers": [
-			"cleidigh",
-			"usernamehw",
-			"gjsjohnmurray",
-			"IllusionMH"
-		],
-		"action": "close",
-		"addLabel": "*caused-by-extension",
-		"comment": "It looks like this is caused by the C++ extension. Please file it with the repository [here](https://github.com/microsoft/vscode-cpptools). Make sure to check their issue reporting template and provide them relevant information such as the extension version you're using. See also our [issue reporting](https://aka.ms/vscodeissuereporting) guidelines for more information.\n\nHappy Coding!"
-	},
-	{
-		"type": "comment",
-		"name": "extTS",
-		"allowUsers": [
-			"cleidigh",
-			"usernamehw",
-			"gjsjohnmurray",
-			"IllusionMH"
-		],
-		"action": "close",
-		"addLabel": "*caused-by-extension",
-		"comment": "It looks like this is caused by the TypeScript language service. Please file it with the repository [here](https://github.com/microsoft/TypeScript/). Make sure to check their [contributing guidelines](https://github.com/microsoft/TypeScript/blob/master/CONTRIBUTING.md) and provide relevant information such as the extension version you're using. See also our [issue reporting](https://aka.ms/vscodeissuereporting) guidelines for more information.\n\nHappy Coding!"
-	},
-	{
-		"type": "comment",
-		"name": "extJS",
-		"allowUsers": [
-			"cleidigh",
-			"usernamehw",
-			"gjsjohnmurray",
-			"IllusionMH"
-		],
-		"action": "close",
-		"addLabel": "*caused-by-extension",
-		"comment": "It looks like this is caused by the TypeScript/JavaScript language service. Please file it with the repository [here](https://github.com/microsoft/TypeScript/). Make sure to check their [contributing guidelines](https://github.com/microsoft/TypeScript/blob/master/CONTRIBUTING.md) and provide relevant information such as the extension version you're using. See also our [issue reporting](https://aka.ms/vscodeissuereporting) guidelines for more information.\n\nHappy Coding!"
-	},
-	{
-		"type": "comment",
-		"name": "extC#",
-		"allowUsers": [
-			"cleidigh",
-			"usernamehw",
-			"gjsjohnmurray",
-			"IllusionMH"
-		],
-		"action": "close",
-		"addLabel": "*caused-by-extension",
-		"comment": "It looks like this is caused by the C# extension. Please file it with the repository [here](https://github.com/OmniSharp/omnisharp-vscode.git). Make sure to check their issue reporting template and provide them relevant information such as the extension version you're using. See also our [issue reporting](https://aka.ms/vscodeissuereporting) guidelines for more information.\n\nHappy Coding!"
-	},
-	{
-		"type": "comment",
-		"name": "extGo",
-		"allowUsers": [
-			"cleidigh",
-			"usernamehw",
-			"gjsjohnmurray",
-			"IllusionMH"
-		],
-		"action": "close",
-		"addLabel": "*caused-by-extension",
-		"comment": "It looks like this is caused by the Go extension. Please file it with the repository [here](https://github.com/golang/vscode-go). Make sure to check their issue reporting template and provide them relevant information such as the extension version you're using. See also our [issue reporting](https://aka.ms/vscodeissuereporting) guidelines for more information.\n\nHappy Coding!"
-	},
-	{
-		"type": "comment",
-		"name": "extPowershell",
-		"allowUsers": [
-			"cleidigh",
-			"usernamehw",
-			"gjsjohnmurray",
-			"IllusionMH"
-		],
-		"action": "close",
-		"addLabel": "*caused-by-extension",
-		"comment": "It looks like this is caused by the PowerShell extension. Please file it with the repository [here](https://github.com/PowerShell/vscode-powershell). Make sure to check their issue reporting template and provide them relevant information such as the extension version you're using. See also our [issue reporting](https://aka.ms/vscodeissuereporting) guidelines for more information.\n\nHappy Coding!"
-	},
-	{
-		"type": "comment",
-		"name": "extLiveShare",
-		"allowUsers": [
-			"cleidigh",
-			"usernamehw",
-			"gjsjohnmurray",
-			"IllusionMH"
-		],
-		"action": "close",
-		"addLabel": "*caused-by-extension",
-		"comment": "It looks like this is caused by the LiveShare extension. Please file it with the repository [here](https://github.com/MicrosoftDocs/live-share). Make sure to check their [contributing guidelines](https://github.com/MicrosoftDocs/live-share/blob/master/CONTRIBUTING.md) and provide relevant information such as the extension version you're using. See also our [issue reporting](https://aka.ms/vscodeissuereporting) guidelines for more information.\n\nHappy Coding!"
-	},
-	{
-		"type": "comment",
-		"name": "extDocker",
-		"allowUsers": [
-			"cleidigh",
-			"usernamehw",
-			"gjsjohnmurray",
-			"IllusionMH"
-		],
-		"action": "close",
-		"addLabel": "*caused-by-extension",
-		"comment": "It looks like this is caused by the Docker extension. Please file it with the repository [here](https://github.com/microsoft/vscode-docker). Make sure to check their issue reporting template and provide them relevant information such as the extension version you're using. See also our [issue reporting](https://aka.ms/vscodeissuereporting) guidelines for more information.\n\nHappy Coding!"
-	},
-	{
-		"type": "comment",
-		"name": "extJava",
-		"allowUsers": [
-			"cleidigh",
-			"usernamehw",
-			"gjsjohnmurray",
-			"IllusionMH"
-		],
-		"action": "close",
-		"addLabel": "*caused-by-extension",
-		"comment": "It looks like this is caused by the Java extension. Please file it with the repository [here](https://github.com/redhat-developer/vscode-java). Make sure to check their [troubleshooting instructions](https://github.com/redhat-developer/vscode-java/wiki/Troubleshooting) and provide relevant information such as the extension version you're using. See also our [issue reporting](https://aka.ms/vscodeissuereporting) guidelines for more information.\n\nHappy Coding!"
-	},
-	{
-		"type": "comment",
-		"name": "extJavaDebug",
-		"allowUsers": [
-			"cleidigh",
-			"usernamehw",
-			"gjsjohnmurray",
-			"IllusionMH"
-		],
-		"action": "close",
-		"addLabel": "*caused-by-extension",
-		"comment": "It looks like this is caused by the Java Debugger extension. Please file it with the repository [here](https://github.com/microsoft/vscode-java-debug). Make sure to check their issue reporting template and provide them relevant information such as the extension version you're using. See also our [issue reporting](https://aka.ms/vscodeissuereporting) guidelines for more information.\n\nHappy Coding!"
-	},
-	{
-		"type": "comment",
-		"name": "gifPlease",
-		"allowUsers": [
-			"cleidigh",
-			"usernamehw",
-			"gjsjohnmurray",
-			"IllusionMH"
-		],
-		"action": "comment",
-		"comment": "Thanks for reporting this issue! Unfortunately, it's hard for us to understand what issue you're seeing. Please help us out by providing a screen recording showing exactly what isn't working as expected. While we can work with most standard formats, `.gif` files are preferred as they are displayed inline on GitHub. You may find https://gifcap.dev helpful as a browser-based gif recording tool.\n\nIf the issue depends on keyboard input, you can help us by enabling screencast mode for the recording (`Developer: Toggle Screencast Mode` in the command palette).\n\nHappy coding!"
-	},
-	{
-		"type": "comment",
-		"name": "label",
-		"allowUsers": []
-	},
-	{
-		"type": "comment",
-		"name": "assign",
-		"allowUsers": [
-			"cleidigh",
-			"usernamehw",
-			"gjsjohnmurray",
-			"IllusionMH"
-		]
-	}
-]
diff --git a/lib/vscode/.github/commands.yml b/lib/vscode/.github/commands.yml
deleted file mode 100644
index 5073658e5260..000000000000
--- a/lib/vscode/.github/commands.yml
+++ /dev/null
@@ -1,13 +0,0 @@
-{
-  perform: true,
-  commands:
-    [
-      {
-        type: "comment",
-        name: "findDuplicates",
-        allowUsers: ["cleidigh", "usernamehw", "gjsjohnmurray", "IllusionMH"],
-        action: "comment",
-        comment: "Potential duplicates:\n${potentialDuplicates}",
-      },
-    ],
-}
diff --git a/lib/vscode/.github/endgame/insiders.yml b/lib/vscode/.github/endgame/insiders.yml
deleted file mode 100644
index 4996474f4d2f..000000000000
--- a/lib/vscode/.github/endgame/insiders.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-  insidersLabel: "insiders",
-  insidersColor: "006b75",
-  action: "add",
-  perform: true,
-}
diff --git a/lib/vscode/.github/insiders.yml b/lib/vscode/.github/insiders.yml
deleted file mode 100644
index ab59e873beeb..000000000000
--- a/lib/vscode/.github/insiders.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-  insidersLabel: "insiders",
-  insidersColor: "006b75",
-  action: "remove",
-  perform: true,
-}
diff --git a/lib/vscode/.github/pull_request_template.md b/lib/vscode/.github/pull_request_template.md
deleted file mode 100644
index 193140292154..000000000000
--- a/lib/vscode/.github/pull_request_template.md
+++ /dev/null
@@ -1,9 +0,0 @@
-<!-- Thank you for submitting a Pull Request. Please:
-* Read our Pull Request guidelines:
-  https://github.com/microsoft/vscode/wiki/How-to-Contribute#pull-requests
-* Associate an issue with the Pull Request.
-* Ensure that the code is up-to-date with the `main` branch.
-* Include a description of the proposed changes and how to test them.
--->
-
-This PR fixes #
diff --git a/lib/vscode/.github/similarity.yml b/lib/vscode/.github/similarity.yml
deleted file mode 100644
index cb00a4c9a8e7..000000000000
--- a/lib/vscode/.github/similarity.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-  perform: true,
-  whenCreatedByTeam: false,
-  comment: "(Experimental duplicate detection)\nThanks for submitting this issue. Please also check if it is already covered by an existing one, like:\n${potentialDuplicates}",
-}
diff --git a/lib/vscode/.github/subscribers.json b/lib/vscode/.github/subscribers.json
deleted file mode 100644
index 25c676a47c74..000000000000
--- a/lib/vscode/.github/subscribers.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
-	"notebook": [
-		"claudiaregio",
-		"rchiodo",
-		"greazer",
-		"donjayamanne",
-		"jilljac",
-		"IanMatthewHuff"
-	]
-}
diff --git a/lib/vscode/.github/workflows/author-verified.yml b/lib/vscode/.github/workflows/author-verified.yml
deleted file mode 100644
index 2a24e793ac6c..000000000000
--- a/lib/vscode/.github/workflows/author-verified.yml
+++ /dev/null
@@ -1,30 +0,0 @@
-name: Author Verified
-on:
-  issues:
-    types: [closed]
-
-# also make changes in ./on-label.yml
-jobs:
-  main:
-    runs-on: ubuntu-latest
-    steps:
-      - name: Checkout Actions
-        if: contains(github.event.issue.labels.*.name, 'author-verification-requested') && contains(github.event.issue.labels.*.name, 'insiders-released')
-        uses: actions/checkout@v2
-        with:
-          repository: "microsoft/vscode-github-triage-actions"
-          ref: stable
-          path: ./actions
-      - name: Install Actions
-        if: contains(github.event.issue.labels.*.name, 'author-verification-requested') && contains(github.event.issue.labels.*.name, 'insiders-released')
-        run: npm install --production --prefix ./actions
-      - name: Run Author Verified
-        if: contains(github.event.issue.labels.*.name, 'author-verification-requested') && contains(github.event.issue.labels.*.name, 'insiders-released')
-        uses: ./actions/author-verified
-        with:
-          appInsightsKey: ${{secrets.TRIAGE_ACTIONS_APP_INSIGHTS}}
-          token: ${{secrets.VSCODE_ISSUE_TRIAGE_BOT_PAT}}
-          requestVerificationComment: "This bug has been fixed in the latest release of [VS Code Insiders](https://code.visualstudio.com/insiders/)!\n\n@${author}, you can help us out by commenting `/verified` if things are now working as expected.\n\nIf things still don't seem right, please ensure you're on version ${commit} of Insiders (today's or later - you can use `Help: About` in the command palette to check), and leave a comment letting us know what isn't working as expected.\n\nHappy Coding!"
-          releasedLabel: insiders-released
-          verifiedLabel: verified
-          authorVerificationRequestedLabel: author-verification-requested
diff --git a/lib/vscode/.github/workflows/build-chat.yml b/lib/vscode/.github/workflows/build-chat.yml
deleted file mode 100644
index 03f3bd42cafb..000000000000
--- a/lib/vscode/.github/workflows/build-chat.yml
+++ /dev/null
@@ -1,35 +0,0 @@
-name: "Build Chat"
-
-on:
-  workflow_run:
-    workflows:
-      - CI
-    types:
-      - completed
-    branches:
-      - main
-      - release/*
-
-jobs:
-  main:
-    runs-on: ubuntu-latest
-    steps:
-      - name: Checkout Actions
-        uses: actions/checkout@v2
-        with:
-          repository: "microsoft/vscode-github-triage-actions"
-          path: ./actions
-      - name: Install Actions
-        run: npm install --production --prefix ./actions
-      - name: Install Additional Dependencies
-        # Pulls in a bunch of other packages that arent needed for the rest of the actions
-        run: npm install @azure/storage-blob@12.1.1
-      - name: Build Chat
-        uses: ./actions/build-chat
-        with:
-          token: ${{ secrets.GITHUB_TOKEN }}
-          slack_token: ${{ secrets.SLACK_TOKEN }}
-          storage_connection_string: ${{ secrets.BUILD_CHAT_STORAGE_CONNECTION_STRING }}
-          workflow_run_url: ${{ github.event.workflow_run.url }}
-          notification_channel: build
-          log_channel: bot-log
diff --git a/lib/vscode/.github/workflows/ci.yml b/lib/vscode/.github/workflows/ci.yml
deleted file mode 100644
index faac7802508d..000000000000
--- a/lib/vscode/.github/workflows/ci.yml
+++ /dev/null
@@ -1,285 +0,0 @@
-name: CI
-
-on:
-  push:
-    branches:
-      - main
-      - release/*
-  pull_request:
-    branches:
-      - main
-      - release/*
-
-jobs:
-  windows:
-    name: Windows
-    runs-on: windows-latest
-    timeout-minutes: 30
-    env:
-      CHILD_CONCURRENCY: "1"
-      GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-    steps:
-      - uses: actions/checkout@v2
-
-      - uses: actions/setup-node@v2
-        with:
-          node-version: 12
-
-      - uses: actions/setup-python@v2
-        with:
-          python-version: "2.x"
-
-      - name: Compute node modules cache key
-        id: nodeModulesCacheKey
-        run: echo "::set-output name=value::$(node build/azure-pipelines/common/computeNodeModulesCacheKey.js)"
-      - name: Cache node_modules archive
-        id: cacheNodeModules
-        uses: actions/cache@v2
-        with:
-          path: ".build/node_modules_cache"
-          key: "${{ runner.os }}-cacheNodeModulesArchive-${{ steps.nodeModulesCacheKey.outputs.value }}"
-      - name: Extract node_modules archive
-        if: ${{ steps.cacheNodeModules.outputs.cache-hit == 'true' }}
-        run: 7z.exe x .build/node_modules_cache/cache.7z -aos
-      - name: Get yarn cache directory path
-        id: yarnCacheDirPath
-        if: ${{ steps.cacheNodeModules.outputs.cache-hit != 'true' }}
-        run: echo "::set-output name=dir::$(yarn cache dir)"
-      - name: Cache yarn directory
-        if: ${{ steps.cacheNodeModules.outputs.cache-hit != 'true' }}
-        uses: actions/cache@v2
-        with:
-          path: ${{ steps.yarnCacheDirPath.outputs.dir }}
-          key: ${{ runner.os }}-yarnCacheDir-${{ steps.nodeModulesCacheKey.outputs.value }}
-          restore-keys: ${{ runner.os }}-yarnCacheDir-
-      - name: Execute yarn
-        if: ${{ steps.cacheNodeModules.outputs.cache-hit != 'true' }}
-        env:
-          PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1
-          ELECTRON_SKIP_BINARY_DOWNLOAD: 1
-        run: yarn --frozen-lockfile --network-timeout 180000
-      - name: Create node_modules archive
-        if: ${{ steps.cacheNodeModules.outputs.cache-hit != 'true' }}
-        run: |
-          mkdir -Force .build
-          node build/azure-pipelines/common/listNodeModules.js .build/node_modules_list.txt
-          mkdir -Force .build/node_modules_cache
-          7z.exe a .build/node_modules_cache/cache.7z -mx3 `@.build/node_modules_list.txt
-
-      - name: Compile and Download
-        run: yarn npm-run-all --max_old_space_size=4095 -lp compile "electron x64" playwright-install download-builtin-extensions
-
-      - name: Run Unit Tests (Electron)
-        run: .\scripts\test.bat
-
-      - name: Run Unit Tests (Browser)
-        run: yarn test-browser --browser chromium
-
-      - name: Run Integration Tests (Electron)
-        run: .\scripts\test-integration.bat
-
-  linux:
-    name: Linux
-    runs-on: ubuntu-latest
-    timeout-minutes: 30
-    env:
-      GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-    steps:
-      - uses: actions/checkout@v2
-
-      # TODO: rename azure-pipelines/linux/xvfb.init to github-actions
-      - name: Setup Build Environment
-        run: |
-          sudo apt-get update
-          sudo apt-get install -y libxkbfile-dev pkg-config libsecret-1-dev libxss1 dbus xvfb libgtk-3-0 libgbm1
-          sudo cp build/azure-pipelines/linux/xvfb.init /etc/init.d/xvfb
-          sudo chmod +x /etc/init.d/xvfb
-          sudo update-rc.d xvfb defaults
-          sudo service xvfb start
-
-      - uses: actions/setup-node@v2
-        with:
-          node-version: 12
-
-      - name: Compute node modules cache key
-        id: nodeModulesCacheKey
-        run: echo "::set-output name=value::$(node build/azure-pipelines/common/computeNodeModulesCacheKey.js)"
-      - name: Cache node modules
-        id: cacheNodeModules
-        uses: actions/cache@v2
-        with:
-          path: "**/node_modules"
-          key: ${{ runner.os }}-cacheNodeModules13-${{ steps.nodeModulesCacheKey.outputs.value }}
-          restore-keys: ${{ runner.os }}-cacheNodeModules13-
-      - name: Get yarn cache directory path
-        id: yarnCacheDirPath
-        if: ${{ steps.cacheNodeModules.outputs.cache-hit != 'true' }}
-        run: echo "::set-output name=dir::$(yarn cache dir)"
-      - name: Cache yarn directory
-        if: ${{ steps.cacheNodeModules.outputs.cache-hit != 'true' }}
-        uses: actions/cache@v2
-        with:
-          path: ${{ steps.yarnCacheDirPath.outputs.dir }}
-          key: ${{ runner.os }}-yarnCacheDir-${{ steps.nodeModulesCacheKey.outputs.value }}
-          restore-keys: ${{ runner.os }}-yarnCacheDir-
-      - name: Execute yarn
-        if: ${{ steps.cacheNodeModules.outputs.cache-hit != 'true' }}
-        env:
-          PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1
-          ELECTRON_SKIP_BINARY_DOWNLOAD: 1
-        run: yarn --frozen-lockfile --network-timeout 180000
-
-      - name: Compile and Download
-        run: yarn npm-run-all --max_old_space_size=4095 -lp compile "electron x64" playwright-install download-builtin-extensions
-
-      - name: Run Unit Tests (Electron)
-        id: electron-unit-tests
-        run: DISPLAY=:10 ./scripts/test.sh
-
-      - name: Run Unit Tests (Browser)
-        id: browser-unit-tests
-        run: DISPLAY=:10 yarn test-browser --browser chromium
-
-      - name: Run Integration Tests (Electron)
-        id: electron-integration-tests
-        run: DISPLAY=:10 ./scripts/test-integration.sh
-
-  darwin:
-    name: macOS
-    runs-on: macos-latest
-    timeout-minutes: 30
-    env:
-      GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-    steps:
-      - uses: actions/checkout@v2
-
-      - uses: actions/setup-node@v2
-        with:
-          node-version: 12
-
-      - name: Compute node modules cache key
-        id: nodeModulesCacheKey
-        run: echo "::set-output name=value::$(node build/azure-pipelines/common/computeNodeModulesCacheKey.js)"
-      - name: Cache node modules
-        id: cacheNodeModules
-        uses: actions/cache@v2
-        with:
-          path: "**/node_modules"
-          key: ${{ runner.os }}-cacheNodeModules13-${{ steps.nodeModulesCacheKey.outputs.value }}
-          restore-keys: ${{ runner.os }}-cacheNodeModules13-
-      - name: Get yarn cache directory path
-        id: yarnCacheDirPath
-        if: ${{ steps.cacheNodeModules.outputs.cache-hit != 'true' }}
-        run: echo "::set-output name=dir::$(yarn cache dir)"
-      - name: Cache yarn directory
-        if: ${{ steps.cacheNodeModules.outputs.cache-hit != 'true' }}
-        uses: actions/cache@v2
-        with:
-          path: ${{ steps.yarnCacheDirPath.outputs.dir }}
-          key: ${{ runner.os }}-yarnCacheDir-${{ steps.nodeModulesCacheKey.outputs.value }}
-          restore-keys: ${{ runner.os }}-yarnCacheDir-
-      - name: Execute yarn
-        if: ${{ steps.cacheNodeModules.outputs.cache-hit != 'true' }}
-        env:
-          PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1
-          ELECTRON_SKIP_BINARY_DOWNLOAD: 1
-        run: yarn --frozen-lockfile --network-timeout 180000
-
-      - name: Compile and Download
-        run: yarn npm-run-all --max_old_space_size=4095 -lp compile "electron x64" playwright-install download-builtin-extensions
-
-      - name: Run Unit Tests (Electron)
-        run: DISPLAY=:10 ./scripts/test.sh
-
-      - name: Run Unit Tests (Browser)
-        run: DISPLAY=:10 yarn test-browser --browser chromium
-
-      - name: Run Integration Tests (Electron)
-        run: DISPLAY=:10 ./scripts/test-integration.sh
-
-  hygiene:
-    name: Hygiene, Layering and Monaco Editor
-    runs-on: ubuntu-latest
-    timeout-minutes: 30
-    env:
-      GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-    steps:
-      - uses: actions/checkout@v2
-
-      - uses: actions/setup-node@v2
-        with:
-          node-version: 12
-
-      - name: Compute node modules cache key
-        id: nodeModulesCacheKey
-        run: echo "::set-output name=value::$(node build/azure-pipelines/common/computeNodeModulesCacheKey.js)"
-      - name: Cache node modules
-        id: cacheNodeModules
-        uses: actions/cache@v2
-        with:
-          path: "**/node_modules"
-          key: ${{ runner.os }}-cacheNodeModules13-${{ steps.nodeModulesCacheKey.outputs.value }}
-          restore-keys: ${{ runner.os }}-cacheNodeModules13-
-      - name: Get yarn cache directory path
-        id: yarnCacheDirPath
-        if: ${{ steps.cacheNodeModules.outputs.cache-hit != 'true' }}
-        run: echo "::set-output name=dir::$(yarn cache dir)"
-      - name: Cache yarn directory
-        if: ${{ steps.cacheNodeModules.outputs.cache-hit != 'true' }}
-        uses: actions/cache@v2
-        with:
-          path: ${{ steps.yarnCacheDirPath.outputs.dir }}
-          key: ${{ runner.os }}-yarnCacheDir-${{ steps.nodeModulesCacheKey.outputs.value }}
-          restore-keys: ${{ runner.os }}-yarnCacheDir-
-      - name: Execute yarn
-        if: ${{ steps.cacheNodeModules.outputs.cache-hit != 'true' }}
-        env:
-          PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1
-          ELECTRON_SKIP_BINARY_DOWNLOAD: 1
-        run: yarn --frozen-lockfile --network-timeout 180000
-
-      - name: Run Hygiene Checks
-        run: yarn gulp hygiene
-
-      - name: Run Valid Layers Checks
-        run: yarn valid-layers-check
-
-      - name: Compile /build/
-        run: yarn --cwd build compile
-
-      - name: Run Monaco Editor Checks
-        run: yarn monaco-compile-check
-
-      - name: Run Trusted Types Checks
-        run: yarn tsec-compile-check
-
-      - name: Editor Distro & ESM Bundle
-        run: yarn gulp editor-esm-bundle
-
-      - name: Typings validation prep
-        run: |
-          mkdir typings-test
-
-      - name: Typings validation
-        working-directory: ./typings-test
-        run: |
-          yarn init -yp
-          ../node_modules/.bin/tsc --init
-          echo "import '../out-monaco-editor-core';" > a.ts
-          ../node_modules/.bin/tsc --noEmit
-
-      - name: Webpack Editor
-        working-directory: ./test/monaco
-        run: yarn run bundle
-
-      - name: Compile Editor Tests
-        working-directory: ./test/monaco
-        run: yarn run compile
-
-      - name: Download Playwright
-        run: yarn playwright-install
-
-      - name: Run Editor Tests
-        timeout-minutes: 5
-        working-directory: ./test/monaco
-        run: yarn test
diff --git a/lib/vscode/.github/workflows/codeql.yml b/lib/vscode/.github/workflows/codeql.yml
deleted file mode 100644
index 88761f8aa9ac..000000000000
--- a/lib/vscode/.github/workflows/codeql.yml
+++ /dev/null
@@ -1,48 +0,0 @@
-name: "Code Scanning"
-
-on:
-  schedule:
-    - cron: "0 0 * * 2"
-
-jobs:
-  CodeQL-Build:
-    # CodeQL runs on ubuntu-latest and windows-latest
-    runs-on: ubuntu-latest
-
-    steps:
-      - name: Checkout repository
-        uses: actions/checkout@v2
-        with:
-          # We must fetch at least the immediate parents so that if this is
-          # a pull request then we can checkout the head.
-          fetch-depth: 2
-
-      # If this run was triggered by a pull request event, then checkout
-      # the head of the pull request instead of the merge commit.
-      - run: git checkout HEAD^2
-        if: ${{ github.event_name == 'pull_request' }}
-
-      # Initializes the CodeQL tools for scanning.
-      - name: Initialize CodeQL
-        uses: github/codeql-action/init@v1
-        with:
-          languages: javascript
-
-      # Autobuild attempts to build any compiled languages  (C/C++, C#, or Java).
-      # If this step fails, then you should remove it and run the build manually (see below)
-      - name: Autobuild
-        uses: github/codeql-action/autobuild@v1
-
-      # ℹ️ Command-line programs to run using the OS shell.
-      # 📚 https://git.io/JvXDl
-
-      # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
-      #    and modify them (or add more) to build your code if your project
-      #    uses a compiled language
-
-      #- run: |
-      #   make bootstrap
-      #   make release
-
-      - name: Perform CodeQL Analysis
-        uses: github/codeql-action/analyze@v1
diff --git a/lib/vscode/.github/workflows/deep-classifier-monitor.yml b/lib/vscode/.github/workflows/deep-classifier-monitor.yml
deleted file mode 100644
index 106266d0cff4..000000000000
--- a/lib/vscode/.github/workflows/deep-classifier-monitor.yml
+++ /dev/null
@@ -1,23 +0,0 @@
-name: "Deep Classifier: Monitor"
-on:
-  issues:
-    types: [unassigned]
-
-jobs:
-  main:
-    runs-on: ubuntu-latest
-    steps:
-      - name: Checkout Actions
-        uses: actions/checkout@v2
-        with:
-          repository: "microsoft/vscode-github-triage-actions"
-          ref: stable
-          path: ./actions
-      - name: Install Actions
-        run: npm install --production --prefix ./actions
-      - name: "Run Classifier: Monitor"
-        uses: ./actions/classifier-deep/monitor
-        with:
-          botName: vscode-triage-bot
-          token: ${{secrets.VSCODE_ISSUE_TRIAGE_BOT_PAT}}
-          appInsightsKey: ${{secrets.TRIAGE_ACTIONS_APP_INSIGHTS}}
diff --git a/lib/vscode/.github/workflows/deep-classifier-runner.yml b/lib/vscode/.github/workflows/deep-classifier-runner.yml
deleted file mode 100644
index 19a8a705971a..000000000000
--- a/lib/vscode/.github/workflows/deep-classifier-runner.yml
+++ /dev/null
@@ -1,50 +0,0 @@
-name: "Deep Classifier: Runner"
-on:
-  schedule:
-    - cron: 0 * * * *
-  repository_dispatch:
-    types: [trigger-deep-classifier-runner]
-
-jobs:
-  main:
-    runs-on: ubuntu-latest
-    steps:
-      - name: Checkout Actions
-        uses: actions/checkout@v2
-        with:
-          repository: "microsoft/vscode-github-triage-actions"
-          ref: stable
-          path: ./actions
-      - name: Install Actions
-        run: npm install --production --prefix ./actions
-      - name: Install Additional Dependencies
-        # Pulls in a bunch of other packages that arent needed for the rest of the actions
-        run: npm install @azure/storage-blob@12.1.1
-      - name: "Run Classifier: Scraper"
-        uses: ./actions/classifier-deep/apply/fetch-sources
-        with:
-          # slightly overlapping to protect against issues slipping through the cracks if a run is delayed
-          from: 80
-          until: 5
-          configPath: classifier
-          blobContainerName: vscode-issue-classifier
-          blobStorageKey: ${{secrets.AZURE_BLOB_STORAGE_CONNECTION_STRING}}
-          token: ${{secrets.VSCODE_ISSUE_TRIAGE_BOT_PAT}}
-          appInsightsKey: ${{secrets.TRIAGE_ACTIONS_APP_INSIGHTS}}
-      - name: Set up Python 3.7
-        uses: actions/setup-python@v1
-        with:
-          python-version: 3.7
-      - name: Install dependencies
-        run: |
-          python -m pip install --upgrade pip
-          pip install --upgrade numpy==1.20.0 scipy==1.6.0 scikit-learn==0.24.1 joblib==1.0.0 nltk==3.5 simpletransformers==0.51.16 torch==1.7.1 torchvision==0.8.2
-      - name: "Run Classifier: Generator"
-        run: python ./actions/classifier-deep/apply/generate-labels/main.py
-      - name: "Run Classifier: Labeler"
-        uses: ./actions/classifier-deep/apply/apply-labels
-        with:
-          configPath: classifier
-          allowLabels: "needs more info|new release"
-          appInsightsKey: ${{secrets.TRIAGE_ACTIONS_APP_INSIGHTS}}
-          token: ${{secrets.VSCODE_ISSUE_TRIAGE_BOT_PAT}}
diff --git a/lib/vscode/.github/workflows/deep-classifier-scraper.yml b/lib/vscode/.github/workflows/deep-classifier-scraper.yml
deleted file mode 100644
index 270e9ceb4309..000000000000
--- a/lib/vscode/.github/workflows/deep-classifier-scraper.yml
+++ /dev/null
@@ -1,29 +0,0 @@
-name: "Deep Classifier: Scraper"
-on:
-  schedule:
-    - cron: 0 0 15 * * # 15th of the month
-  repository_dispatch:
-    types: [trigger-deep-classifier-scraper]
-
-jobs:
-  main:
-    runs-on: ubuntu-latest
-    steps:
-      - name: Checkout Actions
-        uses: actions/checkout@v2
-        with:
-          repository: "microsoft/vscode-github-triage-actions"
-          ref: stable
-          path: ./actions
-      - name: Install Actions
-        run: npm install --production --prefix ./actions
-      - name: Install Additional Dependencies
-        # Pulls in a bunch of other packages that arent needed for the rest of the actions
-        run: npm install @azure/storage-blob@12.1.1
-      - name: "Run Classifier: Scraper"
-        uses: ./actions/classifier-deep/train/fetch-issues
-        with:
-          blobContainerName: vscode-issue-classifier
-          blobStorageKey: ${{secrets.AZURE_BLOB_STORAGE_CONNECTION_STRING}}
-          token: ${{secrets.VSCODE_ISSUE_TRIAGE_BOT_PAT}}
-          appInsightsKey: ${{secrets.TRIAGE_ACTIONS_APP_INSIGHTS}}
diff --git a/lib/vscode/.github/workflows/devcontainer-cache.yml b/lib/vscode/.github/workflows/devcontainer-cache.yml
deleted file mode 100644
index 870419530805..000000000000
--- a/lib/vscode/.github/workflows/devcontainer-cache.yml
+++ /dev/null
@@ -1,40 +0,0 @@
-name: VS Code Repo Dev Container Cache Image Generation
-
-on:
-  push:
-    # Currently doing this for main, but could be done for PRs as well
-    branches:
-      - "main"
-
-    # Only updates to these files result in changes to installed packages, so skip otherwise
-    paths:
-      - "**/package-lock.json"
-      - "**/yarn.lock"
-
-jobs:
-  devcontainer:
-    name: Generate cache image
-    runs-on: ubuntu-latest
-    steps:
-      - name: Checkout
-        id: checkout
-        uses: actions/checkout@v2
-
-      - name: Azure CLI login
-        id: az_login
-        uses: azure/login@77f1b2e3fb80c0e8645114159d17008b8a2e475a
-        with:
-          creds: ${{ secrets.AZ_ACR_CREDS }}
-
-      - name: Build and push
-        id: build_and_push
-        run: |
-          set -e
-
-          ACR_REGISTRY_NAME=$(echo ${{ secrets.CONTAINER_IMAGE_REGISTRY }} | grep -oP '(.+)(?=\.azurecr\.io)')
-          az acr login --name $ACR_REGISTRY_NAME
-
-          GIT_BRANCH=$(echo "${{ github.ref }}" | grep -oP 'refs/(heads|tags)/\K(.+)')
-          if [ "$GIT_BRANCH" == "" ]; then GIT_BRANCH=main; fi
-
-          .devcontainer/cache/build-cache-image.sh "${{ secrets.CONTAINER_IMAGE_REGISTRY }}/public/vscode/devcontainers/repos/microsoft/vscode" "${GIT_BRANCH}"
diff --git a/lib/vscode/.github/workflows/english-please.yml b/lib/vscode/.github/workflows/english-please.yml
deleted file mode 100644
index a11a9a357c61..000000000000
--- a/lib/vscode/.github/workflows/english-please.yml
+++ /dev/null
@@ -1,31 +0,0 @@
-name: English Please
-on:
-  issues:
-    types: [edited]
-
-# also make changes in ./on-label.yml and ./on-open.yml
-jobs:
-  main:
-    runs-on: ubuntu-latest
-    steps:
-      - name: Checkout Actions
-        if: contains(github.event.issue.labels.*.name, '*english-please')
-        uses: actions/checkout@v2
-        with:
-          repository: "microsoft/vscode-github-triage-actions"
-          ref: stable
-          path: ./actions
-      - name: Install Actions
-        if: contains(github.event.issue.labels.*.name, '*english-please')
-        run: npm install --production --prefix ./actions
-      - name: Run English Please
-        if: contains(github.event.issue.labels.*.name, '*english-please')
-        uses: ./actions/english-please
-        with:
-          appInsightsKey: ${{secrets.TRIAGE_ACTIONS_APP_INSIGHTS}}
-          token: ${{secrets.VSCODE_ISSUE_TRIAGE_BOT_PAT}}
-          cognitiveServicesAPIKey: ${{secrets.AZURE_TEXT_TRANSLATOR_KEY}}
-          nonEnglishLabel: "*english-please"
-          needsMoreInfoLabel: "needs more info"
-          translatorRequestedLabelPrefix: "translation-required-"
-          translatorRequestedLabelColor: "c29cff"
diff --git a/lib/vscode/.github/workflows/feature-request.yml b/lib/vscode/.github/workflows/feature-request.yml
deleted file mode 100644
index bce7976b0c65..000000000000
--- a/lib/vscode/.github/workflows/feature-request.yml
+++ /dev/null
@@ -1,43 +0,0 @@
-name: Feature Request Manager
-on:
-  repository_dispatch:
-    types: [trigger-feature-request-manager]
-  issues:
-    types: [milestoned]
-  schedule:
-    - cron: 20 2 * * * # 4:20am Zurich
-
-# also make changes in ./on-label.yml
-jobs:
-  main:
-    runs-on: ubuntu-latest
-    steps:
-      - name: Checkout Actions
-        if: github.event_name != 'issues' || contains(github.event.issue.labels.*.name, 'feature-request')
-        uses: actions/checkout@v2
-        with:
-          repository: "microsoft/vscode-github-triage-actions"
-          path: ./actions
-          ref: stable
-      - name: Install Actions
-        if: github.event_name != 'issues' || contains(github.event.issue.labels.*.name, 'feature-request')
-        run: npm install --production --prefix ./actions
-      - name: Run Feature Request Manager
-        if: github.event_name != 'issues' || contains(github.event.issue.labels.*.name, 'feature-request')
-        uses: ./actions/feature-request
-        with:
-          appInsightsKey: ${{secrets.TRIAGE_ACTIONS_APP_INSIGHTS}}
-          token: ${{secrets.VSCODE_ISSUE_TRIAGE_BOT_PAT}}
-          candidateMilestoneID: 107
-          candidateMilestoneName: Backlog Candidates
-          backlogMilestoneID: 8
-          featureRequestLabel: feature-request
-          upvotesRequired: 20
-          numCommentsOverride: 20
-          initComment: "This feature request is now a candidate for our backlog. The community has 60 days to [upvote](https://github.com/microsoft/vscode/wiki/Issues-Triaging#up-voting-a-feature-request) the issue. If it receives 20 upvotes we will move it to our backlog. If not, we will close it. To learn more about how we handle feature requests, please see our [documentation](https://aka.ms/vscode-issue-lifecycle).\n\nHappy Coding!"
-          warnComment: "This feature request has not yet received the 20 community [upvotes](https://github.com/microsoft/vscode/wiki/Issues-Triaging#up-voting-a-feature-request) it takes to make to our backlog. 10 days to go. To learn more about how we handle feature requests, please see our [documentation](https://aka.ms/vscode-issue-lifecycle).\n\nHappy Coding!"
-          acceptComment: ":slightly_smiling_face: This feature request received a sufficient number of community upvotes and we moved it to our backlog. To learn more about how we handle feature requests, please see our [documentation](https://aka.ms/vscode-issue-lifecycle).\n\nHappy Coding!"
-          rejectComment: ":slightly_frowning_face: In the last 60 days, this feature request has received less than 20 community upvotes and we closed it. Still a big Thank You to you for taking the time to create this issue! To learn more about how we handle feature requests, please see our [documentation](https://aka.ms/vscode-issue-lifecycle).\n\nHappy Coding!"
-          warnDays: 10
-          closeDays: 60
-          milestoneDelaySeconds: 60
diff --git a/lib/vscode/.github/workflows/latest-release-monitor.yml b/lib/vscode/.github/workflows/latest-release-monitor.yml
deleted file mode 100644
index 34148088b946..000000000000
--- a/lib/vscode/.github/workflows/latest-release-monitor.yml
+++ /dev/null
@@ -1,27 +0,0 @@
-name: Latest Release Monitor
-on:
-  schedule:
-    - cron: 0/5 * * * *
-  repository_dispatch:
-    types: [trigger-latest-release-monitor]
-
-jobs:
-  main:
-    runs-on: ubuntu-latest
-    steps:
-      - name: Checkout Actions
-        uses: actions/checkout@v2
-        with:
-          repository: "microsoft/vscode-github-triage-actions"
-          path: ./actions
-          ref: stable
-      - name: Install Actions
-        run: npm install --production --prefix ./actions
-      - name: Install Storage Module
-        run: npm install @azure/storage-blob@12.1.1
-      - name: Run Latest Release Monitor
-        uses: ./actions/latest-release-monitor
-        with:
-          storageKey: ${{secrets.AZURE_BLOB_STORAGE_CONNECTION_STRING}}
-          appInsightsKey: ${{secrets.TRIAGE_ACTIONS_APP_INSIGHTS}}
-          token: ${{secrets.VSCODE_ISSUE_TRIAGE_BOT_PAT}}
diff --git a/lib/vscode/.github/workflows/locker.yml b/lib/vscode/.github/workflows/locker.yml
deleted file mode 100644
index d0840daf02b9..000000000000
--- a/lib/vscode/.github/workflows/locker.yml
+++ /dev/null
@@ -1,28 +0,0 @@
-name: Locker
-on:
-  schedule:
-    - cron: 20 23 * * * # 4:20pm Redmond
-  repository_dispatch:
-    types: [trigger-locker]
-
-jobs:
-  main:
-    runs-on: ubuntu-latest
-    steps:
-      - name: Checkout Actions
-        uses: actions/checkout@v2
-        with:
-          repository: "microsoft/vscode-github-triage-actions"
-          path: ./actions
-          ref: stable
-      - name: Install Actions
-        run: npm install --production --prefix ./actions
-      - name: Run Locker
-        uses: ./actions/locker
-        with:
-          daysSinceClose: 45
-          appInsightsKey: ${{secrets.TRIAGE_ACTIONS_APP_INSIGHTS}}
-          daysSinceUpdate: 3
-          ignoredLabel: "*out-of-scope"
-          ignoreLabelUntil: "author-verification-requested"
-          labelUntil: "verified"
diff --git a/lib/vscode/.github/workflows/needs-more-info-closer.yml b/lib/vscode/.github/workflows/needs-more-info-closer.yml
deleted file mode 100644
index bff4ce826977..000000000000
--- a/lib/vscode/.github/workflows/needs-more-info-closer.yml
+++ /dev/null
@@ -1,30 +0,0 @@
-name: Needs More Info Closer
-on:
-  schedule:
-    - cron: 20 11 * * * # 4:20am Redmond
-  repository_dispatch:
-    types: [trigger-needs-more-info]
-
-jobs:
-  main:
-    runs-on: ubuntu-latest
-    steps:
-      - name: Checkout Actions
-        uses: actions/checkout@v2
-        with:
-          repository: "microsoft/vscode-github-triage-actions"
-          path: ./actions
-          ref: stable
-      - name: Install Actions
-        run: npm install --production --prefix ./actions
-      - name: Run Needs More Info Closer
-        uses: ./actions/needs-more-info-closer
-        with:
-          appInsightsKey: ${{secrets.TRIAGE_ACTIONS_APP_INSIGHTS}}
-          token: ${{secrets.VSCODE_ISSUE_TRIAGE_BOT_PAT}}
-          label: needs more info
-          closeDays: 7
-          additionalTeam: "cleidigh|usernamehw|gjsjohnmurray|IllusionMH"
-          closeComment: "This issue has been closed automatically because it needs more information and has not had recent activity. See also our [issue reporting](https://aka.ms/vscodeissuereporting) guidelines.\n\nHappy Coding!"
-          pingDays: 80
-          pingComment: "Hey @${assignee}, this issue might need further attention.\n\n@${author}, you can help us out by closing this issue if the problem no longer exists, or adding more information."
diff --git a/lib/vscode/.github/workflows/no-yarn-lock-changes.yml b/lib/vscode/.github/workflows/no-yarn-lock-changes.yml
deleted file mode 100644
index ebd735bf7e59..000000000000
--- a/lib/vscode/.github/workflows/no-yarn-lock-changes.yml
+++ /dev/null
@@ -1,30 +0,0 @@
-name: Prevent yarn.lock changes in PRs
-on: [pull_request]
-
-jobs:
-  main:
-    name: Prevent yarn.lock changes in PRs
-    runs-on: ubuntu-latest
-    steps:
-      - uses: octokit/request-action@v2.x
-        id: get_permissions
-        with:
-          route: GET /repos/microsoft/vscode/collaborators/{username}/permission
-          username: ${{ github.event.pull_request.user.login }}
-        env:
-          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-      - name: Set control output variable
-        id: control
-        run: |
-          echo "user: ${{ github.event.pull_request.user.login }}"
-          echo "role: ${{ fromJson(steps.get_permissions.outputs.data).permission }}"
-          echo "should_run: ${{ !contains(fromJson('["admin", "write"]'), fromJson(steps.get_permissions.outputs.data).permission) }}"
-          echo "::set-output name=should_run::${{ !contains(fromJson('["admin", "write"]'), fromJson(steps.get_permissions.outputs.data).permission) }}"
-      - name: Get file changes
-        uses: trilom/file-changes-action@ce38c8ce2459ca3c303415eec8cb0409857b4272
-        if: ${{ steps.control.outputs.should_run == 'true' }}
-      - name: Check for yarn.lock changes
-        if: ${{ steps.control.outputs.should_run == 'true' }}
-        run: |
-          cat $HOME/files.json | jq -e 'any(test("yarn\\.lock$")) | not' \
-            || (echo "Changes to yarn.lock files aren't allowed in PRs." && exit 1)
diff --git a/lib/vscode/.github/workflows/on-comment.yml b/lib/vscode/.github/workflows/on-comment.yml
deleted file mode 100644
index 8d661336a895..000000000000
--- a/lib/vscode/.github/workflows/on-comment.yml
+++ /dev/null
@@ -1,31 +0,0 @@
-name: On Comment
-on:
-  issue_comment:
-    types: [created]
-
-# also make changes in ./on-label.yml
-jobs:
-  main:
-    runs-on: ubuntu-latest
-    steps:
-      - name: Checkout Actions
-        uses: actions/checkout@v2
-        with:
-          repository: "microsoft/vscode-github-triage-actions"
-          path: ./actions
-          ref: stable
-      - name: Install Actions
-        run: npm install --production --prefix ./actions
-      - name: Run Commands
-        uses: ./actions/commands
-        with:
-          appInsightsKey: ${{secrets.TRIAGE_ACTIONS_APP_INSIGHTS}}
-          token: ${{secrets.VSCODE_ISSUE_TRIAGE_BOT_PAT}}
-          config-path: commands
-      - name: "Run Release Pipeline Labeler"
-        uses: ./actions/release-pipeline
-        with:
-          token: ${{secrets.VSCODE_ISSUE_TRIAGE_BOT_PAT}}
-          appInsightsKey: ${{secrets.TRIAGE_ACTIONS_APP_INSIGHTS}}
-          notYetReleasedLabel: unreleased
-          insidersReleasedLabel: insiders-released
diff --git a/lib/vscode/.github/workflows/on-label.yml b/lib/vscode/.github/workflows/on-label.yml
deleted file mode 100644
index 9d62de8e57cf..000000000000
--- a/lib/vscode/.github/workflows/on-label.yml
+++ /dev/null
@@ -1,90 +0,0 @@
-name: On Label
-on:
-  issues:
-    types: [labeled]
-
-jobs:
-  main:
-    runs-on: ubuntu-latest
-    steps:
-      - name: Checkout Actions
-        uses: actions/checkout@v2
-        with:
-          repository: "microsoft/vscode-github-triage-actions"
-          ref: stable
-          path: ./actions
-      - name: Install Actions
-        run: npm install --production --prefix ./actions
-
-      # source of truth in ./author-verified.yml
-      - name: Run Author Verified
-        if: contains(github.event.issue.labels.*.name, 'author-verification-requested') && contains(github.event.issue.labels.*.name, 'insiders-released')
-        uses: ./actions/author-verified
-        with:
-          appInsightsKey: ${{secrets.TRIAGE_ACTIONS_APP_INSIGHTS}}
-          token: ${{secrets.VSCODE_ISSUE_TRIAGE_BOT_PAT}}
-          requestVerificationComment: "This bug has been fixed in the latest release of [VS Code Insiders](https://code.visualstudio.com/insiders/)!\n\n@${author}, you can help us out by commenting `/verified` if things are now working as expected.\n\nIf things still don't seem right, please ensure you're on version ${commit} of Insiders (today's or later - you can use `Help: About` in the command palette to check), and leave a comment letting us know what isn't working as expected.\n\nHappy Coding!"
-          releasedLabel: insiders-released
-          verifiedLabel: verified
-          authorVerificationRequestedLabel: author-verification-requested
-
-
-      # also make changes in ./on-comment.yml
-      - name: Run Commands
-        uses: ./actions/commands
-        with:
-          appInsightsKey: ${{secrets.TRIAGE_ACTIONS_APP_INSIGHTS}}
-          token: ${{secrets.VSCODE_ISSUE_TRIAGE_BOT_PAT}}
-          config-path: commands
-
-      # only here.
-      - name: Run Subscribers
-        uses: ./actions/topic-subscribe
-        with:
-          appInsightsKey: ${{secrets.TRIAGE_ACTIONS_APP_INSIGHTS}}
-          token: ${{secrets.VSCODE_ISSUE_TRIAGE_BOT_PAT}}
-          config-path: subscribers
-
-      # source of truth in ./feature-request.yml
-      - name: Run Feature Request Manager
-        if: contains(github.event.issue.labels.*.name, 'feature-request')
-        uses: ./actions/feature-request
-        with:
-          appInsightsKey: ${{secrets.TRIAGE_ACTIONS_APP_INSIGHTS}}
-          token: ${{secrets.VSCODE_ISSUE_TRIAGE_BOT_PAT}}
-          candidateMilestoneID: 107
-          candidateMilestoneName: Backlog Candidates
-          backlogMilestoneID: 8
-          featureRequestLabel: feature-request
-          upvotesRequired: 20
-          numCommentsOverride: 20
-          initComment: "This feature request is now a candidate for our backlog. The community has 60 days to upvote the issue. If it receives 20 upvotes we will move it to our backlog. If not, we will close it. To learn more about how we handle feature requests, please see our [documentation](https://aka.ms/vscode-issue-lifecycle).\n\nHappy Coding!"
-          warnComment: "This feature request has not yet received the 20 community upvotes it takes to make to our backlog. 10 days to go. To learn more about how we handle feature requests, please see our [documentation](https://aka.ms/vscode-issue-lifecycle).\n\nHappy Coding"
-          acceptComment: ":slightly_smiling_face: This feature request received a sufficient number of community upvotes and we moved it to our backlog. To learn more about how we handle feature requests, please see our [documentation](https://aka.ms/vscode-issue-lifecycle).\n\nHappy Coding!"
-          rejectComment: ":slightly_frowning_face: In the last 60 days, this feature request has received less than 20 community upvotes and we closed it. Still a big Thank You to you for taking the time to create this issue! To learn more about how we handle feature requests, please see our [documentation](https://aka.ms/vscode-issue-lifecycle).\n\nHappy Coding!"
-          warnDays: 10
-          closeDays: 60
-          milestoneDelaySeconds: 60
-
-      # source of truth in ./test-plan-item-validator.yml
-      - name: Run Test Plan Item Validator
-        if: contains(github.event.issue.labels.*.name, 'testplan-item') || contains(github.event.issue.labels.*.name, 'invalid-testplan-item')
-        uses: ./actions/test-plan-item-validator
-        with:
-          appInsightsKey: ${{secrets.TRIAGE_ACTIONS_APP_INSIGHTS}}
-          label: testplan-item
-          invalidLabel: invalid-testplan-item
-          comment: Invalid test plan item. See errors below and the [test plan item spec](https://github.com/microsoft/vscode/wiki/Writing-Test-Plan-Items) for more information. This comment will go away when the issues are resolved.
-
-      # source of truth in ./english-please.yml
-      - name: Run English Please
-        if: contains(github.event.issue.labels.*.name, '*english-please')
-        uses: ./actions/english-please
-        with:
-          appInsightsKey: ${{secrets.TRIAGE_ACTIONS_APP_INSIGHTS}}
-          token: ${{secrets.VSCODE_ISSUE_TRIAGE_BOT_PAT}}
-          cognitiveServicesAPIKey: ${{secrets.AZURE_TEXT_TRANSLATOR_KEY}}
-          nonEnglishLabel: "*english-please"
-          needsMoreInfoLabel: "needs more info"
-          translatorRequestedLabelPrefix: "translation-required-"
-          translatorRequestedLabelColor: "c29cff"
diff --git a/lib/vscode/.github/workflows/on-open.yml b/lib/vscode/.github/workflows/on-open.yml
deleted file mode 100644
index e5dc42ac44af..000000000000
--- a/lib/vscode/.github/workflows/on-open.yml
+++ /dev/null
@@ -1,69 +0,0 @@
-name: On Open
-on:
-  issues:
-    types: [opened]
-
-jobs:
-  main:
-    runs-on: ubuntu-latest
-    steps:
-      - name: Checkout Actions
-        uses: actions/checkout@v2
-        with:
-          repository: "microsoft/vscode-github-triage-actions"
-          ref: stable
-          path: ./actions
-      - name: Install Actions
-        run: npm install --production --prefix ./actions
-
-      - name: Run CopyCat (JacksonKearl/testissues)
-        uses: ./actions/copycat
-        with:
-          appInsightsKey: ${{secrets.TRIAGE_ACTIONS_APP_INSIGHTS}}
-          token: ${{secrets.VSCODE_ISSUE_TRIAGE_BOT_PAT}}
-          owner: JacksonKearl
-          repo: testissues
-      - name: Run CopyCat (chrmarti/testissues)
-        uses: ./actions/copycat
-        with:
-          appInsightsKey: ${{secrets.TRIAGE_ACTIONS_APP_INSIGHTS}}
-          token: ${{secrets.VSCODE_ISSUE_TRIAGE_BOT_PAT}}
-          owner: chrmarti
-          repo: testissues
-
-      - name: Run New Release
-        uses: ./actions/new-release
-        with:
-          label: new release
-          appInsightsKey: ${{secrets.TRIAGE_ACTIONS_APP_INSIGHTS}}
-          labelColor: "006b75"
-          labelDescription: Issues found in a recent release of VS Code
-          days: 5
-
-      - name: Run Clipboard Labeler
-        uses: ./actions/regex-labeler
-        with:
-          appInsightsKey: ${{secrets.TRIAGE_ACTIONS_APP_INSIGHTS}}
-          label: "invalid"
-          mustNotMatch: "^We have written the needed data into your clipboard because it was too large to send\\. Please paste\\.$"
-          comment: "It looks like you're using the VS Code Issue Reporter but did not paste the text generated into the created issue. We've closed this issue, please open a new one containing the text we placed in your clipboard.\n\nHappy Coding!"
-
-      - name: Run Clipboard Labeler (Chinese)
-        uses: ./actions/regex-labeler
-        with:
-          appInsightsKey: ${{secrets.TRIAGE_ACTIONS_APP_INSIGHTS}}
-          label: "invalid"
-          mustNotMatch: "^所需的数据太大,无法直接发送。我们已经将其写入剪贴板,请粘贴。$"
-          comment: "看起来您正在使用 VS Code 问题报告程序,但是没有将生成的文本粘贴到创建的问题中。我们将关闭这个问题,请使用剪贴板中的内容创建一个新的问题。\n\n祝您使用愉快!"
-
-      # source of truth in ./english-please.yml
-      - name: Run English Please
-        uses: ./actions/english-please
-        with:
-          token: ${{secrets.VSCODE_ISSUE_TRIAGE_BOT_PAT}}
-          appInsightsKey: ${{secrets.TRIAGE_ACTIONS_APP_INSIGHTS}}
-          cognitiveServicesAPIKey: ${{secrets.AZURE_TEXT_TRANSLATOR_KEY}}
-          nonEnglishLabel: "*english-please"
-          needsMoreInfoLabel: "needs more info"
-          translatorRequestedLabelPrefix: "translation-required-"
-          translatorRequestedLabelColor: "c29cff"
diff --git a/lib/vscode/.github/workflows/release-pipeline-labeler.yml b/lib/vscode/.github/workflows/release-pipeline-labeler.yml
deleted file mode 100644
index 0124667d4a8a..000000000000
--- a/lib/vscode/.github/workflows/release-pipeline-labeler.yml
+++ /dev/null
@@ -1,32 +0,0 @@
-name: "Release Pipeline Labeler"
-on:
-  issues:
-    types: [closed, reopened]
-  repository_dispatch:
-    types: [released-insider]
-
-jobs:
-  main:
-    runs-on: ubuntu-latest
-    steps:
-      - name: Checkout Actions
-        uses: actions/checkout@v2
-        with:
-          repository: "microsoft/vscode-github-triage-actions"
-          ref: stable
-          path: ./actions
-      - name: Checkout Repo
-        if: github.event_name != 'issues'
-        uses: actions/checkout@v2
-        with:
-          path: ./repo
-          fetch-depth: 0
-      - name: Install Actions
-        run: npm install --production --prefix ./actions
-      - name: "Run Release Pipeline Labeler"
-        uses: ./actions/release-pipeline
-        with:
-          token: ${{secrets.VSCODE_ISSUE_TRIAGE_BOT_PAT}}
-          appInsightsKey: ${{secrets.TRIAGE_ACTIONS_APP_INSIGHTS}}
-          notYetReleasedLabel: unreleased
-          insidersReleasedLabel: insiders-released
diff --git a/lib/vscode/.github/workflows/rich-navigation.yml b/lib/vscode/.github/workflows/rich-navigation.yml
deleted file mode 100644
index 07a175d90bbb..000000000000
--- a/lib/vscode/.github/workflows/rich-navigation.yml
+++ /dev/null
@@ -1,37 +0,0 @@
-name: "Rich Navigation Indexing"
-on:
-  pull_request:
-  push:
-    branches:
-      - main
-
-jobs:
-  richnav:
-    runs-on: windows-latest
-    steps:
-      - uses: actions/checkout@v2
-
-      - uses: actions/cache@v2
-        id: caching-stage
-        name: Cache VS Code dependencies
-        with:
-          path: node_modules
-          key: ${{ runner.os }}-dependencies-${{ hashfiles('yarn.lock') }}
-          restore-keys: ${{ runner.os }}-dependencies-
-
-      - uses: actions/setup-node@v1
-        with:
-          node-version: 10
-
-      - name: Install dependencies
-        if: steps.caching-stage.outputs.cache-hit != 'true'
-        run: yarn --frozen-lockfile
-        env:
-          CHILD_CONCURRENCY: 1
-
-      - uses: microsoft/RichCodeNavIndexer@v0.1
-        with:
-          languages: typescript
-          repo-token: ${{ secrets.GITHUB_TOKEN }}
-          typescriptVersion: 0.6.0-next.8
-        continue-on-error: true
diff --git a/lib/vscode/.github/workflows/test-plan-item-validator.yml b/lib/vscode/.github/workflows/test-plan-item-validator.yml
deleted file mode 100644
index 3d381236e09b..000000000000
--- a/lib/vscode/.github/workflows/test-plan-item-validator.yml
+++ /dev/null
@@ -1,28 +0,0 @@
-name: Test Plan Item Validator
-on:
-  issues:
-    types: [edited]
-
-# also edit in ./on-label.yml
-jobs:
-  main:
-    runs-on: ubuntu-latest
-    steps:
-      - name: Checkout Actions
-        if: contains(github.event.issue.labels.*.name, 'testplan-item') || contains(github.event.issue.labels.*.name, 'invalid-testplan-item')
-        uses: actions/checkout@v2
-        with:
-          repository: "microsoft/vscode-github-triage-actions"
-          path: ./actions
-          ref: stable
-      - name: Install Actions
-        if: contains(github.event.issue.labels.*.name, 'testplan-item') || contains(github.event.issue.labels.*.name, 'invalid-testplan-item')
-        run: npm install --production --prefix ./actions
-      - name: Run Test Plan Item Validator
-        if: contains(github.event.issue.labels.*.name, 'testplan-item') || contains(github.event.issue.labels.*.name, 'invalid-testplan-item')
-        uses: ./actions/test-plan-item-validator
-        with:
-          label: testplan-item
-          appInsightsKey: ${{secrets.TRIAGE_ACTIONS_APP_INSIGHTS}}
-          invalidLabel: invalid-testplan-item
-          comment: Invalid test plan item. See errors below and the [test plan item spec](https://github.com/microsoft/vscode/wiki/Writing-Test-Plan-Items) for more information. This comment will go away when the issues are resolved.
diff --git a/lib/vscode/.gitignore b/lib/vscode/.gitignore
deleted file mode 100644
index ed42d401d9cd..000000000000
--- a/lib/vscode/.gitignore
+++ /dev/null
@@ -1,19 +0,0 @@
-.DS_Store
-.cache
-npm-debug.log
-Thumbs.db
-node_modules/
-.build/
-extensions/**/dist/
-/out*/
-/extensions/**/out/
-# NOTE@coder: remove to provide our own server
-# src/vs/server
-resources/server
-build/node_modules
-coverage/
-test_data/
-test-results/
-yarn-error.log
-vscode.lsif
-vscode.db
diff --git a/lib/vscode/.mailmap b/lib/vscode/.mailmap
deleted file mode 100644
index d4542abf73c1..000000000000
--- a/lib/vscode/.mailmap
+++ /dev/null
@@ -1,6 +0,0 @@
-Eric Amodio <eamodio@microsoft.com> Eric Amodio <eamodio@gmail.com>
-Eric Amodio <eamodio@microsoft.com> Eric Amodio <eamodio@ioninteractive.com>
-Daniel Imms <daimms@microsoft.com> Daniel Imms <tyriar@tyriar.com>
-Tanha Kabir <tanha.kabir@microsoft.com> Tanha Kabir <tanhakabir.ca@gmail.com>
-Raymond Zhao <raymondzhao@microsoft.com>
-Tyler Leonhardt <tyleonha@microsoft.com> Tyler Leonhardt <me@tylerleonhardt.com>
diff --git a/lib/vscode/.mention-bot b/lib/vscode/.mention-bot
deleted file mode 100644
index ea1a170775a7..000000000000
--- a/lib/vscode/.mention-bot
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-  "maxReviewers": 2,
-  "requiredOrgs": ["Microsoft"],
-  "skipAlreadyAssignedPR": true,
-  "skipAlreadyMentionedPR": true,
-  "skipCollaboratorPR": true
-}
\ No newline at end of file
diff --git a/lib/vscode/.vscode/cglicenses.schema.json b/lib/vscode/.vscode/cglicenses.schema.json
deleted file mode 100644
index 8c0ee740102d..000000000000
--- a/lib/vscode/.vscode/cglicenses.schema.json
+++ /dev/null
@@ -1,61 +0,0 @@
-{
-	"type": "array",
-	"items": {
-		"oneOf": [
-			{
-				"type": "object",
-				"required": [
-					"name",
-					"prependLicenseText"
-				],
-				"properties": {
-					"name": {
-						"type": "string",
-						"description": "The name of the dependency"
-					},
-					"fullLicenseText": {
-						"type": "array",
-						"description": "The complete license text of the dependency",
-						"items": {
-							"type": "string"
-						}
-					},
-					"prependLicenseText": {
-						"type": "array",
-						"description": "A piece of text to prepend to the auto-detected license text of the dependency",
-						"items": {
-							"type": "string"
-						}
-					}
-				}
-			},
-			{
-				"type": "object",
-				"required": [
-					"name",
-					"fullLicenseText"
-				],
-				"properties": {
-					"name": {
-						"type": "string",
-						"description": "The name of the dependency"
-					},
-					"fullLicenseText": {
-						"type": "array",
-						"description": "The complete license text of the dependency",
-						"items": {
-							"type": "string"
-						}
-					},
-					"prependLicenseText": {
-						"type": "array",
-						"description": "A piece of text to prepend to the auto-detected license text of the dependency",
-						"items": {
-							"type": "string"
-						}
-					}
-				}
-			}
-		]
-	}
-}
diff --git a/lib/vscode/.vscode/cgmanifest.schema.json b/lib/vscode/.vscode/cgmanifest.schema.json
deleted file mode 100644
index 2e719b02396e..000000000000
--- a/lib/vscode/.vscode/cgmanifest.schema.json
+++ /dev/null
@@ -1,142 +0,0 @@
-{
-	"type": "object",
-	"properties": {
-		"registrations": {
-			"type": "array",
-			"items": {
-				"type": "object",
-				"properties": {
-					"component": {
-						"oneOf": [
-							{
-								"type": "object",
-								"required": [
-									"type",
-									"git"
-								],
-								"properties": {
-									"type": {
-										"type": "string",
-										"enum": [
-											"git"
-										]
-									},
-									"git": {
-										"type": "object",
-										"required": [
-											"name",
-											"repositoryUrl",
-											"commitHash"
-										],
-										"properties": {
-											"name": {
-												"type": "string"
-											},
-											"repositoryUrl": {
-												"type": "string"
-											},
-											"commitHash": {
-												"type": "string"
-											}
-										}
-									}
-								}
-							},
-							{
-								"type": "object",
-								"required": [
-									"type",
-									"npm"
-								],
-								"properties": {
-									"type": {
-										"type": "string",
-										"enum": [
-											"npm"
-										]
-									},
-									"npm": {
-										"type": "object",
-										"required": [
-											"name",
-											"version"
-										],
-										"properties": {
-											"name": {
-												"type": "string"
-											},
-											"version": {
-												"type": "string"
-											}
-										}
-									}
-								}
-							},
-							{
-								"type": "object",
-								"required": [
-									"type",
-									"other"
-								],
-								"properties": {
-									"type": {
-										"type": "string",
-										"enum": [
-											"other"
-										]
-									},
-									"other": {
-										"type": "object",
-										"required": [
-											"name",
-											"downloadUrl",
-											"version"
-										],
-										"properties": {
-											"name": {
-												"type": "string"
-											},
-											"downloadUrl": {
-												"type": "string"
-											},
-											"version": {
-												"type": "string"
-											}
-										}
-									}
-								}
-							}
-						]
-					},
-					"repositoryUrl": {
-						"type": "string",
-						"description": "The git url of the component"
-					},
-					"version": {
-						"type": "string",
-						"description": "The version of the component"
-					},
-					"license": {
-						"type": "string",
-						"description": "The name of the license"
-					},
-					"developmentDependency": {
-						"type": "boolean",
-						"description": "This component is inlined in the vscode repo and **is not shipped**."
-					},
-					"isOnlyProductionDependency": {
-						"type": "boolean",
-						"description": "This component is shipped and **is not inlined in the vscode repo**."
-					},
-					"licenseDetail": {
-						"type": "array",
-						"items": {
-							"type": "string"
-						},
-						"description": "The license text"
-					}
-				}
-			}
-		}
-	}
-}
diff --git a/lib/vscode/.vscode/extensions.json b/lib/vscode/.vscode/extensions.json
deleted file mode 100644
index e8d77d395ad9..000000000000
--- a/lib/vscode/.vscode/extensions.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-	// See https://go.microsoft.com/fwlink/?LinkId=827846
-	// for the documentation about the extensions.json format
-	"recommendations": [
-		"dbaeumer.vscode-eslint",
-		"EditorConfig.EditorConfig"
-	]
-}
diff --git a/lib/vscode/.vscode/launch.json b/lib/vscode/.vscode/launch.json
deleted file mode 100644
index 3189af066ff2..000000000000
--- a/lib/vscode/.vscode/launch.json
+++ /dev/null
@@ -1,549 +0,0 @@
-{
-	"version": "0.1.0",
-	"configurations": [
-		{
-			"type": "node",
-			"request": "launch",
-			"name": "Gulp Build",
-			"program": "${workspaceFolder}/node_modules/gulp/bin/gulp.js",
-			"stopOnEntry": true,
-			"args": [
-				"hygiene"
-			]
-		},
-		{
-			"type": "node",
-			"request": "attach",
-			"restart": true,
-			"name": "Attach to Extension Host",
-			"timeout": 30000,
-			"port": 5870,
-			"outFiles": [
-				"${workspaceFolder}/out/**/*.js",
-				"${workspaceFolder}/extensions/*/out/**/*.js"
-			]
-		},
-		{
-			"type": "pwa-chrome",
-			"request": "attach",
-			"name": "Attach to Shared Process",
-			"timeout": 30000,
-			"port": 9222,
-			"urlFilter": "*sharedProcess.html*",
-			"presentation": {
-				"hidden": true
-			}
-		},
-		{
-			"type": "node",
-			"request": "attach",
-			"name": "Attach to Search Process",
-			"port": 5876,
-			"outFiles": [
-				"${workspaceFolder}/out/**/*.js"
-			]
-		},
-		{
-			"type": "node",
-			"request": "attach",
-			"name": "Attach to CLI Process",
-			"port": 5874,
-			"outFiles": [
-				"${workspaceFolder}/out/**/*.js"
-			]
-		},
-		{
-			"type": "node",
-			"request": "attach",
-			"name": "Attach to Main Process",
-			"timeout": 30000,
-			"port": 5875,
-			"outFiles": [
-				"${workspaceFolder}/out/**/*.js"
-			],
-			"presentation": {
-				"hidden": true,
-			}
-		},
-		{
-			"type": "extensionHost",
-			"request": "launch",
-			"name": "VS Code Emmet Tests",
-			"runtimeExecutable": "${execPath}",
-			"args": [
-				"${workspaceFolder}/extensions/emmet/test-fixtures",
-				"--extensionDevelopmentPath=${workspaceFolder}/extensions/emmet",
-				"--extensionTestsPath=${workspaceFolder}/extensions/emmet/out/test"
-			],
-			"outFiles": [
-				"${workspaceFolder}/out/**/*.js"
-			],
-			"presentation": {
-				"group": "5_tests",
-				"order": 6
-			}
-		},
-		{
-			"type": "extensionHost",
-			"request": "launch",
-			"name": "VS Code Git Tests",
-			"runtimeExecutable": "${execPath}",
-			"args": [
-				"/tmp/my4g9l",
-				"--extensionDevelopmentPath=${workspaceFolder}/extensions/git",
-				"--extensionTestsPath=${workspaceFolder}/extensions/git/out/test"
-			],
-			"outFiles": [
-				"${workspaceFolder}/extensions/git/out/**/*.js"
-			],
-			"presentation": {
-				"group": "5_tests",
-				"order": 6
-			}
-		},
-		{
-			"type": "extensionHost",
-			"request": "launch",
-			"name": "VS Code API Tests (single folder)",
-			"runtimeExecutable": "${execPath}",
-			"args": [
-				// "${workspaceFolder}", // Uncomment for running out of sources.
-				"${workspaceFolder}/extensions/vscode-api-tests/testWorkspace",
-				"--extensionDevelopmentPath=${workspaceFolder}/extensions/vscode-api-tests",
-				"--extensionTestsPath=${workspaceFolder}/extensions/vscode-api-tests/out/singlefolder-tests",
-				"--disable-extensions"
-			],
-			"outFiles": [
-				"${workspaceFolder}/out/**/*.js"
-			],
-			"presentation": {
-				"group": "5_tests",
-				"order": 3
-			}
-		},
-		{
-			"type": "extensionHost",
-			"request": "launch",
-			"name": "VS Code API Tests (workspace)",
-			"runtimeExecutable": "${execPath}",
-			"args": [
-				"${workspaceFolder}/extensions/vscode-api-tests/testworkspace.code-workspace",
-				"--extensionDevelopmentPath=${workspaceFolder}/extensions/vscode-api-tests",
-				"--extensionTestsPath=${workspaceFolder}/extensions/vscode-api-tests/out/workspace-tests"
-			],
-			"outFiles": [
-				"${workspaceFolder}/out/**/*.js"
-			],
-			"presentation": {
-				"group": "5_tests",
-				"order": 4
-			}
-		},
-		{
-			"type": "extensionHost",
-			"request": "launch",
-			"name": "VS Code Tokenizer Tests",
-			"runtimeExecutable": "${execPath}",
-			"args": [
-				"${workspaceFolder}/extensions/vscode-colorize-tests/test",
-				"--extensionDevelopmentPath=${workspaceFolder}/extensions/vscode-colorize-tests",
-				"--extensionTestsPath=${workspaceFolder}/extensions/vscode-colorize-tests/out"
-			],
-			"outFiles": [
-				"${workspaceFolder}/out/**/*.js"
-			],
-			"presentation": {
-				"group": "5_tests",
-				"order": 5
-			}
-		},
-		{
-			"type": "extensionHost",
-			"request": "launch",
-			"name": "VS Code Notebook Tests",
-			"runtimeExecutable": "${execPath}",
-			"args": [
-				"${workspaceFolder}/extensions/vscode-notebook-tests/test",
-				"--extensionDevelopmentPath=${workspaceFolder}/extensions/vscode-notebook-tests",
-				"--extensionTestsPath=${workspaceFolder}/extensions/vscode-notebook-tests/out"
-			],
-			"outFiles": [
-				"${workspaceFolder}/out/**/*.js"
-			],
-			"presentation": {
-				"group": "5_tests",
-				"order": 6
-			}
-		},
-		{
-			"type": "extensionHost",
-			"request": "launch",
-			"name": "VS Code Custom Editor Tests",
-			"runtimeExecutable": "${execPath}",
-			"args": [
-				"${workspaceFolder}/extensions/vscode-custom-editor-tests/test-workspace",
-				"--extensionDevelopmentPath=${workspaceFolder}/extensions/vscode-custom-editor-tests",
-				"--extensionTestsPath=${workspaceFolder}/extensions/vscode-custom-editor-tests/out/test"
-			],
-			"outFiles": [
-				"${workspaceFolder}/out/**/*.js"
-			],
-			"presentation": {
-				"group": "5_tests",
-				"order": 6
-			}
-		},
-		{
-			"type": "pwa-chrome",
-			"request": "attach",
-			"name": "Attach to VS Code",
-			"browserAttachLocation": "workspace",
-			"port": 9222,
-			"trace": true,
-			"outFiles": [
-				"${workspaceFolder}/out/**/*.js"
-			],
-			"resolveSourceMapLocations": [
-				"${workspaceFolder}/out/**/*.js"
-			],
-			"perScriptSourcemaps": "yes"
-		},
-		{
-			"type": "pwa-chrome",
-			"request": "launch",
-			"name": "Launch VS Code Internal",
-			"windows": {
-				"runtimeExecutable": "${workspaceFolder}/scripts/code.bat"
-			},
-			"osx": {
-				"runtimeExecutable": "${workspaceFolder}/scripts/code.sh"
-			},
-			"linux": {
-				"runtimeExecutable": "${workspaceFolder}/scripts/code.sh"
-			},
-			"port": 9222,
-			"timeout": 20000,
-			"env": {
-				"VSCODE_EXTHOST_WILL_SEND_SOCKET": null,
-				"VSCODE_SKIP_PRELAUNCH": "1"
-			},
-			"cleanUp": "wholeBrowser",
-			"urlFilter": "*workbench.html*",
-			"runtimeArgs": [
-				"--inspect=5875",
-				"--no-cached-data",
-			],
-			"webRoot": "${workspaceFolder}",
-			"cascadeTerminateToConfigurations": [
-				"Attach to Extension Host"
-			],
-			"userDataDir": false,
-			"pauseForSourceMap": false,
-			"outFiles": [
-				"${workspaceFolder}/out/**/*.js"
-			],
-			"browserLaunchLocation": "workspace",
-			"presentation": {
-				"hidden": true,
-			}
-		},
-		{
-			"type": "node",
-			"request": "launch",
-			"name": "VS Code (Web)",
-			"program": "${workspaceFolder}/resources/web/code-web.js",
-			"presentation": {
-				"group": "0_vscode",
-				"order": 2
-			}
-		},
-		{
-			"type": "node",
-			"request": "launch",
-			"name": "Main Process",
-			"runtimeExecutable": "${workspaceFolder}/scripts/code.sh",
-			"windows": {
-				"runtimeExecutable": "${workspaceFolder}/scripts/code.bat",
-			},
-			"runtimeArgs": [
-				"--no-cached-data"
-			],
-			"outFiles": [
-				"${workspaceFolder}/out/**/*.js"
-			],
-			"presentation": {
-				"group": "1_vscode",
-				"order": 1
-			}
-		},
-		{
-			"type": "pwa-chrome",
-			"request": "launch",
-			"outFiles": [],
-			"perScriptSourcemaps": "yes",
-			"name": "VS Code (Web, Chrome)",
-			"url": "http://localhost:8080",
-			"preLaunchTask": "Run web",
-			"presentation": {
-				"group": "0_vscode",
-				"order": 3
-			}
-		},
-		{
-			"type": "pwa-msedge",
-			"request": "launch",
-			"outFiles": [],
-			"perScriptSourcemaps": "yes",
-			"name": "VS Code (Web, Edge)",
-			"url": "http://localhost:8080",
-			"pauseForSourceMap": false,
-			"preLaunchTask": "Run web",
-			"presentation": {
-				"group": "0_vscode",
-				"order": 3
-			}
-		},
-		{
-			"type": "node",
-			"request": "launch",
-			"name": "Git Unit Tests",
-			"program": "${workspaceFolder}/extensions/git/node_modules/mocha/bin/_mocha",
-			"stopOnEntry": false,
-			"cwd": "${workspaceFolder}/extensions/git",
-			"outFiles": [
-				"${workspaceFolder}/extensions/git/out/**/*.js"
-			],
-			"presentation": {
-				"group": "5_tests",
-				"order": 10
-			}
-		},
-		{
-			"type": "node",
-			"request": "launch",
-			"name": "HTML Server Unit Tests",
-			"program": "${workspaceFolder}/extensions/html-language-features/server/test/index.js",
-			"stopOnEntry": false,
-			"cwd": "${workspaceFolder}/extensions/html-language-features/server",
-			"outFiles": [
-				"${workspaceFolder}/extensions/html-language-features/server/out/**/*.js"
-			],
-			"presentation": {
-				"group": "5_tests",
-				"order": 10
-			}
-		},
-		{
-			"type": "node",
-			"request": "launch",
-			"name": "CSS Server Unit Tests",
-			"program": "${workspaceFolder}/extensions/css-language-features/server/test/index.js",
-			"stopOnEntry": false,
-			"cwd": "${workspaceFolder}/extensions/css-language-features/server",
-			"outFiles": [
-				"${workspaceFolder}/extensions/css-language-features/server/out/**/*.js"
-			],
-			"presentation": {
-				"group": "5_tests",
-				"order": 10
-			}
-		},
-		{
-			"type": "extensionHost",
-			"request": "launch",
-			"name": "Markdown Extension Tests",
-			"runtimeExecutable": "${execPath}",
-			"args": [
-				"${workspaceFolder}/extensions/markdown-language-features/test-workspace",
-				"--extensionDevelopmentPath=${workspaceFolder}/extensions/markdown-language-features",
-				"--extensionTestsPath=${workspaceFolder}/extensions/markdown-language-features/out/test"
-			],
-			"outFiles": [
-				"${workspaceFolder}/extensions/markdown-language-features/out/**/*.js"
-			],
-			"presentation": {
-				"group": "5_tests",
-				"order": 7
-			}
-		},
-		{
-			"type": "extensionHost",
-			"request": "launch",
-			"name": "TypeScript Extension Tests",
-			"runtimeExecutable": "${execPath}",
-			"args": [
-				"${workspaceFolder}/extensions/typescript-language-features/test-workspace",
-				"--extensionDevelopmentPath=${workspaceFolder}/extensions/typescript-language-features",
-				"--extensionTestsPath=${workspaceFolder}/extensions/typescript-language-features/out/test"
-			],
-			"outFiles": [
-				"${workspaceFolder}/extensions/typescript-language-features/out/**/*.js"
-			],
-			"presentation": {
-				"group": "5_tests",
-				"order": 8
-			}
-		},
-		{
-			"type": "pwa-node",
-			"request": "launch",
-			"name": "Run Unit Tests",
-			"program": "${workspaceFolder}/test/unit/electron/index.js",
-			"runtimeExecutable": "${workspaceFolder}/.build/electron/Code - OSS.app/Contents/MacOS/Electron",
-			"windows": {
-				"runtimeExecutable": "${workspaceFolder}/.build/electron/Code - OSS.exe"
-			},
-			"linux": {
-				"runtimeExecutable": "${workspaceFolder}/.build/electron/code-oss"
-			},
-			"outputCapture": "std",
-			"args": [
-				"--remote-debugging-port=9222"
-			],
-			"cwd": "${workspaceFolder}",
-			"outFiles": [
-				"${workspaceFolder}/out/**/*.js"
-			],
-			"cascadeTerminateToConfigurations": [
-				"Attach to VS Code"
-			],
-			"env": {
-				"MOCHA_COLORS": "true"
-			},
-			"presentation": {
-				"hidden": true
-			}
-		},
-		{
-			"type": "pwa-node",
-			"request": "launch",
-			"name": "Run Unit Tests For Current File",
-			"program": "${workspaceFolder}/test/unit/electron/index.js",
-			"runtimeExecutable": "${workspaceFolder}/.build/electron/Code - OSS.app/Contents/MacOS/Electron",
-			"windows": {
-				"runtimeExecutable": "${workspaceFolder}/.build/electron/Code - OSS.exe"
-			},
-			"linux": {
-				"runtimeExecutable": "${workspaceFolder}/.build/electron/code-oss"
-			},
-			"cascadeTerminateToConfigurations": [
-				"Attach to VS Code"
-			],
-			"outputCapture": "std",
-			"args": [
-				"--remote-debugging-port=9222",
-				"--run",
-				"${relativeFile}"
-			],
-			"cwd": "${workspaceFolder}",
-			"outFiles": [
-				"${workspaceFolder}/out/**/*.js"
-			],
-			"env": {
-				"MOCHA_COLORS": "true"
-			},
-			"presentation": {
-				"hidden": true
-			}
-		},
-		{
-			"type": "node",
-			"request": "launch",
-			"name": "Launch Smoke Test",
-			"program": "${workspaceFolder}/test/smoke/out/main.js",
-			"cwd": "${workspaceFolder}/test/smoke",
-			"timeout": 240000,
-			"port": 9999,
-			"args": [
-				"-l",
-				"${workspaceFolder}/.build/electron/Code - OSS.app/Contents/MacOS/Electron"
-			],
-			"outFiles": [
-				"${cwd}/out/**/*.js"
-			],
-			"env": {
-				"NODE_ENV": "development",
-				"VSCODE_DEV": "1",
-				"VSCODE_CLI": "1"
-			}
-		},
-		{
-			"name": "Launch Built-in Extension",
-			"type": "extensionHost",
-			"request": "launch",
-			"runtimeExecutable": "${execPath}",
-			"args": [
-				"--extensionDevelopmentPath=${workspaceRoot}/extensions/debug-auto-launch"
-			]
-		}
-	],
-	"compounds": [
-		{
-			"name": "VS Code",
-			"stopAll": true,
-			"configurations": [
-				"Launch VS Code Internal",
-				"Attach to Main Process",
-				"Attach to Extension Host",
-				"Attach to Shared Process",
-			],
-			"preLaunchTask": "Ensure Prelaunch Dependencies",
-			"presentation": {
-				"group": "0_vscode",
-				"order": 1
-			}
-		},
-		{
-			"name": "Search and Renderer processes",
-			"configurations": [
-				"Launch VS Code Internal",
-				"Attach to Search Process"
-			],
-			"presentation": {
-				"group": "1_vscode",
-				"order": 4
-			}
-		},
-		{
-			"name": "Renderer and Extension Host processes",
-			"configurations": [
-				"Launch VS Code Internal",
-				"Attach to Extension Host"
-			],
-			"presentation": {
-				"group": "1_vscode",
-				"order": 3
-			}
-		},
-		{
-			"name": "Debug Unit Tests",
-			"configurations": [
-				"Attach to VS Code",
-				"Run Unit Tests"
-			],
-			"presentation": {
-				"group": "1_vscode",
-				"order": 2
-			}
-		},
-		{
-			"name": "Debug Unit Tests (Current File)",
-			"configurations": [
-				"Attach to VS Code",
-				"Run Unit Tests For Current File"
-			],
-			"presentation": {
-				"group": "1_vscode",
-				"order": 2
-			}
-		},
-		{
-			"name": "Launch VS Code",
-			"stopAll": true,
-			"configurations": [
-				"Launch VS Code Internal",
-			],
-			"preLaunchTask": "Ensure Prelaunch Dependencies"
-		},
-	]
-}
diff --git a/lib/vscode/.vscode/notebooks/api.github-issues b/lib/vscode/.vscode/notebooks/api.github-issues
deleted file mode 100644
index 112920287601..000000000000
--- a/lib/vscode/.vscode/notebooks/api.github-issues
+++ /dev/null
@@ -1,32 +0,0 @@
-[
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "#### Config"
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "$repo=repo:microsoft/vscode\n$milestone=milestone:\"May 2021\""
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "### Finalization"
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "$repo $milestone label:api-finalization"
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "### Proposals"
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "$repo $milestone is:open label:api-proposal "
-  }
-]
\ No newline at end of file
diff --git a/lib/vscode/.vscode/notebooks/endgame.github-issues b/lib/vscode/.vscode/notebooks/endgame.github-issues
deleted file mode 100644
index bc2fba29ddf1..000000000000
--- a/lib/vscode/.vscode/notebooks/endgame.github-issues
+++ /dev/null
@@ -1,107 +0,0 @@
-[
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "#### Macros"
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "$REPOS=repo:microsoft/vscode repo:microsoft/vscode-internalbacklog repo:microsoft/vscode-js-debug repo:microsoft/vscode-remote-release repo:microsoft/vscode-pull-request-github repo:microsoft/vscode-settings-sync-server repo:microsoft/vscode-emmet-helper repo:microsoft/vscode-remotehub\n\n$MILESTONE=milestone:\"May 2021\""
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "# Preparation"
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "## Open Pull Requests on the Milestone"
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "$REPOS $MILESTONE is:pr is:open"
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "## Open Issues on the Milestone"
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "$REPOS $MILESTONE is:issue is:open -label:iteration-plan -label:endgame-plan -label:testplan-item"
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "## Feature Requests Missing Labels"
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "$REPOS $MILESTONE is:issue is:closed label:feature-request -label:verification-needed -label:on-testplan -label:verified -label:*duplicate"
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "# Testing"
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "## Test Plan Items"
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "$REPOS $MILESTONE is:issue is:open label:testplan-item"
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "## Verification Needed"
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "$REPOS $MILESTONE is:issue is:closed label:feature-request label:verification-needed -label:verified"
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "# Verification"
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "## Verifiable Fixes"
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "$REPOS $MILESTONE is:issue is:closed sort:updated-asc label:bug -label:verified -label:on-testplan -label:*duplicate -label:duplicate -label:invalid -label:*as-designed -label:error-telemetry -label:verification-steps-needed -label:verification-found -label:z-author-verified -label:unreleased"
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "## Unreleased Fixes"
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "$REPOS $MILESTONE is:issue is:closed sort:updated-asc label:bug -label:verified -label:on-testplan -label:*duplicate -label:duplicate -label:invalid -label:*as-designed -label:error-telemetry -label:verification-steps-needed -label:verification-found -label:z-author-verified label:unreleased"
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "# Candidates"
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "$REPOS $MILESTONE is:open label:candidate"
-  }
-]
\ No newline at end of file
diff --git a/lib/vscode/.vscode/notebooks/grooming-delta.github-issues b/lib/vscode/.vscode/notebooks/grooming-delta.github-issues
deleted file mode 100644
index 6602ea4b1c1a..000000000000
--- a/lib/vscode/.vscode/notebooks/grooming-delta.github-issues
+++ /dev/null
@@ -1,770 +0,0 @@
-[
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "## Config",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "$since=2020-10-01",
-    "editable": true
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "# vscode\n\nQuery exceeds the maximum result. Run the query manually: `is:issue is:open closed:>2020-10-01`",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "//repo:microsoft/vscode is:issue closed:>$since",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "//repo:microsoft/vscode is:issue created:>$since",
-    "editable": true
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "# vscode-remote-release",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/vscode-remote-release is:issue closed:>$since",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/vscode-remote-release is:issue created:>$since",
-    "editable": true
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "# monaco-editor",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/monaco-editor is:issue closed:>$since",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/monaco-editor is:issue created:>$since",
-    "editable": true
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "# vscode-docs",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/vscode-docs is:issue closed:>$since",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/vscode-docs is:issue created:>$since",
-    "editable": true
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "# vscode-js-debug",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/vscode-js-debug is:issue closed:>$since",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/vscode-js-debug is:issue created:>$since",
-    "editable": true
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "# language-server-protocol",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/language-server-protocol is:issue closed:>$since",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/language-server-protocol is:issue created:>$since",
-    "editable": true
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "# vscode-eslint",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/vscode-eslint is:issue closed:>$since",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/vscode-eslint is:issue created:>$since",
-    "editable": true
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "# vscode-css-languageservice",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/vscode-css-languageservice is:issue closed:>$since",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/vscode-css-languageservice is:issue created:>$since",
-    "editable": true
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "# vscode-test",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/vscode-test is:issue closed:>$since",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/vscode-test is:issue created:>$since",
-    "editable": true
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "# vscode-pull-request-github",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/vscode-pull-request-github is:issue closed:>$since",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/vscode-test is:issue created:>$since",
-    "editable": true
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "# vscode-chrome-debug (deprecated)",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/vscode-chrome-debug is:issue closed:>$since",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/vscode-chrome-debug is:issue created:>$since",
-    "editable": true
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "# vscode-chrome-debug-core",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/vscode-chrome-debug-core is:issue closed:>$since",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/vscode-chrome-debug-core is:issue created:>$since",
-    "editable": true
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "# vscode-debugadapter-node",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/vscode-debugadapter-node is:issue closed:>$since",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/vscode-debugadapter-node is:issue created:>$since",
-    "editable": true
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "# vscode-emmet-helper",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/vscode-emmet-helper is:issue closed:>$since",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/vscode-emmet-helper is:issue created:>$since",
-    "editable": true
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "# vscode-extension-vscode\n\nDeprecated",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/vscode-extension-vscode is:issue closed:>$since",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/vscode-extension-vscode is:issue created:>$since",
-    "editable": true
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "# vscode-extension-samples",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/vscode-extension-samples is:issue closed:>$since",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/vscode-extension-samples is:issue created:>$since",
-    "editable": true
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "# vscode-filewatcher-windows",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/vscode-filewatcher-windows is:issue closed:>$since",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/vscode-filewatcher-windows is:issue created:>$since",
-    "editable": true
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "# vscode-generator-code",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/vscode-generator-code is:issue closed:>$since",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/vscode-generator-code is:issue created:>$since",
-    "editable": true
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "# vscode-html-languageservice",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/vscode-html-languageservice is:issue closed:>$since",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/vscode-html-languageservice is:issue created:>$since",
-    "editable": true
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "# vscode-jshint",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/vscode-jshint is:issue closed:>$since",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/vscode-jshint is:issue created:>$since",
-    "editable": true
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "# vscode-json-languageservice",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/vscode-json-languageservice is:issue closed:>$since",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/vscode-json-languageservice is:issue created:>$since",
-    "editable": true
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "# vscode-languageserver-node",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/vscode-languageserver-node is:issue closed:>$since",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/vscode-languageserver-node is:issue created:>$since",
-    "editable": true
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "# vscode-loader",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/vscode-loader is:issue closed:>$since",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/vscode-loader is:issue created:>$since",
-    "editable": true
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "# vscode-mono-debug",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/vscode-mono-debug is:issue closed:>$since",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/vscode-mono-debug is:issue created:>$since",
-    "editable": true
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "# vscode-node-debug",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/vscode-node-debug is:issue closed:>$since",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/vscode-node-debug is:issue created:>$since",
-    "editable": true
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "# vscode-node-debug2",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/vscode-node-debug2 is:issue closed:>$since",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/vscode-node-debug2 is:issue created:>$since",
-    "editable": true
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "# vscode-recipes",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/vscode-recipes is:issue closed:>$since",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/vscode-recipes is:issue created:>$since",
-    "editable": true
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "# vscode-textmate",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/vscode-textmate is:issue closed:>$since",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/vscode-textmate is:issue created:>$since",
-    "editable": true
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "# vscode-themes",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/vscode-themes is:issue closed:>$since",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/vscode-themes is:issue created:>$since",
-    "editable": true
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "# vscode-vsce",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/vscode-vsce is:issue closed:>$since",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/vscode-vsce is:issue created:>$since",
-    "editable": true
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "# vscode-website",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/vscode-website is:issue closed:>$since",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/vscode-website is:issue created:>$since",
-    "editable": true
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "# vscode-windows-process-tree",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/vscode-windows-process-tree is:issue closed:>$since",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/vscode-windows-process-tree is:issue created:>$since",
-    "editable": true
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "# debug-adapter-protocol",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/debug-adapter-protocol is:issue closed:>$since",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/debug-adapter-protocol is:issue created:>$since",
-    "editable": true
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "# inno-updater",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/inno-updater is:issue closed:>$since",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/inno-updater is:issue created:>$since",
-    "editable": true
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "# language-server-protocol-inspector",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/language-server-protocol-inspector is:issue closed:>$since",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/language-server-protocol-inspector is:issue created:>$since",
-    "editable": true
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "# monaco-languages",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/monaco-languages is:issue closed:>$since",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/monaco-languages is:issue created:>$since",
-    "editable": true
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "# monaco-typescript",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/monaco-typescript is:issue closed:>$since",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/monaco-typescript is:issue created:>$since",
-    "editable": true
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "# monaco-css",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/monaco-css is:issue closed:>$since",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/monaco-css is:issue created:>$since",
-    "editable": true
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "# monaco-json",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/monaco-json is:issue closed:>$since",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/monaco-json is:issue created:>$since",
-    "editable": true
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "# monaco-html",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/monaco-html is:issue closed:>$since",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/monaco-html is:issue created:>$since",
-    "editable": true
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "# monaco-editor-webpack-plugin",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/monaco-editor-webpack-plugin is:issue closed:>$since",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/monaco-editor-webpack-plugin is:issue created:>$since",
-    "editable": true
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "# node-jsonc-parser",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/node-jsonc-parser is:issue closed:>$since",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/node-jsonc-parser is:issue created:>$since",
-    "editable": true
-  }
-]
\ No newline at end of file
diff --git a/lib/vscode/.vscode/notebooks/grooming.github-issues b/lib/vscode/.vscode/notebooks/grooming.github-issues
deleted file mode 100644
index 407895eccf23..000000000000
--- a/lib/vscode/.vscode/notebooks/grooming.github-issues
+++ /dev/null
@@ -1,30 +0,0 @@
-[
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "### Categorizing Issues\n\nEach issue must have a type label. Most type labels are grey, some are yellow. Bugs are grey with a touch of red.",
-    "editable": true,
-    "outputs": []
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/vscode is:open is:issue assignee:@me -label:\"needs more info\" -label:bug -label:feature-request -label:under-discussion -label:debt -label:*question -label:upstream -label:electron -label:engineering -label:plan-item ",
-    "editable": true,
-    "outputs": []
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "### Feature Areas\n\nEach issue should be assigned to a feature area",
-    "editable": true,
-    "outputs": []
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/vscode is:open is:issue assignee:@me -label:L10N -label:VIM -label:api -label:api-finalization -label:api-proposal -label:authentication -label:breadcrumbs -label:callhierarchy -label:code-lens -label:color-palette -label:comments -label:config -label:context-keys -label:css-less-scss -label:custom-editors -label:debug -label:debug-console -label:dialogs -label:diff-editor -label:dropdown -label:editor -label:editor-RTL -label:editor-autoclosing -label:editor-autoindent -label:editor-bracket-matching -label:editor-clipboard -label:editor-code-actions -label:editor-color-picker -label:editor-columnselect -label:editor-commands -label:editor-comments -label:editor-contrib -label:editor-core -label:editor-drag-and-drop -label:editor-error-widget -label:editor-find -label:editor-folding -label:editor-highlight -label:editor-hover -label:editor-indent-detection -label:editor-indent-guides -label:editor-input -label:editor-input-IME -label:editor-insets -label:editor-minimap -label:editor-multicursor -label:editor-parameter-hints -label:editor-render-whitespace -label:editor-rendering -label:editor-scrollbar -label:editor-symbols -label:editor-synced-region -label:editor-textbuffer -label:editor-theming -label:editor-wordnav -label:editor-wrapping -label:emmet -label:error-list -label:explorer-custom -label:extension-host -label:extension-recommendations -label:extensions -label:extensions-development -label:file-decorations -label:file-encoding -label:file-explorer -label:file-glob -label:file-guess-encoding -label:file-io -label:file-watcher -label:font-rendering -label:formatting -label:git -label:github -label:gpu -label:grammar -label:grid-view -label:html -label:i18n -label:icon-brand -label:icons-product -label:install-update -label:integrated-terminal -label:integrated-terminal-conpty -label:integrated-terminal-links -label:integrated-terminal-rendering -label:integrated-terminal-winpty -label:intellisense-config -label:ipc -label:issue-bot -label:issue-reporter -label:javascript -label:json -label:keybindings -label:keybindings-editor -label:keyboard-layout -label:label-provider -label:languages-basic -label:languages-diagnostics -label:languages-guessing -label:layout -label:lcd-text-rendering -label:list -label:log -label:markdown -label:marketplace -label:menus -label:merge-conflict -label:notebook -label:outline -label:output -label:perf -label:perf-bloat -label:perf-startup -label:php -label:portable-mode -label:proxy -label:quick-pick -label:references-viewlet -label:release-notes -label:remote -label:remote-explorer -label:rename -label:sandbox -label:scm -label:screencast-mode -label:search -label:search-api -label:search-editor -label:search-replace -label:semantic-tokens -label:settings-editor -label:settings-sync -label:settings-sync-server -label:shared-process -label:simple-file-dialog -label:smart-select -label:snap -label:snippets -label:splitview -label:suggest -label:sync-error-handling -label:tasks -label:telemetry -label:themes -label:timeline -label:timeline-git -label:titlebar -label:tokenization -label:touch/pointer -label:trackpad/scroll -label:tree -label:typescript -label:undo-redo -label:uri -label:ux -label:variable-resolving -label:vscode-build -label:vscode-website -label:web -label:webview -label:workbench-actions -label:workbench-cli -label:workbench-diagnostics -label:workbench-dnd -label:workbench-editor-grid -label:workbench-editors -label:workbench-electron -label:workbench-feedback -label:workbench-history -label:workbench-hot-exit -label:workbench-hover -label:workbench-launch -label:workbench-link -label:workbench-multiroot -label:workbench-notifications -label:workbench-os-integration -label:workbench-rapid-render -label:workbench-run-as-admin -label:workbench-state -label:workbench-status -label:workbench-tabs -label:workbench-touchbar -label:workbench-views -label:workbench-welcome -label:workbench-window -label:workbench-zen -label:workspace-edit -label:workspace-symbols -label:zoom",
-    "editable": true,
-    "outputs": []
-  }
-]
\ No newline at end of file
diff --git a/lib/vscode/.vscode/notebooks/inbox.github-issues b/lib/vscode/.vscode/notebooks/inbox.github-issues
deleted file mode 100644
index d19b240adcca..000000000000
--- a/lib/vscode/.vscode/notebooks/inbox.github-issues
+++ /dev/null
@@ -1,50 +0,0 @@
-[
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "## tl;dr: Triage Inbox\n\nAll inbox issues but not those that need more information. These issues need to be triaged, e.g assigned to a user or ask for more information",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "$inbox -label:\"needs more info\"",
-    "editable": true
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "##### `Config`: defines the inbox query",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "$inbox=repo:microsoft/vscode is:open no:assignee -label:feature-request -label:testplan-item -label:plan-item ",
-    "editable": true
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "## Inbox tracking and Issue triage",
-    "editable": true
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "New issues or pull requests submitted by the community are initially triaged by an [automatic classification bot](https://github.com/microsoft/vscode-github-triage-actions/tree/master/classifier-deep). Issues that the bot does not correctly triage are then triaged by a team member. The team rotates the inbox tracker on a weekly basis.\n\nA [mirror](https://github.com/JacksonKearl/testissues/issues) of the VS Code issue stream is available with details about how the bot classifies issues, including feature-area classifications and confidence ratings. Per-category confidence thresholds and feature-area ownership data is maintained in [.github/classifier.json](https://github.com/microsoft/vscode/blob/main/.github/classifier.json). \n\n💡 The bot is being run through a GitHub action that runs every 30 minutes. Give the bot the opportunity to classify an issue before doing it manually.\n\n### Inbox Tracking\n\nThe inbox tracker is responsible for the [global inbox](https://github.com/microsoft/vscode/issues?utf8=%E2%9C%93&q=is%3Aopen+no%3Aassignee+-label%3Afeature-request+-label%3Atestplan-item+-label%3Aplan-item) containing all **open issues and pull requests** that\n- are neither **feature requests** nor **test plan items** nor **plan items** and\n- have **no owner assignment**.\n\nThe **inbox tracker** may perform any step described in our [issue triaging documentation](https://github.com/microsoft/vscode/wiki/Issues-Triaging) but its main responsibility is to route issues to the actual feature area owner.\n\nFeature area owners track the **feature area inbox** containing all **open issues and pull requests** that\n- are personally assigned to them and are not assigned to any milestone\n- are labeled with their feature area label and are not assigned to any milestone.\nThis secondary triage may involve any of the steps described in our [issue triaging documentation](https://github.com/microsoft/vscode/wiki/Issues-Triaging) and results in a fully triaged or closed issue.\n\nThe [github triage extension](https://github.com/microsoft/vscode-github-triage-extension) can be used to assist with triaging — it provides a \"Command Palette\"-style list of triaging actions like assignment, labeling, and triggers for various bot actions.",
-    "editable": true
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "## All Inbox Items\n\nAll issues that have no assignee and that have neither **feature requests** nor **test plan items** nor **plan items**.",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "$inbox",
-    "editable": true
-  }
-]
\ No newline at end of file
diff --git a/lib/vscode/.vscode/notebooks/my-endgame.github-issues b/lib/vscode/.vscode/notebooks/my-endgame.github-issues
deleted file mode 100644
index aad3a8db3a90..000000000000
--- a/lib/vscode/.vscode/notebooks/my-endgame.github-issues
+++ /dev/null
@@ -1,182 +0,0 @@
-[
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "#### Macros"
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "$REPOS=repo:microsoft/vscode repo:microsoft/vscode-internalbacklog repo:microsoft/vscode-js-debug repo:microsoft/vscode-remote-release repo:microsoft/vscode-pull-request-github repo:microsoft/vscode-settings-sync-server repo:microsoft/vscode-remotehub\n\n$MILESTONE=milestone:\"May 2021\"\n\n$MINE=assignee:@me"
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "# Preparation"
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "## Open Pull Requests on the Milestone"
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "$REPOS $MILESTONE $MINE is:pr is:open"
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "## Open Issues on the Milestone"
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "$REPOS $MILESTONE $MINE is:issue is:open -label:iteration-plan -label:endgame-plan -label:testplan-item"
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "## Feature Requests Missing Labels"
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "$REPOS $MILESTONE $MINE is:issue is:closed label:feature-request -label:verification-needed -label:on-testplan -label:verified -label:*duplicate"
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "## Test Plan Items"
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "$REPOS $MILESTONE is:issue is:open author:@me label:testplan-item"
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "## Verification Needed"
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "$REPOS $MILESTONE $MINE is:issue is:closed label:feature-request label:verification-needed"
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "# Testing"
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "## Test Plan Items"
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "$REPOS $MILESTONE $MINE is:issue is:open label:testplan-item"
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "## Verification Needed"
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "$REPOS $MILESTONE -$MINE is:issue is:closed -assignee:@me -label:verified -label:z-author-verified label:feature-request label:verification-needed"
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "# Fixing"
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "## Open Issues"
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "$REPOS $MILESTONE $MINE is:issue is:open -label:endgame-plan -label:testplan-item -label:iteration-plan"
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "## Open Bugs"
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "$REPOS $MILESTONE $MINE is:issue is:open label:bug"
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "# Verification"
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "## My Issues (verification-steps-needed)"
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "$REPOS $MILESTONE $MINE is:issue label:bug label:verification-steps-needed"
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "## My Issues (verification-found)"
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "$REPOS $MILESTONE $MINE is:issue label:bug label:verification-found"
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "## Issues filed by me"
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "$REPOS $MILESTONE -$MINE is:issue is:closed author:@me sort:updated-asc label:bug -label:verified -label:z-author-verified -label:on-testplan -label:*duplicate -label:duplicate -label:invalid -label:*as-designed -label:error-telemetry -label:verification-steps-needed -label:verification-found"
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "## Issues filed from outside team"
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "$REPOS $MILESTONE -$MINE is:issue is:closed sort:updated-asc label:bug -label:verified -label:z-author-verified -label:on-testplan -label:*duplicate -label:duplicate -label:invalid -label:*as-designed -label:error-telemetry -label:verification-steps-needed -label:verification-found -author:aeschli -author:alexdima -author:alexr00 -author:AmandaSilver -author:bamurtaugh -author:bpasero -author:btholt -author:chrisdias -author:chrmarti -author:Chuxel -author:connor4312 -author:dbaeumer -author:deepak1556 -author:devinvalenciano -author:digitarald -author:eamodio -author:egamma -author:fiveisprime -author:gregvanl -author:isidorn -author:ItalyPaleAle -author:JacksonKearl -author:joaomoreno -author:jrieken -author:kieferrm -author:lszomoru -author:meganrogge -author:misolori -author:mjbvz -author:ornellaalt -author:orta -author:rebornix -author:RMacfarlane -author:roblourens -author:rzhao271 -author:sana-ajani -author:sandy081 -author:sbatten -author:stevencl -author:Tyriar -author:weinand -author:TylerLeonhardt -author:lramos15 -author:hediet"
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "## Issues filed by others"
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "$REPOS $MILESTONE -$MINE is:issue is:closed -author:@me sort:updated-asc label:bug -label:verified -label:z-author-verified -label:on-testplan -label:*duplicate -label:duplicate -label:invalid -label:*as-designed -label:error-telemetry -label:verification-steps-needed -label:verification-found"
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "# Release Notes"
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/vscode $MILESTONE $MINE is:issue is:closed label:feature-request -label:on-release-notes"
-  }
-]
\ No newline at end of file
diff --git a/lib/vscode/.vscode/notebooks/my-work.github-issues b/lib/vscode/.vscode/notebooks/my-work.github-issues
deleted file mode 100644
index 77ca0e0443b5..000000000000
--- a/lib/vscode/.vscode/notebooks/my-work.github-issues
+++ /dev/null
@@ -1,97 +0,0 @@
-[
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "##### `Config`: This should be changed every month/milestone"
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "// list of repos we work in\n$repos=repo:microsoft/vscode repo:microsoft/vscode-remote-release repo:microsoft/vscode-js-debug repo:microsoft/vscode-pull-request-github repo:microsoft/vscode-github-issue-notebooks repo:microsoft/vscode-internalbacklog\n\n// current milestone name\n$milestone=milestone:\"May 2021\""
-  },
-  {
-    "kind": 1,
-    "language": "github-issues",
-    "value": "## Milestone Work"
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "$repos $milestone assignee:@me is:open"
-  },
-  {
-    "kind": 1,
-    "language": "github-issues",
-    "value": "## Bugs, Debt, Features..."
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "#### My Bugs"
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "$repos assignee:@me is:open label:bug"
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "#### Debt & Engineering"
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "$repos assignee:@me is:open label:debt OR $repos assignee:@me is:open label:engineering"
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "#### Performance 🐌 🔜 🏎"
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "$repos assignee:@me is:open label:perf OR $repos assignee:@me is:open label:perf-startup OR $repos assignee:@me is:open label:perf-bloat OR $repos assignee:@me is:open label:freeze-slow-crash-leak"
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "#### Feature Requests"
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "$repos assignee:@me is:open label:feature-request milestone:Backlog sort:reactions-+1-desc"
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "$repos assignee:@me is:open milestone:\"Backlog Candidates\""
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "### Personal Inbox\n"
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "\n#### Missing Type label"
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "$repos assignee:@me is:open type:issue -label:bug -label:\"needs more info\" -label:feature-request -label:under-discussion -label:debt -label:plan-item -label:upstream"
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "#### Not Actionable"
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "$repos assignee:@me is:open label:\"needs more info\""
-  }
-]
\ No newline at end of file
diff --git a/lib/vscode/.vscode/notebooks/papercuts.github-issues b/lib/vscode/.vscode/notebooks/papercuts.github-issues
deleted file mode 100644
index 7db9be89b0ec..000000000000
--- a/lib/vscode/.vscode/notebooks/papercuts.github-issues
+++ /dev/null
@@ -1,44 +0,0 @@
-[
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "## Papercuts\n\nThis notebook serves as an ongoing collection of papercut issues that we encounter while dogfooding. With that in mind only promote issues that really turn you off, e.g. issues that make you want to stop using VS Code or its extensions. To mark an issue (bug, feature-request, etc.) as papercut add the labels: `papercut :drop_of_blood:`",
-    "editable": true
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "## All Papercuts\n\nThese are all papercut issues that we encounter while dogfooding vscode or extensions that we author.",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/vscode is:open -label:notebook label:\"papercut :drop_of_blood:\"",
-    "editable": true
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "## Native Notebook",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/vscode is:open label:notebook label:\"papercut :drop_of_blood:\"",
-    "editable": true
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "### My Papercuts",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "repo:microsoft/vscode is:open assignee:@me label:\"papercut :drop_of_blood:\"",
-    "editable": true
-  }
-]
\ No newline at end of file
diff --git a/lib/vscode/.vscode/notebooks/verification.github-issues b/lib/vscode/.vscode/notebooks/verification.github-issues
deleted file mode 100644
index 5c94b133401b..000000000000
--- a/lib/vscode/.vscode/notebooks/verification.github-issues
+++ /dev/null
@@ -1,56 +0,0 @@
-[
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "### Bug Verification Queries\n\nBefore shipping we want to verify _all_ bugs. That means when a bug is fixed we check that the fix actually works. It's always best to start with bugs that you have filed and the proceed with bugs that have been filed from users outside the development team. ",
-    "editable": true
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "#### Config: update list of `repos` and the `milestone`",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "$repos=repo:microsoft/vscode repo:microsoft/vscode-internalbacklog repo:microsoft/vscode-remote-release repo:microsoft/vscode-js-debug repo:microsoft/vscode-pull-request-github repo:microsoft/vscode-github-issue-notebooks \n$milestone=milestone:\"March 2021\"",
-    "editable": true
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "### Bugs You Filed",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "$repos $milestone is:closed -assignee:@me label:bug -label:verified -label:*duplicate author:@me",
-    "editable": false
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "### Bugs From Outside",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "$repos $milestone is:closed  -assignee:@me label:bug -label:verified -label:*duplicate -author:@me -assignee:@me label:bug -label:verified -author:@me -author:aeschli -author:alexdima -author:alexr00 -author:bpasero -author:chrisdias -author:chrmarti -author:connor4312 -author:dbaeumer -author:deepak1556 -author:eamodio -author:egamma -author:gregvanl  -author:isidorn -author:JacksonKearl -author:joaomoreno -author:jrieken -author:lramos15 -author:lszomoru -author:meganrogge -author:misolori -author:mjbvz -author:rebornix -author:RMacfarlane -author:roblourens -author:sana-ajani -author:sandy081 -author:sbatten -author:Tyriar -author:weinand -author:rzhao271 -author:kieferrm -author:TylerLeonhardt -author:bamurtaugh",
-    "editable": false
-  },
-  {
-    "kind": 1,
-    "language": "markdown",
-    "value": "### All",
-    "editable": true
-  },
-  {
-    "kind": 2,
-    "language": "github-issues",
-    "value": "$repos $milestone is:closed -assignee:@me label:bug -label:verified -label:*duplicate",
-    "editable": false
-  }
-]
\ No newline at end of file
diff --git a/lib/vscode/.vscode/searches/TrustedTypes.code-search b/lib/vscode/.vscode/searches/TrustedTypes.code-search
deleted file mode 100644
index 85707534c1e1..000000000000
--- a/lib/vscode/.vscode/searches/TrustedTypes.code-search
+++ /dev/null
@@ -1,101 +0,0 @@
-# Query: .innerHTML = 
-# Flags: CaseSensitive WordMatch
-# Including: src/vs/**/*.{t,j}s
-# Excluding: *.test.ts, **/test/**
-# ContextLines: 3
-
-12 results - 9 files
-
-src/vs/base/browser/dom.ts:
-  1359  	);
-  1360  
-  1361  	const html = _ttpSafeInnerHtml?.createHTML(value, options) ?? insane(value, options);
-  1362: 	node.innerHTML = html as unknown as string;
-  1363  }
-
-src/vs/base/browser/markdownRenderer.ts:
-  272  	};
-  273  
-  274  	if (_ttpInsane) {
-  275: 		element.innerHTML = _ttpInsane.createHTML(renderedMarkdown, insaneOptions) as unknown as string;
-  276  	} else {
-  277: 		element.innerHTML = insane(renderedMarkdown, insaneOptions);
-  278  	}
-  279  
-  280  	// signal that async code blocks can be now be inserted
-
-src/vs/editor/browser/core/markdownRenderer.ts:
-  88  
-  89  				const element = document.createElement('span');
-  90  
-  91: 				element.innerHTML = MarkdownRenderer._ttpTokenizer
-  92  					? MarkdownRenderer._ttpTokenizer.createHTML(value, tokenization) as unknown as string
-  93  					: tokenizeToString(value, tokenization);
-  94  
-
-src/vs/editor/browser/view/domLineBreaksComputer.ts:
-  107  		allCharOffsets[i] = tmp[0];
-  108  		allVisibleColumns[i] = tmp[1];
-  109  	}
-  110: 	containerDomNode.innerHTML = sb.build();
-  111  
-  112  	containerDomNode.style.position = 'absolute';
-  113  	containerDomNode.style.top = '10000';
-
-src/vs/editor/browser/view/viewLayer.ts:
-  512  		}
-  513  		const lastChild = <HTMLElement>this.domNode.lastChild;
-  514  		if (domNodeIsEmpty || !lastChild) {
-  515: 			this.domNode.innerHTML = newLinesHTML;
-  516  		} else {
-  517  			lastChild.insertAdjacentHTML('afterend', newLinesHTML);
-  518  		}
-
-  533  		if (ViewLayerRenderer._ttPolicy) {
-  534  			invalidLinesHTML = ViewLayerRenderer._ttPolicy.createHTML(invalidLinesHTML) as unknown as string;
-  535  		}
-  536: 		hugeDomNode.innerHTML = invalidLinesHTML;
-  537  
-  538  		for (let i = 0; i < ctx.linesLength; i++) {
-  539  			const line = ctx.lines[i];
-
-src/vs/editor/browser/widget/diffEditorWidget.ts:
-  2157  
-  2158  		let domNode = document.createElement('div');
-  2159  		domNode.className = `view-lines line-delete ${MOUSE_CURSOR_TEXT_CSS_CLASS_NAME}`;
-  2160: 		domNode.innerHTML = sb.build();
-  2161  		Configuration.applyFontInfoSlow(domNode, fontInfo);
-  2162  
-  2163  		let marginDomNode = document.createElement('div');
-  2164  		marginDomNode.className = 'inline-deleted-margin-view-zone';
-  2165: 		marginDomNode.innerHTML = marginHTML.join('');
-  2166  		Configuration.applyFontInfoSlow(marginDomNode, fontInfo);
-  2167  
-  2168  		return {
-
-src/vs/editor/standalone/browser/colorizer.ts:
-  40  		let text = domNode.firstChild ? domNode.firstChild.nodeValue : '';
-  41  		domNode.className += ' ' + theme;
-  42  		let render = (str: string) => {
-  43: 			domNode.innerHTML = str;
-  44  		};
-  45  		return this.colorize(modeService, text || '', mimeType, options).then(render, (err) => console.error(err));
-  46  	}
-
-src/vs/workbench/contrib/notebook/browser/view/renderers/cellRenderer.ts:
-  580  		const element = DOM.$('div', { style });
-  581  
-  582  		const linesHtml = this.getRichTextLinesAsHtml(model, modelRange, colorMap);
-  583: 		element.innerHTML = linesHtml as unknown as string;
-  584  		return element;
-  585  	}
-  586  
-
-src/vs/workbench/contrib/notebook/browser/view/renderers/webviewPreloads.ts:
-  375  					addMouseoverListeners(outputNode, outputId);
-  376  					const content = data.content;
-  377  					if (content.type === RenderOutputType.Html) {
-  378: 						outputNode.innerHTML = content.htmlContent;
-  379  						cellOutputContainer.appendChild(outputNode);
-  380  						domEval(outputNode);
-  381  					} else if (preloadErrs.some(e => !!e)) {
diff --git a/lib/vscode/.vscode/searches/ts36031.code-search b/lib/vscode/.vscode/searches/ts36031.code-search
deleted file mode 100644
index 51071b8840af..000000000000
--- a/lib/vscode/.vscode/searches/ts36031.code-search
+++ /dev/null
@@ -1,53 +0,0 @@
-# Query: \\w+\\?\\.\\w+![(.[]
-# Flags: RegExp
-# ContextLines: 2
-
-8 results - 4 files
-
-src/vs/base/browser/ui/tree/asyncDataTree.ts:
-  241  			} : () => 'treeitem',
-  242  			isChecked: options.accessibilityProvider!.isChecked ? (e) => {
-  243: 				return !!(options.accessibilityProvider?.isChecked!(e.element as T));
-  244  			} : undefined,
-  245  			getAriaLabel(e) {
-
-src/vs/platform/list/browser/listService.ts:
-  463  
-  464  		if (typeof options?.openOnSingleClick !== 'boolean' && options?.configurationService) {
-  465: 			this.openOnSingleClick = options?.configurationService!.getValue(openModeSettingKey) !== 'doubleClick';
-  466  			this._register(options?.configurationService.onDidChangeConfiguration(() => {
-  467: 				this.openOnSingleClick = options?.configurationService!.getValue(openModeSettingKey) !== 'doubleClick';
-  468  			}));
-  469  		} else {
-
-src/vs/workbench/contrib/notebook/browser/notebookEditorWidget.ts:
-  1526  
-  1527  		await this._ensureActiveKernel();
-  1528: 		await this._activeKernel?.cancelNotebookCell!(this._notebookViewModel!.uri, undefined);
-  1529  	}
-  1530  
-
-  1535  
-  1536  		await this._ensureActiveKernel();
-  1537: 		await this._activeKernel?.executeNotebookCell!(this._notebookViewModel!.uri, undefined);
-  1538  	}
-  1539  
-
-  1553  
-  1554  		await this._ensureActiveKernel();
-  1555: 		await this._activeKernel?.cancelNotebookCell!(this._notebookViewModel!.uri, cell.handle);
-  1556  	}
-  1557  
-
-  1567  
-  1568  		await this._ensureActiveKernel();
-  1569: 		await this._activeKernel?.executeNotebookCell!(this._notebookViewModel!.uri, cell.handle);
-  1570  	}
-  1571  
-
-src/vs/workbench/contrib/webview/electron-browser/iframeWebviewElement.ts:
-  89  			.then(() => this._resourceRequestManager.ensureReady())
-  90  			.then(() => {
-  91: 				this.element?.contentWindow!.postMessage({ channel, args: data }, '*');
-  92  			});
-  93  	}
diff --git a/lib/vscode/.vscode/settings.json b/lib/vscode/.vscode/settings.json
deleted file mode 100644
index a97841683c0e..000000000000
--- a/lib/vscode/.vscode/settings.json
+++ /dev/null
@@ -1,90 +0,0 @@
-{
-	"editor.insertSpaces": false,
-	"files.trimTrailingWhitespace": true,
-	"files.exclude": {
-		".git": true,
-		".build": true,
-		"**/.DS_Store": true,
-		"build/**/*.js": {
-			"when": "$(basename).ts"
-		},
-		"src/vs/server": false
-	},
-	"files.associations": {
-		"cglicenses.json": "jsonc"
-	},
-	"search.exclude": {
-		"**/node_modules": true,
-		"**/bower_components": true,
-		".build/**": true,
-		"out/**": true,
-		"out-build/**": true,
-		"out-vscode/**": true,
-		"i18n/**": true,
-		"extensions/**/out/**": true,
-		"test/smoke/out/**": true,
-		"test/automation/out/**": true,
-		"test/integration/browser/out/**": true,
-		"src/vs/base/test/node/uri.test.data.txt": true,
-		"src/vs/workbench/test/browser/api/extHostDocumentData.test.perf-data.ts": true,
-		"src/vs/server": false
-	},
-	"lcov.path": [
-		"./.build/coverage/lcov.info",
-		"./.build/coverage-single/lcov.info"
-	],
-	"lcov.watch": [
-		{
-			"pattern": "**/*.test.js",
-			"command": "${workspaceFolder}/scripts/test.sh --coverage --run ${file}",
-			"windows": {
-				"command": "${workspaceFolder}\\scripts\\test.bat --coverage --run ${file}"
-			}
-		}
-	],
-	"eslint.options": {
-		"rulePaths": [
-			"./build/lib/eslint"
-		]
-	},
-	"typescript.tsdk": "node_modules/typescript/lib",
-	"npm.exclude": "**/extensions/**",
-	"npm.packageManager": "yarn",
-	"emmet.excludeLanguages": [],
-	"typescript.preferences.importModuleSpecifier": "non-relative",
-	"typescript.preferences.quoteStyle": "single",
-	"json.schemas": [
-		{
-			"fileMatch": [
-				"cgmanifest.json"
-			],
-			"url": "./.vscode/cgmanifest.schema.json"
-		},
-		{
-			"fileMatch": [
-				"cglicenses.json"
-			],
-			"url": "./.vscode/cglicenses.schema.json"
-		}
-	],
-	"git.ignoreLimitWarning": true,
-	"remote.extensionKind": {
-		"msjsdiag.debugger-for-chrome": "workspace"
-	},
-	"gulp.autoDetect": "off",
-	"files.insertFinalNewline": true,
-	"[plaintext]": {
-		"files.insertFinalNewline": false,
-	},
-	"[typescript]": {
-		"editor.defaultFormatter": "vscode.typescript-language-features",
-		"editor.formatOnSave": true,
-	},
-	"[javascript]": {
-		"editor.defaultFormatter": "vscode.typescript-language-features",
-		"editor.formatOnSave": true,
-	},
-	"typescript.tsc.autoDetect": "off",
-	"notebook.experimental.useMarkdownRenderer": true,
-	"testing.autoRun.mode": "rerun",
-}
diff --git a/lib/vscode/.vscode/shared.code-snippets b/lib/vscode/.vscode/shared.code-snippets
deleted file mode 100644
index fb3df23dd42d..000000000000
--- a/lib/vscode/.vscode/shared.code-snippets
+++ /dev/null
@@ -1,40 +0,0 @@
-{
-	// Each snippet is defined under a snippet name and has a scope, prefix, body and
-	// description. The scope defines in watch languages the snippet is applicable. The prefix is what is
-	// used to trigger the snippet and the body will be expanded and inserted.Possible variables are:
-	// $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders.
-	// Placeholders with the same ids are connected.
-	// Example:
-	"MSFT Copyright Header": {
-		"scope": "javascript,typescript,css",
-		"prefix": [
-			"header",
-			"stub",
-			"copyright"
-		],
-		"body": [
-			"/*---------------------------------------------------------------------------------------------",
-			" *  Copyright (c) Microsoft Corporation. All rights reserved.",
-			" *  Licensed under the MIT License. See License.txt in the project root for license information.",
-			" *--------------------------------------------------------------------------------------------*/",
-			"",
-			"$0"
-		],
-		"description": "Insert Copyright Statement"
-	},
-	"TS -> Inject Service": {
-		"scope": "typescript",
-		"description": "Constructor Injection Pattern",
-		"prefix": "@inject",
-		"body": "@$1 private readonly _$2: ${1},$0"
-	},
-	"TS -> Event & Emitter": {
-		"scope": "typescript",
-		"prefix": "emitter",
-		"description": "Add emitter and event properties",
-		"body": [
-			"private readonly _onDid$1 = new Emitter<$2>();",
-			"readonly onDid$1: Event<$2> = this._onDid$1.event;"
-		],
-	}
-}
diff --git a/lib/vscode/.vscode/tasks.json b/lib/vscode/.vscode/tasks.json
deleted file mode 100644
index c0b290afa729..000000000000
--- a/lib/vscode/.vscode/tasks.json
+++ /dev/null
@@ -1,222 +0,0 @@
-{
-	"version": "2.0.0",
-	"tasks": [
-		{
-			"type": "npm",
-			"script": "watch-clientd",
-			"label": "Core - Build",
-			"isBackground": true,
-			"presentation": {
-				"reveal": "never",
-				"group": "buildWatchers"
-			},
-			"problemMatcher": {
-				"owner": "typescript",
-				"applyTo": "closedDocuments",
-				"fileLocation": [
-					"absolute"
-				],
-				"pattern": {
-					"regexp": "Error: ([^(]+)\\((\\d+|\\d+,\\d+|\\d+,\\d+,\\d+,\\d+)\\): (.*)$",
-					"file": 1,
-					"location": 2,
-					"message": 3
-				},
-				"background": {
-					"beginsPattern": "Starting compilation",
-					"endsPattern": "Finished compilation"
-				}
-			}
-		},
-		{
-			"type": "npm",
-			"script": "watch-extensionsd",
-			"label": "Ext - Build",
-			"isBackground": true,
-			"presentation": {
-				"reveal": "never",
-				"group": "buildWatchers"
-			},
-			"problemMatcher": {
-				"owner": "typescript",
-				"applyTo": "closedDocuments",
-				"fileLocation": [
-					"absolute"
-				],
-				"pattern": {
-					"regexp": "Error: ([^(]+)\\((\\d+|\\d+,\\d+|\\d+,\\d+,\\d+,\\d+)\\): (.*)$",
-					"file": 1,
-					"location": 2,
-					"message": 3
-				},
-				"background": {
-					"beginsPattern": "Starting compilation",
-					"endsPattern": "Finished compilation"
-				}
-			}
-		},
-		{
-			"label": "VS Code - Build",
-			"dependsOn": [
-				"Core - Build",
-				"Ext - Build"
-			],
-			"group": {
-				"kind": "build",
-				"isDefault": true
-			},
-			"problemMatcher": []
-		},
-		{
-			"type": "npm",
-			"script": "kill-watch-clientd",
-			"label": "Kill Core - Build",
-			"group": "build",
-			"presentation": {
-				"reveal": "never",
-				"group": "buildKillers",
-				"close": true
-			},
-			"problemMatcher": "$tsc"
-		},
-		{
-			"type": "npm",
-			"script": "kill-watch-extensionsd",
-			"label": "Kill Ext - Build",
-			"group": "build",
-			"presentation": {
-				"reveal": "never",
-				"group": "buildKillers",
-				"close": true
-			},
-			"problemMatcher": "$tsc"
-		},
-		{
-			"label": "Kill VS Code - Build",
-			"dependsOn": [
-				"Kill Core - Build",
-				"Kill Ext - Build"
-			],
-			"group": "build",
-			"problemMatcher": []
-		},
-		{
-			"type": "npm",
-			"script": "watch-webd",
-			"label": "Web Ext - Build",
-			"group": "build",
-			"isBackground": true,
-			"presentation": {
-				"reveal": "never"
-			},
-			"problemMatcher": {
-				"owner": "typescript",
-				"applyTo": "closedDocuments",
-				"fileLocation": [
-					"absolute"
-				],
-				"pattern": {
-					"regexp": "Error: ([^(]+)\\((\\d+|\\d+,\\d+|\\d+,\\d+,\\d+,\\d+)\\): (.*)$",
-					"file": 1,
-					"location": 2,
-					"message": 3
-				},
-				"background": {
-					"beginsPattern": "Starting compilation",
-					"endsPattern": "Finished compilation"
-				}
-			}
-		},
-		{
-			"type": "npm",
-			"script": "kill-watch-webd",
-			"label": "Kill Web Ext - Build",
-			"group": "build",
-			"presentation": {
-				"reveal": "never"
-			},
-			"problemMatcher": "$tsc"
-		},
-		{
-			"label": "Run tests",
-			"type": "shell",
-			"command": "./scripts/test.sh",
-			"windows": {
-				"command": ".\\scripts\\test.bat"
-			},
-			"group": "test",
-			"presentation": {
-				"echo": true,
-				"reveal": "always"
-			}
-		},
-		{
-			"label": "Run Dev",
-			"type": "shell",
-			"command": "./scripts/code.sh",
-			"windows": {
-				"command": ".\\scripts\\code.bat"
-			},
-			"problemMatcher": []
-		},
-		{
-			"type": "npm",
-			"script": "electron",
-			"label": "Download electron"
-		},
-		{
-			"type": "gulp",
-			"task": "hygiene",
-			"problemMatcher": []
-		},
-		{
-			"type": "shell",
-			"command": "yarn web --no-launch",
-			"label": "Run web",
-			"isBackground": true,
-			"problemMatcher": {
-				"pattern": {
-					"regexp": ""
-				},
-				"background": {
-					"beginsPattern": ".*node .*",
-					"endsPattern": "Web UI available at .*"
-				}
-			},
-			"presentation": {
-				"reveal": "never"
-			}
-		},
-		{
-			"type": "npm",
-			"script": "eslint",
-			"problemMatcher": {
-				"source": "eslint",
-				"base": "$eslint-stylish"
-			}
-		},
-		{
-			"type": "shell",
-			"command": "node build/lib/preLaunch.js",
-			"label": "Ensure Prelaunch Dependencies",
-			"presentation": {
-				"reveal": "silent",
-				"close": true
-			}
-		},
-		{
-			"type": "npm",
-			"script": "tsec-compile-check",
-			"problemMatcher": [
-				{
-					"base": "$tsc",
-					"applyTo": "allDocuments",
-					"owner": "tsec"
-				}
-			],
-			"group": "build",
-			"label": "npm: tsec-compile-check",
-			"detail": "node_modules/tsec/bin/tsec -p src/tsconfig.json --noEmit"
-		}
-	]
-}
diff --git a/lib/vscode/CONTRIBUTING.md b/lib/vscode/CONTRIBUTING.md
deleted file mode 100644
index 5d5475351871..000000000000
--- a/lib/vscode/CONTRIBUTING.md
+++ /dev/null
@@ -1,105 +0,0 @@
-# Contributing to VS Code
-
-Welcome, and thank you for your interest in contributing to VS Code!
-
-There are many ways in which you can contribute, beyond writing code. The goal of this document is to provide a high-level overview of how you can get involved.
-
-## Asking Questions
-
-Have a question? Rather than opening an issue, please ask away on [Stack Overflow](https://stackoverflow.com/questions/tagged/vscode) using the tag `vscode`.
-
-The active community will be eager to assist you. Your well-worded question will serve as a resource to others searching for help.
-
-## Providing Feedback
-
-Your comments and feedback are welcome, and the development team is available via a handful of different channels.
-
-See the [Feedback Channels](https://github.com/microsoft/vscode/wiki/Feedback-Channels) wiki page for details on how to share your thoughts.
-
-## Reporting Issues
-
-Have you identified a reproducible problem in VS Code? Have a feature request? We want to hear about it! Here's how you can make reporting your issue as effective as possible.
-
-### Identify Where to Report
-
-The VS Code project is distributed across multiple repositories. Try to file the issue against the correct repository. Check the list of [Related Projects](https://github.com/microsoft/vscode/wiki/Related-Projects) if you aren't sure which repo is correct.
-
-Can you recreate the issue even after [disabling all extensions](https://code.visualstudio.com/docs/editor/extension-gallery#_disable-an-extension)? If you find the issue is caused by an extension you have installed, please file an issue on the extension's repo directly.
-
-### Look For an Existing Issue
-
-Before you create a new issue, please do a search in [open issues](https://github.com/microsoft/vscode/issues) to see if the issue or feature request has already been filed.
-
-Be sure to scan through the [most popular](https://github.com/microsoft/vscode/issues?q=is%3Aopen+is%3Aissue+label%3Afeature-request+sort%3Areactions-%2B1-desc) feature requests.
-
-If you find your issue already exists, make relevant comments and add your [reaction](https://github.com/blog/2119-add-reactions-to-pull-requests-issues-and-comments). Use a reaction in place of a "+1" comment:
-
-* 👍 - upvote
-* 👎 - downvote
-
-If you cannot find an existing issue that describes your bug or feature, create a new issue using the guidelines below.
-
-### Writing Good Bug Reports and Feature Requests
-
-File a single issue per problem and feature request. Do not enumerate multiple bugs or feature requests in the same issue.
-
-Do not add your issue as a comment to an existing issue unless it's for the identical input. Many issues look similar, but have different causes.
-
-The more information you can provide, the more likely someone will be successful at reproducing the issue and finding a fix.
-
-The built-in tool for reporting an issue, which you can access by using `Report Issue` in VS Code's Help menu, can help streamline this process by automatically providing the version of VS Code, all your installed extensions, and your system info. Additionally, the tool will search among existing issues to see if a similar issue already exists.
-
-Please include the following with each issue:
-
-* Version of VS Code
-
-* Your operating system
-
-* List of extensions that you have installed
-
-* Reproducible steps (1... 2... 3...) that cause the issue
-
-* What you expected to see, versus what you actually saw
-
-* Images, animations, or a link to a video showing the issue occurring
-
-* A code snippet that demonstrates the issue or a link to a code repository the developers can easily pull down to recreate the issue locally
-
-  * **Note:** Because the developers need to copy and paste the code snippet, including a code snippet as a media file (i.e. .gif) is not sufficient.
-
-* Errors from the Dev Tools Console (open from the menu: Help > Toggle Developer Tools)
-
-### Final Checklist
-
-Please remember to do the following:
-
-* [ ] Search the issue repository to ensure your report is a new issue
-
-* [ ] Recreate the issue after disabling all extensions
-
-* [ ] Simplify your code around the issue to better isolate the problem
-
-Don't feel bad if the developers can't reproduce the issue right away. They will simply ask for more information!
-
-### Follow Your Issue
-
-Once submitted, your report will go into the [issue tracking](https://github.com/microsoft/vscode/wiki/Issue-Tracking) workflow. Be sure to understand what will happen next, so you know what to expect, and how to continue to assist throughout the process.
-
-## Automated Issue Management
-
-We use GitHub Actions to help us manage issues. These Actions and their descriptions can be [viewed here](https://github.com/microsoft/vscode-github-triage-actions). Some examples of what these Actions do are:
-
-* Automatically closes any issue marked `needs-more-info` if there has been no response in the past 7 days.
-* Automatically lock issues 45 days after they are closed.
-* Automatically implement the VS Code [feature request pipeline](https://github.com/microsoft/vscode/wiki/Issues-Triaging#managing-feature-requests).
-
-If you believe the bot got something wrong, please open a new issue and let us know.
-
-## Contributing Fixes
-
-If you are interested in writing code to fix issues,
-please see [How to Contribute](https://github.com/microsoft/vscode/wiki/How-to-Contribute) in the wiki.
-
-# Thank You!
-
-Your contributions to open source, large or small, make great projects like this possible. Thank you for taking the time to contribute.
diff --git a/lib/vscode/LICENSE.txt b/lib/vscode/LICENSE.txt
deleted file mode 100644
index 0ac28ee234d2..000000000000
--- a/lib/vscode/LICENSE.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2015 - present Microsoft Corporation
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/lib/vscode/README.md b/lib/vscode/README.md
deleted file mode 100644
index ac7f2194233f..000000000000
--- a/lib/vscode/README.md
+++ /dev/null
@@ -1,75 +0,0 @@
-# Visual Studio Code - Open Source ("Code - OSS")
-[![Feature Requests](https://img.shields.io/github/issues/microsoft/vscode/feature-request.svg)](https://github.com/microsoft/vscode/issues?q=is%3Aopen+is%3Aissue+label%3Afeature-request+sort%3Areactions-%2B1-desc)
-[![Bugs](https://img.shields.io/github/issues/microsoft/vscode/bug.svg)](https://github.com/microsoft/vscode/issues?utf8=✓&q=is%3Aissue+is%3Aopen+label%3Abug)
-[![Gitter](https://img.shields.io/badge/chat-on%20gitter-yellow.svg)](https://gitter.im/Microsoft/vscode)
-
-## The Repository
-
-This repository ("`Code - OSS`") is where we (Microsoft) develop the [Visual Studio Code](https://code.visualstudio.com) product together with the community. Not only do we work on code and issues here, we also publish our [roadmap](https://github.com/microsoft/vscode/wiki/Roadmap), [monthly iteration plans](https://github.com/microsoft/vscode/wiki/Iteration-Plans), and our [endgame plans](https://github.com/microsoft/vscode/wiki/Running-the-Endgame). This source code is available to everyone under the standard [MIT license](https://github.com/microsoft/vscode/blob/main/LICENSE.txt).
-
-## Visual Studio Code
-
-<p align="center">
-  <img alt="VS Code in action" src="https://user-images.githubusercontent.com/35271042/118224532-3842c400-b438-11eb-923d-a5f66fa6785a.png">
-</p>
-
-[Visual Studio Code](https://code.visualstudio.com) is a distribution of the `Code - OSS` repository with Microsoft specific customizations released under a traditional [Microsoft product license](https://code.visualstudio.com/License/).
-
-[Visual Studio Code](https://code.visualstudio.com) combines the simplicity of a code editor with what developers need for their core edit-build-debug cycle. It provides comprehensive code editing, navigation, and understanding support along with lightweight debugging, a rich extensibility model, and lightweight integration with existing tools.
-
-Visual Studio Code is updated monthly with new features and bug fixes. You can download it for Windows, macOS, and Linux on [Visual Studio Code's website](https://code.visualstudio.com/Download). To get the latest releases every day, install the [Insiders build](https://code.visualstudio.com/insiders).
-
-## Contributing
-
-There are many ways in which you can participate in this project, for example:
-
-* [Submit bugs and feature requests](https://github.com/microsoft/vscode/issues), and help us verify as they are checked in
-* Review [source code changes](https://github.com/microsoft/vscode/pulls)
-* Review the [documentation](https://github.com/microsoft/vscode-docs) and make pull requests for anything from typos to additional and new content
-
-If you are interested in fixing issues and contributing directly to the code base,
-please see the document [How to Contribute](https://github.com/microsoft/vscode/wiki/How-to-Contribute), which covers the following:
-
-* [How to build and run from source](https://github.com/microsoft/vscode/wiki/How-to-Contribute)
-* [The development workflow, including debugging and running tests](https://github.com/microsoft/vscode/wiki/How-to-Contribute#debugging)
-* [Coding guidelines](https://github.com/microsoft/vscode/wiki/Coding-Guidelines)
-* [Submitting pull requests](https://github.com/microsoft/vscode/wiki/How-to-Contribute#pull-requests)
-* [Finding an issue to work on](https://github.com/microsoft/vscode/wiki/How-to-Contribute#where-to-contribute)
-* [Contributing to translations](https://aka.ms/vscodeloc)
-
-## Feedback
-
-* Ask a question on [Stack Overflow](https://stackoverflow.com/questions/tagged/vscode)
-* [Request a new feature](CONTRIBUTING.md)
-* Upvote [popular feature requests](https://github.com/microsoft/vscode/issues?q=is%3Aopen+is%3Aissue+label%3Afeature-request+sort%3Areactions-%2B1-desc)
-* [File an issue](https://github.com/microsoft/vscode/issues)
-* Follow [@code](https://twitter.com/code) and let us know what you think!
-
-See our [wiki](https://github.com/microsoft/vscode/wiki/Feedback-Channels) for a description of each of these channels and information on some other available community-driven channels.
-
-## Related Projects
-
-Many of the core components and extensions to VS Code live in their own repositories on GitHub. For example, the [node debug adapter](https://github.com/microsoft/vscode-node-debug) and the [mono debug adapter](https://github.com/microsoft/vscode-mono-debug) have their own repositories. For a complete list, please visit the [Related Projects](https://github.com/microsoft/vscode/wiki/Related-Projects) page on our [wiki](https://github.com/microsoft/vscode/wiki).
-
-## Bundled Extensions
-
-VS Code includes a set of built-in extensions located in the [extensions](extensions) folder, including grammars and snippets for many languages. Extensions that provide rich language support (code completion, Go to Definition) for a language have the suffix `language-features`. For example, the `json` extension provides coloring for `JSON` and the `json-language-features` provides rich language support for `JSON`.
-
-## Development Container
-
-This repository includes a Visual Studio Code Remote - Containers / GitHub Codespaces development container.
-
-- For [Remote - Containers](https://aka.ms/vscode-remote/download/containers), use the **Remote-Containers: Clone Repository in Container Volume...** command which creates a Docker volume for better disk I/O on macOS and Windows.
-- For Codespaces, install the [Github Codespaces](https://marketplace.visualstudio.com/items?itemName=GitHub.codespacese) extension in VS Code, and use the **Codespaces: Create New Codespace** command.
-
-Docker / the Codespace should have at least **4 Cores and 6 GB of RAM (8 GB recommended)** to run full build. See the [development container README](.devcontainer/README.md) for more information.
-
-## Code of Conduct
-
-This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments.
-
-## License
-
-Copyright (c) Microsoft Corporation. All rights reserved.
-
-Licensed under the [MIT](LICENSE.txt) license.
diff --git a/lib/vscode/SECURITY.md b/lib/vscode/SECURITY.md
deleted file mode 100644
index a050f362c152..000000000000
--- a/lib/vscode/SECURITY.md
+++ /dev/null
@@ -1,41 +0,0 @@
-<!-- BEGIN MICROSOFT SECURITY.MD V0.0.5 BLOCK -->
-
-## Security
-
-Microsoft takes the security of our software products and services seriously, which includes all source code repositories managed through our GitHub organizations, which include [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin), and [our GitHub organizations](https://opensource.microsoft.com/).
-
-If you believe you have found a security vulnerability in any Microsoft-owned repository that meets [Microsoft's definition of a security vulnerability](https://docs.microsoft.com/en-us/previous-versions/tn-archive/cc751383(v=technet.10)), please report it to us as described below.
-
-## Reporting Security Issues
-
-**Please do not report security vulnerabilities through public GitHub issues.**
-
-Instead, please report them to the Microsoft Security Response Center (MSRC) at [https://msrc.microsoft.com/create-report](https://msrc.microsoft.com/create-report).
-
-If you prefer to submit without logging in, send email to [secure@microsoft.com](mailto:secure@microsoft.com).  If possible, encrypt your message with our PGP key; please download it from the [Microsoft Security Response Center PGP Key page](https://www.microsoft.com/en-us/msrc/pgp-key-msrc).
-
-You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Additional information can be found at [microsoft.com/msrc](https://www.microsoft.com/msrc).
-
-Please include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue:
-
-  * Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.)
-  * Full paths of source file(s) related to the manifestation of the issue
-  * The location of the affected source code (tag/branch/commit or direct URL)
-  * Any special configuration required to reproduce the issue
-  * Step-by-step instructions to reproduce the issue
-  * Proof-of-concept or exploit code (if possible)
-  * Impact of the issue, including how an attacker might exploit the issue
-
-This information will help us triage your report more quickly.
-
-If you are reporting for a bug bounty, more complete reports can contribute to a higher bounty award. Please visit our [Microsoft Bug Bounty Program](https://microsoft.com/msrc/bounty) page for more details about our active programs.
-
-## Preferred Languages
-
-We prefer all communications to be in English.
-
-## Policy
-
-Microsoft follows the principle of [Coordinated Vulnerability Disclosure](https://www.microsoft.com/en-us/msrc/cvd).
-
-<!-- END MICROSOFT SECURITY.MD BLOCK -->
diff --git a/lib/vscode/ThirdPartyNotices.txt b/lib/vscode/ThirdPartyNotices.txt
deleted file mode 100644
index d929c6b59e78..000000000000
--- a/lib/vscode/ThirdPartyNotices.txt
+++ /dev/null
@@ -1,2886 +0,0 @@
-microsoft-vscode
-
-THIRD-PARTY SOFTWARE NOTICES AND INFORMATION
-Do Not Translate or Localize
-
-This project incorporates components from the projects listed below. The original copyright notices and the licenses under which Microsoft received such components are set forth below. Microsoft reserves all rights not expressly granted herein, whether by implication, estoppel or otherwise.
-
-1.	atom/language-clojure version 0.22.7 (https://github.com/atom/language-clojure)
-2.	atom/language-coffee-script version 0.49.3 (https://github.com/atom/language-coffee-script)
-3.	atom/language-css version 0.44.4 (https://github.com/atom/language-css)
-4.	atom/language-java version 0.32.1 (https://github.com/atom/language-java)
-5.	atom/language-sass version 0.62.1 (https://github.com/atom/language-sass)
-6.	atom/language-shellscript version 0.26.0 (https://github.com/atom/language-shellscript)
-7.	atom/language-xml version 0.35.2 (https://github.com/atom/language-xml)
-8.	better-go-syntax version 1.0.0 (https://github.com/jeff-hykin/better-go-syntax/ )
-9.	Colorsublime-Themes version 0.1.0 (https://github.com/Colorsublime/Colorsublime-Themes)
-10.	daaain/Handlebars version 1.8.0 (https://github.com/daaain/Handlebars)
-11.	dart-lang/dart-syntax-highlight (https://github.com/dart-lang/dart-syntax-highlight)
-12.	davidrios/pug-tmbundle (https://github.com/davidrios/pug-tmbundle)
-13.	definitelytyped (https://github.com/DefinitelyTyped/DefinitelyTyped)
-14.	demyte/language-cshtml version 0.3.0 (https://github.com/demyte/language-cshtml)
-15.	Document Object Model version 4.0.0 (https://www.w3.org/DOM/)
-16.	dotnet/csharp-tmLanguage version 0.1.0 (https://github.com/dotnet/csharp-tmLanguage)
-17.	expand-abbreviation version 0.5.8 (https://github.com/emmetio/expand-abbreviation)
-18.	fadeevab/make.tmbundle (https://github.com/fadeevab/make.tmbundle)
-19.	freebroccolo/atom-language-swift (https://github.com/freebroccolo/atom-language-swift)
-20.	HTML 5.1 W3C Working Draft version 08 October 2015 (http://www.w3.org/TR/2015/WD-html51-20151008/)
-21.	Ikuyadeu/vscode-R version 1.3.0 (https://github.com/Ikuyadeu/vscode-R)
-22.	insane version 2.6.2 (https://github.com/bevacqua/insane)
-23.	Ionic documentation version 1.2.4 (https://github.com/ionic-team/ionic-site)
-24.	ionide/ionide-fsgrammar (https://github.com/ionide/ionide-fsgrammar)
-25.	jeff-hykin/cpp-textmate-grammar version 1.12.11 (https://github.com/jeff-hykin/cpp-textmate-grammar)
-26.	jeff-hykin/cpp-textmate-grammar version 1.15.5 (https://github.com/jeff-hykin/cpp-textmate-grammar)
-27.	js-beautify version 1.6.8 (https://github.com/beautify-web/js-beautify)
-28.	JuliaEditorSupport/atom-language-julia version 0.21.0 (https://github.com/JuliaEditorSupport/atom-language-julia)
-29.	Jxck/assert version 1.0.0 (https://github.com/Jxck/assert)
-30.	language-docker (https://github.com/moby/moby)
-31.	language-less version 0.34.2 (https://github.com/atom/language-less)
-32.	language-php version 0.46.2 (https://github.com/atom/language-php)
-33.	MagicStack/MagicPython version 1.1.1 (https://github.com/MagicStack/MagicPython)
-34.	marked version 1.1.0 (https://github.com/markedjs/marked)
-35.	mdn-data version 1.1.12 (https://github.com/mdn/data)
-36.	microsoft/TypeScript-TmLanguage version 0.0.1 (https://github.com/microsoft/TypeScript-TmLanguage)
-37.	microsoft/vscode-JSON.tmLanguage (https://github.com/microsoft/vscode-JSON.tmLanguage)
-38.	microsoft/vscode-markdown-tm-grammar version 1.0.0 (https://github.com/microsoft/vscode-markdown-tm-grammar)
-39.	microsoft/vscode-mssql version 1.9.0 (https://github.com/microsoft/vscode-mssql)
-40.	mmims/language-batchfile version 0.7.6 (https://github.com/mmims/language-batchfile)
-41.	NVIDIA/cuda-cpp-grammar (https://github.com/NVIDIA/cuda-cpp-grammar)
-42.	PowerShell/EditorSyntax version 1.0.0 (https://github.com/PowerShell/EditorSyntax)
-43.	rust-syntax version 0.4.3 (https://github.com/dustypomerleau/rust-syntax)
-44.	seti-ui version 0.1.0 (https://github.com/jesseweed/seti-ui)
-45.	shaders-tmLanguage version 0.1.0 (https://github.com/tgjones/shaders-tmLanguage)
-46.	textmate/asp.vb.net.tmbundle (https://github.com/textmate/asp.vb.net.tmbundle)
-47.	textmate/c.tmbundle (https://github.com/textmate/c.tmbundle)
-48.	textmate/diff.tmbundle (https://github.com/textmate/diff.tmbundle)
-49.	textmate/git.tmbundle (https://github.com/textmate/git.tmbundle)
-50.	textmate/groovy.tmbundle (https://github.com/textmate/groovy.tmbundle)
-51.	textmate/html.tmbundle (https://github.com/textmate/html.tmbundle)
-52.	textmate/ini.tmbundle (https://github.com/textmate/ini.tmbundle)
-53.	textmate/javascript.tmbundle (https://github.com/textmate/javascript.tmbundle)
-54.	textmate/lua.tmbundle (https://github.com/textmate/lua.tmbundle)
-55.	textmate/markdown.tmbundle (https://github.com/textmate/markdown.tmbundle)
-56.	textmate/perl.tmbundle (https://github.com/textmate/perl.tmbundle)
-57.	textmate/ruby.tmbundle (https://github.com/textmate/ruby.tmbundle)
-58.	textmate/yaml.tmbundle (https://github.com/textmate/yaml.tmbundle)
-59.	TypeScript-TmLanguage version 0.1.8 (https://github.com/microsoft/TypeScript-TmLanguage)
-60.	TypeScript-TmLanguage version 1.0.0 (https://github.com/microsoft/TypeScript-TmLanguage)
-61.	Unicode version 12.0.0 (https://home.unicode.org/)
-62.	vscode-codicons version 0.0.14 (https://github.com/microsoft/vscode-codicons)
-63.	vscode-logfile-highlighter version 2.11.0 (https://github.com/emilast/vscode-logfile-highlighter)
-64.	vscode-swift version 0.0.1 (https://github.com/owensd/vscode-swift)
-65.	Web Background Synchronization (https://github.com/WICG/background-sync)
-
-
-%% atom/language-clojure NOTICES AND INFORMATION BEGIN HERE
-=========================================
-Copyright (c) 2014 GitHub Inc.
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-
-This package was derived from a TextMate bundle located at
-https://github.com/mmcgrana/textmate-clojure and distributed under the
-following license, located in `LICENSE.md`:
-
-The MIT License (MIT)
-
-Copyright (c) 2010- Mark McGranaghan
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-=========================================
-END OF atom/language-clojure NOTICES AND INFORMATION
-
-%% atom/language-coffee-script NOTICES AND INFORMATION BEGIN HERE
-=========================================
-The MIT License (MIT)
-
-Copyright (c) 2014 GitHub Inc.
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-
-This package was derived from a TextMate bundle located at
-https://github.com/jashkenas/coffee-script-tmbundle and distributed under the
-following license, located in `LICENSE`:
-
-Copyright (c) 2009-2014 Jeremy Ashkenas
-
-Permission is hereby granted, free of charge, to any person
-obtaining a copy of this software and associated documentation
-files (the "Software"), to deal in the Software without
-restriction, including without limitation the rights to use,
-copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the
-Software is furnished to do so, subject to the following
-conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-=========================================
-END OF atom/language-coffee-script NOTICES AND INFORMATION
-
-%% atom/language-css NOTICES AND INFORMATION BEGIN HERE
-=========================================
-Copyright (c) 2014 GitHub Inc.
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
---------------------------------------------------------------------
-
-This package was derived from a TextMate bundle located at
-https://github.com/textmate/css.tmbundle and distributed under the following
-license, located in `README.mdown`:
-
-Permission to copy, use, modify, sell and distribute this
-software is granted. This software is provided "as is" without
-express or implied warranty, and with no claim as to its
-suitability for any purpose.
-=========================================
-END OF atom/language-css NOTICES AND INFORMATION
-
-%% atom/language-java NOTICES AND INFORMATION BEGIN HERE
-=========================================
-The MIT License (MIT)
-
-Copyright (c) 2014 GitHub Inc.
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-
-This package was derived from a TextMate bundle located at
-https://github.com/textmate/java.tmbundle and distributed under the following
-license, located in `README.mdown`:
-
-Permission to copy, use, modify, sell and distribute this
-software is granted. This software is provided "as is" without
-express or implied warranty, and with no claim as to its
-suitability for any purpose.
-=========================================
-END OF atom/language-java NOTICES AND INFORMATION
-
-%% atom/language-sass NOTICES AND INFORMATION BEGIN HERE
-=========================================
-The MIT License (MIT)
-
-Copyright (c) 2014 GitHub Inc.
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-
-This package was derived from a TextMate bundle located at
-https://github.com/alexsancho/Sass.tmbundle and distributed under the following
-license, located in `LICENSE.md`:
-
-Copyright (c) 2012 Alex Sancho, http://alexsancho.name/
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-=========================================
-END OF atom/language-sass NOTICES AND INFORMATION
-
-%% atom/language-shellscript NOTICES AND INFORMATION BEGIN HERE
-=========================================
-The MIT License (MIT)
-
-Copyright (c) 2014 GitHub Inc.
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-
-This package was derived from a TextMate bundle located at
-https://github.com/textmate/shellscript.tmbundle and distributed under the
-following license, located in `README.mdown`:
-
-Permission to copy, use, modify, sell and distribute this
-software is granted. This software is provided "as is" without
-express or implied warranty, and with no claim as to its
-suitability for any purpose.
-=========================================
-END OF atom/language-shellscript NOTICES AND INFORMATION
-
-%% atom/language-xml NOTICES AND INFORMATION BEGIN HERE
-=========================================
-The MIT License (MIT)
-
-Copyright (c) 2014 GitHub Inc.
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-
-This package was derived from a TextMate bundle located at
-https://github.com/textmate/xml.tmbundle and distributed under the following
-license, located in `README.mdown`:
-
-Permission to copy, use, modify, sell and distribute this
-software is granted. This software is provided "as is" without
-express or implied warranty, and with no claim as to its
-suitability for any purpose.
-=========================================
-END OF atom/language-xml NOTICES AND INFORMATION
-
-%% better-go-syntax NOTICES AND INFORMATION BEGIN HERE
-=========================================
-MIT License
-
-Copyright (c) 2019 Jeff Hykin
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-=========================================
-END OF better-go-syntax NOTICES AND INFORMATION
-
-%% Colorsublime-Themes NOTICES AND INFORMATION BEGIN HERE
-=========================================
-Copyright (c) 2015 Colorsublime.com
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-=========================================
-END OF Colorsublime-Themes NOTICES AND INFORMATION
-
-%% daaain/Handlebars NOTICES AND INFORMATION BEGIN HERE
-=========================================
--- Credits
-
-Adapted from the great sublime-text-handlebars package by Nicholas Westlake.
-
-Thanks a lot to all the generous contributors (in alphabetical order): @bittersweetryan, @bradcliffe, @calumbrodie, @duncanbeevers, @hlvnst, @jonschlinkert, @Krutius, @samselikoff, @utkarshkukreti, @zeppelin
-
--- License
-
-(The MIT License)
-
-Copyright (c) daaain/Handlebars project authors
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-=========================================
-END OF daaain/Handlebars NOTICES AND INFORMATION
-
-%% dart-lang/dart-syntax-highlight NOTICES AND INFORMATION BEGIN HERE
-=========================================
-Copyright 2020, the Dart project authors.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-    * Redistributions of source code must retain the above copyright
-    notice, this list of conditions and the following disclaimer.
-    * Redistributions in binary form must reproduce the above
-    copyright notice, this list of conditions and the following
-    disclaimer in the documentation and/or other materials provided
-    with the distribution.
-    * Neither the name of Google LLC nor the names of its
-    contributors may be used to endorse or promote products derived
-    from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-=========================================
-END OF dart-lang/dart-syntax-highlight NOTICES AND INFORMATION
-
-%% davidrios/pug-tmbundle NOTICES AND INFORMATION BEGIN HERE
-=========================================
-The MIT License (MIT)
-
-Copyright (c) 2016 David Rios
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software is furnished to do so,
-subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
-FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
-COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
-IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-=========================================
-END OF davidrios/pug-tmbundle NOTICES AND INFORMATION
-
-%% definitelytyped NOTICES AND INFORMATION BEGIN HERE
-=========================================
-This project is licensed under the MIT license.
-Copyrights are respective of each contributor listed at the beginning of each definition file.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-=========================================
-END OF definitelytyped NOTICES AND INFORMATION
-
-%% demyte/language-cshtml NOTICES AND INFORMATION BEGIN HERE
-=========================================
-The MIT License (MIT)
-
-Copyright (c) 2014 James Summerton
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-=========================================
-END OF demyte/language-cshtml NOTICES AND INFORMATION
-
-%% Document Object Model NOTICES AND INFORMATION BEGIN HERE
-=========================================
-W3C License
-This work is being provided by the copyright holders under the following license.
-By obtaining and/or copying this work, you (the licensee) agree that you have read, understood, and will comply with the following terms and conditions.
-Permission to copy, modify, and distribute this work, with or without modification, for any purpose and without fee or royalty is hereby granted, provided that you include the following
-on ALL copies of the work or portions thereof, including modifications:
-* The full text of this NOTICE in a location viewable to users of the redistributed or derivative work.
-* Any pre-existing intellectual property disclaimers, notices, or terms and conditions. If none exist, the W3C Software and Document Short Notice should be included.
-* Notice of any changes or modifications, through a copyright statement on the new code or document such as "This software or document includes material copied from or derived
-from Document Object Model. Copyright © 2015 W3C® (MIT, ERCIM, Keio, Beihang)."
-Disclaimers
-THIS WORK IS PROVIDED "AS IS
- AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR
-FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENT WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
-COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENT.
-The name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to the work without specific, written prior permission.
-Title to copyright in this work will at all times remain with copyright holders.
-=========================================
-END OF Document Object Model NOTICES AND INFORMATION
-
-%% dotnet/csharp-tmLanguage NOTICES AND INFORMATION BEGIN HERE
-=========================================
-MIT License
-
-Copyright (c) 2016 .NET Foundation
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-=========================================
-END OF dotnet/csharp-tmLanguage NOTICES AND INFORMATION
-
-%% expand-abbreviation NOTICES AND INFORMATION BEGIN HERE
-=========================================
-MIT License
-
-Copyright (c) 2017 Emmet.io
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-=========================================
-END OF expand-abbreviation NOTICES AND INFORMATION
-
-%% fadeevab/make.tmbundle NOTICES AND INFORMATION BEGIN HERE
-=========================================
-Copyright (c) textmate-make.tmbundle project authors
-
-If not otherwise specified (see below), files in this repository fall under the following license:
-
-Permission to copy, use, modify, sell and distribute this
-software is granted. This software is provided "as is" without
-express or implied warranty, and with no claim as to its
-suitability for any purpose.
-
-An exception is made for files in readable text which contain their own license information,
-or files where an accompanying file exists (in the same directory) with a "-license" suffix added
-to the base-name name of the original file, and an extension of txt, html, or similar. For example
-"tidy" is accompanied by "tidy-license.txt".
-=========================================
-END OF fadeevab/make.tmbundle NOTICES AND INFORMATION
-
-%% freebroccolo/atom-language-swift NOTICES AND INFORMATION BEGIN HERE
-=========================================
-The MIT License (MIT)
-
-Copyright (c) 2014 Darin Morrison
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-=========================================
-END OF freebroccolo/atom-language-swift NOTICES AND INFORMATION
-
-%% HTML 5.1 W3C Working Draft NOTICES AND INFORMATION BEGIN HERE
-=========================================
-Copyright © 2015 W3C® (MIT, ERCIM, Keio, Beihang). This software or document includes material copied
-from or derived from HTML 5.1 W3C Working Draft (http://www.w3.org/TR/2015/WD-html51-20151008/.)
-
-THIS DOCUMENT IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING, BUT
-NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, OR TITLE; THAT THE CONTENTS OF
-THE DOCUMENT ARE SUITABLE FOR ANY PURPOSE; NOR THAT THE IMPLEMENTATION OF SUCH CONTENTS WILL NOT INFRINGE ANY THIRD PARTY
-PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
-
-COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE
-DOCUMENT OR THE PERFORMANCE OR IMPLEMENTATION OF THE CONTENTS THEREOF.
-
-The name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to this document or its contents
-without specific, written prior permission. Title to copyright in this document will at all times remain with copyright holders.
-=========================================
-END OF HTML 5.1 W3C Working Draft NOTICES AND INFORMATION
-
-%% Ikuyadeu/vscode-R NOTICES AND INFORMATION BEGIN HERE
-=========================================
-MIT License
-
-Copyright (c) 2019 Yuki Ueda
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-=========================================
-END OF Ikuyadeu/vscode-R NOTICES AND INFORMATION
-
-%% insane NOTICES AND INFORMATION BEGIN HERE
-=========================================
-The MIT License (MIT)
-
-Copyright © 2015 Nicolas Bevacqua
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software is furnished to do so,
-subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
-FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
-COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
-IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-=========================================
-END OF insane NOTICES AND INFORMATION
-
-%% Ionic documentation NOTICES AND INFORMATION BEGIN HERE
-=========================================
-Copyright Drifty Co. http://drifty.com/.
-
-Apache License
-
-Version 2.0, January 2004
-
-http://www.apache.org/licenses/
-
-TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-1. Definitions.
-
-"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.
-
-"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.
-
-"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
-
-"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.
-
-"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.
-
-"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.
-
-"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).
-
-"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.
-
-"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."
-
-"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.
-
-2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.
-
-3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.
-
-4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:
-
-You must give any other recipients of the Work or Derivative Works a copy of this License; and
-
-You must cause any modified files to carry prominent notices stating that You changed the files; and
-
-You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
-
-If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
-
-5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
-
-6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
-
-7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
-
-8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.
-
-9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.
-
-END OF TERMS AND CONDITIONS
-=========================================
-END OF Ionic documentation NOTICES AND INFORMATION
-
-%% ionide/ionide-fsgrammar NOTICES AND INFORMATION BEGIN HERE
-=========================================
-The MIT License (MIT)
-
-Copyright (c) 2015 Krzysztof Cieslak
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-=========================================
-END OF ionide/ionide-fsgrammar NOTICES AND INFORMATION
-
-%% jeff-hykin/cpp-textmate-grammar NOTICES AND INFORMATION BEGIN HERE
-=========================================
-MIT License
-
-Copyright (c) 2019 Jeff Hykin
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-=========================================
-END OF jeff-hykin/cpp-textmate-grammar NOTICES AND INFORMATION
-
-%% js-beautify NOTICES AND INFORMATION BEGIN HERE
-=========================================
-The MIT License (MIT)
-
-Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-=========================================
-END OF js-beautify NOTICES AND INFORMATION
-
-%% JuliaEditorSupport/atom-language-julia NOTICES AND INFORMATION BEGIN HERE
-=========================================
-The atom-language-julia package is licensed under the MIT "Expat" License:
-
-> Copyright (c) 2015
->
-> Permission is hereby granted, free of charge, to any person obtaining
-> a copy of this software and associated documentation files (the
-> "Software"), to deal in the Software without restriction, including
-> without limitation the rights to use, copy, modify, merge, publish,
-> distribute, sublicense, and/or sell copies of the Software, and to
-> permit persons to whom the Software is furnished to do so, subject to
-> the following conditions:
->
-> The above copyright notice and this permission notice shall be
-> included in all copies or substantial portions of the Software.
->
-> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-> EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-> MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-> IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-> CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-> TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-> SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-=========================================
-END OF JuliaEditorSupport/atom-language-julia NOTICES AND INFORMATION
-
-%% Jxck/assert NOTICES AND INFORMATION BEGIN HERE
-=========================================
-The MIT License (MIT)
-
-Copyright (c) 2011 Jxck
-
-Originally from node.js (http://nodejs.org)
-Copyright Joyent, Inc.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-=========================================
-END OF Jxck/assert NOTICES AND INFORMATION
-
-%% language-docker NOTICES AND INFORMATION BEGIN HERE
-=========================================
-Apache License
-                           Version 2.0, January 2004
-                        https://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   Copyright 2013-2018 Docker, Inc.
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       https://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-=========================================
-END OF language-docker NOTICES AND INFORMATION
-
-%% language-less NOTICES AND INFORMATION BEGIN HERE
-=========================================
-The MIT License (MIT)
-
-Copyright (c) 2014 GitHub Inc.
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-
-This package was derived from a TextMate bundle located at
-https://github.com/textmate/less.tmbundle and distributed under the following
-license, located in `LICENSE.md`:
-
-Copyright (c) 2010 Scott Kyle and Rasmus Andersson
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-=========================================
-END OF language-less NOTICES AND INFORMATION
-
-%% language-php NOTICES AND INFORMATION BEGIN HERE
-=========================================
-The MIT License (MIT)
-
-Copyright (c) 2014 GitHub Inc.
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-
-This package was derived from a TextMate bundle located at
-https://github.com/textmate/php.tmbundle and distributed under the following
-license, located in `README.mdown`:
-
-Permission to copy, use, modify, sell and distribute this
-software is granted. This software is provided "as is" without
-express or implied warranty, and with no claim as to its
-suitability for any purpose.
-=========================================
-END OF language-php NOTICES AND INFORMATION
-
-%% MagicStack/MagicPython NOTICES AND INFORMATION BEGIN HERE
-=========================================
-The MIT License
-
-Copyright (c) 2015-present MagicStack Inc.  http://magic.io
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-=========================================
-END OF MagicStack/MagicPython NOTICES AND INFORMATION
-
-%% marked NOTICES AND INFORMATION BEGIN HERE
-=========================================
-information
-
-## Contribution License Agreement
-
-If you contribute code to this project, you are implicitly allowing your code
-to be distributed under the MIT license. You are also implicitly verifying that
-all code is your original work. `</legalese>`
-
-## Marked
-
-Copyright (c) 2018+, MarkedJS (https://github.com/markedjs/)
-Copyright (c) 2011-2018, Christopher Jeffrey (https://github.com/chjj/)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-
-## Markdown
-
-Copyright © 2004, John Gruber
-http://daringfireball.net/
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
-* Neither the name "Markdown" nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
-
-This software is provided by the copyright holders and contributors "as is" and any express or implied warranties, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose are disclaimed. In no event shall the copyright owner or contributors be liable for any direct, indirect, incidental, special, exemplary, or consequential damages (including, but not limited to, procurement of substitute goods or services; loss of use, data, or profits; or business interruption) however caused and on any theory of liability, whether in contract, strict liability, or tort (including negligence or otherwise) arising in any way out of the use of this software, even if advised of the possibility of such damage.
-=========================================
-END OF marked NOTICES AND INFORMATION
-
-%% mdn-data NOTICES AND INFORMATION BEGIN HERE
-=========================================
-Mozilla Public License Version 2.0
-
-Copyright (c) 2018 Mozilla Corporation
-
-==================================
-
-1. Definitions
---------------
-
-1.1. "Contributor"
-    means each individual or legal entity that creates, contributes to
-    the creation of, or owns Covered Software.
-
-1.2. "Contributor Version"
-    means the combination of the Contributions of others (if any) used
-    by a Contributor and that particular Contributor's Contribution.
-
-1.3. "Contribution"
-    means Covered Software of a particular Contributor.
-
-1.4. "Covered Software"
-    means Source Code Form to which the initial Contributor has attached
-    the notice in Exhibit A, the Executable Form of such Source Code
-    Form, and Modifications of such Source Code Form, in each case
-    including portions thereof.
-
-1.5. "Incompatible With Secondary Licenses"
-    means
-
-    (a) that the initial Contributor has attached the notice described
-        in Exhibit B to the Covered Software; or
-
-    (b) that the Covered Software was made available under the terms of
-        version 1.1 or earlier of the License, but not also under the
-        terms of a Secondary License.
-
-1.6. "Executable Form"
-    means any form of the work other than Source Code Form.
-
-1.7. "Larger Work"
-    means a work that combines Covered Software with other material, in
-    a separate file or files, that is not Covered Software.
-
-1.8. "License"
-    means this document.
-
-1.9. "Licensable"
-    means having the right to grant, to the maximum extent possible,
-    whether at the time of the initial grant or subsequently, any and
-    all of the rights conveyed by this License.
-
-1.10. "Modifications"
-    means any of the following:
-
-    (a) any file in Source Code Form that results from an addition to,
-        deletion from, or modification of the contents of Covered
-        Software; or
-
-    (b) any new file in Source Code Form that contains any Covered
-        Software.
-
-1.11. "Patent Claims" of a Contributor
-    means any patent claim(s), including without limitation, method,
-    process, and apparatus claims, in any patent Licensable by such
-    Contributor that would be infringed, but for the grant of the
-    License, by the making, using, selling, offering for sale, having
-    made, import, or transfer of either its Contributions or its
-    Contributor Version.
-
-1.12. "Secondary License"
-    means either the GNU General Public License, Version 2.0, the GNU
-    Lesser General Public License, Version 2.1, the GNU Affero General
-    Public License, Version 3.0, or any later versions of those
-    licenses.
-
-1.13. "Source Code Form"
-    means the form of the work preferred for making modifications.
-
-1.14. "You" (or "Your")
-    means an individual or a legal entity exercising rights under this
-    License. For legal entities, "You" includes any entity that
-    controls, is controlled by, or is under common control with You. For
-    purposes of this definition, "control" means (a) the power, direct
-    or indirect, to cause the direction or management of such entity,
-    whether by contract or otherwise, or (b) ownership of more than
-    fifty percent (50%) of the outstanding shares or beneficial
-    ownership of such entity.
-
-2. License Grants and Conditions
---------------------------------
-
-2.1. Grants
-
-Each Contributor hereby grants You a world-wide, royalty-free,
-non-exclusive license:
-
-(a) under intellectual property rights (other than patent or trademark)
-    Licensable by such Contributor to use, reproduce, make available,
-    modify, display, perform, distribute, and otherwise exploit its
-    Contributions, either on an unmodified basis, with Modifications, or
-    as part of a Larger Work; and
-
-(b) under Patent Claims of such Contributor to make, use, sell, offer
-    for sale, have made, import, and otherwise transfer either its
-    Contributions or its Contributor Version.
-
-2.2. Effective Date
-
-The licenses granted in Section 2.1 with respect to any Contribution
-become effective for each Contribution on the date the Contributor first
-distributes such Contribution.
-
-2.3. Limitations on Grant Scope
-
-The licenses granted in this Section 2 are the only rights granted under
-this License. No additional rights or licenses will be implied from the
-distribution or licensing of Covered Software under this License.
-Notwithstanding Section 2.1(b) above, no patent license is granted by a
-Contributor:
-
-(a) for any code that a Contributor has removed from Covered Software;
-    or
-
-(b) for infringements caused by: (i) Your and any other third party's
-    modifications of Covered Software, or (ii) the combination of its
-    Contributions with other software (except as part of its Contributor
-    Version); or
-
-(c) under Patent Claims infringed by Covered Software in the absence of
-    its Contributions.
-
-This License does not grant any rights in the trademarks, service marks,
-or logos of any Contributor (except as may be necessary to comply with
-the notice requirements in Section 3.4).
-
-2.4. Subsequent Licenses
-
-No Contributor makes additional grants as a result of Your choice to
-distribute the Covered Software under a subsequent version of this
-License (see Section 10.2) or under the terms of a Secondary License (if
-permitted under the terms of Section 3.3).
-
-2.5. Representation
-
-Each Contributor represents that the Contributor believes its
-Contributions are its original creation(s) or it has sufficient rights
-to grant the rights to its Contributions conveyed by this License.
-
-2.6. Fair Use
-
-This License is not intended to limit any rights You have under
-applicable copyright doctrines of fair use, fair dealing, or other
-equivalents.
-
-2.7. Conditions
-
-Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
-in Section 2.1.
-
-3. Responsibilities
--------------------
-
-3.1. Distribution of Source Form
-
-All distribution of Covered Software in Source Code Form, including any
-Modifications that You create or to which You contribute, must be under
-the terms of this License. You must inform recipients that the Source
-Code Form of the Covered Software is governed by the terms of this
-License, and how they can obtain a copy of this License. You may not
-attempt to alter or restrict the recipients' rights in the Source Code
-Form.
-
-3.2. Distribution of Executable Form
-
-If You distribute Covered Software in Executable Form then:
-
-(a) such Covered Software must also be made available in Source Code
-    Form, as described in Section 3.1, and You must inform recipients of
-    the Executable Form how they can obtain a copy of such Source Code
-    Form by reasonable means in a timely manner, at a charge no more
-    than the cost of distribution to the recipient; and
-
-(b) You may distribute such Executable Form under the terms of this
-    License, or sublicense it under different terms, provided that the
-    license for the Executable Form does not attempt to limit or alter
-    the recipients' rights in the Source Code Form under this License.
-
-3.3. Distribution of a Larger Work
-
-You may create and distribute a Larger Work under terms of Your choice,
-provided that You also comply with the requirements of this License for
-the Covered Software. If the Larger Work is a combination of Covered
-Software with a work governed by one or more Secondary Licenses, and the
-Covered Software is not Incompatible With Secondary Licenses, this
-License permits You to additionally distribute such Covered Software
-under the terms of such Secondary License(s), so that the recipient of
-the Larger Work may, at their option, further distribute the Covered
-Software under the terms of either this License or such Secondary
-License(s).
-
-3.4. Notices
-
-You may not remove or alter the substance of any license notices
-(including copyright notices, patent notices, disclaimers of warranty,
-or limitations of liability) contained within the Source Code Form of
-the Covered Software, except that You may alter any license notices to
-the extent required to remedy known factual inaccuracies.
-
-3.5. Application of Additional Terms
-
-You may choose to offer, and to charge a fee for, warranty, support,
-indemnity or liability obligations to one or more recipients of Covered
-Software. However, You may do so only on Your own behalf, and not on
-behalf of any Contributor. You must make it absolutely clear that any
-such warranty, support, indemnity, or liability obligation is offered by
-You alone, and You hereby agree to indemnify every Contributor for any
-liability incurred by such Contributor as a result of warranty, support,
-indemnity or liability terms You offer. You may include additional
-disclaimers of warranty and limitations of liability specific to any
-jurisdiction.
-
-4. Inability to Comply Due to Statute or Regulation
----------------------------------------------------
-
-If it is impossible for You to comply with any of the terms of this
-License with respect to some or all of the Covered Software due to
-statute, judicial order, or regulation then You must: (a) comply with
-the terms of this License to the maximum extent possible; and (b)
-describe the limitations and the code they affect. Such description must
-be placed in a text file included with all distributions of the Covered
-Software under this License. Except to the extent prohibited by statute
-or regulation, such description must be sufficiently detailed for a
-recipient of ordinary skill to be able to understand it.
-
-5. Termination
---------------
-
-5.1. The rights granted under this License will terminate automatically
-if You fail to comply with any of its terms. However, if You become
-compliant, then the rights granted under this License from a particular
-Contributor are reinstated (a) provisionally, unless and until such
-Contributor explicitly and finally terminates Your grants, and (b) on an
-ongoing basis, if such Contributor fails to notify You of the
-non-compliance by some reasonable means prior to 60 days after You have
-come back into compliance. Moreover, Your grants from a particular
-Contributor are reinstated on an ongoing basis if such Contributor
-notifies You of the non-compliance by some reasonable means, this is the
-first time You have received notice of non-compliance with this License
-from such Contributor, and You become compliant prior to 30 days after
-Your receipt of the notice.
-
-5.2. If You initiate litigation against any entity by asserting a patent
-infringement claim (excluding declaratory judgment actions,
-counter-claims, and cross-claims) alleging that a Contributor Version
-directly or indirectly infringes any patent, then the rights granted to
-You by any and all Contributors for the Covered Software under Section
-2.1 of this License shall terminate.
-
-5.3. In the event of termination under Sections 5.1 or 5.2 above, all
-end user license agreements (excluding distributors and resellers) which
-have been validly granted by You or Your distributors under this License
-prior to termination shall survive termination.
-
-************************************************************************
-*                                                                      *
-*  6. Disclaimer of Warranty                                           *
-*  -------------------------                                           *
-*                                                                      *
-*  Covered Software is provided under this License on an "as is"       *
-*  basis, without warranty of any kind, either expressed, implied, or  *
-*  statutory, including, without limitation, warranties that the       *
-*  Covered Software is free of defects, merchantable, fit for a        *
-*  particular purpose or non-infringing. The entire risk as to the     *
-*  quality and performance of the Covered Software is with You.        *
-*  Should any Covered Software prove defective in any respect, You     *
-*  (not any Contributor) assume the cost of any necessary servicing,   *
-*  repair, or correction. This disclaimer of warranty constitutes an   *
-*  essential part of this License. No use of any Covered Software is   *
-*  authorized under this License except under this disclaimer.         *
-*                                                                      *
-************************************************************************
-
-************************************************************************
-*                                                                      *
-*  7. Limitation of Liability                                          *
-*  --------------------------                                          *
-*                                                                      *
-*  Under no circumstances and under no legal theory, whether tort      *
-*  (including negligence), contract, or otherwise, shall any           *
-*  Contributor, or anyone who distributes Covered Software as          *
-*  permitted above, be liable to You for any direct, indirect,         *
-*  special, incidental, or consequential damages of any character      *
-*  including, without limitation, damages for lost profits, loss of    *
-*  goodwill, work stoppage, computer failure or malfunction, or any    *
-*  and all other commercial damages or losses, even if such party      *
-*  shall have been informed of the possibility of such damages. This   *
-*  limitation of liability shall not apply to liability for death or   *
-*  personal injury resulting from such party's negligence to the       *
-*  extent applicable law prohibits such limitation. Some               *
-*  jurisdictions do not allow the exclusion or limitation of           *
-*  incidental or consequential damages, so this exclusion and          *
-*  limitation may not apply to You.                                    *
-*                                                                      *
-************************************************************************
-
-8. Litigation
--------------
-
-Any litigation relating to this License may be brought only in the
-courts of a jurisdiction where the defendant maintains its principal
-place of business and such litigation shall be governed by laws of that
-jurisdiction, without reference to its conflict-of-law provisions.
-Nothing in this Section shall prevent a party's ability to bring
-cross-claims or counter-claims.
-
-9. Miscellaneous
-----------------
-
-This License represents the complete agreement concerning the subject
-matter hereof. If any provision of this License is held to be
-unenforceable, such provision shall be reformed only to the extent
-necessary to make it enforceable. Any law or regulation which provides
-that the language of a contract shall be construed against the drafter
-shall not be used to construe this License against a Contributor.
-
-10. Versions of the License
----------------------------
-
-10.1. New Versions
-
-Mozilla Foundation is the license steward. Except as provided in Section
-10.3, no one other than the license steward has the right to modify or
-publish new versions of this License. Each version will be given a
-distinguishing version number.
-
-10.2. Effect of New Versions
-
-You may distribute the Covered Software under the terms of the version
-of the License under which You originally received the Covered Software,
-or under the terms of any subsequent version published by the license
-steward.
-
-10.3. Modified Versions
-
-If you create software not governed by this License, and you want to
-create a new license for such software, you may create and use a
-modified version of this License if you rename the license and remove
-any references to the name of the license steward (except to note that
-such modified license differs from this License).
-
-10.4. Distributing Source Code Form that is Incompatible With Secondary
-Licenses
-
-If You choose to distribute Source Code Form that is Incompatible With
-Secondary Licenses under the terms of this version of the License, the
-notice described in Exhibit B of this License must be attached.
-
-Exhibit A - Source Code Form License Notice
--------------------------------------------
-
-  This Source Code Form is subject to the terms of the Mozilla Public
-  License, v. 2.0. If a copy of the MPL was not distributed with this
-  file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-If it is not possible or desirable to put the notice in a particular
-file, then You may include the notice in a location (such as a LICENSE
-file in a relevant directory) where a recipient would be likely to look
-for such a notice.
-
-You may add additional accurate notices of copyright ownership.
-
-Exhibit B - "Incompatible With Secondary Licenses" Notice
----------------------------------------------------------
-
-  This Source Code Form is "Incompatible With Secondary Licenses", as
-  defined by the Mozilla Public License, v. 2.0.
-=========================================
-END OF mdn-data NOTICES AND INFORMATION
-
-%% microsoft/TypeScript-TmLanguage NOTICES AND INFORMATION BEGIN HERE
-=========================================
-Copyright (c) Microsoft Corporation
-All rights reserved.
-
-MIT License
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-=========================================
-END OF microsoft/TypeScript-TmLanguage NOTICES AND INFORMATION
-
-%% microsoft/vscode-JSON.tmLanguage NOTICES AND INFORMATION BEGIN HERE
-=========================================
-vscode-JSON.tmLanguage
-
-Copyright (c) Microsoft Corporation
-
-All rights reserved.
-
-MIT License
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
-documentation files (the ""Software""), to deal in the Software without restriction, including without limitation
-the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software,
-and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
-TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
-CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-=========================================
-END OF microsoft/vscode-JSON.tmLanguage NOTICES AND INFORMATION
-
-%% microsoft/vscode-markdown-tm-grammar NOTICES AND INFORMATION BEGIN HERE
-=========================================
-The MIT License (MIT)
-
-Copyright (c) Microsoft 2018
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-=========================================
-END OF microsoft/vscode-markdown-tm-grammar NOTICES AND INFORMATION
-
-%% microsoft/vscode-mssql NOTICES AND INFORMATION BEGIN HERE
-=========================================
------------------------------------------- START OF LICENSE -----------------------------------------
-vscode-mssql
-Copyright (c) Microsoft Corporation
-All rights reserved.
-MIT License
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ""Software""), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-Copyright (c) 2016 Microsoft
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
------------------------------------------------ END OF LICENSE -----------------------------------------
-=========================================
-END OF microsoft/vscode-mssql NOTICES AND INFORMATION
-
-%% mmims/language-batchfile NOTICES AND INFORMATION BEGIN HERE
-=========================================
-The MIT License (MIT)
-
-Copyright (c) 2021 Michael Mims
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-=========================================
-END OF mmims/language-batchfile NOTICES AND INFORMATION
-
-%% NVIDIA/cuda-cpp-grammar NOTICES AND INFORMATION BEGIN HERE
-=========================================
-The MIT License (MIT)
-
-Copyright 2021 NVIDIA Corporation
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-=========================================
-END OF NVIDIA/cuda-cpp-grammar NOTICES AND INFORMATION
-
-%% PowerShell/EditorSyntax NOTICES AND INFORMATION BEGIN HERE
-=========================================
-Copyright (c) Microsoft Corporation
-
-All rights reserved.
-
-MIT License
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-=========================================
-END OF PowerShell/EditorSyntax NOTICES AND INFORMATION
-
-%% rust-syntax NOTICES AND INFORMATION BEGIN HERE
-=========================================
-MIT License
-
-Copyright (c) 2020 Dustin Pomerleau
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-=========================================
-END OF rust-syntax NOTICES AND INFORMATION
-
-%% seti-ui NOTICES AND INFORMATION BEGIN HERE
-=========================================
-Copyright (c) 2014 Jesse Weed
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-=========================================
-END OF seti-ui NOTICES AND INFORMATION
-
-%% shaders-tmLanguage NOTICES AND INFORMATION BEGIN HERE
-=========================================
-MIT License
-
-Copyright (c) 2017 Tim Jones
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-=========================================
-END OF shaders-tmLanguage NOTICES AND INFORMATION
-
-%% textmate/asp.vb.net.tmbundle NOTICES AND INFORMATION BEGIN HERE
-=========================================
-Copyright (c) textmate-asp.vb.net.tmbundle project authors
-
-If not otherwise specified (see below), files in this folder fall under the following license:
-
-Permission to copy, use, modify, sell and distribute this
-software is granted. This software is provided "as is" without
-express or implied warranty, and with no claim as to its
-suitability for any purpose.
-
-An exception is made for files in readable text which contain their own license information,
-or files where an accompanying file exists (in the same directory) with a "-license" suffix added
-to the base-name name of the original file, and an extension of txt, html, or similar. For example
-"tidy" is accompanied by "tidy-license.txt".
-=========================================
-END OF textmate/asp.vb.net.tmbundle NOTICES AND INFORMATION
-
-%% textmate/c.tmbundle NOTICES AND INFORMATION BEGIN HERE
-=========================================
-Copyright (c) textmate-c.tmbundle authors
-
-If not otherwise specified (see below), files in this repository fall under the following license:
-
-Permission to copy, use, modify, sell and distribute this
-software is granted. This software is provided "as is" without
-express or implied warranty, and with no claim as to its
-suitability for any purpose.
-
-An exception is made for files in readable text which contain their own license information,
-or files where an accompanying file exists (in the same directory) with a "-license" suffix added
-to the base-name name of the original file, and an extension of txt, html, or similar. For example
-"tidy" is accompanied by "tidy-license.txt".
-=========================================
-END OF textmate/c.tmbundle NOTICES AND INFORMATION
-
-%% textmate/diff.tmbundle NOTICES AND INFORMATION BEGIN HERE
-=========================================
-Copyright (c) textmate-diff.tmbundle project authors
-
-If not otherwise specified (see below), files in this repository fall under the following license:
-
-Permission to copy, use, modify, sell and distribute this
-software is granted. This software is provided "as is" without
-express or implied warranty, and with no claim as to its
-suitability for any purpose.
-
-An exception is made for files in readable text which contain their own license information,
-or files where an accompanying file exists (in the same directory) with a "-license" suffix added
-to the base-name name of the original file, and an extension of txt, html, or similar. For example
-"tidy" is accompanied by "tidy-license.txt".
-=========================================
-END OF textmate/diff.tmbundle NOTICES AND INFORMATION
-
-%% textmate/git.tmbundle NOTICES AND INFORMATION BEGIN HERE
-=========================================
-The MIT License (MIT)
-
-Copyright (c) 2008 Tim Harper
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the"
-Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-=========================================
-END OF textmate/git.tmbundle NOTICES AND INFORMATION
-
-%% textmate/groovy.tmbundle NOTICES AND INFORMATION BEGIN HERE
-=========================================
-Copyright (c) textmate-groovy.tmbundle project authors
-
-If not otherwise specified (see below), files in this repository fall under the following license:
-
-Permission to copy, use, modify, sell and distribute this
-software is granted. This software is provided "as is" without
-express or implied warranty, and with no claim as to its
-suitability for any purpose.
-
-An exception is made for files in readable text which contain their own license information,
-or files where an accompanying file exists (in the same directory) with a "-license" suffix added
-to the base-name name of the original file, and an extension of txt, html, or similar. For example
-"tidy" is accompanied by "tidy-license.txt".
-=========================================
-END OF textmate/groovy.tmbundle NOTICES AND INFORMATION
-
-%% textmate/html.tmbundle NOTICES AND INFORMATION BEGIN HERE
-=========================================
-Copyright (c) textmate-html.tmbundle project authors
-
-If not otherwise specified (see below), files in this repository fall under the following license:
-
-Permission to copy, use, modify, sell and distribute this
-software is granted. This software is provided "as is" without
-express or implied warranty, and with no claim as to its
-suitability for any purpose.
-
-An exception is made for files in readable text which contain their own license information,
-or files where an accompanying file exists (in the same directory) with a "-license" suffix added
-to the base-name name of the original file, and an extension of txt, html, or similar. For example
-"tidy" is accompanied by "tidy-license.txt".
-=========================================
-END OF textmate/html.tmbundle NOTICES AND INFORMATION
-
-%% textmate/ini.tmbundle NOTICES AND INFORMATION BEGIN HERE
-=========================================
-Copyright (c) textmate-ini.tmbundle project authors
-
-If not otherwise specified (see below), files in this folder fall under the following license:
-
-Permission to copy, use, modify, sell and distribute this
-software is granted. This software is provided "as is" without
-express or implied warranty, and with no claim as to its
-suitability for any purpose.
-
-An exception is made for files in readable text which contain their own license information,
-or files where an accompanying file exists (in the same directory) with a "-license" suffix added
-to the base-name name of the original file, and an extension of txt, html, or similar. For example
-"tidy" is accompanied by "tidy-license.txt".
-=========================================
-END OF textmate/ini.tmbundle NOTICES AND INFORMATION
-
-%% textmate/javascript.tmbundle NOTICES AND INFORMATION BEGIN HERE
-=========================================
-Copyright (c) textmate-javascript.tmbundle project authors
-
-If not otherwise specified (see below), files in this repository fall under the following license:
-
-Permission to copy, use, modify, sell and distribute this
-software is granted. This software is provided "as is" without
-express or implied warranty, and with no claim as to its
-suitability for any purpose.
-
-An exception is made for files in readable text which contain their own license information,
-or files where an accompanying file exists (in the same directory) with a "-license" suffix added
-to the base-name name of the original file, and an extension of txt, html, or similar. For example
-"tidy" is accompanied by "tidy-license.txt".
-=========================================
-END OF textmate/javascript.tmbundle NOTICES AND INFORMATION
-
-%% textmate/lua.tmbundle NOTICES AND INFORMATION BEGIN HERE
-=========================================
-Copyright (c) textmate-lua.tmbundle project authors
-
-If not otherwise specified (see below), files in this repository fall under the following license:
-
-Permission to copy, use, modify, sell and distribute this
-software is granted. This software is provided "as is" without
-express or implied warranty, and with no claim as to its
-suitability for any purpose.
-
-An exception is made for files in readable text which contain their own license information,
-or files where an accompanying file exists (in the same directory) with a "-license" suffix added
-to the base-name name of the original file, and an extension of txt, html, or similar. For example
-"tidy" is accompanied by "tidy-license.txt".
-=========================================
-END OF textmate/lua.tmbundle NOTICES AND INFORMATION
-
-%% textmate/markdown.tmbundle NOTICES AND INFORMATION BEGIN HERE
-=========================================
-Copyright (c) markdown.tmbundle authors
-
-If not otherwise specified (see below), files in this repository fall under the following license:
-
-Permission to copy, use, modify, sell and distribute this
-software is granted. This software is provided "as is" without
-express or implied warranty, and with no claim as to its
-suitability for any purpose.
-
-An exception is made for files in readable text which contain their own license information,
-or files where an accompanying file exists (in the same directory) with a "-license" suffix added
-to the base-name name of the original file, and an extension of txt, html, or similar. For example
-"tidy" is accompanied by "tidy-license.txt".
-=========================================
-END OF textmate/markdown.tmbundle NOTICES AND INFORMATION
-
-%% textmate/perl.tmbundle NOTICES AND INFORMATION BEGIN HERE
-=========================================
-Copyright (c) textmate-perl.tmbundle project authors
-
-If not otherwise specified (see below), files in this repository fall under the following license:
-
-Permission to copy, use, modify, sell and distribute this
-software is granted. This software is provided "as is" without
-express or implied warranty, and with no claim as to its
-suitability for any purpose.
-
-An exception is made for files in readable text which contain their own license information,
-or files where an accompanying file exists (in the same directory) with a "-license" suffix added
-to the base-name name of the original file, and an extension of txt, html, or similar. For example
-"tidy" is accompanied by "tidy-license.txt".
-=========================================
-END OF textmate/perl.tmbundle NOTICES AND INFORMATION
-
-%% textmate/ruby.tmbundle NOTICES AND INFORMATION BEGIN HERE
-=========================================
-Copyright (c) textmate-ruby.tmbundle project authors
-
-If not otherwise specified (see below), files in this folder fall under the following license:
-
-Permission to copy, use, modify, sell and distribute this
-software is granted. This software is provided "as is" without
-express or implied warranty, and with no claim as to its
-suitability for any purpose.
-
-An exception is made for files in readable text which contain their own license information,
-or files where an accompanying file exists (in the same directory) with a "-license" suffix added
-to the base-name name of the original file, and an extension of txt, html, or similar. For example
-"tidy" is accompanied by "tidy-license.txt".
-=========================================
-END OF textmate/ruby.tmbundle NOTICES AND INFORMATION
-
-%% textmate/yaml.tmbundle NOTICES AND INFORMATION BEGIN HERE
-=========================================
-Copyright (c) 2015 FichteFoll <fichtefoll2@googlemail.com>
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-=========================================
-END OF textmate/yaml.tmbundle NOTICES AND INFORMATION
-
-%% TypeScript-TmLanguage NOTICES AND INFORMATION BEGIN HERE
-=========================================
-Copyright (c) Microsoft Corporation
-All rights reserved.
-
-MIT License
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-=========================================
-END OF TypeScript-TmLanguage NOTICES AND INFORMATION
-
-%% Unicode NOTICES AND INFORMATION BEGIN HERE
-=========================================
-Unicode Data Files include all data files under the directories
-http://www.unicode.org/Public/, http://www.unicode.org/reports/,
-http://www.unicode.org/cldr/data/, http://source.icu-project.org/repos/icu/, and
-http://www.unicode.org/utility/trac/browser/.
-
-Unicode Data Files do not include PDF online code charts under the
-directory http://www.unicode.org/Public/.
-
-Software includes any source code published in the Unicode Standard
-or under the directories
-http://www.unicode.org/Public/, http://www.unicode.org/reports/,
-http://www.unicode.org/cldr/data/, http://source.icu-project.org/repos/icu/, and
-http://www.unicode.org/utility/trac/browser/.
-
-NOTICE TO USER: Carefully read the following legal agreement.
-BY DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S
-DATA FILES ("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"),
-YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
-TERMS AND CONDITIONS OF THIS AGREEMENT.
-IF YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE
-THE DATA FILES OR SOFTWARE.
-
-COPYRIGHT AND PERMISSION NOTICE
-
-Copyright (c) 1991-2017 Unicode, Inc. All rights reserved.
-Distributed under the Terms of Use in http://www.unicode.org/copyright.html.
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of the Unicode data files and any associated documentation
-(the "Data Files") or Unicode software and any associated documentation
-(the "Software") to deal in the Data Files or Software
-without restriction, including without limitation the rights to use,
-copy, modify, merge, publish, distribute, and/or sell copies of
-the Data Files or Software, and to permit persons to whom the Data Files
-or Software are furnished to do so, provided that either
-(a) this copyright and permission notice appear with all copies
-of the Data Files or Software, or
-(b) this copyright and permission notice appear in associated
-Documentation.
-
-THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF
-ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS
-NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL
-DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
-DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
-TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THE DATA FILES OR SOFTWARE.
-
-Except as contained in this notice, the name of a copyright holder
-shall not be used in advertising or otherwise to promote the sale,
-use or other dealings in these Data Files or Software without prior
-written authorization of the copyright holder.
-=========================================
-END OF Unicode NOTICES AND INFORMATION
-
-%% vscode-codicons NOTICES AND INFORMATION BEGIN HERE
-=========================================
-Attribution 4.0 International
-
-=======================================================================
-
-Creative Commons Corporation ("Creative Commons") is not a law firm and
-does not provide legal services or legal advice. Distribution of
-Creative Commons public licenses does not create a lawyer-client or
-other relationship. Creative Commons makes its licenses and related
-information available on an "as-is" basis. Creative Commons gives no
-warranties regarding its licenses, any material licensed under their
-terms and conditions, or any related information. Creative Commons
-disclaims all liability for damages resulting from their use to the
-fullest extent possible.
-
-Using Creative Commons Public Licenses
-
-Creative Commons public licenses provide a standard set of terms and
-conditions that creators and other rights holders may use to share
-original works of authorship and other material subject to copyright
-and certain other rights specified in the public license below. The
-following considerations are for informational purposes only, are not
-exhaustive, and do not form part of our licenses.
-
-     Considerations for licensors: Our public licenses are
-     intended for use by those authorized to give the public
-     permission to use material in ways otherwise restricted by
-     copyright and certain other rights. Our licenses are
-     irrevocable. Licensors should read and understand the terms
-     and conditions of the license they choose before applying it.
-     Licensors should also secure all rights necessary before
-     applying our licenses so that the public can reuse the
-     material as expected. Licensors should clearly mark any
-     material not subject to the license. This includes other CC-
-     licensed material, or material used under an exception or
-     limitation to copyright. More considerations for licensors:
-	wiki.creativecommons.org/Considerations_for_licensors
-
-     Considerations for the public: By using one of our public
-     licenses, a licensor grants the public permission to use the
-     licensed material under specified terms and conditions. If
-     the licensor's permission is not necessary for any reason--for
-     example, because of any applicable exception or limitation to
-     copyright--then that use is not regulated by the license. Our
-     licenses grant only permissions under copyright and certain
-     other rights that a licensor has authority to grant. Use of
-     the licensed material may still be restricted for other
-     reasons, including because others have copyright or other
-     rights in the material. A licensor may make special requests,
-     such as asking that all changes be marked or described.
-     Although not required by our licenses, you are encouraged to
-     respect those requests where reasonable. More_considerations
-     for the public:
-	wiki.creativecommons.org/Considerations_for_licensees
-
-=======================================================================
-
-Creative Commons Attribution 4.0 International Public License
-
-By exercising the Licensed Rights (defined below), You accept and agree
-to be bound by the terms and conditions of this Creative Commons
-Attribution 4.0 International Public License ("Public License"). To the
-extent this Public License may be interpreted as a contract, You are
-granted the Licensed Rights in consideration of Your acceptance of
-these terms and conditions, and the Licensor grants You such rights in
-consideration of benefits the Licensor receives from making the
-Licensed Material available under these terms and conditions.
-
-
-Section 1 -- Definitions.
-
-  a. Adapted Material means material subject to Copyright and Similar
-     Rights that is derived from or based upon the Licensed Material
-     and in which the Licensed Material is translated, altered,
-     arranged, transformed, or otherwise modified in a manner requiring
-     permission under the Copyright and Similar Rights held by the
-     Licensor. For purposes of this Public License, where the Licensed
-     Material is a musical work, performance, or sound recording,
-     Adapted Material is always produced where the Licensed Material is
-     synched in timed relation with a moving image.
-
-  b. Adapter's License means the license You apply to Your Copyright
-     and Similar Rights in Your contributions to Adapted Material in
-     accordance with the terms and conditions of this Public License.
-
-  c. Copyright and Similar Rights means copyright and/or similar rights
-     closely related to copyright including, without limitation,
-     performance, broadcast, sound recording, and Sui Generis Database
-     Rights, without regard to how the rights are labeled or
-     categorized. For purposes of this Public License, the rights
-     specified in Section 2(b)(1)-(2) are not Copyright and Similar
-     Rights.
-
-  d. Effective Technological Measures means those measures that, in the
-     absence of proper authority, may not be circumvented under laws
-     fulfilling obligations under Article 11 of the WIPO Copyright
-     Treaty adopted on December 20, 1996, and/or similar international
-     agreements.
-
-  e. Exceptions and Limitations means fair use, fair dealing, and/or
-     any other exception or limitation to Copyright and Similar Rights
-     that applies to Your use of the Licensed Material.
-
-  f. Licensed Material means the artistic or literary work, database,
-     or other material to which the Licensor applied this Public
-     License.
-
-  g. Licensed Rights means the rights granted to You subject to the
-     terms and conditions of this Public License, which are limited to
-     all Copyright and Similar Rights that apply to Your use of the
-     Licensed Material and that the Licensor has authority to license.
-
-  h. Licensor means the individual(s) or entity(ies) granting rights
-     under this Public License.
-
-  i. Share means to provide material to the public by any means or
-     process that requires permission under the Licensed Rights, such
-     as reproduction, public display, public performance, distribution,
-     dissemination, communication, or importation, and to make material
-     available to the public including in ways that members of the
-     public may access the material from a place and at a time
-     individually chosen by them.
-
-  j. Sui Generis Database Rights means rights other than copyright
-     resulting from Directive 96/9/EC of the European Parliament and of
-     the Council of 11 March 1996 on the legal protection of databases,
-     as amended and/or succeeded, as well as other essentially
-     equivalent rights anywhere in the world.
-
-  k. You means the individual or entity exercising the Licensed Rights
-     under this Public License. Your has a corresponding meaning.
-
-
-Section 2 -- Scope.
-
-  a. License grant.
-
-       1. Subject to the terms and conditions of this Public License,
-          the Licensor hereby grants You a worldwide, royalty-free,
-          non-sublicensable, non-exclusive, irrevocable license to
-          exercise the Licensed Rights in the Licensed Material to:
-
-            a. reproduce and Share the Licensed Material, in whole or
-               in part; and
-
-            b. produce, reproduce, and Share Adapted Material.
-
-       2. Exceptions and Limitations. For the avoidance of doubt, where
-          Exceptions and Limitations apply to Your use, this Public
-          License does not apply, and You do not need to comply with
-          its terms and conditions.
-
-       3. Term. The term of this Public License is specified in Section
-          6(a).
-
-       4. Media and formats; technical modifications allowed. The
-          Licensor authorizes You to exercise the Licensed Rights in
-          all media and formats whether now known or hereafter created,
-          and to make technical modifications necessary to do so. The
-          Licensor waives and/or agrees not to assert any right or
-          authority to forbid You from making technical modifications
-          necessary to exercise the Licensed Rights, including
-          technical modifications necessary to circumvent Effective
-          Technological Measures. For purposes of this Public License,
-          simply making modifications authorized by this Section 2(a)
-          (4) never produces Adapted Material.
-
-       5. Downstream recipients.
-
-            a. Offer from the Licensor -- Licensed Material. Every
-               recipient of the Licensed Material automatically
-               receives an offer from the Licensor to exercise the
-               Licensed Rights under the terms and conditions of this
-               Public License.
-
-            b. No downstream restrictions. You may not offer or impose
-               any additional or different terms or conditions on, or
-               apply any Effective Technological Measures to, the
-               Licensed Material if doing so restricts exercise of the
-               Licensed Rights by any recipient of the Licensed
-               Material.
-
-       6. No endorsement. Nothing in this Public License constitutes or
-          may be construed as permission to assert or imply that You
-          are, or that Your use of the Licensed Material is, connected
-          with, or sponsored, endorsed, or granted official status by,
-          the Licensor or others designated to receive attribution as
-          provided in Section 3(a)(1)(A)(i).
-
-  b. Other rights.
-
-       1. Moral rights, such as the right of integrity, are not
-          licensed under this Public License, nor are publicity,
-          privacy, and/or other similar personality rights; however, to
-          the extent possible, the Licensor waives and/or agrees not to
-          assert any such rights held by the Licensor to the limited
-          extent necessary to allow You to exercise the Licensed
-          Rights, but not otherwise.
-
-       2. Patent and trademark rights are not licensed under this
-          Public License.
-
-       3. To the extent possible, the Licensor waives any right to
-          collect royalties from You for the exercise of the Licensed
-          Rights, whether directly or through a collecting society
-          under any voluntary or waivable statutory or compulsory
-          licensing scheme. In all other cases the Licensor expressly
-          reserves any right to collect such royalties.
-
-
-Section 3 -- License Conditions.
-
-Your exercise of the Licensed Rights is expressly made subject to the
-following conditions.
-
-  a. Attribution.
-
-       1. If You Share the Licensed Material (including in modified
-          form), You must:
-
-            a. retain the following if it is supplied by the Licensor
-               with the Licensed Material:
-
-                 i. identification of the creator(s) of the Licensed
-                    Material and any others designated to receive
-                    attribution, in any reasonable manner requested by
-                    the Licensor (including by pseudonym if
-                    designated);
-
-                ii. a copyright notice;
-
-               iii. a notice that refers to this Public License;
-
-                iv. a notice that refers to the disclaimer of
-                    warranties;
-
-                 v. a URI or hyperlink to the Licensed Material to the
-                    extent reasonably practicable;
-
-            b. indicate if You modified the Licensed Material and
-               retain an indication of any previous modifications; and
-
-            c. indicate the Licensed Material is licensed under this
-               Public License, and include the text of, or the URI or
-               hyperlink to, this Public License.
-
-       2. You may satisfy the conditions in Section 3(a)(1) in any
-          reasonable manner based on the medium, means, and context in
-          which You Share the Licensed Material. For example, it may be
-          reasonable to satisfy the conditions by providing a URI or
-          hyperlink to a resource that includes the required
-          information.
-
-       3. If requested by the Licensor, You must remove any of the
-          information required by Section 3(a)(1)(A) to the extent
-          reasonably practicable.
-
-       4. If You Share Adapted Material You produce, the Adapter's
-          License You apply must not prevent recipients of the Adapted
-          Material from complying with this Public License.
-
-
-Section 4 -- Sui Generis Database Rights.
-
-Where the Licensed Rights include Sui Generis Database Rights that
-apply to Your use of the Licensed Material:
-
-  a. for the avoidance of doubt, Section 2(a)(1) grants You the right
-     to extract, reuse, reproduce, and Share all or a substantial
-     portion of the contents of the database;
-
-  b. if You include all or a substantial portion of the database
-     contents in a database in which You have Sui Generis Database
-     Rights, then the database in which You have Sui Generis Database
-     Rights (but not its individual contents) is Adapted Material; and
-
-  c. You must comply with the conditions in Section 3(a) if You Share
-     all or a substantial portion of the contents of the database.
-
-For the avoidance of doubt, this Section 4 supplements and does not
-replace Your obligations under this Public License where the Licensed
-Rights include other Copyright and Similar Rights.
-
-
-Section 5 -- Disclaimer of Warranties and Limitation of Liability.
-
-  a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
-     EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
-     AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
-     ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
-     IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
-     WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
-     PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
-     ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
-     KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
-     ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
-
-  b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
-     TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
-     NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
-     INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
-     COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
-     USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
-     ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
-     DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
-     IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
-
-  c. The disclaimer of warranties and limitation of liability provided
-     above shall be interpreted in a manner that, to the extent
-     possible, most closely approximates an absolute disclaimer and
-     waiver of all liability.
-
-
-Section 6 -- Term and Termination.
-
-  a. This Public License applies for the term of the Copyright and
-     Similar Rights licensed here. However, if You fail to comply with
-     this Public License, then Your rights under this Public License
-     terminate automatically.
-
-  b. Where Your right to use the Licensed Material has terminated under
-     Section 6(a), it reinstates:
-
-       1. automatically as of the date the violation is cured, provided
-          it is cured within 30 days of Your discovery of the
-          violation; or
-
-       2. upon express reinstatement by the Licensor.
-
-     For the avoidance of doubt, this Section 6(b) does not affect any
-     right the Licensor may have to seek remedies for Your violations
-     of this Public License.
-
-  c. For the avoidance of doubt, the Licensor may also offer the
-     Licensed Material under separate terms or conditions or stop
-     distributing the Licensed Material at any time; however, doing so
-     will not terminate this Public License.
-
-  d. Sections 1, 5, 6, 7, and 8 survive termination of this Public
-     License.
-
-
-Section 7 -- Other Terms and Conditions.
-
-  a. The Licensor shall not be bound by any additional or different
-     terms or conditions communicated by You unless expressly agreed.
-
-  b. Any arrangements, understandings, or agreements regarding the
-     Licensed Material not stated herein are separate from and
-     independent of the terms and conditions of this Public License.
-
-
-Section 8 -- Interpretation.
-
-  a. For the avoidance of doubt, this Public License does not, and
-     shall not be interpreted to, reduce, limit, restrict, or impose
-     conditions on any use of the Licensed Material that could lawfully
-     be made without permission under this Public License.
-
-  b. To the extent possible, if any provision of this Public License is
-     deemed unenforceable, it shall be automatically reformed to the
-     minimum extent necessary to make it enforceable. If the provision
-     cannot be reformed, it shall be severed from this Public License
-     without affecting the enforceability of the remaining terms and
-     conditions.
-
-  c. No term or condition of this Public License will be waived and no
-     failure to comply consented to unless expressly agreed to by the
-     Licensor.
-
-  d. Nothing in this Public License constitutes or may be interpreted
-     as a limitation upon, or waiver of, any privileges and immunities
-     that apply to the Licensor or You, including from the legal
-     processes of any jurisdiction or authority.
-
-
-=======================================================================
-
-Creative Commons is not a party to its public
-licenses. Notwithstanding, Creative Commons may elect to apply one of
-its public licenses to material it publishes and in those instances
-will be considered the "Licensor." The text of the Creative Commons
-public licenses is dedicated to the public domain under the CC0 Public
-Domain Dedication. Except for the limited purpose of indicating that
-material is shared under a Creative Commons public license or as
-otherwise permitted by the Creative Commons policies published at
-creativecommons.org/policies, Creative Commons does not authorize the
-use of the trademark "Creative Commons" or any other trademark or logo
-of Creative Commons without its prior written consent including,
-without limitation, in connection with any unauthorized modifications
-to any of its public licenses or any other arrangements,
-understandings, or agreements concerning use of licensed material. For
-the avoidance of doubt, this paragraph does not form part of the
-public licenses.
-
-Creative Commons may be contacted at creativecommons.org.
-=========================================
-END OF vscode-codicons NOTICES AND INFORMATION
-
-%% vscode-logfile-highlighter NOTICES AND INFORMATION BEGIN HERE
-=========================================
-The MIT License (MIT)
-
-Copyright (c) 2015 emilast
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-=========================================
-END OF vscode-logfile-highlighter NOTICES AND INFORMATION
-
-%% vscode-swift NOTICES AND INFORMATION BEGIN HERE
-=========================================
-The MIT License (MIT)
-
-Copyright (c) 2015 David Owens II
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-=========================================
-END OF vscode-swift NOTICES AND INFORMATION
-
-%% Web Background Synchronization NOTICES AND INFORMATION BEGIN HERE
-=========================================
-Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "{}"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright {yyyy} {name of copyright owner}
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-=========================================
-END OF Web Background Synchronization NOTICES AND INFORMATION
\ No newline at end of file
diff --git a/lib/vscode/build/.cachesalt b/lib/vscode/build/.cachesalt
deleted file mode 100644
index 013244143e8f..000000000000
--- a/lib/vscode/build/.cachesalt
+++ /dev/null
@@ -1 +0,0 @@
-2021-04-07T03:52:18.011Z
diff --git a/lib/vscode/build/.gitattributes b/lib/vscode/build/.gitattributes
deleted file mode 100644
index d2690a8f26ff..000000000000
--- a/lib/vscode/build/.gitattributes
+++ /dev/null
@@ -1,3 +0,0 @@
-* text eol=lf
-*.exe binary
-*.dll binary
diff --git a/lib/vscode/build/.moduleignore b/lib/vscode/build/.moduleignore
deleted file mode 100644
index 98bca26eafe3..000000000000
--- a/lib/vscode/build/.moduleignore
+++ /dev/null
@@ -1,148 +0,0 @@
-# cleanup rules for node modules, .gitignore style
-
-# native node modules
-
-nan/**
-*/node_modules/nan/**
-
-fsevents/binding.gyp
-fsevents/fsevents.cc
-fsevents/build/**
-fsevents/src/**
-fsevents/test/**
-!fsevents/**/*.node
-
-vscode-sqlite3/binding.gyp
-vscode-sqlite3/benchmark/**
-vscode-sqlite3/cloudformation/**
-vscode-sqlite3/deps/**
-vscode-sqlite3/test/**
-vscode-sqlite3/build/**
-vscode-sqlite3/src/**
-!vscode-sqlite3/build/Release/*.node
-
-windows-mutex/binding.gyp
-windows-mutex/build/**
-windows-mutex/src/**
-!windows-mutex/**/*.node
-
-native-keymap/binding.gyp
-native-keymap/build/**
-native-keymap/src/**
-native-keymap/deps/**
-!native-keymap/build/Release/*.node
-
-native-is-elevated/binding.gyp
-native-is-elevated/build/**
-native-is-elevated/src/**
-native-is-elevated/deps/**
-!native-is-elevated/build/Release/*.node
-
-native-watchdog/binding.gyp
-native-watchdog/build/**
-native-watchdog/src/**
-!native-watchdog/build/Release/*.node
-
-spdlog/binding.gyp
-spdlog/build/**
-spdlog/deps/**
-spdlog/src/**
-spdlog/test/**
-spdlog/*.yml
-!spdlog/build/Release/*.node
-
-jschardet/dist/**
-
-windows-foreground-love/binding.gyp
-windows-foreground-love/build/**
-windows-foreground-love/src/**
-!windows-foreground-love/**/*.node
-
-windows-process-tree/binding.gyp
-windows-process-tree/build/**
-windows-process-tree/src/**
-!windows-process-tree/**/*.node
-
-keytar/binding.gyp
-keytar/build/**
-keytar/src/**
-keytar/script/**
-keytar/node_modules/**
-!keytar/**/*.node
-
-node-pty/binding.gyp
-node-pty/build/**
-node-pty/src/**
-node-pty/tools/**
-node-pty/deps/**
-node-pty/scripts/**
-!node-pty/build/Release/*.exe
-!node-pty/build/Release/*.dll
-!node-pty/build/Release/*.node
-
-nsfw/binding.gyp
-nsfw/build/**
-nsfw/src/**
-nsfw/includes/**
-!nsfw/build/Release/*.node
-
-vsda/build/**
-vsda/ci/**
-vsda/src/**
-vsda/.gitignore
-vsda/binding.gyp
-vsda/README.md
-vsda/targets
-!vsda/build/Release/vsda.node
-
-vscode-encrypt/build/**
-vscode-encrypt/src/**
-vscode-encrypt/vendor/**
-vscode-encrypt/.gitignore
-vscode-encrypt/binding.gyp
-vscode-encrypt/README.md
-!vscode-encrypt/build/Release/vscode-encrypt-native.node
-
-vscode-windows-ca-certs/**/*
-!vscode-windows-ca-certs/package.json
-!vscode-windows-ca-certs/**/*.node
-
-node-addon-api/**/*
-
-# other node modules
-
-**/docs/**
-**/example/**
-**/examples/**
-**/test/**
-**/tests/**
-
-**/History.md
-**/CHANGELOG.md
-**/README.md
-**/readme.md
-**/readme.markdown
-
-**/*.ts
-!typescript/**/*.d.ts
-
-jschardet/dist/**
-
-es6-promise/lib/**
-
-vscode-textmate/webpack.config.js
-
-zone.js/dist/**
-!zone.js/dist/zone-node.js
-
-# https://github.com/xtermjs/xterm.js/issues/3137
-xterm/src/**
-xterm/tsconfig.all.json
-
-# https://github.com/xtermjs/xterm.js/issues/3138
-xterm-addon-*/src/**
-xterm-addon-*/fixtures/**
-xterm-addon-*/out/**
-xterm-addon-*/out-test/**
-
-
diff --git a/lib/vscode/build/.webignore b/lib/vscode/build/.webignore
deleted file mode 100644
index 553d445f3f60..000000000000
--- a/lib/vscode/build/.webignore
+++ /dev/null
@@ -1,31 +0,0 @@
-# cleanup rules for web node modules, .gitignore style
-
-**/*.txt
-**/*.json
-**/*.md
-**/*.d.ts
-**/*.js.map
-**/LICENSE
-**/CONTRIBUTORS
-
-**/docs/**
-**/example/**
-**/examples/**
-
-jschardet/index.js
-jschardet/src/**
-jschardet/dist/jschardet.js
-
-vscode-textmate/webpack.config.js
-
-xterm/src/**
-
-xterm-addon-search/src/**
-xterm-addon-search/out/**
-xterm-addon-search/fixtures/**
-
-xterm-addon-unicode11/src/**
-xterm-addon-unicode11/out/**
-
-xterm-addon-webgl/src/**
-xterm-addon-webgl/out/**
diff --git a/lib/vscode/build/azure-pipelines/common/computeNodeModulesCacheKey.js b/lib/vscode/build/azure-pipelines/common/computeNodeModulesCacheKey.js
deleted file mode 100644
index b471d5c84cc4..000000000000
--- a/lib/vscode/build/azure-pipelines/common/computeNodeModulesCacheKey.js
+++ /dev/null
@@ -1,25 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-'use strict';
-Object.defineProperty(exports, "__esModule", { value: true });
-const fs = require("fs");
-const path = require("path");
-const crypto = require("crypto");
-const { dirs } = require('../../npm/dirs');
-const ROOT = path.join(__dirname, '../../../');
-const shasum = crypto.createHash('sha1');
-shasum.update(fs.readFileSync(path.join(ROOT, 'build/.cachesalt')));
-shasum.update(fs.readFileSync(path.join(ROOT, '.yarnrc')));
-shasum.update(fs.readFileSync(path.join(ROOT, 'remote/.yarnrc')));
-// Add `yarn.lock` files
-for (let dir of dirs) {
-    const yarnLockPath = path.join(ROOT, dir, 'yarn.lock');
-    shasum.update(fs.readFileSync(yarnLockPath));
-}
-// Add any other command line arguments
-for (let i = 2; i < process.argv.length; i++) {
-    shasum.update(process.argv[i]);
-}
-process.stdout.write(shasum.digest('hex'));
diff --git a/lib/vscode/build/azure-pipelines/common/computeNodeModulesCacheKey.ts b/lib/vscode/build/azure-pipelines/common/computeNodeModulesCacheKey.ts
deleted file mode 100644
index 638f115a7fbf..000000000000
--- a/lib/vscode/build/azure-pipelines/common/computeNodeModulesCacheKey.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-'use strict';
-
-import * as fs from 'fs';
-import * as path from 'path';
-import * as crypto from 'crypto';
-const { dirs } = require('../../npm/dirs');
-
-const ROOT = path.join(__dirname, '../../../');
-
-const shasum = crypto.createHash('sha1');
-
-shasum.update(fs.readFileSync(path.join(ROOT, 'build/.cachesalt')));
-shasum.update(fs.readFileSync(path.join(ROOT, '.yarnrc')));
-shasum.update(fs.readFileSync(path.join(ROOT, 'remote/.yarnrc')));
-
-// Add `yarn.lock` files
-for (let dir of dirs) {
-	const yarnLockPath = path.join(ROOT, dir, 'yarn.lock');
-	shasum.update(fs.readFileSync(yarnLockPath));
-}
-
-// Add any other command line arguments
-for (let i = 2; i < process.argv.length; i++) {
-	shasum.update(process.argv[i]);
-}
-
-process.stdout.write(shasum.digest('hex'));
diff --git a/lib/vscode/build/azure-pipelines/common/createAsset.js b/lib/vscode/build/azure-pipelines/common/createAsset.js
deleted file mode 100644
index 340c6fd7e5d9..000000000000
--- a/lib/vscode/build/azure-pipelines/common/createAsset.js
+++ /dev/null
@@ -1,197 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-'use strict';
-Object.defineProperty(exports, "__esModule", { value: true });
-const fs = require("fs");
-const url = require("url");
-const crypto = require("crypto");
-const azure = require("azure-storage");
-const mime = require("mime");
-const cosmos_1 = require("@azure/cosmos");
-const retry_1 = require("./retry");
-if (process.argv.length !== 8) {
-    console.error('Usage: node createAsset.js PRODUCT OS ARCH TYPE NAME FILE');
-    process.exit(-1);
-}
-// Contains all of the logic for mapping details to our actual product names in CosmosDB
-function getPlatform(product, os, arch, type) {
-    switch (os) {
-        case 'win32':
-            switch (product) {
-                case 'client':
-                    const asset = arch === 'ia32' ? 'win32' : `win32-${arch}`;
-                    switch (type) {
-                        case 'archive':
-                            return `${asset}-archive`;
-                        case 'setup':
-                            return asset;
-                        case 'user-setup':
-                            return `${asset}-user`;
-                        default:
-                            throw `Unrecognized: ${product} ${os} ${arch} ${type}`;
-                    }
-                case 'server':
-                    if (arch === 'arm64') {
-                        throw `Unrecognized: ${product} ${os} ${arch} ${type}`;
-                    }
-                    return arch === 'ia32' ? 'server-win32' : `server-win32-${arch}`;
-                case 'web':
-                    if (arch === 'arm64') {
-                        throw `Unrecognized: ${product} ${os} ${arch} ${type}`;
-                    }
-                    return arch === 'ia32' ? 'server-win32-web' : `server-win32-${arch}-web`;
-                default:
-                    throw `Unrecognized: ${product} ${os} ${arch} ${type}`;
-            }
-        case 'linux':
-            switch (type) {
-                case 'snap':
-                    return `linux-snap-${arch}`;
-                case 'archive-unsigned':
-                    switch (product) {
-                        case 'client':
-                            return `linux-${arch}`;
-                        case 'server':
-                            return `server-linux-${arch}`;
-                        case 'web':
-                            return arch === 'standalone' ? 'web-standalone' : `server-linux-${arch}-web`;
-                        default:
-                            throw `Unrecognized: ${product} ${os} ${arch} ${type}`;
-                    }
-                case 'deb-package':
-                    return `linux-deb-${arch}`;
-                case 'rpm-package':
-                    return `linux-rpm-${arch}`;
-                default:
-                    throw `Unrecognized: ${product} ${os} ${arch} ${type}`;
-            }
-        case 'darwin':
-            switch (product) {
-                case 'client':
-                    if (arch === 'x64') {
-                        return 'darwin';
-                    }
-                    return `darwin-${arch}`;
-                case 'server':
-                    return 'server-darwin';
-                case 'web':
-                    if (arch !== 'x64') {
-                        throw `What should the platform be?: ${product} ${os} ${arch} ${type}`;
-                    }
-                    return 'server-darwin-web';
-                default:
-                    throw `Unrecognized: ${product} ${os} ${arch} ${type}`;
-            }
-        default:
-            throw `Unrecognized: ${product} ${os} ${arch} ${type}`;
-    }
-}
-// Contains all of the logic for mapping types to our actual types in CosmosDB
-function getRealType(type) {
-    switch (type) {
-        case 'user-setup':
-            return 'setup';
-        case 'deb-package':
-        case 'rpm-package':
-            return 'package';
-        default:
-            return type;
-    }
-}
-function hashStream(hashName, stream) {
-    return new Promise((c, e) => {
-        const shasum = crypto.createHash(hashName);
-        stream
-            .on('data', shasum.update.bind(shasum))
-            .on('error', e)
-            .on('close', () => c(shasum.digest('hex')));
-    });
-}
-async function doesAssetExist(blobService, quality, blobName) {
-    const existsResult = await new Promise((c, e) => blobService.doesBlobExist(quality, blobName, (err, r) => err ? e(err) : c(r)));
-    return existsResult.exists;
-}
-async function uploadBlob(blobService, quality, blobName, filePath, fileName) {
-    const blobOptions = {
-        contentSettings: {
-            contentType: mime.lookup(filePath),
-            contentDisposition: `attachment; filename="${fileName}"`,
-            cacheControl: 'max-age=31536000, public'
-        }
-    };
-    await new Promise((c, e) => blobService.createBlockBlobFromLocalFile(quality, blobName, filePath, blobOptions, err => err ? e(err) : c()));
-}
-function getEnv(name) {
-    const result = process.env[name];
-    if (typeof result === 'undefined') {
-        throw new Error('Missing env: ' + name);
-    }
-    return result;
-}
-async function main() {
-    const [, , product, os, arch, unprocessedType, fileName, filePath] = process.argv;
-    // getPlatform needs the unprocessedType
-    const platform = getPlatform(product, os, arch, unprocessedType);
-    const type = getRealType(unprocessedType);
-    const quality = getEnv('VSCODE_QUALITY');
-    const commit = getEnv('BUILD_SOURCEVERSION');
-    console.log('Creating asset...');
-    const stat = await new Promise((c, e) => fs.stat(filePath, (err, stat) => err ? e(err) : c(stat)));
-    const size = stat.size;
-    console.log('Size:', size);
-    const stream = fs.createReadStream(filePath);
-    const [sha1hash, sha256hash] = await Promise.all([hashStream('sha1', stream), hashStream('sha256', stream)]);
-    console.log('SHA1:', sha1hash);
-    console.log('SHA256:', sha256hash);
-    const blobName = commit + '/' + fileName;
-    const storageAccount = process.env['AZURE_STORAGE_ACCOUNT_2'];
-    const blobService = azure.createBlobService(storageAccount, process.env['AZURE_STORAGE_ACCESS_KEY_2'])
-        .withFilter(new azure.ExponentialRetryPolicyFilter(20));
-    const blobExists = await doesAssetExist(blobService, quality, blobName);
-    if (blobExists) {
-        console.log(`Blob ${quality}, ${blobName} already exists, not publishing again.`);
-        return;
-    }
-    const mooncakeBlobService = azure.createBlobService(storageAccount, process.env['MOONCAKE_STORAGE_ACCESS_KEY'], `${storageAccount}.blob.core.chinacloudapi.cn`)
-        .withFilter(new azure.ExponentialRetryPolicyFilter(20));
-    // mooncake is fussy and far away, this is needed!
-    blobService.defaultClientRequestTimeoutInMs = 10 * 60 * 1000;
-    mooncakeBlobService.defaultClientRequestTimeoutInMs = 10 * 60 * 1000;
-    console.log('Uploading blobs to Azure storage and Mooncake Azure storage...');
-    await retry_1.retry(() => Promise.all([
-        uploadBlob(blobService, quality, blobName, filePath, fileName),
-        uploadBlob(mooncakeBlobService, quality, blobName, filePath, fileName)
-    ]));
-    console.log('Blobs successfully uploaded.');
-    // TODO: Understand if blobName and blobPath are the same and replace blobPath with blobName if so.
-    const assetUrl = `${process.env['AZURE_CDN_URL']}/${quality}/${blobName}`;
-    const blobPath = url.parse(assetUrl).path;
-    const mooncakeUrl = `${process.env['MOONCAKE_CDN_URL']}${blobPath}`;
-    const asset = {
-        platform,
-        type,
-        url: assetUrl,
-        hash: sha1hash,
-        mooncakeUrl,
-        sha256hash,
-        size
-    };
-    // Remove this if we ever need to rollback fast updates for windows
-    if (/win32/.test(platform)) {
-        asset.supportsFastUpdate = true;
-    }
-    console.log('Asset:', JSON.stringify(asset, null, '  '));
-    const client = new cosmos_1.CosmosClient({ endpoint: process.env['AZURE_DOCUMENTDB_ENDPOINT'], key: process.env['AZURE_DOCUMENTDB_MASTERKEY'] });
-    const scripts = client.database('builds').container(quality).scripts;
-    await retry_1.retry(() => scripts.storedProcedure('createAsset').execute('', [commit, asset, true]));
-    console.log(`  Done ✔️`);
-}
-main().then(() => {
-    console.log('Asset successfully created');
-    process.exit(0);
-}, err => {
-    console.error(err);
-    process.exit(1);
-});
diff --git a/lib/vscode/build/azure-pipelines/common/createAsset.ts b/lib/vscode/build/azure-pipelines/common/createAsset.ts
deleted file mode 100644
index 5fe93c566bb1..000000000000
--- a/lib/vscode/build/azure-pipelines/common/createAsset.ts
+++ /dev/null
@@ -1,243 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-'use strict';
-
-import * as fs from 'fs';
-import * as url from 'url';
-import { Readable } from 'stream';
-import * as crypto from 'crypto';
-import * as azure from 'azure-storage';
-import * as mime from 'mime';
-import { CosmosClient } from '@azure/cosmos';
-import { retry } from './retry';
-
-interface Asset {
-	platform: string;
-	type: string;
-	url: string;
-	mooncakeUrl?: string;
-	hash: string;
-	sha256hash: string;
-	size: number;
-	supportsFastUpdate?: boolean;
-}
-
-if (process.argv.length !== 8) {
-	console.error('Usage: node createAsset.js PRODUCT OS ARCH TYPE NAME FILE');
-	process.exit(-1);
-}
-
-// Contains all of the logic for mapping details to our actual product names in CosmosDB
-function getPlatform(product: string, os: string, arch: string, type: string): string {
-	switch (os) {
-		case 'win32':
-			switch (product) {
-				case 'client':
-					const asset = arch === 'ia32' ? 'win32' : `win32-${arch}`;
-					switch (type) {
-						case 'archive':
-							return `${asset}-archive`;
-						case 'setup':
-							return asset;
-						case 'user-setup':
-							return `${asset}-user`;
-						default:
-							throw `Unrecognized: ${product} ${os} ${arch} ${type}`;
-					}
-				case 'server':
-					if (arch === 'arm64') {
-						throw `Unrecognized: ${product} ${os} ${arch} ${type}`;
-					}
-					return arch === 'ia32' ? 'server-win32' : `server-win32-${arch}`;
-				case 'web':
-					if (arch === 'arm64') {
-						throw `Unrecognized: ${product} ${os} ${arch} ${type}`;
-					}
-					return arch === 'ia32' ? 'server-win32-web' : `server-win32-${arch}-web`;
-				default:
-					throw `Unrecognized: ${product} ${os} ${arch} ${type}`;
-			}
-		case 'linux':
-			switch (type) {
-				case 'snap':
-					return `linux-snap-${arch}`;
-				case 'archive-unsigned':
-					switch (product) {
-						case 'client':
-							return `linux-${arch}`;
-						case 'server':
-							return `server-linux-${arch}`;
-						case 'web':
-							return arch === 'standalone' ? 'web-standalone' : `server-linux-${arch}-web`;
-						default:
-							throw `Unrecognized: ${product} ${os} ${arch} ${type}`;
-					}
-				case 'deb-package':
-					return `linux-deb-${arch}`;
-				case 'rpm-package':
-					return `linux-rpm-${arch}`;
-				default:
-					throw `Unrecognized: ${product} ${os} ${arch} ${type}`;
-			}
-		case 'darwin':
-			switch (product) {
-				case 'client':
-					if (arch === 'x64') {
-						return 'darwin';
-					}
-					return `darwin-${arch}`;
-				case 'server':
-					return 'server-darwin';
-				case 'web':
-					if (arch !== 'x64') {
-						throw `What should the platform be?: ${product} ${os} ${arch} ${type}`;
-					}
-					return 'server-darwin-web';
-				default:
-					throw `Unrecognized: ${product} ${os} ${arch} ${type}`;
-			}
-		default:
-			throw `Unrecognized: ${product} ${os} ${arch} ${type}`;
-	}
-}
-
-// Contains all of the logic for mapping types to our actual types in CosmosDB
-function getRealType(type: string) {
-	switch (type) {
-		case 'user-setup':
-			return 'setup';
-		case 'deb-package':
-		case 'rpm-package':
-			return 'package';
-		default:
-			return type;
-	}
-}
-
-function hashStream(hashName: string, stream: Readable): Promise<string> {
-	return new Promise<string>((c, e) => {
-		const shasum = crypto.createHash(hashName);
-
-		stream
-			.on('data', shasum.update.bind(shasum))
-			.on('error', e)
-			.on('close', () => c(shasum.digest('hex')));
-	});
-}
-
-async function doesAssetExist(blobService: azure.BlobService, quality: string, blobName: string): Promise<boolean | undefined> {
-	const existsResult = await new Promise<azure.BlobService.BlobResult>((c, e) => blobService.doesBlobExist(quality, blobName, (err, r) => err ? e(err) : c(r)));
-	return existsResult.exists;
-}
-
-async function uploadBlob(blobService: azure.BlobService, quality: string, blobName: string, filePath: string, fileName: string): Promise<void> {
-	const blobOptions: azure.BlobService.CreateBlockBlobRequestOptions = {
-		contentSettings: {
-			contentType: mime.lookup(filePath),
-			contentDisposition: `attachment; filename="${fileName}"`,
-			cacheControl: 'max-age=31536000, public'
-		}
-	};
-
-	await new Promise<void>((c, e) => blobService.createBlockBlobFromLocalFile(quality, blobName, filePath, blobOptions, err => err ? e(err) : c()));
-}
-
-function getEnv(name: string): string {
-	const result = process.env[name];
-
-	if (typeof result === 'undefined') {
-		throw new Error('Missing env: ' + name);
-	}
-
-	return result;
-}
-
-async function main(): Promise<void> {
-	const [, , product, os, arch, unprocessedType, fileName, filePath] = process.argv;
-	// getPlatform needs the unprocessedType
-	const platform = getPlatform(product, os, arch, unprocessedType);
-	const type = getRealType(unprocessedType);
-	const quality = getEnv('VSCODE_QUALITY');
-	const commit = getEnv('BUILD_SOURCEVERSION');
-
-	console.log('Creating asset...');
-
-	const stat = await new Promise<fs.Stats>((c, e) => fs.stat(filePath, (err, stat) => err ? e(err) : c(stat)));
-	const size = stat.size;
-
-	console.log('Size:', size);
-
-	const stream = fs.createReadStream(filePath);
-	const [sha1hash, sha256hash] = await Promise.all([hashStream('sha1', stream), hashStream('sha256', stream)]);
-
-	console.log('SHA1:', sha1hash);
-	console.log('SHA256:', sha256hash);
-
-	const blobName = commit + '/' + fileName;
-	const storageAccount = process.env['AZURE_STORAGE_ACCOUNT_2']!;
-
-	const blobService = azure.createBlobService(storageAccount, process.env['AZURE_STORAGE_ACCESS_KEY_2']!)
-		.withFilter(new azure.ExponentialRetryPolicyFilter(20));
-
-	const blobExists = await doesAssetExist(blobService, quality, blobName);
-
-	if (blobExists) {
-		console.log(`Blob ${quality}, ${blobName} already exists, not publishing again.`);
-		return;
-	}
-
-	const mooncakeBlobService = azure.createBlobService(storageAccount, process.env['MOONCAKE_STORAGE_ACCESS_KEY']!, `${storageAccount}.blob.core.chinacloudapi.cn`)
-		.withFilter(new azure.ExponentialRetryPolicyFilter(20));
-
-	// mooncake is fussy and far away, this is needed!
-	blobService.defaultClientRequestTimeoutInMs = 10 * 60 * 1000;
-	mooncakeBlobService.defaultClientRequestTimeoutInMs = 10 * 60 * 1000;
-
-	console.log('Uploading blobs to Azure storage and Mooncake Azure storage...');
-
-	await retry(() => Promise.all([
-		uploadBlob(blobService, quality, blobName, filePath, fileName),
-		uploadBlob(mooncakeBlobService, quality, blobName, filePath, fileName)
-	]));
-
-	console.log('Blobs successfully uploaded.');
-
-	// TODO: Understand if blobName and blobPath are the same and replace blobPath with blobName if so.
-	const assetUrl = `${process.env['AZURE_CDN_URL']}/${quality}/${blobName}`;
-	const blobPath = url.parse(assetUrl).path;
-	const mooncakeUrl = `${process.env['MOONCAKE_CDN_URL']}${blobPath}`;
-
-	const asset: Asset = {
-		platform,
-		type,
-		url: assetUrl,
-		hash: sha1hash,
-		mooncakeUrl,
-		sha256hash,
-		size
-	};
-
-	// Remove this if we ever need to rollback fast updates for windows
-	if (/win32/.test(platform)) {
-		asset.supportsFastUpdate = true;
-	}
-
-	console.log('Asset:', JSON.stringify(asset, null, '  '));
-
-	const client = new CosmosClient({ endpoint: process.env['AZURE_DOCUMENTDB_ENDPOINT']!, key: process.env['AZURE_DOCUMENTDB_MASTERKEY'] });
-	const scripts = client.database('builds').container(quality).scripts;
-	await retry(() => scripts.storedProcedure('createAsset').execute('', [commit, asset, true]));
-
-	console.log(`  Done ✔️`);
-}
-
-main().then(() => {
-	console.log('Asset successfully created');
-	process.exit(0);
-}, err => {
-	console.error(err);
-	process.exit(1);
-});
diff --git a/lib/vscode/build/azure-pipelines/common/createBuild.js b/lib/vscode/build/azure-pipelines/common/createBuild.js
deleted file mode 100644
index afa150b910e6..000000000000
--- a/lib/vscode/build/azure-pipelines/common/createBuild.js
+++ /dev/null
@@ -1,51 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-'use strict';
-Object.defineProperty(exports, "__esModule", { value: true });
-const cosmos_1 = require("@azure/cosmos");
-const retry_1 = require("./retry");
-if (process.argv.length !== 3) {
-    console.error('Usage: node createBuild.js VERSION');
-    process.exit(-1);
-}
-function getEnv(name) {
-    const result = process.env[name];
-    if (typeof result === 'undefined') {
-        throw new Error('Missing env: ' + name);
-    }
-    return result;
-}
-async function main() {
-    const [, , _version] = process.argv;
-    const quality = getEnv('VSCODE_QUALITY');
-    const commit = getEnv('BUILD_SOURCEVERSION');
-    const queuedBy = getEnv('BUILD_QUEUEDBY');
-    const sourceBranch = getEnv('BUILD_SOURCEBRANCH');
-    const version = _version + (quality === 'stable' ? '' : `-${quality}`);
-    console.log('Creating build...');
-    console.log('Quality:', quality);
-    console.log('Version:', version);
-    console.log('Commit:', commit);
-    const build = {
-        id: commit,
-        timestamp: (new Date()).getTime(),
-        version,
-        isReleased: false,
-        sourceBranch,
-        queuedBy,
-        assets: [],
-        updates: {}
-    };
-    const client = new cosmos_1.CosmosClient({ endpoint: process.env['AZURE_DOCUMENTDB_ENDPOINT'], key: process.env['AZURE_DOCUMENTDB_MASTERKEY'] });
-    const scripts = client.database('builds').container(quality).scripts;
-    await retry_1.retry(() => scripts.storedProcedure('createBuild').execute('', [Object.assign(Object.assign({}, build), { _partitionKey: '' })]));
-}
-main().then(() => {
-    console.log('Build successfully created');
-    process.exit(0);
-}, err => {
-    console.error(err);
-    process.exit(1);
-});
diff --git a/lib/vscode/build/azure-pipelines/common/createBuild.ts b/lib/vscode/build/azure-pipelines/common/createBuild.ts
deleted file mode 100644
index e314d7c09880..000000000000
--- a/lib/vscode/build/azure-pipelines/common/createBuild.ts
+++ /dev/null
@@ -1,61 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-'use strict';
-
-import { CosmosClient } from '@azure/cosmos';
-import { retry } from './retry';
-
-if (process.argv.length !== 3) {
-	console.error('Usage: node createBuild.js VERSION');
-	process.exit(-1);
-}
-
-function getEnv(name: string): string {
-	const result = process.env[name];
-
-	if (typeof result === 'undefined') {
-		throw new Error('Missing env: ' + name);
-	}
-
-	return result;
-}
-
-async function main(): Promise<void> {
-	const [, , _version] = process.argv;
-	const quality = getEnv('VSCODE_QUALITY');
-	const commit = getEnv('BUILD_SOURCEVERSION');
-	const queuedBy = getEnv('BUILD_QUEUEDBY');
-	const sourceBranch = getEnv('BUILD_SOURCEBRANCH');
-	const version = _version + (quality === 'stable' ? '' : `-${quality}`);
-
-	console.log('Creating build...');
-	console.log('Quality:', quality);
-	console.log('Version:', version);
-	console.log('Commit:', commit);
-
-	const build = {
-		id: commit,
-		timestamp: (new Date()).getTime(),
-		version,
-		isReleased: false,
-		sourceBranch,
-		queuedBy,
-		assets: [],
-		updates: {}
-	};
-
-	const client = new CosmosClient({ endpoint: process.env['AZURE_DOCUMENTDB_ENDPOINT']!, key: process.env['AZURE_DOCUMENTDB_MASTERKEY'] });
-	const scripts = client.database('builds').container(quality).scripts;
-	await retry(() => scripts.storedProcedure('createBuild').execute('', [{ ...build, _partitionKey: '' }]));
-}
-
-main().then(() => {
-	console.log('Build successfully created');
-	process.exit(0);
-}, err => {
-	console.error(err);
-	process.exit(1);
-});
diff --git a/lib/vscode/build/azure-pipelines/common/extract-telemetry.sh b/lib/vscode/build/azure-pipelines/common/extract-telemetry.sh
deleted file mode 100755
index 9cebe22bfd18..000000000000
--- a/lib/vscode/build/azure-pipelines/common/extract-telemetry.sh
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/usr/bin/env bash
-set -e
-
-cd $BUILD_STAGINGDIRECTORY
-mkdir extraction
-cd extraction
-git clone --depth 1 https://github.com/microsoft/vscode-extension-telemetry.git
-git clone --depth 1 https://github.com/microsoft/vscode-chrome-debug-core.git
-git clone --depth 1 https://github.com/microsoft/vscode-node-debug2.git
-git clone --depth 1 https://github.com/microsoft/vscode-node-debug.git
-git clone --depth 1 https://github.com/microsoft/vscode-html-languageservice.git
-git clone --depth 1 https://github.com/microsoft/vscode-json-languageservice.git
-node $BUILD_SOURCESDIRECTORY/node_modules/.bin/vscode-telemetry-extractor --sourceDir $BUILD_SOURCESDIRECTORY --excludedDir $BUILD_SOURCESDIRECTORY/extensions --outputDir . --applyEndpoints
-node $BUILD_SOURCESDIRECTORY/node_modules/.bin/vscode-telemetry-extractor --config $BUILD_SOURCESDIRECTORY/build/azure-pipelines/common/telemetry-config.json -o .
-mkdir -p $BUILD_SOURCESDIRECTORY/.build/telemetry
-mv declarations-resolved.json $BUILD_SOURCESDIRECTORY/.build/telemetry/telemetry-core.json
-mv config-resolved.json $BUILD_SOURCESDIRECTORY/.build/telemetry/telemetry-extensions.json
-cd ..
-rm -rf extraction
diff --git a/lib/vscode/build/azure-pipelines/common/installPlaywright.js b/lib/vscode/build/azure-pipelines/common/installPlaywright.js
deleted file mode 100644
index 8321e71aab02..000000000000
--- a/lib/vscode/build/azure-pipelines/common/installPlaywright.js
+++ /dev/null
@@ -1,14 +0,0 @@
-"use strict";
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-Object.defineProperty(exports, "__esModule", { value: true });
-const path = require("path");
-const retry_1 = require("./retry");
-const { installBrowsersWithProgressBar } = require('playwright/lib/install/installer');
-const playwrightPath = path.dirname(require.resolve('playwright'));
-async function install() {
-    await retry_1.retry(() => installBrowsersWithProgressBar(playwrightPath));
-}
-install();
diff --git a/lib/vscode/build/azure-pipelines/common/installPlaywright.ts b/lib/vscode/build/azure-pipelines/common/installPlaywright.ts
deleted file mode 100644
index f0d821d44b8f..000000000000
--- a/lib/vscode/build/azure-pipelines/common/installPlaywright.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-import * as path from 'path';
-import { retry } from './retry';
-const { installBrowsersWithProgressBar } = require('playwright/lib/install/installer');
-const playwrightPath = path.dirname(require.resolve('playwright'));
-
-async function install() {
-	await retry(() => installBrowsersWithProgressBar(playwrightPath));
-}
-
-install();
diff --git a/lib/vscode/build/azure-pipelines/common/listNodeModules.js b/lib/vscode/build/azure-pipelines/common/listNodeModules.js
deleted file mode 100644
index 540569c79b55..000000000000
--- a/lib/vscode/build/azure-pipelines/common/listNodeModules.js
+++ /dev/null
@@ -1,40 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-'use strict';
-Object.defineProperty(exports, "__esModule", { value: true });
-const fs = require("fs");
-const path = require("path");
-if (process.argv.length !== 3) {
-    console.error('Usage: node listNodeModules.js OUTPUT_FILE');
-    process.exit(-1);
-}
-const ROOT = path.join(__dirname, '../../../');
-function findNodeModulesFiles(location, inNodeModules, result) {
-    const entries = fs.readdirSync(path.join(ROOT, location));
-    for (const entry of entries) {
-        const entryPath = `${location}/${entry}`;
-        if (/(^\/out)|(^\/src$)|(^\/.git$)|(^\/.build$)/.test(entryPath)) {
-            continue;
-        }
-        let stat;
-        try {
-            stat = fs.statSync(path.join(ROOT, entryPath));
-        }
-        catch (err) {
-            continue;
-        }
-        if (stat.isDirectory()) {
-            findNodeModulesFiles(entryPath, inNodeModules || (entry === 'node_modules'), result);
-        }
-        else {
-            if (inNodeModules) {
-                result.push(entryPath.substr(1));
-            }
-        }
-    }
-}
-const result = [];
-findNodeModulesFiles('', false, result);
-fs.writeFileSync(process.argv[2], result.join('\n') + '\n');
diff --git a/lib/vscode/build/azure-pipelines/common/listNodeModules.ts b/lib/vscode/build/azure-pipelines/common/listNodeModules.ts
deleted file mode 100644
index 2ed6294477a9..000000000000
--- a/lib/vscode/build/azure-pipelines/common/listNodeModules.ts
+++ /dev/null
@@ -1,46 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-'use strict';
-
-import * as fs from 'fs';
-import * as path from 'path';
-
-if (process.argv.length !== 3) {
-	console.error('Usage: node listNodeModules.js OUTPUT_FILE');
-	process.exit(-1);
-}
-
-const ROOT = path.join(__dirname, '../../../');
-
-function findNodeModulesFiles(location: string, inNodeModules: boolean, result: string[]) {
-	const entries = fs.readdirSync(path.join(ROOT, location));
-	for (const entry of entries) {
-		const entryPath = `${location}/${entry}`;
-
-		if (/(^\/out)|(^\/src$)|(^\/.git$)|(^\/.build$)/.test(entryPath)) {
-			continue;
-		}
-
-		let stat: fs.Stats;
-		try {
-			stat = fs.statSync(path.join(ROOT, entryPath));
-		} catch (err) {
-			continue;
-		}
-
-		if (stat.isDirectory()) {
-			findNodeModulesFiles(entryPath, inNodeModules || (entry === 'node_modules'), result);
-		} else {
-			if (inNodeModules) {
-				result.push(entryPath.substr(1));
-			}
-		}
-	}
-}
-
-const result: string[] = [];
-findNodeModulesFiles('', false, result);
-fs.writeFileSync(process.argv[2], result.join('\n') + '\n');
diff --git a/lib/vscode/build/azure-pipelines/common/publish-webview.js b/lib/vscode/build/azure-pipelines/common/publish-webview.js
deleted file mode 100644
index 278046241264..000000000000
--- a/lib/vscode/build/azure-pipelines/common/publish-webview.js
+++ /dev/null
@@ -1,71 +0,0 @@
-"use strict";
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-Object.defineProperty(exports, "__esModule", { value: true });
-const azure = require("azure-storage");
-const mime = require("mime");
-const minimist = require("minimist");
-const path_1 = require("path");
-const fileNames = [
-    'fake.html',
-    'host.js',
-    'index.html',
-    'main.js',
-    'service-worker.js'
-];
-async function assertContainer(blobService, container) {
-    await new Promise((c, e) => blobService.createContainerIfNotExists(container, { publicAccessLevel: 'blob' }, err => err ? e(err) : c()));
-}
-async function doesBlobExist(blobService, container, blobName) {
-    const existsResult = await new Promise((c, e) => blobService.doesBlobExist(container, blobName, (err, r) => err ? e(err) : c(r)));
-    return existsResult.exists;
-}
-async function uploadBlob(blobService, container, blobName, file) {
-    const blobOptions = {
-        contentSettings: {
-            contentType: mime.lookup(file),
-            cacheControl: 'max-age=31536000, public'
-        }
-    };
-    await new Promise((c, e) => blobService.createBlockBlobFromLocalFile(container, blobName, file, blobOptions, err => err ? e(err) : c()));
-}
-async function publish(commit, files) {
-    console.log('Publishing...');
-    console.log('Commit:', commit);
-    const storageAccount = process.env['AZURE_WEBVIEW_STORAGE_ACCOUNT'];
-    const blobService = azure.createBlobService(storageAccount, process.env['AZURE_WEBVIEW_STORAGE_ACCESS_KEY'])
-        .withFilter(new azure.ExponentialRetryPolicyFilter(20));
-    await assertContainer(blobService, commit);
-    for (const file of files) {
-        const blobName = path_1.basename(file);
-        const blobExists = await doesBlobExist(blobService, commit, blobName);
-        if (blobExists) {
-            console.log(`Blob ${commit}, ${blobName} already exists, not publishing again.`);
-            continue;
-        }
-        console.log('Uploading blob to Azure storage...');
-        await uploadBlob(blobService, commit, blobName, file);
-    }
-    console.log('Blobs successfully uploaded.');
-}
-function main() {
-    const commit = process.env['BUILD_SOURCEVERSION'];
-    if (!commit) {
-        console.warn('Skipping publish due to missing BUILD_SOURCEVERSION');
-        return;
-    }
-    const opts = minimist(process.argv.slice(2));
-    const [directory] = opts._;
-    const files = fileNames.map(fileName => path_1.join(directory, fileName));
-    publish(commit, files).catch(err => {
-        console.error(err);
-        process.exit(1);
-    });
-}
-if (process.argv.length < 3) {
-    console.error('Usage: node publish.js <directory>');
-    process.exit(-1);
-}
-main();
diff --git a/lib/vscode/build/azure-pipelines/common/publish-webview.sh b/lib/vscode/build/azure-pipelines/common/publish-webview.sh
deleted file mode 100755
index 77e222258fea..000000000000
--- a/lib/vscode/build/azure-pipelines/common/publish-webview.sh
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/usr/bin/env bash
-set -e
-REPO="$(pwd)"
-
-# Publish webview contents
-PACKAGEJSON="$REPO/package.json"
-VERSION=$(node -p "require(\"$PACKAGEJSON\").version")
-
-node build/azure-pipelines/common/publish-webview.js "$REPO/src/vs/workbench/contrib/webview/browser/pre/"
diff --git a/lib/vscode/build/azure-pipelines/common/publish-webview.ts b/lib/vscode/build/azure-pipelines/common/publish-webview.ts
deleted file mode 100644
index b1947ebc024f..000000000000
--- a/lib/vscode/build/azure-pipelines/common/publish-webview.ts
+++ /dev/null
@@ -1,87 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-import * as azure from 'azure-storage';
-import * as mime from 'mime';
-import * as minimist from 'minimist';
-import { basename, join } from 'path';
-
-const fileNames = [
-	'fake.html',
-	'host.js',
-	'index.html',
-	'main.js',
-	'service-worker.js'
-];
-
-async function assertContainer(blobService: azure.BlobService, container: string): Promise<void> {
-	await new Promise<void>((c, e) => blobService.createContainerIfNotExists(container, { publicAccessLevel: 'blob' }, err => err ? e(err) : c()));
-}
-
-async function doesBlobExist(blobService: azure.BlobService, container: string, blobName: string): Promise<boolean | undefined> {
-	const existsResult = await new Promise<azure.BlobService.BlobResult>((c, e) => blobService.doesBlobExist(container, blobName, (err, r) => err ? e(err) : c(r)));
-	return existsResult.exists;
-}
-
-async function uploadBlob(blobService: azure.BlobService, container: string, blobName: string, file: string): Promise<void> {
-	const blobOptions: azure.BlobService.CreateBlockBlobRequestOptions = {
-		contentSettings: {
-			contentType: mime.lookup(file),
-			cacheControl: 'max-age=31536000, public'
-		}
-	};
-
-	await new Promise<void>((c, e) => blobService.createBlockBlobFromLocalFile(container, blobName, file, blobOptions, err => err ? e(err) : c()));
-}
-
-async function publish(commit: string, files: readonly string[]): Promise<void> {
-
-	console.log('Publishing...');
-	console.log('Commit:', commit);
-	const storageAccount = process.env['AZURE_WEBVIEW_STORAGE_ACCOUNT']!;
-
-	const blobService = azure.createBlobService(storageAccount, process.env['AZURE_WEBVIEW_STORAGE_ACCESS_KEY']!)
-		.withFilter(new azure.ExponentialRetryPolicyFilter(20));
-
-	await assertContainer(blobService, commit);
-
-	for (const file of files) {
-		const blobName = basename(file);
-		const blobExists = await doesBlobExist(blobService, commit, blobName);
-		if (blobExists) {
-			console.log(`Blob ${commit}, ${blobName} already exists, not publishing again.`);
-			continue;
-		}
-		console.log('Uploading blob to Azure storage...');
-		await uploadBlob(blobService, commit, blobName, file);
-	}
-
-	console.log('Blobs successfully uploaded.');
-}
-
-function main(): void {
-	const commit = process.env['BUILD_SOURCEVERSION'];
-
-	if (!commit) {
-		console.warn('Skipping publish due to missing BUILD_SOURCEVERSION');
-		return;
-	}
-
-	const opts = minimist(process.argv.slice(2));
-	const [directory] = opts._;
-
-	const files = fileNames.map(fileName => join(directory, fileName));
-
-	publish(commit, files).catch(err => {
-		console.error(err);
-		process.exit(1);
-	});
-}
-
-if (process.argv.length < 3) {
-	console.error('Usage: node publish.js <directory>');
-	process.exit(-1);
-}
-main();
diff --git a/lib/vscode/build/azure-pipelines/common/releaseBuild.js b/lib/vscode/build/azure-pipelines/common/releaseBuild.js
deleted file mode 100644
index c2438ca9e9d2..000000000000
--- a/lib/vscode/build/azure-pipelines/common/releaseBuild.js
+++ /dev/null
@@ -1,50 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-'use strict';
-Object.defineProperty(exports, "__esModule", { value: true });
-const cosmos_1 = require("@azure/cosmos");
-const retry_1 = require("./retry");
-function getEnv(name) {
-    const result = process.env[name];
-    if (typeof result === 'undefined') {
-        throw new Error('Missing env: ' + name);
-    }
-    return result;
-}
-function createDefaultConfig(quality) {
-    return {
-        id: quality,
-        frozen: false
-    };
-}
-async function getConfig(client, quality) {
-    const query = `SELECT TOP 1 * FROM c WHERE c.id = "${quality}"`;
-    const res = await client.database('builds').container('config').items.query(query).fetchAll();
-    if (res.resources.length === 0) {
-        return createDefaultConfig(quality);
-    }
-    return res.resources[0];
-}
-async function main() {
-    const commit = getEnv('BUILD_SOURCEVERSION');
-    const quality = getEnv('VSCODE_QUALITY');
-    const client = new cosmos_1.CosmosClient({ endpoint: process.env['AZURE_DOCUMENTDB_ENDPOINT'], key: process.env['AZURE_DOCUMENTDB_MASTERKEY'] });
-    const config = await getConfig(client, quality);
-    console.log('Quality config:', config);
-    if (config.frozen) {
-        console.log(`Skipping release because quality ${quality} is frozen.`);
-        return;
-    }
-    console.log(`Releasing build ${commit}...`);
-    const scripts = client.database('builds').container(quality).scripts;
-    await retry_1.retry(() => scripts.storedProcedure('releaseBuild').execute('', [commit]));
-}
-main().then(() => {
-    console.log('Build successfully released');
-    process.exit(0);
-}, err => {
-    console.error(err);
-    process.exit(1);
-});
diff --git a/lib/vscode/build/azure-pipelines/common/releaseBuild.ts b/lib/vscode/build/azure-pipelines/common/releaseBuild.ts
deleted file mode 100644
index d42b3f1a0781..000000000000
--- a/lib/vscode/build/azure-pipelines/common/releaseBuild.ts
+++ /dev/null
@@ -1,71 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-'use strict';
-
-import { CosmosClient } from '@azure/cosmos';
-import { retry } from './retry';
-
-function getEnv(name: string): string {
-	const result = process.env[name];
-
-	if (typeof result === 'undefined') {
-		throw new Error('Missing env: ' + name);
-	}
-
-	return result;
-}
-
-interface Config {
-	id: string;
-	frozen: boolean;
-}
-
-function createDefaultConfig(quality: string): Config {
-	return {
-		id: quality,
-		frozen: false
-	};
-}
-
-async function getConfig(client: CosmosClient, quality: string): Promise<Config> {
-	const query = `SELECT TOP 1 * FROM c WHERE c.id = "${quality}"`;
-
-	const res = await client.database('builds').container('config').items.query(query).fetchAll();
-
-	if (res.resources.length === 0) {
-		return createDefaultConfig(quality);
-	}
-
-	return res.resources[0] as Config;
-}
-
-async function main(): Promise<void> {
-	const commit = getEnv('BUILD_SOURCEVERSION');
-	const quality = getEnv('VSCODE_QUALITY');
-
-	const client = new CosmosClient({ endpoint: process.env['AZURE_DOCUMENTDB_ENDPOINT']!, key: process.env['AZURE_DOCUMENTDB_MASTERKEY'] });
-	const config = await getConfig(client, quality);
-
-	console.log('Quality config:', config);
-
-	if (config.frozen) {
-		console.log(`Skipping release because quality ${quality} is frozen.`);
-		return;
-	}
-
-	console.log(`Releasing build ${commit}...`);
-
-	const scripts = client.database('builds').container(quality).scripts;
-	await retry(() => scripts.storedProcedure('releaseBuild').execute('', [commit]));
-}
-
-main().then(() => {
-	console.log('Build successfully released');
-	process.exit(0);
-}, err => {
-	console.error(err);
-	process.exit(1);
-});
diff --git a/lib/vscode/build/azure-pipelines/common/retry.js b/lib/vscode/build/azure-pipelines/common/retry.js
deleted file mode 100644
index 41136b52b932..000000000000
--- a/lib/vscode/build/azure-pipelines/common/retry.js
+++ /dev/null
@@ -1,25 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-'use strict';
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.retry = void 0;
-async function retry(fn) {
-    for (let run = 1; run <= 10; run++) {
-        try {
-            return await fn();
-        }
-        catch (err) {
-            if (!/ECONNRESET/.test(err.message)) {
-                throw err;
-            }
-            const millis = (Math.random() * 200) + (50 * Math.pow(1.5, run));
-            console.log(`Failed with ECONNRESET, retrying in ${millis}ms...`);
-            // maximum delay is 10th retry: ~3 seconds
-            await new Promise(c => setTimeout(c, millis));
-        }
-    }
-    throw new Error('Retried too many times');
-}
-exports.retry = retry;
diff --git a/lib/vscode/build/azure-pipelines/common/retry.ts b/lib/vscode/build/azure-pipelines/common/retry.ts
deleted file mode 100644
index 1737676590df..000000000000
--- a/lib/vscode/build/azure-pipelines/common/retry.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-'use strict';
-
-export async function retry<T>(fn: () => Promise<T>): Promise<T> {
-	for (let run = 1; run <= 10; run++) {
-		try {
-			return await fn();
-		} catch (err) {
-			if (!/ECONNRESET/.test(err.message)) {
-				throw err;
-			}
-
-			const millis = (Math.random() * 200) + (50 * Math.pow(1.5, run));
-			console.log(`Failed with ECONNRESET, retrying in ${millis}ms...`);
-
-			// maximum delay is 10th retry: ~3 seconds
-			await new Promise(c => setTimeout(c, millis));
-		}
-	}
-
-	throw new Error('Retried too many times');
-}
diff --git a/lib/vscode/build/azure-pipelines/common/telemetry-config.json b/lib/vscode/build/azure-pipelines/common/telemetry-config.json
deleted file mode 100644
index fcba1e042ba0..000000000000
--- a/lib/vscode/build/azure-pipelines/common/telemetry-config.json
+++ /dev/null
@@ -1,72 +0,0 @@
-[
-	{
-		"eventPrefix": "typescript-language-features/",
-		"sourceDirs": [
-			"../../s/extensions/typescript-language-features"
-		],
-		"excludedDirs": [],
-		"applyEndpoints": true
-	},
-	{
-		"eventPrefix": "git/",
-		"sourceDirs": [
-			"../../s/extensions/git"
-		],
-		"excludedDirs": [],
-		"applyEndpoints": true
-	},
-	{
-		"eventPrefix": "extension-telemetry/",
-		"sourceDirs": [
-			"vscode-extension-telemetry"
-		],
-		"excludedDirs": [],
-		"applyEndpoints": true
-	},
-	{
-		"eventPrefix": "vscode-markdown/",
-		"sourceDirs": [
-			"../../s/extensions/markdown-language-features"
-		],
-		"excludedDirs": [],
-		"applyEndpoints": true
-	},
-	{
-		"eventPrefix": "html-language-features/",
-		"sourceDirs": [
-			"../../s/extensions/html-language-features",
-			"vscode-html-languageservice"
-		],
-		"excludedDirs": [],
-		"applyEndpoints": true
-	},
-	{
-		"eventPrefix": "json-language-features/",
-		"sourceDirs": [
-			"../../s/extensions/json-language-features",
-			"vscode-json-languageservice"
-		],
-		"excludedDirs": [],
-		"applyEndpoints": true
-	},
-	{
-		"eventPrefix": "ms-vscode.node2/",
-		"sourceDirs": [
-			"vscode-chrome-debug-core",
-			"vscode-node-debug2"
-		],
-		"excludedDirs": [],
-		"applyEndpoints": true,
-		"patchDebugEvents": true
-	},
-	{
-		"eventPrefix": "ms-vscode.node/",
-		"sourceDirs": [
-			"vscode-chrome-debug-core",
-			"vscode-node-debug"
-		],
-		"excludedDirs": [],
-		"applyEndpoints": true,
-		"patchDebugEvents": true
-	}
-]
\ No newline at end of file
diff --git a/lib/vscode/build/azure-pipelines/darwin/app-entitlements.plist b/lib/vscode/build/azure-pipelines/darwin/app-entitlements.plist
deleted file mode 100644
index b43b4b283a1a..000000000000
--- a/lib/vscode/build/azure-pipelines/darwin/app-entitlements.plist
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-    <key>com.apple.security.cs.allow-jit</key>
-    <true/>
-    <key>com.apple.security.cs.allow-unsigned-executable-memory</key>
-    <true/>
-    <key>com.apple.security.cs.allow-dyld-environment-variables</key>
-    <true/>
-    <key>com.apple.security.device.audio-input</key>
-    <true/>
-    <key>com.apple.security.device.camera</key>
-    <true/>
-    <key>com.apple.security.automation.apple-events</key>
-    <true/>
-</dict>
-</plist>
diff --git a/lib/vscode/build/azure-pipelines/darwin/helper-gpu-entitlements.plist b/lib/vscode/build/azure-pipelines/darwin/helper-gpu-entitlements.plist
deleted file mode 100644
index 4efe1ce508f8..000000000000
--- a/lib/vscode/build/azure-pipelines/darwin/helper-gpu-entitlements.plist
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-    <key>com.apple.security.cs.allow-jit</key>
-    <true/>
-</dict>
-</plist>
diff --git a/lib/vscode/build/azure-pipelines/darwin/helper-renderer-entitlements.plist b/lib/vscode/build/azure-pipelines/darwin/helper-renderer-entitlements.plist
deleted file mode 100644
index be8b7163da7f..000000000000
--- a/lib/vscode/build/azure-pipelines/darwin/helper-renderer-entitlements.plist
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-    <key>com.apple.security.cs.allow-jit</key>
-    <true/>
-    <key>com.apple.security.cs.allow-unsigned-executable-memory</key>
-    <true/>
-    <key>com.apple.security.cs.disable-library-validation</key>
-    <true/>
-    <key>com.apple.security.cs.allow-dyld-environment-variables</key>
-    <true/>
-</dict>
-</plist>
diff --git a/lib/vscode/build/azure-pipelines/darwin/product-build-darwin-sign.yml b/lib/vscode/build/azure-pipelines/darwin/product-build-darwin-sign.yml
deleted file mode 100644
index 49f74b55c933..000000000000
--- a/lib/vscode/build/azure-pipelines/darwin/product-build-darwin-sign.yml
+++ /dev/null
@@ -1,125 +0,0 @@
-steps:
-  - task: NodeTool@0
-    inputs:
-      versionSpec: "14.x"
-
-  - task: AzureKeyVault@1
-    displayName: "Azure Key Vault: Get Secrets"
-    inputs:
-      azureSubscription: "vscode-builds-subscription"
-      KeyVaultName: vscode
-
-  - script: |
-      set -e
-      cat << EOF > ~/.netrc
-      machine github.com
-      login vscode
-      password $(github-distro-mixin-password)
-      EOF
-
-      git config user.email "vscode@microsoft.com"
-      git config user.name "VSCode"
-    displayName: Prepare tooling
-
-  - script: |
-      set -e
-      git pull --no-rebase https://github.com/$(VSCODE_MIXIN_REPO).git $(node -p "require('./package.json').distro")
-    displayName: Merge distro
-
-  - script: |
-      pushd build \
-      && yarn \
-      && npm install -g typescript \
-      && tsc azure-pipelines/common/createAsset.ts \
-      && popd
-    displayName: Restore modules for just build folder and compile it
-
-  - download: current
-    artifact: unsigned_vscode_client_darwin_$(VSCODE_ARCH)_archive
-    displayName: Download $(VSCODE_ARCH) artifact
-
-  - script: |
-      set -e
-      unzip $(Pipeline.Workspace)/unsigned_vscode_client_darwin_$(VSCODE_ARCH)_archive/VSCode-darwin-$(VSCODE_ARCH).zip -d $(agent.builddirectory)/VSCode-darwin-$(VSCODE_ARCH)
-      mv $(Pipeline.Workspace)/unsigned_vscode_client_darwin_$(VSCODE_ARCH)_archive/VSCode-darwin-$(VSCODE_ARCH).zip $(agent.builddirectory)/VSCode-darwin-$(VSCODE_ARCH).zip
-    displayName: Unzip & move
-
-  - task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@1
-    inputs:
-      ConnectedServiceName: "ESRP CodeSign"
-      FolderPath: "$(agent.builddirectory)"
-      Pattern: "VSCode-darwin-$(VSCODE_ARCH).zip"
-      signConfigType: inlineSignParams
-      inlineOperation: |
-        [
-          {
-            "keyCode": "CP-401337-Apple",
-            "operationSetCode": "MacAppDeveloperSign",
-            "parameters": [
-              {
-                "parameterName": "Hardening",
-                "parameterValue": "--options=runtime"
-              }
-            ],
-            "toolName": "sign",
-            "toolVersion": "1.0"
-          }
-        ]
-      SessionTimeout: 60
-    displayName: Codesign
-
-  - script: |
-      APP_ROOT=$(agent.builddirectory)/VSCode-darwin-$(VSCODE_ARCH)
-      APP_NAME="`ls $APP_ROOT | head -n 1`"
-      BUNDLE_IDENTIFIER=$(node -p "require(\"$APP_ROOT/$APP_NAME/Contents/Resources/app/product.json\").darwinBundleIdentifier")
-      echo "##vso[task.setvariable variable=BundleIdentifier]$BUNDLE_IDENTIFIER"
-    displayName: Export bundle identifier
-
-  - task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@1
-    inputs:
-      ConnectedServiceName: "ESRP CodeSign"
-      FolderPath: "$(agent.builddirectory)"
-      Pattern: "VSCode-darwin-$(VSCODE_ARCH).zip"
-      signConfigType: inlineSignParams
-      inlineOperation: |
-        [
-          {
-            "keyCode": "CP-401337-Apple",
-            "operationSetCode": "MacAppNotarize",
-            "parameters": [
-              {
-                "parameterName": "BundleId",
-                "parameterValue": "$(BundleIdentifier)"
-              }
-            ],
-            "toolName": "sign",
-            "toolVersion": "1.0"
-          }
-        ]
-      SessionTimeout: 60
-    displayName: Notarization
-
-  - script: |
-      set -e
-      APP_ROOT=$(agent.builddirectory)/VSCode-darwin-$(VSCODE_ARCH)
-      APP_NAME="`ls $APP_ROOT | head -n 1`"
-      "$APP_ROOT/$APP_NAME/Contents/Resources/app/bin/code" --export-default-configuration=.build
-    displayName: Verify start after signing (export configuration)
-    condition: and(succeeded(), ne(variables['VSCODE_ARCH'], 'arm64'))
-
-  - script: |
-      # For legacy purposes, arch for x64 is just 'darwin'
-      case $VSCODE_ARCH in
-        x64) ASSET_ID="darwin" ;;
-        arm64) ASSET_ID="darwin-arm64" ;;
-        universal) ASSET_ID="darwin-universal" ;;
-      esac
-      echo "##vso[task.setvariable variable=ASSET_ID]$ASSET_ID"
-    displayName: Set asset id variable
-
-  - script: mv $(agent.builddirectory)/VSCode-darwin-x64.zip $(agent.builddirectory)/VSCode-darwin.zip
-    displayName: Rename x64 build to it's legacy name
-    condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64'))
-
-  - publish: $(Agent.BuildDirectory)/VSCode-$(ASSET_ID).zip
-    artifact: vscode_client_darwin_$(VSCODE_ARCH)_archive
diff --git a/lib/vscode/build/azure-pipelines/darwin/product-build-darwin.yml b/lib/vscode/build/azure-pipelines/darwin/product-build-darwin.yml
deleted file mode 100644
index 566eeb805229..000000000000
--- a/lib/vscode/build/azure-pipelines/darwin/product-build-darwin.yml
+++ /dev/null
@@ -1,313 +0,0 @@
-steps:
-  - task: NodeTool@0
-    inputs:
-      versionSpec: "14.x"
-
-  - task: AzureKeyVault@1
-    displayName: "Azure Key Vault: Get Secrets"
-    inputs:
-      azureSubscription: "vscode-builds-subscription"
-      KeyVaultName: vscode
-
-  - task: DownloadPipelineArtifact@2
-    inputs:
-      artifact: Compilation
-      path: $(Build.ArtifactStagingDirectory)
-    displayName: Download compilation output
-    condition: and(succeeded(), ne(variables['VSCODE_ARCH'], 'universal'))
-
-  - script: |
-      set -e
-      tar -xzf $(Build.ArtifactStagingDirectory)/compilation.tar.gz
-    displayName: Extract compilation output
-    condition: and(succeeded(), ne(variables['VSCODE_ARCH'], 'universal'))
-
-  # Set up the credentials to retrieve distro repo and setup git persona
-  # to create a merge commit for when we merge distro into oss
-  - script: |
-      set -e
-      cat << EOF > ~/.netrc
-      machine github.com
-      login vscode
-      password $(github-distro-mixin-password)
-      EOF
-
-      git config user.email "vscode@microsoft.com"
-      git config user.name "VSCode"
-    displayName: Prepare tooling
-
-  - script: |
-      set -e
-      sudo xcode-select -s /Applications/Xcode_12.2.app
-    displayName: Switch to Xcode 12
-    condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'arm64'))
-
-  - script: |
-      set -e
-      git pull --no-rebase https://github.com/$(VSCODE_MIXIN_REPO).git $(node -p "require('./package.json').distro")
-    displayName: Merge distro
-
-  - script: |
-      mkdir -p .build
-      node build/azure-pipelines/common/computeNodeModulesCacheKey.js $VSCODE_ARCH $ENABLE_TERRAPIN > .build/yarnlockhash
-    displayName: Prepare yarn cache flags
-
-  - task: Cache@2
-    inputs:
-      key: 'nodeModules | $(Agent.OS) | .build/yarnlockhash'
-      path: .build/node_modules_cache
-      cacheHitVar: NODE_MODULES_RESTORED
-    displayName: Restore node_modules cache
-
-  - script: |
-      set -e
-      tar -xzf .build/node_modules_cache/cache.tgz
-    condition: and(succeeded(), eq(variables.NODE_MODULES_RESTORED, 'true'))
-    displayName: Extract node_modules cache
-
-  - script: |
-      set -e
-      npm install -g node-gyp@latest
-      node-gyp --version
-    displayName: Update node-gyp
-    condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'))
-
-  - script: |
-      set -e
-      npx https://aka.ms/enablesecurefeed standAlone
-    timeoutInMinutes: 5
-    condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'), eq(variables['ENABLE_TERRAPIN'], 'true'))
-    displayName: Switch to Terrapin packages
-
-  - script: |
-      set -e
-      export npm_config_arch=$(VSCODE_ARCH)
-      export npm_config_node_gyp=$(which node-gyp)
-      export npm_config_build_from_source=true
-      export SDKROOT=/Applications/Xcode_12.2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.0.sdk
-
-      for i in {1..3}; do # try 3 times, for Terrapin
-        yarn --frozen-lockfile && break
-        if [ $i -eq 3 ]; then
-          echo "Yarn failed too many times" >&2
-          exit 1
-        fi
-        echo "Yarn failed $i, trying again..."
-      done
-    env:
-      ELECTRON_SKIP_BINARY_DOWNLOAD: 1
-      PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1
-    displayName: Install dependencies
-    condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'))
-
-  - script: |
-      set -e
-      node build/azure-pipelines/common/listNodeModules.js .build/node_modules_list.txt
-      mkdir -p .build/node_modules_cache
-      tar -czf .build/node_modules_cache/cache.tgz --files-from .build/node_modules_list.txt
-    condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'))
-    displayName: Create node_modules archive
-
-  # This script brings in the right resources (images, icons, etc) based on the quality (insiders, stable, exploration)
-  - script: |
-      set -e
-      node build/azure-pipelines/mixin
-    displayName: Mix in quality
-
-  - script: |
-      set -e
-      VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
-        yarn gulp vscode-darwin-$(VSCODE_ARCH)-min-ci
-    displayName: Build client
-    condition: and(succeeded(), ne(variables['VSCODE_ARCH'], 'universal'))
-
-  - script: |
-      set -e
-      VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
-        yarn gulp vscode-reh-darwin-min-ci
-      VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
-        yarn gulp vscode-reh-web-darwin-min-ci
-    displayName: Build Server
-    condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64'))
-
-  - script: |
-      set -e
-      VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
-        yarn npm-run-all -lp "electron $(VSCODE_ARCH)" "playwright-install"
-    displayName: Download Electron and Playwright
-    condition: and(succeeded(), ne(variables['VSCODE_ARCH'], 'universal'), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
-
-  - download: current
-    artifact: unsigned_vscode_client_darwin_x64_archive
-    displayName: Download x64 artifact
-    condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'universal'))
-
-  - download: current
-    artifact: unsigned_vscode_client_darwin_arm64_archive
-    displayName: Download arm64 artifact
-    condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'universal'))
-
-  - script: |
-      set -e
-      cp $(Pipeline.Workspace)/unsigned_vscode_client_darwin_x64_archive/VSCode-darwin-x64.zip $(agent.builddirectory)/VSCode-darwin-x64.zip
-      cp $(Pipeline.Workspace)/unsigned_vscode_client_darwin_arm64_archive/VSCode-darwin-arm64.zip $(agent.builddirectory)/VSCode-darwin-arm64.zip
-      unzip $(agent.builddirectory)/VSCode-darwin-x64.zip -d $(agent.builddirectory)/VSCode-darwin-x64
-      unzip $(agent.builddirectory)/VSCode-darwin-arm64.zip -d $(agent.builddirectory)/VSCode-darwin-arm64
-      DEBUG=* node build/darwin/create-universal-app.js
-    displayName: Create Universal App
-    condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'universal'))
-
-  # Setting hardened entitlements is a requirement for:
-  # * Apple notarization
-  # * Running tests on Big Sur (because Big Sur has additional security precautions)
-  - script: |
-      set -e
-      security create-keychain -p pwd $(agent.tempdirectory)/buildagent.keychain
-      security default-keychain -s $(agent.tempdirectory)/buildagent.keychain
-      security unlock-keychain -p pwd $(agent.tempdirectory)/buildagent.keychain
-      echo "$(macos-developer-certificate)" | base64 -D > $(agent.tempdirectory)/cert.p12
-      security import $(agent.tempdirectory)/cert.p12 -k $(agent.tempdirectory)/buildagent.keychain -P "$(macos-developer-certificate-key)" -T /usr/bin/codesign
-      security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k pwd $(agent.tempdirectory)/buildagent.keychain
-      VSCODE_ARCH=$(VSCODE_ARCH) DEBUG=electron-osx-sign* node build/darwin/sign.js
-    displayName: Set Hardened Entitlements
-
-  - script: |
-      set -e
-      ./scripts/test.sh --build --tfs "Unit Tests"
-    displayName: Run unit tests (Electron)
-    timeoutInMinutes: 7
-    condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64'), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
-
-  - script: |
-      set -e
-      yarn test-browser --build --browser chromium --browser webkit --browser firefox --tfs "Browser Unit Tests"
-    displayName: Run unit tests (Browser)
-    timeoutInMinutes: 7
-    condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64'), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
-
-  - script: |
-      set -e
-      yarn --cwd test/integration/browser compile
-    displayName: Compile integration tests
-    condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64'), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
-
-  - script: |
-      # Figure out the full absolute path of the product we just built
-      # including the remote server and configure the integration tests
-      # to run with these builds instead of running out of sources.
-      set -e
-      APP_ROOT=$(agent.builddirectory)/VSCode-darwin-$(VSCODE_ARCH)
-      APP_NAME="`ls $APP_ROOT | head -n 1`"
-      INTEGRATION_TEST_ELECTRON_PATH="$APP_ROOT/$APP_NAME/Contents/MacOS/Electron" \
-      VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/vscode-reh-darwin" \
-      ./scripts/test-integration.sh --build --tfs "Integration Tests"
-    displayName: Run integration tests (Electron)
-    timeoutInMinutes: 10
-    condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64'), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
-
-  - script: |
-      set -e
-      VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/vscode-reh-web-darwin" \
-      ./resources/server/test/test-web-integration.sh --browser webkit
-    displayName: Run integration tests (Browser)
-    timeoutInMinutes: 10
-    condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64'), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
-
-  - script: |
-      set -e
-      APP_ROOT=$(agent.builddirectory)/VSCode-darwin-$(VSCODE_ARCH)
-      APP_NAME="`ls $APP_ROOT | head -n 1`"
-      INTEGRATION_TEST_ELECTRON_PATH="$APP_ROOT/$APP_NAME/Contents/MacOS/Electron" \
-      VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/vscode-reh-darwin" \
-      ./resources/server/test/test-remote-integration.sh
-    displayName: Run remote integration tests (Electron)
-    timeoutInMinutes: 7
-    condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64'), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
-
-  - script: |
-      set -e
-      yarn --cwd test/smoke compile
-    displayName: Compile smoke tests
-    condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64'), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
-
-  - script: |
-      set -e
-      APP_ROOT=$(agent.builddirectory)/VSCode-darwin-$(VSCODE_ARCH)
-      APP_NAME="`ls $APP_ROOT | head -n 1`"
-      yarn smoketest-no-compile --build "$APP_ROOT/$APP_NAME"
-    timeoutInMinutes: 5
-    displayName: Run smoke tests (Electron)
-    condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64'), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
-
-  - script: |
-      set -e
-      APP_ROOT=$(agent.builddirectory)/VSCode-darwin-$(VSCODE_ARCH)
-      APP_NAME="`ls $APP_ROOT | head -n 1`"
-      VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/vscode-reh-darwin" \
-      yarn smoketest-no-compile --build "$APP_ROOT/$APP_NAME" --remote
-    timeoutInMinutes: 5
-    displayName: Run smoke tests (Remote)
-    condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64'), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
-
-  - script: |
-      set -e
-      VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/vscode-reh-web-darwin" \
-      yarn smoketest-no-compile --web --headless
-    timeoutInMinutes: 5
-    displayName: Run smoke tests (Browser)
-    condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64'), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
-
-  - task: PublishPipelineArtifact@0
-    inputs:
-      artifactName: crash-dump-macos-$(VSCODE_ARCH)
-      targetPath: .build/crashes
-    displayName: "Publish Crash Reports"
-    continueOnError: true
-    condition: failed()
-
-  - task: PublishTestResults@2
-    displayName: Publish Tests Results
-    inputs:
-      testResultsFiles: "*-results.xml"
-      searchFolder: "$(Build.ArtifactStagingDirectory)/test-results"
-    condition: and(succeededOrFailed(), eq(variables['VSCODE_ARCH'], 'x64'), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
-
-  - script: |
-      set -e
-      pushd $(agent.builddirectory)/VSCode-darwin-$(VSCODE_ARCH) && zip -r -X -y $(agent.builddirectory)/VSCode-darwin-$(VSCODE_ARCH).zip * && popd
-    displayName: Archive build
-    condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
-
-  - script: |
-      set -e
-
-      # package Remote Extension Host
-      pushd .. && mv vscode-reh-darwin vscode-server-darwin && zip -Xry vscode-server-darwin.zip vscode-server-darwin && popd
-
-      # package Remote Extension Host (Web)
-      pushd .. && mv vscode-reh-web-darwin vscode-server-darwin-web && zip -Xry vscode-server-darwin-web.zip vscode-server-darwin-web && popd
-    displayName: Prepare to publish servers
-    condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64'), ne(variables['VSCODE_PUBLISH'], 'false'))
-
-  - publish: $(Agent.BuildDirectory)/VSCode-darwin-$(VSCODE_ARCH).zip
-    artifact: unsigned_vscode_client_darwin_$(VSCODE_ARCH)_archive
-    displayName: Publish client archive
-    condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
-
-  - publish: $(Agent.BuildDirectory)/vscode-server-darwin.zip
-    artifact: vscode_server_darwin_$(VSCODE_ARCH)_archive-unsigned
-    displayName: Publish server archive
-    condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64'), ne(variables['VSCODE_PUBLISH'], 'false'))
-
-  - publish: $(Agent.BuildDirectory)/vscode-server-darwin-web.zip
-    artifact: vscode_web_darwin_$(VSCODE_ARCH)_archive-unsigned
-    displayName: Publish web server archive
-    condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64'), ne(variables['VSCODE_PUBLISH'], 'false'))
-
-  - script: |
-      AZURE_STORAGE_ACCESS_KEY="$(ticino-storage-key)" \
-      VSCODE_ARCH="$(VSCODE_ARCH)" \
-      yarn gulp upload-vscode-configuration
-    displayName: Upload configuration (for Bing settings search)
-    condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64'), ne(variables['VSCODE_PUBLISH'], 'false'))
-    continueOnError: true
diff --git a/lib/vscode/build/azure-pipelines/distro-build.yml b/lib/vscode/build/azure-pipelines/distro-build.yml
deleted file mode 100644
index dc5d2803476d..000000000000
--- a/lib/vscode/build/azure-pipelines/distro-build.yml
+++ /dev/null
@@ -1,42 +0,0 @@
-trigger:
-  branches:
-    include: ["main", "release/*"]
-pr:
-  branches:
-    include: ["main", "release/*"]
-
-steps:
-  - task: NodeTool@0
-    inputs:
-      versionSpec: "14.x"
-
-  - task: AzureKeyVault@1
-    displayName: "Azure Key Vault: Get Secrets"
-    inputs:
-      azureSubscription: "vscode-builds-subscription"
-      KeyVaultName: vscode
-
-  - script: |
-      set -e
-
-      cat << EOF > ~/.netrc
-      machine github.com
-      login vscode
-      password $(github-distro-mixin-password)
-      EOF
-
-      git config user.email "vscode@microsoft.com"
-      git config user.name "VSCode"
-
-      git remote add distro "https://github.com/$VSCODE_MIXIN_REPO.git"
-      git fetch distro
-
-      # Push main branch into oss/main
-      git push distro origin/main:refs/heads/oss/main
-
-      # Push every release branch into oss/release
-      git for-each-ref --format="%(refname:short)" refs/remotes/origin/release/* | sed 's/^origin\/\(.*\)$/\0:refs\/heads\/oss\/\1/' | xargs git push distro
-
-      git merge $(node -p "require('./package.json').distro")
-
-    displayName: Sync & Merge Distro
diff --git a/lib/vscode/build/azure-pipelines/exploration-build.yml b/lib/vscode/build/azure-pipelines/exploration-build.yml
deleted file mode 100644
index ff3ce383c2fd..000000000000
--- a/lib/vscode/build/azure-pipelines/exploration-build.yml
+++ /dev/null
@@ -1,36 +0,0 @@
-pool:
-  vmImage: "Ubuntu-16.04"
-
-trigger: none
-pr: none
-
-steps:
-  - task: NodeTool@0
-    inputs:
-      versionSpec: "14.x"
-
-  - task: AzureKeyVault@1
-    displayName: "Azure Key Vault: Get Secrets"
-    inputs:
-      azureSubscription: "vscode-builds-subscription"
-      KeyVaultName: vscode
-
-  - script: |
-      set -e
-
-      cat << EOF > ~/.netrc
-      machine github.com
-      login vscode
-      password $(github-distro-mixin-password)
-      EOF
-
-      git config user.email "vscode@microsoft.com"
-      git config user.name "VSCode"
-
-      git checkout origin/electron-12.x.y
-      git merge origin/main
-
-      # Push main branch into exploration branch
-      git push origin HEAD:electron-12.x.y
-
-    displayName: Sync & Merge Exploration
diff --git a/lib/vscode/build/azure-pipelines/linux/.gitignore b/lib/vscode/build/azure-pipelines/linux/.gitignore
deleted file mode 100644
index 0f46fa7086ac..000000000000
--- a/lib/vscode/build/azure-pipelines/linux/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-pat
\ No newline at end of file
diff --git a/lib/vscode/build/azure-pipelines/linux/alpine/install-dependencies.sh b/lib/vscode/build/azure-pipelines/linux/alpine/install-dependencies.sh
deleted file mode 100755
index 1d2a2325490a..000000000000
--- a/lib/vscode/build/azure-pipelines/linux/alpine/install-dependencies.sh
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/usr/bin/env bash
-set -e
-
-echo "Installing remote dependencies"
-(cd remote && rm -rf node_modules && yarn)
\ No newline at end of file
diff --git a/lib/vscode/build/azure-pipelines/linux/prepare-publish.sh b/lib/vscode/build/azure-pipelines/linux/prepare-publish.sh
deleted file mode 100755
index 891fa8024ef5..000000000000
--- a/lib/vscode/build/azure-pipelines/linux/prepare-publish.sh
+++ /dev/null
@@ -1,66 +0,0 @@
-#!/usr/bin/env bash
-set -e
-REPO="$(pwd)"
-ROOT="$REPO/.."
-
-# Publish tarball
-PLATFORM_LINUX="linux-$VSCODE_ARCH"
-BUILDNAME="VSCode-$PLATFORM_LINUX"
-BUILD_VERSION="$(date +%s)"
-[ -z "$VSCODE_QUALITY" ] && TARBALL_FILENAME="code-$VSCODE_ARCH-$BUILD_VERSION.tar.gz" || TARBALL_FILENAME="code-$VSCODE_QUALITY-$VSCODE_ARCH-$BUILD_VERSION.tar.gz"
-TARBALL_PATH="$ROOT/$TARBALL_FILENAME"
-
-rm -rf $ROOT/code-*.tar.*
-(cd $ROOT && tar -czf $TARBALL_PATH $BUILDNAME)
-
-# Publish Remote Extension Host
-LEGACY_SERVER_BUILD_NAME="vscode-reh-$PLATFORM_LINUX"
-SERVER_BUILD_NAME="vscode-server-$PLATFORM_LINUX"
-SERVER_TARBALL_FILENAME="vscode-server-$PLATFORM_LINUX.tar.gz"
-SERVER_TARBALL_PATH="$ROOT/$SERVER_TARBALL_FILENAME"
-
-rm -rf $ROOT/vscode-server-*.tar.*
-(cd $ROOT && mv $LEGACY_SERVER_BUILD_NAME $SERVER_BUILD_NAME && tar --owner=0 --group=0 -czf $SERVER_TARBALL_PATH $SERVER_BUILD_NAME)
-
-# Publish Remote Extension Host (Web)
-LEGACY_SERVER_BUILD_NAME="vscode-reh-web-$PLATFORM_LINUX"
-SERVER_BUILD_NAME="vscode-server-$PLATFORM_LINUX-web"
-SERVER_TARBALL_FILENAME="vscode-server-$PLATFORM_LINUX-web.tar.gz"
-SERVER_TARBALL_PATH="$ROOT/$SERVER_TARBALL_FILENAME"
-
-rm -rf $ROOT/vscode-server-*-web.tar.*
-(cd $ROOT && mv $LEGACY_SERVER_BUILD_NAME $SERVER_BUILD_NAME && tar --owner=0 --group=0 -czf $SERVER_TARBALL_PATH $SERVER_BUILD_NAME)
-
-# Publish DEB
-case $VSCODE_ARCH in
-	x64) DEB_ARCH="amd64" ;;
-	*) DEB_ARCH="$VSCODE_ARCH" ;;
-esac
-
-PLATFORM_DEB="linux-deb-$VSCODE_ARCH"
-DEB_FILENAME="$(ls $REPO/.build/linux/deb/$DEB_ARCH/deb/)"
-DEB_PATH="$REPO/.build/linux/deb/$DEB_ARCH/deb/$DEB_FILENAME"
-
-# Publish RPM
-case $VSCODE_ARCH in
-	x64) RPM_ARCH="x86_64" ;;
-	armhf) RPM_ARCH="armv7hl" ;;
-	arm64) RPM_ARCH="aarch64" ;;
-	*) RPM_ARCH="$VSCODE_ARCH" ;;
-esac
-
-PLATFORM_RPM="linux-rpm-$VSCODE_ARCH"
-RPM_FILENAME="$(ls $REPO/.build/linux/rpm/$RPM_ARCH/ | grep .rpm)"
-RPM_PATH="$REPO/.build/linux/rpm/$RPM_ARCH/$RPM_FILENAME"
-
-# Publish Snap
-# Pack snap tarball artifact, in order to preserve file perms
-mkdir -p $REPO/.build/linux/snap-tarball
-SNAP_TARBALL_PATH="$REPO/.build/linux/snap-tarball/snap-$VSCODE_ARCH.tar.gz"
-rm -rf $SNAP_TARBALL_PATH
-(cd .build/linux && tar -czf $SNAP_TARBALL_PATH snap)
-
-# Export DEB_PATH, RPM_PATH
-echo "##vso[task.setvariable variable=DEB_PATH]$DEB_PATH"
-echo "##vso[task.setvariable variable=RPM_PATH]$RPM_PATH"
-echo "##vso[task.setvariable variable=TARBALL_PATH]$TARBALL_PATH"
diff --git a/lib/vscode/build/azure-pipelines/linux/product-build-alpine.yml b/lib/vscode/build/azure-pipelines/linux/product-build-alpine.yml
deleted file mode 100644
index ed0c35346c70..000000000000
--- a/lib/vscode/build/azure-pipelines/linux/product-build-alpine.yml
+++ /dev/null
@@ -1,153 +0,0 @@
-steps:
-  - task: NodeTool@0
-    inputs:
-      versionSpec: "14.x"
-
-  - task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2
-    inputs:
-      versionSpec: "1.x"
-
-  - task: AzureKeyVault@1
-    displayName: "Azure Key Vault: Get Secrets"
-    inputs:
-      azureSubscription: "vscode-builds-subscription"
-      KeyVaultName: vscode
-
-  - task: DownloadPipelineArtifact@2
-    inputs:
-      artifact: Compilation
-      path: $(Build.ArtifactStagingDirectory)
-    displayName: Download compilation output
-
-  - script: |
-      set -e
-      tar -xzf $(Build.ArtifactStagingDirectory)/compilation.tar.gz
-    displayName: Extract compilation output
-
-  - task: Docker@1
-    displayName: "Pull image"
-    inputs:
-      azureSubscriptionEndpoint: "vscode-builds-subscription"
-      azureContainerRegistry: vscodehub.azurecr.io
-      command: "Run an image"
-      imageName: "vscode-linux-build-agent:alpine"
-      containerCommand: uname
-
-  - script: |
-      set -e
-      cat << EOF > ~/.netrc
-      machine github.com
-      login vscode
-      password $(github-distro-mixin-password)
-      EOF
-
-      git config user.email "vscode@microsoft.com"
-      git config user.name "VSCode"
-    displayName: Prepare tooling
-
-  - script: |
-      set -e
-      git pull --no-rebase https://github.com/$(VSCODE_MIXIN_REPO).git $(node -p "require('./package.json').distro")
-    displayName: Merge distro
-
-  - script: |
-      mkdir -p .build
-      node build/azure-pipelines/common/computeNodeModulesCacheKey.js "alpine" $ENABLE_TERRAPIN > .build/yarnlockhash
-    displayName: Prepare yarn cache flags
-
-  - task: Cache@2
-    inputs:
-      key: 'nodeModules | $(Agent.OS) | .build/yarnlockhash'
-      path: .build/node_modules_cache
-      cacheHitVar: NODE_MODULES_RESTORED
-    displayName: Restore node_modules cache
-
-  - script: |
-      set -e
-      tar -xzf .build/node_modules_cache/cache.tgz
-    condition: and(succeeded(), eq(variables.NODE_MODULES_RESTORED, 'true'))
-    displayName: Extract node_modules cache
-
-  - script: |
-      set -e
-      npx https://aka.ms/enablesecurefeed standAlone
-    timeoutInMinutes: 5
-    condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'), eq(variables['ENABLE_TERRAPIN'], 'true'))
-    displayName: Switch to Terrapin packages
-
-  - script: |
-      set -e
-      for i in {1..3}; do # try 3 times, for Terrapin
-        yarn --frozen-lockfile && break
-        if [ $i -eq 3 ]; then
-          echo "Yarn failed too many times" >&2
-          exit 1
-        fi
-        echo "Yarn failed $i, trying again..."
-      done
-    env:
-      ELECTRON_SKIP_BINARY_DOWNLOAD: 1
-      PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1
-    displayName: Install dependencies
-    condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'))
-
-  - script: |
-      set -e
-      node build/azure-pipelines/common/listNodeModules.js .build/node_modules_list.txt
-      mkdir -p .build/node_modules_cache
-      tar -czf .build/node_modules_cache/cache.tgz --files-from .build/node_modules_list.txt
-    condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'))
-    displayName: Create node_modules archive
-
-  - script: |
-      set -e
-      node build/azure-pipelines/mixin
-    displayName: Mix in quality
-
-  - script: |
-      set -e
-      docker run -e VSCODE_QUALITY -v $(pwd):/root/vscode -v ~/.netrc:/root/.netrc vscodehub.azurecr.io/vscode-linux-build-agent:alpine /root/vscode/build/azure-pipelines/linux/alpine/install-dependencies.sh
-    displayName: Prebuild
-
-  - script: |
-      set -e
-      yarn gulp vscode-reh-linux-alpine-min-ci
-      yarn gulp vscode-reh-web-linux-alpine-min-ci
-    displayName: Build
-
-  - script: |
-      set -e
-      REPO="$(pwd)"
-      ROOT="$REPO/.."
-
-      PLATFORM_LINUX="linux-alpine"
-
-      # Publish Remote Extension Host
-      LEGACY_SERVER_BUILD_NAME="vscode-reh-$PLATFORM_LINUX"
-      SERVER_BUILD_NAME="vscode-server-$PLATFORM_LINUX"
-      SERVER_TARBALL_FILENAME="vscode-server-$PLATFORM_LINUX.tar.gz"
-      SERVER_TARBALL_PATH="$ROOT/$SERVER_TARBALL_FILENAME"
-
-      rm -rf $ROOT/vscode-server-*.tar.*
-      (cd $ROOT && mv $LEGACY_SERVER_BUILD_NAME $SERVER_BUILD_NAME && tar --owner=0 --group=0 -czf $SERVER_TARBALL_PATH $SERVER_BUILD_NAME)
-
-      # Publish Remote Extension Host (Web)
-      LEGACY_SERVER_BUILD_NAME="vscode-reh-web-$PLATFORM_LINUX"
-      SERVER_BUILD_NAME="vscode-server-$PLATFORM_LINUX-web"
-      SERVER_TARBALL_FILENAME="vscode-server-$PLATFORM_LINUX-web.tar.gz"
-      SERVER_TARBALL_PATH="$ROOT/$SERVER_TARBALL_FILENAME"
-
-      rm -rf $ROOT/vscode-server-*-web.tar.*
-      (cd $ROOT && mv $LEGACY_SERVER_BUILD_NAME $SERVER_BUILD_NAME && tar --owner=0 --group=0 -czf $SERVER_TARBALL_PATH $SERVER_BUILD_NAME)
-    displayName: Prepare for publish
-    condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
-
-  - publish: $(Agent.BuildDirectory)/vscode-server-linux-alpine.tar.gz
-    artifact: vscode_server_linux_alpine_archive-unsigned
-    displayName: Publish server archive
-    condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
-
-  - publish: $(Agent.BuildDirectory)/vscode-server-linux-alpine-web.tar.gz
-    artifact: vscode_web_linux_alpine_archive-unsigned
-    displayName: Publish web server archive
-    condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
diff --git a/lib/vscode/build/azure-pipelines/linux/product-build-linux.yml b/lib/vscode/build/azure-pipelines/linux/product-build-linux.yml
deleted file mode 100644
index 8181083d1f25..000000000000
--- a/lib/vscode/build/azure-pipelines/linux/product-build-linux.yml
+++ /dev/null
@@ -1,282 +0,0 @@
-steps:
-  - task: NodeTool@0
-    inputs:
-      versionSpec: "14.x"
-
-  - task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2
-    inputs:
-      versionSpec: "1.x"
-
-  - task: AzureKeyVault@1
-    displayName: "Azure Key Vault: Get Secrets"
-    inputs:
-      azureSubscription: "vscode-builds-subscription"
-      KeyVaultName: vscode
-
-  - task: DownloadPipelineArtifact@2
-    inputs:
-      artifact: Compilation
-      path: $(Build.ArtifactStagingDirectory)
-    displayName: Download compilation output
-
-  - script: |
-      set -e
-      tar -xzf $(Build.ArtifactStagingDirectory)/compilation.tar.gz
-    displayName: Extract compilation output
-
-  - script: |
-      set -e
-      cat << EOF > ~/.netrc
-      machine github.com
-      login vscode
-      password $(github-distro-mixin-password)
-      EOF
-
-      git config user.email "vscode@microsoft.com"
-      git config user.name "VSCode"
-    displayName: Prepare tooling
-
-  - script: |
-      set -e
-      git pull --no-rebase https://github.com/$(VSCODE_MIXIN_REPO).git $(node -p "require('./package.json').distro")
-    displayName: Merge distro
-
-  - script: |
-      mkdir -p .build
-      node build/azure-pipelines/common/computeNodeModulesCacheKey.js $VSCODE_ARCH $ENABLE_TERRAPIN > .build/yarnlockhash
-    displayName: Prepare yarn cache flags
-
-  - task: Cache@2
-    inputs:
-      key: 'nodeModules | $(Agent.OS) | .build/yarnlockhash'
-      path: .build/node_modules_cache
-      cacheHitVar: NODE_MODULES_RESTORED
-    displayName: Restore node_modules cache
-
-  - script: |
-      set -e
-      tar -xzf .build/node_modules_cache/cache.tgz
-    condition: and(succeeded(), eq(variables.NODE_MODULES_RESTORED, 'true'))
-    displayName: Extract node_modules cache
-
-  - script: |
-      set -e
-      npx https://aka.ms/enablesecurefeed standAlone
-    timeoutInMinutes: 5
-    condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'), eq(variables['ENABLE_TERRAPIN'], 'true'))
-    displayName: Switch to Terrapin packages
-
-  - script: |
-      set -e
-      export npm_config_arch=$(NPM_ARCH)
-      export npm_config_build_from_source=true
-
-      if [ -z "$CC" ] || [ -z "$CXX" ]; then
-        export CC=$(which gcc-5)
-        export CXX=$(which g++-5)
-      fi
-
-      if [ "$VSCODE_ARCH" == "x64" ]; then
-        export VSCODE_REMOTE_CC=$(which gcc-4.8)
-        export VSCODE_REMOTE_CXX=$(which g++-4.8)
-      fi
-
-      for i in {1..3}; do # try 3 times, for Terrapin
-        yarn --frozen-lockfile && break
-        if [ $i -eq 3 ]; then
-          echo "Yarn failed too many times" >&2
-          exit 1
-        fi
-        echo "Yarn failed $i, trying again..."
-      done
-    env:
-      ELECTRON_SKIP_BINARY_DOWNLOAD: 1
-      PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1
-    displayName: Install dependencies
-    condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'))
-
-  - script: |
-      set -e
-      node build/azure-pipelines/common/listNodeModules.js .build/node_modules_list.txt
-      mkdir -p .build/node_modules_cache
-      tar -czf .build/node_modules_cache/cache.tgz --files-from .build/node_modules_list.txt
-    condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'))
-    displayName: Create node_modules archive
-
-  - script: |
-      set -e
-      node build/azure-pipelines/mixin
-    displayName: Mix in quality
-
-  - script: |
-      set -e
-      VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
-        yarn gulp vscode-linux-$(VSCODE_ARCH)-min-ci
-    displayName: Build
-
-  - script: |
-      set -e
-      VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
-        yarn gulp vscode-reh-linux-$(VSCODE_ARCH)-min-ci
-      VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
-        yarn gulp vscode-reh-web-linux-$(VSCODE_ARCH)-min-ci
-    displayName: Build Server
-
-  - script: |
-      set -e
-      VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
-        yarn npm-run-all -lp "electron $(VSCODE_ARCH)" "playwright-install"
-    displayName: Download Electron and Playwright
-    condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64'), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
-
-  - script: |
-      set -e
-      DISPLAY=:10 ./scripts/test.sh --build --tfs "Unit Tests"
-    displayName: Run unit tests (Electron)
-    timeoutInMinutes: 7
-    condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64'), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
-
-  - script: |
-      set -e
-      DISPLAY=:10 yarn test-browser --build --browser chromium --tfs "Browser Unit Tests"
-    displayName: Run unit tests (Browser)
-    timeoutInMinutes: 7
-    condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64'), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
-
-  - script: |
-      set -e
-      yarn --cwd test/integration/browser compile
-    displayName: Compile integration tests
-    condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64'), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
-
-  - script: |
-      # Figure out the full absolute path of the product we just built
-      # including the remote server and configure the integration tests
-      # to run with these builds instead of running out of sources.
-      set -e
-      APP_ROOT=$(agent.builddirectory)/VSCode-linux-$(VSCODE_ARCH)
-      APP_NAME=$(node -p "require(\"$APP_ROOT/resources/app/product.json\").applicationName")
-      INTEGRATION_TEST_APP_NAME="$APP_NAME" \
-      INTEGRATION_TEST_ELECTRON_PATH="$APP_ROOT/$APP_NAME" \
-      VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/vscode-reh-linux-$(VSCODE_ARCH)" \
-      DISPLAY=:10 ./scripts/test-integration.sh --build --tfs "Integration Tests"
-    displayName: Run integration tests (Electron)
-    timeoutInMinutes: 10
-    condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64'), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
-
-  - script: |
-      set -e
-      VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/vscode-reh-web-linux-$(VSCODE_ARCH)" \
-      DISPLAY=:10 ./resources/server/test/test-web-integration.sh --browser chromium
-    displayName: Run integration tests (Browser)
-    timeoutInMinutes: 10
-    condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64'), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
-
-  - script: |
-      set -e
-      APP_ROOT=$(agent.builddirectory)/VSCode-linux-$(VSCODE_ARCH)
-      APP_NAME=$(node -p "require(\"$APP_ROOT/resources/app/product.json\").applicationName")
-      INTEGRATION_TEST_APP_NAME="$APP_NAME" \
-      INTEGRATION_TEST_ELECTRON_PATH="$APP_ROOT/$APP_NAME" \
-      VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/vscode-reh-linux-$(VSCODE_ARCH)" \
-      DISPLAY=:10 ./resources/server/test/test-remote-integration.sh
-    displayName: Run remote integration tests (Electron)
-    timeoutInMinutes: 7
-    condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64'), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
-
-  - task: PublishPipelineArtifact@0
-    inputs:
-      artifactName: "crash-dump-linux-$(VSCODE_ARCH)"
-      targetPath: .build/crashes
-    displayName: "Publish Crash Reports"
-    continueOnError: true
-    condition: failed()
-
-  - task: PublishTestResults@2
-    displayName: Publish Tests Results
-    inputs:
-      testResultsFiles: "*-results.xml"
-      searchFolder: "$(Build.ArtifactStagingDirectory)/test-results"
-    condition: and(succeededOrFailed(), eq(variables['VSCODE_ARCH'], 'x64'), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
-
-  - script: |
-      set -e
-      yarn gulp "vscode-linux-$(VSCODE_ARCH)-build-deb"
-      yarn gulp "vscode-linux-$(VSCODE_ARCH)-build-rpm"
-    displayName: Build deb, rpm packages
-    condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
-
-  - script: |
-      set -e
-      yarn gulp "vscode-linux-$(VSCODE_ARCH)-prepare-snap"
-    displayName: Prepare snap package
-    condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
-
-  # needed for code signing
-  - task: UseDotNet@2
-    displayName: "Install .NET Core SDK 2.x"
-    inputs:
-      version: 2.x
-    condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
-
-  - task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@1
-    inputs:
-      ConnectedServiceName: "ESRP CodeSign"
-      FolderPath: ".build/linux/rpm"
-      Pattern: "*.rpm"
-      signConfigType: inlineSignParams
-      inlineOperation: |
-        [
-          {
-            "keyCode": "CP-450779-Pgp",
-            "operationSetCode": "LinuxSign",
-            "parameters": [ ],
-            "toolName": "sign",
-            "toolVersion": "1.0"
-          }
-        ]
-      SessionTimeout: 120
-    displayName: Codesign rpm
-    condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
-
-  - script: |
-      set -e
-      AZURE_DOCUMENTDB_MASTERKEY="$(builds-docdb-key-readwrite)" \
-      AZURE_STORAGE_ACCESS_KEY_2="$(vscode-storage-key)" \
-      VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
-      VSCODE_ARCH="$(VSCODE_ARCH)" \
-      ./build/azure-pipelines/linux/prepare-publish.sh
-    displayName: Prepare for Publish
-    condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
-
-  - publish: $(DEB_PATH)
-    artifact: vscode_client_linux_$(VSCODE_ARCH)_deb-package
-    displayName: Publish deb package
-    condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
-
-  - publish: $(RPM_PATH)
-    artifact: vscode_client_linux_$(VSCODE_ARCH)_rpm-package
-    displayName: Publish rpm package
-    condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
-
-  - publish: $(TARBALL_PATH)
-    artifact: vscode_client_linux_$(VSCODE_ARCH)_archive-unsigned
-    displayName: Publish client archive
-    condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
-
-  - publish: $(Agent.BuildDirectory)/vscode-server-linux-$(VSCODE_ARCH).tar.gz
-    artifact: vscode_server_linux_$(VSCODE_ARCH)_archive-unsigned
-    displayName: Publish server archive
-    condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
-
-  - publish: $(Agent.BuildDirectory)/vscode-server-linux-$(VSCODE_ARCH)-web.tar.gz
-    artifact: vscode_web_linux_$(VSCODE_ARCH)_archive-unsigned
-    displayName: Publish web server archive
-    condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
-
-  - task: PublishPipelineArtifact@0
-    displayName: "Publish Pipeline Artifact"
-    inputs:
-      artifactName: "snap-$(VSCODE_ARCH)"
-      targetPath: .build/linux/snap-tarball
-    condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
diff --git a/lib/vscode/build/azure-pipelines/linux/snap-build-linux.yml b/lib/vscode/build/azure-pipelines/linux/snap-build-linux.yml
deleted file mode 100644
index f7af900e1d0d..000000000000
--- a/lib/vscode/build/azure-pipelines/linux/snap-build-linux.yml
+++ /dev/null
@@ -1,60 +0,0 @@
-steps:
-  - task: NodeTool@0
-    inputs:
-      versionSpec: "14.x"
-
-  - task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2
-    inputs:
-      versionSpec: "1.x"
-
-  - task: AzureKeyVault@1
-    displayName: "Azure Key Vault: Get Secrets"
-    inputs:
-      azureSubscription: "vscode-builds-subscription"
-      KeyVaultName: vscode
-
-  - task: DownloadPipelineArtifact@0
-    displayName: "Download Pipeline Artifact"
-    inputs:
-      artifactName: snap-$(VSCODE_ARCH)
-      targetPath: .build/linux/snap-tarball
-
-  - script: |
-      set -e
-
-      # Get snapcraft version
-      snapcraft --version
-
-      # Make sure we get latest packages
-      sudo apt-get update
-      sudo apt-get upgrade -y
-
-      # Define variables
-      REPO="$(pwd)"
-      SNAP_ROOT="$REPO/.build/linux/snap/$(VSCODE_ARCH)"
-
-      # Install build dependencies
-      (cd build && yarn)
-
-      # Unpack snap tarball artifact, in order to preserve file perms
-      SNAP_TARBALL_PATH="$REPO/.build/linux/snap-tarball/snap-$(VSCODE_ARCH).tar.gz"
-      (cd .build/linux && tar -xzf $SNAP_TARBALL_PATH)
-
-      # Create snap package
-      BUILD_VERSION="$(date +%s)"
-      SNAP_FILENAME="code-$VSCODE_QUALITY-$(VSCODE_ARCH)-$BUILD_VERSION.snap"
-      SNAP_PATH="$SNAP_ROOT/$SNAP_FILENAME"
-      case $(VSCODE_ARCH) in
-        x64) SNAPCRAFT_TARGET_ARGS="" ;;
-        *) SNAPCRAFT_TARGET_ARGS="--target-arch $(VSCODE_ARCH)" ;;
-      esac
-      (cd $SNAP_ROOT/code-* && sudo --preserve-env snapcraft prime $SNAPCRAFT_TARGET_ARGS && snap pack prime --compression=lzo --filename="$SNAP_PATH")
-
-      # Export SNAP_PATH
-      echo "##vso[task.setvariable variable=SNAP_PATH]$SNAP_PATH"
-    displayName: Prepare for publish
-
-  - publish: $(SNAP_PATH)
-    artifact: vscode_client_linux_$(VSCODE_ARCH)_snap
-    displayName: Publish snap package
-    condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
diff --git a/lib/vscode/build/azure-pipelines/linux/xvfb.init b/lib/vscode/build/azure-pipelines/linux/xvfb.init
deleted file mode 100644
index 2365c09f3a46..000000000000
--- a/lib/vscode/build/azure-pipelines/linux/xvfb.init
+++ /dev/null
@@ -1,53 +0,0 @@
-#!/bin/bash
-#
-# /etc/rc.d/init.d/xvfbd
-#
-# chkconfig: 345 95 28
-# description: Starts/Stops X Virtual Framebuffer server
-# processname: Xvfb
-#
-### BEGIN INIT INFO
-# Provides:          xvfb
-# Required-Start:    $remote_fs $syslog
-# Required-Stop:     $remote_fs $syslog
-# Default-Start:     2 3 4 5
-# Default-Stop:      0 1 6
-# Short-Description: Start xvfb at boot time
-# Description:       Enable xvfb provided by daemon.
-### END INIT INFO
-
-[ "${NETWORKING}" = "no" ] && exit 0
-
-PROG="/usr/bin/Xvfb"
-PROG_OPTIONS=":10 -ac -screen 0 1024x768x24"
-PROG_OUTPUT="/tmp/Xvfb.out"
-
-case "$1" in
-	start)
-		echo "Starting : X Virtual Frame Buffer "
-		$PROG $PROG_OPTIONS>>$PROG_OUTPUT 2>&1 &
-		disown -ar
-	;;
-	stop)
-		echo "Shutting down : X Virtual Frame Buffer"
-		killproc $PROG
-		RETVAL=$?
-		[ $RETVAL -eq 0 ] && /bin/rm -f /var/lock/subsys/Xvfb
-		/var/run/Xvfb.pid
-		echo
-	;;
-	restart|reload)
-		$0 stop
-		$0 start
-		RETVAL=$?
-	;;
-	status)
-		status Xvfb
-		RETVAL=$?
-	;;
-	*)
-		echo $"Usage: $0 (start|stop|restart|reload|status)"
-		exit 1
-esac
-
-exit $RETVAL
diff --git a/lib/vscode/build/azure-pipelines/mixin.js b/lib/vscode/build/azure-pipelines/mixin.js
deleted file mode 100644
index 62ad40ba0994..000000000000
--- a/lib/vscode/build/azure-pipelines/mixin.js
+++ /dev/null
@@ -1,58 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-'use strict';
-Object.defineProperty(exports, "__esModule", { value: true });
-const json = require("gulp-json-editor");
-const buffer = require('gulp-buffer');
-const filter = require("gulp-filter");
-const es = require("event-stream");
-const vfs = require("vinyl-fs");
-const fancyLog = require("fancy-log");
-const ansiColors = require("ansi-colors");
-const fs = require("fs");
-const path = require("path");
-function main() {
-    const quality = process.env['VSCODE_QUALITY'];
-    if (!quality) {
-        console.log('Missing VSCODE_QUALITY, skipping mixin');
-        return;
-    }
-    const productJsonFilter = filter(f => f.relative === 'product.json', { restore: true });
-    fancyLog(ansiColors.blue('[mixin]'), `Mixing in sources:`);
-    return vfs
-        .src(`quality/${quality}/**`, { base: `quality/${quality}` })
-        .pipe(filter(f => !f.isDirectory()))
-        .pipe(productJsonFilter)
-        .pipe(buffer())
-        .pipe(json((o) => {
-        const ossProduct = JSON.parse(fs.readFileSync(path.join(__dirname, '..', '..', 'product.json'), 'utf8'));
-        let builtInExtensions = ossProduct.builtInExtensions;
-        if (Array.isArray(o.builtInExtensions)) {
-            fancyLog(ansiColors.blue('[mixin]'), 'Overwriting built-in extensions:', o.builtInExtensions.map(e => e.name));
-            builtInExtensions = o.builtInExtensions;
-        }
-        else if (o.builtInExtensions) {
-            const include = o.builtInExtensions['include'] || [];
-            const exclude = o.builtInExtensions['exclude'] || [];
-            fancyLog(ansiColors.blue('[mixin]'), 'OSS built-in extensions:', builtInExtensions.map(e => e.name));
-            fancyLog(ansiColors.blue('[mixin]'), 'Including built-in extensions:', include.map(e => e.name));
-            fancyLog(ansiColors.blue('[mixin]'), 'Excluding built-in extensions:', exclude);
-            builtInExtensions = builtInExtensions.filter(ext => !include.find(e => e.name === ext.name) && !exclude.find(name => name === ext.name));
-            builtInExtensions = [...builtInExtensions, ...include];
-            fancyLog(ansiColors.blue('[mixin]'), 'Final built-in extensions:', builtInExtensions.map(e => e.name));
-        }
-        else {
-            fancyLog(ansiColors.blue('[mixin]'), 'Inheriting OSS built-in extensions', builtInExtensions.map(e => e.name));
-        }
-        return Object.assign(Object.assign({ webBuiltInExtensions: ossProduct.webBuiltInExtensions }, o), { builtInExtensions });
-    }))
-        .pipe(productJsonFilter.restore)
-        .pipe(es.mapSync(function (f) {
-        fancyLog(ansiColors.blue('[mixin]'), f.relative, ansiColors.green('✔︎'));
-        return f;
-    }))
-        .pipe(vfs.dest('.'));
-}
-main();
diff --git a/lib/vscode/build/azure-pipelines/mixin.ts b/lib/vscode/build/azure-pipelines/mixin.ts
deleted file mode 100644
index b6818d6957db..000000000000
--- a/lib/vscode/build/azure-pipelines/mixin.ts
+++ /dev/null
@@ -1,86 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-'use strict';
-
-import * as json from 'gulp-json-editor';
-const buffer = require('gulp-buffer');
-import * as filter from 'gulp-filter';
-import * as es from 'event-stream';
-import * as Vinyl from 'vinyl';
-import * as vfs from 'vinyl-fs';
-import * as fancyLog from 'fancy-log';
-import * as ansiColors from 'ansi-colors';
-import * as fs from 'fs';
-import * as path from 'path';
-
-interface IBuiltInExtension {
-	readonly name: string;
-	readonly version: string;
-	readonly repo: string;
-	readonly metadata: any;
-}
-
-interface OSSProduct {
-	readonly builtInExtensions: IBuiltInExtension[];
-	readonly webBuiltInExtensions?: IBuiltInExtension[];
-}
-
-interface Product {
-	readonly builtInExtensions?: IBuiltInExtension[] | { 'include'?: IBuiltInExtension[], 'exclude'?: string[] };
-	readonly webBuiltInExtensions?: IBuiltInExtension[];
-}
-
-function main() {
-	const quality = process.env['VSCODE_QUALITY'];
-
-	if (!quality) {
-		console.log('Missing VSCODE_QUALITY, skipping mixin');
-		return;
-	}
-
-	const productJsonFilter = filter(f => f.relative === 'product.json', { restore: true });
-
-	fancyLog(ansiColors.blue('[mixin]'), `Mixing in sources:`);
-	return vfs
-		.src(`quality/${quality}/**`, { base: `quality/${quality}` })
-		.pipe(filter(f => !f.isDirectory()))
-		.pipe(productJsonFilter)
-		.pipe(buffer())
-		.pipe(json((o: Product) => {
-			const ossProduct = JSON.parse(fs.readFileSync(path.join(__dirname, '..', '..', 'product.json'), 'utf8')) as OSSProduct;
-			let builtInExtensions = ossProduct.builtInExtensions;
-
-			if (Array.isArray(o.builtInExtensions)) {
-				fancyLog(ansiColors.blue('[mixin]'), 'Overwriting built-in extensions:', o.builtInExtensions.map(e => e.name));
-
-				builtInExtensions = o.builtInExtensions;
-			} else if (o.builtInExtensions) {
-				const include = o.builtInExtensions['include'] || [];
-				const exclude = o.builtInExtensions['exclude'] || [];
-
-				fancyLog(ansiColors.blue('[mixin]'), 'OSS built-in extensions:', builtInExtensions.map(e => e.name));
-				fancyLog(ansiColors.blue('[mixin]'), 'Including built-in extensions:', include.map(e => e.name));
-				fancyLog(ansiColors.blue('[mixin]'), 'Excluding built-in extensions:', exclude);
-
-				builtInExtensions = builtInExtensions.filter(ext => !include.find(e => e.name === ext.name) && !exclude.find(name => name === ext.name));
-				builtInExtensions = [...builtInExtensions, ...include];
-
-				fancyLog(ansiColors.blue('[mixin]'), 'Final built-in extensions:', builtInExtensions.map(e => e.name));
-			} else {
-				fancyLog(ansiColors.blue('[mixin]'), 'Inheriting OSS built-in extensions', builtInExtensions.map(e => e.name));
-			}
-
-			return { webBuiltInExtensions: ossProduct.webBuiltInExtensions, ...o, builtInExtensions };
-		}))
-		.pipe(productJsonFilter.restore)
-		.pipe(es.mapSync(function (f: Vinyl) {
-			fancyLog(ansiColors.blue('[mixin]'), f.relative, ansiColors.green('✔︎'));
-			return f;
-		}))
-		.pipe(vfs.dest('.'));
-}
-
-main();
diff --git a/lib/vscode/build/azure-pipelines/product-build.yml b/lib/vscode/build/azure-pipelines/product-build.yml
deleted file mode 100644
index 2c475b9deddd..000000000000
--- a/lib/vscode/build/azure-pipelines/product-build.yml
+++ /dev/null
@@ -1,332 +0,0 @@
-pr: none
-
-schedules:
-  - cron: "0 5 * * Mon-Fri"
-    displayName: Mon-Fri at 7:00
-    branches:
-      include:
-        - main
-
-parameters:
-  - name: VSCODE_QUALITY
-    displayName: Quality
-    type: string
-    default: insider
-    values:
-      - exploration
-      - insider
-      - stable
-  - name: ENABLE_TERRAPIN
-    displayName: "Enable Terrapin"
-    type: boolean
-    default: true
-  - name: VSCODE_BUILD_WIN32
-    displayName: "🎯 Windows x64"
-    type: boolean
-    default: true
-  - name: VSCODE_BUILD_WIN32_32BIT
-    displayName: "🎯 Windows ia32"
-    type: boolean
-    default: true
-  - name: VSCODE_BUILD_WIN32_ARM64
-    displayName: "🎯 Windows arm64"
-    type: boolean
-    default: true
-  - name: VSCODE_BUILD_LINUX
-    displayName: "🎯 Linux x64"
-    type: boolean
-    default: true
-  - name: VSCODE_BUILD_LINUX_ARM64
-    displayName: "🎯 Linux arm64"
-    type: boolean
-    default: true
-  - name: VSCODE_BUILD_LINUX_ARMHF
-    displayName: "🎯 Linux armhf"
-    type: boolean
-    default: true
-  - name: VSCODE_BUILD_LINUX_ALPINE
-    displayName: "🎯 Alpine Linux"
-    type: boolean
-    default: true
-  - name: VSCODE_BUILD_MACOS
-    displayName: "🎯 macOS x64"
-    type: boolean
-    default: true
-  - name: VSCODE_BUILD_MACOS_ARM64
-    displayName: "🎯 macOS arm64"
-    type: boolean
-    default: true
-  - name: VSCODE_BUILD_MACOS_UNIVERSAL
-    displayName: "🎯 macOS universal"
-    type: boolean
-    default: true
-  - name: VSCODE_BUILD_WEB
-    displayName: "🎯 Web"
-    type: boolean
-    default: true
-  - name: VSCODE_PUBLISH
-    displayName: "Publish to builds.code.visualstudio.com"
-    type: boolean
-    default: true
-  - name: VSCODE_RELEASE
-    displayName: "Release build if successful"
-    type: boolean
-    default: false
-  - name: VSCODE_COMPILE_ONLY
-    displayName: "Run Compile stage exclusively"
-    type: boolean
-    default: false
-  - name: VSCODE_STEP_ON_IT
-    displayName: "Skip tests"
-    type: boolean
-    default: false
-
-variables:
-  - name: ENABLE_TERRAPIN
-    value: ${{ eq(parameters.ENABLE_TERRAPIN, true) }}
-  - name: VSCODE_QUALITY
-    value: ${{ parameters.VSCODE_QUALITY }}
-  - name: VSCODE_RELEASE
-    value: ${{ parameters.VSCODE_RELEASE }}
-  - name: VSCODE_BUILD_STAGE_WINDOWS
-    value: ${{ or(eq(parameters.VSCODE_BUILD_WIN32, true), eq(parameters.VSCODE_BUILD_WIN32_32BIT, true), eq(parameters.VSCODE_BUILD_WIN32_ARM64, true)) }}
-  - name: VSCODE_BUILD_STAGE_LINUX
-    value: ${{ or(eq(parameters.VSCODE_BUILD_LINUX, true), eq(parameters.VSCODE_BUILD_LINUX_ARMHF, true), eq(parameters.VSCODE_BUILD_LINUX_ARM64, true), eq(parameters.VSCODE_BUILD_LINUX_ALPINE, true), eq(parameters.VSCODE_BUILD_WEB, true)) }}
-  - name: VSCODE_BUILD_STAGE_MACOS
-    value: ${{ or(eq(parameters.VSCODE_BUILD_MACOS, true), eq(parameters.VSCODE_BUILD_MACOS_ARM64, true)) }}
-  - name: VSCODE_CIBUILD
-    value: ${{ in(variables['Build.Reason'], 'IndividualCI', 'BatchedCI') }}
-  - name: VSCODE_PUBLISH
-    value: ${{ and(eq(parameters.VSCODE_PUBLISH, true), eq(variables.VSCODE_CIBUILD, false)) }}
-  - name: VSCODE_SCHEDULEDBUILD
-    value: ${{ eq(variables['Build.Reason'], 'Schedule') }}
-  - name: VSCODE_STEP_ON_IT
-    value: ${{ eq(parameters.VSCODE_STEP_ON_IT, true) }}
-  - name: VSCODE_BUILD_MACOS_UNIVERSAL
-    value: ${{ and(eq(variables['VSCODE_PUBLISH'], true), eq(parameters.VSCODE_BUILD_MACOS, true), eq(parameters.VSCODE_BUILD_MACOS_ARM64, true), eq(parameters.VSCODE_BUILD_MACOS_UNIVERSAL, true)) }}
-
-resources:
-  containers:
-    - container: vscode-x64
-      image: vscodehub.azurecr.io/vscode-linux-build-agent:bionic-x64
-      endpoint: VSCodeHub
-      options: --user 0:0
-    - container: vscode-arm64
-      image: vscodehub.azurecr.io/vscode-linux-build-agent:stretch-arm64
-      endpoint: VSCodeHub
-    - container: vscode-armhf
-      image: vscodehub.azurecr.io/vscode-linux-build-agent:stretch-armhf
-      endpoint: VSCodeHub
-    - container: snapcraft
-      image: snapcore/snapcraft:stable
-
-stages:
-  - stage: Compile
-    jobs:
-      - job: Compile
-        pool: compile
-        variables:
-          VSCODE_ARCH: x64
-        steps:
-          - template: product-compile.yml
-
-  - ${{ if and(eq(parameters.VSCODE_COMPILE_ONLY, false), eq(variables['VSCODE_BUILD_STAGE_WINDOWS'], true)) }}:
-    - stage: Windows
-      dependsOn:
-        - Compile
-      pool:
-        vmImage: VS2017-Win2016
-      jobs:
-
-        - ${{ if eq(parameters.VSCODE_BUILD_WIN32, true) }}:
-          - job: Windows
-            timeoutInMinutes: 90
-            variables:
-              VSCODE_ARCH: x64
-            steps:
-              - template: win32/product-build-win32.yml
-
-        - ${{ if and(eq(variables['VSCODE_CIBUILD'], false), eq(parameters.VSCODE_BUILD_WIN32_32BIT, true)) }}:
-          - job: Windows32
-            timeoutInMinutes: 90
-            variables:
-              VSCODE_ARCH: ia32
-            steps:
-              - template: win32/product-build-win32.yml
-
-        - ${{ if and(eq(variables['VSCODE_CIBUILD'], false), eq(parameters.VSCODE_BUILD_WIN32_ARM64, true)) }}:
-          - job: WindowsARM64
-            timeoutInMinutes: 90
-            variables:
-              VSCODE_ARCH: arm64
-            steps:
-              - template: win32/product-build-win32.yml
-
-  - ${{ if and(eq(parameters.VSCODE_COMPILE_ONLY, false), eq(variables['VSCODE_BUILD_STAGE_LINUX'], true)) }}:
-    - stage: Linux
-      dependsOn:
-        - Compile
-      pool:
-        vmImage: "Ubuntu-18.04"
-      jobs:
-
-        - ${{ if eq(parameters.VSCODE_BUILD_LINUX, true) }}:
-          - job: Linux
-            container: vscode-x64
-            variables:
-              VSCODE_ARCH: x64
-              NPM_ARCH: x64
-            steps:
-              - template: linux/product-build-linux.yml
-
-        - ${{ if and(eq(variables['VSCODE_CIBUILD'], false), eq(parameters.VSCODE_BUILD_LINUX, true)) }}:
-          - job: LinuxSnap
-            dependsOn:
-              - Linux
-            container: snapcraft
-            variables:
-              VSCODE_ARCH: x64
-            steps:
-              - template: linux/snap-build-linux.yml
-
-        - ${{ if and(eq(variables['VSCODE_CIBUILD'], false), eq(parameters.VSCODE_BUILD_LINUX_ARMHF, true)) }}:
-          - job: LinuxArmhf
-            container: vscode-armhf
-            variables:
-              VSCODE_ARCH: armhf
-              NPM_ARCH: armv7l
-            steps:
-              - template: linux/product-build-linux.yml
-
-        # TODO@joaomoreno: We don't ship ARM snaps for now
-        - ${{ if and(false, eq(variables['VSCODE_CIBUILD'], false), eq(parameters.VSCODE_BUILD_LINUX_ARMHF, true)) }}:
-          - job: LinuxSnapArmhf
-            dependsOn:
-              - LinuxArmhf
-            container: snapcraft
-            variables:
-              VSCODE_ARCH: armhf
-            steps:
-              - template: linux/snap-build-linux.yml
-
-        - ${{ if and(eq(variables['VSCODE_CIBUILD'], false), eq(parameters.VSCODE_BUILD_LINUX_ARM64, true)) }}:
-          - job: LinuxArm64
-            container: vscode-arm64
-            variables:
-              VSCODE_ARCH: arm64
-              NPM_ARCH: arm64
-            steps:
-              - template: linux/product-build-linux.yml
-
-        # TODO@joaomoreno: We don't ship ARM snaps for now
-        - ${{ if and(false, eq(variables['VSCODE_CIBUILD'], false), eq(parameters.VSCODE_BUILD_LINUX_ARM64, true)) }}:
-          - job: LinuxSnapArm64
-            dependsOn:
-              - LinuxArm64
-            container: snapcraft
-            variables:
-              VSCODE_ARCH: arm64
-            steps:
-              - template: linux/snap-build-linux.yml
-
-        - ${{ if and(eq(variables['VSCODE_CIBUILD'], false), eq(parameters.VSCODE_BUILD_LINUX_ALPINE, true)) }}:
-          - job: LinuxAlpine
-            steps:
-              - template: linux/product-build-alpine.yml
-
-        - ${{ if and(eq(variables['VSCODE_CIBUILD'], false), eq(parameters.VSCODE_BUILD_WEB, true)) }}:
-          - job: LinuxWeb
-            variables:
-              VSCODE_ARCH: x64
-            steps:
-              - template: web/product-build-web.yml
-
-  - ${{ if and(eq(parameters.VSCODE_COMPILE_ONLY, false), eq(variables['VSCODE_BUILD_STAGE_MACOS'], true)) }}:
-    - stage: macOS
-      dependsOn:
-        - Compile
-      pool:
-        vmImage: macOS-latest
-      jobs:
-
-        - ${{ if eq(parameters.VSCODE_BUILD_MACOS, true) }}:
-          - job: macOS
-            timeoutInMinutes: 90
-            variables:
-              VSCODE_ARCH: x64
-            steps:
-              - template: darwin/product-build-darwin.yml
-          - ${{ if ne(variables['VSCODE_PUBLISH'], 'false') }}:
-            - job: macOSSign
-              dependsOn:
-                - macOS
-              timeoutInMinutes: 90
-              variables:
-                VSCODE_ARCH: x64
-              steps:
-                - template: darwin/product-build-darwin-sign.yml
-
-        - ${{ if and(eq(variables['VSCODE_CIBUILD'], false), eq(parameters.VSCODE_BUILD_MACOS_ARM64, true)) }}:
-          - job: macOSARM64
-            timeoutInMinutes: 90
-            variables:
-              VSCODE_ARCH: arm64
-            steps:
-              - template: darwin/product-build-darwin.yml
-          - ${{ if ne(variables['VSCODE_PUBLISH'], 'false') }}:
-            - job: macOSARM64Sign
-              dependsOn:
-                - macOSARM64
-              timeoutInMinutes: 90
-              variables:
-                VSCODE_ARCH: arm64
-              steps:
-                - template: darwin/product-build-darwin-sign.yml
-
-        - ${{ if eq(variables['VSCODE_BUILD_MACOS_UNIVERSAL'], true) }}:
-          - job: macOSUniversal
-            dependsOn:
-              - macOS
-              - macOSARM64
-            timeoutInMinutes: 90
-            variables:
-              VSCODE_ARCH: universal
-            steps:
-              - template: darwin/product-build-darwin.yml
-          - ${{ if ne(variables['VSCODE_PUBLISH'], 'false') }}:
-            - job: macOSUniversalSign
-              dependsOn:
-                - macOSUniversal
-              timeoutInMinutes: 90
-              variables:
-                VSCODE_ARCH: universal
-              steps:
-                - template: darwin/product-build-darwin-sign.yml
-
-  - ${{ if and(eq(parameters.VSCODE_COMPILE_ONLY, false), ne(variables['VSCODE_PUBLISH'], 'false')) }}:
-    - stage: Publish
-      dependsOn:
-        - Compile
-      pool:
-        vmImage: "Ubuntu-18.04"
-      variables:
-        - name: BUILDS_API_URL
-          value: $(System.CollectionUri)$(System.TeamProject)/_apis/build/builds/$(Build.BuildId)/
-      jobs:
-        - job: PublishBuild
-          timeoutInMinutes: 180
-          displayName: Publish Build
-          steps:
-            - template: product-publish.yml
-
-    - ${{ if or(eq(parameters.VSCODE_RELEASE, true), and(in(parameters.VSCODE_QUALITY, 'insider', 'exploration'), eq(variables['VSCODE_SCHEDULEDBUILD'], true))) }}:
-      - stage: Release
-        dependsOn:
-          - Publish
-        pool:
-          vmImage: "Ubuntu-18.04"
-        jobs:
-          - job: ReleaseBuild
-            displayName: Release Build
-            steps:
-              - template: product-release.yml
diff --git a/lib/vscode/build/azure-pipelines/product-compile.yml b/lib/vscode/build/azure-pipelines/product-compile.yml
deleted file mode 100644
index 18c17639b830..000000000000
--- a/lib/vscode/build/azure-pipelines/product-compile.yml
+++ /dev/null
@@ -1,143 +0,0 @@
-steps:
-  - task: NodeTool@0
-    inputs:
-      versionSpec: "14.x"
-
-  - task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2
-    inputs:
-      versionSpec: "1.x"
-
-  - task: AzureKeyVault@1
-    displayName: "Azure Key Vault: Get Secrets"
-    inputs:
-      azureSubscription: "vscode-builds-subscription"
-      KeyVaultName: vscode
-
-  - script: |
-      set -e
-      cat << EOF > ~/.netrc
-      machine github.com
-      login vscode
-      password $(github-distro-mixin-password)
-      EOF
-
-      git config user.email "vscode@microsoft.com"
-      git config user.name "VSCode"
-    displayName: Prepare tooling
-
-  - script: |
-      set -e
-      git pull --no-rebase https://github.com/$(VSCODE_MIXIN_REPO).git $(node -p "require('./package.json').distro")
-    displayName: Merge distro
-
-  - script: |
-      mkdir -p .build
-      node build/azure-pipelines/common/computeNodeModulesCacheKey.js $VSCODE_ARCH $ENABLE_TERRAPIN > .build/yarnlockhash
-    displayName: Prepare yarn cache flags
-
-  # using `genericNodeModules` instead of `nodeModules` here to avoid sharing the cache with builds running inside containers
-  - task: Cache@2
-    inputs:
-      key: 'genericNodeModules | $(Agent.OS) | .build/yarnlockhash'
-      path: .build/node_modules_cache
-      cacheHitVar: NODE_MODULES_RESTORED
-    displayName: Restore node_modules cache
-
-  - script: |
-      set -e
-      tar -xzf .build/node_modules_cache/cache.tgz
-    condition: and(succeeded(), eq(variables.NODE_MODULES_RESTORED, 'true'))
-    displayName: Extract node_modules cache
-
-  - script: |
-      set -e
-      npx https://aka.ms/enablesecurefeed standAlone
-    timeoutInMinutes: 5
-    condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'), eq(variables['ENABLE_TERRAPIN'], 'true'))
-    displayName: Switch to Terrapin packages
-
-  - script: |
-      set -e
-      sudo apt update -y
-      sudo apt install -y build-essential pkg-config libx11-dev libx11-xcb-dev libxkbfile-dev libsecret-1-dev libnotify-bin
-    displayName: Install build tools
-    condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'))
-
-  - script: |
-      set -e
-      for i in {1..3}; do # try 3 times, for Terrapin
-        yarn --frozen-lockfile && break
-        if [ $i -eq 3 ]; then
-          echo "Yarn failed too many times" >&2
-          exit 1
-        fi
-        echo "Yarn failed $i, trying again..."
-      done
-    env:
-      ELECTRON_SKIP_BINARY_DOWNLOAD: 1
-      PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1
-    displayName: Install dependencies
-    condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'))
-
-  - script: |
-      set -e
-      node build/azure-pipelines/common/listNodeModules.js .build/node_modules_list.txt
-      mkdir -p .build/node_modules_cache
-      tar -czf .build/node_modules_cache/cache.tgz --files-from .build/node_modules_list.txt
-    condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'))
-    displayName: Create node_modules archive
-
-  # Mixin must run before optimize, because the CSS loader will inline small SVGs
-  - script: |
-      set -e
-      node build/azure-pipelines/mixin
-    displayName: Mix in quality
-
-  - script: |
-      set -e
-      yarn npm-run-all -lp core-ci extensions-ci hygiene eslint valid-layers-check
-    displayName: Compile & Hygiene
-
-  - script: |
-      set -e
-      AZURE_STORAGE_ACCESS_KEY="$(ticino-storage-key)" \
-        node build/azure-pipelines/upload-sourcemaps
-    displayName: Upload sourcemaps
-    condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
-
-  - script: |
-      set -
-      ./build/azure-pipelines/common/extract-telemetry.sh
-    displayName: Extract Telemetry
-    condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
-
-  - script: |
-      set -e
-      AZURE_WEBVIEW_STORAGE_ACCESS_KEY="$(vscode-webview-storage-key)" \
-      ./build/azure-pipelines/common/publish-webview.sh
-    displayName: Publish Webview
-    condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
-
-  # we gotta tarball everything in order to preserve file permissions
-  - script: |
-      set -e
-      tar -czf $(Build.ArtifactStagingDirectory)/compilation.tar.gz .build out-*
-    displayName: Compress compilation artifact
-
-  - task: PublishPipelineArtifact@1
-    inputs:
-      targetPath: $(Build.ArtifactStagingDirectory)/compilation.tar.gz
-      artifactName: Compilation
-    displayName: Publish compilation artifact
-
-  - script: |
-      set -e
-      VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
-        yarn download-builtin-extensions-cg
-    displayName: Built-in extensions component details
-
-  - task: ms.vss-governance-buildtask.governance-build-task-component-detection.ComponentGovernanceComponentDetection@0
-    displayName: "Component Detection"
-    inputs:
-      sourceScanPath: $(Build.SourcesDirectory)
-    continueOnError: true
diff --git a/lib/vscode/build/azure-pipelines/product-publish.ps1 b/lib/vscode/build/azure-pipelines/product-publish.ps1
deleted file mode 100644
index 339002ab0c17..000000000000
--- a/lib/vscode/build/azure-pipelines/product-publish.ps1
+++ /dev/null
@@ -1,114 +0,0 @@
-. build/azure-pipelines/win32/exec.ps1
-$ErrorActionPreference = 'Stop'
-$ProgressPreference = 'SilentlyContinue'
-$ARTIFACT_PROCESSED_WILDCARD_PATH = "$env:PIPELINE_WORKSPACE/artifacts_processed_*/artifacts_processed_*"
-$ARTIFACT_PROCESSED_FILE_PATH = "$env:PIPELINE_WORKSPACE/artifacts_processed_$env:SYSTEM_STAGEATTEMPT/artifacts_processed_$env:SYSTEM_STAGEATTEMPT.txt"
-
-function Get-PipelineArtifact {
-	param($Name = '*')
-	try {
-		$res = Invoke-RestMethod "$($env:BUILDS_API_URL)artifacts?api-version=6.0" -Headers @{
-			Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"
-		} -MaximumRetryCount 5 -RetryIntervalSec 1
-
-		if (!$res) {
-			return
-		}
-
-		$res.value | Where-Object { $_.name -Like $Name }
-	} catch {
-		Write-Warning $_
-	}
-}
-
-# This set will keep track of which artifacts have already been processed
-$set = [System.Collections.Generic.HashSet[string]]::new()
-
-if (Test-Path $ARTIFACT_PROCESSED_WILDCARD_PATH) {
-	# Grab the latest artifact_processed text file and load all assets already processed from that.
-	# This means that the latest artifact_processed_*.txt file has all of the contents of the previous ones.
-	# Note: The kusto-like syntax only works in PS7+ and only in scripts, not at the REPL.
-	Get-ChildItem $ARTIFACT_PROCESSED_WILDCARD_PATH
-		| Sort-Object
-		| Select-Object -Last 1
-		| Get-Content
-		| ForEach-Object {
-			$set.Add($_) | Out-Null
-			Write-Host "Already processed artifact: $_"
-		}
-}
-
-# Create the artifact file that will be used for this run
-New-Item -Path $ARTIFACT_PROCESSED_FILE_PATH -Force | Out-Null
-
-# Determine which stages we need to watch
-$stages = @(
-	if ($env:VSCODE_BUILD_STAGE_WINDOWS -eq 'True') { 'Windows' }
-	if ($env:VSCODE_BUILD_STAGE_LINUX -eq 'True') { 'Linux' }
-	if ($env:VSCODE_BUILD_STAGE_MACOS -eq 'True') { 'macOS' }
-)
-
-do {
-	Start-Sleep -Seconds 10
-
-	$artifacts = Get-PipelineArtifact -Name 'vscode_*'
-	if (!$artifacts) {
-		continue
-	}
-
-	$artifacts | ForEach-Object {
-		$artifactName = $_.name
-		if($set.Add($artifactName)) {
-			Write-Host "Processing artifact: '$artifactName. Downloading from: $($_.resource.downloadUrl)"
-
-			try {
-				Invoke-RestMethod $_.resource.downloadUrl -OutFile "$env:AGENT_TEMPDIRECTORY/$artifactName.zip" -Headers @{
-					Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"
-				} -MaximumRetryCount 5 -RetryIntervalSec 1  | Out-Null
-
-				Expand-Archive -Path "$env:AGENT_TEMPDIRECTORY/$artifactName.zip" -DestinationPath $env:AGENT_TEMPDIRECTORY | Out-Null
-			} catch {
-				Write-Warning $_
-				$set.Remove($artifactName) | Out-Null
-				continue
-			}
-
-			$null,$product,$os,$arch,$type = $artifactName -split '_'
-			$asset = Get-ChildItem -rec "$env:AGENT_TEMPDIRECTORY/$artifactName"
-			Write-Host "Processing artifact with the following values:"
-			# turning in into an object just to log nicely
-			@{
-				product = $product
-				os = $os
-				arch = $arch
-				type = $type
-				asset = $asset.Name
-			} | Format-Table
-
-			exec { node build/azure-pipelines/common/createAsset.js $product $os $arch $type $asset.Name $asset.FullName }
-			$artifactName >> $ARTIFACT_PROCESSED_FILE_PATH
-		}
-	}
-
-	# Get the timeline and see if it says the other stage completed
-	try {
-		$timeline = Invoke-RestMethod "$($env:BUILDS_API_URL)timeline?api-version=6.0" -Headers @{
-			Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"
-		}  -MaximumRetryCount 5 -RetryIntervalSec 1
-	} catch {
-		Write-Warning $_
-		continue
-	}
-
-	foreach ($stage in $stages) {
-		$otherStageFinished = $timeline.records | Where-Object { $_.name -eq $stage -and $_.type -eq 'stage' -and $_.state -eq 'completed' }
-		if (!$otherStageFinished) {
-			break
-		}
-	}
-
-	$artifacts = Get-PipelineArtifact -Name 'vscode_*'
-	$artifactsStillToProcess = $artifacts.Count -ne $set.Count
-} while (!$otherStageFinished -or $artifactsStillToProcess)
-
-Write-Host "Processed $($set.Count) artifacts."
diff --git a/lib/vscode/build/azure-pipelines/product-publish.yml b/lib/vscode/build/azure-pipelines/product-publish.yml
deleted file mode 100644
index de8cb216b8a1..000000000000
--- a/lib/vscode/build/azure-pipelines/product-publish.yml
+++ /dev/null
@@ -1,89 +0,0 @@
-steps:
-  - task: NodeTool@0
-    inputs:
-      versionSpec: "12.x"
-
-  - task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2
-    inputs:
-      versionSpec: "1.x"
-
-  - task: AzureKeyVault@1
-    displayName: "Azure Key Vault: Get Secrets"
-    inputs:
-      azureSubscription: "vscode-builds-subscription"
-      KeyVaultName: vscode
-
-  - pwsh: |
-      . build/azure-pipelines/win32/exec.ps1
-      cd build
-      exec { yarn }
-    displayName: Install dependencies
-
-  - download: current
-    patterns: '**/artifacts_processed_*.txt'
-    displayName: Download all artifacts_processed text files
-
-  - pwsh: |
-      . build/azure-pipelines/win32/exec.ps1
-
-      if (Test-Path "$(Pipeline.Workspace)/artifacts_processed_*/artifacts_processed_*.txt") {
-        Write-Host "Artifacts already processed so a build must have already been created."
-        return
-      }
-
-      $env:AZURE_DOCUMENTDB_MASTERKEY = "$(builds-docdb-key-readwrite)"
-      $VERSION = node -p "require('./package.json').version"
-      Write-Host "Creating build with version: $VERSION"
-      exec { node build/azure-pipelines/common/createBuild.js $VERSION }
-    displayName: Create build if it hasn't been created before
-
-  - pwsh: |
-      $env:VSCODE_MIXIN_PASSWORD = "$(github-distro-mixin-password)"
-      $env:AZURE_DOCUMENTDB_MASTERKEY = "$(builds-docdb-key-readwrite)"
-      $env:AZURE_STORAGE_ACCESS_KEY = "$(ticino-storage-key)"
-      $env:AZURE_STORAGE_ACCESS_KEY_2 = "$(vscode-storage-key)"
-      $env:MOONCAKE_STORAGE_ACCESS_KEY = "$(vscode-mooncake-storage-key)"
-      build/azure-pipelines/product-publish.ps1
-    env:
-      SYSTEM_ACCESSTOKEN: $(System.AccessToken)
-    displayName: Process artifacts
-
-  - publish: $(Pipeline.Workspace)/artifacts_processed_$(System.StageAttempt)/artifacts_processed_$(System.StageAttempt).txt
-    artifact: artifacts_processed_$(System.StageAttempt)
-    displayName: Publish what artifacts were published for this stage attempt
-
-  - pwsh: |
-      $ErrorActionPreference = 'Stop'
-
-      # Determine which stages we need to watch
-      $stages = @(
-        if ($env:VSCODE_BUILD_STAGE_WINDOWS -eq 'True') { 'Windows' }
-        if ($env:VSCODE_BUILD_STAGE_LINUX -eq 'True') { 'Linux' }
-        if ($env:VSCODE_BUILD_STAGE_MACOS -eq 'True') { 'macOS' }
-      )
-      Write-Host "Stages to check: $stages"
-
-      # Get the timeline and see if it says the other stage completed
-      $timeline = Invoke-RestMethod "$($env:BUILDS_API_URL)timeline?api-version=6.0" -Headers @{
-        Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"
-      }  -MaximumRetryCount 5 -RetryIntervalSec 1
-
-      $failedStages = @()
-      foreach ($stage in $stages) {
-        $didStageFail = $timeline.records | Where-Object {
-          $_.name -eq $stage -and $_.type -eq 'stage' -and $_.result -ne 'succeeded' -and $_.result -ne 'succeededWithIssues'
-        }
-
-        if($didStageFail) {
-          $failedStages += $stage
-        } else {
-          Write-Host "'$stage' did not fail."
-        }
-      }
-
-      if ($failedStages.Length) {
-        throw "Failed stages: $($failedStages -join ', '). This stage will now fail so that it is easier to retry failed jobs."
-      }
-    env:
-      SYSTEM_ACCESSTOKEN: $(System.AccessToken)
-    displayName: Determine if stage should succeed
diff --git a/lib/vscode/build/azure-pipelines/product-release.yml b/lib/vscode/build/azure-pipelines/product-release.yml
deleted file mode 100644
index 1c5ec73c856e..000000000000
--- a/lib/vscode/build/azure-pipelines/product-release.yml
+++ /dev/null
@@ -1,22 +0,0 @@
-steps:
-  - task: NodeTool@0
-    inputs:
-      versionSpec: "14.x"
-
-  - task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2
-    inputs:
-      versionSpec: "1.x"
-
-  - task: AzureKeyVault@1
-    displayName: "Azure Key Vault: Get Secrets"
-    inputs:
-      azureSubscription: "vscode-builds-subscription"
-      KeyVaultName: vscode
-
-  - script: |
-      set -e
-
-      (cd build ; yarn)
-
-      AZURE_DOCUMENTDB_MASTERKEY="$(builds-docdb-key-readwrite)" \
-      node build/azure-pipelines/common/releaseBuild.js
diff --git a/lib/vscode/build/azure-pipelines/publish-types/check-version.js b/lib/vscode/build/azure-pipelines/publish-types/check-version.js
deleted file mode 100644
index b45ad3f4cc09..000000000000
--- a/lib/vscode/build/azure-pipelines/publish-types/check-version.js
+++ /dev/null
@@ -1,36 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-'use strict';
-Object.defineProperty(exports, "__esModule", { value: true });
-const cp = require("child_process");
-let tag = '';
-try {
-    tag = cp
-        .execSync('git describe --tags `git rev-list --tags --max-count=1`')
-        .toString()
-        .trim();
-    if (!isValidTag(tag)) {
-        throw Error(`Invalid tag ${tag}`);
-    }
-}
-catch (err) {
-    console.error(err);
-    console.error('Failed to update types');
-    process.exit(1);
-}
-function isValidTag(t) {
-    if (t.split('.').length !== 3) {
-        return false;
-    }
-    const [major, minor, bug] = t.split('.');
-    // Only release for tags like 1.34.0
-    if (bug !== '0') {
-        return false;
-    }
-    if (isNaN(parseInt(major, 10)) || isNaN(parseInt(minor, 10))) {
-        return false;
-    }
-    return true;
-}
diff --git a/lib/vscode/build/azure-pipelines/publish-types/check-version.ts b/lib/vscode/build/azure-pipelines/publish-types/check-version.ts
deleted file mode 100644
index 137e535353a4..000000000000
--- a/lib/vscode/build/azure-pipelines/publish-types/check-version.ts
+++ /dev/null
@@ -1,43 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-'use strict';
-
-import * as cp from 'child_process';
-
-let tag = '';
-try {
-	tag = cp
-		.execSync('git describe --tags `git rev-list --tags --max-count=1`')
-		.toString()
-		.trim();
-
-	if (!isValidTag(tag)) {
-		throw Error(`Invalid tag ${tag}`);
-	}
-} catch (err) {
-	console.error(err);
-	console.error('Failed to update types');
-	process.exit(1);
-}
-
-function isValidTag(t: string) {
-	if (t.split('.').length !== 3) {
-		return false;
-	}
-
-	const [major, minor, bug] = t.split('.');
-
-	// Only release for tags like 1.34.0
-	if (bug !== '0') {
-		return false;
-	}
-
-	if (isNaN(parseInt(major, 10)) || isNaN(parseInt(minor, 10))) {
-		return false;
-	}
-
-	return true;
-}
diff --git a/lib/vscode/build/azure-pipelines/publish-types/publish-types.yml b/lib/vscode/build/azure-pipelines/publish-types/publish-types.yml
deleted file mode 100644
index df8b665fbcdf..000000000000
--- a/lib/vscode/build/azure-pipelines/publish-types/publish-types.yml
+++ /dev/null
@@ -1,83 +0,0 @@
-# Publish @types/vscode for each release
-
-trigger:
-  branches:
-    include: ["refs/tags/*"]
-
-pr: none
-
-steps:
-  - task: NodeTool@0
-    inputs:
-      versionSpec: "14.x"
-
-  - task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2
-    inputs:
-      versionSpec: "1.x"
-
-  - bash: |
-      TAG_VERSION=$(git describe --tags `git rev-list --tags --max-count=1`)
-      CHANNEL="G1C14HJ2F"
-
-      if [ "$TAG_VERSION" == "1.999.0" ]; then
-        MESSAGE="<!here>. Someone pushed 1.999.0 tag. Please delete it ASAP from remote and local."
-
-        curl -X POST -H "Authorization: Bearer $(SLACK_TOKEN)" \
-        -H 'Content-type: application/json; charset=utf-8' \
-        --data '{"channel":"'"$CHANNEL"'", "link_names": true, "text":"'"$MESSAGE"'"}' \
-        https://slack.com/api/chat.postMessage
-
-        exit 1
-      fi
-    displayName: Check 1.999.0 tag
-
-  - bash: |
-      # Install build dependencies
-      (cd build && yarn)
-      node build/azure-pipelines/publish-types/check-version.js
-    displayName: Check version
-
-  - bash: |
-      git config --global user.email "vscode@microsoft.com"
-      git config --global user.name "VSCode"
-
-      git clone https://$(GITHUB_TOKEN)@github.com/DefinitelyTyped/DefinitelyTyped.git --depth=1
-      node build/azure-pipelines/publish-types/update-types.js
-
-      TAG_VERSION=$(git describe --tags `git rev-list --tags --max-count=1`)
-
-      cd DefinitelyTyped
-
-      git diff --color | cat
-      git add -A
-      git status
-      git checkout -b "vscode-types-$TAG_VERSION"
-      git commit -m "VS Code $TAG_VERSION Extension API"
-      git push origin "vscode-types-$TAG_VERSION"
-
-    displayName: Push update to DefinitelyTyped
-
-  - bash: |
-      TAG_VERSION=$(git describe --tags `git rev-list --tags --max-count=1`)
-      CHANNEL="G1C14HJ2F"
-
-      MESSAGE="DefinitelyTyped/DefinitelyTyped#vscode-types-$TAG_VERSION created. Endgame champion, please open this link, examine changes and create a PR:"
-      LINK="https://github.com/DefinitelyTyped/DefinitelyTyped/compare/vscode-types-$TAG_VERSION?quick_pull=1&body=Updating%20VS%20Code%20Extension%20API.%20See%20https%3A%2F%2Fgithub.com%2Fmicrosoft%2Fvscode%2Fissues%2F70175%20for%20details."
-      MESSAGE2="[@eamodio, @jrieken, @kmaetzel, @egamma]. Please review and merge PR to publish @types/vscode."
-
-      curl -X POST -H "Authorization: Bearer $(SLACK_TOKEN)" \
-      -H 'Content-type: application/json; charset=utf-8' \
-      --data '{"channel":"'"$CHANNEL"'", "link_names": true, "text":"'"$MESSAGE"'"}' \
-      https://slack.com/api/chat.postMessage
-
-      curl -X POST -H "Authorization: Bearer $(SLACK_TOKEN)" \
-      -H 'Content-type: application/json; charset=utf-8' \
-      --data '{"channel":"'"$CHANNEL"'", "link_names": true, "text":"'"$LINK"'"}' \
-      https://slack.com/api/chat.postMessage
-
-      curl -X POST -H "Authorization: Bearer $(SLACK_TOKEN)" \
-      -H 'Content-type: application/json; charset=utf-8' \
-      --data '{"channel":"'"$CHANNEL"'", "link_names": true, "text":"'"$MESSAGE2"'"}' \
-      https://slack.com/api/chat.postMessage
-
-    displayName: Send message on Slack
diff --git a/lib/vscode/build/azure-pipelines/publish-types/update-types.js b/lib/vscode/build/azure-pipelines/publish-types/update-types.js
deleted file mode 100644
index 3ceb35bdb5c0..000000000000
--- a/lib/vscode/build/azure-pipelines/publish-types/update-types.js
+++ /dev/null
@@ -1,72 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-'use strict';
-Object.defineProperty(exports, "__esModule", { value: true });
-const fs = require("fs");
-const cp = require("child_process");
-const path = require("path");
-let tag = '';
-try {
-    tag = cp
-        .execSync('git describe --tags `git rev-list --tags --max-count=1`')
-        .toString()
-        .trim();
-    const dtsUri = `https://raw.githubusercontent.com/microsoft/vscode/${tag}/src/vs/vscode.d.ts`;
-    const outPath = path.resolve(process.cwd(), 'DefinitelyTyped/types/vscode/index.d.ts');
-    cp.execSync(`curl ${dtsUri} --output ${outPath}`);
-    updateDTSFile(outPath, tag);
-    console.log(`Done updating vscode.d.ts at ${outPath}`);
-}
-catch (err) {
-    console.error(err);
-    console.error('Failed to update types');
-    process.exit(1);
-}
-function updateDTSFile(outPath, tag) {
-    const oldContent = fs.readFileSync(outPath, 'utf-8');
-    const newContent = getNewFileContent(oldContent, tag);
-    fs.writeFileSync(outPath, newContent);
-}
-function repeat(str, times) {
-    const result = new Array(times);
-    for (let i = 0; i < times; i++) {
-        result[i] = str;
-    }
-    return result.join('');
-}
-function convertTabsToSpaces(str) {
-    return str.replace(/\t/gm, value => repeat('    ', value.length));
-}
-function getNewFileContent(content, tag) {
-    const oldheader = [
-        `/*---------------------------------------------------------------------------------------------`,
-        ` *  Copyright (c) Microsoft Corporation. All rights reserved.`,
-        ` *  Licensed under the MIT License. See License.txt in the project root for license information.`,
-        ` *--------------------------------------------------------------------------------------------*/`
-    ].join('\n');
-    return convertTabsToSpaces(getNewFileHeader(tag) + content.slice(oldheader.length));
-}
-function getNewFileHeader(tag) {
-    const [major, minor] = tag.split('.');
-    const shorttag = `${major}.${minor}`;
-    const header = [
-        `// Type definitions for Visual Studio Code ${shorttag}`,
-        `// Project: https://github.com/microsoft/vscode`,
-        `// Definitions by: Visual Studio Code Team, Microsoft <https://github.com/microsoft>`,
-        `// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped`,
-        ``,
-        `/*---------------------------------------------------------------------------------------------`,
-        ` *  Copyright (c) Microsoft Corporation. All rights reserved.`,
-        ` *  Licensed under the MIT License.`,
-        ` *  See https://github.com/microsoft/vscode/blob/main/LICENSE.txt for license information.`,
-        ` *--------------------------------------------------------------------------------------------*/`,
-        ``,
-        `/**`,
-        ` * Type Definition for Visual Studio Code ${shorttag} Extension API`,
-        ` * See https://code.visualstudio.com/api for more information`,
-        ` */`
-    ].join('\n');
-    return header;
-}
diff --git a/lib/vscode/build/azure-pipelines/publish-types/update-types.ts b/lib/vscode/build/azure-pipelines/publish-types/update-types.ts
deleted file mode 100644
index eae002e23a76..000000000000
--- a/lib/vscode/build/azure-pipelines/publish-types/update-types.ts
+++ /dev/null
@@ -1,85 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-'use strict';
-
-import * as fs from 'fs';
-import * as cp from 'child_process';
-import * as path from 'path';
-
-let tag = '';
-try {
-	tag = cp
-		.execSync('git describe --tags `git rev-list --tags --max-count=1`')
-		.toString()
-		.trim();
-
-	const dtsUri = `https://raw.githubusercontent.com/microsoft/vscode/${tag}/src/vs/vscode.d.ts`;
-	const outPath = path.resolve(process.cwd(), 'DefinitelyTyped/types/vscode/index.d.ts');
-	cp.execSync(`curl ${dtsUri} --output ${outPath}`);
-
-	updateDTSFile(outPath, tag);
-
-	console.log(`Done updating vscode.d.ts at ${outPath}`);
-} catch (err) {
-	console.error(err);
-	console.error('Failed to update types');
-	process.exit(1);
-}
-
-function updateDTSFile(outPath: string, tag: string) {
-	const oldContent = fs.readFileSync(outPath, 'utf-8');
-	const newContent = getNewFileContent(oldContent, tag);
-
-	fs.writeFileSync(outPath, newContent);
-}
-
-function repeat(str: string, times: number): string {
-	const result = new Array(times);
-	for (let i = 0; i < times; i++) {
-		result[i] = str;
-	}
-	return result.join('');
-}
-
-function convertTabsToSpaces(str: string): string {
-	return str.replace(/\t/gm, value => repeat('    ', value.length));
-}
-
-function getNewFileContent(content: string, tag: string) {
-	const oldheader = [
-		`/*---------------------------------------------------------------------------------------------`,
-		` *  Copyright (c) Microsoft Corporation. All rights reserved.`,
-		` *  Licensed under the MIT License. See License.txt in the project root for license information.`,
-		` *--------------------------------------------------------------------------------------------*/`
-	].join('\n');
-
-	return convertTabsToSpaces(getNewFileHeader(tag) + content.slice(oldheader.length));
-}
-
-function getNewFileHeader(tag: string) {
-	const [major, minor] = tag.split('.');
-	const shorttag = `${major}.${minor}`;
-
-	const header = [
-		`// Type definitions for Visual Studio Code ${shorttag}`,
-		`// Project: https://github.com/microsoft/vscode`,
-		`// Definitions by: Visual Studio Code Team, Microsoft <https://github.com/microsoft>`,
-		`// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped`,
-		``,
-		`/*---------------------------------------------------------------------------------------------`,
-		` *  Copyright (c) Microsoft Corporation. All rights reserved.`,
-		` *  Licensed under the MIT License.`,
-		` *  See https://github.com/microsoft/vscode/blob/main/LICENSE.txt for license information.`,
-		` *--------------------------------------------------------------------------------------------*/`,
-		``,
-		`/**`,
-		` * Type Definition for Visual Studio Code ${shorttag} Extension API`,
-		` * See https://code.visualstudio.com/api for more information`,
-		` */`
-	].join('\n');
-
-	return header;
-}
diff --git a/lib/vscode/build/azure-pipelines/upload-cdn.js b/lib/vscode/build/azure-pipelines/upload-cdn.js
deleted file mode 100644
index 16a072905a02..000000000000
--- a/lib/vscode/build/azure-pipelines/upload-cdn.js
+++ /dev/null
@@ -1,35 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-'use strict';
-Object.defineProperty(exports, "__esModule", { value: true });
-const path = require("path");
-const es = require("event-stream");
-const vfs = require("vinyl-fs");
-const util = require("../lib/util");
-const filter = require("gulp-filter");
-const gzip = require("gulp-gzip");
-const azure = require('gulp-azure-storage');
-const root = path.dirname(path.dirname(__dirname));
-const commit = util.getVersion(root);
-function main() {
-    return vfs.src('**', { cwd: '../vscode-web', base: '../vscode-web', dot: true })
-        .pipe(filter(f => !f.isDirectory()))
-        .pipe(gzip({ append: false }))
-        .pipe(es.through(function (data) {
-        console.log('Uploading CDN file:', data.relative); // debug
-        this.emit('data', data);
-    }))
-        .pipe(azure.upload({
-        account: process.env.AZURE_STORAGE_ACCOUNT,
-        key: process.env.AZURE_STORAGE_ACCESS_KEY,
-        container: process.env.VSCODE_QUALITY,
-        prefix: commit + '/',
-        contentSettings: {
-            contentEncoding: 'gzip',
-            cacheControl: 'max-age=31536000, public'
-        }
-    }));
-}
-main();
diff --git a/lib/vscode/build/azure-pipelines/upload-cdn.ts b/lib/vscode/build/azure-pipelines/upload-cdn.ts
deleted file mode 100644
index 715890338670..000000000000
--- a/lib/vscode/build/azure-pipelines/upload-cdn.ts
+++ /dev/null
@@ -1,40 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-'use strict';
-
-import * as path from 'path';
-import * as es from 'event-stream';
-import * as Vinyl from 'vinyl';
-import * as vfs from 'vinyl-fs';
-import * as util from '../lib/util';
-import * as filter from 'gulp-filter';
-import * as gzip from 'gulp-gzip';
-const azure = require('gulp-azure-storage');
-
-const root = path.dirname(path.dirname(__dirname));
-const commit = util.getVersion(root);
-
-function main() {
-	return vfs.src('**', { cwd: '../vscode-web', base: '../vscode-web', dot: true })
-		.pipe(filter(f => !f.isDirectory()))
-		.pipe(gzip({ append: false }))
-		.pipe(es.through(function (data: Vinyl) {
-			console.log('Uploading CDN file:', data.relative); // debug
-			this.emit('data', data);
-		}))
-		.pipe(azure.upload({
-			account: process.env.AZURE_STORAGE_ACCOUNT,
-			key: process.env.AZURE_STORAGE_ACCESS_KEY,
-			container: process.env.VSCODE_QUALITY,
-			prefix: commit + '/',
-			contentSettings: {
-				contentEncoding: 'gzip',
-				cacheControl: 'max-age=31536000, public'
-			}
-		}));
-}
-
-main();
diff --git a/lib/vscode/build/azure-pipelines/upload-sourcemaps.js b/lib/vscode/build/azure-pipelines/upload-sourcemaps.js
deleted file mode 100644
index b2a886f6c7cd..000000000000
--- a/lib/vscode/build/azure-pipelines/upload-sourcemaps.js
+++ /dev/null
@@ -1,55 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-'use strict';
-Object.defineProperty(exports, "__esModule", { value: true });
-const path = require("path");
-const es = require("event-stream");
-const vfs = require("vinyl-fs");
-const util = require("../lib/util");
-// @ts-ignore
-const deps = require("../lib/dependencies");
-const azure = require('gulp-azure-storage');
-const root = path.dirname(path.dirname(__dirname));
-const commit = util.getVersion(root);
-// optionally allow to pass in explicit base/maps to upload
-const [, , base, maps] = process.argv;
-function src(base, maps = `${base}/**/*.map`) {
-    return vfs.src(maps, { base })
-        .pipe(es.mapSync((f) => {
-        f.path = `${f.base}/core/${f.relative}`;
-        return f;
-    }));
-}
-function main() {
-    const sources = [];
-    // vscode client maps (default)
-    if (!base) {
-        const vs = src('out-vscode-min'); // client source-maps only
-        sources.push(vs);
-        const productionDependencies = deps.getProductionDependencies(root);
-        const productionDependenciesSrc = productionDependencies.map(d => path.relative(root, d.path)).map(d => `./${d}/**/*.map`);
-        const nodeModules = vfs.src(productionDependenciesSrc, { base: '.' })
-            .pipe(util.cleanNodeModules(path.join(root, 'build', '.moduleignore')));
-        sources.push(nodeModules);
-        const extensionsOut = vfs.src(['.build/extensions/**/*.js.map', '!**/node_modules/**'], { base: '.build' });
-        sources.push(extensionsOut);
-    }
-    // specific client base/maps
-    else {
-        sources.push(src(base, maps));
-    }
-    return es.merge(...sources)
-        .pipe(es.through(function (data) {
-        console.log('Uploading Sourcemap', data.relative); // debug
-        this.emit('data', data);
-    }))
-        .pipe(azure.upload({
-        account: process.env.AZURE_STORAGE_ACCOUNT,
-        key: process.env.AZURE_STORAGE_ACCESS_KEY,
-        container: 'sourcemaps',
-        prefix: commit + '/'
-    }));
-}
-main();
diff --git a/lib/vscode/build/azure-pipelines/upload-sourcemaps.ts b/lib/vscode/build/azure-pipelines/upload-sourcemaps.ts
deleted file mode 100644
index 769e224e6f73..000000000000
--- a/lib/vscode/build/azure-pipelines/upload-sourcemaps.ts
+++ /dev/null
@@ -1,67 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-'use strict';
-
-import * as path from 'path';
-import * as es from 'event-stream';
-import * as Vinyl from 'vinyl';
-import * as vfs from 'vinyl-fs';
-import * as util from '../lib/util';
-// @ts-ignore
-import * as deps from '../lib/dependencies';
-const azure = require('gulp-azure-storage');
-
-const root = path.dirname(path.dirname(__dirname));
-const commit = util.getVersion(root);
-
-// optionally allow to pass in explicit base/maps to upload
-const [, , base, maps] = process.argv;
-
-function src(base: string, maps = `${base}/**/*.map`) {
-	return vfs.src(maps, { base })
-		.pipe(es.mapSync((f: Vinyl) => {
-			f.path = `${f.base}/core/${f.relative}`;
-			return f;
-		}));
-}
-
-function main() {
-	const sources = [];
-
-	// vscode client maps (default)
-	if (!base) {
-		const vs = src('out-vscode-min'); // client source-maps only
-		sources.push(vs);
-
-		const productionDependencies: { name: string, path: string, version: string }[] = deps.getProductionDependencies(root);
-		const productionDependenciesSrc = productionDependencies.map(d => path.relative(root, d.path)).map(d => `./${d}/**/*.map`);
-		const nodeModules = vfs.src(productionDependenciesSrc, { base: '.' })
-			.pipe(util.cleanNodeModules(path.join(root, 'build', '.moduleignore')));
-		sources.push(nodeModules);
-
-		const extensionsOut = vfs.src(['.build/extensions/**/*.js.map', '!**/node_modules/**'], { base: '.build' });
-		sources.push(extensionsOut);
-	}
-
-	// specific client base/maps
-	else {
-		sources.push(src(base, maps));
-	}
-
-	return es.merge(...sources)
-		.pipe(es.through(function (data: Vinyl) {
-			console.log('Uploading Sourcemap', data.relative); // debug
-			this.emit('data', data);
-		}))
-		.pipe(azure.upload({
-			account: process.env.AZURE_STORAGE_ACCOUNT,
-			key: process.env.AZURE_STORAGE_ACCESS_KEY,
-			container: 'sourcemaps',
-			prefix: commit + '/'
-		}));
-}
-
-main();
diff --git a/lib/vscode/build/azure-pipelines/web/product-build-web.yml b/lib/vscode/build/azure-pipelines/web/product-build-web.yml
deleted file mode 100644
index 45dedea1b4c6..000000000000
--- a/lib/vscode/build/azure-pipelines/web/product-build-web.yml
+++ /dev/null
@@ -1,137 +0,0 @@
-steps:
-  - task: NodeTool@0
-    inputs:
-      versionSpec: "14.x"
-
-  - task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2
-    inputs:
-      versionSpec: "1.x"
-
-  - task: AzureKeyVault@1
-    displayName: "Azure Key Vault: Get Secrets"
-    inputs:
-      azureSubscription: "vscode-builds-subscription"
-      KeyVaultName: vscode
-
-  - task: DownloadPipelineArtifact@2
-    inputs:
-      artifact: Compilation
-      path: $(Build.ArtifactStagingDirectory)
-    displayName: Download compilation output
-
-  - script: |
-      set -e
-      tar -xzf $(Build.ArtifactStagingDirectory)/compilation.tar.gz
-    displayName: Extract compilation output
-
-  - script: |
-      set -e
-      cat << EOF > ~/.netrc
-      machine github.com
-      login vscode
-      password $(github-distro-mixin-password)
-      EOF
-
-      git config user.email "vscode@microsoft.com"
-      git config user.name "VSCode"
-    displayName: Prepare tooling
-
-  - script: |
-      set -e
-      git pull --no-rebase https://github.com/$(VSCODE_MIXIN_REPO).git $(node -p "require('./package.json').distro")
-    displayName: Merge distro
-
-  - script: |
-      mkdir -p .build
-      node build/azure-pipelines/common/computeNodeModulesCacheKey.js "web" $ENABLE_TERRAPIN > .build/yarnlockhash
-    displayName: Prepare yarn cache flags
-
-  - task: Cache@2
-    inputs:
-      key: 'nodeModules | $(Agent.OS) | .build/yarnlockhash'
-      path: .build/node_modules_cache
-      cacheHitVar: NODE_MODULES_RESTORED
-    displayName: Restore node_modules cache
-
-  - script: |
-      set -e
-      tar -xzf .build/node_modules_cache/cache.tgz
-    condition: and(succeeded(), eq(variables.NODE_MODULES_RESTORED, 'true'))
-    displayName: Extract node_modules cache
-
-  - script: |
-      set -e
-      npx https://aka.ms/enablesecurefeed standAlone
-    timeoutInMinutes: 5
-    condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'), eq(variables['ENABLE_TERRAPIN'], 'true'))
-    displayName: Switch to Terrapin packages
-
-  - script: |
-      set -e
-      for i in {1..3}; do # try 3 times, for Terrapin
-        yarn --frozen-lockfile && break
-        if [ $i -eq 3 ]; then
-          echo "Yarn failed too many times" >&2
-          exit 1
-        fi
-        echo "Yarn failed $i, trying again..."
-      done
-    env:
-      ELECTRON_SKIP_BINARY_DOWNLOAD: 1
-      PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1
-    displayName: Install dependencies
-    condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'))
-
-  - script: |
-      set -e
-      node build/azure-pipelines/common/listNodeModules.js .build/node_modules_list.txt
-      mkdir -p .build/node_modules_cache
-      tar -czf .build/node_modules_cache/cache.tgz --files-from .build/node_modules_list.txt
-    condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'))
-    displayName: Create node_modules archive
-
-  - script: |
-      set -e
-      node build/azure-pipelines/mixin
-    displayName: Mix in quality
-
-  - script: |
-      set -e
-      VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
-        yarn gulp vscode-web-min-ci
-    displayName: Build
-
-  - script: |
-      set -e
-      AZURE_STORAGE_ACCOUNT="$(web-storage-account)" \
-      AZURE_STORAGE_ACCESS_KEY="$(web-storage-key)" \
-        node build/azure-pipelines/upload-cdn.js
-    displayName: Upload to CDN
-
-    # upload only the workbench.web.api.js source maps because
-    # we just compiled these bits in the previous step and the
-    # general task to upload source maps has already been run
-  - script: |
-      set -e
-      AZURE_STORAGE_ACCESS_KEY="$(ticino-storage-key)" \
-        node build/azure-pipelines/upload-sourcemaps out-vscode-web-min out-vscode-web-min/vs/workbench/workbench.web.api.js.map
-    displayName: Upload sourcemaps (Web)
-
-  - script: |
-      set -e
-      REPO="$(pwd)"
-      ROOT="$REPO/.."
-
-      WEB_BUILD_NAME="vscode-web"
-      WEB_TARBALL_FILENAME="vscode-web.tar.gz"
-      WEB_TARBALL_PATH="$ROOT/$WEB_TARBALL_FILENAME"
-
-      rm -rf $ROOT/vscode-web.tar.*
-
-      cd $ROOT && tar --owner=0 --group=0 -czf $WEB_TARBALL_PATH $WEB_BUILD_NAME
-    displayName: Prepare for publish
-
-  - publish: $(Agent.BuildDirectory)/vscode-web.tar.gz
-    artifact: vscode_web_linux_standalone_archive-unsigned
-    displayName: Publish web archive
-    condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
diff --git a/lib/vscode/build/azure-pipelines/win32/ESRPClient/NuGet.config b/lib/vscode/build/azure-pipelines/win32/ESRPClient/NuGet.config
deleted file mode 100644
index 4ef337fa560f..000000000000
--- a/lib/vscode/build/azure-pipelines/win32/ESRPClient/NuGet.config
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<configuration>
-	<packageSources>
-		<clear />
-		<add key="ESRP" value="https://microsoft.pkgs.visualstudio.com/_packaging/ESRP/nuget/v3/index.json" />
-	</packageSources>
-	<disabledPackageSources>
-		<clear />
-	</disabledPackageSources>
-</configuration>
diff --git a/lib/vscode/build/azure-pipelines/win32/ESRPClient/packages.config b/lib/vscode/build/azure-pipelines/win32/ESRPClient/packages.config
deleted file mode 100644
index ef586de97627..000000000000
--- a/lib/vscode/build/azure-pipelines/win32/ESRPClient/packages.config
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<packages>
-  <package id="Microsoft.ESRPClient" version="1.2.47" />
-</packages>
diff --git a/lib/vscode/build/azure-pipelines/win32/exec.ps1 b/lib/vscode/build/azure-pipelines/win32/exec.ps1
deleted file mode 100644
index 826cefdf7dd6..000000000000
--- a/lib/vscode/build/azure-pipelines/win32/exec.ps1
+++ /dev/null
@@ -1,24 +0,0 @@
-# Taken from psake https://github.com/psake/psake
-
-<#
-.SYNOPSIS
-  This is a helper function that runs a scriptblock and checks the PS variable $lastexitcode
-  to see if an error occcured. If an error is detected then an exception is thrown.
-  This function allows you to run command-line programs without having to
-  explicitly check the $lastexitcode variable.
-
-.EXAMPLE
-  exec { svn info $repository_trunk } "Error executing SVN. Please verify SVN command-line client is installed"
-#>
-function Exec
-{
-	[CmdletBinding()]
-	param(
-		[Parameter(Position=0,Mandatory=1)][scriptblock]$cmd,
-		[Parameter(Position=1,Mandatory=0)][string]$errorMessage = ($msgs.error_bad_command -f $cmd)
-	)
-	& $cmd
-	if ($lastexitcode -ne 0) {
-		throw ("Exec: " + $errorMessage)
-	}
-}
\ No newline at end of file
diff --git a/lib/vscode/build/azure-pipelines/win32/import-esrp-auth-cert.ps1 b/lib/vscode/build/azure-pipelines/win32/import-esrp-auth-cert.ps1
deleted file mode 100644
index e9a1d5a8ae87..000000000000
--- a/lib/vscode/build/azure-pipelines/win32/import-esrp-auth-cert.ps1
+++ /dev/null
@@ -1,14 +0,0 @@
-param ($CertBase64)
-$ErrorActionPreference = "Stop"
-
-$CertBytes = [System.Convert]::FromBase64String($CertBase64)
-$CertCollection = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2Collection
-$CertCollection.Import($CertBytes, $null, [System.Security.Cryptography.X509Certificates.X509KeyStorageFlags]::Exportable -bxor [System.Security.Cryptography.X509Certificates.X509KeyStorageFlags]::PersistKeySet)
-
-$CertStore = New-Object System.Security.Cryptography.X509Certificates.X509Store("My","LocalMachine")
-$CertStore.Open("ReadWrite")
-$CertStore.AddRange($CertCollection)
-$CertStore.Close()
-
-$ESRPAuthCertificateSubjectName = $CertCollection[0].Subject
-Write-Output ("##vso[task.setvariable variable=ESRPAuthCertificateSubjectName;]$ESRPAuthCertificateSubjectName")
diff --git a/lib/vscode/build/azure-pipelines/win32/prepare-publish.ps1 b/lib/vscode/build/azure-pipelines/win32/prepare-publish.ps1
deleted file mode 100644
index f80e1ca0ce9a..000000000000
--- a/lib/vscode/build/azure-pipelines/win32/prepare-publish.ps1
+++ /dev/null
@@ -1,43 +0,0 @@
-. build/azure-pipelines/win32/exec.ps1
-$ErrorActionPreference = "Stop"
-
-$Arch = "$env:VSCODE_ARCH"
-
-exec { yarn gulp "vscode-win32-$Arch-archive" "vscode-win32-$Arch-system-setup" "vscode-win32-$Arch-user-setup" --sign }
-
-$Repo = "$(pwd)"
-$Root = "$Repo\.."
-$SystemExe = "$Repo\.build\win32-$Arch\system-setup\VSCodeSetup.exe"
-$UserExe = "$Repo\.build\win32-$Arch\user-setup\VSCodeSetup.exe"
-$Zip = "$Repo\.build\win32-$Arch\archive\VSCode-win32-$Arch.zip"
-$LegacyServer = "$Root\vscode-reh-win32-$Arch"
-$Server = "$Root\vscode-server-win32-$Arch"
-$ServerZip = "$Repo\.build\vscode-server-win32-$Arch.zip"
-$LegacyWeb = "$Root\vscode-reh-web-win32-$Arch"
-$Web = "$Root\vscode-server-win32-$Arch-web"
-$WebZip = "$Repo\.build\vscode-server-win32-$Arch-web.zip"
-$Build = "$Root\VSCode-win32-$Arch"
-
-# Create server archive
-if ("$Arch" -ne "arm64") {
-	exec { xcopy $LegacyServer $Server /H /E /I }
-	exec { .\node_modules\7zip\7zip-lite\7z.exe a -tzip $ServerZip $Server -r }
-	exec { xcopy $LegacyWeb $Web /H /E /I }
-	exec { .\node_modules\7zip\7zip-lite\7z.exe a -tzip $WebZip $Web -r }
-}
-
-# get version
-$PackageJson = Get-Content -Raw -Path "$Build\resources\app\package.json" | ConvertFrom-Json
-$Version = $PackageJson.version
-
-$ARCHIVE_NAME = "VSCode-win32-$Arch-$Version.zip"
-$SYSTEM_SETUP_NAME = "VSCodeSetup-$Arch-$Version.exe"
-$USER_SETUP_NAME = "VSCodeUserSetup-$Arch-$Version.exe"
-
-# Set variables for upload
-Move-Item $Zip "$Repo\.build\win32-$Arch\archive\$ARCHIVE_NAME"
-Write-Host "##vso[task.setvariable variable=ARCHIVE_NAME]$ARCHIVE_NAME"
-Move-Item $SystemExe "$Repo\.build\win32-$Arch\system-setup\$SYSTEM_SETUP_NAME"
-Write-Host "##vso[task.setvariable variable=SYSTEM_SETUP_NAME]$SYSTEM_SETUP_NAME"
-Move-Item $UserExe "$Repo\.build\win32-$Arch\user-setup\$USER_SETUP_NAME"
-Write-Host "##vso[task.setvariable variable=USER_SETUP_NAME]$USER_SETUP_NAME"
diff --git a/lib/vscode/build/azure-pipelines/win32/product-build-win32.yml b/lib/vscode/build/azure-pipelines/win32/product-build-win32.yml
deleted file mode 100644
index 1f8514ae7e3e..000000000000
--- a/lib/vscode/build/azure-pipelines/win32/product-build-win32.yml
+++ /dev/null
@@ -1,325 +0,0 @@
-steps:
-  - task: NodeTool@0
-    inputs:
-      versionSpec: "14.x"
-
-  - task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2
-    inputs:
-      versionSpec: "1.x"
-
-  - task: UsePythonVersion@0
-    inputs:
-      versionSpec: "2.x"
-      addToPath: true
-
-  - task: AzureKeyVault@1
-    displayName: "Azure Key Vault: Get Secrets"
-    inputs:
-      azureSubscription: "vscode-builds-subscription"
-      KeyVaultName: vscode
-
-  - task: DownloadPipelineArtifact@2
-    inputs:
-      artifact: Compilation
-      path: $(Build.ArtifactStagingDirectory)
-    displayName: Download compilation output
-
-  - powershell: |
-      . build/azure-pipelines/win32/exec.ps1
-      $ErrorActionPreference = "Stop"
-      exec { tar --force-local -xzf $(Build.ArtifactStagingDirectory)/compilation.tar.gz }
-    displayName: Extract compilation output
-
-  - powershell: |
-      . build/azure-pipelines/win32/exec.ps1
-      $ErrorActionPreference = "Stop"
-      "machine github.com`nlogin vscode`npassword $(github-distro-mixin-password)" | Out-File "$env:USERPROFILE\_netrc" -Encoding ASCII
-
-      exec { git config user.email "vscode@microsoft.com" }
-      exec { git config user.name "VSCode" }
-    displayName: Prepare tooling
-
-  - powershell: |
-      . build/azure-pipelines/win32/exec.ps1
-      $ErrorActionPreference = "Stop"
-      exec { git pull --no-rebase https://github.com/$(VSCODE_MIXIN_REPO).git $(node -p "require('./package.json').distro") }
-    displayName: Merge distro
-
-  - powershell: |
-      "$(VSCODE_ARCH)" | Out-File -Encoding ascii -NoNewLine .build\arch
-      "$env:ENABLE_TERRAPIN" | Out-File -Encoding ascii -NoNewLine .build\terrapin
-      node build/azure-pipelines/common/computeNodeModulesCacheKey.js > .build/yarnlockhash
-    displayName: Prepare yarn cache flags
-
-  - task: Cache@2
-    inputs:
-      key: 'nodeModules | $(Agent.OS) | .build/arch, .build/terrapin, .build/yarnlockhash'
-      path: .build/node_modules_cache
-      cacheHitVar: NODE_MODULES_RESTORED
-    displayName: Restore node_modules cache
-
-  - powershell: |
-      . build/azure-pipelines/win32/exec.ps1
-      $ErrorActionPreference = "Stop"
-      exec { 7z.exe x .build/node_modules_cache/cache.7z -aos }
-    condition: and(succeeded(), eq(variables.NODE_MODULES_RESTORED, 'true'))
-    displayName: Extract node_modules cache
-
-  - powershell: |
-      . build/azure-pipelines/win32/exec.ps1
-      $ErrorActionPreference = "Stop"
-      exec { npx https://aka.ms/enablesecurefeed standAlone }
-    timeoutInMinutes: 5
-    condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'), eq(variables['ENABLE_TERRAPIN'], 'true'))
-    displayName: Switch to Terrapin packages
-
-  - powershell: |
-      . build/azure-pipelines/win32/exec.ps1
-      . build/azure-pipelines/win32/retry.ps1
-      $ErrorActionPreference = "Stop"
-      $env:npm_config_arch="$(VSCODE_ARCH)"
-      $env:npm_config_build_from_source="true"
-      $env:CHILD_CONCURRENCY="1"
-      retry { exec { yarn --frozen-lockfile } }
-    env:
-      ELECTRON_SKIP_BINARY_DOWNLOAD: 1
-      PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1
-    displayName: Install dependencies
-    condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'))
-
-  - powershell: |
-      . build/azure-pipelines/win32/exec.ps1
-      $ErrorActionPreference = "Stop"
-      exec { node build/azure-pipelines/common/listNodeModules.js .build/node_modules_list.txt }
-      exec { mkdir -Force .build/node_modules_cache }
-      exec { 7z.exe a .build/node_modules_cache/cache.7z -mx3 `@.build/node_modules_list.txt }
-    condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true'))
-    displayName: Create node_modules archive
-
-  - powershell: |
-      . build/azure-pipelines/win32/exec.ps1
-      $ErrorActionPreference = "Stop"
-      exec { node build/azure-pipelines/mixin }
-    displayName: Mix in quality
-
-  - powershell: |
-      . build/azure-pipelines/win32/exec.ps1
-      $ErrorActionPreference = "Stop"
-      $env:VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)"
-      exec { yarn gulp "vscode-win32-$(VSCODE_ARCH)-min-ci" }
-      echo "##vso[task.setvariable variable=CodeSigningFolderPath]$(agent.builddirectory)/VSCode-win32-$(VSCODE_ARCH)"
-    displayName: Build
-
-  - powershell: |
-      . build/azure-pipelines/win32/exec.ps1
-      $ErrorActionPreference = "Stop"
-      $env:VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)"
-      exec { yarn gulp "vscode-win32-$(VSCODE_ARCH)-code-helper" }
-      exec { yarn gulp "vscode-win32-$(VSCODE_ARCH)-inno-updater" }
-    displayName: Prepare Package
-    condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
-
-  - powershell: |
-      . build/azure-pipelines/win32/exec.ps1
-      $ErrorActionPreference = "Stop"
-      $env:VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)"
-      exec { yarn gulp "vscode-reh-win32-$(VSCODE_ARCH)-min-ci" }
-      exec { yarn gulp "vscode-reh-web-win32-$(VSCODE_ARCH)-min-ci" }
-      echo "##vso[task.setvariable variable=CodeSigningFolderPath]$(CodeSigningFolderPath),$(agent.builddirectory)/vscode-reh-win32-$(VSCODE_ARCH)"
-    displayName: Build Server
-    condition: and(succeeded(), ne(variables['VSCODE_ARCH'], 'arm64'))
-
-  - powershell: |
-      . build/azure-pipelines/win32/exec.ps1
-      $ErrorActionPreference = "Stop"
-      $env:VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)"
-      exec { yarn npm-run-all -lp "electron $(VSCODE_ARCH)" "playwright-install" }
-    displayName: Download Electron and Playwright
-    condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'), ne(variables['VSCODE_ARCH'], 'arm64'))
-
-  - powershell: |
-      . build/azure-pipelines/win32/exec.ps1
-      $ErrorActionPreference = "Stop"
-      exec { yarn electron $(VSCODE_ARCH) }
-      exec { .\scripts\test.bat --build --tfs "Unit Tests" }
-    displayName: Run unit tests (Electron)
-    timeoutInMinutes: 7
-    condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'), ne(variables['VSCODE_ARCH'], 'arm64'))
-
-  - powershell: |
-      . build/azure-pipelines/win32/exec.ps1
-      $ErrorActionPreference = "Stop"
-      exec { yarn test-browser --build --browser chromium --browser firefox --tfs "Browser Unit Tests" }
-    displayName: Run unit tests (Browser)
-    timeoutInMinutes: 7
-    condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'), ne(variables['VSCODE_ARCH'], 'arm64'))
-
-  - powershell: |
-      . build/azure-pipelines/win32/exec.ps1
-      $ErrorActionPreference = "Stop"
-      exec { yarn --cwd test/integration/browser compile }
-    displayName: Compile integration tests
-    condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'), ne(variables['VSCODE_ARCH'], 'arm64'))
-
-  - powershell: |
-      # Figure out the full absolute path of the product we just built
-      # including the remote server and configure the integration tests
-      # to run with these builds instead of running out of sources.
-      . build/azure-pipelines/win32/exec.ps1
-      $ErrorActionPreference = "Stop"
-      $AppRoot = "$(agent.builddirectory)\VSCode-win32-$(VSCODE_ARCH)"
-      $AppProductJson = Get-Content -Raw -Path "$AppRoot\resources\app\product.json" | ConvertFrom-Json
-      $AppNameShort = $AppProductJson.nameShort
-      exec { $env:INTEGRATION_TEST_ELECTRON_PATH = "$AppRoot\$AppNameShort.exe"; $env:VSCODE_REMOTE_SERVER_PATH = "$(agent.builddirectory)\vscode-reh-win32-$(VSCODE_ARCH)"; .\scripts\test-integration.bat --build --tfs "Integration Tests" }
-    displayName: Run integration tests (Electron)
-    timeoutInMinutes: 10
-    condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'), ne(variables['VSCODE_ARCH'], 'arm64'))
-
-  - powershell: |
-      . build/azure-pipelines/win32/exec.ps1
-      $ErrorActionPreference = "Stop"
-      exec { $env:VSCODE_REMOTE_SERVER_PATH = "$(agent.builddirectory)\vscode-reh-web-win32-$(VSCODE_ARCH)"; .\resources\server\test\test-web-integration.bat --browser firefox }
-    displayName: Run integration tests (Browser)
-    timeoutInMinutes: 10
-    condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'), ne(variables['VSCODE_ARCH'], 'arm64'))
-
-  - powershell: |
-      . build/azure-pipelines/win32/exec.ps1
-      $ErrorActionPreference = "Stop"
-      $AppRoot = "$(agent.builddirectory)\VSCode-win32-$(VSCODE_ARCH)"
-      $AppProductJson = Get-Content -Raw -Path "$AppRoot\resources\app\product.json" | ConvertFrom-Json
-      $AppNameShort = $AppProductJson.nameShort
-      exec { $env:INTEGRATION_TEST_ELECTRON_PATH = "$AppRoot\$AppNameShort.exe"; $env:VSCODE_REMOTE_SERVER_PATH = "$(agent.builddirectory)\vscode-reh-win32-$(VSCODE_ARCH)"; .\resources\server\test\test-remote-integration.bat }
-    displayName: Run remote integration tests (Electron)
-    timeoutInMinutes: 7
-    condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'), ne(variables['VSCODE_ARCH'], 'arm64'))
-
-  - task: PublishPipelineArtifact@0
-    inputs:
-      artifactName: crash-dump-windows-$(VSCODE_ARCH)
-      targetPath: .build\crashes
-    displayName: "Publish Crash Reports"
-    continueOnError: true
-    condition: failed()
-
-  - task: PublishTestResults@2
-    displayName: Publish Tests Results
-    inputs:
-      testResultsFiles: "*-results.xml"
-      searchFolder: "$(Build.ArtifactStagingDirectory)/test-results"
-    condition: and(succeededOrFailed(), eq(variables['VSCODE_STEP_ON_IT'], 'false'), ne(variables['VSCODE_ARCH'], 'arm64'))
-
-  - task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@1
-    inputs:
-      ConnectedServiceName: "ESRP CodeSign"
-      FolderPath: "$(CodeSigningFolderPath)"
-      Pattern: "*.dll,*.exe,*.node"
-      signConfigType: inlineSignParams
-      inlineOperation: |
-        [
-          {
-            "keyCode": "CP-230012",
-            "operationSetCode": "SigntoolSign",
-            "parameters": [
-              {
-                "parameterName": "OpusName",
-                "parameterValue": "VS Code"
-              },
-              {
-                "parameterName": "OpusInfo",
-                "parameterValue": "https://code.visualstudio.com/"
-              },
-              {
-                "parameterName": "Append",
-                "parameterValue": "/as"
-              },
-              {
-                "parameterName": "FileDigest",
-                "parameterValue": "/fd \"SHA256\""
-              },
-              {
-                "parameterName": "PageHash",
-                "parameterValue": "/NPH"
-              },
-              {
-                "parameterName": "TimeStamp",
-                "parameterValue": "/tr \"http://rfc3161.gtm.corp.microsoft.com/TSS/HttpTspServer\" /td sha256"
-              }
-            ],
-            "toolName": "sign",
-            "toolVersion": "1.0"
-          },
-          {
-            "keyCode": "CP-230012",
-            "operationSetCode": "SigntoolVerify",
-            "parameters": [
-              {
-                "parameterName": "VerifyAll",
-                "parameterValue": "/all"
-              }
-            ],
-            "toolName": "sign",
-            "toolVersion": "1.0"
-          }
-        ]
-      SessionTimeout: 120
-    condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
-
-  - task: NuGetCommand@2
-    displayName: Install ESRPClient.exe
-    inputs:
-      restoreSolution: 'build\azure-pipelines\win32\ESRPClient\packages.config'
-      feedsToUse: config
-      nugetConfigPath: 'build\azure-pipelines\win32\ESRPClient\NuGet.config'
-      externalFeedCredentials: "ESRP Nuget"
-      restoreDirectory: packages
-    condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
-
-  - task: ESRPImportCertTask@1
-    displayName: Import ESRP Request Signing Certificate
-    inputs:
-      ESRP: "ESRP CodeSign"
-    condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
-
-  - task: PowerShell@2
-    inputs:
-      targetType: filePath
-      filePath: .\build\azure-pipelines\win32\import-esrp-auth-cert.ps1
-      arguments: "$(ESRP-SSL-AADAuth)"
-    displayName: Import ESRP Auth Certificate
-    condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
-
-  - powershell: |
-      . build/azure-pipelines/win32/exec.ps1
-      $ErrorActionPreference = "Stop"
-      $env:AZURE_STORAGE_ACCESS_KEY_2 = "$(vscode-storage-key)"
-      $env:AZURE_DOCUMENTDB_MASTERKEY = "$(builds-docdb-key-readwrite)"
-      $env:VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)"
-      .\build\azure-pipelines\win32\prepare-publish.ps1
-    displayName: Publish
-    condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
-
-  - publish: $(System.DefaultWorkingDirectory)\.build\win32-$(VSCODE_ARCH)\archive\$(ARCHIVE_NAME)
-    artifact: vscode_client_win32_$(VSCODE_ARCH)_archive
-    displayName: Publish archive
-    condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
-
-  - publish: $(System.DefaultWorkingDirectory)\.build\win32-$(VSCODE_ARCH)\system-setup\$(SYSTEM_SETUP_NAME)
-    artifact: vscode_client_win32_$(VSCODE_ARCH)_setup
-    displayName: Publish system setup
-    condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
-
-  - publish: $(System.DefaultWorkingDirectory)\.build\win32-$(VSCODE_ARCH)\user-setup\$(USER_SETUP_NAME)
-    artifact: vscode_client_win32_$(VSCODE_ARCH)_user-setup
-    displayName: Publish user setup
-    condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
-
-  - publish: $(System.DefaultWorkingDirectory)\.build\vscode-server-win32-$(VSCODE_ARCH).zip
-    artifact: vscode_server_win32_$(VSCODE_ARCH)_archive
-    displayName: Publish server archive
-    condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'), ne(variables['VSCODE_ARCH'], 'arm64'))
-
-  - publish: $(System.DefaultWorkingDirectory)\.build\vscode-server-win32-$(VSCODE_ARCH)-web.zip
-    artifact: vscode_web_win32_$(VSCODE_ARCH)_archive
-    displayName: Publish web server archive
-    condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'), ne(variables['VSCODE_ARCH'], 'arm64'))
diff --git a/lib/vscode/build/azure-pipelines/win32/retry.ps1 b/lib/vscode/build/azure-pipelines/win32/retry.ps1
deleted file mode 100644
index 002a5e274b7b..000000000000
--- a/lib/vscode/build/azure-pipelines/win32/retry.ps1
+++ /dev/null
@@ -1,19 +0,0 @@
-function Retry
-{
-	[CmdletBinding()]
-	param(
-		[Parameter(Position=0,Mandatory=1)][scriptblock]$cmd
-	)
-	$retry = 0
-
-	while ($retry++ -lt 3) {
-		try {
-			& $cmd
-			return
-		} catch {
-			# noop
-		}
-	}
-
-	throw "Max retries reached"
-}
diff --git a/lib/vscode/build/azure-pipelines/win32/sign.ps1 b/lib/vscode/build/azure-pipelines/win32/sign.ps1
deleted file mode 100644
index b73db31207f0..000000000000
--- a/lib/vscode/build/azure-pipelines/win32/sign.ps1
+++ /dev/null
@@ -1,71 +0,0 @@
-function Create-TmpJson($Obj) {
-	$FileName = [System.IO.Path]::GetTempFileName()
-	ConvertTo-Json -Depth 100 $Obj | Out-File -Encoding UTF8 $FileName
-	return $FileName
-}
-
-$Auth = Create-TmpJson @{
-	Version = "1.0.0"
-	AuthenticationType = "AAD_CERT"
-	ClientId = $env:ESRPClientId
-	AuthCert = @{
-		SubjectName = $env:ESRPAuthCertificateSubjectName
-		StoreLocation = "LocalMachine"
-		StoreName = "My"
-		SendX5c = "true"
-	}
-	RequestSigningCert = @{
-		SubjectName = $env:ESRPCertificateSubjectName
-		StoreLocation = "LocalMachine"
-		StoreName = "My"
-	}
-}
-
-$Policy = Create-TmpJson @{
-	Version = "1.0.0"
-}
-
-$Input = Create-TmpJson @{
-	Version = "1.0.0"
-	SignBatches = @(
-		@{
-			SourceLocationType = "UNC"
-			SignRequestFiles = @(
-				@{
-					SourceLocation = $args[0]
-				}
-			)
-			SigningInfo = @{
-				Operations = @(
-					@{
-						KeyCode = "CP-230012"
-						OperationCode = "SigntoolSign"
-						Parameters = @{
-							OpusName = "VS Code"
-							OpusInfo = "https://code.visualstudio.com/"
-							Append = "/as"
-							FileDigest = "/fd `"SHA256`""
-							PageHash = "/NPH"
-							TimeStamp = "/tr `"http://rfc3161.gtm.corp.microsoft.com/TSS/HttpTspServer`" /td sha256"
-						}
-						ToolName = "sign"
-						ToolVersion = "1.0"
-					},
-					@{
-						KeyCode = "CP-230012"
-						OperationCode = "SigntoolVerify"
-						Parameters = @{
-							VerifyAll = "/all"
-						}
-						ToolName = "sign"
-						ToolVersion = "1.0"
-					}
-				)
-			}
-		}
-	)
-}
-
-$Output = [System.IO.Path]::GetTempFileName()
-$ScriptPath = Split-Path -Path $MyInvocation.MyCommand.Definition -Parent
-& "$ScriptPath\ESRPClient\packages\Microsoft.ESRPClient.*\tools\ESRPClient.exe" Sign -a $Auth -p $Policy -i $Input -o $Output
diff --git a/lib/vscode/build/builtin/.eslintrc b/lib/vscode/build/builtin/.eslintrc
deleted file mode 100644
index 84e384941f3a..000000000000
--- a/lib/vscode/build/builtin/.eslintrc
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-	"env": {
-		"node": true,
-		"es6": true,
-		"browser": true
-	},
-	"rules": {
-		"no-console": 0,
-		"no-cond-assign": 0,
-		"no-unused-vars": 1,
-		"no-extra-semi": "warn",
-		"semi": "warn"
-	},
-	"extends": "eslint:recommended",
-	"parserOptions": {
-		"ecmaFeatures": {
-			"experimentalObjectRestSpread": true
-		}
-	}
-}
\ No newline at end of file
diff --git a/lib/vscode/build/builtin/browser-main.js b/lib/vscode/build/builtin/browser-main.js
deleted file mode 100644
index d105181d6349..000000000000
--- a/lib/vscode/build/builtin/browser-main.js
+++ /dev/null
@@ -1,120 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-const fs = require('fs');
-const path = require('path');
-const os = require('os');
-const { ipcRenderer } = require('electron');
-
-const builtInExtensionsPath = path.join(__dirname, '..', '..', 'product.json');
-const controlFilePath = path.join(os.homedir(), '.vscode-oss-dev', 'extensions', 'control.json');
-
-function readJson(filePath) {
-	return JSON.parse(fs.readFileSync(filePath, { encoding: 'utf8' }));
-}
-
-function writeJson(filePath, obj) {
-	fs.writeFileSync(filePath, JSON.stringify(obj, null, 2));
-}
-
-function renderOption(form, id, title, value, checked) {
-	const input = document.createElement('input');
-	input.type = 'radio';
-	input.id = id;
-	input.name = 'choice';
-	input.value = value;
-	input.checked = !!checked;
-	form.appendChild(input);
-
-	const label = document.createElement('label');
-	label.setAttribute('for', id);
-	label.textContent = title;
-	form.appendChild(label);
-
-	return input;
-}
-
-function render(el, state) {
-	function setState(state) {
-		try {
-			writeJson(controlFilePath, state.control);
-		} catch (err) {
-			console.error(err);
-		}
-
-		el.innerHTML = '';
-		render(el, state);
-	}
-
-	const ul = document.createElement('ul');
-	const { builtin, control } = state;
-
-	for (const ext of builtin) {
-		const controlState = control[ext.name] || 'marketplace';
-
-		const li = document.createElement('li');
-		ul.appendChild(li);
-
-		const name = document.createElement('code');
-		name.textContent = ext.name;
-		li.appendChild(name);
-
-		const form = document.createElement('form');
-		li.appendChild(form);
-
-		const marketplaceInput = renderOption(form, `marketplace-${ext.name}`, 'Marketplace', 'marketplace', controlState === 'marketplace');
-		marketplaceInput.onchange = function () {
-			control[ext.name] = 'marketplace';
-			setState({ builtin, control });
-		};
-
-		const disabledInput = renderOption(form, `disabled-${ext.name}`, 'Disabled', 'disabled', controlState === 'disabled');
-		disabledInput.onchange = function () {
-			control[ext.name] = 'disabled';
-			setState({ builtin, control });
-		};
-
-		let local = undefined;
-
-		if (controlState !== 'marketplace' && controlState !== 'disabled') {
-			local = controlState;
-		}
-
-		const localInput = renderOption(form, `local-${ext.name}`, 'Local', 'local', !!local);
-		localInput.onchange = async function () {
-			const result = await ipcRenderer.invoke('pickdir');
-
-			if (result) {
-				control[ext.name] = result;
-				setState({ builtin, control });
-			}
-		};
-
-		if (local) {
-			const localSpan = document.createElement('code');
-			localSpan.className = 'local';
-			localSpan.textContent = local;
-			form.appendChild(localSpan);
-		}
-	}
-
-	el.appendChild(ul);
-}
-
-function main() {
-	const el = document.getElementById('extensions');
-	const builtin = readJson(builtInExtensionsPath).builtInExtensions;
-	let control;
-
-	try {
-		control = readJson(controlFilePath);
-	} catch (err) {
-		control = {};
-	}
-
-	render(el, { builtin, control });
-}
-
-window.onload = main;
diff --git a/lib/vscode/build/builtin/index.html b/lib/vscode/build/builtin/index.html
deleted file mode 100644
index 13c84e0375c9..000000000000
--- a/lib/vscode/build/builtin/index.html
+++ /dev/null
@@ -1,46 +0,0 @@
-<!-- Copyright (C) Microsoft Corporation. All rights reserved. -->
-
-<!DOCTYPE html>
-<html>
-
-<head>
-	<meta charset="utf-8" />
-	<meta http-equiv="X-UA-Compatible" content="IE=edge">
-	<title>Manage Built-in Extensions</title>
-	<meta name="viewport" content="width=device-width, initial-scale=1">
-	<script src="browser-main.js"></script>
-	<style>
-		body {
-			font-family: 'Trebuchet MS', 'Lucida Sans Unicode', 'Lucida Grande', 'Lucida Sans', Arial, sans-serif;
-			font-size: 10pt;
-		}
-
-		code {
-			font-family: 'Menlo', 'Courier New', 'Courier', monospace;
-		}
-
-		ul {
-			padding-left: 1em;
-		}
-
-		li {
-			list-style: none;
-			padding: 0.3em 0;
-		}
-
-		label {
-			margin-right: 1em;
-		}
-
-		form {
-			padding: 0.3em 0 0.3em 0.3em;
-		}
-	</style>
-</head>
-
-<body>
-	<h1>Built-in Extensions</h1>
-	<div id="extensions"></div>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/lib/vscode/build/builtin/main.js b/lib/vscode/build/builtin/main.js
deleted file mode 100644
index 3a11d363f960..000000000000
--- a/lib/vscode/build/builtin/main.js
+++ /dev/null
@@ -1,43 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-const { app, BrowserWindow, ipcMain, dialog } = require('electron');
-const url = require('url');
-const path = require('path');
-
-let window = null;
-
-ipcMain.handle('pickdir', async () => {
-	const result = await dialog.showOpenDialog(window, {
-		title: 'Choose Folder',
-		properties: ['openDirectory']
-	});
-
-	if (result.canceled || result.filePaths.length < 1) {
-		return undefined;
-	}
-
-	return result.filePaths[0];
-});
-
-app.once('ready', () => {
-	window = new BrowserWindow({
-		width: 800,
-		height: 600,
-		webPreferences: {
-			nodeIntegration: true,
-			contextIsolation: false,
-			webviewTag: true,
-			enableWebSQL: false,
-			nativeWindowOpen: true
-		}
-	});
-	window.setMenuBarVisibility(false);
-	window.loadURL(url.format({ pathname: path.join(__dirname, 'index.html'), protocol: 'file:', slashes: true }));
-	// window.webContents.openDevTools();
-	window.once('closed', () => window = null);
-});
-
-app.on('window-all-closed', () => app.quit());
diff --git a/lib/vscode/build/builtin/package.json b/lib/vscode/build/builtin/package.json
deleted file mode 100644
index 6843791a5d82..000000000000
--- a/lib/vscode/build/builtin/package.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-	"name": "builtin",
-	"version": "0.1.0",
-	"main": "main.js"
-}
\ No newline at end of file
diff --git a/lib/vscode/build/darwin/create-universal-app.js b/lib/vscode/build/darwin/create-universal-app.js
deleted file mode 100644
index d91064d41a60..000000000000
--- a/lib/vscode/build/darwin/create-universal-app.js
+++ /dev/null
@@ -1,59 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-'use strict';
-Object.defineProperty(exports, "__esModule", { value: true });
-const vscode_universal_1 = require("vscode-universal");
-const fs = require("fs-extra");
-const path = require("path");
-const plist = require("plist");
-const product = require("../../product.json");
-async function main() {
-    const buildDir = process.env['AGENT_BUILDDIRECTORY'];
-    const arch = process.env['VSCODE_ARCH'];
-    if (!buildDir) {
-        throw new Error('$AGENT_BUILDDIRECTORY not set');
-    }
-    const appName = product.nameLong + '.app';
-    const x64AppPath = path.join(buildDir, 'VSCode-darwin-x64', appName);
-    const arm64AppPath = path.join(buildDir, 'VSCode-darwin-arm64', appName);
-    const x64AsarPath = path.join(x64AppPath, 'Contents', 'Resources', 'app', 'node_modules.asar');
-    const arm64AsarPath = path.join(arm64AppPath, 'Contents', 'Resources', 'app', 'node_modules.asar');
-    const outAppPath = path.join(buildDir, `VSCode-darwin-${arch}`, appName);
-    const productJsonPath = path.resolve(outAppPath, 'Contents', 'Resources', 'app', 'product.json');
-    const infoPlistPath = path.resolve(outAppPath, 'Contents', 'Info.plist');
-    await vscode_universal_1.makeUniversalApp({
-        x64AppPath,
-        arm64AppPath,
-        x64AsarPath,
-        arm64AsarPath,
-        filesToSkip: [
-            'product.json',
-            'Credits.rtf',
-            'CodeResources',
-            'fsevents.node',
-            'Info.plist',
-            '.npmrc'
-        ],
-        outAppPath,
-        force: true
-    });
-    let productJson = await fs.readJson(productJsonPath);
-    Object.assign(productJson, {
-        darwinUniversalAssetId: 'darwin-universal'
-    });
-    await fs.writeJson(productJsonPath, productJson);
-    let infoPlistString = await fs.readFile(infoPlistPath, 'utf8');
-    let infoPlistJson = plist.parse(infoPlistString);
-    Object.assign(infoPlistJson, {
-        LSRequiresNativeExecution: true
-    });
-    await fs.writeFile(infoPlistPath, plist.build(infoPlistJson), 'utf8');
-}
-if (require.main === module) {
-    main().catch(err => {
-        console.error(err);
-        process.exit(1);
-    });
-}
diff --git a/lib/vscode/build/darwin/create-universal-app.ts b/lib/vscode/build/darwin/create-universal-app.ts
deleted file mode 100644
index b13e80100e6c..000000000000
--- a/lib/vscode/build/darwin/create-universal-app.ts
+++ /dev/null
@@ -1,67 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-'use strict';
-
-import { makeUniversalApp } from 'vscode-universal';
-import * as fs from 'fs-extra';
-import * as path from 'path';
-import * as plist from 'plist';
-import * as product from '../../product.json';
-
-async function main() {
-	const buildDir = process.env['AGENT_BUILDDIRECTORY'];
-	const arch = process.env['VSCODE_ARCH'];
-
-	if (!buildDir) {
-		throw new Error('$AGENT_BUILDDIRECTORY not set');
-	}
-
-	const appName = product.nameLong + '.app';
-	const x64AppPath = path.join(buildDir, 'VSCode-darwin-x64', appName);
-	const arm64AppPath = path.join(buildDir, 'VSCode-darwin-arm64', appName);
-	const x64AsarPath = path.join(x64AppPath, 'Contents', 'Resources', 'app', 'node_modules.asar');
-	const arm64AsarPath = path.join(arm64AppPath, 'Contents', 'Resources', 'app', 'node_modules.asar');
-	const outAppPath = path.join(buildDir, `VSCode-darwin-${arch}`, appName);
-	const productJsonPath = path.resolve(outAppPath, 'Contents', 'Resources', 'app', 'product.json');
-	const infoPlistPath = path.resolve(outAppPath, 'Contents', 'Info.plist');
-
-	await makeUniversalApp({
-		x64AppPath,
-		arm64AppPath,
-		x64AsarPath,
-		arm64AsarPath,
-		filesToSkip: [
-			'product.json',
-			'Credits.rtf',
-			'CodeResources',
-			'fsevents.node',
-			'Info.plist', // TODO@deepak1556: regressed with 11.4.2 internal builds
-			'.npmrc'
-		],
-		outAppPath,
-		force: true
-	});
-
-	let productJson = await fs.readJson(productJsonPath);
-	Object.assign(productJson, {
-		darwinUniversalAssetId: 'darwin-universal'
-	});
-	await fs.writeJson(productJsonPath, productJson);
-
-	let infoPlistString = await fs.readFile(infoPlistPath, 'utf8');
-	let infoPlistJson = plist.parse(infoPlistString);
-	Object.assign(infoPlistJson, {
-		LSRequiresNativeExecution: true
-	});
-	await fs.writeFile(infoPlistPath, plist.build(infoPlistJson), 'utf8');
-}
-
-if (require.main === module) {
-	main().catch(err => {
-		console.error(err);
-		process.exit(1);
-	});
-}
diff --git a/lib/vscode/build/darwin/sign.js b/lib/vscode/build/darwin/sign.js
deleted file mode 100644
index 08993aebdebb..000000000000
--- a/lib/vscode/build/darwin/sign.js
+++ /dev/null
@@ -1,69 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-'use strict';
-Object.defineProperty(exports, "__esModule", { value: true });
-const codesign = require("electron-osx-sign");
-const fs = require("fs-extra");
-const path = require("path");
-const plist = require("plist");
-const util = require("../lib/util");
-const product = require("../../product.json");
-async function main() {
-    const buildDir = process.env['AGENT_BUILDDIRECTORY'];
-    const tempDir = process.env['AGENT_TEMPDIRECTORY'];
-    const arch = process.env['VSCODE_ARCH'];
-    if (!buildDir) {
-        throw new Error('$AGENT_BUILDDIRECTORY not set');
-    }
-    if (!tempDir) {
-        throw new Error('$AGENT_TEMPDIRECTORY not set');
-    }
-    const baseDir = path.dirname(__dirname);
-    const appRoot = path.join(buildDir, `VSCode-darwin-${arch}`);
-    const appName = product.nameLong + '.app';
-    const appFrameworkPath = path.join(appRoot, appName, 'Contents', 'Frameworks');
-    const helperAppBaseName = product.nameShort;
-    const gpuHelperAppName = helperAppBaseName + ' Helper (GPU).app';
-    const rendererHelperAppName = helperAppBaseName + ' Helper (Renderer).app';
-    const infoPlistPath = path.resolve(appRoot, appName, 'Contents', 'Info.plist');
-    const defaultOpts = {
-        app: path.join(appRoot, appName),
-        platform: 'darwin',
-        entitlements: path.join(baseDir, 'azure-pipelines', 'darwin', 'app-entitlements.plist'),
-        'entitlements-inherit': path.join(baseDir, 'azure-pipelines', 'darwin', 'app-entitlements.plist'),
-        hardenedRuntime: true,
-        'pre-auto-entitlements': false,
-        'pre-embed-provisioning-profile': false,
-        keychain: path.join(tempDir, 'buildagent.keychain'),
-        version: util.getElectronVersion(),
-        identity: '99FM488X57',
-        'gatekeeper-assess': false
-    };
-    const appOpts = Object.assign(Object.assign({}, defaultOpts), { 
-        // TODO(deepak1556): Incorrectly declared type in electron-osx-sign
-        ignore: (filePath) => {
-            return filePath.includes(gpuHelperAppName) ||
-                filePath.includes(rendererHelperAppName);
-        } });
-    const gpuHelperOpts = Object.assign(Object.assign({}, defaultOpts), { app: path.join(appFrameworkPath, gpuHelperAppName), entitlements: path.join(baseDir, 'azure-pipelines', 'darwin', 'helper-gpu-entitlements.plist'), 'entitlements-inherit': path.join(baseDir, 'azure-pipelines', 'darwin', 'helper-gpu-entitlements.plist') });
-    const rendererHelperOpts = Object.assign(Object.assign({}, defaultOpts), { app: path.join(appFrameworkPath, rendererHelperAppName), entitlements: path.join(baseDir, 'azure-pipelines', 'darwin', 'helper-renderer-entitlements.plist'), 'entitlements-inherit': path.join(baseDir, 'azure-pipelines', 'darwin', 'helper-renderer-entitlements.plist') });
-    let infoPlistString = await fs.readFile(infoPlistPath, 'utf8');
-    let infoPlistJson = plist.parse(infoPlistString);
-    Object.assign(infoPlistJson, {
-        NSAppleEventsUsageDescription: 'An application in Visual Studio Code wants to use AppleScript.',
-        NSMicrophoneUsageDescription: 'An application in Visual Studio Code wants to use the Microphone.',
-        NSCameraUsageDescription: 'An application in Visual Studio Code wants to use the Camera.'
-    });
-    await fs.writeFile(infoPlistPath, plist.build(infoPlistJson), 'utf8');
-    await codesign.signAsync(gpuHelperOpts);
-    await codesign.signAsync(rendererHelperOpts);
-    await codesign.signAsync(appOpts);
-}
-if (require.main === module) {
-    main().catch(err => {
-        console.error(err);
-        process.exit(1);
-    });
-}
diff --git a/lib/vscode/build/darwin/sign.ts b/lib/vscode/build/darwin/sign.ts
deleted file mode 100644
index 8f4e2cb2ad8c..000000000000
--- a/lib/vscode/build/darwin/sign.ts
+++ /dev/null
@@ -1,93 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-'use strict';
-
-import * as codesign from 'electron-osx-sign';
-import * as fs from 'fs-extra';
-import * as path from 'path';
-import * as plist from 'plist';
-import * as util from '../lib/util';
-import * as product from '../../product.json';
-
-async function main(): Promise<void> {
-	const buildDir = process.env['AGENT_BUILDDIRECTORY'];
-	const tempDir = process.env['AGENT_TEMPDIRECTORY'];
-	const arch = process.env['VSCODE_ARCH'];
-
-	if (!buildDir) {
-		throw new Error('$AGENT_BUILDDIRECTORY not set');
-	}
-
-	if (!tempDir) {
-		throw new Error('$AGENT_TEMPDIRECTORY not set');
-	}
-
-	const baseDir = path.dirname(__dirname);
-	const appRoot = path.join(buildDir, `VSCode-darwin-${arch}`);
-	const appName = product.nameLong + '.app';
-	const appFrameworkPath = path.join(appRoot, appName, 'Contents', 'Frameworks');
-	const helperAppBaseName = product.nameShort;
-	const gpuHelperAppName = helperAppBaseName + ' Helper (GPU).app';
-	const rendererHelperAppName = helperAppBaseName + ' Helper (Renderer).app';
-	const infoPlistPath = path.resolve(appRoot, appName, 'Contents', 'Info.plist');
-
-	const defaultOpts: codesign.SignOptions = {
-		app: path.join(appRoot, appName),
-		platform: 'darwin',
-		entitlements: path.join(baseDir, 'azure-pipelines', 'darwin', 'app-entitlements.plist'),
-		'entitlements-inherit': path.join(baseDir, 'azure-pipelines', 'darwin', 'app-entitlements.plist'),
-		hardenedRuntime: true,
-		'pre-auto-entitlements': false,
-		'pre-embed-provisioning-profile': false,
-		keychain: path.join(tempDir, 'buildagent.keychain'),
-		version: util.getElectronVersion(),
-		identity: '99FM488X57',
-		'gatekeeper-assess': false
-	};
-
-	const appOpts = {
-		...defaultOpts,
-		// TODO(deepak1556): Incorrectly declared type in electron-osx-sign
-		ignore: (filePath: string) => {
-			return filePath.includes(gpuHelperAppName) ||
-				filePath.includes(rendererHelperAppName);
-		}
-	};
-
-	const gpuHelperOpts: codesign.SignOptions = {
-		...defaultOpts,
-		app: path.join(appFrameworkPath, gpuHelperAppName),
-		entitlements: path.join(baseDir, 'azure-pipelines', 'darwin', 'helper-gpu-entitlements.plist'),
-		'entitlements-inherit': path.join(baseDir, 'azure-pipelines', 'darwin', 'helper-gpu-entitlements.plist'),
-	};
-
-	const rendererHelperOpts: codesign.SignOptions = {
-		...defaultOpts,
-		app: path.join(appFrameworkPath, rendererHelperAppName),
-		entitlements: path.join(baseDir, 'azure-pipelines', 'darwin', 'helper-renderer-entitlements.plist'),
-		'entitlements-inherit': path.join(baseDir, 'azure-pipelines', 'darwin', 'helper-renderer-entitlements.plist'),
-	};
-
-	let infoPlistString = await fs.readFile(infoPlistPath, 'utf8');
-	let infoPlistJson = plist.parse(infoPlistString);
-	Object.assign(infoPlistJson, {
-		NSAppleEventsUsageDescription: 'An application in Visual Studio Code wants to use AppleScript.',
-		NSMicrophoneUsageDescription: 'An application in Visual Studio Code wants to use the Microphone.',
-		NSCameraUsageDescription: 'An application in Visual Studio Code wants to use the Camera.'
-	});
-	await fs.writeFile(infoPlistPath, plist.build(infoPlistJson), 'utf8');
-
-	await codesign.signAsync(gpuHelperOpts);
-	await codesign.signAsync(rendererHelperOpts);
-	await codesign.signAsync(appOpts as any);
-}
-
-if (require.main === module) {
-	main().catch(err => {
-		console.error(err);
-		process.exit(1);
-	});
-}
diff --git a/lib/vscode/build/eslint.js b/lib/vscode/build/eslint.js
deleted file mode 100644
index 3e3fdf196784..000000000000
--- a/lib/vscode/build/eslint.js
+++ /dev/null
@@ -1,36 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-const es = require('event-stream');
-const vfs = require('vinyl-fs');
-const { jsHygieneFilter, tsHygieneFilter } = require('./filters');
-
-function eslint() {
-	const gulpeslint = require('gulp-eslint');
-	return vfs
-		.src([...jsHygieneFilter, ...tsHygieneFilter], { base: '.', follow: true, allowEmpty: true })
-		.pipe(
-			gulpeslint({
-				configFile: '.eslintrc.json',
-				rulePaths: ['./build/lib/eslint'],
-			})
-		)
-		.pipe(gulpeslint.formatEach('compact'))
-		.pipe(
-			gulpeslint.results((results) => {
-				if (results.warningCount > 0 || results.errorCount > 0) {
-					throw new Error('eslint failed with warnings and/or errors');
-				}
-			})
-		).pipe(es.through(function () { /* noop, important for the stream to end */ }));
-}
-
-if (require.main === module) {
-	eslint().on('error', (err) => {
-		console.error();
-		console.error(err);
-		process.exit(1);
-	});
-}
diff --git a/lib/vscode/build/filters.js b/lib/vscode/build/filters.js
deleted file mode 100644
index 8c0b94dc3f80..000000000000
--- a/lib/vscode/build/filters.js
+++ /dev/null
@@ -1,157 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-/**
- * Hygiene works by creating cascading subsets of all our files and
- * passing them through a sequence of checks. Here are the current subsets,
- * named according to the checks performed on them. Each subset contains
- * the following one, as described in mathematical notation:
- *
- * all ⊃ eol ⊇ indentation ⊃ copyright ⊃ typescript
- */
-
-module.exports.all = [
-	'*',
-	'build/**/*',
-	'extensions/**/*',
-	'scripts/**/*',
-	'src/**/*',
-	'test/**/*',
-	'!out*/**',
-	'!test/**/out/**',
-	'!**/node_modules/**',
-];
-
-module.exports.indentationFilter = [
-	'**',
-
-	// except specific files
-	'!**/ThirdPartyNotices.txt',
-	'!**/LICENSE.{txt,rtf}',
-	'!LICENSES.chromium.html',
-	'!**/LICENSE',
-	'!src/vs/nls.js',
-	'!src/vs/nls.build.js',
-	'!src/vs/css.js',
-	'!src/vs/css.build.js',
-	'!src/vs/loader.js',
-	'!src/vs/base/common/insane/insane.js',
-	'!src/vs/base/common/marked/marked.js',
-	'!src/vs/base/common/semver/semver.js',
-	'!src/vs/base/node/terminateProcess.sh',
-	'!src/vs/base/node/cpuUsage.sh',
-	'!test/unit/assert.js',
-	'!resources/linux/snap/electron-launch',
-	'!build/ext.js',
-
-	// except specific folders
-	'!test/automation/out/**',
-	'!test/monaco/out/**',
-	'!test/smoke/out/**',
-	'!extensions/typescript-language-features/test-workspace/**',
-	'!extensions/notebook-markdown-extensions/notebook-out/**',
-	'!extensions/vscode-api-tests/testWorkspace/**',
-	'!extensions/vscode-api-tests/testWorkspace2/**',
-	'!extensions/vscode-custom-editor-tests/test-workspace/**',
-	'!build/monaco/**',
-	'!build/win32/**',
-
-	// except multiple specific files
-	'!**/package.json',
-	'!**/yarn.lock',
-	'!**/yarn-error.log',
-
-	// except multiple specific folders
-	'!**/codicon/**',
-	'!**/fixtures/**',
-	'!**/lib/**',
-	'!extensions/**/dist/**',
-	'!extensions/**/out/**',
-	'!extensions/**/snippets/**',
-	'!extensions/**/syntaxes/**',
-	'!extensions/**/themes/**',
-	'!extensions/**/colorize-fixtures/**',
-
-	// except specific file types
-	'!src/vs/*/**/*.d.ts',
-	'!src/typings/**/*.d.ts',
-	'!extensions/**/*.d.ts',
-	'!**/*.{svg,exe,png,bmp,jpg,scpt,bat,cmd,cur,ttf,woff,eot,md,ps1,template,yaml,yml,d.ts.recipe,ico,icns,plist}',
-	'!build/{lib,download,darwin}/**/*.js',
-	'!build/**/*.sh',
-	'!build/azure-pipelines/**/*.js',
-	'!build/azure-pipelines/**/*.config',
-	'!**/Dockerfile',
-	'!**/Dockerfile.*',
-	'!**/*.Dockerfile',
-	'!**/*.dockerfile',
-	'!extensions/markdown-language-features/media/*.js',
-	'!extensions/markdown-language-features/notebook-out/*.js',
-	'!extensions/notebook-markdown-extensions/notebook-out/*.js',
-	'!extensions/simple-browser/media/*.js',
-];
-
-module.exports.copyrightFilter = [
-	'**',
-	'!**/*.desktop',
-	'!**/*.json',
-	'!**/*.html',
-	'!**/*.template',
-	'!**/*.md',
-	'!**/*.bat',
-	'!**/*.cmd',
-	'!**/*.ico',
-	'!**/*.icns',
-	'!**/*.xml',
-	'!**/*.sh',
-	'!**/*.txt',
-	'!**/*.xpm',
-	'!**/*.opts',
-	'!**/*.disabled',
-	'!**/*.code-workspace',
-	'!**/*.js.map',
-	'!build/**/*.init',
-	'!resources/linux/snap/snapcraft.yaml',
-	'!resources/win32/bin/code.js',
-	'!resources/web/code-web.js',
-	'!resources/completions/**',
-	'!extensions/configuration-editing/build/inline-allOf.ts',
-	'!extensions/markdown-language-features/media/highlight.css',
-	'!extensions/notebook-markdown-extensions/notebook-out/**',
-	'!extensions/html-language-features/server/src/modes/typescript/*',
-	'!extensions/*/server/bin/*',
-	'!src/vs/editor/test/node/classification/typescript-test.ts',
-];
-
-module.exports.jsHygieneFilter = [
-	'src/**/*.js',
-	'build/gulpfile.*.js',
-	'!src/vs/loader.js',
-	'!src/vs/css.js',
-	'!src/vs/nls.js',
-	'!src/vs/css.build.js',
-	'!src/vs/nls.build.js',
-	'!src/**/insane.js',
-	'!src/**/marked.js',
-	'!src/**/semver.js',
-	'!**/test/**',
-];
-
-module.exports.tsHygieneFilter = [
-	'src/**/*.ts',
-	'test/**/*.ts',
-	'extensions/**/*.ts',
-	'!src/vs/*/**/*.d.ts',
-	'!src/typings/**/*.d.ts',
-	'!extensions/**/*.d.ts',
-	'!**/fixtures/**',
-	'!**/typings/**',
-	'!**/node_modules/**',
-	'!extensions/**/colorize-fixtures/**',
-	'!extensions/vscode-api-tests/testWorkspace/**',
-	'!extensions/vscode-api-tests/testWorkspace2/**',
-	'!extensions/**/*.test.ts',
-	'!extensions/html-language-features/server/lib/jquery.d.ts',
-];
diff --git a/lib/vscode/build/gulpfile.compile.js b/lib/vscode/build/gulpfile.compile.js
deleted file mode 100644
index d10a87f9f8af..000000000000
--- a/lib/vscode/build/gulpfile.compile.js
+++ /dev/null
@@ -1,21 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-'use strict';
-
-const gulp = require('gulp');
-const util = require('./lib/util');
-const task = require('./lib/task');
-const compilation = require('./lib/compilation');
-
-// Full compile, including nls and inline sources in sourcemaps, for build
-const compileBuildTask = task.define('compile-build',
-	task.series(
-		util.rimraf('out-build'),
-		compilation.compileTask('src', 'out-build', true)
-	)
-);
-gulp.task(compileBuildTask);
-exports.compileBuildTask = compileBuildTask;
diff --git a/lib/vscode/build/gulpfile.editor.js b/lib/vscode/build/gulpfile.editor.js
deleted file mode 100644
index 230082e4ad9a..000000000000
--- a/lib/vscode/build/gulpfile.editor.js
+++ /dev/null
@@ -1,478 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-const gulp = require('gulp');
-const path = require('path');
-const util = require('./lib/util');
-const task = require('./lib/task');
-const common = require('./lib/optimize');
-const es = require('event-stream');
-const File = require('vinyl');
-const i18n = require('./lib/i18n');
-const standalone = require('./lib/standalone');
-const cp = require('child_process');
-const compilation = require('./lib/compilation');
-const monacoapi = require('./lib/monaco-api');
-const fs = require('fs');
-
-let root = path.dirname(__dirname);
-let sha1 = util.getVersion(root);
-let semver = require('./monaco/package.json').version;
-let headerVersion = semver + '(' + sha1 + ')';
-
-// Build
-
-let editorEntryPoints = [
-	{
-		name: 'vs/editor/editor.main',
-		include: [],
-		exclude: ['vs/css', 'vs/nls'],
-		prepend: ['out-editor-build/vs/css.js', 'out-editor-build/vs/nls.js'],
-	},
-	{
-		name: 'vs/base/common/worker/simpleWorker',
-		include: ['vs/editor/common/services/editorSimpleWorker'],
-		prepend: ['vs/loader.js'],
-		append: ['vs/base/worker/workerMain'],
-		dest: 'vs/base/worker/workerMain.js'
-	}
-];
-
-let editorResources = [
-	'out-editor-build/vs/base/browser/ui/codicons/**/*.ttf'
-];
-
-let BUNDLED_FILE_HEADER = [
-	'/*!-----------------------------------------------------------',
-	' * Copyright (c) Microsoft Corporation. All rights reserved.',
-	' * Version: ' + headerVersion,
-	' * Released under the MIT license',
-	' * https://github.com/microsoft/vscode/blob/main/LICENSE.txt',
-	' *-----------------------------------------------------------*/',
-	''
-].join('\n');
-
-const languages = i18n.defaultLanguages.concat([]);  // i18n.defaultLanguages.concat(process.env.VSCODE_QUALITY !== 'stable' ? i18n.extraLanguages : []);
-
-const extractEditorSrcTask = task.define('extract-editor-src', () => {
-	const apiusages = monacoapi.execute().usageContent;
-	const extrausages = fs.readFileSync(path.join(root, 'build', 'monaco', 'monaco.usage.recipe')).toString();
-	standalone.extractEditor({
-		sourcesRoot: path.join(root, 'src'),
-		entryPoints: [
-			'vs/editor/editor.main',
-			'vs/editor/editor.worker',
-			'vs/base/worker/workerMain',
-		],
-		inlineEntryPoints: [
-			apiusages,
-			extrausages
-		],
-		shakeLevel: 2, // 0-Files, 1-InnerFile, 2-ClassMembers
-		importIgnorePattern: /(^vs\/css!)/,
-		destRoot: path.join(root, 'out-editor-src'),
-		redirects: []
-	});
-});
-
-const compileEditorAMDTask = task.define('compile-editor-amd', compilation.compileTask('out-editor-src', 'out-editor-build', true));
-
-const optimizeEditorAMDTask = task.define('optimize-editor-amd', common.optimizeTask({
-	src: 'out-editor-build',
-	entryPoints: editorEntryPoints,
-	resources: editorResources,
-	loaderConfig: {
-		paths: {
-			'vs': 'out-editor-build/vs',
-			'vs/css': 'out-editor-build/vs/css.build',
-			'vs/nls': 'out-editor-build/vs/nls.build',
-			'vscode': 'empty:'
-		}
-	},
-	bundleLoader: false,
-	header: BUNDLED_FILE_HEADER,
-	bundleInfo: true,
-	out: 'out-editor',
-	languages: languages
-}));
-
-const minifyEditorAMDTask = task.define('minify-editor-amd', common.minifyTask('out-editor'));
-
-const createESMSourcesAndResourcesTask = task.define('extract-editor-esm', () => {
-	standalone.createESMSourcesAndResources2({
-		srcFolder: './out-editor-src',
-		outFolder: './out-editor-esm',
-		outResourcesFolder: './out-monaco-editor-core/esm',
-		ignores: [
-			'inlineEntryPoint:0.ts',
-			'inlineEntryPoint:1.ts',
-			'vs/loader.js',
-			'vs/nls.ts',
-			'vs/nls.build.js',
-			'vs/nls.d.ts',
-			'vs/css.js',
-			'vs/css.build.js',
-			'vs/css.d.ts',
-			'vs/base/worker/workerMain.ts',
-		],
-		renames: {
-			'vs/nls.mock.ts': 'vs/nls.ts'
-		}
-	});
-});
-
-const compileEditorESMTask = task.define('compile-editor-esm', () => {
-	const KEEP_PREV_ANALYSIS = false;
-	const FAIL_ON_PURPOSE = false;
-	console.log(`Launching the TS compiler at ${path.join(__dirname, '../out-editor-esm')}...`);
-	let result;
-	if (process.platform === 'win32') {
-		result = cp.spawnSync(`..\\node_modules\\.bin\\tsc.cmd`, {
-			cwd: path.join(__dirname, '../out-editor-esm')
-		});
-	} else {
-		result = cp.spawnSync(`node`, [`../node_modules/.bin/tsc`], {
-			cwd: path.join(__dirname, '../out-editor-esm')
-		});
-	}
-
-	console.log(result.stdout.toString());
-	console.log(result.stderr.toString());
-
-	if (FAIL_ON_PURPOSE || result.status !== 0) {
-		console.log(`The TS Compilation failed, preparing analysis folder...`);
-		const destPath = path.join(__dirname, '../../vscode-monaco-editor-esm-analysis');
-		const keepPrevAnalysis = (KEEP_PREV_ANALYSIS && fs.existsSync(destPath));
-		const cleanDestPath = (keepPrevAnalysis ? Promise.resolve() : util.rimraf(destPath)());
-		return cleanDestPath.then(() => {
-			// build a list of files to copy
-			const files = util.rreddir(path.join(__dirname, '../out-editor-esm'));
-
-			if (!keepPrevAnalysis) {
-				fs.mkdirSync(destPath);
-
-				// initialize a new repository
-				cp.spawnSync(`git`, [`init`], {
-					cwd: destPath
-				});
-
-				// copy files from src
-				for (const file of files) {
-					const srcFilePath = path.join(__dirname, '../src', file);
-					const dstFilePath = path.join(destPath, file);
-					if (fs.existsSync(srcFilePath)) {
-						util.ensureDir(path.dirname(dstFilePath));
-						const contents = fs.readFileSync(srcFilePath).toString().replace(/\r\n|\r|\n/g, '\n');
-						fs.writeFileSync(dstFilePath, contents);
-					}
-				}
-
-				// create an initial commit to diff against
-				cp.spawnSync(`git`, [`add`, `.`], {
-					cwd: destPath
-				});
-
-				// create the commit
-				cp.spawnSync(`git`, [`commit`, `-m`, `"original sources"`, `--no-gpg-sign`], {
-					cwd: destPath
-				});
-			}
-
-			// copy files from tree shaken src
-			for (const file of files) {
-				const srcFilePath = path.join(__dirname, '../out-editor-src', file);
-				const dstFilePath = path.join(destPath, file);
-				if (fs.existsSync(srcFilePath)) {
-					util.ensureDir(path.dirname(dstFilePath));
-					const contents = fs.readFileSync(srcFilePath).toString().replace(/\r\n|\r|\n/g, '\n');
-					fs.writeFileSync(dstFilePath, contents);
-				}
-			}
-
-			console.log(`Open in VS Code the folder at '${destPath}' and you can alayze the compilation error`);
-			throw new Error('Standalone Editor compilation failed. If this is the build machine, simply launch `yarn run gulp editor-distro` on your machine to further analyze the compilation problem.');
-		});
-	}
-});
-
-function toExternalDTS(contents) {
-	let lines = contents.split(/\r\n|\r|\n/);
-	let killNextCloseCurlyBrace = false;
-	for (let i = 0; i < lines.length; i++) {
-		let line = lines[i];
-
-		if (killNextCloseCurlyBrace) {
-			if ('}' === line) {
-				lines[i] = '';
-				killNextCloseCurlyBrace = false;
-				continue;
-			}
-
-			if (line.indexOf('    ') === 0) {
-				lines[i] = line.substr(4);
-			} else if (line.charAt(0) === '\t') {
-				lines[i] = line.substr(1);
-			}
-
-			continue;
-		}
-
-		if ('declare namespace monaco {' === line) {
-			lines[i] = '';
-			killNextCloseCurlyBrace = true;
-			continue;
-		}
-
-		if (line.indexOf('declare namespace monaco.') === 0) {
-			lines[i] = line.replace('declare namespace monaco.', 'export namespace ');
-		}
-
-		if (line.indexOf('declare let MonacoEnvironment') === 0) {
-			lines[i] = `declare global {\n    let MonacoEnvironment: Environment | undefined;\n}`;
-			// lines[i] = line.replace('declare namespace monaco.', 'export namespace ');
-		}
-	}
-	return lines.join('\n').replace(/\n\n\n+/g, '\n\n');
-}
-
-function filterStream(testFunc) {
-	return es.through(function (data) {
-		if (!testFunc(data.relative)) {
-			return;
-		}
-		this.emit('data', data);
-	});
-}
-
-const finalEditorResourcesTask = task.define('final-editor-resources', () => {
-	return es.merge(
-		// other assets
-		es.merge(
-			gulp.src('build/monaco/LICENSE'),
-			gulp.src('build/monaco/ThirdPartyNotices.txt'),
-			gulp.src('src/vs/monaco.d.ts')
-		).pipe(gulp.dest('out-monaco-editor-core')),
-
-		// place the .d.ts in the esm folder
-		gulp.src('src/vs/monaco.d.ts')
-			.pipe(es.through(function (data) {
-				this.emit('data', new File({
-					path: data.path.replace(/monaco\.d\.ts/, 'editor.api.d.ts'),
-					base: data.base,
-					contents: Buffer.from(toExternalDTS(data.contents.toString()))
-				}));
-			}))
-			.pipe(gulp.dest('out-monaco-editor-core/esm/vs/editor')),
-
-		// package.json
-		gulp.src('build/monaco/package.json')
-			.pipe(es.through(function (data) {
-				let json = JSON.parse(data.contents.toString());
-				json.private = false;
-				data.contents = Buffer.from(JSON.stringify(json, null, '  '));
-				this.emit('data', data);
-			}))
-			.pipe(gulp.dest('out-monaco-editor-core')),
-
-		// version.txt
-		gulp.src('build/monaco/version.txt')
-			.pipe(es.through(function (data) {
-				data.contents = Buffer.from(`monaco-editor-core: https://github.com/microsoft/vscode/tree/${sha1}`);
-				this.emit('data', data);
-			}))
-			.pipe(gulp.dest('out-monaco-editor-core')),
-
-		// README.md
-		gulp.src('build/monaco/README-npm.md')
-			.pipe(es.through(function (data) {
-				this.emit('data', new File({
-					path: data.path.replace(/README-npm\.md/, 'README.md'),
-					base: data.base,
-					contents: data.contents
-				}));
-			}))
-			.pipe(gulp.dest('out-monaco-editor-core')),
-
-		// dev folder
-		es.merge(
-			gulp.src('out-editor/**/*')
-		).pipe(gulp.dest('out-monaco-editor-core/dev')),
-
-		// min folder
-		es.merge(
-			gulp.src('out-editor-min/**/*')
-		).pipe(filterStream(function (path) {
-			// no map files
-			return !/(\.js\.map$)|(nls\.metadata\.json$)|(bundleInfo\.json$)/.test(path);
-		})).pipe(es.through(function (data) {
-			// tweak the sourceMappingURL
-			if (!/\.js$/.test(data.path)) {
-				this.emit('data', data);
-				return;
-			}
-
-			let relativePathToMap = path.relative(path.join(data.relative), path.join('min-maps', data.relative + '.map'));
-
-			let strContents = data.contents.toString();
-			let newStr = '//# sourceMappingURL=' + relativePathToMap.replace(/\\/g, '/');
-			strContents = strContents.replace(/\/\/# sourceMappingURL=[^ ]+$/, newStr);
-
-			data.contents = Buffer.from(strContents);
-			this.emit('data', data);
-		})).pipe(gulp.dest('out-monaco-editor-core/min')),
-
-		// min-maps folder
-		es.merge(
-			gulp.src('out-editor-min/**/*')
-		).pipe(filterStream(function (path) {
-			// no map files
-			return /\.js\.map$/.test(path);
-		})).pipe(gulp.dest('out-monaco-editor-core/min-maps'))
-	);
-});
-
-gulp.task('extract-editor-src',
-	task.series(
-		util.rimraf('out-editor-src'),
-		extractEditorSrcTask
-	)
-);
-
-gulp.task('editor-distro',
-	task.series(
-		task.parallel(
-			util.rimraf('out-editor-src'),
-			util.rimraf('out-editor-build'),
-			util.rimraf('out-editor-esm'),
-			util.rimraf('out-monaco-editor-core'),
-			util.rimraf('out-editor'),
-			util.rimraf('out-editor-min')
-		),
-		extractEditorSrcTask,
-		task.parallel(
-			task.series(
-				compileEditorAMDTask,
-				optimizeEditorAMDTask,
-				minifyEditorAMDTask
-			),
-			task.series(
-				createESMSourcesAndResourcesTask,
-				compileEditorESMTask
-			)
-		),
-		finalEditorResourcesTask
-	)
-);
-
-const bundleEditorESMTask = task.define('editor-esm-bundle-webpack', () => {
-	const webpack = require('webpack');
-	const webpackGulp = require('webpack-stream');
-
-	const result = es.through();
-
-	const webpackConfigPath = path.join(root, 'build/monaco/monaco.webpack.config.js');
-
-	const webpackConfig = {
-		...require(webpackConfigPath),
-		...{ mode: 'production' }
-	};
-
-	const webpackDone = (err, stats) => {
-		if (err) {
-			result.emit('error', err);
-			return;
-		}
-		const { compilation } = stats;
-		if (compilation.errors.length > 0) {
-			result.emit('error', compilation.errors.join('\n'));
-		}
-		if (compilation.warnings.length > 0) {
-			result.emit('data', compilation.warnings.join('\n'));
-		}
-	};
-
-	return webpackGulp(webpackConfig, webpack, webpackDone)
-		.pipe(gulp.dest('out-editor-esm-bundle'));
-});
-
-gulp.task('editor-esm-bundle',
-	task.series(
-		task.parallel(
-			util.rimraf('out-editor-src'),
-			util.rimraf('out-editor-esm'),
-			util.rimraf('out-monaco-editor-core'),
-			util.rimraf('out-editor-esm-bundle'),
-		),
-		extractEditorSrcTask,
-		createESMSourcesAndResourcesTask,
-		compileEditorESMTask,
-		bundleEditorESMTask,
-	)
-);
-
-gulp.task('monacodts', task.define('monacodts', () => {
-	const result = monacoapi.execute();
-	fs.writeFileSync(result.filePath, result.content);
-	fs.writeFileSync(path.join(root, 'src/vs/editor/common/standalone/standaloneEnums.ts'), result.enums);
-	return Promise.resolve(true);
-}));
-
-//#region monaco type checking
-
-function createTscCompileTask(watch) {
-	return () => {
-		const createReporter = require('./lib/reporter').createReporter;
-
-		return new Promise((resolve, reject) => {
-			const args = ['./node_modules/.bin/tsc', '-p', './src/tsconfig.monaco.json', '--noEmit'];
-			if (watch) {
-				args.push('-w');
-			}
-			const child = cp.spawn(`node`, args, {
-				cwd: path.join(__dirname, '..'),
-				// stdio: [null, 'pipe', 'inherit']
-			});
-			let errors = [];
-			let reporter = createReporter('monaco');
-			let report;
-			// eslint-disable-next-line no-control-regex
-			let magic = /[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g; // https://stackoverflow.com/questions/25245716/remove-all-ansi-colors-styles-from-strings
-
-			child.stdout.on('data', data => {
-				let str = String(data);
-				str = str.replace(magic, '').trim();
-				if (str.indexOf('Starting compilation') >= 0 || str.indexOf('File change detected') >= 0) {
-					errors.length = 0;
-					report = reporter.end(false);
-
-				} else if (str.indexOf('Compilation complete') >= 0) {
-					report.end();
-
-				} else if (str) {
-					let match = /(.*\(\d+,\d+\): )(.*: )(.*)/.exec(str);
-					if (match) {
-						// trying to massage the message so that it matches the gulp-tsb error messages
-						// e.g. src/vs/base/common/strings.ts(663,5): error TS2322: Type '1234' is not assignable to type 'string'.
-						let fullpath = path.join(root, match[1]);
-						let message = match[3];
-						reporter(fullpath + message);
-					} else {
-						reporter(str);
-					}
-				}
-			});
-			child.on('exit', resolve);
-			child.on('error', reject);
-		});
-	};
-}
-
-const monacoTypecheckWatchTask = task.define('monaco-typecheck-watch', createTscCompileTask(true));
-exports.monacoTypecheckWatchTask = monacoTypecheckWatchTask;
-
-const monacoTypecheckTask = task.define('monaco-typecheck', createTscCompileTask(false));
-exports.monacoTypecheckTask = monacoTypecheckTask;
-
-//#endregion
diff --git a/lib/vscode/build/gulpfile.extensions.js b/lib/vscode/build/gulpfile.extensions.js
deleted file mode 100644
index cbb7c486b13d..000000000000
--- a/lib/vscode/build/gulpfile.extensions.js
+++ /dev/null
@@ -1,244 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-// Increase max listeners for event emitters
-require('events').EventEmitter.defaultMaxListeners = 100;
-
-const gulp = require('gulp');
-const path = require('path');
-const nodeUtil = require('util');
-const es = require('event-stream');
-const filter = require('gulp-filter');
-const util = require('./lib/util');
-const task = require('./lib/task');
-const watcher = require('./lib/watch');
-const createReporter = require('./lib/reporter').createReporter;
-const glob = require('glob');
-const root = path.dirname(__dirname);
-const commit = util.getVersion(root);
-const plumber = require('gulp-plumber');
-const ext = require('./lib/extensions');
-
-const extensionsPath = path.join(path.dirname(__dirname), 'extensions');
-
-// To save 250ms for each gulp startup, we are caching the result here
-// const compilations = glob.sync('**/tsconfig.json', {
-// 	cwd: extensionsPath,
-// 	ignore: ['**/out/**', '**/node_modules/**']
-// });
-const compilations = [
-	'configuration-editing/build/tsconfig.json',
-	'configuration-editing/tsconfig.json',
-	'css-language-features/client/tsconfig.json',
-	'css-language-features/server/tsconfig.json',
-	'debug-auto-launch/tsconfig.json',
-	'debug-server-ready/tsconfig.json',
-	'emmet/tsconfig.json',
-	'extension-editing/tsconfig.json',
-	'git/tsconfig.json',
-	'github-authentication/tsconfig.json',
-	'github/tsconfig.json',
-	'grunt/tsconfig.json',
-	'gulp/tsconfig.json',
-	'html-language-features/client/tsconfig.json',
-	'html-language-features/server/tsconfig.json',
-	'image-preview/tsconfig.json',
-	'jake/tsconfig.json',
-	'json-language-features/client/tsconfig.json',
-	'json-language-features/server/tsconfig.json',
-	'markdown-language-features/preview-src/tsconfig.json',
-	'markdown-language-features/tsconfig.json',
-	'merge-conflict/tsconfig.json',
-	'microsoft-authentication/tsconfig.json',
-	'npm/tsconfig.json',
-	'php-language-features/tsconfig.json',
-	'search-result/tsconfig.json',
-	'simple-browser/tsconfig.json',
-	'testing-editor-contributions/tsconfig.json',
-	'typescript-language-features/test-workspace/tsconfig.json',
-	'typescript-language-features/tsconfig.json',
-	'vscode-api-tests/tsconfig.json',
-	'vscode-colorize-tests/tsconfig.json',
-	'vscode-custom-editor-tests/tsconfig.json',
-	'vscode-notebook-tests/tsconfig.json',
-	'vscode-test-resolver/tsconfig.json'
-];
-
-const getBaseUrl = out => `https://ticino.blob.core.windows.net/sourcemaps/${commit}/${out}`;
-
-const tasks = compilations.map(function (tsconfigFile) {
-	const absolutePath = path.join(extensionsPath, tsconfigFile);
-	const relativeDirname = path.dirname(tsconfigFile);
-
-	const overrideOptions = {};
-	overrideOptions.sourceMap = true;
-
-	const name = relativeDirname.replace(/\//g, '-');
-
-	const root = path.join('extensions', relativeDirname);
-	const srcBase = path.join(root, 'src');
-	const src = path.join(srcBase, '**');
-	const srcOpts = { cwd: path.dirname(__dirname), base: srcBase };
-
-	const out = path.join(root, 'out');
-	const baseUrl = getBaseUrl(out);
-
-	let headerId, headerOut;
-	let index = relativeDirname.indexOf('/');
-	if (index < 0) {
-		headerId = 'vscode.' + relativeDirname;
-		headerOut = 'out';
-	} else {
-		headerId = 'vscode.' + relativeDirname.substr(0, index);
-		headerOut = relativeDirname.substr(index + 1) + '/out';
-	}
-
-	function createPipeline(build, emitError) {
-		const nlsDev = require('vscode-nls-dev');
-		const tsb = require('gulp-tsb');
-		const sourcemaps = require('gulp-sourcemaps');
-
-		const reporter = createReporter('extensions');
-
-		overrideOptions.inlineSources = Boolean(build);
-		overrideOptions.base = path.dirname(absolutePath);
-
-		const compilation = tsb.create(absolutePath, overrideOptions, false, err => reporter(err.toString()));
-
-		const pipeline = function () {
-			const input = es.through();
-			const tsFilter = filter(['**/*.ts', '!**/lib/lib*.d.ts', '!**/node_modules/**'], { restore: true });
-			const output = input
-				.pipe(plumber({
-					errorHandler: function (err) {
-						if (err && !err.__reporter__) {
-							reporter(err);
-						}
-					}
-				}))
-				.pipe(tsFilter)
-				.pipe(util.loadSourcemaps())
-				.pipe(compilation())
-				.pipe(build ? nlsDev.rewriteLocalizeCalls() : es.through())
-				.pipe(build ? util.stripSourceMappingURL() : es.through())
-				.pipe(sourcemaps.write('.', {
-					sourceMappingURL: !build ? null : f => `${baseUrl}/${f.relative}.map`,
-					addComment: !!build,
-					includeContent: !!build,
-					sourceRoot: '../src'
-				}))
-				.pipe(tsFilter.restore)
-				.pipe(build ? nlsDev.bundleMetaDataFiles(headerId, headerOut) : es.through())
-				// Filter out *.nls.json file. We needed them only to bundle meta data file.
-				.pipe(filter(['**', '!**/*.nls.json']))
-				.pipe(reporter.end(emitError));
-
-			return es.duplex(input, output);
-		};
-
-		// add src-stream for project files
-		pipeline.tsProjectSrc = () => {
-			return compilation.src(srcOpts);
-		};
-		return pipeline;
-	}
-
-	const cleanTask = task.define(`clean-extension-${name}`, util.rimraf(out));
-
-	const compileTask = task.define(`compile-extension:${name}`, task.series(cleanTask, () => {
-		const pipeline = createPipeline(false, true);
-		const nonts = gulp.src(src, srcOpts).pipe(filter(['**', '!**/*.ts']));
-		const input = es.merge(nonts, pipeline.tsProjectSrc());
-
-		return input
-			.pipe(pipeline())
-			.pipe(gulp.dest(out));
-	}));
-
-	const watchTask = task.define(`watch-extension:${name}`, task.series(cleanTask, () => {
-		const pipeline = createPipeline(false);
-		const nonts = gulp.src(src, srcOpts).pipe(filter(['**', '!**/*.ts']));
-		const input = es.merge(nonts, pipeline.tsProjectSrc());
-		const watchInput = watcher(src, { ...srcOpts, ...{ readDelay: 200 } });
-
-		return watchInput
-			.pipe(util.incremental(pipeline, input))
-			.pipe(gulp.dest(out));
-	}));
-
-	const compileBuildTask = task.define(`compile-build-extension-${name}`, task.series(cleanTask, () => {
-		const pipeline = createPipeline(true, true);
-		const nonts = gulp.src(src, srcOpts).pipe(filter(['**', '!**/*.ts']));
-		const input = es.merge(nonts, pipeline.tsProjectSrc());
-
-		return input
-			.pipe(pipeline())
-			.pipe(gulp.dest(out));
-	}));
-
-	// Tasks
-	gulp.task(compileTask);
-	gulp.task(watchTask);
-
-	return { compileTask, watchTask, compileBuildTask };
-});
-
-const compileExtensionsTask = task.define('compile-extensions', task.parallel(...tasks.map(t => t.compileTask)));
-gulp.task(compileExtensionsTask);
-exports.compileExtensionsTask = compileExtensionsTask;
-
-const watchExtensionsTask = task.define('watch-extensions', task.parallel(...tasks.map(t => t.watchTask)));
-gulp.task(watchExtensionsTask);
-exports.watchExtensionsTask = watchExtensionsTask;
-
-const compileExtensionsBuildLegacyTask = task.define('compile-extensions-build-legacy', task.parallel(...tasks.map(t => t.compileBuildTask)));
-gulp.task(compileExtensionsBuildLegacyTask);
-
-//#region Extension media
-
-const compileExtensionMediaTask = task.define('compile-extension-media', () => ext.buildExtensionMedia(false));
-gulp.task(compileExtensionMediaTask);
-exports.compileExtensionMediaTask = compileExtensionMediaTask;
-
-const watchExtensionMedia = task.define('watch-extension-media', () => ext.buildExtensionMedia(true));
-gulp.task(watchExtensionMedia);
-exports.watchExtensionMedia = watchExtensionMedia;
-
-const compileExtensionMediaBuildTask = task.define('compile-extension-media-build', () => ext.buildExtensionMedia(false, '.build/extensions'));
-gulp.task(compileExtensionMediaBuildTask);
-
-//#endregion
-
-//#region Azure Pipelines
-
-const cleanExtensionsBuildTask = task.define('clean-extensions-build', util.rimraf('.build/extensions'));
-const compileExtensionsBuildTask = task.define('compile-extensions-build', task.series(
-	cleanExtensionsBuildTask,
-	task.define('bundle-extensions-build', () => ext.packageLocalExtensionsStream(false).pipe(gulp.dest('.build'))),
-	task.define('bundle-marketplace-extensions-build', () => ext.packageMarketplaceExtensionsStream(false).pipe(gulp.dest('.build'))),
-));
-
-gulp.task(compileExtensionsBuildTask);
-gulp.task(task.define('extensions-ci', task.series(compileExtensionsBuildTask, compileExtensionMediaBuildTask)));
-
-exports.compileExtensionsBuildTask = compileExtensionsBuildTask;
-
-//#endregion
-
-const compileWebExtensionsTask = task.define('compile-web', () => buildWebExtensions(false));
-gulp.task(compileWebExtensionsTask);
-exports.compileWebExtensionsTask = compileWebExtensionsTask;
-
-const watchWebExtensionsTask = task.define('watch-web', () => buildWebExtensions(true));
-gulp.task(watchWebExtensionsTask);
-exports.watchWebExtensionsTask = watchWebExtensionsTask;
-
-async function buildWebExtensions(isWatch) {
-	const webpackConfigLocations = await nodeUtil.promisify(glob)(
-		path.join(extensionsPath, '**', 'extension-browser.webpack.config.js'),
-		{ ignore: ['**/node_modules'] }
-	);
-	return ext.webpackExtensions('packaging web extension', isWatch, webpackConfigLocations.map(configPath => ({ configPath })));
-}
diff --git a/lib/vscode/build/gulpfile.hygiene.js b/lib/vscode/build/gulpfile.hygiene.js
deleted file mode 100644
index 838fc661eb56..000000000000
--- a/lib/vscode/build/gulpfile.hygiene.js
+++ /dev/null
@@ -1,48 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-const gulp = require('gulp');
-const es = require('event-stream');
-const path = require('path');
-const task = require('./lib/task');
-const { hygiene } = require('./hygiene');
-
-function checkPackageJSON(actualPath) {
-	const actual = require(path.join(__dirname, '..', actualPath));
-	const rootPackageJSON = require('../package.json');
-	const checkIncluded = (set1, set2) => {
-		for (let depName in set1) {
-			const depVersion = set1[depName];
-			const rootDepVersion = set2[depName];
-			if (!rootDepVersion) {
-				// missing in root is allowed
-				continue;
-			}
-			if (depVersion !== rootDepVersion) {
-				this.emit(
-					'error',
-					`The dependency ${depName} in '${actualPath}' (${depVersion}) is different than in the root package.json (${rootDepVersion})`
-				);
-			}
-		}
-	};
-
-	checkIncluded(actual.dependencies, rootPackageJSON.dependencies);
-	checkIncluded(actual.devDependencies, rootPackageJSON.devDependencies);
-}
-
-const checkPackageJSONTask = task.define('check-package-json', () => {
-	return gulp.src('package.json').pipe(
-		es.through(function () {
-			checkPackageJSON.call(this, 'remote/package.json');
-			checkPackageJSON.call(this, 'remote/web/package.json');
-			checkPackageJSON.call(this, 'build/package.json');
-		})
-	);
-});
-gulp.task(checkPackageJSONTask);
-
-const hygieneTask = task.define('hygiene', task.series(checkPackageJSONTask, () => hygiene(undefined, false)));
-gulp.task(hygieneTask);
diff --git a/lib/vscode/build/gulpfile.js b/lib/vscode/build/gulpfile.js
deleted file mode 100644
index 8b991e27a168..000000000000
--- a/lib/vscode/build/gulpfile.js
+++ /dev/null
@@ -1,41 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-'use strict';
-
-// Increase max listeners for event emitters
-require('events').EventEmitter.defaultMaxListeners = 100;
-
-const gulp = require('gulp');
-const util = require('./lib/util');
-const task = require('./lib/task');
-const compilation = require('./lib/compilation');
-const { monacoTypecheckTask/* , monacoTypecheckWatchTask */ } = require('./gulpfile.editor');
-const { compileExtensionsTask, watchExtensionsTask, compileExtensionMediaTask } = require('./gulpfile.extensions');
-
-// Fast compile for development time
-const compileClientTask = task.define('compile-client', task.series(util.rimraf('out'), compilation.compileTask('src', 'out', false)));
-gulp.task(compileClientTask);
-
-const watchClientTask = task.define('watch-client', task.series(util.rimraf('out'), compilation.watchTask('out', false)));
-gulp.task(watchClientTask);
-
-// All
-const compileTask = task.define('compile', task.parallel(monacoTypecheckTask, compileClientTask, compileExtensionsTask, compileExtensionMediaTask));
-gulp.task(compileTask);
-
-gulp.task(task.define('watch', task.parallel(/* monacoTypecheckWatchTask, */ watchClientTask, watchExtensionsTask)));
-
-// Default
-gulp.task('default', compileTask);
-
-process.on('unhandledRejection', (reason, p) => {
-	console.log('Unhandled Rejection at: Promise', p, 'reason:', reason);
-	process.exit(1);
-});
-
-// Load all the gulpfiles only if running tasks other than the editor tasks
-require('glob').sync('gulpfile.*.js', { cwd: __dirname })
-	.forEach(f => require(`./${f}`));
diff --git a/lib/vscode/build/gulpfile.reh.js b/lib/vscode/build/gulpfile.reh.js
deleted file mode 100644
index 0704ab70e9d1..000000000000
--- a/lib/vscode/build/gulpfile.reh.js
+++ /dev/null
@@ -1,141 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-'use strict';
-
-const gulp = require('gulp');
-
-const path = require('path');
-const es = require('event-stream');
-const util = require('./lib/util');
-const task = require('./lib/task');
-const vfs = require('vinyl-fs');
-const flatmap = require('gulp-flatmap');
-const gunzip = require('gulp-gunzip');
-const File = require('vinyl');
-const fs = require('fs');
-const rename = require('gulp-rename');
-const filter = require('gulp-filter');
-const cp = require('child_process');
-
-const REPO_ROOT = path.dirname(__dirname);
-
-const BUILD_TARGETS = [
-	{ platform: 'win32', arch: 'ia32', pkgTarget: 'node8-win-x86' },
-	{ platform: 'win32', arch: 'x64', pkgTarget: 'node8-win-x64' },
-	{ platform: 'darwin', arch: null, pkgTarget: 'node8-macos-x64' },
-	{ platform: 'linux', arch: 'ia32', pkgTarget: 'node8-linux-x86' },
-	{ platform: 'linux', arch: 'x64', pkgTarget: 'node8-linux-x64' },
-	{ platform: 'linux', arch: 'armhf', pkgTarget: 'node8-linux-armv7' },
-	{ platform: 'linux', arch: 'arm64', pkgTarget: 'node8-linux-arm64' },
-	{ platform: 'linux', arch: 'alpine', pkgTarget: 'node8-linux-alpine' },
-];
-
-const noop = () => { return Promise.resolve(); };
-
-BUILD_TARGETS.forEach(({ platform, arch }) => {
-	for (const target of ['reh', 'reh-web']) {
-		gulp.task(`vscode-${target}-${platform}${ arch ? `-${arch}` : '' }-min`, noop);
-	}
-});
-
-function getNodeVersion() {
-	// NOTE@coder: Fix version due to .yarnrc removal.
-	return process.versions.node;
-	const yarnrc = fs.readFileSync(path.join(REPO_ROOT, 'remote', '.yarnrc'), 'utf8');
-	const target = /^target "(.*)"$/m.exec(yarnrc)[1];
-	return target;
-}
-
-const nodeVersion = getNodeVersion();
-
-BUILD_TARGETS.forEach(({ platform, arch }) => {
-	if (platform === 'darwin') {
-		arch = 'x64';
-	}
-
-	gulp.task(task.define(`node-${platform}-${arch}`, () => {
-		const nodePath = path.join('.build', 'node', `v${nodeVersion}`, `${platform}-${arch}`);
-
-		if (!fs.existsSync(nodePath)) {
-			util.rimraf(nodePath);
-
-			return nodejs(platform, arch)
-				.pipe(vfs.dest(nodePath));
-		}
-
-		return Promise.resolve(null);
-	}));
-});
-
-const arch = process.platform === 'darwin' ? 'x64' : process.arch;
-const defaultNodeTask = gulp.task(`node-${process.platform}-${arch}`);
-
-if (defaultNodeTask) {
-	gulp.task(task.define('node', defaultNodeTask));
-}
-
-function nodejs(platform, arch) {
-	const remote = require('gulp-remote-retry-src');
-	const untar = require('gulp-untar');
-
-	if (arch === 'ia32') {
-		arch = 'x86';
-	}
-
-	if (platform === 'win32') {
-		return remote(`/dist/v${nodeVersion}/win-${arch}/node.exe`, { base: 'https://nodejs.org' })
-			.pipe(rename('node.exe'));
-	}
-
-	if (arch === 'alpine') {
-		const contents = cp.execSync(`docker run --rm node:${nodeVersion}-alpine /bin/sh -c 'cat \`which node\`'`, { maxBuffer: 100 * 1024 * 1024, encoding: 'buffer' });
-		return es.readArray([new File({ path: 'node', contents, stat: { mode: parseInt('755', 8) } })]);
-	}
-
-	if (platform === 'darwin') {
-		arch = 'x64';
-	}
-
-	if (arch === 'armhf') {
-		arch = 'armv7l';
-	}
-
-	return remote(`/dist/v${nodeVersion}/node-v${nodeVersion}-${platform}-${arch}.tar.gz`, { base: 'https://nodejs.org' })
-		.pipe(flatmap(stream => stream.pipe(gunzip()).pipe(untar())))
-		.pipe(filter('**/node'))
-		.pipe(util.setExecutableBit('**'))
-		.pipe(rename('node'));
-}
-
-function mixinServer(watch) {
-	const packageJSONPath = path.join(path.dirname(__dirname), 'package.json');
-	function exec(cmdLine) {
-		console.log(cmdLine);
-		cp.execSync(cmdLine, { stdio: 'inherit' });
-	}
-	function checkout() {
-		const packageJSON = JSON.parse(fs.readFileSync(packageJSONPath).toString());
-		exec('git fetch distro');
-		exec(`git checkout ${packageJSON['distro']} -- src/vs/server resources/server`);
-		exec('git reset HEAD src/vs/server resources/server');
-	}
-	checkout();
-	if (watch) {
-		console.log('Enter watch mode (observing package.json)');
-		const watcher = fs.watch(packageJSONPath);
-		watcher.addListener('change', () => {
-			try {
-				checkout();
-			} catch (e) {
-				console.log(e);
-			}
-		});
-	}
-	return Promise.resolve();
-}
-
-gulp.task(task.define('mixin-server', () => mixinServer(false)));
-gulp.task(task.define('mixin-server-watch', () => mixinServer(true)));
diff --git a/lib/vscode/build/gulpfile.vscode.js b/lib/vscode/build/gulpfile.vscode.js
deleted file mode 100644
index a6e043f122cb..000000000000
--- a/lib/vscode/build/gulpfile.vscode.js
+++ /dev/null
@@ -1,582 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-'use strict';
-
-const gulp = require('gulp');
-const fs = require('fs');
-const os = require('os');
-const cp = require('child_process');
-const path = require('path');
-const es = require('event-stream');
-const vfs = require('vinyl-fs');
-const rename = require('gulp-rename');
-const replace = require('gulp-replace');
-const filter = require('gulp-filter');
-const _ = require('underscore');
-const util = require('./lib/util');
-const task = require('./lib/task');
-const buildfile = require('../src/buildfile');
-const common = require('./lib/optimize');
-const root = path.dirname(__dirname);
-const commit = util.getVersion(root);
-const packageJson = require('../package.json');
-const product = require('../product.json');
-const crypto = require('crypto');
-const i18n = require('./lib/i18n');
-const { getProductionDependencies } = require('./lib/dependencies');
-const { config } = require('./lib/electron');
-const createAsar = require('./lib/asar').createAsar;
-const minimist = require('minimist');
-const { compileBuildTask } = require('./gulpfile.compile');
-const { compileExtensionsBuildTask } = require('./gulpfile.extensions');
-
-// Build
-const vscodeEntryPoints = _.flatten([
-	buildfile.entrypoint('vs/workbench/workbench.desktop.main'),
-	buildfile.base,
-	buildfile.workerExtensionHost,
-	buildfile.workerNotebook,
-	buildfile.workbenchDesktop,
-	buildfile.code
-]);
-
-const vscodeResources = [
-	'out-build/main.js',
-	'out-build/cli.js',
-	'out-build/driver.js',
-	'out-build/bootstrap.js',
-	'out-build/bootstrap-fork.js',
-	'out-build/bootstrap-amd.js',
-	'out-build/bootstrap-node.js',
-	'out-build/bootstrap-window.js',
-	'out-build/vs/**/*.{svg,png,html,jpg}',
-	'!out-build/vs/code/browser/**/*.html',
-	'!out-build/vs/editor/standalone/**/*.svg',
-	'out-build/vs/base/common/performance.js',
-	'out-build/vs/base/node/languagePacks.js',
-	'out-build/vs/base/node/{stdForkStart.js,terminateProcess.sh,cpuUsage.sh,ps.sh}',
-	'out-build/vs/base/browser/ui/codicons/codicon/**',
-	'out-build/vs/base/parts/sandbox/electron-browser/preload.js',
-	'out-build/vs/platform/environment/node/userDataPath.js',
-	'out-build/vs/workbench/browser/media/*-theme.css',
-	'out-build/vs/workbench/contrib/debug/**/*.json',
-	'out-build/vs/workbench/contrib/externalTerminal/**/*.scpt',
-	'out-build/vs/workbench/contrib/webview/browser/pre/*.js',
-	'out-build/vs/workbench/contrib/webview/electron-browser/pre/*.js',
-	'out-build/vs/workbench/services/extensions/worker/extensionHostWorkerMain.js',
-	'out-build/vs/**/markdown.css',
-	'out-build/vs/workbench/contrib/tasks/**/*.json',
-	'out-build/vs/platform/files/**/*.exe',
-	'out-build/vs/platform/files/**/*.md',
-	'out-build/vs/code/electron-browser/workbench/**',
-	'out-build/vs/code/electron-browser/sharedProcess/sharedProcess.js',
-	'out-build/vs/code/electron-sandbox/issue/issueReporter.js',
-	'out-build/vs/code/electron-sandbox/processExplorer/processExplorer.js',
-	'!**/test/**'
-];
-
-const optimizeVSCodeTask = task.define('optimize-vscode', task.series(
-	util.rimraf('out-vscode'),
-	common.optimizeTask({
-		src: 'out-build',
-		entryPoints: vscodeEntryPoints,
-		resources: vscodeResources,
-		loaderConfig: common.loaderConfig(),
-		out: 'out-vscode',
-		bundleInfo: undefined
-	})
-));
-gulp.task(optimizeVSCodeTask);
-
-const sourceMappingURLBase = `https://ticino.blob.core.windows.net/sourcemaps/${commit}`;
-const minifyVSCodeTask = task.define('minify-vscode', task.series(
-	optimizeVSCodeTask,
-	util.rimraf('out-vscode-min'),
-	common.minifyTask('out-vscode', `${sourceMappingURLBase}/core`)
-));
-gulp.task(minifyVSCodeTask);
-
-const core = task.define('core-ci', task.series(
-	gulp.task('compile-build'),
-	task.parallel(
-		gulp.task('minify-vscode'),
-		gulp.task('minify-vscode-reh'),
-		gulp.task('minify-vscode-reh-web'),
-	)
-));
-gulp.task(core);
-
-/**
- * Compute checksums for some files.
- *
- * @param {string} out The out folder to read the file from.
- * @param {string[]} filenames The paths to compute a checksum for.
- * @return {Object} A map of paths to checksums.
- */
-function computeChecksums(out, filenames) {
-	let result = {};
-	filenames.forEach(function (filename) {
-		let fullPath = path.join(process.cwd(), out, filename);
-		result[filename] = computeChecksum(fullPath);
-	});
-	return result;
-}
-
-/**
- * Compute checksum for a file.
- *
- * @param {string} filename The absolute path to a filename.
- * @return {string} The checksum for `filename`.
- */
-function computeChecksum(filename) {
-	let contents = fs.readFileSync(filename);
-
-	let hash = crypto
-		.createHash('md5')
-		.update(contents)
-		.digest('base64')
-		.replace(/=+$/, '');
-
-	return hash;
-}
-
-function packageTask(platform, arch, sourceFolderName, destinationFolderName, opts) {
-	opts = opts || {};
-
-	const destination = path.join(path.dirname(root), destinationFolderName);
-	platform = platform || process.platform;
-
-	return () => {
-		const electron = require('gulp-atom-electron');
-		const json = require('gulp-json-editor');
-
-		const out = sourceFolderName;
-
-		const checksums = computeChecksums(out, [
-			'vs/base/parts/sandbox/electron-browser/preload.js',
-			'vs/workbench/workbench.desktop.main.js',
-			'vs/workbench/workbench.desktop.main.css',
-			'vs/workbench/services/extensions/node/extensionHostProcess.js',
-			'vs/code/electron-browser/workbench/workbench.html',
-			'vs/code/electron-browser/workbench/workbench.js'
-		]);
-
-		const src = gulp.src(out + '/**', { base: '.' })
-			.pipe(rename(function (path) { path.dirname = path.dirname.replace(new RegExp('^' + out), 'out'); }))
-			.pipe(util.setExecutableBit(['**/*.sh']));
-
-		const platformSpecificBuiltInExtensionsExclusions = product.builtInExtensions.filter(ext => {
-			if (!ext.platforms) {
-				return false;
-			}
-
-			const set = new Set(ext.platforms);
-			return !set.has(platform);
-		}).map(ext => `!.build/extensions/${ext.name}/**`);
-
-		const extensions = gulp.src(['.build/extensions/**', ...platformSpecificBuiltInExtensionsExclusions], { base: '.build', dot: true });
-
-		const sources = es.merge(src, extensions)
-			.pipe(filter(['**', '!**/*.js.map'], { dot: true }));
-
-		let version = packageJson.version;
-		const quality = product.quality;
-
-		if (quality && quality !== 'stable') {
-			version += '-' + quality;
-		}
-
-		const name = product.nameShort;
-		const packageJsonUpdates = { name, version };
-
-		// for linux url handling
-		if (platform === 'linux') {
-			packageJsonUpdates.desktopName = `${product.applicationName}-url-handler.desktop`;
-		}
-
-		const packageJsonStream = gulp.src(['package.json'], { base: '.' })
-			.pipe(json(packageJsonUpdates));
-
-		const date = new Date().toISOString();
-		const productJsonUpdate = { commit, date, checksums };
-
-		if (shouldSetupSettingsSearch()) {
-			productJsonUpdate.settingsSearchBuildId = getSettingsSearchBuildId(packageJson);
-		}
-
-		const productJsonStream = gulp.src(['product.json'], { base: '.' })
-			.pipe(json(productJsonUpdate));
-
-		const license = gulp.src(['LICENSES.chromium.html', product.licenseFileName, 'ThirdPartyNotices.txt', 'licenses/**'], { base: '.', allowEmpty: true });
-
-		// TODO the API should be copied to `out` during compile, not here
-		const api = gulp.src('src/vs/vscode.d.ts').pipe(rename('out/vs/vscode.d.ts'));
-
-		const telemetry = gulp.src('.build/telemetry/**', { base: '.build/telemetry', dot: true });
-
-		const jsFilter = util.filter(data => !data.isDirectory() && /\.js$/.test(data.path));
-		const root = path.resolve(path.join(__dirname, '..'));
-		const productionDependencies = getProductionDependencies(root);
-		const dependenciesSrc = _.flatten(productionDependencies.map(d => path.relative(root, d.path)).map(d => [`${d}/**`, `!${d}/**/{test,tests}/**`]));
-
-		const deps = gulp.src(dependenciesSrc, { base: '.', dot: true })
-			.pipe(filter(['**', `!**/${config.version}/**`, '!**/bin/darwin-arm64-87/**', '!**/package-lock.json', '!**/yarn.lock', '!**/*.js.map']))
-			.pipe(util.cleanNodeModules(path.join(__dirname, '.moduleignore')))
-			.pipe(jsFilter)
-			.pipe(util.rewriteSourceMappingURL(sourceMappingURLBase))
-			.pipe(jsFilter.restore)
-			.pipe(createAsar(path.join(process.cwd(), 'node_modules'), [
-				'**/*.node',
-				'**/vscode-ripgrep/bin/*',
-				'**/node-pty/build/Release/*',
-				'**/node-pty/lib/worker/conoutSocketWorker.js',
-				'**/node-pty/lib/shared/conout.js',
-				'**/*.wasm'
-			], 'node_modules.asar'));
-
-		let all = es.merge(
-			packageJsonStream,
-			productJsonStream,
-			license,
-			api,
-			telemetry,
-			sources,
-			deps
-		);
-
-		if (platform === 'win32') {
-			all = es.merge(all, gulp.src([
-				'resources/win32/bower.ico',
-				'resources/win32/c.ico',
-				'resources/win32/config.ico',
-				'resources/win32/cpp.ico',
-				'resources/win32/csharp.ico',
-				'resources/win32/css.ico',
-				'resources/win32/default.ico',
-				'resources/win32/go.ico',
-				'resources/win32/html.ico',
-				'resources/win32/jade.ico',
-				'resources/win32/java.ico',
-				'resources/win32/javascript.ico',
-				'resources/win32/json.ico',
-				'resources/win32/less.ico',
-				'resources/win32/markdown.ico',
-				'resources/win32/php.ico',
-				'resources/win32/powershell.ico',
-				'resources/win32/python.ico',
-				'resources/win32/react.ico',
-				'resources/win32/ruby.ico',
-				'resources/win32/sass.ico',
-				'resources/win32/shell.ico',
-				'resources/win32/sql.ico',
-				'resources/win32/typescript.ico',
-				'resources/win32/vue.ico',
-				'resources/win32/xml.ico',
-				'resources/win32/yaml.ico',
-				'resources/win32/code_70x70.png',
-				'resources/win32/code_150x150.png'
-			], { base: '.' }));
-		} else if (platform === 'linux') {
-			all = es.merge(all, gulp.src('resources/linux/code.png', { base: '.' }));
-		} else if (platform === 'darwin') {
-			const shortcut = gulp.src('resources/darwin/bin/code.sh')
-				.pipe(rename('bin/code'));
-
-			all = es.merge(all, shortcut);
-		}
-
-		let result = all
-			.pipe(util.skipDirectories())
-			.pipe(util.fixWin32DirectoryPermissions())
-			.pipe(filter(['**', '!**/.github/**'], { dot: true })) // https://github.com/microsoft/vscode/issues/116523
-			.pipe(electron(_.extend({}, config, { platform, arch: arch === 'armhf' ? 'arm' : arch, ffmpegChromium: true })))
-			.pipe(filter(['**', '!LICENSE', '!LICENSES.chromium.html', '!version'], { dot: true }));
-
-		if (platform === 'linux') {
-			result = es.merge(result, gulp.src('resources/completions/bash/code', { base: '.' })
-				.pipe(replace('@@APPNAME@@', product.applicationName))
-				.pipe(rename(function (f) { f.basename = product.applicationName; })));
-
-			result = es.merge(result, gulp.src('resources/completions/zsh/_code', { base: '.' })
-				.pipe(replace('@@APPNAME@@', product.applicationName))
-				.pipe(rename(function (f) { f.basename = '_' + product.applicationName; })));
-		}
-
-		if (platform === 'win32') {
-			result = es.merge(result, gulp.src('resources/win32/bin/code.js', { base: 'resources/win32', allowEmpty: true }));
-
-			result = es.merge(result, gulp.src('resources/win32/bin/code.cmd', { base: 'resources/win32' })
-				.pipe(replace('@@NAME@@', product.nameShort))
-				.pipe(rename(function (f) { f.basename = product.applicationName; })));
-
-			result = es.merge(result, gulp.src('resources/win32/bin/code.sh', { base: 'resources/win32' })
-				.pipe(replace('@@NAME@@', product.nameShort))
-				.pipe(replace('@@PRODNAME@@', product.nameLong))
-				.pipe(replace('@@VERSION@@', version))
-				.pipe(replace('@@COMMIT@@', commit))
-				.pipe(replace('@@APPNAME@@', product.applicationName))
-				.pipe(replace('@@DATAFOLDER@@', product.dataFolderName))
-				.pipe(replace('@@QUALITY@@', quality))
-				.pipe(rename(function (f) { f.basename = product.applicationName; f.extname = ''; })));
-
-			result = es.merge(result, gulp.src('resources/win32/VisualElementsManifest.xml', { base: 'resources/win32' })
-				.pipe(rename(product.nameShort + '.VisualElementsManifest.xml')));
-		} else if (platform === 'linux') {
-			result = es.merge(result, gulp.src('resources/linux/bin/code.sh', { base: '.' })
-				.pipe(replace('@@PRODNAME@@', product.nameLong))
-				.pipe(replace('@@NAME@@', product.applicationName))
-				.pipe(rename('bin/' + product.applicationName)));
-		}
-
-		// submit all stats that have been collected
-		// during the build phase
-		if (opts.stats) {
-			result.on('end', () => {
-				const { submitAllStats } = require('./lib/stats');
-				submitAllStats(product, commit).then(() => console.log('Submitted bundle stats!'));
-			});
-		}
-
-		return result.pipe(vfs.dest(destination));
-	};
-}
-
-const buildRoot = path.dirname(root);
-
-const BUILD_TARGETS = [
-	{ platform: 'win32', arch: 'ia32' },
-	{ platform: 'win32', arch: 'x64' },
-	{ platform: 'win32', arch: 'arm64' },
-	{ platform: 'darwin', arch: 'x64', opts: { stats: true } },
-	{ platform: 'darwin', arch: 'arm64', opts: { stats: true } },
-	{ platform: 'linux', arch: 'ia32' },
-	{ platform: 'linux', arch: 'x64' },
-	{ platform: 'linux', arch: 'armhf' },
-	{ platform: 'linux', arch: 'arm64' },
-];
-BUILD_TARGETS.forEach(buildTarget => {
-	const dashed = (str) => (str ? `-${str}` : ``);
-	const platform = buildTarget.platform;
-	const arch = buildTarget.arch;
-	const opts = buildTarget.opts;
-
-	const [vscode, vscodeMin] = ['', 'min'].map(minified => {
-		const sourceFolderName = `out-vscode${dashed(minified)}`;
-		const destinationFolderName = `VSCode${dashed(platform)}${dashed(arch)}`;
-
-		const vscodeTaskCI = task.define(`vscode${dashed(platform)}${dashed(arch)}${dashed(minified)}-ci`, task.series(
-			util.rimraf(path.join(buildRoot, destinationFolderName)),
-			packageTask(platform, arch, sourceFolderName, destinationFolderName, opts)
-		));
-		gulp.task(vscodeTaskCI);
-
-		const vscodeTask = task.define(`vscode${dashed(platform)}${dashed(arch)}${dashed(minified)}`, task.series(
-			compileBuildTask,
-			compileExtensionsBuildTask,
-			minified ? minifyVSCodeTask : optimizeVSCodeTask,
-			vscodeTaskCI
-		));
-		gulp.task(vscodeTask);
-
-		return vscodeTask;
-	});
-
-	if (process.platform === platform && process.arch === arch) {
-		gulp.task(task.define('vscode', task.series(vscode)));
-		gulp.task(task.define('vscode-min', task.series(vscodeMin)));
-	}
-});
-
-const innoSetupConfig = {
-	'zh-cn': { codePage: 'CP936', defaultInfo: { name: 'Simplified Chinese', id: '$0804', } },
-	'zh-tw': { codePage: 'CP950', defaultInfo: { name: 'Traditional Chinese', id: '$0404' } },
-	'ko': { codePage: 'CP949', defaultInfo: { name: 'Korean', id: '$0412' } },
-	'ja': { codePage: 'CP932' },
-	'de': { codePage: 'CP1252' },
-	'fr': { codePage: 'CP1252' },
-	'es': { codePage: 'CP1252' },
-	'ru': { codePage: 'CP1251' },
-	'it': { codePage: 'CP1252' },
-	'pt-br': { codePage: 'CP1252' },
-	'hu': { codePage: 'CP1250' },
-	'tr': { codePage: 'CP1254' }
-};
-
-// Transifex Localizations
-
-const apiHostname = process.env.TRANSIFEX_API_URL;
-const apiName = process.env.TRANSIFEX_API_NAME;
-const apiToken = process.env.TRANSIFEX_API_TOKEN;
-
-gulp.task(task.define(
-	'vscode-translations-push',
-	task.series(
-		compileBuildTask,
-		compileExtensionsBuildTask,
-		optimizeVSCodeTask,
-		function () {
-			const pathToMetadata = './out-vscode/nls.metadata.json';
-			const pathToExtensions = '.build/extensions/*';
-			const pathToSetup = 'build/win32/**/{Default.isl,messages.en.isl}';
-
-			return es.merge(
-				gulp.src(pathToMetadata).pipe(i18n.createXlfFilesForCoreBundle()),
-				gulp.src(pathToSetup).pipe(i18n.createXlfFilesForIsl()),
-				gulp.src(pathToExtensions).pipe(i18n.createXlfFilesForExtensions())
-			).pipe(i18n.findObsoleteResources(apiHostname, apiName, apiToken)
-			).pipe(i18n.pushXlfFiles(apiHostname, apiName, apiToken));
-		}
-	)
-));
-
-gulp.task(task.define(
-	'vscode-translations-export',
-	task.series(
-		compileBuildTask,
-		compileExtensionsBuildTask,
-		optimizeVSCodeTask,
-		function () {
-			const pathToMetadata = './out-vscode/nls.metadata.json';
-			const pathToExtensions = '.build/extensions/*';
-			const pathToSetup = 'build/win32/i18n/messages.en.isl';
-
-			return es.merge(
-				gulp.src(pathToMetadata).pipe(i18n.createXlfFilesForCoreBundle()),
-				gulp.src(pathToSetup).pipe(i18n.createXlfFilesForIsl()),
-				gulp.src(pathToExtensions).pipe(i18n.createXlfFilesForExtensions())
-			).pipe(vfs.dest('../vscode-translations-export'));
-		}
-	)
-));
-
-gulp.task('vscode-translations-pull', function () {
-	return es.merge([...i18n.defaultLanguages, ...i18n.extraLanguages].map(language => {
-		let includeDefault = !!innoSetupConfig[language.id].defaultInfo;
-		return i18n.pullSetupXlfFiles(apiHostname, apiName, apiToken, language, includeDefault).pipe(vfs.dest(`../vscode-translations-import/${language.id}/setup`));
-	}));
-});
-
-gulp.task('vscode-translations-import', function () {
-	let options = minimist(process.argv.slice(2), {
-		string: 'location',
-		default: {
-			location: '../vscode-translations-import'
-		}
-	});
-	return es.merge([...i18n.defaultLanguages, ...i18n.extraLanguages].map(language => {
-		let id = language.id;
-		return gulp.src(`${options.location}/${id}/vscode-setup/messages.xlf`)
-			.pipe(i18n.prepareIslFiles(language, innoSetupConfig[language.id]))
-			.pipe(vfs.dest(`./build/win32/i18n`));
-	}));
-});
-
-// This task is only run for the MacOS build
-const generateVSCodeConfigurationTask = task.define('generate-vscode-configuration', () => {
-	return new Promise((resolve, reject) => {
-		const buildDir = process.env['AGENT_BUILDDIRECTORY'];
-		if (!buildDir) {
-			return reject(new Error('$AGENT_BUILDDIRECTORY not set'));
-		}
-
-		if (process.env.VSCODE_QUALITY !== 'insider' && process.env.VSCODE_QUALITY !== 'stable') {
-			return resolve();
-		}
-
-		const userDataDir = path.join(os.tmpdir(), 'tmpuserdata');
-		const extensionsDir = path.join(os.tmpdir(), 'tmpextdir');
-		const arch = process.env['VSCODE_ARCH'];
-		const appRoot = path.join(buildDir, `VSCode-darwin-${arch}`);
-		const appName = process.env.VSCODE_QUALITY === 'insider' ? 'Visual\\ Studio\\ Code\\ -\\ Insiders.app' : 'Visual\\ Studio\\ Code.app';
-		const appPath = path.join(appRoot, appName, 'Contents', 'Resources', 'app', 'bin', 'code');
-		const codeProc = cp.exec(
-			`${appPath} --export-default-configuration='${allConfigDetailsPath}' --wait --user-data-dir='${userDataDir}' --extensions-dir='${extensionsDir}'`,
-			(err, stdout, stderr) => {
-				clearTimeout(timer);
-				if (err) {
-					console.log(`err: ${err} ${err.message} ${err.toString()}`);
-					reject(err);
-				}
-
-				if (stdout) {
-					console.log(`stdout: ${stdout}`);
-				}
-
-				if (stderr) {
-					console.log(`stderr: ${stderr}`);
-				}
-
-				resolve();
-			}
-		);
-		const timer = setTimeout(() => {
-			codeProc.kill();
-			reject(new Error('export-default-configuration process timed out'));
-		}, 12 * 1000);
-
-		codeProc.on('error', err => {
-			clearTimeout(timer);
-			reject(err);
-		});
-	});
-});
-
-const allConfigDetailsPath = path.join(os.tmpdir(), 'configuration.json');
-gulp.task(task.define(
-	'upload-vscode-configuration',
-	task.series(
-		generateVSCodeConfigurationTask,
-		() => {
-			const azure = require('gulp-azure-storage');
-
-			if (!shouldSetupSettingsSearch()) {
-				const branch = process.env.BUILD_SOURCEBRANCH;
-				console.log(`Only runs on main and release branches, not ${branch}`);
-				return;
-			}
-
-			if (!fs.existsSync(allConfigDetailsPath)) {
-				throw new Error(`configuration file at ${allConfigDetailsPath} does not exist`);
-			}
-
-			const settingsSearchBuildId = getSettingsSearchBuildId(packageJson);
-			if (!settingsSearchBuildId) {
-				throw new Error('Failed to compute build number');
-			}
-
-			return gulp.src(allConfigDetailsPath)
-				.pipe(azure.upload({
-					account: process.env.AZURE_STORAGE_ACCOUNT,
-					key: process.env.AZURE_STORAGE_ACCESS_KEY,
-					container: 'configuration',
-					prefix: `${settingsSearchBuildId}/${commit}/`
-				}));
-		}
-	)
-));
-
-function shouldSetupSettingsSearch() {
-	const branch = process.env.BUILD_SOURCEBRANCH;
-	return branch && (/\/main$/.test(branch) || branch.indexOf('/release/') >= 0);
-}
-
-function getSettingsSearchBuildId(packageJson) {
-	try {
-		const branch = process.env.BUILD_SOURCEBRANCH;
-		const branchId = branch.indexOf('/release/') >= 0 ? 0 :
-			/\/main$/.test(branch) ? 1 :
-				2; // Some unexpected branch
-
-		const out = cp.execSync(`git rev-list HEAD --count`);
-		const count = parseInt(out.toString());
-
-		// <version number><commit count><branchId (avoid unlikely conflicts)>
-		// 1.25.1, 1,234,567 commits, main = 1250112345671
-		return util.versionStringToNumber(packageJson.version) * 1e8 + count * 10 + branchId;
-	} catch (e) {
-		throw new Error('Could not determine build number: ' + e.toString());
-	}
-}
diff --git a/lib/vscode/build/gulpfile.vscode.linux.js b/lib/vscode/build/gulpfile.vscode.linux.js
deleted file mode 100644
index 3423e86e8f3e..000000000000
--- a/lib/vscode/build/gulpfile.vscode.linux.js
+++ /dev/null
@@ -1,277 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-'use strict';
-
-const gulp = require('gulp');
-const replace = require('gulp-replace');
-const rename = require('gulp-rename');
-const shell = require('gulp-shell');
-const es = require('event-stream');
-const vfs = require('vinyl-fs');
-const util = require('./lib/util');
-const task = require('./lib/task');
-const packageJson = require('../package.json');
-const product = require('../product.json');
-const rpmDependencies = require('../resources/linux/rpm/dependencies.json');
-const path = require('path');
-const root = path.dirname(__dirname);
-const commit = util.getVersion(root);
-
-const linuxPackageRevision = Math.floor(new Date().getTime() / 1000);
-
-function getDebPackageArch(arch) {
-	return { x64: 'amd64', armhf: 'armhf', arm64: 'arm64' }[arch];
-}
-
-function prepareDebPackage(arch) {
-	const binaryDir = '../VSCode-linux-' + arch;
-	const debArch = getDebPackageArch(arch);
-	const destination = '.build/linux/deb/' + debArch + '/' + product.applicationName + '-' + debArch;
-
-	return function () {
-		const desktop = gulp.src('resources/linux/code.desktop', { base: '.' })
-			.pipe(rename('usr/share/applications/' + product.applicationName + '.desktop'));
-
-		const desktopUrlHandler = gulp.src('resources/linux/code-url-handler.desktop', { base: '.' })
-			.pipe(rename('usr/share/applications/' + product.applicationName + '-url-handler.desktop'));
-
-		const desktops = es.merge(desktop, desktopUrlHandler)
-			.pipe(replace('@@NAME_LONG@@', product.nameLong))
-			.pipe(replace('@@NAME_SHORT@@', product.nameShort))
-			.pipe(replace('@@NAME@@', product.applicationName))
-			.pipe(replace('@@EXEC@@', `/usr/share/${product.applicationName}/${product.applicationName}`))
-			.pipe(replace('@@ICON@@', product.linuxIconName))
-			.pipe(replace('@@URLPROTOCOL@@', product.urlProtocol));
-
-		const appdata = gulp.src('resources/linux/code.appdata.xml', { base: '.' })
-			.pipe(replace('@@NAME_LONG@@', product.nameLong))
-			.pipe(replace('@@NAME@@', product.applicationName))
-			.pipe(replace('@@LICENSE@@', product.licenseName))
-			.pipe(rename('usr/share/appdata/' + product.applicationName + '.appdata.xml'));
-
-		const workspaceMime = gulp.src('resources/linux/code-workspace.xml', { base: '.' })
-			.pipe(replace('@@NAME_LONG@@', product.nameLong))
-			.pipe(replace('@@NAME@@', product.applicationName))
-			.pipe(rename('usr/share/mime/packages/' + product.applicationName + '-workspace.xml'));
-
-		const icon = gulp.src('resources/linux/code.png', { base: '.' })
-			.pipe(rename('usr/share/pixmaps/' + product.linuxIconName + '.png'));
-
-		const bash_completion = gulp.src('resources/completions/bash/code')
-			.pipe(replace('@@APPNAME@@', product.applicationName))
-			.pipe(rename('usr/share/bash-completion/completions/' + product.applicationName));
-
-		const zsh_completion = gulp.src('resources/completions/zsh/_code')
-			.pipe(replace('@@APPNAME@@', product.applicationName))
-			.pipe(rename('usr/share/zsh/vendor-completions/_' + product.applicationName));
-
-		const code = gulp.src(binaryDir + '/**/*', { base: binaryDir })
-			.pipe(rename(function (p) { p.dirname = 'usr/share/' + product.applicationName + '/' + p.dirname; }));
-
-		let size = 0;
-		const control = code.pipe(es.through(
-			function (f) { size += f.isDirectory() ? 4096 : f.contents.length; },
-			function () {
-				const that = this;
-				gulp.src('resources/linux/debian/control.template', { base: '.' })
-					.pipe(replace('@@NAME@@', product.applicationName))
-					.pipe(replace('@@VERSION@@', packageJson.version + '-' + linuxPackageRevision))
-					.pipe(replace('@@ARCHITECTURE@@', debArch))
-					.pipe(replace('@@INSTALLEDSIZE@@', Math.ceil(size / 1024)))
-					.pipe(rename('DEBIAN/control'))
-					.pipe(es.through(function (f) { that.emit('data', f); }, function () { that.emit('end'); }));
-			}));
-
-		const prerm = gulp.src('resources/linux/debian/prerm.template', { base: '.' })
-			.pipe(replace('@@NAME@@', product.applicationName))
-			.pipe(rename('DEBIAN/prerm'));
-
-		const postrm = gulp.src('resources/linux/debian/postrm.template', { base: '.' })
-			.pipe(replace('@@NAME@@', product.applicationName))
-			.pipe(rename('DEBIAN/postrm'));
-
-		const postinst = gulp.src('resources/linux/debian/postinst.template', { base: '.' })
-			.pipe(replace('@@NAME@@', product.applicationName))
-			.pipe(rename('DEBIAN/postinst'));
-
-		const all = es.merge(control, postinst, postrm, prerm, desktops, appdata, workspaceMime, icon, bash_completion, zsh_completion, code);
-
-		return all.pipe(vfs.dest(destination));
-	};
-}
-
-function buildDebPackage(arch) {
-	const debArch = getDebPackageArch(arch);
-	return shell.task([
-		'chmod 755 ' + product.applicationName + '-' + debArch + '/DEBIAN/postinst ' + product.applicationName + '-' + debArch + '/DEBIAN/prerm ' + product.applicationName + '-' + debArch + '/DEBIAN/postrm',
-		'mkdir -p deb',
-		'fakeroot dpkg-deb -b ' + product.applicationName + '-' + debArch + ' deb'
-	], { cwd: '.build/linux/deb/' + debArch });
-}
-
-function getRpmBuildPath(rpmArch) {
-	return '.build/linux/rpm/' + rpmArch + '/rpmbuild';
-}
-
-function getRpmPackageArch(arch) {
-	return { x64: 'x86_64', armhf: 'armv7hl', arm64: 'aarch64' }[arch];
-}
-
-function prepareRpmPackage(arch) {
-	const binaryDir = '../VSCode-linux-' + arch;
-	const rpmArch = getRpmPackageArch(arch);
-
-	return function () {
-		const desktop = gulp.src('resources/linux/code.desktop', { base: '.' })
-			.pipe(rename('BUILD/usr/share/applications/' + product.applicationName + '.desktop'));
-
-		const desktopUrlHandler = gulp.src('resources/linux/code-url-handler.desktop', { base: '.' })
-			.pipe(rename('BUILD/usr/share/applications/' + product.applicationName + '-url-handler.desktop'));
-
-		const desktops = es.merge(desktop, desktopUrlHandler)
-			.pipe(replace('@@NAME_LONG@@', product.nameLong))
-			.pipe(replace('@@NAME_SHORT@@', product.nameShort))
-			.pipe(replace('@@NAME@@', product.applicationName))
-			.pipe(replace('@@EXEC@@', `/usr/share/${product.applicationName}/${product.applicationName}`))
-			.pipe(replace('@@ICON@@', product.linuxIconName))
-			.pipe(replace('@@URLPROTOCOL@@', product.urlProtocol));
-
-		const appdata = gulp.src('resources/linux/code.appdata.xml', { base: '.' })
-			.pipe(replace('@@NAME_LONG@@', product.nameLong))
-			.pipe(replace('@@NAME@@', product.applicationName))
-			.pipe(replace('@@LICENSE@@', product.licenseName))
-			.pipe(rename('usr/share/appdata/' + product.applicationName + '.appdata.xml'));
-
-		const workspaceMime = gulp.src('resources/linux/code-workspace.xml', { base: '.' })
-			.pipe(replace('@@NAME_LONG@@', product.nameLong))
-			.pipe(replace('@@NAME@@', product.applicationName))
-			.pipe(rename('BUILD/usr/share/mime/packages/' + product.applicationName + '-workspace.xml'));
-
-		const icon = gulp.src('resources/linux/code.png', { base: '.' })
-			.pipe(rename('BUILD/usr/share/pixmaps/' + product.linuxIconName + '.png'));
-
-		const bash_completion = gulp.src('resources/completions/bash/code')
-			.pipe(replace('@@APPNAME@@', product.applicationName))
-			.pipe(rename('BUILD/usr/share/bash-completion/completions/' + product.applicationName));
-
-		const zsh_completion = gulp.src('resources/completions/zsh/_code')
-			.pipe(replace('@@APPNAME@@', product.applicationName))
-			.pipe(rename('BUILD/usr/share/zsh/site-functions/_' + product.applicationName));
-
-		const code = gulp.src(binaryDir + '/**/*', { base: binaryDir })
-			.pipe(rename(function (p) { p.dirname = 'BUILD/usr/share/' + product.applicationName + '/' + p.dirname; }));
-
-		const spec = gulp.src('resources/linux/rpm/code.spec.template', { base: '.' })
-			.pipe(replace('@@NAME@@', product.applicationName))
-			.pipe(replace('@@NAME_LONG@@', product.nameLong))
-			.pipe(replace('@@ICON@@', product.linuxIconName))
-			.pipe(replace('@@VERSION@@', packageJson.version))
-			.pipe(replace('@@RELEASE@@', linuxPackageRevision))
-			.pipe(replace('@@ARCHITECTURE@@', rpmArch))
-			.pipe(replace('@@LICENSE@@', product.licenseName))
-			.pipe(replace('@@QUALITY@@', product.quality || '@@QUALITY@@'))
-			.pipe(replace('@@UPDATEURL@@', product.updateUrl || '@@UPDATEURL@@'))
-			.pipe(replace('@@DEPENDENCIES@@', rpmDependencies[rpmArch].join(', ')))
-			.pipe(rename('SPECS/' + product.applicationName + '.spec'));
-
-		const specIcon = gulp.src('resources/linux/rpm/code.xpm', { base: '.' })
-			.pipe(rename('SOURCES/' + product.applicationName + '.xpm'));
-
-		const all = es.merge(code, desktops, appdata, workspaceMime, icon, bash_completion, zsh_completion, spec, specIcon);
-
-		return all.pipe(vfs.dest(getRpmBuildPath(rpmArch)));
-	};
-}
-
-function buildRpmPackage(arch) {
-	const rpmArch = getRpmPackageArch(arch);
-	const rpmBuildPath = getRpmBuildPath(rpmArch);
-	const rpmOut = rpmBuildPath + '/RPMS/' + rpmArch;
-	const destination = '.build/linux/rpm/' + rpmArch;
-
-	return shell.task([
-		'mkdir -p ' + destination,
-		'HOME="$(pwd)/' + destination + '" fakeroot rpmbuild -bb ' + rpmBuildPath + '/SPECS/' + product.applicationName + '.spec --target=' + rpmArch,
-		'cp "' + rpmOut + '/$(ls ' + rpmOut + ')" ' + destination + '/'
-	]);
-}
-
-function getSnapBuildPath(arch) {
-	return `.build/linux/snap/${arch}/${product.applicationName}-${arch}`;
-}
-
-function prepareSnapPackage(arch) {
-	const binaryDir = '../VSCode-linux-' + arch;
-	const destination = getSnapBuildPath(arch);
-
-	return function () {
-		// A desktop file that is placed in snap/gui will be placed into meta/gui verbatim.
-		const desktop = gulp.src('resources/linux/code.desktop', { base: '.' })
-			.pipe(rename(`snap/gui/${product.applicationName}.desktop`));
-
-		// A desktop file that is placed in snap/gui will be placed into meta/gui verbatim.
-		const desktopUrlHandler = gulp.src('resources/linux/code-url-handler.desktop', { base: '.' })
-			.pipe(rename(`snap/gui/${product.applicationName}-url-handler.desktop`));
-
-		const desktops = es.merge(desktop, desktopUrlHandler)
-			.pipe(replace('@@NAME_LONG@@', product.nameLong))
-			.pipe(replace('@@NAME_SHORT@@', product.nameShort))
-			.pipe(replace('@@NAME@@', product.applicationName))
-			.pipe(replace('@@EXEC@@', `${product.applicationName} --force-user-env`))
-			.pipe(replace('@@ICON@@', `\${SNAP}/meta/gui/${product.linuxIconName}.png`))
-			.pipe(replace('@@URLPROTOCOL@@', product.urlProtocol));
-
-		// An icon that is placed in snap/gui will be placed into meta/gui verbatim.
-		const icon = gulp.src('resources/linux/code.png', { base: '.' })
-			.pipe(rename(`snap/gui/${product.linuxIconName}.png`));
-
-		const code = gulp.src(binaryDir + '/**/*', { base: binaryDir })
-			.pipe(rename(function (p) { p.dirname = `usr/share/${product.applicationName}/${p.dirname}`; }));
-
-		const snapcraft = gulp.src('resources/linux/snap/snapcraft.yaml', { base: '.' })
-			.pipe(replace('@@NAME@@', product.applicationName))
-			.pipe(replace('@@VERSION@@', commit.substr(0, 8)))
-			// Possible run-on values https://snapcraft.io/docs/architectures
-			.pipe(replace('@@ARCHITECTURE@@', arch === 'x64' ? 'amd64' : arch))
-			.pipe(rename('snap/snapcraft.yaml'));
-
-		const electronLaunch = gulp.src('resources/linux/snap/electron-launch', { base: '.' })
-			.pipe(rename('electron-launch'));
-
-		const all = es.merge(desktops, icon, code, snapcraft, electronLaunch);
-
-		return all.pipe(vfs.dest(destination));
-	};
-}
-
-function buildSnapPackage(arch) {
-	const snapBuildPath = getSnapBuildPath(arch);
-	// Default target for snapcraft runs: pull, build, stage and prime, and finally assembles the snap.
-	return shell.task(`cd ${snapBuildPath} && snapcraft`);
-}
-
-const BUILD_TARGETS = [
-	{ arch: 'x64' },
-	{ arch: 'armhf' },
-	{ arch: 'arm64' },
-];
-
-BUILD_TARGETS.forEach(({ arch }) => {
-	const debArch = getDebPackageArch(arch);
-	const prepareDebTask = task.define(`vscode-linux-${arch}-prepare-deb`, task.series(util.rimraf(`.build/linux/deb/${debArch}`), prepareDebPackage(arch)));
-	const buildDebTask = task.define(`vscode-linux-${arch}-build-deb`, task.series(prepareDebTask, buildDebPackage(arch)));
-	gulp.task(buildDebTask);
-
-	const rpmArch = getRpmPackageArch(arch);
-	const prepareRpmTask = task.define(`vscode-linux-${arch}-prepare-rpm`, task.series(util.rimraf(`.build/linux/rpm/${rpmArch}`), prepareRpmPackage(arch)));
-	const buildRpmTask = task.define(`vscode-linux-${arch}-build-rpm`, task.series(prepareRpmTask, buildRpmPackage(arch)));
-	gulp.task(buildRpmTask);
-
-	const prepareSnapTask = task.define(`vscode-linux-${arch}-prepare-snap`, task.series(util.rimraf(`.build/linux/snap/${arch}`), prepareSnapPackage(arch)));
-	gulp.task(prepareSnapTask);
-	const buildSnapTask = task.define(`vscode-linux-${arch}-build-snap`, task.series(prepareSnapTask, buildSnapPackage(arch)));
-	gulp.task(buildSnapTask);
-});
diff --git a/lib/vscode/build/gulpfile.vscode.web.js b/lib/vscode/build/gulpfile.vscode.web.js
deleted file mode 100644
index 4172ea38c4a2..000000000000
--- a/lib/vscode/build/gulpfile.vscode.web.js
+++ /dev/null
@@ -1,16 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-'use strict';
-
-const gulp = require('gulp');
-
-const noop = () => { return Promise.resolve(); };
-
-gulp.task('minify-vscode-web', noop);
-gulp.task('vscode-web', noop);
-gulp.task('vscode-web-min', noop);
-gulp.task('vscode-web-ci', noop);
-gulp.task('vscode-web-min-ci', noop);
diff --git a/lib/vscode/build/gulpfile.vscode.win32.js b/lib/vscode/build/gulpfile.vscode.win32.js
deleted file mode 100644
index 2027dc350cfc..000000000000
--- a/lib/vscode/build/gulpfile.vscode.win32.js
+++ /dev/null
@@ -1,163 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-'use strict';
-
-const gulp = require('gulp');
-const path = require('path');
-const fs = require('fs');
-const assert = require('assert');
-const cp = require('child_process');
-const _7z = require('7zip')['7z'];
-const util = require('./lib/util');
-const task = require('./lib/task');
-const pkg = require('../package.json');
-const product = require('../product.json');
-const vfs = require('vinyl-fs');
-const rcedit = require('rcedit');
-const mkdirp = require('mkdirp');
-
-const repoPath = path.dirname(__dirname);
-const buildPath = arch => path.join(path.dirname(repoPath), `VSCode-win32-${arch}`);
-const zipDir = arch => path.join(repoPath, '.build', `win32-${arch}`, 'archive');
-const zipPath = arch => path.join(zipDir(arch), `VSCode-win32-${arch}.zip`);
-const setupDir = (arch, target) => path.join(repoPath, '.build', `win32-${arch}`, `${target}-setup`);
-const issPath = path.join(__dirname, 'win32', 'code.iss');
-const innoSetupPath = path.join(path.dirname(path.dirname(require.resolve('innosetup'))), 'bin', 'ISCC.exe');
-const signPS1 = path.join(repoPath, 'build', 'azure-pipelines', 'win32', 'sign.ps1');
-
-function packageInnoSetup(iss, options, cb) {
-	options = options || {};
-
-	const definitions = options.definitions || {};
-
-	if (process.argv.some(arg => arg === '--debug-inno')) {
-		definitions['Debug'] = 'true';
-	}
-
-	if (process.argv.some(arg => arg === '--sign')) {
-		definitions['Sign'] = 'true';
-	}
-
-	const keys = Object.keys(definitions);
-
-	keys.forEach(key => assert(typeof definitions[key] === 'string', `Missing value for '${key}' in Inno Setup package step`));
-
-	const defs = keys.map(key => `/d${key}=${definitions[key]}`);
-	const args = [
-		iss,
-		...defs,
-		`/sesrp=powershell.exe -ExecutionPolicy bypass ${signPS1} $f`
-	];
-
-	cp.spawn(innoSetupPath, args, { stdio: ['ignore', 'inherit', 'inherit'] })
-		.on('error', cb)
-		.on('exit', code => {
-			if (code === 0) {
-				cb(null);
-			} else {
-				cb(new Error(`InnoSetup returned exit code: ${code}`));
-			}
-		});
-}
-
-function buildWin32Setup(arch, target) {
-	if (target !== 'system' && target !== 'user') {
-		throw new Error('Invalid setup target');
-	}
-
-	return cb => {
-		const ia32AppId = target === 'system' ? product.win32AppId : product.win32UserAppId;
-		const x64AppId = target === 'system' ? product.win32x64AppId : product.win32x64UserAppId;
-		const arm64AppId = target === 'system' ? product.win32arm64AppId : product.win32arm64UserAppId;
-
-		const sourcePath = buildPath(arch);
-		const outputPath = setupDir(arch, target);
-		mkdirp.sync(outputPath);
-
-		const originalProductJsonPath = path.join(sourcePath, 'resources/app/product.json');
-		const productJsonPath = path.join(outputPath, 'product.json');
-		const productJson = JSON.parse(fs.readFileSync(originalProductJsonPath, 'utf8'));
-		productJson['target'] = target;
-		fs.writeFileSync(productJsonPath, JSON.stringify(productJson, undefined, '\t'));
-
-		const definitions = {
-			NameLong: product.nameLong,
-			NameShort: product.nameShort,
-			DirName: product.win32DirName,
-			Version: pkg.version,
-			RawVersion: pkg.version.replace(/-\w+$/, ''),
-			NameVersion: product.win32NameVersion + (target === 'user' ? ' (User)' : ''),
-			ExeBasename: product.nameShort,
-			RegValueName: product.win32RegValueName,
-			ShellNameShort: product.win32ShellNameShort,
-			AppMutex: product.win32MutexName,
-			Arch: arch,
-			AppId: { 'ia32': ia32AppId, 'x64': x64AppId, 'arm64': arm64AppId }[arch],
-			IncompatibleTargetAppId: { 'ia32': product.win32AppId, 'x64': product.win32x64AppId, 'arm64': product.win32arm64AppId }[arch],
-			IncompatibleArchAppId: { 'ia32': x64AppId, 'x64': ia32AppId, 'arm64': ia32AppId }[arch],
-			AppUserId: product.win32AppUserModelId,
-			ArchitecturesAllowed: { 'ia32': '', 'x64': 'x64', 'arm64': 'arm64' }[arch],
-			ArchitecturesInstallIn64BitMode: { 'ia32': '', 'x64': 'x64', 'arm64': 'arm64' }[arch],
-			SourceDir: sourcePath,
-			RepoDir: repoPath,
-			OutputDir: outputPath,
-			InstallTarget: target,
-			ProductJsonPath: productJsonPath
-		};
-
-		packageInnoSetup(issPath, { definitions }, cb);
-	};
-}
-
-function defineWin32SetupTasks(arch, target) {
-	const cleanTask = util.rimraf(setupDir(arch, target));
-	gulp.task(task.define(`vscode-win32-${arch}-${target}-setup`, task.series(cleanTask, buildWin32Setup(arch, target))));
-}
-
-defineWin32SetupTasks('ia32', 'system');
-defineWin32SetupTasks('x64', 'system');
-defineWin32SetupTasks('arm64', 'system');
-defineWin32SetupTasks('ia32', 'user');
-defineWin32SetupTasks('x64', 'user');
-defineWin32SetupTasks('arm64', 'user');
-
-function archiveWin32Setup(arch) {
-	return cb => {
-		const args = ['a', '-tzip', zipPath(arch), '-x!CodeSignSummary*.md', '.', '-r'];
-
-		cp.spawn(_7z, args, { stdio: 'inherit', cwd: buildPath(arch) })
-			.on('error', cb)
-			.on('exit', () => cb(null));
-	};
-}
-
-gulp.task(task.define('vscode-win32-ia32-archive', task.series(util.rimraf(zipDir('ia32')), archiveWin32Setup('ia32'))));
-gulp.task(task.define('vscode-win32-x64-archive', task.series(util.rimraf(zipDir('x64')), archiveWin32Setup('x64'))));
-gulp.task(task.define('vscode-win32-arm64-archive', task.series(util.rimraf(zipDir('arm64')), archiveWin32Setup('arm64'))));
-
-function copyInnoUpdater(arch) {
-	return () => {
-		return gulp.src('build/win32/{inno_updater.exe,vcruntime140.dll}', { base: 'build/win32' })
-			.pipe(vfs.dest(path.join(buildPath(arch), 'tools')));
-	};
-}
-
-function updateIcon(executablePath) {
-	return cb => {
-		const icon = path.join(repoPath, 'resources', 'win32', 'code.ico');
-		rcedit(executablePath, { icon }, cb);
-	};
-}
-
-gulp.task(task.define('vscode-win32-ia32-inno-updater', task.series(copyInnoUpdater('ia32'), updateIcon(path.join(buildPath('ia32'), 'tools', 'inno_updater.exe')))));
-gulp.task(task.define('vscode-win32-x64-inno-updater', task.series(copyInnoUpdater('x64'), updateIcon(path.join(buildPath('x64'), 'tools', 'inno_updater.exe')))));
-gulp.task(task.define('vscode-win32-arm64-inno-updater', task.series(copyInnoUpdater('arm64'), updateIcon(path.join(buildPath('arm64'), 'tools', 'inno_updater.exe')))));
-
-// CodeHelper.exe icon
-
-gulp.task(task.define('vscode-win32-ia32-code-helper', task.series(updateIcon(path.join(buildPath('ia32'), 'resources', 'app', 'out', 'vs', 'platform', 'files', 'node', 'watcher', 'win32', 'CodeHelper.exe')))));
-gulp.task(task.define('vscode-win32-x64-code-helper', task.series(updateIcon(path.join(buildPath('x64'), 'resources', 'app', 'out', 'vs', 'platform', 'files', 'node', 'watcher', 'win32', 'CodeHelper.exe')))));
-gulp.task(task.define('vscode-win32-arm64-code-helper', task.series(updateIcon(path.join(buildPath('arm64'), 'resources', 'app', 'out', 'vs', 'platform', 'files', 'node', 'watcher', 'win32', 'CodeHelper.exe')))));
diff --git a/lib/vscode/build/hygiene.js b/lib/vscode/build/hygiene.js
deleted file mode 100644
index 9d6756dbc86d..000000000000
--- a/lib/vscode/build/hygiene.js
+++ /dev/null
@@ -1,278 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-const filter = require('gulp-filter');
-const es = require('event-stream');
-const VinylFile = require('vinyl');
-const vfs = require('vinyl-fs');
-const path = require('path');
-const fs = require('fs');
-const pall = require('p-all');
-const { all, copyrightFilter, indentationFilter, jsHygieneFilter, tsHygieneFilter } = require('./filters');
-
-const copyrightHeaderLines = [
-	'/*---------------------------------------------------------------------------------------------',
-	' *  Copyright (c) Microsoft Corporation. All rights reserved.',
-	' *  Licensed under the MIT License. See License.txt in the project root for license information.',
-	' *--------------------------------------------------------------------------------------------*/',
-];
-
-function hygiene(some, linting = true) {
-	const gulpeslint = require('gulp-eslint');
-	const tsfmt = require('typescript-formatter');
-
-	let errorCount = 0;
-
-	const productJson = es.through(function (file) {
-		const product = JSON.parse(file.contents.toString('utf8'));
-
-		if (product.extensionsGallery) {
-			console.error(`product.json: Contains 'extensionsGallery'`);
-			errorCount++;
-		}
-
-		this.emit('data', file);
-	});
-
-	const indentation = es.through(function (file) {
-		const lines = file.contents.toString('utf8').split(/\r\n|\r|\n/);
-		file.__lines = lines;
-
-		lines.forEach((line, i) => {
-			if (/^\s*$/.test(line)) {
-				// empty or whitespace lines are OK
-			} else if (/^[\t]*[^\s]/.test(line)) {
-				// good indent
-			} else if (/^[\t]* \*/.test(line)) {
-				// block comment using an extra space
-			} else {
-				console.error(
-					file.relative + '(' + (i + 1) + ',1): Bad whitespace indentation'
-				);
-				errorCount++;
-			}
-		});
-
-		this.emit('data', file);
-	});
-
-	const copyrights = es.through(function (file) {
-		const lines = file.__lines;
-
-		for (let i = 0; i < copyrightHeaderLines.length; i++) {
-			if (lines[i] !== copyrightHeaderLines[i]) {
-				console.error(file.relative + ': Missing or bad copyright statement');
-				errorCount++;
-				break;
-			}
-		}
-
-		this.emit('data', file);
-	});
-
-	const formatting = es.map(function (file, cb) {
-		tsfmt
-			.processString(file.path, file.contents.toString('utf8'), {
-				verify: false,
-				tsfmt: true,
-				// verbose: true,
-				// keep checkJS happy
-				editorconfig: undefined,
-				replace: undefined,
-				tsconfig: undefined,
-				tsconfigFile: undefined,
-				tsfmtFile: undefined,
-				vscode: undefined,
-				vscodeFile: undefined,
-			})
-			.then(
-				(result) => {
-					let original = result.src.replace(/\r\n/gm, '\n');
-					let formatted = result.dest.replace(/\r\n/gm, '\n');
-
-					if (original !== formatted) {
-						console.error(
-							`File not formatted. Run the 'Format Document' command to fix it:`,
-							file.relative
-						);
-						errorCount++;
-					}
-					cb(null, file);
-				},
-				(err) => {
-					cb(err);
-				}
-			);
-	});
-
-	let input;
-
-	if (Array.isArray(some) || typeof some === 'string' || !some) {
-		const options = { base: '.', follow: true, allowEmpty: true };
-		if (some) {
-			input = vfs.src(some, options).pipe(filter(all)); // split this up to not unnecessarily filter all a second time
-		} else {
-			input = vfs.src(all, options);
-		}
-	} else {
-		input = some;
-	}
-
-	const productJsonFilter = filter('product.json', { restore: true });
-
-	const result = input
-		.pipe(filter((f) => !f.stat.isDirectory()))
-		.pipe(productJsonFilter)
-		.pipe(process.env['BUILD_SOURCEVERSION'] ? es.through() : productJson)
-		.pipe(productJsonFilter.restore)
-		.pipe(filter(indentationFilter))
-		.pipe(indentation)
-		.pipe(filter(copyrightFilter))
-		.pipe(copyrights);
-
-	const streams = [
-		result.pipe(filter(tsHygieneFilter)).pipe(formatting)
-	];
-
-	if (linting) {
-		streams.push(
-			result
-				.pipe(filter([...jsHygieneFilter, ...tsHygieneFilter]))
-				.pipe(
-					gulpeslint({
-						configFile: '.eslintrc.json',
-						rulePaths: ['./build/lib/eslint'],
-					})
-				)
-				.pipe(gulpeslint.formatEach('compact'))
-				.pipe(
-					gulpeslint.results((results) => {
-						errorCount += results.warningCount;
-						errorCount += results.errorCount;
-					})
-				)
-		);
-	}
-
-	let count = 0;
-	return es.merge(...streams).pipe(
-		es.through(
-			function (data) {
-				count++;
-				if (process.env['TRAVIS'] && count % 10 === 0) {
-					process.stdout.write('.');
-				}
-				this.emit('data', data);
-			},
-			function () {
-				process.stdout.write('\n');
-				if (errorCount > 0) {
-					this.emit(
-						'error',
-						'Hygiene failed with ' +
-						errorCount +
-						` errors. Check 'build / gulpfile.hygiene.js'.`
-					);
-				} else {
-					this.emit('end');
-				}
-			}
-		)
-	);
-}
-
-module.exports.hygiene = hygiene;
-
-function createGitIndexVinyls(paths) {
-	const cp = require('child_process');
-	const repositoryPath = process.cwd();
-
-	const fns = paths.map((relativePath) => () =>
-		new Promise((c, e) => {
-			const fullPath = path.join(repositoryPath, relativePath);
-
-			fs.stat(fullPath, (err, stat) => {
-				if (err && err.code === 'ENOENT') {
-					// ignore deletions
-					return c(null);
-				} else if (err) {
-					return e(err);
-				}
-
-				cp.exec(
-					process.platform === 'win32' ? `git show :${relativePath}` : `git show ':${relativePath}'`,
-					{ maxBuffer: 2000 * 1024, encoding: 'buffer' },
-					(err, out) => {
-						if (err) {
-							return e(err);
-						}
-
-						c(
-							new VinylFile({
-								path: fullPath,
-								base: repositoryPath,
-								contents: out,
-								stat,
-							})
-						);
-					}
-				);
-			});
-		})
-	);
-
-	return pall(fns, { concurrency: 4 }).then((r) => r.filter((p) => !!p));
-}
-
-// this allows us to run hygiene as a git pre-commit hook
-if (require.main === module) {
-	const cp = require('child_process');
-
-	process.on('unhandledRejection', (reason, p) => {
-		console.log('Unhandled Rejection at: Promise', p, 'reason:', reason);
-		process.exit(1);
-	});
-
-	if (process.argv.length > 2) {
-		hygiene(process.argv.slice(2)).on('error', (err) => {
-			console.error();
-			console.error(err);
-			process.exit(1);
-		});
-	} else {
-		cp.exec(
-			'git diff --cached --name-only',
-			{ maxBuffer: 2000 * 1024 },
-			(err, out) => {
-				if (err) {
-					console.error();
-					console.error(err);
-					process.exit(1);
-				}
-
-				const some = out.split(/\r?\n/).filter((l) => !!l);
-
-				if (some.length > 0) {
-					console.log('Reading git index versions...');
-
-					createGitIndexVinyls(some)
-						.then(
-							(vinyls) =>
-								new Promise((c, e) =>
-									hygiene(es.readArray(vinyls))
-										.on('end', () => c())
-										.on('error', e)
-								)
-						)
-						.catch((err) => {
-							console.error();
-							console.error(err);
-							process.exit(1);
-						});
-				}
-			}
-		);
-	}
-}
diff --git a/lib/vscode/build/jsconfig.json b/lib/vscode/build/jsconfig.json
deleted file mode 100644
index 299294ef0558..000000000000
--- a/lib/vscode/build/jsconfig.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
-	"compilerOptions": {
-		"module": "commonjs",
-		"target": "es2017",
-		"jsx": "preserve",
-		"checkJs": true
-	},
-	"include": [
-		"**/*.js"
-	],
-	"exclude": [
-		"node_modules",
-		"**/node_modules/*"
-	]
-}
\ No newline at end of file
diff --git a/lib/vscode/build/lib/asar.js b/lib/vscode/build/lib/asar.js
deleted file mode 100644
index 708005791f63..000000000000
--- a/lib/vscode/build/lib/asar.js
+++ /dev/null
@@ -1,118 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-'use strict';
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.createAsar = void 0;
-const path = require("path");
-const es = require("event-stream");
-const pickle = require('chromium-pickle-js');
-const Filesystem = require('asar/lib/filesystem');
-const VinylFile = require("vinyl");
-const minimatch = require("minimatch");
-function createAsar(folderPath, unpackGlobs, destFilename) {
-    const shouldUnpackFile = (file) => {
-        for (let i = 0; i < unpackGlobs.length; i++) {
-            if (minimatch(file.relative, unpackGlobs[i])) {
-                return true;
-            }
-        }
-        return false;
-    };
-    const filesystem = new Filesystem(folderPath);
-    const out = [];
-    // Keep track of pending inserts
-    let pendingInserts = 0;
-    let onFileInserted = () => { pendingInserts--; };
-    // Do not insert twice the same directory
-    const seenDir = {};
-    const insertDirectoryRecursive = (dir) => {
-        if (seenDir[dir]) {
-            return;
-        }
-        let lastSlash = dir.lastIndexOf('/');
-        if (lastSlash === -1) {
-            lastSlash = dir.lastIndexOf('\\');
-        }
-        if (lastSlash !== -1) {
-            insertDirectoryRecursive(dir.substring(0, lastSlash));
-        }
-        seenDir[dir] = true;
-        filesystem.insertDirectory(dir);
-    };
-    const insertDirectoryForFile = (file) => {
-        let lastSlash = file.lastIndexOf('/');
-        if (lastSlash === -1) {
-            lastSlash = file.lastIndexOf('\\');
-        }
-        if (lastSlash !== -1) {
-            insertDirectoryRecursive(file.substring(0, lastSlash));
-        }
-    };
-    const insertFile = (relativePath, stat, shouldUnpack) => {
-        insertDirectoryForFile(relativePath);
-        pendingInserts++;
-        // Do not pass `onFileInserted` directly because it gets overwritten below.
-        // Create a closure capturing `onFileInserted`.
-        filesystem.insertFile(relativePath, shouldUnpack, { stat: stat }, {}).then(() => onFileInserted(), () => onFileInserted());
-    };
-    return es.through(function (file) {
-        if (file.stat.isDirectory()) {
-            return;
-        }
-        if (!file.stat.isFile()) {
-            throw new Error(`unknown item in stream!`);
-        }
-        const shouldUnpack = shouldUnpackFile(file);
-        insertFile(file.relative, { size: file.contents.length, mode: file.stat.mode }, shouldUnpack);
-        if (shouldUnpack) {
-            // The file goes outside of xx.asar, in a folder xx.asar.unpacked
-            const relative = path.relative(folderPath, file.path);
-            this.queue(new VinylFile({
-                base: '.',
-                path: path.join(destFilename + '.unpacked', relative),
-                stat: file.stat,
-                contents: file.contents
-            }));
-        }
-        else {
-            // The file goes inside of xx.asar
-            out.push(file.contents);
-        }
-    }, function () {
-        let finish = () => {
-            {
-                const headerPickle = pickle.createEmpty();
-                headerPickle.writeString(JSON.stringify(filesystem.header));
-                const headerBuf = headerPickle.toBuffer();
-                const sizePickle = pickle.createEmpty();
-                sizePickle.writeUInt32(headerBuf.length);
-                const sizeBuf = sizePickle.toBuffer();
-                out.unshift(headerBuf);
-                out.unshift(sizeBuf);
-            }
-            const contents = Buffer.concat(out);
-            out.length = 0;
-            this.queue(new VinylFile({
-                base: '.',
-                path: destFilename,
-                contents: contents
-            }));
-            this.queue(null);
-        };
-        // Call finish() only when all file inserts have finished...
-        if (pendingInserts === 0) {
-            finish();
-        }
-        else {
-            onFileInserted = () => {
-                pendingInserts--;
-                if (pendingInserts === 0) {
-                    finish();
-                }
-            };
-        }
-    });
-}
-exports.createAsar = createAsar;
diff --git a/lib/vscode/build/lib/asar.ts b/lib/vscode/build/lib/asar.ts
deleted file mode 100644
index 07b321fd41d4..000000000000
--- a/lib/vscode/build/lib/asar.ts
+++ /dev/null
@@ -1,138 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-'use strict';
-
-import * as path from 'path';
-import * as es from 'event-stream';
-const pickle = require('chromium-pickle-js');
-const Filesystem = <typeof AsarFilesystem>require('asar/lib/filesystem');
-import * as VinylFile from 'vinyl';
-import * as minimatch from 'minimatch';
-
-declare class AsarFilesystem {
-	readonly header: unknown;
-	constructor(src: string);
-	insertDirectory(path: string, shouldUnpack?: boolean): unknown;
-	insertFile(path: string, shouldUnpack: boolean, file: { stat: { size: number; mode: number; }; }, options: {}): Promise<void>;
-}
-
-export function createAsar(folderPath: string, unpackGlobs: string[], destFilename: string): NodeJS.ReadWriteStream {
-
-	const shouldUnpackFile = (file: VinylFile): boolean => {
-		for (let i = 0; i < unpackGlobs.length; i++) {
-			if (minimatch(file.relative, unpackGlobs[i])) {
-				return true;
-			}
-		}
-		return false;
-	};
-
-	const filesystem = new Filesystem(folderPath);
-	const out: Buffer[] = [];
-
-	// Keep track of pending inserts
-	let pendingInserts = 0;
-	let onFileInserted = () => { pendingInserts--; };
-
-	// Do not insert twice the same directory
-	const seenDir: { [key: string]: boolean; } = {};
-	const insertDirectoryRecursive = (dir: string) => {
-		if (seenDir[dir]) {
-			return;
-		}
-
-		let lastSlash = dir.lastIndexOf('/');
-		if (lastSlash === -1) {
-			lastSlash = dir.lastIndexOf('\\');
-		}
-		if (lastSlash !== -1) {
-			insertDirectoryRecursive(dir.substring(0, lastSlash));
-		}
-		seenDir[dir] = true;
-		filesystem.insertDirectory(dir);
-	};
-
-	const insertDirectoryForFile = (file: string) => {
-		let lastSlash = file.lastIndexOf('/');
-		if (lastSlash === -1) {
-			lastSlash = file.lastIndexOf('\\');
-		}
-		if (lastSlash !== -1) {
-			insertDirectoryRecursive(file.substring(0, lastSlash));
-		}
-	};
-
-	const insertFile = (relativePath: string, stat: { size: number; mode: number; }, shouldUnpack: boolean) => {
-		insertDirectoryForFile(relativePath);
-		pendingInserts++;
-		// Do not pass `onFileInserted` directly because it gets overwritten below.
-		// Create a closure capturing `onFileInserted`.
-		filesystem.insertFile(relativePath, shouldUnpack, { stat: stat }, {}).then(() => onFileInserted(), () => onFileInserted());
-	};
-
-	return es.through(function (file) {
-		if (file.stat.isDirectory()) {
-			return;
-		}
-		if (!file.stat.isFile()) {
-			throw new Error(`unknown item in stream!`);
-		}
-		const shouldUnpack = shouldUnpackFile(file);
-		insertFile(file.relative, { size: file.contents.length, mode: file.stat.mode }, shouldUnpack);
-
-		if (shouldUnpack) {
-			// The file goes outside of xx.asar, in a folder xx.asar.unpacked
-			const relative = path.relative(folderPath, file.path);
-			this.queue(new VinylFile({
-				base: '.',
-				path: path.join(destFilename + '.unpacked', relative),
-				stat: file.stat,
-				contents: file.contents
-			}));
-		} else {
-			// The file goes inside of xx.asar
-			out.push(file.contents);
-		}
-	}, function () {
-
-		let finish = () => {
-			{
-				const headerPickle = pickle.createEmpty();
-				headerPickle.writeString(JSON.stringify(filesystem.header));
-				const headerBuf = headerPickle.toBuffer();
-
-				const sizePickle = pickle.createEmpty();
-				sizePickle.writeUInt32(headerBuf.length);
-				const sizeBuf = sizePickle.toBuffer();
-
-				out.unshift(headerBuf);
-				out.unshift(sizeBuf);
-			}
-
-			const contents = Buffer.concat(out);
-			out.length = 0;
-
-			this.queue(new VinylFile({
-				base: '.',
-				path: destFilename,
-				contents: contents
-			}));
-			this.queue(null);
-		};
-
-		// Call finish() only when all file inserts have finished...
-		if (pendingInserts === 0) {
-			finish();
-		} else {
-			onFileInserted = () => {
-				pendingInserts--;
-				if (pendingInserts === 0) {
-					finish();
-				}
-			};
-		}
-	});
-}
diff --git a/lib/vscode/build/lib/builtInExtensions.js b/lib/vscode/build/lib/builtInExtensions.js
deleted file mode 100644
index d851a6ee5f9a..000000000000
--- a/lib/vscode/build/lib/builtInExtensions.js
+++ /dev/null
@@ -1,120 +0,0 @@
-"use strict";
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.getBuiltInExtensions = void 0;
-const fs = require("fs");
-const path = require("path");
-const os = require("os");
-const rimraf = require("rimraf");
-const es = require("event-stream");
-const rename = require("gulp-rename");
-const vfs = require("vinyl-fs");
-const ext = require("./extensions");
-const fancyLog = require("fancy-log");
-const ansiColors = require("ansi-colors");
-const mkdirp = require('mkdirp');
-const root = path.dirname(path.dirname(__dirname));
-const productjson = JSON.parse(fs.readFileSync(path.join(__dirname, '../../product.json'), 'utf8'));
-const builtInExtensions = productjson.builtInExtensions || [];
-const webBuiltInExtensions = productjson.webBuiltInExtensions || [];
-const controlFilePath = path.join(os.homedir(), '.vscode-oss-dev', 'extensions', 'control.json');
-const ENABLE_LOGGING = !process.env['VSCODE_BUILD_BUILTIN_EXTENSIONS_SILENCE_PLEASE'];
-function log(...messages) {
-    if (ENABLE_LOGGING) {
-        fancyLog(...messages);
-    }
-}
-function getExtensionPath(extension) {
-    return path.join(root, '.build', 'builtInExtensions', extension.name);
-}
-function isUpToDate(extension) {
-    const packagePath = path.join(getExtensionPath(extension), 'package.json');
-    if (!fs.existsSync(packagePath)) {
-        return false;
-    }
-    const packageContents = fs.readFileSync(packagePath, { encoding: 'utf8' });
-    try {
-        const diskVersion = JSON.parse(packageContents).version;
-        return (diskVersion === extension.version);
-    }
-    catch (err) {
-        return false;
-    }
-}
-function syncMarketplaceExtension(extension) {
-    if (isUpToDate(extension)) {
-        log(ansiColors.blue('[marketplace]'), `${extension.name}@${extension.version}`, ansiColors.green('✔︎'));
-        return es.readArray([]);
-    }
-    rimraf.sync(getExtensionPath(extension));
-    return ext.fromMarketplace(extension.name, extension.version, extension.metadata)
-        .pipe(rename(p => p.dirname = `${extension.name}/${p.dirname}`))
-        .pipe(vfs.dest('.build/builtInExtensions'))
-        .on('end', () => log(ansiColors.blue('[marketplace]'), extension.name, ansiColors.green('✔︎')));
-}
-function syncExtension(extension, controlState) {
-    if (extension.platforms) {
-        const platforms = new Set(extension.platforms);
-        if (!platforms.has(process.platform)) {
-            log(ansiColors.gray('[skip]'), `${extension.name}@${extension.version}: Platform '${process.platform}' not supported: [${extension.platforms}]`, ansiColors.green('✔︎'));
-            return es.readArray([]);
-        }
-    }
-    switch (controlState) {
-        case 'disabled':
-            log(ansiColors.blue('[disabled]'), ansiColors.gray(extension.name));
-            return es.readArray([]);
-        case 'marketplace':
-            return syncMarketplaceExtension(extension);
-        default:
-            if (!fs.existsSync(controlState)) {
-                log(ansiColors.red(`Error: Built-in extension '${extension.name}' is configured to run from '${controlState}' but that path does not exist.`));
-                return es.readArray([]);
-            }
-            else if (!fs.existsSync(path.join(controlState, 'package.json'))) {
-                log(ansiColors.red(`Error: Built-in extension '${extension.name}' is configured to run from '${controlState}' but there is no 'package.json' file in that directory.`));
-                return es.readArray([]);
-            }
-            log(ansiColors.blue('[local]'), `${extension.name}: ${ansiColors.cyan(controlState)}`, ansiColors.green('✔︎'));
-            return es.readArray([]);
-    }
-}
-function readControlFile() {
-    try {
-        return JSON.parse(fs.readFileSync(controlFilePath, 'utf8'));
-    }
-    catch (err) {
-        return {};
-    }
-}
-function writeControlFile(control) {
-    mkdirp.sync(path.dirname(controlFilePath));
-    fs.writeFileSync(controlFilePath, JSON.stringify(control, null, 2));
-}
-function getBuiltInExtensions() {
-    log('Syncronizing built-in extensions...');
-    log(`You can manage built-in extensions with the ${ansiColors.cyan('--builtin')} flag`);
-    const control = readControlFile();
-    const streams = [];
-    for (const extension of [...builtInExtensions, ...webBuiltInExtensions]) {
-        let controlState = control[extension.name] || 'marketplace';
-        control[extension.name] = controlState;
-        streams.push(syncExtension(extension, controlState));
-    }
-    writeControlFile(control);
-    return new Promise((resolve, reject) => {
-        es.merge(streams)
-            .on('error', reject)
-            .on('end', resolve);
-    });
-}
-exports.getBuiltInExtensions = getBuiltInExtensions;
-if (require.main === module) {
-    getBuiltInExtensions().then(() => process.exit(0)).catch(err => {
-        console.error(err);
-        process.exit(1);
-    });
-}
diff --git a/lib/vscode/build/lib/builtInExtensions.ts b/lib/vscode/build/lib/builtInExtensions.ts
deleted file mode 100644
index 2c1cb3abba2c..000000000000
--- a/lib/vscode/build/lib/builtInExtensions.ts
+++ /dev/null
@@ -1,163 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-import * as fs from 'fs';
-import * as path from 'path';
-import * as os from 'os';
-import * as rimraf from 'rimraf';
-import * as es from 'event-stream';
-import * as rename from 'gulp-rename';
-import * as vfs from 'vinyl-fs';
-import * as ext from './extensions';
-import * as fancyLog from 'fancy-log';
-import * as ansiColors from 'ansi-colors';
-import { Stream } from 'stream';
-
-const mkdirp = require('mkdirp');
-
-export interface IExtensionDefinition {
-	name: string;
-	version: string;
-	repo: string;
-	platforms?: string[];
-	metadata: {
-		id: string;
-		publisherId: {
-			publisherId: string;
-			publisherName: string;
-			displayName: string;
-			flags: string;
-		};
-		publisherDisplayName: string;
-	}
-}
-
-const root = path.dirname(path.dirname(__dirname));
-const productjson = JSON.parse(fs.readFileSync(path.join(__dirname, '../../product.json'), 'utf8'));
-const builtInExtensions = <IExtensionDefinition[]>productjson.builtInExtensions || [];
-const webBuiltInExtensions = <IExtensionDefinition[]>productjson.webBuiltInExtensions || [];
-const controlFilePath = path.join(os.homedir(), '.vscode-oss-dev', 'extensions', 'control.json');
-const ENABLE_LOGGING = !process.env['VSCODE_BUILD_BUILTIN_EXTENSIONS_SILENCE_PLEASE'];
-
-function log(...messages: string[]): void {
-	if (ENABLE_LOGGING) {
-		fancyLog(...messages);
-	}
-}
-
-function getExtensionPath(extension: IExtensionDefinition): string {
-	return path.join(root, '.build', 'builtInExtensions', extension.name);
-}
-
-function isUpToDate(extension: IExtensionDefinition): boolean {
-	const packagePath = path.join(getExtensionPath(extension), 'package.json');
-
-	if (!fs.existsSync(packagePath)) {
-		return false;
-	}
-
-	const packageContents = fs.readFileSync(packagePath, { encoding: 'utf8' });
-
-	try {
-		const diskVersion = JSON.parse(packageContents).version;
-		return (diskVersion === extension.version);
-	} catch (err) {
-		return false;
-	}
-}
-
-function syncMarketplaceExtension(extension: IExtensionDefinition): Stream {
-	if (isUpToDate(extension)) {
-		log(ansiColors.blue('[marketplace]'), `${extension.name}@${extension.version}`, ansiColors.green('✔︎'));
-		return es.readArray([]);
-	}
-
-	rimraf.sync(getExtensionPath(extension));
-
-	return ext.fromMarketplace(extension.name, extension.version, extension.metadata)
-		.pipe(rename(p => p.dirname = `${extension.name}/${p.dirname}`))
-		.pipe(vfs.dest('.build/builtInExtensions'))
-		.on('end', () => log(ansiColors.blue('[marketplace]'), extension.name, ansiColors.green('✔︎')));
-}
-
-function syncExtension(extension: IExtensionDefinition, controlState: 'disabled' | 'marketplace'): Stream {
-	if (extension.platforms) {
-		const platforms = new Set(extension.platforms);
-
-		if (!platforms.has(process.platform)) {
-			log(ansiColors.gray('[skip]'), `${extension.name}@${extension.version}: Platform '${process.platform}' not supported: [${extension.platforms}]`, ansiColors.green('✔︎'));
-			return es.readArray([]);
-		}
-	}
-
-	switch (controlState) {
-		case 'disabled':
-			log(ansiColors.blue('[disabled]'), ansiColors.gray(extension.name));
-			return es.readArray([]);
-
-		case 'marketplace':
-			return syncMarketplaceExtension(extension);
-
-		default:
-			if (!fs.existsSync(controlState)) {
-				log(ansiColors.red(`Error: Built-in extension '${extension.name}' is configured to run from '${controlState}' but that path does not exist.`));
-				return es.readArray([]);
-
-			} else if (!fs.existsSync(path.join(controlState, 'package.json'))) {
-				log(ansiColors.red(`Error: Built-in extension '${extension.name}' is configured to run from '${controlState}' but there is no 'package.json' file in that directory.`));
-				return es.readArray([]);
-			}
-
-			log(ansiColors.blue('[local]'), `${extension.name}: ${ansiColors.cyan(controlState)}`, ansiColors.green('✔︎'));
-			return es.readArray([]);
-	}
-}
-
-interface IControlFile {
-	[name: string]: 'disabled' | 'marketplace';
-}
-
-function readControlFile(): IControlFile {
-	try {
-		return JSON.parse(fs.readFileSync(controlFilePath, 'utf8'));
-	} catch (err) {
-		return {};
-	}
-}
-
-function writeControlFile(control: IControlFile): void {
-	mkdirp.sync(path.dirname(controlFilePath));
-	fs.writeFileSync(controlFilePath, JSON.stringify(control, null, 2));
-}
-
-export function getBuiltInExtensions(): Promise<void> {
-	log('Syncronizing built-in extensions...');
-	log(`You can manage built-in extensions with the ${ansiColors.cyan('--builtin')} flag`);
-
-	const control = readControlFile();
-	const streams: Stream[] = [];
-
-	for (const extension of [...builtInExtensions, ...webBuiltInExtensions]) {
-		let controlState = control[extension.name] || 'marketplace';
-		control[extension.name] = controlState;
-
-		streams.push(syncExtension(extension, controlState));
-	}
-
-	writeControlFile(control);
-
-	return new Promise((resolve, reject) => {
-		es.merge(streams)
-			.on('error', reject)
-			.on('end', resolve);
-	});
-}
-
-if (require.main === module) {
-	getBuiltInExtensions().then(() => process.exit(0)).catch(err => {
-		console.error(err);
-		process.exit(1);
-	});
-}
diff --git a/lib/vscode/build/lib/builtInExtensionsCG.js b/lib/vscode/build/lib/builtInExtensionsCG.js
deleted file mode 100644
index 679663724c8b..000000000000
--- a/lib/vscode/build/lib/builtInExtensionsCG.js
+++ /dev/null
@@ -1,79 +0,0 @@
-"use strict";
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-Object.defineProperty(exports, "__esModule", { value: true });
-const got_1 = require("got");
-const fs = require("fs");
-const path = require("path");
-const url = require("url");
-const ansiColors = require("ansi-colors");
-const root = path.dirname(path.dirname(__dirname));
-const rootCG = path.join(root, 'extensionsCG');
-const productjson = JSON.parse(fs.readFileSync(path.join(__dirname, '../../product.json'), 'utf8'));
-const builtInExtensions = productjson.builtInExtensions || [];
-const webBuiltInExtensions = productjson.webBuiltInExtensions || [];
-const token = process.env['VSCODE_MIXIN_PASSWORD'] || process.env['GITHUB_TOKEN'] || undefined;
-const contentBasePath = 'raw.githubusercontent.com';
-const contentFileNames = ['package.json', 'package-lock.json', 'yarn.lock'];
-async function downloadExtensionDetails(extension) {
-    var _a, _b, _c;
-    const extensionLabel = `${extension.name}@${extension.version}`;
-    const repository = url.parse(extension.repo).path.substr(1);
-    const repositoryContentBaseUrl = `https://${token ? `${token}@` : ''}${contentBasePath}/${repository}/v${extension.version}`;
-    const promises = [];
-    for (const fileName of contentFileNames) {
-        promises.push(new Promise(resolve => {
-            got_1.default(`${repositoryContentBaseUrl}/${fileName}`)
-                .then(response => {
-                resolve({ fileName, body: response.rawBody });
-            })
-                .catch(error => {
-                if (error.response.statusCode === 404) {
-                    resolve({ fileName, body: undefined });
-                }
-                else {
-                    resolve({ fileName, body: null });
-                }
-            });
-        }));
-    }
-    console.log(extensionLabel);
-    const results = await Promise.all(promises);
-    for (const result of results) {
-        if (result.body) {
-            const extensionFolder = path.join(rootCG, extension.name);
-            fs.mkdirSync(extensionFolder, { recursive: true });
-            fs.writeFileSync(path.join(extensionFolder, result.fileName), result.body);
-            console.log(`  - ${result.fileName} ${ansiColors.green('✔︎')}`);
-        }
-        else if (result.body === undefined) {
-            console.log(`  - ${result.fileName} ${ansiColors.yellow('⚠️')}`);
-        }
-        else {
-            console.log(`  - ${result.fileName} ${ansiColors.red('🛑')}`);
-        }
-    }
-    // Validation
-    if (!((_a = results.find(r => r.fileName === 'package.json')) === null || _a === void 0 ? void 0 : _a.body)) {
-        // throw new Error(`The "package.json" file could not be found for the built-in extension - ${extensionLabel}`);
-    }
-    if (!((_b = results.find(r => r.fileName === 'package-lock.json')) === null || _b === void 0 ? void 0 : _b.body) &&
-        !((_c = results.find(r => r.fileName === 'yarn.lock')) === null || _c === void 0 ? void 0 : _c.body)) {
-        // throw new Error(`The "package-lock.json"/"yarn.lock" could not be found for the built-in extension - ${extensionLabel}`);
-    }
-}
-async function main() {
-    for (const extension of [...builtInExtensions, ...webBuiltInExtensions]) {
-        await downloadExtensionDetails(extension);
-    }
-}
-main().then(() => {
-    console.log(`Built-in extensions component data downloaded ${ansiColors.green('✔︎')}`);
-    process.exit(0);
-}, err => {
-    console.log(`Built-in extensions component data could not be downloaded ${ansiColors.red('🛑')}`);
-    console.error(err);
-    process.exit(1);
-});
diff --git a/lib/vscode/build/lib/builtInExtensionsCG.ts b/lib/vscode/build/lib/builtInExtensionsCG.ts
deleted file mode 100644
index 2b758da5c912..000000000000
--- a/lib/vscode/build/lib/builtInExtensionsCG.ts
+++ /dev/null
@@ -1,83 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-import got from 'got';
-import * as fs from 'fs';
-import * as path from 'path';
-import * as url from 'url';
-import ansiColors = require('ansi-colors');
-import { IExtensionDefinition } from './builtInExtensions';
-
-const root = path.dirname(path.dirname(__dirname));
-const rootCG = path.join(root, 'extensionsCG');
-const productjson = JSON.parse(fs.readFileSync(path.join(__dirname, '../../product.json'), 'utf8'));
-const builtInExtensions = <IExtensionDefinition[]>productjson.builtInExtensions || [];
-const webBuiltInExtensions = <IExtensionDefinition[]>productjson.webBuiltInExtensions || [];
-const token = process.env['VSCODE_MIXIN_PASSWORD'] || process.env['GITHUB_TOKEN'] || undefined;
-
-const contentBasePath = 'raw.githubusercontent.com';
-const contentFileNames = ['package.json', 'package-lock.json', 'yarn.lock'];
-
-async function downloadExtensionDetails(extension: IExtensionDefinition): Promise<void> {
-	const extensionLabel = `${extension.name}@${extension.version}`;
-	const repository = url.parse(extension.repo).path!.substr(1);
-	const repositoryContentBaseUrl = `https://${token ? `${token}@` : ''}${contentBasePath}/${repository}/v${extension.version}`;
-
-	const promises = [];
-	for (const fileName of contentFileNames) {
-		promises.push(new Promise<{ fileName: string, body: Buffer | undefined | null }>(resolve => {
-			got(`${repositoryContentBaseUrl}/${fileName}`)
-				.then(response => {
-					resolve({ fileName, body: response.rawBody });
-				})
-				.catch(error => {
-					if (error.response.statusCode === 404) {
-						resolve({ fileName, body: undefined });
-					} else {
-						resolve({ fileName, body: null });
-					}
-				});
-		}));
-	}
-
-	console.log(extensionLabel);
-	const results = await Promise.all(promises);
-	for (const result of results) {
-		if (result.body) {
-			const extensionFolder = path.join(rootCG, extension.name);
-			fs.mkdirSync(extensionFolder, { recursive: true });
-			fs.writeFileSync(path.join(extensionFolder, result.fileName), result.body);
-			console.log(`  - ${result.fileName} ${ansiColors.green('✔︎')}`);
-		} else if (result.body === undefined) {
-			console.log(`  - ${result.fileName} ${ansiColors.yellow('⚠️')}`);
-		} else {
-			console.log(`  - ${result.fileName} ${ansiColors.red('🛑')}`);
-		}
-	}
-
-	// Validation
-	if (!results.find(r => r.fileName === 'package.json')?.body) {
-		// throw new Error(`The "package.json" file could not be found for the built-in extension - ${extensionLabel}`);
-	}
-	if (!results.find(r => r.fileName === 'package-lock.json')?.body &&
-		!results.find(r => r.fileName === 'yarn.lock')?.body) {
-		// throw new Error(`The "package-lock.json"/"yarn.lock" could not be found for the built-in extension - ${extensionLabel}`);
-	}
-}
-
-async function main(): Promise<void> {
-	for (const extension of [...builtInExtensions, ...webBuiltInExtensions]) {
-		await downloadExtensionDetails(extension);
-	}
-}
-
-main().then(() => {
-	console.log(`Built-in extensions component data downloaded ${ansiColors.green('✔︎')}`);
-	process.exit(0);
-}, err => {
-	console.log(`Built-in extensions component data could not be downloaded ${ansiColors.red('🛑')}`);
-	console.error(err);
-	process.exit(1);
-});
diff --git a/lib/vscode/build/lib/bundle.js b/lib/vscode/build/lib/bundle.js
deleted file mode 100644
index 7d0c8d9b55ef..000000000000
--- a/lib/vscode/build/lib/bundle.js
+++ /dev/null
@@ -1,464 +0,0 @@
-"use strict";
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.bundle = void 0;
-const fs = require("fs");
-const path = require("path");
-const vm = require("vm");
-/**
- * Bundle `entryPoints` given config `config`.
- */
-function bundle(entryPoints, config, callback) {
-    const entryPointsMap = {};
-    entryPoints.forEach((module) => {
-        entryPointsMap[module.name] = module;
-    });
-    const allMentionedModulesMap = {};
-    entryPoints.forEach((module) => {
-        allMentionedModulesMap[module.name] = true;
-        (module.include || []).forEach(function (includedModule) {
-            allMentionedModulesMap[includedModule] = true;
-        });
-        (module.exclude || []).forEach(function (excludedModule) {
-            allMentionedModulesMap[excludedModule] = true;
-        });
-    });
-    const code = require('fs').readFileSync(path.join(__dirname, '../../src/vs/loader.js'));
-    const r = vm.runInThisContext('(function(require, module, exports) { ' + code + '\n});');
-    const loaderModule = { exports: {} };
-    r.call({}, require, loaderModule, loaderModule.exports);
-    const loader = loaderModule.exports;
-    config.isBuild = true;
-    config.paths = config.paths || {};
-    if (!config.paths['vs/nls']) {
-        config.paths['vs/nls'] = 'out-build/vs/nls.build';
-    }
-    if (!config.paths['vs/css']) {
-        config.paths['vs/css'] = 'out-build/vs/css.build';
-    }
-    loader.config(config);
-    loader(['require'], (localRequire) => {
-        const resolvePath = (path) => {
-            const r = localRequire.toUrl(path);
-            if (!/\.js/.test(r)) {
-                return r + '.js';
-            }
-            return r;
-        };
-        for (const moduleId in entryPointsMap) {
-            const entryPoint = entryPointsMap[moduleId];
-            if (entryPoint.append) {
-                entryPoint.append = entryPoint.append.map(resolvePath);
-            }
-            if (entryPoint.prepend) {
-                entryPoint.prepend = entryPoint.prepend.map(resolvePath);
-            }
-        }
-    });
-    loader(Object.keys(allMentionedModulesMap), () => {
-        const modules = loader.getBuildInfo();
-        const partialResult = emitEntryPoints(modules, entryPointsMap);
-        const cssInlinedResources = loader('vs/css').getInlinedResources();
-        callback(null, {
-            files: partialResult.files,
-            cssInlinedResources: cssInlinedResources,
-            bundleData: partialResult.bundleData
-        });
-    }, (err) => callback(err, null));
-}
-exports.bundle = bundle;
-function emitEntryPoints(modules, entryPoints) {
-    const modulesMap = {};
-    modules.forEach((m) => {
-        modulesMap[m.id] = m;
-    });
-    const modulesGraph = {};
-    modules.forEach((m) => {
-        modulesGraph[m.id] = m.dependencies;
-    });
-    const sortedModules = topologicalSort(modulesGraph);
-    let result = [];
-    const usedPlugins = {};
-    const bundleData = {
-        graph: modulesGraph,
-        bundles: {}
-    };
-    Object.keys(entryPoints).forEach((moduleToBundle) => {
-        const info = entryPoints[moduleToBundle];
-        const rootNodes = [moduleToBundle].concat(info.include || []);
-        const allDependencies = visit(rootNodes, modulesGraph);
-        const excludes = ['require', 'exports', 'module'].concat(info.exclude || []);
-        excludes.forEach((excludeRoot) => {
-            const allExcludes = visit([excludeRoot], modulesGraph);
-            Object.keys(allExcludes).forEach((exclude) => {
-                delete allDependencies[exclude];
-            });
-        });
-        const includedModules = sortedModules.filter((module) => {
-            return allDependencies[module];
-        });
-        bundleData.bundles[moduleToBundle] = includedModules;
-        const res = emitEntryPoint(modulesMap, modulesGraph, moduleToBundle, includedModules, info.prepend || [], info.append || [], info.dest);
-        result = result.concat(res.files);
-        for (const pluginName in res.usedPlugins) {
-            usedPlugins[pluginName] = usedPlugins[pluginName] || res.usedPlugins[pluginName];
-        }
-    });
-    Object.keys(usedPlugins).forEach((pluginName) => {
-        const plugin = usedPlugins[pluginName];
-        if (typeof plugin.finishBuild === 'function') {
-            const write = (filename, contents) => {
-                result.push({
-                    dest: filename,
-                    sources: [{
-                            path: null,
-                            contents: contents
-                        }]
-                });
-            };
-            plugin.finishBuild(write);
-        }
-    });
-    return {
-        // TODO@TS 2.1.2
-        files: extractStrings(removeDuplicateTSBoilerplate(result)),
-        bundleData: bundleData
-    };
-}
-function extractStrings(destFiles) {
-    const parseDefineCall = (moduleMatch, depsMatch) => {
-        const module = moduleMatch.replace(/^"|"$/g, '');
-        let deps = depsMatch.split(',');
-        deps = deps.map((dep) => {
-            dep = dep.trim();
-            dep = dep.replace(/^"|"$/g, '');
-            dep = dep.replace(/^'|'$/g, '');
-            let prefix = null;
-            let _path = null;
-            const pieces = dep.split('!');
-            if (pieces.length > 1) {
-                prefix = pieces[0] + '!';
-                _path = pieces[1];
-            }
-            else {
-                prefix = '';
-                _path = pieces[0];
-            }
-            if (/^\.\//.test(_path) || /^\.\.\//.test(_path)) {
-                const res = path.join(path.dirname(module), _path).replace(/\\/g, '/');
-                return prefix + res;
-            }
-            return prefix + _path;
-        });
-        return {
-            module: module,
-            deps: deps
-        };
-    };
-    destFiles.forEach((destFile) => {
-        if (!/\.js$/.test(destFile.dest)) {
-            return;
-        }
-        if (/\.nls\.js$/.test(destFile.dest)) {
-            return;
-        }
-        // Do one pass to record the usage counts for each module id
-        const useCounts = {};
-        destFile.sources.forEach((source) => {
-            const matches = source.contents.match(/define\(("[^"]+"),\s*\[(((, )?("|')[^"']+("|'))+)\]/);
-            if (!matches) {
-                return;
-            }
-            const defineCall = parseDefineCall(matches[1], matches[2]);
-            useCounts[defineCall.module] = (useCounts[defineCall.module] || 0) + 1;
-            defineCall.deps.forEach((dep) => {
-                useCounts[dep] = (useCounts[dep] || 0) + 1;
-            });
-        });
-        const sortedByUseModules = Object.keys(useCounts);
-        sortedByUseModules.sort((a, b) => {
-            return useCounts[b] - useCounts[a];
-        });
-        const replacementMap = {};
-        sortedByUseModules.forEach((module, index) => {
-            replacementMap[module] = index;
-        });
-        destFile.sources.forEach((source) => {
-            source.contents = source.contents.replace(/define\(("[^"]+"),\s*\[(((, )?("|')[^"']+("|'))+)\]/, (_, moduleMatch, depsMatch) => {
-                const defineCall = parseDefineCall(moduleMatch, depsMatch);
-                return `define(__m[${replacementMap[defineCall.module]}/*${defineCall.module}*/], __M([${defineCall.deps.map(dep => replacementMap[dep] + '/*' + dep + '*/').join(',')}])`;
-            });
-        });
-        destFile.sources.unshift({
-            path: null,
-            contents: [
-                '(function() {',
-                `var __m = ${JSON.stringify(sortedByUseModules)};`,
-                `var __M = function(deps) {`,
-                `  var result = [];`,
-                `  for (var i = 0, len = deps.length; i < len; i++) {`,
-                `    result[i] = __m[deps[i]];`,
-                `  }`,
-                `  return result;`,
-                `};`
-            ].join('\n')
-        });
-        destFile.sources.push({
-            path: null,
-            contents: '}).call(this);'
-        });
-    });
-    return destFiles;
-}
-function removeDuplicateTSBoilerplate(destFiles) {
-    // Taken from typescript compiler => emitFiles
-    const BOILERPLATE = [
-        { start: /^var __extends/, end: /^}\)\(\);$/ },
-        { start: /^var __assign/, end: /^};$/ },
-        { start: /^var __decorate/, end: /^};$/ },
-        { start: /^var __metadata/, end: /^};$/ },
-        { start: /^var __param/, end: /^};$/ },
-        { start: /^var __awaiter/, end: /^};$/ },
-        { start: /^var __generator/, end: /^};$/ },
-    ];
-    destFiles.forEach((destFile) => {
-        const SEEN_BOILERPLATE = [];
-        destFile.sources.forEach((source) => {
-            const lines = source.contents.split(/\r\n|\n|\r/);
-            const newLines = [];
-            let IS_REMOVING_BOILERPLATE = false, END_BOILERPLATE;
-            for (let i = 0; i < lines.length; i++) {
-                const line = lines[i];
-                if (IS_REMOVING_BOILERPLATE) {
-                    newLines.push('');
-                    if (END_BOILERPLATE.test(line)) {
-                        IS_REMOVING_BOILERPLATE = false;
-                    }
-                }
-                else {
-                    for (let j = 0; j < BOILERPLATE.length; j++) {
-                        const boilerplate = BOILERPLATE[j];
-                        if (boilerplate.start.test(line)) {
-                            if (SEEN_BOILERPLATE[j]) {
-                                IS_REMOVING_BOILERPLATE = true;
-                                END_BOILERPLATE = boilerplate.end;
-                            }
-                            else {
-                                SEEN_BOILERPLATE[j] = true;
-                            }
-                        }
-                    }
-                    if (IS_REMOVING_BOILERPLATE) {
-                        newLines.push('');
-                    }
-                    else {
-                        newLines.push(line);
-                    }
-                }
-            }
-            source.contents = newLines.join('\n');
-        });
-    });
-    return destFiles;
-}
-function emitEntryPoint(modulesMap, deps, entryPoint, includedModules, prepend, append, dest) {
-    if (!dest) {
-        dest = entryPoint + '.js';
-    }
-    const mainResult = {
-        sources: [],
-        dest: dest
-    }, results = [mainResult];
-    const usedPlugins = {};
-    const getLoaderPlugin = (pluginName) => {
-        if (!usedPlugins[pluginName]) {
-            usedPlugins[pluginName] = modulesMap[pluginName].exports;
-        }
-        return usedPlugins[pluginName];
-    };
-    includedModules.forEach((c) => {
-        const bangIndex = c.indexOf('!');
-        if (bangIndex >= 0) {
-            const pluginName = c.substr(0, bangIndex);
-            const plugin = getLoaderPlugin(pluginName);
-            mainResult.sources.push(emitPlugin(entryPoint, plugin, pluginName, c.substr(bangIndex + 1)));
-            return;
-        }
-        const module = modulesMap[c];
-        if (module.path === 'empty:') {
-            return;
-        }
-        const contents = readFileAndRemoveBOM(module.path);
-        if (module.shim) {
-            mainResult.sources.push(emitShimmedModule(c, deps[c], module.shim, module.path, contents));
-        }
-        else {
-            mainResult.sources.push(emitNamedModule(c, module.defineLocation, module.path, contents));
-        }
-    });
-    Object.keys(usedPlugins).forEach((pluginName) => {
-        const plugin = usedPlugins[pluginName];
-        if (typeof plugin.writeFile === 'function') {
-            const req = (() => {
-                throw new Error('no-no!');
-            });
-            req.toUrl = something => something;
-            const write = (filename, contents) => {
-                results.push({
-                    dest: filename,
-                    sources: [{
-                            path: null,
-                            contents: contents
-                        }]
-                });
-            };
-            plugin.writeFile(pluginName, entryPoint, req, write, {});
-        }
-    });
-    const toIFile = (path) => {
-        const contents = readFileAndRemoveBOM(path);
-        return {
-            path: path,
-            contents: contents
-        };
-    };
-    const toPrepend = (prepend || []).map(toIFile);
-    const toAppend = (append || []).map(toIFile);
-    mainResult.sources = toPrepend.concat(mainResult.sources).concat(toAppend);
-    return {
-        files: results,
-        usedPlugins: usedPlugins
-    };
-}
-function readFileAndRemoveBOM(path) {
-    const BOM_CHAR_CODE = 65279;
-    let contents = fs.readFileSync(path, 'utf8');
-    // Remove BOM
-    if (contents.charCodeAt(0) === BOM_CHAR_CODE) {
-        contents = contents.substring(1);
-    }
-    return contents;
-}
-function emitPlugin(entryPoint, plugin, pluginName, moduleName) {
-    let result = '';
-    if (typeof plugin.write === 'function') {
-        const write = ((what) => {
-            result += what;
-        });
-        write.getEntryPoint = () => {
-            return entryPoint;
-        };
-        write.asModule = (moduleId, code) => {
-            code = code.replace(/^define\(/, 'define("' + moduleId + '",');
-            result += code;
-        };
-        plugin.write(pluginName, moduleName, write);
-    }
-    return {
-        path: null,
-        contents: result
-    };
-}
-function emitNamedModule(moduleId, defineCallPosition, path, contents) {
-    // `defineCallPosition` is the position in code: |define()
-    const defineCallOffset = positionToOffset(contents, defineCallPosition.line, defineCallPosition.col);
-    // `parensOffset` is the position in code: define|()
-    const parensOffset = contents.indexOf('(', defineCallOffset);
-    const insertStr = '"' + moduleId + '", ';
-    return {
-        path: path,
-        contents: contents.substr(0, parensOffset + 1) + insertStr + contents.substr(parensOffset + 1)
-    };
-}
-function emitShimmedModule(moduleId, myDeps, factory, path, contents) {
-    const strDeps = (myDeps.length > 0 ? '"' + myDeps.join('", "') + '"' : '');
-    const strDefine = 'define("' + moduleId + '", [' + strDeps + '], ' + factory + ');';
-    return {
-        path: path,
-        contents: contents + '\n;\n' + strDefine
-    };
-}
-/**
- * Convert a position (line:col) to (offset) in string `str`
- */
-function positionToOffset(str, desiredLine, desiredCol) {
-    if (desiredLine === 1) {
-        return desiredCol - 1;
-    }
-    let line = 1;
-    let lastNewLineOffset = -1;
-    do {
-        if (desiredLine === line) {
-            return lastNewLineOffset + 1 + desiredCol - 1;
-        }
-        lastNewLineOffset = str.indexOf('\n', lastNewLineOffset + 1);
-        line++;
-    } while (lastNewLineOffset >= 0);
-    return -1;
-}
-/**
- * Return a set of reachable nodes in `graph` starting from `rootNodes`
- */
-function visit(rootNodes, graph) {
-    const result = {};
-    const queue = rootNodes;
-    rootNodes.forEach((node) => {
-        result[node] = true;
-    });
-    while (queue.length > 0) {
-        const el = queue.shift();
-        const myEdges = graph[el] || [];
-        myEdges.forEach((toNode) => {
-            if (!result[toNode]) {
-                result[toNode] = true;
-                queue.push(toNode);
-            }
-        });
-    }
-    return result;
-}
-/**
- * Perform a topological sort on `graph`
- */
-function topologicalSort(graph) {
-    const allNodes = {}, outgoingEdgeCount = {}, inverseEdges = {};
-    Object.keys(graph).forEach((fromNode) => {
-        allNodes[fromNode] = true;
-        outgoingEdgeCount[fromNode] = graph[fromNode].length;
-        graph[fromNode].forEach((toNode) => {
-            allNodes[toNode] = true;
-            outgoingEdgeCount[toNode] = outgoingEdgeCount[toNode] || 0;
-            inverseEdges[toNode] = inverseEdges[toNode] || [];
-            inverseEdges[toNode].push(fromNode);
-        });
-    });
-    // https://en.wikipedia.org/wiki/Topological_sorting
-    const S = [], L = [];
-    Object.keys(allNodes).forEach((node) => {
-        if (outgoingEdgeCount[node] === 0) {
-            delete outgoingEdgeCount[node];
-            S.push(node);
-        }
-    });
-    while (S.length > 0) {
-        // Ensure the exact same order all the time with the same inputs
-        S.sort();
-        const n = S.shift();
-        L.push(n);
-        const myInverseEdges = inverseEdges[n] || [];
-        myInverseEdges.forEach((m) => {
-            outgoingEdgeCount[m]--;
-            if (outgoingEdgeCount[m] === 0) {
-                delete outgoingEdgeCount[m];
-                S.push(m);
-            }
-        });
-    }
-    if (Object.keys(outgoingEdgeCount).length > 0) {
-        throw new Error('Cannot do topological sort on cyclic graph, remaining nodes: ' + Object.keys(outgoingEdgeCount));
-    }
-    return L;
-}
diff --git a/lib/vscode/build/lib/bundle.ts b/lib/vscode/build/lib/bundle.ts
deleted file mode 100644
index 562b050d1fd3..000000000000
--- a/lib/vscode/build/lib/bundle.ts
+++ /dev/null
@@ -1,648 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-import * as fs from 'fs';
-import * as path from 'path';
-import * as vm from 'vm';
-
-interface IPosition {
-	line: number;
-	col: number;
-}
-
-interface IBuildModuleInfo {
-	id: string;
-	path: string;
-	defineLocation: IPosition;
-	dependencies: string[];
-	shim: string;
-	exports: any;
-}
-
-interface IBuildModuleInfoMap {
-	[moduleId: string]: IBuildModuleInfo;
-}
-
-interface ILoaderPlugin {
-	write(pluginName: string, moduleName: string, write: ILoaderPluginWriteFunc): void;
-	writeFile(pluginName: string, entryPoint: string, req: ILoaderPluginReqFunc, write: (filename: string, contents: string) => void, config: any): void;
-	finishBuild(write: (filename: string, contents: string) => void): void;
-}
-
-interface ILoaderPluginWriteFunc {
-	(something: string): void;
-	getEntryPoint(): string;
-	asModule(moduleId: string, code: string): void;
-}
-
-interface ILoaderPluginReqFunc {
-	(something: string): void;
-	toUrl(something: string): string;
-}
-
-export interface IEntryPoint {
-	name: string;
-	include?: string[];
-	exclude?: string[];
-	prepend?: string[];
-	append?: string[];
-	dest?: string;
-}
-
-interface IEntryPointMap {
-	[moduleId: string]: IEntryPoint;
-}
-
-export interface IGraph {
-	[node: string]: string[];
-}
-
-interface INodeSet {
-	[node: string]: boolean;
-}
-
-export interface IFile {
-	path: string | null;
-	contents: string;
-}
-
-export interface IConcatFile {
-	dest: string;
-	sources: IFile[];
-}
-
-export interface IBundleData {
-	graph: IGraph;
-	bundles: { [moduleId: string]: string[]; };
-}
-
-export interface IBundleResult {
-	files: IConcatFile[];
-	cssInlinedResources: string[];
-	bundleData: IBundleData;
-}
-
-interface IPartialBundleResult {
-	files: IConcatFile[];
-	bundleData: IBundleData;
-}
-
-export interface ILoaderConfig {
-	isBuild?: boolean;
-	paths?: { [path: string]: any; };
-}
-
-/**
- * Bundle `entryPoints` given config `config`.
- */
-export function bundle(entryPoints: IEntryPoint[], config: ILoaderConfig, callback: (err: any, result: IBundleResult | null) => void): void {
-	const entryPointsMap: IEntryPointMap = {};
-	entryPoints.forEach((module: IEntryPoint) => {
-		entryPointsMap[module.name] = module;
-	});
-
-	const allMentionedModulesMap: { [modules: string]: boolean; } = {};
-	entryPoints.forEach((module: IEntryPoint) => {
-		allMentionedModulesMap[module.name] = true;
-		(module.include || []).forEach(function (includedModule) {
-			allMentionedModulesMap[includedModule] = true;
-		});
-		(module.exclude || []).forEach(function (excludedModule) {
-			allMentionedModulesMap[excludedModule] = true;
-		});
-	});
-
-
-	const code = require('fs').readFileSync(path.join(__dirname, '../../src/vs/loader.js'));
-	const r: Function = <any>vm.runInThisContext('(function(require, module, exports) { ' + code + '\n});');
-	const loaderModule = { exports: {} };
-	r.call({}, require, loaderModule, loaderModule.exports);
-
-	const loader: any = loaderModule.exports;
-	config.isBuild = true;
-	config.paths = config.paths || {};
-	if (!config.paths['vs/nls']) {
-		config.paths['vs/nls'] = 'out-build/vs/nls.build';
-	}
-	if (!config.paths['vs/css']) {
-		config.paths['vs/css'] = 'out-build/vs/css.build';
-	}
-	loader.config(config);
-
-	loader(['require'], (localRequire: any) => {
-		const resolvePath = (path: string) => {
-			const r = localRequire.toUrl(path);
-			if (!/\.js/.test(r)) {
-				return r + '.js';
-			}
-			return r;
-		};
-		for (const moduleId in entryPointsMap) {
-			const entryPoint = entryPointsMap[moduleId];
-			if (entryPoint.append) {
-				entryPoint.append = entryPoint.append.map(resolvePath);
-			}
-			if (entryPoint.prepend) {
-				entryPoint.prepend = entryPoint.prepend.map(resolvePath);
-			}
-		}
-	});
-
-	loader(Object.keys(allMentionedModulesMap), () => {
-		const modules = <IBuildModuleInfo[]>loader.getBuildInfo();
-		const partialResult = emitEntryPoints(modules, entryPointsMap);
-		const cssInlinedResources = loader('vs/css').getInlinedResources();
-		callback(null, {
-			files: partialResult.files,
-			cssInlinedResources: cssInlinedResources,
-			bundleData: partialResult.bundleData
-		});
-	}, (err: any) => callback(err, null));
-}
-
-function emitEntryPoints(modules: IBuildModuleInfo[], entryPoints: IEntryPointMap): IPartialBundleResult {
-	const modulesMap: IBuildModuleInfoMap = {};
-	modules.forEach((m: IBuildModuleInfo) => {
-		modulesMap[m.id] = m;
-	});
-
-	const modulesGraph: IGraph = {};
-	modules.forEach((m: IBuildModuleInfo) => {
-		modulesGraph[m.id] = m.dependencies;
-	});
-
-	const sortedModules = topologicalSort(modulesGraph);
-
-	let result: IConcatFile[] = [];
-	const usedPlugins: IPluginMap = {};
-	const bundleData: IBundleData = {
-		graph: modulesGraph,
-		bundles: {}
-	};
-
-	Object.keys(entryPoints).forEach((moduleToBundle: string) => {
-		const info = entryPoints[moduleToBundle];
-		const rootNodes = [moduleToBundle].concat(info.include || []);
-		const allDependencies = visit(rootNodes, modulesGraph);
-		const excludes: string[] = ['require', 'exports', 'module'].concat(info.exclude || []);
-
-		excludes.forEach((excludeRoot: string) => {
-			const allExcludes = visit([excludeRoot], modulesGraph);
-			Object.keys(allExcludes).forEach((exclude: string) => {
-				delete allDependencies[exclude];
-			});
-		});
-
-		const includedModules = sortedModules.filter((module: string) => {
-			return allDependencies[module];
-		});
-
-		bundleData.bundles[moduleToBundle] = includedModules;
-
-		const res = emitEntryPoint(
-			modulesMap,
-			modulesGraph,
-			moduleToBundle,
-			includedModules,
-			info.prepend || [],
-			info.append || [],
-			info.dest
-		);
-
-		result = result.concat(res.files);
-		for (const pluginName in res.usedPlugins) {
-			usedPlugins[pluginName] = usedPlugins[pluginName] || res.usedPlugins[pluginName];
-		}
-	});
-
-	Object.keys(usedPlugins).forEach((pluginName: string) => {
-		const plugin = usedPlugins[pluginName];
-		if (typeof plugin.finishBuild === 'function') {
-			const write = (filename: string, contents: string) => {
-				result.push({
-					dest: filename,
-					sources: [{
-						path: null,
-						contents: contents
-					}]
-				});
-			};
-			plugin.finishBuild(write);
-		}
-	});
-
-	return {
-		// TODO@TS 2.1.2
-		files: extractStrings(removeDuplicateTSBoilerplate(result)),
-		bundleData: bundleData
-	};
-}
-
-function extractStrings(destFiles: IConcatFile[]): IConcatFile[] {
-	const parseDefineCall = (moduleMatch: string, depsMatch: string) => {
-		const module = moduleMatch.replace(/^"|"$/g, '');
-		let deps = depsMatch.split(',');
-		deps = deps.map((dep) => {
-			dep = dep.trim();
-			dep = dep.replace(/^"|"$/g, '');
-			dep = dep.replace(/^'|'$/g, '');
-			let prefix: string | null = null;
-			let _path: string | null = null;
-			const pieces = dep.split('!');
-			if (pieces.length > 1) {
-				prefix = pieces[0] + '!';
-				_path = pieces[1];
-			} else {
-				prefix = '';
-				_path = pieces[0];
-			}
-
-			if (/^\.\//.test(_path) || /^\.\.\//.test(_path)) {
-				const res = path.join(path.dirname(module), _path).replace(/\\/g, '/');
-				return prefix + res;
-			}
-			return prefix + _path;
-		});
-		return {
-			module: module,
-			deps: deps
-		};
-	};
-
-	destFiles.forEach((destFile) => {
-		if (!/\.js$/.test(destFile.dest)) {
-			return;
-		}
-		if (/\.nls\.js$/.test(destFile.dest)) {
-			return;
-		}
-
-		// Do one pass to record the usage counts for each module id
-		const useCounts: { [moduleId: string]: number; } = {};
-		destFile.sources.forEach((source) => {
-			const matches = source.contents.match(/define\(("[^"]+"),\s*\[(((, )?("|')[^"']+("|'))+)\]/);
-			if (!matches) {
-				return;
-			}
-
-			const defineCall = parseDefineCall(matches[1], matches[2]);
-			useCounts[defineCall.module] = (useCounts[defineCall.module] || 0) + 1;
-			defineCall.deps.forEach((dep) => {
-				useCounts[dep] = (useCounts[dep] || 0) + 1;
-			});
-		});
-
-		const sortedByUseModules = Object.keys(useCounts);
-		sortedByUseModules.sort((a, b) => {
-			return useCounts[b] - useCounts[a];
-		});
-
-		const replacementMap: { [moduleId: string]: number; } = {};
-		sortedByUseModules.forEach((module, index) => {
-			replacementMap[module] = index;
-		});
-
-		destFile.sources.forEach((source) => {
-			source.contents = source.contents.replace(/define\(("[^"]+"),\s*\[(((, )?("|')[^"']+("|'))+)\]/, (_, moduleMatch, depsMatch) => {
-				const defineCall = parseDefineCall(moduleMatch, depsMatch);
-				return `define(__m[${replacementMap[defineCall.module]}/*${defineCall.module}*/], __M([${defineCall.deps.map(dep => replacementMap[dep] + '/*' + dep + '*/').join(',')}])`;
-			});
-		});
-
-		destFile.sources.unshift({
-			path: null,
-			contents: [
-				'(function() {',
-				`var __m = ${JSON.stringify(sortedByUseModules)};`,
-				`var __M = function(deps) {`,
-				`  var result = [];`,
-				`  for (var i = 0, len = deps.length; i < len; i++) {`,
-				`    result[i] = __m[deps[i]];`,
-				`  }`,
-				`  return result;`,
-				`};`
-			].join('\n')
-		});
-
-		destFile.sources.push({
-			path: null,
-			contents: '}).call(this);'
-		});
-	});
-	return destFiles;
-}
-
-function removeDuplicateTSBoilerplate(destFiles: IConcatFile[]): IConcatFile[] {
-	// Taken from typescript compiler => emitFiles
-	const BOILERPLATE = [
-		{ start: /^var __extends/, end: /^}\)\(\);$/ },
-		{ start: /^var __assign/, end: /^};$/ },
-		{ start: /^var __decorate/, end: /^};$/ },
-		{ start: /^var __metadata/, end: /^};$/ },
-		{ start: /^var __param/, end: /^};$/ },
-		{ start: /^var __awaiter/, end: /^};$/ },
-		{ start: /^var __generator/, end: /^};$/ },
-	];
-
-	destFiles.forEach((destFile) => {
-		const SEEN_BOILERPLATE: boolean[] = [];
-		destFile.sources.forEach((source) => {
-			const lines = source.contents.split(/\r\n|\n|\r/);
-			const newLines: string[] = [];
-			let IS_REMOVING_BOILERPLATE = false, END_BOILERPLATE: RegExp;
-
-			for (let i = 0; i < lines.length; i++) {
-				const line = lines[i];
-				if (IS_REMOVING_BOILERPLATE) {
-					newLines.push('');
-					if (END_BOILERPLATE!.test(line)) {
-						IS_REMOVING_BOILERPLATE = false;
-					}
-				} else {
-					for (let j = 0; j < BOILERPLATE.length; j++) {
-						const boilerplate = BOILERPLATE[j];
-						if (boilerplate.start.test(line)) {
-							if (SEEN_BOILERPLATE[j]) {
-								IS_REMOVING_BOILERPLATE = true;
-								END_BOILERPLATE = boilerplate.end;
-							} else {
-								SEEN_BOILERPLATE[j] = true;
-							}
-						}
-					}
-					if (IS_REMOVING_BOILERPLATE) {
-						newLines.push('');
-					} else {
-						newLines.push(line);
-					}
-				}
-			}
-			source.contents = newLines.join('\n');
-		});
-	});
-
-	return destFiles;
-}
-
-interface IPluginMap {
-	[moduleId: string]: ILoaderPlugin;
-}
-
-interface IEmitEntryPointResult {
-	files: IConcatFile[];
-	usedPlugins: IPluginMap;
-}
-
-function emitEntryPoint(
-	modulesMap: IBuildModuleInfoMap,
-	deps: IGraph,
-	entryPoint: string,
-	includedModules: string[],
-	prepend: string[],
-	append: string[],
-	dest: string | undefined
-): IEmitEntryPointResult {
-	if (!dest) {
-		dest = entryPoint + '.js';
-	}
-	const mainResult: IConcatFile = {
-		sources: [],
-		dest: dest
-	},
-		results: IConcatFile[] = [mainResult];
-
-	const usedPlugins: IPluginMap = {};
-	const getLoaderPlugin = (pluginName: string): ILoaderPlugin => {
-		if (!usedPlugins[pluginName]) {
-			usedPlugins[pluginName] = modulesMap[pluginName].exports;
-		}
-		return usedPlugins[pluginName];
-	};
-
-	includedModules.forEach((c: string) => {
-		const bangIndex = c.indexOf('!');
-
-		if (bangIndex >= 0) {
-			const pluginName = c.substr(0, bangIndex);
-			const plugin = getLoaderPlugin(pluginName);
-			mainResult.sources.push(emitPlugin(entryPoint, plugin, pluginName, c.substr(bangIndex + 1)));
-			return;
-		}
-
-		const module = modulesMap[c];
-
-		if (module.path === 'empty:') {
-			return;
-		}
-
-		const contents = readFileAndRemoveBOM(module.path);
-
-		if (module.shim) {
-			mainResult.sources.push(emitShimmedModule(c, deps[c], module.shim, module.path, contents));
-		} else {
-			mainResult.sources.push(emitNamedModule(c, module.defineLocation, module.path, contents));
-		}
-	});
-
-	Object.keys(usedPlugins).forEach((pluginName: string) => {
-		const plugin = usedPlugins[pluginName];
-		if (typeof plugin.writeFile === 'function') {
-			const req: ILoaderPluginReqFunc = <any>(() => {
-				throw new Error('no-no!');
-			});
-			req.toUrl = something => something;
-
-			const write = (filename: string, contents: string) => {
-				results.push({
-					dest: filename,
-					sources: [{
-						path: null,
-						contents: contents
-					}]
-				});
-			};
-			plugin.writeFile(pluginName, entryPoint, req, write, {});
-		}
-	});
-
-	const toIFile = (path: string): IFile => {
-		const contents = readFileAndRemoveBOM(path);
-		return {
-			path: path,
-			contents: contents
-		};
-	};
-
-	const toPrepend = (prepend || []).map(toIFile);
-	const toAppend = (append || []).map(toIFile);
-
-	mainResult.sources = toPrepend.concat(mainResult.sources).concat(toAppend);
-
-	return {
-		files: results,
-		usedPlugins: usedPlugins
-	};
-}
-
-function readFileAndRemoveBOM(path: string): string {
-	const BOM_CHAR_CODE = 65279;
-	let contents = fs.readFileSync(path, 'utf8');
-	// Remove BOM
-	if (contents.charCodeAt(0) === BOM_CHAR_CODE) {
-		contents = contents.substring(1);
-	}
-	return contents;
-}
-
-function emitPlugin(entryPoint: string, plugin: ILoaderPlugin, pluginName: string, moduleName: string): IFile {
-	let result = '';
-	if (typeof plugin.write === 'function') {
-		const write: ILoaderPluginWriteFunc = <any>((what: string) => {
-			result += what;
-		});
-		write.getEntryPoint = () => {
-			return entryPoint;
-		};
-		write.asModule = (moduleId: string, code: string) => {
-			code = code.replace(/^define\(/, 'define("' + moduleId + '",');
-			result += code;
-		};
-		plugin.write(pluginName, moduleName, write);
-	}
-	return {
-		path: null,
-		contents: result
-	};
-}
-
-function emitNamedModule(moduleId: string, defineCallPosition: IPosition, path: string, contents: string): IFile {
-
-	// `defineCallPosition` is the position in code: |define()
-	const defineCallOffset = positionToOffset(contents, defineCallPosition.line, defineCallPosition.col);
-
-	// `parensOffset` is the position in code: define|()
-	const parensOffset = contents.indexOf('(', defineCallOffset);
-
-	const insertStr = '"' + moduleId + '", ';
-
-	return {
-		path: path,
-		contents: contents.substr(0, parensOffset + 1) + insertStr + contents.substr(parensOffset + 1)
-	};
-}
-
-function emitShimmedModule(moduleId: string, myDeps: string[], factory: string, path: string, contents: string): IFile {
-	const strDeps = (myDeps.length > 0 ? '"' + myDeps.join('", "') + '"' : '');
-	const strDefine = 'define("' + moduleId + '", [' + strDeps + '], ' + factory + ');';
-	return {
-		path: path,
-		contents: contents + '\n;\n' + strDefine
-	};
-}
-
-/**
- * Convert a position (line:col) to (offset) in string `str`
- */
-function positionToOffset(str: string, desiredLine: number, desiredCol: number): number {
-	if (desiredLine === 1) {
-		return desiredCol - 1;
-	}
-
-	let line = 1;
-	let lastNewLineOffset = -1;
-
-	do {
-		if (desiredLine === line) {
-			return lastNewLineOffset + 1 + desiredCol - 1;
-		}
-		lastNewLineOffset = str.indexOf('\n', lastNewLineOffset + 1);
-		line++;
-	} while (lastNewLineOffset >= 0);
-
-	return -1;
-}
-
-
-/**
- * Return a set of reachable nodes in `graph` starting from `rootNodes`
- */
-function visit(rootNodes: string[], graph: IGraph): INodeSet {
-	const result: INodeSet = {};
-	const queue = rootNodes;
-
-	rootNodes.forEach((node) => {
-		result[node] = true;
-	});
-
-	while (queue.length > 0) {
-		const el = queue.shift();
-		const myEdges = graph[el!] || [];
-		myEdges.forEach((toNode) => {
-			if (!result[toNode]) {
-				result[toNode] = true;
-				queue.push(toNode);
-			}
-		});
-	}
-
-	return result;
-}
-
-/**
- * Perform a topological sort on `graph`
- */
-function topologicalSort(graph: IGraph): string[] {
-
-	const allNodes: INodeSet = {},
-		outgoingEdgeCount: { [node: string]: number; } = {},
-		inverseEdges: IGraph = {};
-
-	Object.keys(graph).forEach((fromNode: string) => {
-		allNodes[fromNode] = true;
-		outgoingEdgeCount[fromNode] = graph[fromNode].length;
-
-		graph[fromNode].forEach((toNode) => {
-			allNodes[toNode] = true;
-			outgoingEdgeCount[toNode] = outgoingEdgeCount[toNode] || 0;
-
-			inverseEdges[toNode] = inverseEdges[toNode] || [];
-			inverseEdges[toNode].push(fromNode);
-		});
-	});
-
-	// https://en.wikipedia.org/wiki/Topological_sorting
-	const S: string[] = [],
-		L: string[] = [];
-
-	Object.keys(allNodes).forEach((node: string) => {
-		if (outgoingEdgeCount[node] === 0) {
-			delete outgoingEdgeCount[node];
-			S.push(node);
-		}
-	});
-
-	while (S.length > 0) {
-		// Ensure the exact same order all the time with the same inputs
-		S.sort();
-
-		const n: string = S.shift()!;
-		L.push(n);
-
-		const myInverseEdges = inverseEdges[n] || [];
-		myInverseEdges.forEach((m: string) => {
-			outgoingEdgeCount[m]--;
-			if (outgoingEdgeCount[m] === 0) {
-				delete outgoingEdgeCount[m];
-				S.push(m);
-			}
-		});
-	}
-
-	if (Object.keys(outgoingEdgeCount).length > 0) {
-		throw new Error('Cannot do topological sort on cyclic graph, remaining nodes: ' + Object.keys(outgoingEdgeCount));
-	}
-
-	return L;
-}
diff --git a/lib/vscode/build/lib/compilation.js b/lib/vscode/build/lib/compilation.js
deleted file mode 100644
index 6fecf3f9ae5e..000000000000
--- a/lib/vscode/build/lib/compilation.js
+++ /dev/null
@@ -1,174 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-'use strict';
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.watchTask = exports.compileTask = void 0;
-const es = require("event-stream");
-const fs = require("fs");
-const gulp = require("gulp");
-const path = require("path");
-const monacodts = require("./monaco-api");
-const nls = require("./nls");
-const reporter_1 = require("./reporter");
-const util = require("./util");
-const fancyLog = require("fancy-log");
-const ansiColors = require("ansi-colors");
-const os = require("os");
-const watch = require('./watch');
-const reporter = reporter_1.createReporter();
-function getTypeScriptCompilerOptions(src) {
-    const rootDir = path.join(__dirname, `../../${src}`);
-    let options = {};
-    options.verbose = false;
-    options.sourceMap = true;
-    if (process.env['VSCODE_NO_SOURCEMAP']) { // To be used by developers in a hurry
-        options.sourceMap = false;
-    }
-    options.rootDir = rootDir;
-    options.baseUrl = rootDir;
-    options.sourceRoot = util.toFileUri(rootDir);
-    options.newLine = /\r\n/.test(fs.readFileSync(__filename, 'utf8')) ? 0 : 1;
-    return options;
-}
-function createCompile(src, build, emitError) {
-    const tsb = require('gulp-tsb');
-    const sourcemaps = require('gulp-sourcemaps');
-    const projectPath = path.join(__dirname, '../../', src, 'tsconfig.json');
-    const overrideOptions = Object.assign(Object.assign({}, getTypeScriptCompilerOptions(src)), { inlineSources: Boolean(build) });
-    const compilation = tsb.create(projectPath, overrideOptions, false, err => reporter(err));
-    function pipeline(token) {
-        const bom = require('gulp-bom');
-        const utf8Filter = util.filter(data => /(\/|\\)test(\/|\\).*utf8/.test(data.path));
-        const tsFilter = util.filter(data => /\.ts$/.test(data.path));
-        const noDeclarationsFilter = util.filter(data => !(/\.d\.ts$/.test(data.path)));
-        const input = es.through();
-        const output = input
-            .pipe(utf8Filter)
-            .pipe(bom()) // this is required to preserve BOM in test files that loose it otherwise
-            .pipe(utf8Filter.restore)
-            .pipe(tsFilter)
-            .pipe(util.loadSourcemaps())
-            .pipe(compilation(token))
-            .pipe(noDeclarationsFilter)
-            .pipe(build ? nls.nls() : es.through())
-            .pipe(noDeclarationsFilter.restore)
-            .pipe(sourcemaps.write('.', {
-            addComment: false,
-            includeContent: !!build,
-            sourceRoot: overrideOptions.sourceRoot
-        }))
-            .pipe(tsFilter.restore)
-            .pipe(reporter.end(!!emitError));
-        return es.duplex(input, output);
-    }
-    pipeline.tsProjectSrc = () => {
-        return compilation.src({ base: src });
-    };
-    return pipeline;
-}
-function compileTask(src, out, build) {
-    return function () {
-        if (os.totalmem() < 4000000000) {
-            throw new Error('compilation requires 4GB of RAM');
-        }
-        const compile = createCompile(src, build, true);
-        const srcPipe = gulp.src(`${src}/**`, { base: `${src}` });
-        let generator = new MonacoGenerator(false);
-        if (src === 'src') {
-            generator.execute();
-        }
-        return srcPipe
-            .pipe(generator.stream)
-            .pipe(compile())
-            .pipe(gulp.dest(out));
-    };
-}
-exports.compileTask = compileTask;
-function watchTask(out, build) {
-    return function () {
-        const compile = createCompile('src', build);
-        const src = gulp.src('src/**', { base: 'src' });
-        const watchSrc = watch('src/**', { base: 'src', readDelay: 200 });
-        let generator = new MonacoGenerator(true);
-        generator.execute();
-        return watchSrc
-            .pipe(generator.stream)
-            .pipe(util.incremental(compile, src, true))
-            .pipe(gulp.dest(out));
-    };
-}
-exports.watchTask = watchTask;
-const REPO_SRC_FOLDER = path.join(__dirname, '../../src');
-class MonacoGenerator {
-    constructor(isWatch) {
-        this._executeSoonTimer = null;
-        this._isWatch = isWatch;
-        this.stream = es.through();
-        this._watchedFiles = {};
-        let onWillReadFile = (moduleId, filePath) => {
-            if (!this._isWatch) {
-                return;
-            }
-            if (this._watchedFiles[filePath]) {
-                return;
-            }
-            this._watchedFiles[filePath] = true;
-            fs.watchFile(filePath, () => {
-                this._declarationResolver.invalidateCache(moduleId);
-                this._executeSoon();
-            });
-        };
-        this._fsProvider = new class extends monacodts.FSProvider {
-            readFileSync(moduleId, filePath) {
-                onWillReadFile(moduleId, filePath);
-                return super.readFileSync(moduleId, filePath);
-            }
-        };
-        this._declarationResolver = new monacodts.DeclarationResolver(this._fsProvider);
-        if (this._isWatch) {
-            fs.watchFile(monacodts.RECIPE_PATH, () => {
-                this._executeSoon();
-            });
-        }
-    }
-    _executeSoon() {
-        if (this._executeSoonTimer !== null) {
-            clearTimeout(this._executeSoonTimer);
-            this._executeSoonTimer = null;
-        }
-        this._executeSoonTimer = setTimeout(() => {
-            this._executeSoonTimer = null;
-            this.execute();
-        }, 20);
-    }
-    _run() {
-        let r = monacodts.run3(this._declarationResolver);
-        if (!r && !this._isWatch) {
-            // The build must always be able to generate the monaco.d.ts
-            throw new Error(`monaco.d.ts generation error - Cannot continue`);
-        }
-        return r;
-    }
-    _log(message, ...rest) {
-        fancyLog(ansiColors.cyan('[monaco.d.ts]'), message, ...rest);
-    }
-    execute() {
-        const startTime = Date.now();
-        const result = this._run();
-        if (!result) {
-            // nothing really changed
-            return;
-        }
-        if (result.isTheSame) {
-            return;
-        }
-        fs.writeFileSync(result.filePath, result.content);
-        fs.writeFileSync(path.join(REPO_SRC_FOLDER, 'vs/editor/common/standalone/standaloneEnums.ts'), result.enums);
-        this._log(`monaco.d.ts is changed - total time took ${Date.now() - startTime} ms`);
-        if (!this._isWatch) {
-            this.stream.emit('error', 'monaco.d.ts is no longer up to date. Please run gulp watch and commit the new file.');
-        }
-    }
-}
diff --git a/lib/vscode/build/lib/compilation.ts b/lib/vscode/build/lib/compilation.ts
deleted file mode 100644
index 62fbea67b24f..000000000000
--- a/lib/vscode/build/lib/compilation.ts
+++ /dev/null
@@ -1,210 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-'use strict';
-
-import * as es from 'event-stream';
-import * as fs from 'fs';
-import * as gulp from 'gulp';
-import * as path from 'path';
-import * as monacodts from './monaco-api';
-import * as nls from './nls';
-import { createReporter } from './reporter';
-import * as util from './util';
-import * as fancyLog from 'fancy-log';
-import * as ansiColors from 'ansi-colors';
-import * as os from 'os';
-import ts = require('typescript');
-
-const watch = require('./watch');
-
-const reporter = createReporter();
-
-function getTypeScriptCompilerOptions(src: string): ts.CompilerOptions {
-	const rootDir = path.join(__dirname, `../../${src}`);
-	let options: ts.CompilerOptions = {};
-	options.verbose = false;
-	options.sourceMap = true;
-	if (process.env['VSCODE_NO_SOURCEMAP']) { // To be used by developers in a hurry
-		options.sourceMap = false;
-	}
-	options.rootDir = rootDir;
-	options.baseUrl = rootDir;
-	options.sourceRoot = util.toFileUri(rootDir);
-	options.newLine = /\r\n/.test(fs.readFileSync(__filename, 'utf8')) ? 0 : 1;
-	return options;
-}
-
-function createCompile(src: string, build: boolean, emitError?: boolean) {
-	const tsb = require('gulp-tsb') as typeof import('gulp-tsb');
-	const sourcemaps = require('gulp-sourcemaps') as typeof import('gulp-sourcemaps');
-
-
-	const projectPath = path.join(__dirname, '../../', src, 'tsconfig.json');
-	const overrideOptions = { ...getTypeScriptCompilerOptions(src), inlineSources: Boolean(build) };
-
-	const compilation = tsb.create(projectPath, overrideOptions, false, err => reporter(err));
-
-	function pipeline(token?: util.ICancellationToken) {
-		const bom = require('gulp-bom') as typeof import('gulp-bom');
-
-		const utf8Filter = util.filter(data => /(\/|\\)test(\/|\\).*utf8/.test(data.path));
-		const tsFilter = util.filter(data => /\.ts$/.test(data.path));
-		const noDeclarationsFilter = util.filter(data => !(/\.d\.ts$/.test(data.path)));
-
-		const input = es.through();
-		const output = input
-			.pipe(utf8Filter)
-			.pipe(bom()) // this is required to preserve BOM in test files that loose it otherwise
-			.pipe(utf8Filter.restore)
-			.pipe(tsFilter)
-			.pipe(util.loadSourcemaps())
-			.pipe(compilation(token))
-			.pipe(noDeclarationsFilter)
-			.pipe(build ? nls.nls() : es.through())
-			.pipe(noDeclarationsFilter.restore)
-			.pipe(sourcemaps.write('.', {
-				addComment: false,
-				includeContent: !!build,
-				sourceRoot: overrideOptions.sourceRoot
-			}))
-			.pipe(tsFilter.restore)
-			.pipe(reporter.end(!!emitError));
-
-		return es.duplex(input, output);
-	}
-	pipeline.tsProjectSrc = () => {
-		return compilation.src({ base: src });
-	};
-	return pipeline;
-}
-
-export function compileTask(src: string, out: string, build: boolean): () => NodeJS.ReadWriteStream {
-
-	return function () {
-
-		if (os.totalmem() < 4_000_000_000) {
-			throw new Error('compilation requires 4GB of RAM');
-		}
-
-		const compile = createCompile(src, build, true);
-		const srcPipe = gulp.src(`${src}/**`, { base: `${src}` });
-		let generator = new MonacoGenerator(false);
-		if (src === 'src') {
-			generator.execute();
-		}
-
-		return srcPipe
-			.pipe(generator.stream)
-			.pipe(compile())
-			.pipe(gulp.dest(out));
-	};
-}
-
-export function watchTask(out: string, build: boolean): () => NodeJS.ReadWriteStream {
-
-	return function () {
-		const compile = createCompile('src', build);
-
-		const src = gulp.src('src/**', { base: 'src' });
-		const watchSrc = watch('src/**', { base: 'src', readDelay: 200 });
-
-		let generator = new MonacoGenerator(true);
-		generator.execute();
-
-		return watchSrc
-			.pipe(generator.stream)
-			.pipe(util.incremental(compile, src, true))
-			.pipe(gulp.dest(out));
-	};
-}
-
-const REPO_SRC_FOLDER = path.join(__dirname, '../../src');
-
-class MonacoGenerator {
-	private readonly _isWatch: boolean;
-	public readonly stream: NodeJS.ReadWriteStream;
-
-	private readonly _watchedFiles: { [filePath: string]: boolean; };
-	private readonly _fsProvider: monacodts.FSProvider;
-	private readonly _declarationResolver: monacodts.DeclarationResolver;
-
-	constructor(isWatch: boolean) {
-		this._isWatch = isWatch;
-		this.stream = es.through();
-		this._watchedFiles = {};
-		let onWillReadFile = (moduleId: string, filePath: string) => {
-			if (!this._isWatch) {
-				return;
-			}
-			if (this._watchedFiles[filePath]) {
-				return;
-			}
-			this._watchedFiles[filePath] = true;
-
-			fs.watchFile(filePath, () => {
-				this._declarationResolver.invalidateCache(moduleId);
-				this._executeSoon();
-			});
-		};
-		this._fsProvider = new class extends monacodts.FSProvider {
-			public readFileSync(moduleId: string, filePath: string): Buffer {
-				onWillReadFile(moduleId, filePath);
-				return super.readFileSync(moduleId, filePath);
-			}
-		};
-		this._declarationResolver = new monacodts.DeclarationResolver(this._fsProvider);
-
-		if (this._isWatch) {
-			fs.watchFile(monacodts.RECIPE_PATH, () => {
-				this._executeSoon();
-			});
-		}
-	}
-
-	private _executeSoonTimer: NodeJS.Timer | null = null;
-	private _executeSoon(): void {
-		if (this._executeSoonTimer !== null) {
-			clearTimeout(this._executeSoonTimer);
-			this._executeSoonTimer = null;
-		}
-		this._executeSoonTimer = setTimeout(() => {
-			this._executeSoonTimer = null;
-			this.execute();
-		}, 20);
-	}
-
-	private _run(): monacodts.IMonacoDeclarationResult | null {
-		let r = monacodts.run3(this._declarationResolver);
-		if (!r && !this._isWatch) {
-			// The build must always be able to generate the monaco.d.ts
-			throw new Error(`monaco.d.ts generation error - Cannot continue`);
-		}
-		return r;
-	}
-
-	private _log(message: any, ...rest: any[]): void {
-		fancyLog(ansiColors.cyan('[monaco.d.ts]'), message, ...rest);
-	}
-
-	public execute(): void {
-		const startTime = Date.now();
-		const result = this._run();
-		if (!result) {
-			// nothing really changed
-			return;
-		}
-		if (result.isTheSame) {
-			return;
-		}
-
-		fs.writeFileSync(result.filePath, result.content);
-		fs.writeFileSync(path.join(REPO_SRC_FOLDER, 'vs/editor/common/standalone/standaloneEnums.ts'), result.enums);
-		this._log(`monaco.d.ts is changed - total time took ${Date.now() - startTime} ms`);
-		if (!this._isWatch) {
-			this.stream.emit('error', 'monaco.d.ts is no longer up to date. Please run gulp watch and commit the new file.');
-		}
-	}
-}
diff --git a/lib/vscode/build/lib/dependencies.js b/lib/vscode/build/lib/dependencies.js
deleted file mode 100644
index b6a399267b41..000000000000
--- a/lib/vscode/build/lib/dependencies.js
+++ /dev/null
@@ -1,60 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-'use strict';
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.getProductionDependencies = void 0;
-const path = require("path");
-const cp = require("child_process");
-const _ = require("underscore");
-const parseSemver = require('parse-semver');
-function asYarnDependency(prefix, tree) {
-    let parseResult;
-    try {
-        parseResult = parseSemver(tree.name);
-    }
-    catch (err) {
-        err.message += `: ${tree.name}`;
-        console.warn(`Could not parse semver: ${tree.name}`);
-        return null;
-    }
-    // not an actual dependency in disk
-    if (parseResult.version !== parseResult.range) {
-        return null;
-    }
-    const name = parseResult.name;
-    const version = parseResult.version;
-    const dependencyPath = path.join(prefix, name);
-    const children = [];
-    for (const child of (tree.children || [])) {
-        const dep = asYarnDependency(path.join(prefix, name, 'node_modules'), child);
-        if (dep) {
-            children.push(dep);
-        }
-    }
-    return { name, version, path: dependencyPath, children };
-}
-function getYarnProductionDependencies(cwd) {
-    const raw = cp.execSync('yarn list --json', { cwd, encoding: 'utf8', env: Object.assign(Object.assign({}, process.env), { NODE_ENV: 'production' }), stdio: [null, null, 'inherit'] });
-    const match = /^{"type":"tree".*$/m.exec(raw);
-    if (!match || match.length !== 1) {
-        throw new Error('Could not parse result of `yarn list --json`');
-    }
-    const trees = JSON.parse(match[0]).data.trees;
-    return trees
-        .map(tree => asYarnDependency(path.join(cwd, 'node_modules'), tree))
-        .filter((dep) => !!dep);
-}
-function getProductionDependencies(cwd) {
-    const result = [];
-    const deps = getYarnProductionDependencies(cwd);
-    const flatten = (dep) => { result.push({ name: dep.name, version: dep.version, path: dep.path }); dep.children.forEach(flatten); };
-    deps.forEach(flatten);
-    return _.uniq(result);
-}
-exports.getProductionDependencies = getProductionDependencies;
-if (require.main === module) {
-    const root = path.dirname(path.dirname(__dirname));
-    console.log(JSON.stringify(getProductionDependencies(root), null, '  '));
-}
diff --git a/lib/vscode/build/lib/dependencies.ts b/lib/vscode/build/lib/dependencies.ts
deleted file mode 100644
index 516da11be67c..000000000000
--- a/lib/vscode/build/lib/dependencies.ts
+++ /dev/null
@@ -1,86 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-'use strict';
-
-import * as path from 'path';
-import * as cp from 'child_process';
-import * as _ from 'underscore';
-const parseSemver = require('parse-semver');
-
-interface Tree {
-	readonly name: string;
-	readonly children?: Tree[];
-}
-
-interface FlatDependency {
-	readonly name: string;
-	readonly version: string;
-	readonly path: string;
-}
-
-interface Dependency extends FlatDependency {
-	readonly children: Dependency[];
-}
-
-function asYarnDependency(prefix: string, tree: Tree): Dependency | null {
-	let parseResult;
-
-	try {
-		parseResult = parseSemver(tree.name);
-	} catch (err) {
-		err.message += `: ${tree.name}`;
-		console.warn(`Could not parse semver: ${tree.name}`);
-		return null;
-	}
-
-	// not an actual dependency in disk
-	if (parseResult.version !== parseResult.range) {
-		return null;
-	}
-
-	const name = parseResult.name;
-	const version = parseResult.version;
-	const dependencyPath = path.join(prefix, name);
-	const children = [];
-
-	for (const child of (tree.children || [])) {
-		const dep = asYarnDependency(path.join(prefix, name, 'node_modules'), child);
-
-		if (dep) {
-			children.push(dep);
-		}
-	}
-
-	return { name, version, path: dependencyPath, children };
-}
-
-function getYarnProductionDependencies(cwd: string): Dependency[] {
-	const raw = cp.execSync('yarn list --json', { cwd, encoding: 'utf8', env: { ...process.env, NODE_ENV: 'production' }, stdio: [null, null, 'inherit'] });
-	const match = /^{"type":"tree".*$/m.exec(raw);
-
-	if (!match || match.length !== 1) {
-		throw new Error('Could not parse result of `yarn list --json`');
-	}
-
-	const trees = JSON.parse(match[0]).data.trees as Tree[];
-
-	return trees
-		.map(tree => asYarnDependency(path.join(cwd, 'node_modules'), tree))
-		.filter<Dependency>((dep): dep is Dependency => !!dep);
-}
-
-export function getProductionDependencies(cwd: string): FlatDependency[] {
-	const result: FlatDependency[] = [];
-	const deps = getYarnProductionDependencies(cwd);
-	const flatten = (dep: Dependency) => { result.push({ name: dep.name, version: dep.version, path: dep.path }); dep.children.forEach(flatten); };
-	deps.forEach(flatten);
-	return _.uniq(result);
-}
-
-if (require.main === module) {
-	const root = path.dirname(path.dirname(__dirname));
-	console.log(JSON.stringify(getProductionDependencies(root), null, '  '));
-}
diff --git a/lib/vscode/build/lib/electron.js b/lib/vscode/build/lib/electron.js
deleted file mode 100644
index a7e397e7f86a..000000000000
--- a/lib/vscode/build/lib/electron.js
+++ /dev/null
@@ -1,111 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-'use strict';
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.config = void 0;
-const fs = require("fs");
-const path = require("path");
-const vfs = require("vinyl-fs");
-const filter = require("gulp-filter");
-const _ = require("underscore");
-const util = require("./util");
-const root = path.dirname(path.dirname(__dirname));
-const product = JSON.parse(fs.readFileSync(path.join(root, 'product.json'), 'utf8'));
-const commit = util.getVersion(root);
-const darwinCreditsTemplate = product.darwinCredits && _.template(fs.readFileSync(path.join(root, product.darwinCredits), 'utf8'));
-function darwinBundleDocumentType(extensions, icon) {
-    return {
-        name: product.nameLong + ' document',
-        role: 'Editor',
-        ostypes: ['TEXT', 'utxt', 'TUTX', '****'],
-        extensions: extensions,
-        iconFile: icon
-    };
-}
-exports.config = {
-    version: util.getElectronVersion(),
-    productAppName: product.nameLong,
-    companyName: 'Microsoft Corporation',
-    copyright: 'Copyright (C) 2021 Microsoft. All rights reserved',
-    darwinIcon: 'resources/darwin/code.icns',
-    darwinBundleIdentifier: product.darwinBundleIdentifier,
-    darwinApplicationCategoryType: 'public.app-category.developer-tools',
-    darwinHelpBookFolder: 'VS Code HelpBook',
-    darwinHelpBookName: 'VS Code HelpBook',
-    darwinBundleDocumentTypes: [
-        darwinBundleDocumentType(['bat', 'cmd'], 'resources/darwin/bat.icns'),
-        darwinBundleDocumentType(['bowerrc'], 'resources/darwin/bower.icns'),
-        darwinBundleDocumentType(['c', 'h'], 'resources/darwin/c.icns'),
-        darwinBundleDocumentType(['config', 'editorconfig', 'gitattributes', 'gitconfig', 'gitignore', 'ini'], 'resources/darwin/config.icns'),
-        darwinBundleDocumentType(['cc', 'cpp', 'cxx', 'c++', 'hh', 'hpp', 'hxx', 'h++'], 'resources/darwin/cpp.icns'),
-        darwinBundleDocumentType(['cs', 'csx'], 'resources/darwin/csharp.icns'),
-        darwinBundleDocumentType(['css'], 'resources/darwin/css.icns'),
-        darwinBundleDocumentType(['go'], 'resources/darwin/go.icns'),
-        darwinBundleDocumentType(['asp', 'aspx', 'cshtml', 'htm', 'html', 'jshtm', 'jsp', 'phtml', 'shtml'], 'resources/darwin/html.icns'),
-        darwinBundleDocumentType(['jade'], 'resources/darwin/jade.icns'),
-        darwinBundleDocumentType(['jav', 'java'], 'resources/darwin/java.icns'),
-        darwinBundleDocumentType(['js', 'jscsrc', 'jshintrc', 'mjs', 'cjs'], 'resources/darwin/javascript.icns'),
-        darwinBundleDocumentType(['json'], 'resources/darwin/json.icns'),
-        darwinBundleDocumentType(['less'], 'resources/darwin/less.icns'),
-        darwinBundleDocumentType(['markdown', 'md', 'mdoc', 'mdown', 'mdtext', 'mdtxt', 'mdwn', 'mkd', 'mkdn'], 'resources/darwin/markdown.icns'),
-        darwinBundleDocumentType(['php'], 'resources/darwin/php.icns'),
-        darwinBundleDocumentType(['ps1', 'psd1', 'psm1'], 'resources/darwin/powershell.icns'),
-        darwinBundleDocumentType(['py'], 'resources/darwin/python.icns'),
-        darwinBundleDocumentType(['gemspec', 'rb'], 'resources/darwin/ruby.icns'),
-        darwinBundleDocumentType(['scss'], 'resources/darwin/sass.icns'),
-        darwinBundleDocumentType(['bash', 'bash_login', 'bash_logout', 'bash_profile', 'bashrc', 'profile', 'rhistory', 'rprofile', 'sh', 'zlogin', 'zlogout', 'zprofile', 'zsh', 'zshenv', 'zshrc'], 'resources/darwin/shell.icns'),
-        darwinBundleDocumentType(['sql'], 'resources/darwin/sql.icns'),
-        darwinBundleDocumentType(['ts'], 'resources/darwin/typescript.icns'),
-        darwinBundleDocumentType(['tsx', 'jsx'], 'resources/darwin/react.icns'),
-        darwinBundleDocumentType(['vue'], 'resources/darwin/vue.icns'),
-        darwinBundleDocumentType(['ascx', 'csproj', 'dtd', 'wxi', 'wxl', 'wxs', 'xml', 'xaml'], 'resources/darwin/xml.icns'),
-        darwinBundleDocumentType(['eyaml', 'eyml', 'yaml', 'yml'], 'resources/darwin/yaml.icns'),
-        darwinBundleDocumentType(['clj', 'cljs', 'cljx', 'clojure', 'code-workspace', 'coffee', 'containerfile', 'ctp', 'dockerfile', 'dot', 'edn', 'fs', 'fsi', 'fsscript', 'fsx', 'handlebars', 'hbs', 'lua', 'm', 'makefile', 'ml', 'mli', 'pl', 'pl6', 'pm', 'pm6', 'pod', 'pp', 'properties', 'psgi', 'pug', 'r', 'rs', 'rt', 'svg', 'svgz', 't', 'txt', 'vb', 'xcodeproj', 'xcworkspace'], 'resources/darwin/default.icns')
-    ],
-    darwinBundleURLTypes: [{
-            role: 'Viewer',
-            name: product.nameLong,
-            urlSchemes: [product.urlProtocol]
-        }],
-    darwinForceDarkModeSupport: true,
-    darwinCredits: darwinCreditsTemplate ? Buffer.from(darwinCreditsTemplate({ commit: commit, date: new Date().toISOString() })) : undefined,
-    linuxExecutableName: product.applicationName,
-    winIcon: 'resources/win32/code.ico',
-    token: process.env['VSCODE_MIXIN_PASSWORD'] || process.env['GITHUB_TOKEN'] || undefined,
-    repo: product.electronRepository || undefined
-};
-function getElectron(arch) {
-    return () => {
-        const electron = require('gulp-atom-electron');
-        const json = require('gulp-json-editor');
-        const electronOpts = _.extend({}, exports.config, {
-            platform: process.platform,
-            arch: arch === 'armhf' ? 'arm' : arch,
-            ffmpegChromium: true,
-            keepDefaultApp: true
-        });
-        return vfs.src('package.json')
-            .pipe(json({ name: product.nameShort }))
-            .pipe(electron(electronOpts))
-            .pipe(filter(['**', '!**/app/package.json']))
-            .pipe(vfs.dest('.build/electron'));
-    };
-}
-async function main(arch = process.arch) {
-    const version = util.getElectronVersion();
-    const electronPath = path.join(root, '.build', 'electron');
-    const versionFile = path.join(electronPath, 'version');
-    const isUpToDate = fs.existsSync(versionFile) && fs.readFileSync(versionFile, 'utf8') === `${version}`;
-    if (!isUpToDate) {
-        await util.rimraf(electronPath)();
-        await util.streamToPromise(getElectron(arch)());
-    }
-}
-if (require.main === module) {
-    main(process.argv[2]).catch(err => {
-        console.error(err);
-        process.exit(1);
-    });
-}
diff --git a/lib/vscode/build/lib/electron.ts b/lib/vscode/build/lib/electron.ts
deleted file mode 100644
index 06c8033edb4f..000000000000
--- a/lib/vscode/build/lib/electron.ts
+++ /dev/null
@@ -1,121 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-'use strict';
-
-import * as fs from 'fs';
-import * as path from 'path';
-import * as vfs from 'vinyl-fs';
-import * as filter from 'gulp-filter';
-import * as _ from 'underscore';
-import * as util from './util';
-
-const root = path.dirname(path.dirname(__dirname));
-const product = JSON.parse(fs.readFileSync(path.join(root, 'product.json'), 'utf8'));
-const commit = util.getVersion(root);
-
-const darwinCreditsTemplate = product.darwinCredits && _.template(fs.readFileSync(path.join(root, product.darwinCredits), 'utf8'));
-
-function darwinBundleDocumentType(extensions: string[], icon: string) {
-	return {
-		name: product.nameLong + ' document',
-		role: 'Editor',
-		ostypes: ['TEXT', 'utxt', 'TUTX', '****'],
-		extensions: extensions,
-		iconFile: icon
-	};
-}
-
-export const config = {
-	version: util.getElectronVersion(),
-	productAppName: product.nameLong,
-	companyName: 'Microsoft Corporation',
-	copyright: 'Copyright (C) 2021 Microsoft. All rights reserved',
-	darwinIcon: 'resources/darwin/code.icns',
-	darwinBundleIdentifier: product.darwinBundleIdentifier,
-	darwinApplicationCategoryType: 'public.app-category.developer-tools',
-	darwinHelpBookFolder: 'VS Code HelpBook',
-	darwinHelpBookName: 'VS Code HelpBook',
-	darwinBundleDocumentTypes: [
-		darwinBundleDocumentType(['bat', 'cmd'], 'resources/darwin/bat.icns'),
-		darwinBundleDocumentType(['bowerrc'], 'resources/darwin/bower.icns'),
-		darwinBundleDocumentType(['c', 'h'], 'resources/darwin/c.icns'),
-		darwinBundleDocumentType(['config', 'editorconfig', 'gitattributes', 'gitconfig', 'gitignore', 'ini'], 'resources/darwin/config.icns'),
-		darwinBundleDocumentType(['cc', 'cpp', 'cxx', 'c++', 'hh', 'hpp', 'hxx', 'h++'], 'resources/darwin/cpp.icns'),
-		darwinBundleDocumentType(['cs', 'csx'], 'resources/darwin/csharp.icns'),
-		darwinBundleDocumentType(['css'], 'resources/darwin/css.icns'),
-		darwinBundleDocumentType(['go'], 'resources/darwin/go.icns'),
-		darwinBundleDocumentType(['asp', 'aspx', 'cshtml', 'htm', 'html', 'jshtm', 'jsp', 'phtml', 'shtml'], 'resources/darwin/html.icns'),
-		darwinBundleDocumentType(['jade'], 'resources/darwin/jade.icns'),
-		darwinBundleDocumentType(['jav', 'java'], 'resources/darwin/java.icns'),
-		darwinBundleDocumentType(['js', 'jscsrc', 'jshintrc', 'mjs', 'cjs'], 'resources/darwin/javascript.icns'),
-		darwinBundleDocumentType(['json'], 'resources/darwin/json.icns'),
-		darwinBundleDocumentType(['less'], 'resources/darwin/less.icns'),
-		darwinBundleDocumentType(['markdown', 'md', 'mdoc', 'mdown', 'mdtext', 'mdtxt', 'mdwn', 'mkd', 'mkdn'], 'resources/darwin/markdown.icns'),
-		darwinBundleDocumentType(['php'], 'resources/darwin/php.icns'),
-		darwinBundleDocumentType(['ps1', 'psd1', 'psm1'], 'resources/darwin/powershell.icns'),
-		darwinBundleDocumentType(['py'], 'resources/darwin/python.icns'),
-		darwinBundleDocumentType(['gemspec', 'rb'], 'resources/darwin/ruby.icns'),
-		darwinBundleDocumentType(['scss'], 'resources/darwin/sass.icns'),
-		darwinBundleDocumentType(['bash', 'bash_login', 'bash_logout', 'bash_profile', 'bashrc', 'profile', 'rhistory', 'rprofile', 'sh', 'zlogin', 'zlogout', 'zprofile', 'zsh', 'zshenv', 'zshrc'], 'resources/darwin/shell.icns'),
-		darwinBundleDocumentType(['sql'], 'resources/darwin/sql.icns'),
-		darwinBundleDocumentType(['ts'], 'resources/darwin/typescript.icns'),
-		darwinBundleDocumentType(['tsx', 'jsx'], 'resources/darwin/react.icns'),
-		darwinBundleDocumentType(['vue'], 'resources/darwin/vue.icns'),
-		darwinBundleDocumentType(['ascx', 'csproj', 'dtd', 'wxi', 'wxl', 'wxs', 'xml', 'xaml'], 'resources/darwin/xml.icns'),
-		darwinBundleDocumentType(['eyaml', 'eyml', 'yaml', 'yml'], 'resources/darwin/yaml.icns'),
-		darwinBundleDocumentType(['clj', 'cljs', 'cljx', 'clojure', 'code-workspace', 'coffee', 'containerfile', 'ctp', 'dockerfile', 'dot', 'edn', 'fs', 'fsi', 'fsscript', 'fsx', 'handlebars', 'hbs', 'lua', 'm', 'makefile', 'ml', 'mli', 'pl', 'pl6', 'pm', 'pm6', 'pod', 'pp', 'properties', 'psgi', 'pug', 'r', 'rs', 'rt', 'svg', 'svgz', 't', 'txt', 'vb', 'xcodeproj', 'xcworkspace'], 'resources/darwin/default.icns')
-	],
-	darwinBundleURLTypes: [{
-		role: 'Viewer',
-		name: product.nameLong,
-		urlSchemes: [product.urlProtocol]
-	}],
-	darwinForceDarkModeSupport: true,
-	darwinCredits: darwinCreditsTemplate ? Buffer.from(darwinCreditsTemplate({ commit: commit, date: new Date().toISOString() })) : undefined,
-	linuxExecutableName: product.applicationName,
-	winIcon: 'resources/win32/code.ico',
-	token: process.env['VSCODE_MIXIN_PASSWORD'] || process.env['GITHUB_TOKEN'] || undefined,
-	repo: product.electronRepository || undefined
-};
-
-function getElectron(arch: string): () => NodeJS.ReadWriteStream {
-	return () => {
-		const electron = require('gulp-atom-electron');
-		const json = require('gulp-json-editor') as typeof import('gulp-json-editor');
-
-		const electronOpts = _.extend({}, config, {
-			platform: process.platform,
-			arch: arch === 'armhf' ? 'arm' : arch,
-			ffmpegChromium: true,
-			keepDefaultApp: true
-		});
-
-		return vfs.src('package.json')
-			.pipe(json({ name: product.nameShort }))
-			.pipe(electron(electronOpts))
-			.pipe(filter(['**', '!**/app/package.json']))
-			.pipe(vfs.dest('.build/electron'));
-	};
-}
-
-async function main(arch = process.arch): Promise<void> {
-	const version = util.getElectronVersion();
-	const electronPath = path.join(root, '.build', 'electron');
-	const versionFile = path.join(electronPath, 'version');
-	const isUpToDate = fs.existsSync(versionFile) && fs.readFileSync(versionFile, 'utf8') === `${version}`;
-
-	if (!isUpToDate) {
-		await util.rimraf(electronPath)();
-		await util.streamToPromise(getElectron(arch)());
-	}
-}
-
-if (require.main === module) {
-	main(process.argv[2]).catch(err => {
-		console.error(err);
-		process.exit(1);
-	});
-}
diff --git a/lib/vscode/build/lib/eslint/code-import-patterns.js b/lib/vscode/build/lib/eslint/code-import-patterns.js
deleted file mode 100644
index 0d508d1d00e3..000000000000
--- a/lib/vscode/build/lib/eslint/code-import-patterns.js
+++ /dev/null
@@ -1,59 +0,0 @@
-"use strict";
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-const path_1 = require("path");
-const minimatch = require("minimatch");
-const utils_1 = require("./utils");
-module.exports = new class {
-    constructor() {
-        this.meta = {
-            messages: {
-                badImport: 'Imports violates \'{{restrictions}}\' restrictions. See https://github.com/microsoft/vscode/wiki/Source-Code-Organization'
-            },
-            docs: {
-                url: 'https://github.com/microsoft/vscode/wiki/Source-Code-Organization'
-            }
-        };
-    }
-    create(context) {
-        const configs = context.options;
-        for (const config of configs) {
-            if (minimatch(context.getFilename(), config.target)) {
-                return utils_1.createImportRuleListener((node, value) => this._checkImport(context, config, node, value));
-            }
-        }
-        return {};
-    }
-    _checkImport(context, config, node, path) {
-        // resolve relative paths
-        if (path[0] === '.') {
-            path = path_1.join(context.getFilename(), path);
-        }
-        let restrictions;
-        if (typeof config.restrictions === 'string') {
-            restrictions = [config.restrictions];
-        }
-        else {
-            restrictions = config.restrictions;
-        }
-        let matched = false;
-        for (const pattern of restrictions) {
-            if (minimatch(path, pattern)) {
-                matched = true;
-                break;
-            }
-        }
-        if (!matched) {
-            // None of the restrictions matched
-            context.report({
-                loc: node.loc,
-                messageId: 'badImport',
-                data: {
-                    restrictions: restrictions.join(' or ')
-                }
-            });
-        }
-    }
-};
diff --git a/lib/vscode/build/lib/eslint/code-import-patterns.ts b/lib/vscode/build/lib/eslint/code-import-patterns.ts
deleted file mode 100644
index c3daadbf59a0..000000000000
--- a/lib/vscode/build/lib/eslint/code-import-patterns.ts
+++ /dev/null
@@ -1,75 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-import * as eslint from 'eslint';
-import { TSESTree } from '@typescript-eslint/experimental-utils';
-import { join } from 'path';
-import * as minimatch from 'minimatch';
-import { createImportRuleListener } from './utils';
-
-interface ImportPatternsConfig {
-	target: string;
-	restrictions: string | string[];
-}
-
-export = new class implements eslint.Rule.RuleModule {
-
-	readonly meta: eslint.Rule.RuleMetaData = {
-		messages: {
-			badImport: 'Imports violates \'{{restrictions}}\' restrictions. See https://github.com/microsoft/vscode/wiki/Source-Code-Organization'
-		},
-		docs: {
-			url: 'https://github.com/microsoft/vscode/wiki/Source-Code-Organization'
-		}
-	};
-
-	create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
-
-		const configs = <ImportPatternsConfig[]>context.options;
-
-		for (const config of configs) {
-			if (minimatch(context.getFilename(), config.target)) {
-				return createImportRuleListener((node, value) => this._checkImport(context, config, node, value));
-			}
-		}
-
-		return {};
-	}
-
-	private _checkImport(context: eslint.Rule.RuleContext, config: ImportPatternsConfig, node: TSESTree.Node, path: string) {
-
-		// resolve relative paths
-		if (path[0] === '.') {
-			path = join(context.getFilename(), path);
-		}
-
-		let restrictions: string[];
-		if (typeof config.restrictions === 'string') {
-			restrictions = [config.restrictions];
-		} else {
-			restrictions = config.restrictions;
-		}
-
-		let matched = false;
-		for (const pattern of restrictions) {
-			if (minimatch(path, pattern)) {
-				matched = true;
-				break;
-			}
-		}
-
-		if (!matched) {
-			// None of the restrictions matched
-			context.report({
-				loc: node.loc,
-				messageId: 'badImport',
-				data: {
-					restrictions: restrictions.join(' or ')
-				}
-			});
-		}
-	}
-};
-
diff --git a/lib/vscode/build/lib/eslint/code-layering.js b/lib/vscode/build/lib/eslint/code-layering.js
deleted file mode 100644
index db591f789c72..000000000000
--- a/lib/vscode/build/lib/eslint/code-layering.js
+++ /dev/null
@@ -1,68 +0,0 @@
-"use strict";
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-const path_1 = require("path");
-const utils_1 = require("./utils");
-module.exports = new class {
-    constructor() {
-        this.meta = {
-            messages: {
-                layerbreaker: 'Bad layering. You are not allowed to access {{from}} from here, allowed layers are: [{{allowed}}]'
-            },
-            docs: {
-                url: 'https://github.com/microsoft/vscode/wiki/Source-Code-Organization'
-            }
-        };
-    }
-    create(context) {
-        const fileDirname = path_1.dirname(context.getFilename());
-        const parts = fileDirname.split(/\\|\//);
-        const ruleArgs = context.options[0];
-        let config;
-        for (let i = parts.length - 1; i >= 0; i--) {
-            if (ruleArgs[parts[i]]) {
-                config = {
-                    allowed: new Set(ruleArgs[parts[i]]).add(parts[i]),
-                    disallowed: new Set()
-                };
-                Object.keys(ruleArgs).forEach(key => {
-                    if (!config.allowed.has(key)) {
-                        config.disallowed.add(key);
-                    }
-                });
-                break;
-            }
-        }
-        if (!config) {
-            // nothing
-            return {};
-        }
-        return utils_1.createImportRuleListener((node, path) => {
-            if (path[0] === '.') {
-                path = path_1.join(path_1.dirname(context.getFilename()), path);
-            }
-            const parts = path_1.dirname(path).split(/\\|\//);
-            for (let i = parts.length - 1; i >= 0; i--) {
-                const part = parts[i];
-                if (config.allowed.has(part)) {
-                    // GOOD - same layer
-                    break;
-                }
-                if (config.disallowed.has(part)) {
-                    // BAD - wrong layer
-                    context.report({
-                        loc: node.loc,
-                        messageId: 'layerbreaker',
-                        data: {
-                            from: part,
-                            allowed: [...config.allowed.keys()].join(', ')
-                        }
-                    });
-                    break;
-                }
-            }
-        });
-    }
-};
diff --git a/lib/vscode/build/lib/eslint/code-layering.ts b/lib/vscode/build/lib/eslint/code-layering.ts
deleted file mode 100644
index cca72eeec71e..000000000000
--- a/lib/vscode/build/lib/eslint/code-layering.ts
+++ /dev/null
@@ -1,83 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-import * as eslint from 'eslint';
-import { join, dirname } from 'path';
-import { createImportRuleListener } from './utils';
-
-type Config = {
-	allowed: Set<string>;
-	disallowed: Set<string>;
-};
-
-export = new class implements eslint.Rule.RuleModule {
-
-	readonly meta: eslint.Rule.RuleMetaData = {
-		messages: {
-			layerbreaker: 'Bad layering. You are not allowed to access {{from}} from here, allowed layers are: [{{allowed}}]'
-		},
-		docs: {
-			url: 'https://github.com/microsoft/vscode/wiki/Source-Code-Organization'
-		}
-	};
-
-	create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
-
-		const fileDirname = dirname(context.getFilename());
-		const parts = fileDirname.split(/\\|\//);
-		const ruleArgs = <Record<string, string[]>>context.options[0];
-
-		let config: Config | undefined;
-		for (let i = parts.length - 1; i >= 0; i--) {
-			if (ruleArgs[parts[i]]) {
-				config = {
-					allowed: new Set(ruleArgs[parts[i]]).add(parts[i]),
-					disallowed: new Set()
-				};
-				Object.keys(ruleArgs).forEach(key => {
-					if (!config!.allowed.has(key)) {
-						config!.disallowed.add(key);
-					}
-				});
-				break;
-			}
-		}
-
-		if (!config) {
-			// nothing
-			return {};
-		}
-
-		return createImportRuleListener((node, path) => {
-			if (path[0] === '.') {
-				path = join(dirname(context.getFilename()), path);
-			}
-
-			const parts = dirname(path).split(/\\|\//);
-			for (let i = parts.length - 1; i >= 0; i--) {
-				const part = parts[i];
-
-				if (config!.allowed.has(part)) {
-					// GOOD - same layer
-					break;
-				}
-
-				if (config!.disallowed.has(part)) {
-					// BAD - wrong layer
-					context.report({
-						loc: node.loc,
-						messageId: 'layerbreaker',
-						data: {
-							from: part,
-							allowed: [...config!.allowed.keys()].join(', ')
-						}
-					});
-					break;
-				}
-			}
-		});
-	}
-};
-
diff --git a/lib/vscode/build/lib/eslint/code-no-nls-in-standalone-editor.js b/lib/vscode/build/lib/eslint/code-no-nls-in-standalone-editor.js
deleted file mode 100644
index d8955507bedc..000000000000
--- a/lib/vscode/build/lib/eslint/code-no-nls-in-standalone-editor.js
+++ /dev/null
@@ -1,38 +0,0 @@
-"use strict";
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-const path_1 = require("path");
-const utils_1 = require("./utils");
-module.exports = new class NoNlsInStandaloneEditorRule {
-    constructor() {
-        this.meta = {
-            messages: {
-                noNls: 'Not allowed to import vs/nls in standalone editor modules. Use standaloneStrings.ts'
-            }
-        };
-    }
-    create(context) {
-        const fileName = context.getFilename();
-        if (/vs(\/|\\)editor(\/|\\)standalone(\/|\\)/.test(fileName)
-            || /vs(\/|\\)editor(\/|\\)common(\/|\\)standalone(\/|\\)/.test(fileName)
-            || /vs(\/|\\)editor(\/|\\)editor.api/.test(fileName)
-            || /vs(\/|\\)editor(\/|\\)editor.main/.test(fileName)
-            || /vs(\/|\\)editor(\/|\\)editor.worker/.test(fileName)) {
-            return utils_1.createImportRuleListener((node, path) => {
-                // resolve relative paths
-                if (path[0] === '.') {
-                    path = path_1.join(context.getFilename(), path);
-                }
-                if (/vs(\/|\\)nls/.test(path)) {
-                    context.report({
-                        loc: node.loc,
-                        messageId: 'noNls'
-                    });
-                }
-            });
-        }
-        return {};
-    }
-};
diff --git a/lib/vscode/build/lib/eslint/code-no-nls-in-standalone-editor.ts b/lib/vscode/build/lib/eslint/code-no-nls-in-standalone-editor.ts
deleted file mode 100644
index 90c80dee70c9..000000000000
--- a/lib/vscode/build/lib/eslint/code-no-nls-in-standalone-editor.ts
+++ /dev/null
@@ -1,48 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-import * as eslint from 'eslint';
-import { join } from 'path';
-import { createImportRuleListener } from './utils';
-
-export = new class NoNlsInStandaloneEditorRule implements eslint.Rule.RuleModule {
-
-	readonly meta: eslint.Rule.RuleMetaData = {
-		messages: {
-			noNls: 'Not allowed to import vs/nls in standalone editor modules. Use standaloneStrings.ts'
-		}
-	};
-
-	create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
-
-		const fileName = context.getFilename();
-		if (
-			/vs(\/|\\)editor(\/|\\)standalone(\/|\\)/.test(fileName)
-			|| /vs(\/|\\)editor(\/|\\)common(\/|\\)standalone(\/|\\)/.test(fileName)
-			|| /vs(\/|\\)editor(\/|\\)editor.api/.test(fileName)
-			|| /vs(\/|\\)editor(\/|\\)editor.main/.test(fileName)
-			|| /vs(\/|\\)editor(\/|\\)editor.worker/.test(fileName)
-		) {
-			return createImportRuleListener((node, path) => {
-				// resolve relative paths
-				if (path[0] === '.') {
-					path = join(context.getFilename(), path);
-				}
-
-				if (
-					/vs(\/|\\)nls/.test(path)
-				) {
-					context.report({
-						loc: node.loc,
-						messageId: 'noNls'
-					});
-				}
-			});
-		}
-
-		return {};
-	}
-};
-
diff --git a/lib/vscode/build/lib/eslint/code-no-standalone-editor.js b/lib/vscode/build/lib/eslint/code-no-standalone-editor.js
deleted file mode 100644
index d9d6bb55b872..000000000000
--- a/lib/vscode/build/lib/eslint/code-no-standalone-editor.js
+++ /dev/null
@@ -1,41 +0,0 @@
-"use strict";
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-const path_1 = require("path");
-const utils_1 = require("./utils");
-module.exports = new class NoNlsInStandaloneEditorRule {
-    constructor() {
-        this.meta = {
-            messages: {
-                badImport: 'Not allowed to import standalone editor modules.'
-            },
-            docs: {
-                url: 'https://github.com/microsoft/vscode/wiki/Source-Code-Organization'
-            }
-        };
-    }
-    create(context) {
-        if (/vs(\/|\\)editor/.test(context.getFilename())) {
-            // the vs/editor folder is allowed to use the standalone editor
-            return {};
-        }
-        return utils_1.createImportRuleListener((node, path) => {
-            // resolve relative paths
-            if (path[0] === '.') {
-                path = path_1.join(context.getFilename(), path);
-            }
-            if (/vs(\/|\\)editor(\/|\\)standalone(\/|\\)/.test(path)
-                || /vs(\/|\\)editor(\/|\\)common(\/|\\)standalone(\/|\\)/.test(path)
-                || /vs(\/|\\)editor(\/|\\)editor.api/.test(path)
-                || /vs(\/|\\)editor(\/|\\)editor.main/.test(path)
-                || /vs(\/|\\)editor(\/|\\)editor.worker/.test(path)) {
-                context.report({
-                    loc: node.loc,
-                    messageId: 'badImport'
-                });
-            }
-        });
-    }
-};
diff --git a/lib/vscode/build/lib/eslint/code-no-standalone-editor.ts b/lib/vscode/build/lib/eslint/code-no-standalone-editor.ts
deleted file mode 100644
index 898886d17d20..000000000000
--- a/lib/vscode/build/lib/eslint/code-no-standalone-editor.ts
+++ /dev/null
@@ -1,50 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-import * as eslint from 'eslint';
-import { join } from 'path';
-import { createImportRuleListener } from './utils';
-
-export = new class NoNlsInStandaloneEditorRule implements eslint.Rule.RuleModule {
-
-	readonly meta: eslint.Rule.RuleMetaData = {
-		messages: {
-			badImport: 'Not allowed to import standalone editor modules.'
-		},
-		docs: {
-			url: 'https://github.com/microsoft/vscode/wiki/Source-Code-Organization'
-		}
-	};
-
-	create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
-
-		if (/vs(\/|\\)editor/.test(context.getFilename())) {
-			// the vs/editor folder is allowed to use the standalone editor
-			return {};
-		}
-
-		return createImportRuleListener((node, path) => {
-
-			// resolve relative paths
-			if (path[0] === '.') {
-				path = join(context.getFilename(), path);
-			}
-
-			if (
-				/vs(\/|\\)editor(\/|\\)standalone(\/|\\)/.test(path)
-				|| /vs(\/|\\)editor(\/|\\)common(\/|\\)standalone(\/|\\)/.test(path)
-				|| /vs(\/|\\)editor(\/|\\)editor.api/.test(path)
-				|| /vs(\/|\\)editor(\/|\\)editor.main/.test(path)
-				|| /vs(\/|\\)editor(\/|\\)editor.worker/.test(path)
-			) {
-				context.report({
-					loc: node.loc,
-					messageId: 'badImport'
-				});
-			}
-		});
-	}
-};
-
diff --git a/lib/vscode/build/lib/eslint/code-no-unexternalized-strings.js b/lib/vscode/build/lib/eslint/code-no-unexternalized-strings.js
deleted file mode 100644
index b603f4d8e090..000000000000
--- a/lib/vscode/build/lib/eslint/code-no-unexternalized-strings.js
+++ /dev/null
@@ -1,111 +0,0 @@
-"use strict";
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-var _a;
-const experimental_utils_1 = require("@typescript-eslint/experimental-utils");
-function isStringLiteral(node) {
-    return !!node && node.type === experimental_utils_1.AST_NODE_TYPES.Literal && typeof node.value === 'string';
-}
-function isDoubleQuoted(node) {
-    return node.raw[0] === '"' && node.raw[node.raw.length - 1] === '"';
-}
-module.exports = new (_a = class NoUnexternalizedStrings {
-        constructor() {
-            this.meta = {
-                messages: {
-                    doubleQuoted: 'Only use double-quoted strings for externalized strings.',
-                    badKey: 'The key \'{{key}}\' doesn\'t conform to a valid localize identifier.',
-                    duplicateKey: 'Duplicate key \'{{key}}\' with different message value.',
-                    badMessage: 'Message argument to \'{{message}}\' must be a string literal.'
-                }
-            };
-        }
-        create(context) {
-            const externalizedStringLiterals = new Map();
-            const doubleQuotedStringLiterals = new Set();
-            function collectDoubleQuotedStrings(node) {
-                if (isStringLiteral(node) && isDoubleQuoted(node)) {
-                    doubleQuotedStringLiterals.add(node);
-                }
-            }
-            function visitLocalizeCall(node) {
-                // localize(key, message)
-                const [keyNode, messageNode] = node.arguments;
-                // (1)
-                // extract key so that it can be checked later
-                let key;
-                if (isStringLiteral(keyNode)) {
-                    doubleQuotedStringLiterals.delete(keyNode);
-                    key = keyNode.value;
-                }
-                else if (keyNode.type === experimental_utils_1.AST_NODE_TYPES.ObjectExpression) {
-                    for (let property of keyNode.properties) {
-                        if (property.type === experimental_utils_1.AST_NODE_TYPES.Property && !property.computed) {
-                            if (property.key.type === experimental_utils_1.AST_NODE_TYPES.Identifier && property.key.name === 'key') {
-                                if (isStringLiteral(property.value)) {
-                                    doubleQuotedStringLiterals.delete(property.value);
-                                    key = property.value.value;
-                                    break;
-                                }
-                            }
-                        }
-                    }
-                }
-                if (typeof key === 'string') {
-                    let array = externalizedStringLiterals.get(key);
-                    if (!array) {
-                        array = [];
-                        externalizedStringLiterals.set(key, array);
-                    }
-                    array.push({ call: node, message: messageNode });
-                }
-                // (2)
-                // remove message-argument from doubleQuoted list and make
-                // sure it is a string-literal
-                doubleQuotedStringLiterals.delete(messageNode);
-                if (!isStringLiteral(messageNode)) {
-                    context.report({
-                        loc: messageNode.loc,
-                        messageId: 'badMessage',
-                        data: { message: context.getSourceCode().getText(node) }
-                    });
-                }
-            }
-            function reportBadStringsAndBadKeys() {
-                // (1)
-                // report all strings that are in double quotes
-                for (const node of doubleQuotedStringLiterals) {
-                    context.report({ loc: node.loc, messageId: 'doubleQuoted' });
-                }
-                for (const [key, values] of externalizedStringLiterals) {
-                    // (2)
-                    // report all invalid NLS keys
-                    if (!key.match(NoUnexternalizedStrings._rNlsKeys)) {
-                        for (let value of values) {
-                            context.report({ loc: value.call.loc, messageId: 'badKey', data: { key } });
-                        }
-                    }
-                    // (2)
-                    // report all invalid duplicates (same key, different message)
-                    if (values.length > 1) {
-                        for (let i = 1; i < values.length; i++) {
-                            if (context.getSourceCode().getText(values[i - 1].message) !== context.getSourceCode().getText(values[i].message)) {
-                                context.report({ loc: values[i].call.loc, messageId: 'duplicateKey', data: { key } });
-                            }
-                        }
-                    }
-                }
-            }
-            return {
-                ['Literal']: (node) => collectDoubleQuotedStrings(node),
-                ['ExpressionStatement[directive] Literal:exit']: (node) => doubleQuotedStringLiterals.delete(node),
-                ['CallExpression[callee.type="MemberExpression"][callee.object.name="nls"][callee.property.name="localize"]:exit']: (node) => visitLocalizeCall(node),
-                ['CallExpression[callee.name="localize"][arguments.length>=2]:exit']: (node) => visitLocalizeCall(node),
-                ['Program:exit']: reportBadStringsAndBadKeys,
-            };
-        }
-    },
-    _a._rNlsKeys = /^[_a-zA-Z0-9][ .\-_a-zA-Z0-9]*$/,
-    _a);
diff --git a/lib/vscode/build/lib/eslint/code-no-unexternalized-strings.ts b/lib/vscode/build/lib/eslint/code-no-unexternalized-strings.ts
deleted file mode 100644
index 8d9e142bb7f3..000000000000
--- a/lib/vscode/build/lib/eslint/code-no-unexternalized-strings.ts
+++ /dev/null
@@ -1,125 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-import * as eslint from 'eslint';
-import { TSESTree, AST_NODE_TYPES } from '@typescript-eslint/experimental-utils';
-
-function isStringLiteral(node: TSESTree.Node | null | undefined): node is TSESTree.StringLiteral {
-	return !!node && node.type === AST_NODE_TYPES.Literal && typeof node.value === 'string';
-}
-
-function isDoubleQuoted(node: TSESTree.StringLiteral): boolean {
-	return node.raw[0] === '"' && node.raw[node.raw.length - 1] === '"';
-}
-
-export = new class NoUnexternalizedStrings implements eslint.Rule.RuleModule {
-
-	private static _rNlsKeys = /^[_a-zA-Z0-9][ .\-_a-zA-Z0-9]*$/;
-
-	readonly meta: eslint.Rule.RuleMetaData = {
-		messages: {
-			doubleQuoted: 'Only use double-quoted strings for externalized strings.',
-			badKey: 'The key \'{{key}}\' doesn\'t conform to a valid localize identifier.',
-			duplicateKey: 'Duplicate key \'{{key}}\' with different message value.',
-			badMessage: 'Message argument to \'{{message}}\' must be a string literal.'
-		}
-	};
-
-	create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
-
-		const externalizedStringLiterals = new Map<string, { call: TSESTree.CallExpression, message: TSESTree.Node }[]>();
-		const doubleQuotedStringLiterals = new Set<TSESTree.Node>();
-
-		function collectDoubleQuotedStrings(node: TSESTree.Literal) {
-			if (isStringLiteral(node) && isDoubleQuoted(node)) {
-				doubleQuotedStringLiterals.add(node);
-			}
-		}
-
-		function visitLocalizeCall(node: TSESTree.CallExpression) {
-
-			// localize(key, message)
-			const [keyNode, messageNode] = (<TSESTree.CallExpression>node).arguments;
-
-			// (1)
-			// extract key so that it can be checked later
-			let key: string | undefined;
-			if (isStringLiteral(keyNode)) {
-				doubleQuotedStringLiterals.delete(keyNode);
-				key = keyNode.value;
-
-			} else if (keyNode.type === AST_NODE_TYPES.ObjectExpression) {
-				for (let property of keyNode.properties) {
-					if (property.type === AST_NODE_TYPES.Property && !property.computed) {
-						if (property.key.type === AST_NODE_TYPES.Identifier && property.key.name === 'key') {
-							if (isStringLiteral(property.value)) {
-								doubleQuotedStringLiterals.delete(property.value);
-								key = property.value.value;
-								break;
-							}
-						}
-					}
-				}
-			}
-			if (typeof key === 'string') {
-				let array = externalizedStringLiterals.get(key);
-				if (!array) {
-					array = [];
-					externalizedStringLiterals.set(key, array);
-				}
-				array.push({ call: node, message: messageNode });
-			}
-
-			// (2)
-			// remove message-argument from doubleQuoted list and make
-			// sure it is a string-literal
-			doubleQuotedStringLiterals.delete(messageNode);
-			if (!isStringLiteral(messageNode)) {
-				context.report({
-					loc: messageNode.loc,
-					messageId: 'badMessage',
-					data: { message: context.getSourceCode().getText(<any>node) }
-				});
-			}
-		}
-
-		function reportBadStringsAndBadKeys() {
-			// (1)
-			// report all strings that are in double quotes
-			for (const node of doubleQuotedStringLiterals) {
-				context.report({ loc: node.loc, messageId: 'doubleQuoted' });
-			}
-
-			for (const [key, values] of externalizedStringLiterals) {
-
-				// (2)
-				// report all invalid NLS keys
-				if (!key.match(NoUnexternalizedStrings._rNlsKeys)) {
-					for (let value of values) {
-						context.report({ loc: value.call.loc, messageId: 'badKey', data: { key } });
-					}
-				}
-
-				// (2)
-				// report all invalid duplicates (same key, different message)
-				if (values.length > 1) {
-					for (let i = 1; i < values.length; i++) {
-						if (context.getSourceCode().getText(<any>values[i - 1].message) !== context.getSourceCode().getText(<any>values[i].message)) {
-							context.report({ loc: values[i].call.loc, messageId: 'duplicateKey', data: { key } });
-						}
-					}
-				}
-			}
-		}
-
-		return {
-			['Literal']: (node: any) => collectDoubleQuotedStrings(node),
-			['ExpressionStatement[directive] Literal:exit']: (node: any) => doubleQuotedStringLiterals.delete(node),
-			['CallExpression[callee.type="MemberExpression"][callee.object.name="nls"][callee.property.name="localize"]:exit']: (node: any) => visitLocalizeCall(node),
-			['CallExpression[callee.name="localize"][arguments.length>=2]:exit']: (node: any) => visitLocalizeCall(node),
-			['Program:exit']: reportBadStringsAndBadKeys,
-		};
-	}
-};
diff --git a/lib/vscode/build/lib/eslint/code-no-unused-expressions.js b/lib/vscode/build/lib/eslint/code-no-unused-expressions.js
deleted file mode 100644
index d8ee6ca46f3e..000000000000
--- a/lib/vscode/build/lib/eslint/code-no-unused-expressions.js
+++ /dev/null
@@ -1,122 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-// FORKED FROM https://github.com/eslint/eslint/blob/b23ad0d789a909baf8d7c41a35bc53df932eaf30/lib/rules/no-unused-expressions.js
-// and added support for `OptionalCallExpression`, see https://github.com/facebook/create-react-app/issues/8107 and https://github.com/eslint/eslint/issues/12642
-/**
- * @fileoverview Flag expressions in statement position that do not side effect
- * @author Michael Ficarra
- */
-'use strict';
-Object.defineProperty(exports, "__esModule", { value: true });
-//------------------------------------------------------------------------------
-// Rule Definition
-//------------------------------------------------------------------------------
-module.exports = {
-    meta: {
-        type: 'suggestion',
-        docs: {
-            description: 'disallow unused expressions',
-            category: 'Best Practices',
-            recommended: false,
-            url: 'https://eslint.org/docs/rules/no-unused-expressions'
-        },
-        schema: [
-            {
-                type: 'object',
-                properties: {
-                    allowShortCircuit: {
-                        type: 'boolean',
-                        default: false
-                    },
-                    allowTernary: {
-                        type: 'boolean',
-                        default: false
-                    },
-                    allowTaggedTemplates: {
-                        type: 'boolean',
-                        default: false
-                    }
-                },
-                additionalProperties: false
-            }
-        ]
-    },
-    create(context) {
-        const config = context.options[0] || {}, allowShortCircuit = config.allowShortCircuit || false, allowTernary = config.allowTernary || false, allowTaggedTemplates = config.allowTaggedTemplates || false;
-        // eslint-disable-next-line jsdoc/require-description
-        /**
-         * @param node any node
-         * @returns whether the given node structurally represents a directive
-         */
-        function looksLikeDirective(node) {
-            return node.type === 'ExpressionStatement' &&
-                node.expression.type === 'Literal' && typeof node.expression.value === 'string';
-        }
-        // eslint-disable-next-line jsdoc/require-description
-        /**
-         * @param predicate ([a] -> Boolean) the function used to make the determination
-         * @param list the input list
-         * @returns the leading sequence of members in the given list that pass the given predicate
-         */
-        function takeWhile(predicate, list) {
-            for (let i = 0; i < list.length; ++i) {
-                if (!predicate(list[i])) {
-                    return list.slice(0, i);
-                }
-            }
-            return list.slice();
-        }
-        // eslint-disable-next-line jsdoc/require-description
-        /**
-         * @param node a Program or BlockStatement node
-         * @returns the leading sequence of directive nodes in the given node's body
-         */
-        function directives(node) {
-            return takeWhile(looksLikeDirective, node.body);
-        }
-        // eslint-disable-next-line jsdoc/require-description
-        /**
-         * @param node any node
-         * @param ancestors the given node's ancestors
-         * @returns whether the given node is considered a directive in its current position
-         */
-        function isDirective(node, ancestors) {
-            const parent = ancestors[ancestors.length - 1], grandparent = ancestors[ancestors.length - 2];
-            return (parent.type === 'Program' || parent.type === 'BlockStatement' &&
-                (/Function/u.test(grandparent.type))) &&
-                directives(parent).indexOf(node) >= 0;
-        }
-        /**
-         * Determines whether or not a given node is a valid expression. Recurses on short circuit eval and ternary nodes if enabled by flags.
-         * @param node any node
-         * @returns whether the given node is a valid expression
-         */
-        function isValidExpression(node) {
-            if (allowTernary) {
-                // Recursive check for ternary and logical expressions
-                if (node.type === 'ConditionalExpression') {
-                    return isValidExpression(node.consequent) && isValidExpression(node.alternate);
-                }
-            }
-            if (allowShortCircuit) {
-                if (node.type === 'LogicalExpression') {
-                    return isValidExpression(node.right);
-                }
-            }
-            if (allowTaggedTemplates && node.type === 'TaggedTemplateExpression') {
-                return true;
-            }
-            return /^(?:Assignment|OptionalCall|Call|New|Update|Yield|Await)Expression$/u.test(node.type) ||
-                (node.type === 'UnaryExpression' && ['delete', 'void'].indexOf(node.operator) >= 0);
-        }
-        return {
-            ExpressionStatement(node) {
-                if (!isValidExpression(node.expression) && !isDirective(node, context.getAncestors())) {
-                    context.report({ node: node, message: 'Expected an assignment or function call and instead saw an expression.' });
-                }
-            }
-        };
-    }
-};
diff --git a/lib/vscode/build/lib/eslint/code-no-unused-expressions.ts b/lib/vscode/build/lib/eslint/code-no-unused-expressions.ts
deleted file mode 100644
index d130d670da5c..000000000000
--- a/lib/vscode/build/lib/eslint/code-no-unused-expressions.ts
+++ /dev/null
@@ -1,149 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-// FORKED FROM https://github.com/eslint/eslint/blob/b23ad0d789a909baf8d7c41a35bc53df932eaf30/lib/rules/no-unused-expressions.js
-// and added support for `OptionalCallExpression`, see https://github.com/facebook/create-react-app/issues/8107 and https://github.com/eslint/eslint/issues/12642
-
-/**
- * @fileoverview Flag expressions in statement position that do not side effect
- * @author Michael Ficarra
- */
-
-'use strict';
-
-import * as eslint from 'eslint';
-import { TSESTree } from '@typescript-eslint/experimental-utils';
-import * as ESTree from 'estree';
-
-//------------------------------------------------------------------------------
-// Rule Definition
-//------------------------------------------------------------------------------
-
-module.exports = {
-	meta: {
-		type: 'suggestion',
-
-		docs: {
-			description: 'disallow unused expressions',
-			category: 'Best Practices',
-			recommended: false,
-			url: 'https://eslint.org/docs/rules/no-unused-expressions'
-		},
-
-		schema: [
-			{
-				type: 'object',
-				properties: {
-					allowShortCircuit: {
-						type: 'boolean',
-						default: false
-					},
-					allowTernary: {
-						type: 'boolean',
-						default: false
-					},
-					allowTaggedTemplates: {
-						type: 'boolean',
-						default: false
-					}
-				},
-				additionalProperties: false
-			}
-		]
-	},
-
-	create(context: eslint.Rule.RuleContext) {
-		const config = context.options[0] || {},
-			allowShortCircuit = config.allowShortCircuit || false,
-			allowTernary = config.allowTernary || false,
-			allowTaggedTemplates = config.allowTaggedTemplates || false;
-
-		// eslint-disable-next-line jsdoc/require-description
-		/**
-		 * @param node any node
-		 * @returns whether the given node structurally represents a directive
-		 */
-		function looksLikeDirective(node: TSESTree.Node): boolean {
-			return node.type === 'ExpressionStatement' &&
-				node.expression.type === 'Literal' && typeof node.expression.value === 'string';
-		}
-
-		// eslint-disable-next-line jsdoc/require-description
-		/**
-		 * @param predicate ([a] -> Boolean) the function used to make the determination
-		 * @param list the input list
-		 * @returns the leading sequence of members in the given list that pass the given predicate
-		 */
-		function takeWhile<T>(predicate: (item: T) => boolean, list: T[]): T[] {
-			for (let i = 0; i < list.length; ++i) {
-				if (!predicate(list[i])) {
-					return list.slice(0, i);
-				}
-			}
-			return list.slice();
-		}
-
-		// eslint-disable-next-line jsdoc/require-description
-		/**
-		 * @param node a Program or BlockStatement node
-		 * @returns the leading sequence of directive nodes in the given node's body
-		 */
-		function directives(node: TSESTree.Program | TSESTree.BlockStatement): TSESTree.Node[] {
-			return takeWhile(looksLikeDirective, node.body);
-		}
-
-		// eslint-disable-next-line jsdoc/require-description
-		/**
-		 * @param node any node
-		 * @param ancestors the given node's ancestors
-		 * @returns whether the given node is considered a directive in its current position
-		 */
-		function isDirective(node: TSESTree.Node, ancestors: TSESTree.Node[]): boolean {
-			const parent = ancestors[ancestors.length - 1],
-				grandparent = ancestors[ancestors.length - 2];
-
-			return (parent.type === 'Program' || parent.type === 'BlockStatement' &&
-				(/Function/u.test(grandparent.type))) &&
-				directives(parent).indexOf(node) >= 0;
-		}
-
-		/**
-		 * Determines whether or not a given node is a valid expression. Recurses on short circuit eval and ternary nodes if enabled by flags.
-		 * @param node any node
-		 * @returns whether the given node is a valid expression
-		 */
-		function isValidExpression(node: TSESTree.Node): boolean {
-			if (allowTernary) {
-
-				// Recursive check for ternary and logical expressions
-				if (node.type === 'ConditionalExpression') {
-					return isValidExpression(node.consequent) && isValidExpression(node.alternate);
-				}
-			}
-
-			if (allowShortCircuit) {
-				if (node.type === 'LogicalExpression') {
-					return isValidExpression(node.right);
-				}
-			}
-
-			if (allowTaggedTemplates && node.type === 'TaggedTemplateExpression') {
-				return true;
-			}
-
-			return /^(?:Assignment|OptionalCall|Call|New|Update|Yield|Await)Expression$/u.test(node.type) ||
-				(node.type === 'UnaryExpression' && ['delete', 'void'].indexOf(node.operator) >= 0);
-		}
-
-		return {
-			ExpressionStatement(node: TSESTree.ExpressionStatement) {
-				if (!isValidExpression(node.expression) && !isDirective(node, <TSESTree.Node[]>context.getAncestors())) {
-					context.report({ node: <ESTree.Node>node, message: 'Expected an assignment or function call and instead saw an expression.' });
-				}
-			}
-		};
-
-	}
-};
diff --git a/lib/vscode/build/lib/eslint/code-translation-remind.js b/lib/vscode/build/lib/eslint/code-translation-remind.js
deleted file mode 100644
index a276e7c0028a..000000000000
--- a/lib/vscode/build/lib/eslint/code-translation-remind.js
+++ /dev/null
@@ -1,57 +0,0 @@
-"use strict";
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-var _a;
-const fs_1 = require("fs");
-const utils_1 = require("./utils");
-module.exports = new (_a = class TranslationRemind {
-        constructor() {
-            this.meta = {
-                messages: {
-                    missing: 'Please add \'{{resource}}\' to ./build/lib/i18n.resources.json file to use translations here.'
-                }
-            };
-        }
-        create(context) {
-            return utils_1.createImportRuleListener((node, path) => this._checkImport(context, node, path));
-        }
-        _checkImport(context, node, path) {
-            if (path !== TranslationRemind.NLS_MODULE) {
-                return;
-            }
-            const currentFile = context.getFilename();
-            const matchService = currentFile.match(/vs\/workbench\/services\/\w+/);
-            const matchPart = currentFile.match(/vs\/workbench\/contrib\/\w+/);
-            if (!matchService && !matchPart) {
-                return;
-            }
-            const resource = matchService ? matchService[0] : matchPart[0];
-            let resourceDefined = false;
-            let json;
-            try {
-                json = fs_1.readFileSync('./build/lib/i18n.resources.json', 'utf8');
-            }
-            catch (e) {
-                console.error('[translation-remind rule]: File with resources to pull from Transifex was not found. Aborting translation resource check for newly defined workbench part/service.');
-                return;
-            }
-            const workbenchResources = JSON.parse(json).workbench;
-            workbenchResources.forEach((existingResource) => {
-                if (existingResource.name === resource) {
-                    resourceDefined = true;
-                    return;
-                }
-            });
-            if (!resourceDefined) {
-                context.report({
-                    loc: node.loc,
-                    messageId: 'missing',
-                    data: { resource }
-                });
-            }
-        }
-    },
-    _a.NLS_MODULE = 'vs/nls',
-    _a);
diff --git a/lib/vscode/build/lib/eslint/code-translation-remind.ts b/lib/vscode/build/lib/eslint/code-translation-remind.ts
deleted file mode 100644
index 1ce01107a72a..000000000000
--- a/lib/vscode/build/lib/eslint/code-translation-remind.ts
+++ /dev/null
@@ -1,67 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-import * as eslint from 'eslint';
-import { TSESTree } from '@typescript-eslint/experimental-utils';
-import { readFileSync } from 'fs';
-import { createImportRuleListener } from './utils';
-
-
-export = new class TranslationRemind implements eslint.Rule.RuleModule {
-
-	private static NLS_MODULE = 'vs/nls';
-
-	readonly meta: eslint.Rule.RuleMetaData = {
-		messages: {
-			missing: 'Please add \'{{resource}}\' to ./build/lib/i18n.resources.json file to use translations here.'
-		}
-	};
-
-	create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
-		return createImportRuleListener((node, path) => this._checkImport(context, node, path));
-	}
-
-	private _checkImport(context: eslint.Rule.RuleContext, node: TSESTree.Node, path: string) {
-
-		if (path !== TranslationRemind.NLS_MODULE) {
-			return;
-		}
-
-		const currentFile = context.getFilename();
-		const matchService = currentFile.match(/vs\/workbench\/services\/\w+/);
-		const matchPart = currentFile.match(/vs\/workbench\/contrib\/\w+/);
-		if (!matchService && !matchPart) {
-			return;
-		}
-
-		const resource = matchService ? matchService[0] : matchPart![0];
-		let resourceDefined = false;
-
-		let json;
-		try {
-			json = readFileSync('./build/lib/i18n.resources.json', 'utf8');
-		} catch (e) {
-			console.error('[translation-remind rule]: File with resources to pull from Transifex was not found. Aborting translation resource check for newly defined workbench part/service.');
-			return;
-		}
-		const workbenchResources = JSON.parse(json).workbench;
-
-		workbenchResources.forEach((existingResource: any) => {
-			if (existingResource.name === resource) {
-				resourceDefined = true;
-				return;
-			}
-		});
-
-		if (!resourceDefined) {
-			context.report({
-				loc: node.loc,
-				messageId: 'missing',
-				data: { resource }
-			});
-		}
-	}
-};
-
diff --git a/lib/vscode/build/lib/eslint/utils.js b/lib/vscode/build/lib/eslint/utils.js
deleted file mode 100644
index c58e4e24be1e..000000000000
--- a/lib/vscode/build/lib/eslint/utils.js
+++ /dev/null
@@ -1,37 +0,0 @@
-"use strict";
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.createImportRuleListener = void 0;
-function createImportRuleListener(validateImport) {
-    function _checkImport(node) {
-        if (node && node.type === 'Literal' && typeof node.value === 'string') {
-            validateImport(node, node.value);
-        }
-    }
-    return {
-        // import ??? from 'module'
-        ImportDeclaration: (node) => {
-            _checkImport(node.source);
-        },
-        // import('module').then(...) OR await import('module')
-        ['CallExpression[callee.type="Import"][arguments.length=1] > Literal']: (node) => {
-            _checkImport(node);
-        },
-        // import foo = ...
-        ['TSImportEqualsDeclaration > TSExternalModuleReference > Literal']: (node) => {
-            _checkImport(node);
-        },
-        // export ?? from 'module'
-        ExportAllDeclaration: (node) => {
-            _checkImport(node.source);
-        },
-        // export {foo} from 'module'
-        ExportNamedDeclaration: (node) => {
-            _checkImport(node.source);
-        },
-    };
-}
-exports.createImportRuleListener = createImportRuleListener;
diff --git a/lib/vscode/build/lib/eslint/utils.ts b/lib/vscode/build/lib/eslint/utils.ts
deleted file mode 100644
index 428832e9cf97..000000000000
--- a/lib/vscode/build/lib/eslint/utils.ts
+++ /dev/null
@@ -1,40 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-import * as eslint from 'eslint';
-import { TSESTree } from '@typescript-eslint/experimental-utils';
-
-export function createImportRuleListener(validateImport: (node: TSESTree.Literal, value: string) => any): eslint.Rule.RuleListener {
-
-	function _checkImport(node: TSESTree.Node | null) {
-		if (node && node.type === 'Literal' && typeof node.value === 'string') {
-			validateImport(node, node.value);
-		}
-	}
-
-	return {
-		// import ??? from 'module'
-		ImportDeclaration: (node: any) => {
-			_checkImport((<TSESTree.ImportDeclaration>node).source);
-		},
-		// import('module').then(...) OR await import('module')
-		['CallExpression[callee.type="Import"][arguments.length=1] > Literal']: (node: any) => {
-			_checkImport(node);
-		},
-		// import foo = ...
-		['TSImportEqualsDeclaration > TSExternalModuleReference > Literal']: (node: any) => {
-			_checkImport(node);
-		},
-		// export ?? from 'module'
-		ExportAllDeclaration: (node: any) => {
-			_checkImport((<TSESTree.ExportAllDeclaration>node).source);
-		},
-		// export {foo} from 'module'
-		ExportNamedDeclaration: (node: any) => {
-			_checkImport((<TSESTree.ExportNamedDeclaration>node).source);
-		},
-
-	};
-}
diff --git a/lib/vscode/build/lib/eslint/vscode-dts-cancellation.js b/lib/vscode/build/lib/eslint/vscode-dts-cancellation.js
deleted file mode 100644
index d016f0d2ebcd..000000000000
--- a/lib/vscode/build/lib/eslint/vscode-dts-cancellation.js
+++ /dev/null
@@ -1,33 +0,0 @@
-"use strict";
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-const experimental_utils_1 = require("@typescript-eslint/experimental-utils");
-module.exports = new class ApiProviderNaming {
-    constructor() {
-        this.meta = {
-            messages: {
-                noToken: 'Function lacks a cancellation token, preferable as last argument',
-            }
-        };
-    }
-    create(context) {
-        return {
-            ['TSInterfaceDeclaration[id.name=/.+Provider/] TSMethodSignature[key.name=/^(provide|resolve).+/]']: (node) => {
-                let found = false;
-                for (let param of node.params) {
-                    if (param.type === experimental_utils_1.AST_NODE_TYPES.Identifier) {
-                        found = found || param.name === 'token';
-                    }
-                }
-                if (!found) {
-                    context.report({
-                        node,
-                        messageId: 'noToken'
-                    });
-                }
-            }
-        };
-    }
-};
diff --git a/lib/vscode/build/lib/eslint/vscode-dts-cancellation.ts b/lib/vscode/build/lib/eslint/vscode-dts-cancellation.ts
deleted file mode 100644
index 66f184214b93..000000000000
--- a/lib/vscode/build/lib/eslint/vscode-dts-cancellation.ts
+++ /dev/null
@@ -1,38 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-import * as eslint from 'eslint';
-import { AST_NODE_TYPES, TSESTree } from '@typescript-eslint/experimental-utils';
-
-export = new class ApiProviderNaming implements eslint.Rule.RuleModule {
-
-	readonly meta: eslint.Rule.RuleMetaData = {
-		messages: {
-			noToken: 'Function lacks a cancellation token, preferable as last argument',
-		}
-	};
-
-	create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
-
-		return {
-			['TSInterfaceDeclaration[id.name=/.+Provider/] TSMethodSignature[key.name=/^(provide|resolve).+/]']: (node: any) => {
-
-				let found = false;
-				for (let param of (<TSESTree.TSMethodSignature>node).params) {
-					if (param.type === AST_NODE_TYPES.Identifier) {
-						found = found || param.name === 'token';
-					}
-				}
-
-				if (!found) {
-					context.report({
-						node,
-						messageId: 'noToken'
-					});
-				}
-			}
-		};
-	}
-};
diff --git a/lib/vscode/build/lib/eslint/vscode-dts-create-func.js b/lib/vscode/build/lib/eslint/vscode-dts-create-func.js
deleted file mode 100644
index 5a27bf51c80f..000000000000
--- a/lib/vscode/build/lib/eslint/vscode-dts-create-func.js
+++ /dev/null
@@ -1,35 +0,0 @@
-"use strict";
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-const experimental_utils_1 = require("@typescript-eslint/experimental-utils");
-module.exports = new class ApiLiteralOrTypes {
-    constructor() {
-        this.meta = {
-            docs: { url: 'https://github.com/microsoft/vscode/wiki/Extension-API-guidelines#creating-objects' },
-            messages: { sync: '`createXYZ`-functions are constructor-replacements and therefore must return sync', }
-        };
-    }
-    create(context) {
-        return {
-            ['TSDeclareFunction Identifier[name=/create.*/]']: (node) => {
-                var _a;
-                const decl = node.parent;
-                if (((_a = decl.returnType) === null || _a === void 0 ? void 0 : _a.typeAnnotation.type) !== experimental_utils_1.AST_NODE_TYPES.TSTypeReference) {
-                    return;
-                }
-                if (decl.returnType.typeAnnotation.typeName.type !== experimental_utils_1.AST_NODE_TYPES.Identifier) {
-                    return;
-                }
-                const ident = decl.returnType.typeAnnotation.typeName.name;
-                if (ident === 'Promise' || ident === 'Thenable') {
-                    context.report({
-                        node,
-                        messageId: 'sync'
-                    });
-                }
-            }
-        };
-    }
-};
diff --git a/lib/vscode/build/lib/eslint/vscode-dts-create-func.ts b/lib/vscode/build/lib/eslint/vscode-dts-create-func.ts
deleted file mode 100644
index 295d099da7ce..000000000000
--- a/lib/vscode/build/lib/eslint/vscode-dts-create-func.ts
+++ /dev/null
@@ -1,40 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-import * as eslint from 'eslint';
-import { TSESTree, AST_NODE_TYPES } from '@typescript-eslint/experimental-utils';
-
-export = new class ApiLiteralOrTypes implements eslint.Rule.RuleModule {
-
-	readonly meta: eslint.Rule.RuleMetaData = {
-		docs: { url: 'https://github.com/microsoft/vscode/wiki/Extension-API-guidelines#creating-objects' },
-		messages: { sync: '`createXYZ`-functions are constructor-replacements and therefore must return sync', }
-	};
-
-	create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
-
-		return {
-			['TSDeclareFunction Identifier[name=/create.*/]']: (node: any) => {
-
-				const decl = <TSESTree.FunctionDeclaration>(<TSESTree.Identifier>node).parent;
-
-				if (decl.returnType?.typeAnnotation.type !== AST_NODE_TYPES.TSTypeReference) {
-					return;
-				}
-				if (decl.returnType.typeAnnotation.typeName.type !== AST_NODE_TYPES.Identifier) {
-					return;
-				}
-
-				const ident = decl.returnType.typeAnnotation.typeName.name;
-				if (ident === 'Promise' || ident === 'Thenable') {
-					context.report({
-						node,
-						messageId: 'sync'
-					});
-				}
-			}
-		};
-	}
-};
diff --git a/lib/vscode/build/lib/eslint/vscode-dts-event-naming.js b/lib/vscode/build/lib/eslint/vscode-dts-event-naming.js
deleted file mode 100644
index 388ccf2f8040..000000000000
--- a/lib/vscode/build/lib/eslint/vscode-dts-event-naming.js
+++ /dev/null
@@ -1,87 +0,0 @@
-"use strict";
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-var _a;
-const experimental_utils_1 = require("@typescript-eslint/experimental-utils");
-module.exports = new (_a = class ApiEventNaming {
-        constructor() {
-            this.meta = {
-                docs: {
-                    url: 'https://github.com/microsoft/vscode/wiki/Extension-API-guidelines#event-naming'
-                },
-                messages: {
-                    naming: 'Event names must follow this patten: `on[Did|Will]<Verb><Subject>`',
-                    verb: 'Unknown verb \'{{verb}}\' - is this really a verb? Iff so, then add this verb to the configuration',
-                    subject: 'Unknown subject \'{{subject}}\' - This subject has not been used before but it should refer to something in the API',
-                    unknown: 'UNKNOWN event declaration, lint-rule needs tweaking'
-                }
-            };
-        }
-        create(context) {
-            const config = context.options[0];
-            const allowed = new Set(config.allowed);
-            const verbs = new Set(config.verbs);
-            return {
-                ['TSTypeAnnotation TSTypeReference Identifier[name="Event"]']: (node) => {
-                    var _a, _b;
-                    const def = (_b = (_a = node.parent) === null || _a === void 0 ? void 0 : _a.parent) === null || _b === void 0 ? void 0 : _b.parent;
-                    const ident = this.getIdent(def);
-                    if (!ident) {
-                        // event on unknown structure...
-                        return context.report({
-                            node,
-                            message: 'unknown'
-                        });
-                    }
-                    if (allowed.has(ident.name)) {
-                        // configured exception
-                        return;
-                    }
-                    const match = ApiEventNaming._nameRegExp.exec(ident.name);
-                    if (!match) {
-                        context.report({
-                            node: ident,
-                            messageId: 'naming'
-                        });
-                        return;
-                    }
-                    // check that <verb> is spelled out (configured) as verb
-                    if (!verbs.has(match[2].toLowerCase())) {
-                        context.report({
-                            node: ident,
-                            messageId: 'verb',
-                            data: { verb: match[2] }
-                        });
-                    }
-                    // check that a subject (if present) has occurred
-                    if (match[3]) {
-                        const regex = new RegExp(match[3], 'ig');
-                        const parts = context.getSourceCode().getText().split(regex);
-                        if (parts.length < 3) {
-                            context.report({
-                                node: ident,
-                                messageId: 'subject',
-                                data: { subject: match[3] }
-                            });
-                        }
-                    }
-                }
-            };
-        }
-        getIdent(def) {
-            if (!def) {
-                return;
-            }
-            if (def.type === experimental_utils_1.AST_NODE_TYPES.Identifier) {
-                return def;
-            }
-            else if ((def.type === experimental_utils_1.AST_NODE_TYPES.TSPropertySignature || def.type === experimental_utils_1.AST_NODE_TYPES.ClassProperty) && def.key.type === experimental_utils_1.AST_NODE_TYPES.Identifier) {
-                return def.key;
-            }
-            return this.getIdent(def.parent);
-        }
-    },
-    _a._nameRegExp = /on(Did|Will)([A-Z][a-z]+)([A-Z][a-z]+)?/,
-    _a);
diff --git a/lib/vscode/build/lib/eslint/vscode-dts-event-naming.ts b/lib/vscode/build/lib/eslint/vscode-dts-event-naming.ts
deleted file mode 100644
index 5ed8818fe44b..000000000000
--- a/lib/vscode/build/lib/eslint/vscode-dts-event-naming.ts
+++ /dev/null
@@ -1,98 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-import * as eslint from 'eslint';
-import { TSESTree, AST_NODE_TYPES } from '@typescript-eslint/experimental-utils';
-
-export = new class ApiEventNaming implements eslint.Rule.RuleModule {
-
-	private static _nameRegExp = /on(Did|Will)([A-Z][a-z]+)([A-Z][a-z]+)?/;
-
-	readonly meta: eslint.Rule.RuleMetaData = {
-		docs: {
-			url: 'https://github.com/microsoft/vscode/wiki/Extension-API-guidelines#event-naming'
-		},
-		messages: {
-			naming: 'Event names must follow this patten: `on[Did|Will]<Verb><Subject>`',
-			verb: 'Unknown verb \'{{verb}}\' - is this really a verb? Iff so, then add this verb to the configuration',
-			subject: 'Unknown subject \'{{subject}}\' - This subject has not been used before but it should refer to something in the API',
-			unknown: 'UNKNOWN event declaration, lint-rule needs tweaking'
-		}
-	};
-
-	create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
-
-		const config = <{ allowed: string[], verbs: string[] }>context.options[0];
-		const allowed = new Set(config.allowed);
-		const verbs = new Set(config.verbs);
-
-		return {
-			['TSTypeAnnotation TSTypeReference Identifier[name="Event"]']: (node: any) => {
-
-				const def = (<TSESTree.Identifier>node).parent?.parent?.parent;
-				const ident = this.getIdent(def);
-
-				if (!ident) {
-					// event on unknown structure...
-					return context.report({
-						node,
-						message: 'unknown'
-					});
-				}
-
-				if (allowed.has(ident.name)) {
-					// configured exception
-					return;
-				}
-
-				const match = ApiEventNaming._nameRegExp.exec(ident.name);
-				if (!match) {
-					context.report({
-						node: ident,
-						messageId: 'naming'
-					});
-					return;
-				}
-
-				// check that <verb> is spelled out (configured) as verb
-				if (!verbs.has(match[2].toLowerCase())) {
-					context.report({
-						node: ident,
-						messageId: 'verb',
-						data: { verb: match[2] }
-					});
-				}
-
-				// check that a subject (if present) has occurred
-				if (match[3]) {
-					const regex = new RegExp(match[3], 'ig');
-					const parts = context.getSourceCode().getText().split(regex);
-					if (parts.length < 3) {
-						context.report({
-							node: ident,
-							messageId: 'subject',
-							data: { subject: match[3] }
-						});
-					}
-				}
-			}
-		};
-	}
-
-	private getIdent(def: TSESTree.Node | undefined): TSESTree.Identifier | undefined {
-		if (!def) {
-			return;
-		}
-
-		if (def.type === AST_NODE_TYPES.Identifier) {
-			return def;
-		} else if ((def.type === AST_NODE_TYPES.TSPropertySignature || def.type === AST_NODE_TYPES.ClassProperty) && def.key.type === AST_NODE_TYPES.Identifier) {
-			return def.key;
-		}
-
-		return this.getIdent(def.parent);
-	}
-};
-
diff --git a/lib/vscode/build/lib/eslint/vscode-dts-interface-naming.js b/lib/vscode/build/lib/eslint/vscode-dts-interface-naming.js
deleted file mode 100644
index 70ca810825ba..000000000000
--- a/lib/vscode/build/lib/eslint/vscode-dts-interface-naming.js
+++ /dev/null
@@ -1,30 +0,0 @@
-"use strict";
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-var _a;
-module.exports = new (_a = class ApiInterfaceNaming {
-        constructor() {
-            this.meta = {
-                messages: {
-                    naming: 'Interfaces must not be prefixed with uppercase `I`',
-                }
-            };
-        }
-        create(context) {
-            return {
-                ['TSInterfaceDeclaration Identifier']: (node) => {
-                    const name = node.name;
-                    if (ApiInterfaceNaming._nameRegExp.test(name)) {
-                        context.report({
-                            node,
-                            messageId: 'naming'
-                        });
-                    }
-                }
-            };
-        }
-    },
-    _a._nameRegExp = /I[A-Z]/,
-    _a);
diff --git a/lib/vscode/build/lib/eslint/vscode-dts-interface-naming.ts b/lib/vscode/build/lib/eslint/vscode-dts-interface-naming.ts
deleted file mode 100644
index d9ec4e8c34cb..000000000000
--- a/lib/vscode/build/lib/eslint/vscode-dts-interface-naming.ts
+++ /dev/null
@@ -1,35 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-import * as eslint from 'eslint';
-import { TSESTree } from '@typescript-eslint/experimental-utils';
-
-export = new class ApiInterfaceNaming implements eslint.Rule.RuleModule {
-
-	private static _nameRegExp = /I[A-Z]/;
-
-	readonly meta: eslint.Rule.RuleMetaData = {
-		messages: {
-			naming: 'Interfaces must not be prefixed with uppercase `I`',
-		}
-	};
-
-	create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
-
-		return {
-			['TSInterfaceDeclaration Identifier']: (node: any) => {
-
-				const name = (<TSESTree.Identifier>node).name;
-				if (ApiInterfaceNaming._nameRegExp.test(name)) {
-					context.report({
-						node,
-						messageId: 'naming'
-					});
-				}
-			}
-		};
-	}
-};
-
diff --git a/lib/vscode/build/lib/eslint/vscode-dts-literal-or-types.js b/lib/vscode/build/lib/eslint/vscode-dts-literal-or-types.js
deleted file mode 100644
index e07dfc6de28f..000000000000
--- a/lib/vscode/build/lib/eslint/vscode-dts-literal-or-types.js
+++ /dev/null
@@ -1,27 +0,0 @@
-"use strict";
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-module.exports = new class ApiLiteralOrTypes {
-    constructor() {
-        this.meta = {
-            docs: { url: 'https://github.com/microsoft/vscode/wiki/Extension-API-guidelines#enums' },
-            messages: { useEnum: 'Use enums, not literal-or-types', }
-        };
-    }
-    create(context) {
-        return {
-            ['TSTypeAnnotation TSUnionType TSLiteralType']: (node) => {
-                var _a;
-                if (((_a = node.literal) === null || _a === void 0 ? void 0 : _a.type) === 'TSNullKeyword') {
-                    return;
-                }
-                context.report({
-                    node: node,
-                    messageId: 'useEnum'
-                });
-            }
-        };
-    }
-};
diff --git a/lib/vscode/build/lib/eslint/vscode-dts-literal-or-types.ts b/lib/vscode/build/lib/eslint/vscode-dts-literal-or-types.ts
deleted file mode 100644
index fe4befd84e79..000000000000
--- a/lib/vscode/build/lib/eslint/vscode-dts-literal-or-types.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-import * as eslint from 'eslint';
-
-export = new class ApiLiteralOrTypes implements eslint.Rule.RuleModule {
-
-	readonly meta: eslint.Rule.RuleMetaData = {
-		docs: { url: 'https://github.com/microsoft/vscode/wiki/Extension-API-guidelines#enums' },
-		messages: { useEnum: 'Use enums, not literal-or-types', }
-	};
-
-	create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
-		return {
-			['TSTypeAnnotation TSUnionType TSLiteralType']: (node: any) => {
-				if (node.literal?.type === 'TSNullKeyword') {
-					return;
-				}
-				context.report({
-					node: node,
-					messageId: 'useEnum'
-				});
-			}
-		};
-	}
-};
diff --git a/lib/vscode/build/lib/eslint/vscode-dts-provider-naming.js b/lib/vscode/build/lib/eslint/vscode-dts-provider-naming.js
deleted file mode 100644
index 924c26ecbb3e..000000000000
--- a/lib/vscode/build/lib/eslint/vscode-dts-provider-naming.js
+++ /dev/null
@@ -1,38 +0,0 @@
-"use strict";
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-var _a;
-module.exports = new (_a = class ApiProviderNaming {
-        constructor() {
-            this.meta = {
-                messages: {
-                    naming: 'A provider should only have functions like provideXYZ or resolveXYZ',
-                }
-            };
-        }
-        create(context) {
-            const config = context.options[0];
-            const allowed = new Set(config.allowed);
-            return {
-                ['TSInterfaceDeclaration[id.name=/.+Provider/] TSMethodSignature']: (node) => {
-                    var _a;
-                    const interfaceName = ((_a = node.parent) === null || _a === void 0 ? void 0 : _a.parent).id.name;
-                    if (allowed.has(interfaceName)) {
-                        // allowed
-                        return;
-                    }
-                    const methodName = node.key.name;
-                    if (!ApiProviderNaming._providerFunctionNames.test(methodName)) {
-                        context.report({
-                            node,
-                            messageId: 'naming'
-                        });
-                    }
-                }
-            };
-        }
-    },
-    _a._providerFunctionNames = /^(provide|resolve|prepare).+/,
-    _a);
diff --git a/lib/vscode/build/lib/eslint/vscode-dts-provider-naming.ts b/lib/vscode/build/lib/eslint/vscode-dts-provider-naming.ts
deleted file mode 100644
index 284f123420fc..000000000000
--- a/lib/vscode/build/lib/eslint/vscode-dts-provider-naming.ts
+++ /dev/null
@@ -1,45 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-import * as eslint from 'eslint';
-import { TSESTree } from '@typescript-eslint/experimental-utils';
-
-export = new class ApiProviderNaming implements eslint.Rule.RuleModule {
-
-	readonly meta: eslint.Rule.RuleMetaData = {
-		messages: {
-			naming: 'A provider should only have functions like provideXYZ or resolveXYZ',
-		}
-	};
-
-	private static _providerFunctionNames = /^(provide|resolve|prepare).+/;
-
-	create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
-
-		const config = <{ allowed: string[] }>context.options[0];
-		const allowed = new Set(config.allowed);
-
-		return {
-			['TSInterfaceDeclaration[id.name=/.+Provider/] TSMethodSignature']: (node: any) => {
-
-
-				const interfaceName = (<TSESTree.TSInterfaceDeclaration>(<TSESTree.Identifier>node).parent?.parent).id.name;
-				if (allowed.has(interfaceName)) {
-					// allowed
-					return;
-				}
-
-				const methodName = (<any>(<TSESTree.TSMethodSignatureNonComputedName>node).key).name;
-
-				if (!ApiProviderNaming._providerFunctionNames.test(methodName)) {
-					context.report({
-						node,
-						messageId: 'naming'
-					});
-				}
-			}
-		};
-	}
-};
diff --git a/lib/vscode/build/lib/eslint/vscode-dts-region-comments.js b/lib/vscode/build/lib/eslint/vscode-dts-region-comments.js
deleted file mode 100644
index 7d37a20fb6a0..000000000000
--- a/lib/vscode/build/lib/eslint/vscode-dts-region-comments.js
+++ /dev/null
@@ -1,35 +0,0 @@
-"use strict";
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-module.exports = new class ApiEventNaming {
-    constructor() {
-        this.meta = {
-            messages: {
-                comment: 'region comments should start with the GH issue link, e.g #region https://github.com/microsoft/vscode/issues/<number>',
-            }
-        };
-    }
-    create(context) {
-        const sourceCode = context.getSourceCode();
-        return {
-            ['Program']: (_node) => {
-                for (let comment of sourceCode.getAllComments()) {
-                    if (comment.type !== 'Line') {
-                        continue;
-                    }
-                    if (!comment.value.match(/^\s*#region /)) {
-                        continue;
-                    }
-                    if (!comment.value.match(/https:\/\/github.com\/microsoft\/vscode\/issues\/\d+/i)) {
-                        context.report({
-                            node: comment,
-                            messageId: 'comment',
-                        });
-                    }
-                }
-            }
-        };
-    }
-};
diff --git a/lib/vscode/build/lib/eslint/vscode-dts-region-comments.ts b/lib/vscode/build/lib/eslint/vscode-dts-region-comments.ts
deleted file mode 100644
index 175fb9040abf..000000000000
--- a/lib/vscode/build/lib/eslint/vscode-dts-region-comments.ts
+++ /dev/null
@@ -1,41 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-import * as eslint from 'eslint';
-
-export = new class ApiEventNaming implements eslint.Rule.RuleModule {
-
-	readonly meta: eslint.Rule.RuleMetaData = {
-		messages: {
-			comment: 'region comments should start with the GH issue link, e.g #region https://github.com/microsoft/vscode/issues/<number>',
-		}
-	};
-
-	create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
-
-		const sourceCode = context.getSourceCode();
-
-
-		return {
-			['Program']: (_node: any) => {
-
-				for (let comment of sourceCode.getAllComments()) {
-					if (comment.type !== 'Line') {
-						continue;
-					}
-					if (!comment.value.match(/^\s*#region /)) {
-						continue;
-					}
-					if (!comment.value.match(/https:\/\/github.com\/microsoft\/vscode\/issues\/\d+/i)) {
-						context.report({
-							node: <any>comment,
-							messageId: 'comment',
-						});
-					}
-				}
-			}
-		};
-	}
-};
diff --git a/lib/vscode/build/lib/eslint/vscode-dts-use-thenable.js b/lib/vscode/build/lib/eslint/vscode-dts-use-thenable.js
deleted file mode 100644
index 7e23953cb69b..000000000000
--- a/lib/vscode/build/lib/eslint/vscode-dts-use-thenable.js
+++ /dev/null
@@ -1,24 +0,0 @@
-"use strict";
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-module.exports = new class ApiEventNaming {
-    constructor() {
-        this.meta = {
-            messages: {
-                usage: 'Use the Thenable-type instead of the Promise type',
-            }
-        };
-    }
-    create(context) {
-        return {
-            ['TSTypeAnnotation TSTypeReference Identifier[name="Promise"]']: (node) => {
-                context.report({
-                    node,
-                    messageId: 'usage',
-                });
-            }
-        };
-    }
-};
diff --git a/lib/vscode/build/lib/eslint/vscode-dts-use-thenable.ts b/lib/vscode/build/lib/eslint/vscode-dts-use-thenable.ts
deleted file mode 100644
index 511124820996..000000000000
--- a/lib/vscode/build/lib/eslint/vscode-dts-use-thenable.ts
+++ /dev/null
@@ -1,30 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-import * as eslint from 'eslint';
-
-export = new class ApiEventNaming implements eslint.Rule.RuleModule {
-
-	readonly meta: eslint.Rule.RuleMetaData = {
-		messages: {
-			usage: 'Use the Thenable-type instead of the Promise type',
-		}
-	};
-
-	create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
-
-
-
-		return {
-			['TSTypeAnnotation TSTypeReference Identifier[name="Promise"]']: (node: any) => {
-
-				context.report({
-					node,
-					messageId: 'usage',
-				});
-			}
-		};
-	}
-};
diff --git a/lib/vscode/build/lib/extensions.js b/lib/vscode/build/lib/extensions.js
deleted file mode 100644
index 3d6a2906178c..000000000000
--- a/lib/vscode/build/lib/extensions.js
+++ /dev/null
@@ -1,460 +0,0 @@
-"use strict";
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.buildExtensionMedia = exports.webpackExtensions = exports.translatePackageJSON = exports.scanBuiltinExtensions = exports.packageMarketplaceExtensionsStream = exports.packageLocalExtensionsStream = exports.fromMarketplace = void 0;
-const es = require("event-stream");
-const fs = require("fs");
-const cp = require("child_process");
-const glob = require("glob");
-const gulp = require("gulp");
-const path = require("path");
-const File = require("vinyl");
-const stats_1 = require("./stats");
-const util2 = require("./util");
-const vzip = require('gulp-vinyl-zip');
-const filter = require("gulp-filter");
-const rename = require("gulp-rename");
-const fancyLog = require("fancy-log");
-const ansiColors = require("ansi-colors");
-const buffer = require('gulp-buffer');
-const jsoncParser = require("jsonc-parser");
-const util = require('./util');
-const root = path.dirname(path.dirname(__dirname));
-const commit = util.getVersion(root);
-const sourceMappingURLBase = `https://ticino.blob.core.windows.net/sourcemaps/${commit}`;
-function minifyExtensionResources(input) {
-    const jsonFilter = filter(['**/*.json', '**/*.code-snippets'], { restore: true });
-    return input
-        .pipe(jsonFilter)
-        .pipe(buffer())
-        .pipe(es.mapSync((f) => {
-        const errors = [];
-        const value = jsoncParser.parse(f.contents.toString('utf8'), errors);
-        if (errors.length === 0) {
-            // file parsed OK => just stringify to drop whitespace and comments
-            f.contents = Buffer.from(JSON.stringify(value));
-        }
-        return f;
-    }))
-        .pipe(jsonFilter.restore);
-}
-function updateExtensionPackageJSON(input, update) {
-    const packageJsonFilter = filter('extensions/*/package.json', { restore: true });
-    return input
-        .pipe(packageJsonFilter)
-        .pipe(buffer())
-        .pipe(es.mapSync((f) => {
-        const data = JSON.parse(f.contents.toString('utf8'));
-        f.contents = Buffer.from(JSON.stringify(update(data)));
-        return f;
-    }))
-        .pipe(packageJsonFilter.restore);
-}
-function fromLocal(extensionPath, forWeb) {
-    const webpackConfigFileName = forWeb ? 'extension-browser.webpack.config.js' : 'extension.webpack.config.js';
-    const isWebPacked = fs.existsSync(path.join(extensionPath, webpackConfigFileName));
-    let input = isWebPacked
-        ? fromLocalWebpack(extensionPath, webpackConfigFileName)
-        : fromLocalNormal(extensionPath);
-    if (isWebPacked) {
-        input = updateExtensionPackageJSON(input, (data) => {
-            delete data.scripts;
-            delete data.dependencies;
-            delete data.devDependencies;
-            if (data.main) {
-                data.main = data.main.replace('/out/', /dist/);
-            }
-            return data;
-        });
-    }
-    return input;
-}
-function fromLocalWebpack(extensionPath, webpackConfigFileName) {
-    const result = es.through();
-    const packagedDependencies = [];
-    const packageJsonConfig = require(path.join(extensionPath, 'package.json'));
-    if (packageJsonConfig.dependencies) {
-        const webpackRootConfig = require(path.join(extensionPath, webpackConfigFileName));
-        for (const key in webpackRootConfig.externals) {
-            if (key in packageJsonConfig.dependencies) {
-                packagedDependencies.push(key);
-            }
-        }
-    }
-    const vsce = require('vsce');
-    const webpack = require('webpack');
-    const webpackGulp = require('webpack-stream');
-    vsce.listFiles({ cwd: extensionPath, packageManager: vsce.PackageManager.Yarn, packagedDependencies }).then(fileNames => {
-        const files = fileNames
-            .map(fileName => path.join(extensionPath, fileName))
-            .map(filePath => new File({
-            path: filePath,
-            stat: fs.statSync(filePath),
-            base: extensionPath,
-            contents: fs.createReadStream(filePath)
-        }));
-        // check for a webpack configuration files, then invoke webpack
-        // and merge its output with the files stream.
-        const webpackConfigLocations = glob.sync(path.join(extensionPath, '**', webpackConfigFileName), { ignore: ['**/node_modules'] });
-        const webpackStreams = webpackConfigLocations.map(webpackConfigPath => {
-            const webpackDone = (err, stats) => {
-                fancyLog(`Bundled extension: ${ansiColors.yellow(path.join(path.basename(extensionPath), path.relative(extensionPath, webpackConfigPath)))}...`);
-                if (err) {
-                    result.emit('error', err);
-                }
-                const { compilation } = stats;
-                if (compilation.errors.length > 0) {
-                    result.emit('error', compilation.errors.join('\n'));
-                }
-                if (compilation.warnings.length > 0) {
-                    result.emit('error', compilation.warnings.join('\n'));
-                }
-            };
-            const webpackConfig = Object.assign(Object.assign({}, require(webpackConfigPath)), { mode: 'production' });
-            const relativeOutputPath = path.relative(extensionPath, webpackConfig.output.path);
-            return webpackGulp(webpackConfig, webpack, webpackDone)
-                .pipe(es.through(function (data) {
-                data.stat = data.stat || {};
-                data.base = extensionPath;
-                this.emit('data', data);
-            }))
-                .pipe(es.through(function (data) {
-                // source map handling:
-                // * rewrite sourceMappingURL
-                // * save to disk so that upload-task picks this up
-                const contents = data.contents.toString('utf8');
-                data.contents = Buffer.from(contents.replace(/\n\/\/# sourceMappingURL=(.*)$/gm, function (_m, g1) {
-                    return `\n//# sourceMappingURL=${sourceMappingURLBase}/extensions/${path.basename(extensionPath)}/${relativeOutputPath}/${g1}`;
-                }), 'utf8');
-                this.emit('data', data);
-            }));
-        });
-        es.merge(...webpackStreams, es.readArray(files))
-            // .pipe(es.through(function (data) {
-            // 	// debug
-            // 	console.log('out', data.path, data.contents.length);
-            // 	this.emit('data', data);
-            // }))
-            .pipe(result);
-    }).catch(err => {
-        console.error(extensionPath);
-        console.error(packagedDependencies);
-        result.emit('error', err);
-    });
-    return result.pipe(stats_1.createStatsStream(path.basename(extensionPath)));
-}
-function fromLocalNormal(extensionPath) {
-    const result = es.through();
-    const vsce = require('vsce');
-    vsce.listFiles({ cwd: extensionPath, packageManager: vsce.PackageManager.Yarn })
-        .then(fileNames => {
-        const files = fileNames
-            .map(fileName => path.join(extensionPath, fileName))
-            .map(filePath => new File({
-            path: filePath,
-            stat: fs.statSync(filePath),
-            base: extensionPath,
-            contents: fs.createReadStream(filePath)
-        }));
-        es.readArray(files).pipe(result);
-    })
-        .catch(err => result.emit('error', err));
-    return result.pipe(stats_1.createStatsStream(path.basename(extensionPath)));
-}
-const baseHeaders = {
-    'X-Market-Client-Id': 'VSCode Build',
-    'User-Agent': 'VSCode Build',
-    'X-Market-User-Id': '291C1CD0-051A-4123-9B4B-30D60EF52EE2',
-};
-function fromMarketplace(extensionName, version, metadata) {
-    const remote = require('gulp-remote-retry-src');
-    const json = require('gulp-json-editor');
-    const [publisher, name] = extensionName.split('.');
-    const url = `https://marketplace.visualstudio.com/_apis/public/gallery/publishers/${publisher}/vsextensions/${name}/${version}/vspackage`;
-    fancyLog('Downloading extension:', ansiColors.yellow(`${extensionName}@${version}`), '...');
-    const options = {
-        base: url,
-        requestOptions: {
-            gzip: true,
-            headers: baseHeaders
-        }
-    };
-    const packageJsonFilter = filter('package.json', { restore: true });
-    return remote('', options)
-        .pipe(vzip.src())
-        .pipe(filter('extension/**'))
-        .pipe(rename(p => p.dirname = p.dirname.replace(/^extension\/?/, '')))
-        .pipe(packageJsonFilter)
-        .pipe(buffer())
-        .pipe(json({ __metadata: metadata }))
-        .pipe(packageJsonFilter.restore);
-}
-exports.fromMarketplace = fromMarketplace;
-const excludedExtensions = [
-    'vscode-api-tests',
-    'vscode-colorize-tests',
-    'vscode-test-resolver',
-    'ms-vscode.node-debug',
-    'ms-vscode.node-debug2',
-    'vscode-notebook-tests',
-    'vscode-custom-editor-tests',
-];
-const marketplaceWebExtensionsExclude = new Set([
-    'ms-vscode.node-debug',
-    'ms-vscode.node-debug2',
-    'ms-vscode.js-debug-companion',
-    'ms-vscode.js-debug',
-    'ms-vscode.vscode-js-profile-table'
-]);
-const productJson = JSON.parse(fs.readFileSync(path.join(__dirname, '../../product.json'), 'utf8'));
-const builtInExtensions = productJson.builtInExtensions || [];
-const webBuiltInExtensions = productJson.webBuiltInExtensions || [];
-/**
- * Loosely based on `getExtensionKind` from `src/vs/workbench/services/extensions/common/extensionsUtil.ts`
- */
-function isWebExtension(manifest) {
-    if (typeof manifest.extensionKind !== 'undefined') {
-        const extensionKind = Array.isArray(manifest.extensionKind) ? manifest.extensionKind : [manifest.extensionKind];
-        return (extensionKind.indexOf('web') >= 0);
-    }
-    return (!Boolean(manifest.main) || Boolean(manifest.browser));
-}
-function packageLocalExtensionsStream(forWeb) {
-    const localExtensionsDescriptions = (glob.sync('extensions/*/package.json')
-        .map(manifestPath => {
-        const absoluteManifestPath = path.join(root, manifestPath);
-        const extensionPath = path.dirname(path.join(root, manifestPath));
-        const extensionName = path.basename(extensionPath);
-        return { name: extensionName, path: extensionPath, manifestPath: absoluteManifestPath };
-    })
-        .filter(({ name }) => excludedExtensions.indexOf(name) === -1)
-        .filter(({ name }) => builtInExtensions.every(b => b.name !== name))
-        .filter(({ manifestPath }) => (forWeb ? isWebExtension(require(manifestPath)) : true)));
-    const localExtensionsStream = minifyExtensionResources(es.merge(...localExtensionsDescriptions.map(extension => {
-        return fromLocal(extension.path, forWeb)
-            .pipe(rename(p => p.dirname = `extensions/${extension.name}/${p.dirname}`));
-    })));
-    let result;
-    if (forWeb) {
-        result = localExtensionsStream;
-    }
-    else {
-        // also include shared node modules
-        result = es.merge(localExtensionsStream, gulp.src('extensions/node_modules/**', { base: '.' }));
-    }
-    return (result
-        .pipe(util2.setExecutableBit(['**/*.sh'])));
-}
-exports.packageLocalExtensionsStream = packageLocalExtensionsStream;
-function packageMarketplaceExtensionsStream(forWeb) {
-    const marketplaceExtensionsDescriptions = [
-        ...builtInExtensions.filter(({ name }) => (forWeb ? !marketplaceWebExtensionsExclude.has(name) : true)),
-        ...(forWeb ? webBuiltInExtensions : [])
-    ];
-    const marketplaceExtensionsStream = minifyExtensionResources(es.merge(...marketplaceExtensionsDescriptions
-        .map(extension => {
-        const input = fromMarketplace(extension.name, extension.version, extension.metadata)
-            .pipe(rename(p => p.dirname = `extensions/${extension.name}/${p.dirname}`));
-        return updateExtensionPackageJSON(input, (data) => {
-            delete data.scripts;
-            delete data.dependencies;
-            delete data.devDependencies;
-            return data;
-        });
-    })));
-    return (marketplaceExtensionsStream
-        .pipe(util2.setExecutableBit(['**/*.sh'])));
-}
-exports.packageMarketplaceExtensionsStream = packageMarketplaceExtensionsStream;
-function scanBuiltinExtensions(extensionsRoot, exclude = []) {
-    const scannedExtensions = [];
-    try {
-        const extensionsFolders = fs.readdirSync(extensionsRoot);
-        for (const extensionFolder of extensionsFolders) {
-            if (exclude.indexOf(extensionFolder) >= 0) {
-                continue;
-            }
-            const packageJSONPath = path.join(extensionsRoot, extensionFolder, 'package.json');
-            if (!fs.existsSync(packageJSONPath)) {
-                continue;
-            }
-            let packageJSON = JSON.parse(fs.readFileSync(packageJSONPath).toString('utf8'));
-            if (!isWebExtension(packageJSON)) {
-                continue;
-            }
-            const children = fs.readdirSync(path.join(extensionsRoot, extensionFolder));
-            const packageNLSPath = children.filter(child => child === 'package.nls.json')[0];
-            const packageNLS = packageNLSPath ? JSON.parse(fs.readFileSync(path.join(extensionsRoot, extensionFolder, packageNLSPath)).toString()) : undefined;
-            const readme = children.filter(child => /^readme(\.txt|\.md|)$/i.test(child))[0];
-            const changelog = children.filter(child => /^changelog(\.txt|\.md|)$/i.test(child))[0];
-            scannedExtensions.push({
-                extensionPath: extensionFolder,
-                packageJSON,
-                packageNLS,
-                readmePath: readme ? path.join(extensionFolder, readme) : undefined,
-                changelogPath: changelog ? path.join(extensionFolder, changelog) : undefined,
-            });
-        }
-        return scannedExtensions;
-    }
-    catch (ex) {
-        return scannedExtensions;
-    }
-}
-exports.scanBuiltinExtensions = scanBuiltinExtensions;
-function translatePackageJSON(packageJSON, packageNLSPath) {
-    const CharCode_PC = '%'.charCodeAt(0);
-    const packageNls = JSON.parse(fs.readFileSync(packageNLSPath).toString());
-    const translate = (obj) => {
-        for (let key in obj) {
-            const val = obj[key];
-            if (Array.isArray(val)) {
-                val.forEach(translate);
-            }
-            else if (val && typeof val === 'object') {
-                translate(val);
-            }
-            else if (typeof val === 'string' && val.charCodeAt(0) === CharCode_PC && val.charCodeAt(val.length - 1) === CharCode_PC) {
-                const translated = packageNls[val.substr(1, val.length - 2)];
-                if (translated) {
-                    obj[key] = translated;
-                }
-            }
-        }
-    };
-    translate(packageJSON);
-    return packageJSON;
-}
-exports.translatePackageJSON = translatePackageJSON;
-const extensionsPath = path.join(root, 'extensions');
-// Additional projects to webpack. These typically build code for webviews
-const webpackMediaConfigFiles = [
-    'markdown-language-features/webpack.config.js',
-    'simple-browser/webpack.config.js',
-];
-// Additional projects to run esbuild on. These typically build code for webviews
-const esbuildMediaScripts = [
-    'markdown-language-features/esbuild.js',
-    'notebook-markdown-extensions/esbuild.js',
-];
-async function webpackExtensions(taskName, isWatch, webpackConfigLocations) {
-    const webpack = require('webpack');
-    const webpackConfigs = [];
-    for (const { configPath, outputRoot } of webpackConfigLocations) {
-        const configOrFnOrArray = require(configPath);
-        function addConfig(configOrFn) {
-            let config;
-            if (typeof configOrFn === 'function') {
-                config = configOrFn({}, {});
-                webpackConfigs.push(config);
-            }
-            else {
-                config = configOrFn;
-            }
-            if (outputRoot) {
-                config.output.path = path.join(outputRoot, path.relative(path.dirname(configPath), config.output.path));
-            }
-            webpackConfigs.push(configOrFn);
-        }
-        addConfig(configOrFnOrArray);
-    }
-    function reporter(fullStats) {
-        if (Array.isArray(fullStats.children)) {
-            for (const stats of fullStats.children) {
-                const outputPath = stats.outputPath;
-                if (outputPath) {
-                    const relativePath = path.relative(extensionsPath, outputPath).replace(/\\/g, '/');
-                    const match = relativePath.match(/[^\/]+(\/server|\/client)?/);
-                    fancyLog(`Finished ${ansiColors.green(taskName)} ${ansiColors.cyan(match[0])} with ${stats.errors.length} errors.`);
-                }
-                if (Array.isArray(stats.errors)) {
-                    stats.errors.forEach((error) => {
-                        fancyLog.error(error);
-                    });
-                }
-                if (Array.isArray(stats.warnings)) {
-                    stats.warnings.forEach((warning) => {
-                        fancyLog.warn(warning);
-                    });
-                }
-            }
-        }
-    }
-    return new Promise((resolve, reject) => {
-        if (isWatch) {
-            webpack(webpackConfigs).watch({}, (err, stats) => {
-                if (err) {
-                    reject();
-                }
-                else {
-                    reporter(stats.toJson());
-                }
-            });
-        }
-        else {
-            webpack(webpackConfigs).run((err, stats) => {
-                if (err) {
-                    fancyLog.error(err);
-                    reject();
-                }
-                else {
-                    reporter(stats.toJson());
-                    resolve();
-                }
-            });
-        }
-    });
-}
-exports.webpackExtensions = webpackExtensions;
-async function esbuildExtensions(taskName, isWatch, scripts) {
-    function reporter(stdError, script) {
-        const matches = (stdError || '').match(/\> (.+): error: (.+)?/g);
-        fancyLog(`Finished ${ansiColors.green(taskName)} ${script} with ${matches ? matches.length : 0} errors.`);
-        for (const match of matches || []) {
-            fancyLog.error(match);
-        }
-    }
-    const tasks = scripts.map(({ script, outputRoot }) => {
-        return new Promise((resolve, reject) => {
-            const args = [script];
-            if (isWatch) {
-                args.push('--watch');
-            }
-            if (outputRoot) {
-                args.push('--outputRoot', outputRoot);
-            }
-            const proc = cp.execFile(process.argv[0], args, {}, (error, _stdout, stderr) => {
-                if (error) {
-                    return reject(error);
-                }
-                reporter(stderr, script);
-                if (stderr) {
-                    return reject();
-                }
-                return resolve();
-            });
-            proc.stdout.on('data', (data) => {
-                fancyLog(`${ansiColors.green(taskName)}: ${data.toString('utf8')}`);
-            });
-        });
-    });
-    return Promise.all(tasks);
-}
-async function buildExtensionMedia(isWatch, outputRoot) {
-    return Promise.all([
-        webpackExtensions('webpacking extension media', isWatch, webpackMediaConfigFiles.map(p => {
-            return {
-                configPath: path.join(extensionsPath, p),
-                outputRoot: outputRoot ? path.join(root, outputRoot, path.dirname(p)) : undefined
-            };
-        })),
-        esbuildExtensions('esbuilding extension media', isWatch, esbuildMediaScripts.map(p => ({
-            script: path.join(extensionsPath, p),
-            outputRoot: outputRoot ? path.join(root, outputRoot, path.dirname(p)) : undefined
-        }))),
-    ]);
-}
-exports.buildExtensionMedia = buildExtensionMedia;
diff --git a/lib/vscode/build/lib/extensions.ts b/lib/vscode/build/lib/extensions.ts
deleted file mode 100644
index 9281bb19e20b..000000000000
--- a/lib/vscode/build/lib/extensions.ts
+++ /dev/null
@@ -1,542 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-import * as es from 'event-stream';
-import * as fs from 'fs';
-import * as cp from 'child_process';
-import * as glob from 'glob';
-import * as gulp from 'gulp';
-import * as path from 'path';
-import { Stream } from 'stream';
-import * as File from 'vinyl';
-import { createStatsStream } from './stats';
-import * as util2 from './util';
-const vzip = require('gulp-vinyl-zip');
-import filter = require('gulp-filter');
-import rename = require('gulp-rename');
-import * as fancyLog from 'fancy-log';
-import * as ansiColors from 'ansi-colors';
-const buffer = require('gulp-buffer');
-import * as jsoncParser from 'jsonc-parser';
-import webpack = require('webpack');
-const util = require('./util');
-const root = path.dirname(path.dirname(__dirname));
-const commit = util.getVersion(root);
-const sourceMappingURLBase = `https://ticino.blob.core.windows.net/sourcemaps/${commit}`;
-
-function minifyExtensionResources(input: Stream): Stream {
-	const jsonFilter = filter(['**/*.json', '**/*.code-snippets'], { restore: true });
-	return input
-		.pipe(jsonFilter)
-		.pipe(buffer())
-		.pipe(es.mapSync((f: File) => {
-			const errors: jsoncParser.ParseError[] = [];
-			const value = jsoncParser.parse(f.contents.toString('utf8'), errors);
-			if (errors.length === 0) {
-				// file parsed OK => just stringify to drop whitespace and comments
-				f.contents = Buffer.from(JSON.stringify(value));
-			}
-			return f;
-		}))
-		.pipe(jsonFilter.restore);
-}
-
-function updateExtensionPackageJSON(input: Stream, update: (data: any) => any): Stream {
-	const packageJsonFilter = filter('extensions/*/package.json', { restore: true });
-	return input
-		.pipe(packageJsonFilter)
-		.pipe(buffer())
-		.pipe(es.mapSync((f: File) => {
-			const data = JSON.parse(f.contents.toString('utf8'));
-			f.contents = Buffer.from(JSON.stringify(update(data)));
-			return f;
-		}))
-		.pipe(packageJsonFilter.restore);
-}
-
-function fromLocal(extensionPath: string, forWeb: boolean): Stream {
-	const webpackConfigFileName = forWeb ? 'extension-browser.webpack.config.js' : 'extension.webpack.config.js';
-
-	const isWebPacked = fs.existsSync(path.join(extensionPath, webpackConfigFileName));
-	let input = isWebPacked
-		? fromLocalWebpack(extensionPath, webpackConfigFileName)
-		: fromLocalNormal(extensionPath);
-
-	if (isWebPacked) {
-		input = updateExtensionPackageJSON(input, (data: any) => {
-			delete data.scripts;
-			// https://github.com/cdr/code-server/pull/2041#issuecomment-685910322
-			delete data.devDependencies;
-			if (data.main) {
-				data.main = data.main.replace('/out/', /dist/);
-			}
-			return data;
-		});
-	}
-
-	return input;
-}
-
-
-function fromLocalWebpack(extensionPath: string, webpackConfigFileName: string): Stream {
-	const result = es.through();
-
-	const packagedDependencies: string[] = [];
-	const packageJsonConfig = require(path.join(extensionPath, 'package.json'));
-	if (packageJsonConfig.dependencies) {
-		const webpackRootConfig = require(path.join(extensionPath, webpackConfigFileName));
-		for (const key in webpackRootConfig.externals) {
-			if (key in packageJsonConfig.dependencies) {
-				packagedDependencies.push(key);
-			}
-		}
-	}
-
-	const vsce = require('vsce') as typeof import('vsce');
-	const webpack = require('webpack');
-	const webpackGulp = require('webpack-stream');
-
-	vsce.listFiles({ cwd: extensionPath, packageManager: vsce.PackageManager.Yarn, packagedDependencies }).then(fileNames => {
-		const files = fileNames
-			.map(fileName => path.join(extensionPath, fileName))
-			.map(filePath => new File({
-				path: filePath,
-				stat: fs.statSync(filePath),
-				base: extensionPath,
-				contents: fs.createReadStream(filePath) as any
-			}));
-
-		// check for a webpack configuration files, then invoke webpack
-		// and merge its output with the files stream.
-		const webpackConfigLocations = (<string[]>glob.sync(
-			path.join(extensionPath, '**', webpackConfigFileName),
-			{ ignore: ['**/node_modules'] }
-		));
-
-		const webpackStreams = webpackConfigLocations.map(webpackConfigPath => {
-
-			const webpackDone = (err: any, stats: any) => {
-				fancyLog(`Bundled extension: ${ansiColors.yellow(path.join(path.basename(extensionPath), path.relative(extensionPath, webpackConfigPath)))}...`);
-				if (err) {
-					result.emit('error', err);
-				}
-				const { compilation } = stats;
-				if (compilation.errors.length > 0) {
-					result.emit('error', compilation.errors.join('\n'));
-				}
-				if (compilation.warnings.length > 0) {
-					result.emit('error', compilation.warnings.join('\n'));
-				}
-			};
-
-			const webpackConfig = {
-				...require(webpackConfigPath),
-				...{ mode: 'production' }
-			};
-			const relativeOutputPath = path.relative(extensionPath, webpackConfig.output.path);
-
-			return webpackGulp(webpackConfig, webpack, webpackDone)
-				.pipe(es.through(function (data) {
-					data.stat = data.stat || {};
-					data.base = extensionPath;
-					this.emit('data', data);
-				}))
-				.pipe(es.through(function (data: File) {
-					// source map handling:
-					// * rewrite sourceMappingURL
-					// * save to disk so that upload-task picks this up
-					const contents = (<Buffer>data.contents).toString('utf8');
-					data.contents = Buffer.from(contents.replace(/\n\/\/# sourceMappingURL=(.*)$/gm, function (_m, g1) {
-						return `\n//# sourceMappingURL=${sourceMappingURLBase}/extensions/${path.basename(extensionPath)}/${relativeOutputPath}/${g1}`;
-					}), 'utf8');
-
-					this.emit('data', data);
-				}));
-		});
-
-		es.merge(...webpackStreams, es.readArray(files))
-			// .pipe(es.through(function (data) {
-			// 	// debug
-			// 	console.log('out', data.path, data.contents.length);
-			// 	this.emit('data', data);
-			// }))
-			.pipe(result);
-
-	}).catch(err => {
-		console.error(extensionPath);
-		console.error(packagedDependencies);
-		result.emit('error', err);
-	});
-
-	return result.pipe(createStatsStream(path.basename(extensionPath)));
-}
-
-function fromLocalNormal(extensionPath: string): Stream {
-	const result = es.through();
-
-	const vsce = require('vsce') as typeof import('vsce');
-
-	vsce.listFiles({ cwd: extensionPath, packageManager: vsce.PackageManager.Yarn })
-		.then(fileNames => {
-			const files = fileNames
-				.map(fileName => path.join(extensionPath, fileName))
-				.map(filePath => new File({
-					path: filePath,
-					stat: fs.statSync(filePath),
-					base: extensionPath,
-					contents: fs.createReadStream(filePath) as any
-				}));
-
-			es.readArray(files).pipe(result);
-		})
-		.catch(err => result.emit('error', err));
-
-	return result.pipe(createStatsStream(path.basename(extensionPath)));
-}
-
-const baseHeaders = {
-	'X-Market-Client-Id': 'VSCode Build',
-	'User-Agent': 'VSCode Build',
-	'X-Market-User-Id': '291C1CD0-051A-4123-9B4B-30D60EF52EE2',
-};
-
-export function fromMarketplace(extensionName: string, version: string, metadata: any): Stream {
-	const remote = require('gulp-remote-retry-src');
-	const json = require('gulp-json-editor') as typeof import('gulp-json-editor');
-
-	const [publisher, name] = extensionName.split('.');
-	const url = `https://marketplace.visualstudio.com/_apis/public/gallery/publishers/${publisher}/vsextensions/${name}/${version}/vspackage`;
-
-	fancyLog('Downloading extension:', ansiColors.yellow(`${extensionName}@${version}`), '...');
-
-	const options = {
-		base: url,
-		requestOptions: {
-			gzip: true,
-			headers: baseHeaders
-		}
-	};
-
-	const packageJsonFilter = filter('package.json', { restore: true });
-
-	return remote('', options)
-		.pipe(vzip.src())
-		.pipe(filter('extension/**'))
-		.pipe(rename(p => p.dirname = p.dirname!.replace(/^extension\/?/, '')))
-		.pipe(packageJsonFilter)
-		.pipe(buffer())
-		.pipe(json({ __metadata: metadata }))
-		.pipe(packageJsonFilter.restore);
-}
-const excludedExtensions = [
-	'vscode-api-tests',
-	'vscode-colorize-tests',
-	'vscode-test-resolver',
-	'ms-vscode.node-debug',
-	'ms-vscode.node-debug2',
-	'vscode-notebook-tests',
-	'vscode-custom-editor-tests',
-];
-
-const marketplaceWebExtensionsExclude = new Set([
-	'ms-vscode.node-debug',
-	'ms-vscode.node-debug2',
-	'ms-vscode.js-debug-companion',
-	'ms-vscode.js-debug',
-	'ms-vscode.vscode-js-profile-table'
-]);
-
-interface IBuiltInExtension {
-	name: string;
-	version: string;
-	repo: string;
-	metadata: any;
-}
-
-const productJson = JSON.parse(fs.readFileSync(path.join(__dirname, '../../product.json'), 'utf8'));
-const builtInExtensions: IBuiltInExtension[] = productJson.builtInExtensions || [];
-const webBuiltInExtensions: IBuiltInExtension[] = productJson.webBuiltInExtensions || [];
-
-type ExtensionKind = 'ui' | 'workspace' | 'web';
-interface IExtensionManifest {
-	main: string;
-	browser: string;
-	extensionKind?: ExtensionKind | ExtensionKind[];
-}
-/**
- * Loosely based on `getExtensionKind` from `src/vs/workbench/services/extensions/common/extensionsUtil.ts`
- */
-function isWebExtension(manifest: IExtensionManifest): boolean {
-	if (typeof manifest.extensionKind !== 'undefined') {
-		const extensionKind = Array.isArray(manifest.extensionKind) ? manifest.extensionKind : [manifest.extensionKind];
-		return (extensionKind.indexOf('web') >= 0);
-	}
-	return (!Boolean(manifest.main) || Boolean(manifest.browser));
-}
-
-export function packageLocalExtensionsStream(forWeb: boolean): Stream {
-	const localExtensionsDescriptions = (
-		(<string[]>glob.sync('extensions/*/package.json'))
-			.map(manifestPath => {
-				const absoluteManifestPath = path.join(root, manifestPath);
-				const extensionPath = path.dirname(path.join(root, manifestPath));
-				const extensionName = path.basename(extensionPath);
-				return { name: extensionName, path: extensionPath, manifestPath: absoluteManifestPath };
-			})
-			.filter(({ name }) => excludedExtensions.indexOf(name) === -1)
-			.filter(({ name }) => builtInExtensions.every(b => b.name !== name))
-			.filter(({ manifestPath }) => (forWeb ? isWebExtension(require(manifestPath)) : true))
-	);
-	const localExtensionsStream = minifyExtensionResources(
-		es.merge(
-			...localExtensionsDescriptions.map(extension => {
-				return fromLocal(extension.path, forWeb)
-					.pipe(rename(p => p.dirname = `extensions/${extension.name}/${p.dirname}`));
-			})
-		)
-	);
-
-	let result: Stream;
-	if (forWeb) {
-		result = localExtensionsStream;
-	} else {
-		// also include shared node modules
-		result = es.merge(localExtensionsStream, gulp.src('extensions/node_modules/**', { base: '.' }));
-	}
-
-	return (
-		result
-			.pipe(util2.setExecutableBit(['**/*.sh']))
-	);
-}
-
-export function packageMarketplaceExtensionsStream(forWeb: boolean): Stream {
-	const marketplaceExtensionsDescriptions = [
-		...builtInExtensions.filter(({ name }) => (forWeb ? !marketplaceWebExtensionsExclude.has(name) : true)),
-		...(forWeb ? webBuiltInExtensions : [])
-	];
-	const marketplaceExtensionsStream = minifyExtensionResources(
-		es.merge(
-			...marketplaceExtensionsDescriptions
-				.map(extension => {
-					const input = fromMarketplace(extension.name, extension.version, extension.metadata)
-						.pipe(rename(p => p.dirname = `extensions/${extension.name}/${p.dirname}`));
-					return updateExtensionPackageJSON(input, (data: any) => {
-						delete data.scripts;
-						delete data.dependencies;
-						delete data.devDependencies;
-						return data;
-					});
-				})
-		)
-	);
-
-	return (
-		marketplaceExtensionsStream
-			.pipe(util2.setExecutableBit(['**/*.sh']))
-	);
-}
-
-export interface IScannedBuiltinExtension {
-	extensionPath: string;
-	packageJSON: any;
-	packageNLS?: any;
-	readmePath?: string;
-	changelogPath?: string;
-}
-
-export function scanBuiltinExtensions(extensionsRoot: string, exclude: string[] = []): IScannedBuiltinExtension[] {
-	const scannedExtensions: IScannedBuiltinExtension[] = [];
-
-	try {
-		const extensionsFolders = fs.readdirSync(extensionsRoot);
-		for (const extensionFolder of extensionsFolders) {
-			if (exclude.indexOf(extensionFolder) >= 0) {
-				continue;
-			}
-			const packageJSONPath = path.join(extensionsRoot, extensionFolder, 'package.json');
-			if (!fs.existsSync(packageJSONPath)) {
-				continue;
-			}
-			let packageJSON = JSON.parse(fs.readFileSync(packageJSONPath).toString('utf8'));
-			if (!isWebExtension(packageJSON)) {
-				continue;
-			}
-			const children = fs.readdirSync(path.join(extensionsRoot, extensionFolder));
-			const packageNLSPath = children.filter(child => child === 'package.nls.json')[0];
-			const packageNLS = packageNLSPath ? JSON.parse(fs.readFileSync(path.join(extensionsRoot, extensionFolder, packageNLSPath)).toString()) : undefined;
-			const readme = children.filter(child => /^readme(\.txt|\.md|)$/i.test(child))[0];
-			const changelog = children.filter(child => /^changelog(\.txt|\.md|)$/i.test(child))[0];
-
-			scannedExtensions.push({
-				extensionPath: extensionFolder,
-				packageJSON,
-				packageNLS,
-				readmePath: readme ? path.join(extensionFolder, readme) : undefined,
-				changelogPath: changelog ? path.join(extensionFolder, changelog) : undefined,
-			});
-		}
-		return scannedExtensions;
-	} catch (ex) {
-		return scannedExtensions;
-	}
-}
-
-export function translatePackageJSON(packageJSON: string, packageNLSPath: string) {
-	const CharCode_PC = '%'.charCodeAt(0);
-	const packageNls = JSON.parse(fs.readFileSync(packageNLSPath).toString());
-	const translate = (obj: any) => {
-		for (let key in obj) {
-			const val = obj[key];
-			if (Array.isArray(val)) {
-				val.forEach(translate);
-			} else if (val && typeof val === 'object') {
-				translate(val);
-			} else if (typeof val === 'string' && val.charCodeAt(0) === CharCode_PC && val.charCodeAt(val.length - 1) === CharCode_PC) {
-				const translated = packageNls[val.substr(1, val.length - 2)];
-				if (translated) {
-					obj[key] = translated;
-				}
-			}
-		}
-	};
-	translate(packageJSON);
-	return packageJSON;
-}
-
-const extensionsPath = path.join(root, 'extensions');
-
-// Additional projects to webpack. These typically build code for webviews
-const webpackMediaConfigFiles = [
-	'markdown-language-features/webpack.config.js',
-	'simple-browser/webpack.config.js',
-];
-
-// Additional projects to run esbuild on. These typically build code for webviews
-const esbuildMediaScripts = [
-	'markdown-language-features/esbuild.js',
-	'notebook-markdown-extensions/esbuild.js',
-];
-
-export async function webpackExtensions(taskName: string, isWatch: boolean, webpackConfigLocations: { configPath: string, outputRoot?: string }[]) {
-	const webpack = require('webpack') as typeof import('webpack');
-
-	const webpackConfigs: webpack.Configuration[] = [];
-
-	for (const { configPath, outputRoot } of webpackConfigLocations) {
-		const configOrFnOrArray = require(configPath);
-		function addConfig(configOrFn: webpack.Configuration | Function) {
-			let config;
-			if (typeof configOrFn === 'function') {
-				config = configOrFn({}, {});
-				webpackConfigs.push(config);
-			} else {
-				config = configOrFn;
-			}
-
-			if (outputRoot) {
-				config.output.path = path.join(outputRoot, path.relative(path.dirname(configPath), config.output.path));
-			}
-
-			webpackConfigs.push(configOrFn);
-		}
-		addConfig(configOrFnOrArray);
-	}
-	function reporter(fullStats: any) {
-		if (Array.isArray(fullStats.children)) {
-			for (const stats of fullStats.children) {
-				const outputPath = stats.outputPath;
-				if (outputPath) {
-					const relativePath = path.relative(extensionsPath, outputPath).replace(/\\/g, '/');
-					const match = relativePath.match(/[^\/]+(\/server|\/client)?/);
-					fancyLog(`Finished ${ansiColors.green(taskName)} ${ansiColors.cyan(match![0])} with ${stats.errors.length} errors.`);
-				}
-				if (Array.isArray(stats.errors)) {
-					stats.errors.forEach((error: any) => {
-						fancyLog.error(error);
-					});
-				}
-				if (Array.isArray(stats.warnings)) {
-					stats.warnings.forEach((warning: any) => {
-						fancyLog.warn(warning);
-					});
-				}
-			}
-		}
-	}
-	return new Promise<void>((resolve, reject) => {
-		if (isWatch) {
-			webpack(webpackConfigs).watch({}, (err, stats) => {
-				if (err) {
-					reject();
-				} else {
-					reporter(stats.toJson());
-				}
-			});
-		} else {
-			webpack(webpackConfigs).run((err, stats) => {
-				if (err) {
-					fancyLog.error(err);
-					reject();
-				} else {
-					reporter(stats.toJson());
-					resolve();
-				}
-			});
-		}
-	});
-}
-
-async function esbuildExtensions(taskName: string, isWatch: boolean, scripts: { script: string, outputRoot?: string }[]) {
-	function reporter(stdError: string, script: string) {
-		const matches = (stdError || '').match(/\> (.+): error: (.+)?/g);
-		fancyLog(`Finished ${ansiColors.green(taskName)} ${script} with ${matches ? matches.length : 0} errors.`);
-		for (const match of matches || []) {
-			fancyLog.error(match);
-		}
-	}
-
-	const tasks = scripts.map(({ script, outputRoot }) => {
-		return new Promise<void>((resolve, reject) => {
-			const args = [script];
-			if (isWatch) {
-				args.push('--watch');
-			}
-			if (outputRoot) {
-				args.push('--outputRoot', outputRoot);
-			}
-			const proc = cp.execFile(process.argv[0], args, {}, (error, _stdout, stderr) => {
-				if (error) {
-					return reject(error);
-				}
-				reporter(stderr, script);
-				if (stderr) {
-					return reject();
-				}
-				return resolve();
-			});
-
-			proc.stdout!.on('data', (data) => {
-				fancyLog(`${ansiColors.green(taskName)}: ${data.toString('utf8')}`);
-			});
-		});
-	});
-	return Promise.all(tasks);
-}
-
-export async function buildExtensionMedia(isWatch: boolean, outputRoot?: string) {
-	return Promise.all([
-		webpackExtensions('webpacking extension media', isWatch, webpackMediaConfigFiles.map(p => {
-			return {
-				configPath: path.join(extensionsPath, p),
-				outputRoot: outputRoot ? path.join(root, outputRoot, path.dirname(p)) : undefined
-			};
-		})),
-		esbuildExtensions('esbuilding extension media', isWatch, esbuildMediaScripts.map(p => ({
-			script: path.join(extensionsPath, p),
-			outputRoot: outputRoot ? path.join(root, outputRoot, path.dirname(p)) : undefined
-		}))),
-	]);
-}
diff --git a/lib/vscode/build/lib/git.js b/lib/vscode/build/lib/git.js
deleted file mode 100644
index 1726f76fcc79..000000000000
--- a/lib/vscode/build/lib/git.js
+++ /dev/null
@@ -1,54 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-'use strict';
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.getVersion = void 0;
-const path = require("path");
-const fs = require("fs");
-/**
- * Returns the sha1 commit version of a repository or undefined in case of failure.
- */
-function getVersion(repo) {
-    const git = path.join(repo, '.git');
-    const headPath = path.join(git, 'HEAD');
-    let head;
-    try {
-        head = fs.readFileSync(headPath, 'utf8').trim();
-    }
-    catch (e) {
-        return undefined;
-    }
-    if (/^[0-9a-f]{40}$/i.test(head)) {
-        return head;
-    }
-    const refMatch = /^ref: (.*)$/.exec(head);
-    if (!refMatch) {
-        return undefined;
-    }
-    const ref = refMatch[1];
-    const refPath = path.join(git, ref);
-    try {
-        return fs.readFileSync(refPath, 'utf8').trim();
-    }
-    catch (e) {
-        // noop
-    }
-    const packedRefsPath = path.join(git, 'packed-refs');
-    let refsRaw;
-    try {
-        refsRaw = fs.readFileSync(packedRefsPath, 'utf8').trim();
-    }
-    catch (e) {
-        return undefined;
-    }
-    const refsRegex = /^([0-9a-f]{40})\s+(.+)$/gm;
-    let refsMatch;
-    let refs = {};
-    while (refsMatch = refsRegex.exec(refsRaw)) {
-        refs[refsMatch[2]] = refsMatch[1];
-    }
-    return refs[ref];
-}
-exports.getVersion = getVersion;
diff --git a/lib/vscode/build/lib/git.ts b/lib/vscode/build/lib/git.ts
deleted file mode 100644
index dc9c667c21b2..000000000000
--- a/lib/vscode/build/lib/git.ts
+++ /dev/null
@@ -1,61 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-'use strict';
-
-import * as path from 'path';
-import * as fs from 'fs';
-
-/**
- * Returns the sha1 commit version of a repository or undefined in case of failure.
- */
-export function getVersion(repo: string): string | undefined {
-	const git = path.join(repo, '.git');
-	const headPath = path.join(git, 'HEAD');
-	let head: string;
-
-	try {
-		head = fs.readFileSync(headPath, 'utf8').trim();
-	} catch (e) {
-		return undefined;
-	}
-
-	if (/^[0-9a-f]{40}$/i.test(head)) {
-		return head;
-	}
-
-	const refMatch = /^ref: (.*)$/.exec(head);
-
-	if (!refMatch) {
-		return undefined;
-	}
-
-	const ref = refMatch[1];
-	const refPath = path.join(git, ref);
-
-	try {
-		return fs.readFileSync(refPath, 'utf8').trim();
-	} catch (e) {
-		// noop
-	}
-
-	const packedRefsPath = path.join(git, 'packed-refs');
-	let refsRaw: string;
-
-	try {
-		refsRaw = fs.readFileSync(packedRefsPath, 'utf8').trim();
-	} catch (e) {
-		return undefined;
-	}
-
-	const refsRegex = /^([0-9a-f]{40})\s+(.+)$/gm;
-	let refsMatch: RegExpExecArray | null;
-	let refs: { [ref: string]: string } = {};
-
-	while (refsMatch = refsRegex.exec(refsRaw)) {
-		refs[refsMatch[2]] = refsMatch[1];
-	}
-
-	return refs[ref];
-}
diff --git a/lib/vscode/build/lib/i18n.js b/lib/vscode/build/lib/i18n.js
deleted file mode 100644
index 4c7c5c32eb44..000000000000
--- a/lib/vscode/build/lib/i18n.js
+++ /dev/null
@@ -1,1163 +0,0 @@
-"use strict";
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.prepareIslFiles = exports.prepareI18nPackFiles = exports.prepareI18nFiles = exports.pullSetupXlfFiles = exports.findObsoleteResources = exports.pushXlfFiles = exports.createXlfFilesForIsl = exports.createXlfFilesForExtensions = exports.createXlfFilesForCoreBundle = exports.getResource = exports.processNlsFiles = exports.Limiter = exports.XLF = exports.Line = exports.externalExtensionsWithTranslations = exports.extraLanguages = exports.defaultLanguages = void 0;
-const path = require("path");
-const fs = require("fs");
-const event_stream_1 = require("event-stream");
-const File = require("vinyl");
-const Is = require("is");
-const xml2js = require("xml2js");
-const https = require("https");
-const gulp = require("gulp");
-const fancyLog = require("fancy-log");
-const ansiColors = require("ansi-colors");
-const iconv = require("iconv-lite-umd");
-const NUMBER_OF_CONCURRENT_DOWNLOADS = 4;
-function log(message, ...rest) {
-	fancyLog(ansiColors.green('[i18n]'), message, ...rest);
-}
-exports.defaultLanguages = [
-	{ id: 'zh-tw', folderName: 'cht', translationId: 'zh-hant' },
-	{ id: 'zh-cn', folderName: 'chs', translationId: 'zh-hans' },
-	{ id: 'ja', folderName: 'jpn' },
-	{ id: 'ko', folderName: 'kor' },
-	{ id: 'de', folderName: 'deu' },
-	{ id: 'fr', folderName: 'fra' },
-	{ id: 'es', folderName: 'esn' },
-	{ id: 'ru', folderName: 'rus' },
-	{ id: 'it', folderName: 'ita' }
-];
-// languages requested by the community to non-stable builds
-exports.extraLanguages = [
-	{ id: 'pt-br', folderName: 'ptb' },
-	{ id: 'hu', folderName: 'hun' },
-	{ id: 'tr', folderName: 'trk' }
-];
-// non built-in extensions also that are transifex and need to be part of the language packs
-exports.externalExtensionsWithTranslations = {
-	'vscode-chrome-debug': 'msjsdiag.debugger-for-chrome',
-	'vscode-node-debug': 'ms-vscode.node-debug',
-	'vscode-node-debug2': 'ms-vscode.node-debug2'
-};
-var LocalizeInfo;
-(function (LocalizeInfo) {
-	function is(value) {
-		let candidate = value;
-		return Is.defined(candidate) && Is.string(candidate.key) && (Is.undef(candidate.comment) || (Is.array(candidate.comment) && candidate.comment.every(element => Is.string(element))));
-	}
-	LocalizeInfo.is = is;
-})(LocalizeInfo || (LocalizeInfo = {}));
-var BundledFormat;
-(function (BundledFormat) {
-	function is(value) {
-		if (Is.undef(value)) {
-			return false;
-		}
-		let candidate = value;
-		let length = Object.keys(value).length;
-		return length === 3 && Is.defined(candidate.keys) && Is.defined(candidate.messages) && Is.defined(candidate.bundles);
-	}
-	BundledFormat.is = is;
-})(BundledFormat || (BundledFormat = {}));
-var PackageJsonFormat;
-(function (PackageJsonFormat) {
-	function is(value) {
-		if (Is.undef(value) || !Is.object(value)) {
-			return false;
-		}
-		return Object.keys(value).every(key => {
-			let element = value[key];
-			return Is.string(element) || (Is.object(element) && Is.defined(element.message) && Is.defined(element.comment));
-		});
-	}
-	PackageJsonFormat.is = is;
-})(PackageJsonFormat || (PackageJsonFormat = {}));
-class Line {
-	constructor(indent = 0) {
-		this.buffer = [];
-		if (indent > 0) {
-			this.buffer.push(new Array(indent + 1).join(' '));
-		}
-	}
-	append(value) {
-		this.buffer.push(value);
-		return this;
-	}
-	toString() {
-		return this.buffer.join('');
-	}
-}
-exports.Line = Line;
-class TextModel {
-	constructor(contents) {
-		this._lines = contents.split(/\r\n|\r|\n/);
-	}
-	get lines() {
-		return this._lines;
-	}
-}
-class XLF {
-	constructor(project) {
-		this.project = project;
-		this.buffer = [];
-		this.files = Object.create(null);
-		this.numberOfMessages = 0;
-	}
-	toString() {
-		this.appendHeader();
-		const files = Object.keys(this.files).sort();
-		for (const file of files) {
-			this.appendNewLine(`<file original="${file}" source-language="en" datatype="plaintext"><body>`, 2);
-			const items = this.files[file].sort((a, b) => {
-				return a.id < b.id ? -1 : a.id > b.id ? 1 : 0;
-			});
-			for (const item of items) {
-				this.addStringItem(file, item);
-			}
-			this.appendNewLine('</body></file>');
-		}
-		this.appendFooter();
-		return this.buffer.join('\r\n');
-	}
-	addFile(original, keys, messages) {
-		if (keys.length === 0) {
-			console.log('No keys in ' + original);
-			return;
-		}
-		if (keys.length !== messages.length) {
-			throw new Error(`Unmatching keys(${keys.length}) and messages(${messages.length}).`);
-		}
-		this.numberOfMessages += keys.length;
-		this.files[original] = [];
-		let existingKeys = new Set();
-		for (let i = 0; i < keys.length; i++) {
-			let key = keys[i];
-			let realKey;
-			let comment;
-			if (Is.string(key)) {
-				realKey = key;
-				comment = undefined;
-			}
-			else if (LocalizeInfo.is(key)) {
-				realKey = key.key;
-				if (key.comment && key.comment.length > 0) {
-					comment = key.comment.map(comment => encodeEntities(comment)).join('\r\n');
-				}
-			}
-			if (!realKey || existingKeys.has(realKey)) {
-				continue;
-			}
-			existingKeys.add(realKey);
-			let message = encodeEntities(messages[i]);
-			this.files[original].push({ id: realKey, message: message, comment: comment });
-		}
-	}
-	addStringItem(file, item) {
-		if (!item.id || item.message === undefined || item.message === null) {
-			throw new Error(`No item ID or value specified: ${JSON.stringify(item)}. File: ${file}`);
-		}
-		if (item.message.length === 0) {
-			log(`Item with id ${item.id} in file ${file} has an empty message.`);
-		}
-		this.appendNewLine(`<trans-unit id="${item.id}">`, 4);
-		this.appendNewLine(`<source xml:lang="en">${item.message}</source>`, 6);
-		if (item.comment) {
-			this.appendNewLine(`<note>${item.comment}</note>`, 6);
-		}
-		this.appendNewLine('</trans-unit>', 4);
-	}
-	appendHeader() {
-		this.appendNewLine('<?xml version="1.0" encoding="utf-8"?>', 0);
-		this.appendNewLine('<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">', 0);
-	}
-	appendFooter() {
-		this.appendNewLine('</xliff>', 0);
-	}
-	appendNewLine(content, indent) {
-		let line = new Line(indent);
-		line.append(content);
-		this.buffer.push(line.toString());
-	}
-}
-exports.XLF = XLF;
-XLF.parsePseudo = function (xlfString) {
-	return new Promise((resolve) => {
-		let parser = new xml2js.Parser();
-		let files = [];
-		parser.parseString(xlfString, function (_err, result) {
-			const fileNodes = result['xliff']['file'];
-			fileNodes.forEach(file => {
-				const originalFilePath = file.$.original;
-				const messages = {};
-				const transUnits = file.body[0]['trans-unit'];
-				if (transUnits) {
-					transUnits.forEach((unit) => {
-						const key = unit.$.id;
-						const val = pseudify(unit.source[0]['_'].toString());
-						if (key && val) {
-							messages[key] = decodeEntities(val);
-						}
-					});
-					files.push({ messages: messages, originalFilePath: originalFilePath, language: 'ps' });
-				}
-			});
-			resolve(files);
-		});
-	});
-};
-XLF.parse = function (xlfString) {
-	return new Promise((resolve, reject) => {
-		let parser = new xml2js.Parser();
-		let files = [];
-		parser.parseString(xlfString, function (err, result) {
-			if (err) {
-				reject(new Error(`XLF parsing error: Failed to parse XLIFF string. ${err}`));
-			}
-			const fileNodes = result['xliff']['file'];
-			if (!fileNodes) {
-				reject(new Error(`XLF parsing error: XLIFF file does not contain "xliff" or "file" node(s) required for parsing.`));
-			}
-			fileNodes.forEach((file) => {
-				const originalFilePath = file.$.original;
-				if (!originalFilePath) {
-					reject(new Error(`XLF parsing error: XLIFF file node does not contain original attribute to determine the original location of the resource file.`));
-				}
-				let language = file.$['target-language'];
-				if (!language) {
-					reject(new Error(`XLF parsing error: XLIFF file node does not contain target-language attribute to determine translated language.`));
-				}
-				const messages = {};
-				const transUnits = file.body[0]['trans-unit'];
-				if (transUnits) {
-					transUnits.forEach((unit) => {
-						const key = unit.$.id;
-						if (!unit.target) {
-							return; // No translation available
-						}
-						let val = unit.target[0];
-						if (typeof val !== 'string') {
-							// We allow empty source values so support them for translations as well.
-							val = val._ ? val._ : '';
-						}
-						if (!key) {
-							reject(new Error(`XLF parsing error: trans-unit ${JSON.stringify(unit, undefined, 0)} defined in file ${originalFilePath} is missing the ID attribute.`));
-							return;
-						}
-						messages[key] = decodeEntities(val);
-					});
-					files.push({ messages: messages, originalFilePath: originalFilePath, language: language.toLowerCase() });
-				}
-			});
-			resolve(files);
-		});
-	});
-};
-class Limiter {
-	constructor(maxDegreeOfParalellism) {
-		this.maxDegreeOfParalellism = maxDegreeOfParalellism;
-		this.outstandingPromises = [];
-		this.runningPromises = 0;
-	}
-	queue(factory) {
-		return new Promise((c, e) => {
-			this.outstandingPromises.push({ factory, c, e });
-			this.consume();
-		});
-	}
-	consume() {
-		while (this.outstandingPromises.length && this.runningPromises < this.maxDegreeOfParalellism) {
-			const iLimitedTask = this.outstandingPromises.shift();
-			this.runningPromises++;
-			const promise = iLimitedTask.factory();
-			promise.then(iLimitedTask.c).catch(iLimitedTask.e);
-			promise.then(() => this.consumed()).catch(() => this.consumed());
-		}
-	}
-	consumed() {
-		this.runningPromises--;
-		this.consume();
-	}
-}
-exports.Limiter = Limiter;
-function sortLanguages(languages) {
-	return languages.sort((a, b) => {
-		return a.id < b.id ? -1 : (a.id > b.id ? 1 : 0);
-	});
-}
-function stripComments(content) {
-	/**
-	* First capturing group matches double quoted string
-	* Second matches single quotes string
-	* Third matches block comments
-	* Fourth matches line comments
-	*/
-	const regexp = /("(?:[^\\\"]*(?:\\.)?)*")|('(?:[^\\\']*(?:\\.)?)*')|(\/\*(?:\r?\n|.)*?\*\/)|(\/{2,}.*?(?:(?:\r?\n)|$))/g;
-	let result = content.replace(regexp, (match, _m1, _m2, m3, m4) => {
-		// Only one of m1, m2, m3, m4 matches
-		if (m3) {
-			// A block comment. Replace with nothing
-			return '';
-		}
-		else if (m4) {
-			// A line comment. If it ends in \r?\n then keep it.
-			let length = m4.length;
-			if (length > 2 && m4[length - 1] === '\n') {
-				return m4[length - 2] === '\r' ? '\r\n' : '\n';
-			}
-			else {
-				return '';
-			}
-		}
-		else {
-			// We match a string
-			return match;
-		}
-	});
-	return result;
-}
-function escapeCharacters(value) {
-	const result = [];
-	for (let i = 0; i < value.length; i++) {
-		const ch = value.charAt(i);
-		switch (ch) {
-			case '\'':
-				result.push('\\\'');
-				break;
-			case '"':
-				result.push('\\"');
-				break;
-			case '\\':
-				result.push('\\\\');
-				break;
-			case '\n':
-				result.push('\\n');
-				break;
-			case '\r':
-				result.push('\\r');
-				break;
-			case '\t':
-				result.push('\\t');
-				break;
-			case '\b':
-				result.push('\\b');
-				break;
-			case '\f':
-				result.push('\\f');
-				break;
-			default:
-				result.push(ch);
-		}
-	}
-	return result.join('');
-}
-function processCoreBundleFormat(fileHeader, languages, json, emitter) {
-	let keysSection = json.keys;
-	let messageSection = json.messages;
-	let bundleSection = json.bundles;
-	let statistics = Object.create(null);
-	let defaultMessages = Object.create(null);
-	let modules = Object.keys(keysSection);
-	modules.forEach((module) => {
-		let keys = keysSection[module];
-		let messages = messageSection[module];
-		if (!messages || keys.length !== messages.length) {
-			emitter.emit('error', `Message for module ${module} corrupted. Mismatch in number of keys and messages.`);
-			return;
-		}
-		let messageMap = Object.create(null);
-		defaultMessages[module] = messageMap;
-		keys.map((key, i) => {
-			if (typeof key === 'string') {
-				messageMap[key] = messages[i];
-			}
-			else {
-				messageMap[key.key] = messages[i];
-			}
-		});
-	});
-	let languageDirectory = path.join(__dirname, '..', '..', '..', 'vscode-loc', 'i18n');
-	if (!fs.existsSync(languageDirectory)) {
-		log(`No VS Code localization repository found. Looking at ${languageDirectory}`);
-		log(`To bundle translations please check out the vscode-loc repository as a sibling of the vscode repository.`);
-	}
-	let sortedLanguages = sortLanguages(languages);
-	sortedLanguages.forEach((language) => {
-		if (process.env['VSCODE_BUILD_VERBOSE']) {
-			log(`Generating nls bundles for: ${language.id}`);
-		}
-		statistics[language.id] = 0;
-		let localizedModules = Object.create(null);
-		let languageFolderName = language.translationId || language.id;
-		let i18nFile = path.join(languageDirectory, `vscode-language-pack-${languageFolderName}`, 'translations', 'main.i18n.json');
-		let allMessages;
-		if (fs.existsSync(i18nFile)) {
-			let content = stripComments(fs.readFileSync(i18nFile, 'utf8'));
-			allMessages = JSON.parse(content);
-		}
-		modules.forEach((module) => {
-			let order = keysSection[module];
-			let moduleMessage;
-			if (allMessages) {
-				moduleMessage = allMessages.contents[module];
-			}
-			if (!moduleMessage) {
-				if (process.env['VSCODE_BUILD_VERBOSE']) {
-					log(`No localized messages found for module ${module}. Using default messages.`);
-				}
-				moduleMessage = defaultMessages[module];
-				statistics[language.id] = statistics[language.id] + Object.keys(moduleMessage).length;
-			}
-			let localizedMessages = [];
-			order.forEach((keyInfo) => {
-				let key = null;
-				if (typeof keyInfo === 'string') {
-					key = keyInfo;
-				}
-				else {
-					key = keyInfo.key;
-				}
-				let message = moduleMessage[key];
-				if (!message) {
-					if (process.env['VSCODE_BUILD_VERBOSE']) {
-						log(`No localized message found for key ${key} in module ${module}. Using default message.`);
-					}
-					message = defaultMessages[module][key];
-					statistics[language.id] = statistics[language.id] + 1;
-				}
-				localizedMessages.push(message);
-			});
-			localizedModules[module] = localizedMessages;
-		});
-		Object.keys(bundleSection).forEach((bundle) => {
-			let modules = bundleSection[bundle];
-			let contents = [
-				fileHeader,
-				`define("${bundle}.nls.${language.id}", {`
-			];
-			modules.forEach((module, index) => {
-				contents.push(`\t"${module}": [`);
-				let messages = localizedModules[module];
-				if (!messages) {
-					emitter.emit('error', `Didn't find messages for module ${module}.`);
-					return;
-				}
-				messages.forEach((message, index) => {
-					contents.push(`\t\t"${escapeCharacters(message)}${index < messages.length ? '",' : '"'}`);
-				});
-				contents.push(index < modules.length - 1 ? '\t],' : '\t]');
-			});
-			contents.push('});');
-			emitter.queue(new File({ path: bundle + '.nls.' + language.id + '.js', contents: Buffer.from(contents.join('\n'), 'utf-8') }));
-		});
-	});
-	Object.keys(statistics).forEach(key => {
-		let value = statistics[key];
-		log(`${key} has ${value} untranslated strings.`);
-	});
-	sortedLanguages.forEach(language => {
-		let stats = statistics[language.id];
-		if (Is.undef(stats)) {
-			log(`\tNo translations found for language ${language.id}. Using default language instead.`);
-		}
-	});
-}
-function processNlsFiles(opts) {
-	return event_stream_1.through(function (file) {
-		let fileName = path.basename(file.path);
-		if (fileName === 'nls.metadata.json') {
-			let json = null;
-			if (file.isBuffer()) {
-				json = JSON.parse(file.contents.toString('utf8'));
-			}
-			else {
-				this.emit('error', `Failed to read component file: ${file.relative}`);
-				return;
-			}
-			if (BundledFormat.is(json)) {
-				processCoreBundleFormat(opts.fileHeader, opts.languages, json, this);
-			}
-		}
-		this.queue(file);
-	});
-}
-exports.processNlsFiles = processNlsFiles;
-const editorProject = 'vscode-editor', workbenchProject = 'vscode-workbench', extensionsProject = 'vscode-extensions', setupProject = 'vscode-setup';
-function getResource(sourceFile) {
-	let resource;
-	if (/^vs\/platform/.test(sourceFile)) {
-		return { name: 'vs/platform', project: editorProject };
-	}
-	else if (/^vs\/editor\/contrib/.test(sourceFile)) {
-		return { name: 'vs/editor/contrib', project: editorProject };
-	}
-	else if (/^vs\/editor/.test(sourceFile)) {
-		return { name: 'vs/editor', project: editorProject };
-	}
-	else if (/^vs\/base/.test(sourceFile)) {
-		return { name: 'vs/base', project: editorProject };
-	}
-	else if (/^vs\/code/.test(sourceFile)) {
-		return { name: 'vs/code', project: workbenchProject };
-	}
-	else if (/^vs\/workbench\/contrib/.test(sourceFile)) {
-		resource = sourceFile.split('/', 4).join('/');
-		return { name: resource, project: workbenchProject };
-	}
-	else if (/^vs\/workbench\/services/.test(sourceFile)) {
-		resource = sourceFile.split('/', 4).join('/');
-		return { name: resource, project: workbenchProject };
-	}
-	else if (/^vs\/workbench/.test(sourceFile)) {
-		return { name: 'vs/workbench', project: workbenchProject };
-	}
-	throw new Error(`Could not identify the XLF bundle for ${sourceFile}`);
-}
-exports.getResource = getResource;
-function createXlfFilesForCoreBundle() {
-	return event_stream_1.through(function (file) {
-		const basename = path.basename(file.path);
-		if (basename === 'nls.metadata.json') {
-			if (file.isBuffer()) {
-				const xlfs = Object.create(null);
-				const json = JSON.parse(file.contents.toString('utf8'));
-				for (let coreModule in json.keys) {
-					const projectResource = getResource(coreModule);
-					const resource = projectResource.name;
-					const project = projectResource.project;
-					const keys = json.keys[coreModule];
-					const messages = json.messages[coreModule];
-					if (keys.length !== messages.length) {
-						this.emit('error', `There is a mismatch between keys and messages in ${file.relative} for module ${coreModule}`);
-						return;
-					}
-					else {
-						let xlf = xlfs[resource];
-						if (!xlf) {
-							xlf = new XLF(project);
-							xlfs[resource] = xlf;
-						}
-						xlf.addFile(`src/${coreModule}`, keys, messages);
-					}
-				}
-				for (let resource in xlfs) {
-					const xlf = xlfs[resource];
-					const filePath = `${xlf.project}/${resource.replace(/\//g, '_')}.xlf`;
-					const xlfFile = new File({
-						path: filePath,
-						contents: Buffer.from(xlf.toString(), 'utf8')
-					});
-					this.queue(xlfFile);
-				}
-			}
-			else {
-				this.emit('error', new Error(`File ${file.relative} is not using a buffer content`));
-				return;
-			}
-		}
-		else {
-			this.emit('error', new Error(`File ${file.relative} is not a core meta data file.`));
-			return;
-		}
-	});
-}
-exports.createXlfFilesForCoreBundle = createXlfFilesForCoreBundle;
-function createXlfFilesForExtensions() {
-	let counter = 0;
-	let folderStreamEnded = false;
-	let folderStreamEndEmitted = false;
-	return event_stream_1.through(function (extensionFolder) {
-		const folderStream = this;
-		const stat = fs.statSync(extensionFolder.path);
-		if (!stat.isDirectory()) {
-			return;
-		}
-		let extensionName = path.basename(extensionFolder.path);
-		if (extensionName === 'node_modules') {
-			return;
-		}
-		counter++;
-		let _xlf;
-		function getXlf() {
-			if (!_xlf) {
-				_xlf = new XLF(extensionsProject);
-			}
-			return _xlf;
-		}
-		gulp.src([`.build/extensions/${extensionName}/package.nls.json`, `.build/extensions/${extensionName}/**/nls.metadata.json`], { allowEmpty: true }).pipe(event_stream_1.through(function (file) {
-			if (file.isBuffer()) {
-				const buffer = file.contents;
-				const basename = path.basename(file.path);
-				if (basename === 'package.nls.json') {
-					const json = JSON.parse(buffer.toString('utf8'));
-					const keys = Object.keys(json);
-					const messages = keys.map((key) => {
-						const value = json[key];
-						if (Is.string(value)) {
-							return value;
-						}
-						else if (value) {
-							return value.message;
-						}
-						else {
-							return `Unknown message for key: ${key}`;
-						}
-					});
-					getXlf().addFile(`extensions/${extensionName}/package`, keys, messages);
-				}
-				else if (basename === 'nls.metadata.json') {
-					const json = JSON.parse(buffer.toString('utf8'));
-					const relPath = path.relative(`.build/extensions/${extensionName}`, path.dirname(file.path));
-					for (let file in json) {
-						const fileContent = json[file];
-						getXlf().addFile(`extensions/${extensionName}/${relPath}/${file}`, fileContent.keys, fileContent.messages);
-					}
-				}
-				else {
-					this.emit('error', new Error(`${file.path} is not a valid extension nls file`));
-					return;
-				}
-			}
-		}, function () {
-			if (_xlf) {
-				let xlfFile = new File({
-					path: path.join(extensionsProject, extensionName + '.xlf'),
-					contents: Buffer.from(_xlf.toString(), 'utf8')
-				});
-				folderStream.queue(xlfFile);
-			}
-			this.queue(null);
-			counter--;
-			if (counter === 0 && folderStreamEnded && !folderStreamEndEmitted) {
-				folderStreamEndEmitted = true;
-				folderStream.queue(null);
-			}
-		}));
-	}, function () {
-		folderStreamEnded = true;
-		if (counter === 0) {
-			folderStreamEndEmitted = true;
-			this.queue(null);
-		}
-	});
-}
-exports.createXlfFilesForExtensions = createXlfFilesForExtensions;
-function createXlfFilesForIsl() {
-	return event_stream_1.through(function (file) {
-		let projectName, resourceFile;
-		if (path.basename(file.path) === 'messages.en.isl') {
-			projectName = setupProject;
-			resourceFile = 'messages.xlf';
-		}
-		else {
-			throw new Error(`Unknown input file ${file.path}`);
-		}
-		let xlf = new XLF(projectName), keys = [], messages = [];
-		let model = new TextModel(file.contents.toString());
-		let inMessageSection = false;
-		model.lines.forEach(line => {
-			if (line.length === 0) {
-				return;
-			}
-			let firstChar = line.charAt(0);
-			switch (firstChar) {
-				case ';':
-					// Comment line;
-					return;
-				case '[':
-					inMessageSection = '[Messages]' === line || '[CustomMessages]' === line;
-					return;
-			}
-			if (!inMessageSection) {
-				return;
-			}
-			let sections = line.split('=');
-			if (sections.length !== 2) {
-				throw new Error(`Badly formatted message found: ${line}`);
-			}
-			else {
-				let key = sections[0];
-				let value = sections[1];
-				if (key.length > 0 && value.length > 0) {
-					keys.push(key);
-					messages.push(value);
-				}
-			}
-		});
-		const originalPath = file.path.substring(file.cwd.length + 1, file.path.split('.')[0].length).replace(/\\/g, '/');
-		xlf.addFile(originalPath, keys, messages);
-		// Emit only upon all ISL files combined into single XLF instance
-		const newFilePath = path.join(projectName, resourceFile);
-		const xlfFile = new File({ path: newFilePath, contents: Buffer.from(xlf.toString(), 'utf-8') });
-		this.queue(xlfFile);
-	});
-}
-exports.createXlfFilesForIsl = createXlfFilesForIsl;
-function pushXlfFiles(apiHostname, username, password) {
-	let tryGetPromises = [];
-	let updateCreatePromises = [];
-	return event_stream_1.through(function (file) {
-		const project = path.dirname(file.relative);
-		const fileName = path.basename(file.path);
-		const slug = fileName.substr(0, fileName.length - '.xlf'.length);
-		const credentials = `${username}:${password}`;
-		// Check if resource already exists, if not, then create it.
-		let promise = tryGetResource(project, slug, apiHostname, credentials);
-		tryGetPromises.push(promise);
-		promise.then(exists => {
-			if (exists) {
-				promise = updateResource(project, slug, file, apiHostname, credentials);
-			}
-			else {
-				promise = createResource(project, slug, file, apiHostname, credentials);
-			}
-			updateCreatePromises.push(promise);
-		});
-	}, function () {
-		// End the pipe only after all the communication with Transifex API happened
-		Promise.all(tryGetPromises).then(() => {
-			Promise.all(updateCreatePromises).then(() => {
-				this.queue(null);
-			}).catch((reason) => { throw new Error(reason); });
-		}).catch((reason) => { throw new Error(reason); });
-	});
-}
-exports.pushXlfFiles = pushXlfFiles;
-function getAllResources(project, apiHostname, username, password) {
-	return new Promise((resolve, reject) => {
-		const credentials = `${username}:${password}`;
-		const options = {
-			hostname: apiHostname,
-			path: `/api/2/project/${project}/resources`,
-			auth: credentials,
-			method: 'GET'
-		};
-		const request = https.request(options, (res) => {
-			let buffer = [];
-			res.on('data', (chunk) => buffer.push(chunk));
-			res.on('end', () => {
-				if (res.statusCode === 200) {
-					let json = JSON.parse(Buffer.concat(buffer).toString());
-					if (Array.isArray(json)) {
-						resolve(json.map(o => o.slug));
-						return;
-					}
-					reject(`Unexpected data format. Response code: ${res.statusCode}.`);
-				}
-				else {
-					reject(`No resources in ${project} returned no data. Response code: ${res.statusCode}.`);
-				}
-			});
-		});
-		request.on('error', (err) => {
-			reject(`Failed to query resources in ${project} with the following error: ${err}. ${options.path}`);
-		});
-		request.end();
-	});
-}
-function findObsoleteResources(apiHostname, username, password) {
-	let resourcesByProject = Object.create(null);
-	resourcesByProject[extensionsProject] = [].concat(exports.externalExtensionsWithTranslations); // clone
-	return event_stream_1.through(function (file) {
-		const project = path.dirname(file.relative);
-		const fileName = path.basename(file.path);
-		const slug = fileName.substr(0, fileName.length - '.xlf'.length);
-		let slugs = resourcesByProject[project];
-		if (!slugs) {
-			resourcesByProject[project] = slugs = [];
-		}
-		slugs.push(slug);
-		this.push(file);
-	}, function () {
-		const json = JSON.parse(fs.readFileSync('./build/lib/i18n.resources.json', 'utf8'));
-		let i18Resources = [...json.editor, ...json.workbench].map((r) => r.project + '/' + r.name.replace(/\//g, '_'));
-		let extractedResources = [];
-		for (let project of [workbenchProject, editorProject]) {
-			for (let resource of resourcesByProject[project]) {
-				if (resource !== 'setup_messages') {
-					extractedResources.push(project + '/' + resource);
-				}
-			}
-		}
-		if (i18Resources.length !== extractedResources.length) {
-			console.log(`[i18n] Obsolete resources in file 'build/lib/i18n.resources.json': JSON.stringify(${i18Resources.filter(p => extractedResources.indexOf(p) === -1)})`);
-			console.log(`[i18n] Missing resources in file 'build/lib/i18n.resources.json': JSON.stringify(${extractedResources.filter(p => i18Resources.indexOf(p) === -1)})`);
-		}
-		let promises = [];
-		for (let project in resourcesByProject) {
-			promises.push(getAllResources(project, apiHostname, username, password).then(resources => {
-				let expectedResources = resourcesByProject[project];
-				let unusedResources = resources.filter(resource => resource && expectedResources.indexOf(resource) === -1);
-				if (unusedResources.length) {
-					console.log(`[transifex] Obsolete resources in project '${project}': ${unusedResources.join(', ')}`);
-				}
-			}));
-		}
-		return Promise.all(promises).then(_ => {
-			this.push(null);
-		}).catch((reason) => { throw new Error(reason); });
-	});
-}
-exports.findObsoleteResources = findObsoleteResources;
-function tryGetResource(project, slug, apiHostname, credentials) {
-	return new Promise((resolve, reject) => {
-		const options = {
-			hostname: apiHostname,
-			path: `/api/2/project/${project}/resource/${slug}/?details`,
-			auth: credentials,
-			method: 'GET'
-		};
-		const request = https.request(options, (response) => {
-			if (response.statusCode === 404) {
-				resolve(false);
-			}
-			else if (response.statusCode === 200) {
-				resolve(true);
-			}
-			else {
-				reject(`Failed to query resource ${project}/${slug}. Response: ${response.statusCode} ${response.statusMessage}`);
-			}
-		});
-		request.on('error', (err) => {
-			reject(`Failed to get ${project}/${slug} on Transifex: ${err}`);
-		});
-		request.end();
-	});
-}
-function createResource(project, slug, xlfFile, apiHostname, credentials) {
-	return new Promise((_resolve, reject) => {
-		const data = JSON.stringify({
-			'content': xlfFile.contents.toString(),
-			'name': slug,
-			'slug': slug,
-			'i18n_type': 'XLIFF'
-		});
-		const options = {
-			hostname: apiHostname,
-			path: `/api/2/project/${project}/resources`,
-			headers: {
-				'Content-Type': 'application/json',
-				'Content-Length': Buffer.byteLength(data)
-			},
-			auth: credentials,
-			method: 'POST'
-		};
-		let request = https.request(options, (res) => {
-			if (res.statusCode === 201) {
-				log(`Resource ${project}/${slug} successfully created on Transifex.`);
-			}
-			else {
-				reject(`Something went wrong in the request creating ${slug} in ${project}. ${res.statusCode}`);
-			}
-		});
-		request.on('error', (err) => {
-			reject(`Failed to create ${project}/${slug} on Transifex: ${err}`);
-		});
-		request.write(data);
-		request.end();
-	});
-}
-/**
- * The following link provides information about how Transifex handles updates of a resource file:
- * https://dev.befoolish.co/tx-docs/public/projects/updating-content#what-happens-when-you-update-files
- */
-function updateResource(project, slug, xlfFile, apiHostname, credentials) {
-	return new Promise((resolve, reject) => {
-		const data = JSON.stringify({ content: xlfFile.contents.toString() });
-		const options = {
-			hostname: apiHostname,
-			path: `/api/2/project/${project}/resource/${slug}/content`,
-			headers: {
-				'Content-Type': 'application/json',
-				'Content-Length': Buffer.byteLength(data)
-			},
-			auth: credentials,
-			method: 'PUT'
-		};
-		let request = https.request(options, (res) => {
-			if (res.statusCode === 200) {
-				res.setEncoding('utf8');
-				let responseBuffer = '';
-				res.on('data', function (chunk) {
-					responseBuffer += chunk;
-				});
-				res.on('end', () => {
-					const response = JSON.parse(responseBuffer);
-					log(`Resource ${project}/${slug} successfully updated on Transifex. Strings added: ${response.strings_added}, updated: ${response.strings_added}, deleted: ${response.strings_added}`);
-					resolve();
-				});
-			}
-			else {
-				reject(`Something went wrong in the request updating ${slug} in ${project}. ${res.statusCode}`);
-			}
-		});
-		request.on('error', (err) => {
-			reject(`Failed to update ${project}/${slug} on Transifex: ${err}`);
-		});
-		request.write(data);
-		request.end();
-	});
-}
-function pullSetupXlfFiles(apiHostname, username, password, language, includeDefault) {
-	let setupResources = [{ name: 'setup_messages', project: workbenchProject }];
-	if (includeDefault) {
-		setupResources.push({ name: 'setup_default', project: setupProject });
-	}
-	return pullXlfFiles(apiHostname, username, password, language, setupResources);
-}
-exports.pullSetupXlfFiles = pullSetupXlfFiles;
-function pullXlfFiles(apiHostname, username, password, language, resources) {
-	const credentials = `${username}:${password}`;
-	let expectedTranslationsCount = resources.length;
-	let translationsRetrieved = 0, called = false;
-	return event_stream_1.readable(function (_count, callback) {
-		// Mark end of stream when all resources were retrieved
-		if (translationsRetrieved === expectedTranslationsCount) {
-			return this.emit('end');
-		}
-		if (!called) {
-			called = true;
-			const stream = this;
-			resources.map(function (resource) {
-				retrieveResource(language, resource, apiHostname, credentials).then((file) => {
-					if (file) {
-						stream.emit('data', file);
-					}
-					translationsRetrieved++;
-				}).catch(error => { throw new Error(error); });
-			});
-		}
-		callback();
-	});
-}
-const limiter = new Limiter(NUMBER_OF_CONCURRENT_DOWNLOADS);
-function retrieveResource(language, resource, apiHostname, credentials) {
-	return limiter.queue(() => new Promise((resolve, reject) => {
-		const slug = resource.name.replace(/\//g, '_');
-		const project = resource.project;
-		let transifexLanguageId = language.id === 'ps' ? 'en' : language.translationId || language.id;
-		const options = {
-			hostname: apiHostname,
-			path: `/api/2/project/${project}/resource/${slug}/translation/${transifexLanguageId}?file&mode=onlyreviewed`,
-			auth: credentials,
-			port: 443,
-			method: 'GET'
-		};
-		console.log('[transifex] Fetching ' + options.path);
-		let request = https.request(options, (res) => {
-			let xlfBuffer = [];
-			res.on('data', (chunk) => xlfBuffer.push(chunk));
-			res.on('end', () => {
-				if (res.statusCode === 200) {
-					resolve(new File({ contents: Buffer.concat(xlfBuffer), path: `${project}/${slug}.xlf` }));
-				}
-				else if (res.statusCode === 404) {
-					console.log(`[transifex] ${slug} in ${project} returned no data.`);
-					resolve(null);
-				}
-				else {
-					reject(`${slug} in ${project} returned no data. Response code: ${res.statusCode}.`);
-				}
-			});
-		});
-		request.on('error', (err) => {
-			reject(`Failed to query resource ${slug} with the following error: ${err}. ${options.path}`);
-		});
-		request.end();
-	}));
-}
-function prepareI18nFiles() {
-	let parsePromises = [];
-	return event_stream_1.through(function (xlf) {
-		let stream = this;
-		let parsePromise = XLF.parse(xlf.contents.toString());
-		parsePromises.push(parsePromise);
-		parsePromise.then(resolvedFiles => {
-			resolvedFiles.forEach(file => {
-				let translatedFile = createI18nFile(file.originalFilePath, file.messages);
-				stream.queue(translatedFile);
-			});
-		});
-	}, function () {
-		Promise.all(parsePromises)
-			.then(() => { this.queue(null); })
-			.catch(reason => { throw new Error(reason); });
-	});
-}
-exports.prepareI18nFiles = prepareI18nFiles;
-function createI18nFile(originalFilePath, messages) {
-	let result = Object.create(null);
-	result[''] = [
-		'--------------------------------------------------------------------------------------------',
-		'Copyright (c) Microsoft Corporation. All rights reserved.',
-		'Licensed under the MIT License. See License.txt in the project root for license information.',
-		'--------------------------------------------------------------------------------------------',
-		'Do not edit this file. It is machine generated.'
-	];
-	for (let key of Object.keys(messages)) {
-		result[key] = messages[key];
-	}
-	let content = JSON.stringify(result, null, '\t');
-	if (process.platform === 'win32') {
-		content = content.replace(/\n/g, '\r\n');
-	}
-	return new File({
-		path: path.join(originalFilePath + '.i18n.json'),
-		contents: Buffer.from(content, 'utf8')
-	});
-}
-const i18nPackVersion = '1.0.0';
-function prepareI18nPackFiles(externalExtensions, resultingTranslationPaths, pseudo = false) {
-	let parsePromises = [];
-	let mainPack = { version: i18nPackVersion, contents: {} };
-	let extensionsPacks = {};
-	let errors = [];
-	return event_stream_1.through(function (xlf) {
-		let project = path.basename(path.dirname(path.dirname(xlf.relative)));
-		let resource = path.basename(xlf.relative, '.xlf');
-		let contents = xlf.contents.toString();
-		log(`Found ${project}: ${resource}`);
-		let parsePromise = pseudo ? XLF.parsePseudo(contents) : XLF.parse(contents);
-		parsePromises.push(parsePromise);
-		parsePromise.then(resolvedFiles => {
-			resolvedFiles.forEach(file => {
-				const path = file.originalFilePath;
-				const firstSlash = path.indexOf('/');
-				if (project === extensionsProject) {
-					let extPack = extensionsPacks[resource];
-					if (!extPack) {
-						extPack = extensionsPacks[resource] = { version: i18nPackVersion, contents: {} };
-					}
-					const externalId = externalExtensions[resource];
-					if (!externalId) { // internal extension: remove 'extensions/extensionId/' segnent
-						const secondSlash = path.indexOf('/', firstSlash + 1);
-						extPack.contents[path.substr(secondSlash + 1)] = file.messages;
-					}
-					else {
-						extPack.contents[path] = file.messages;
-					}
-				}
-				else {
-					mainPack.contents[path.substr(firstSlash + 1)] = file.messages;
-				}
-			});
-		}).catch(reason => {
-			errors.push(reason);
-		});
-	}, function () {
-		Promise.all(parsePromises)
-			.then(() => {
-				if (errors.length > 0) {
-					throw errors;
-				}
-				const translatedMainFile = createI18nFile('./main', mainPack);
-				resultingTranslationPaths.push({ id: 'vscode', resourceName: 'main.i18n.json' });
-				this.queue(translatedMainFile);
-				for (let extension in extensionsPacks) {
-					const translatedExtFile = createI18nFile(`extensions/${extension}`, extensionsPacks[extension]);
-					this.queue(translatedExtFile);
-					const externalExtensionId = externalExtensions[extension];
-					if (externalExtensionId) {
-						resultingTranslationPaths.push({ id: externalExtensionId, resourceName: `extensions/${extension}.i18n.json` });
-					}
-					else {
-						resultingTranslationPaths.push({ id: `vscode.${extension}`, resourceName: `extensions/${extension}.i18n.json` });
-					}
-				}
-				this.queue(null);
-			})
-			.catch((reason) => {
-				this.emit('error', reason);
-			});
-	});
-}
-exports.prepareI18nPackFiles = prepareI18nPackFiles;
-function prepareIslFiles(language, innoSetupConfig) {
-	let parsePromises = [];
-	return event_stream_1.through(function (xlf) {
-		let stream = this;
-		let parsePromise = XLF.parse(xlf.contents.toString());
-		parsePromises.push(parsePromise);
-		parsePromise.then(resolvedFiles => {
-			resolvedFiles.forEach(file => {
-				let translatedFile = createIslFile(file.originalFilePath, file.messages, language, innoSetupConfig);
-				stream.queue(translatedFile);
-			});
-		}).catch(reason => {
-			this.emit('error', reason);
-		});
-	}, function () {
-		Promise.all(parsePromises)
-			.then(() => { this.queue(null); })
-			.catch(reason => {
-				this.emit('error', reason);
-			});
-	});
-}
-exports.prepareIslFiles = prepareIslFiles;
-function createIslFile(originalFilePath, messages, language, innoSetup) {
-	let content = [];
-	let originalContent;
-	if (path.basename(originalFilePath) === 'Default') {
-		originalContent = new TextModel(fs.readFileSync(originalFilePath + '.isl', 'utf8'));
-	}
-	else {
-		originalContent = new TextModel(fs.readFileSync(originalFilePath + '.en.isl', 'utf8'));
-	}
-	originalContent.lines.forEach(line => {
-		if (line.length > 0) {
-			let firstChar = line.charAt(0);
-			if (firstChar === '[' || firstChar === ';') {
-				content.push(line);
-			}
-			else {
-				let sections = line.split('=');
-				let key = sections[0];
-				let translated = line;
-				if (key) {
-					let translatedMessage = messages[key];
-					if (translatedMessage) {
-						translated = `${key}=${translatedMessage}`;
-					}
-				}
-				content.push(translated);
-			}
-		}
-	});
-	const basename = path.basename(originalFilePath);
-	const filePath = `${basename}.${language.id}.isl`;
-	const encoded = iconv.encode(Buffer.from(content.join('\r\n'), 'utf8').toString(), innoSetup.codePage);
-	return new File({
-		path: filePath,
-		contents: Buffer.from(encoded),
-	});
-}
-function encodeEntities(value) {
-	let result = [];
-	for (let i = 0; i < value.length; i++) {
-		let ch = value[i];
-		switch (ch) {
-			case '<':
-				result.push('&lt;');
-				break;
-			case '>':
-				result.push('&gt;');
-				break;
-			case '&':
-				result.push('&amp;');
-				break;
-			default:
-				result.push(ch);
-		}
-	}
-	return result.join('');
-}
-function decodeEntities(value) {
-	return value.replace(/&lt;/g, '<').replace(/&gt;/g, '>').replace(/&amp;/g, '&');
-}
-function pseudify(message) {
-	return '\uFF3B' + message.replace(/[aouei]/g, '$&$&') + '\uFF3D';
-}
diff --git a/lib/vscode/build/lib/i18n.resources.json b/lib/vscode/build/lib/i18n.resources.json
deleted file mode 100644
index 43ded2f2b073..000000000000
--- a/lib/vscode/build/lib/i18n.resources.json
+++ /dev/null
@@ -1,406 +0,0 @@
-{
-	"editor": [
-		{
-			"name": "vs/platform",
-			"project": "vscode-editor"
-		},
-		{
-			"name": "vs/editor/contrib",
-			"project": "vscode-editor"
-		},
-		{
-			"name": "vs/editor",
-			"project": "vscode-editor"
-		},
-		{
-			"name": "vs/base",
-			"project": "vscode-editor"
-		}
-	],
-	"workbench": [
-		{
-			"name": "vs/code",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/api/common",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/contrib/bulkEdit",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/contrib/cli",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/contrib/codeEditor",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/contrib/callHierarchy",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/contrib/codeActions",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/contrib/comments",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/contrib/debug",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/contrib/dialogs",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/contrib/emmet",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/contrib/experiments",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/contrib/extensions",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/contrib/externalTerminal",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/contrib/feedback",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/contrib/files",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/contrib/html",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/contrib/issue",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/contrib/keybindings",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/contrib/markers",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/contrib/localizations",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/contrib/logs",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/contrib/output",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/contrib/performance",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/contrib/preferences",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/contrib/notebook",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/contrib/quickaccess",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/contrib/userData",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/contrib/remote",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/contrib/relauncher",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/contrib/sash",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/contrib/scm",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/contrib/search",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/contrib/searchEditor",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/contrib/snippets",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/contrib/format",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/contrib/tags",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/contrib/surveys",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/contrib/tasks",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/contrib/testing",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/contrib/terminal",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/contrib/themes",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/contrib/trust",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/contrib/update",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/contrib/url",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/contrib/watermark",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/contrib/webview",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/contrib/webviewPanel",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/contrib/workspace",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/contrib/workspaces",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/contrib/customEditor",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/contrib/externalUriOpener",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/contrib/welcome",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/contrib/outline",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/contrib/userDataSync",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/contrib/views",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/services/actions",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/services/authToken",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/services/backup",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/services/bulkEdit",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/services/clipboard",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/services/commands",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/services/configuration",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/services/configurationResolver",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/services/dialogs",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/services/editor",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/services/extensions",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/services/extensionManagement",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/services/files",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/services/history",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/services/log",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/services/integrity",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/services/keybinding",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/services/lifecycle",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/services/mode",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/services/progress",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/services/remote",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/services/search",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/services/textfile",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/services/themes",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/services/textMate",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/services/workingCopy",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/services/workspaces",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/services/decorations",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/services/label",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/services/preferences",
-			"project": "vscode-preferences"
-		},
-		{
-			"name": "vs/workbench/services/notification",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/services/userData",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/services/userDataSync",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/services/views",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/contrib/timeline",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/services/authentication",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/services/extensionRecommendations",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/services/gettingStarted",
-			"project": "vscode-workbench"
-		},
-		{
-			"name": "vs/workbench/services/host",
-			"project": "vscode-workbench"
-		}
-	]
-}
diff --git a/lib/vscode/build/lib/i18n.ts b/lib/vscode/build/lib/i18n.ts
deleted file mode 100644
index 5e00e9d6c6e6..000000000000
--- a/lib/vscode/build/lib/i18n.ts
+++ /dev/null
@@ -1,1327 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-import * as path from 'path';
-import * as fs from 'fs';
-
-import { through, readable, ThroughStream } from 'event-stream';
-import * as File from 'vinyl';
-import * as Is from 'is';
-import * as xml2js from 'xml2js';
-import * as https from 'https';
-import * as gulp from 'gulp';
-import * as fancyLog from 'fancy-log';
-import * as ansiColors from 'ansi-colors';
-import * as iconv from 'iconv-lite-umd';
-
-const NUMBER_OF_CONCURRENT_DOWNLOADS = 4;
-
-function log(message: any, ...rest: any[]): void {
-	fancyLog(ansiColors.green('[i18n]'), message, ...rest);
-}
-
-export interface Language {
-	id: string; // language id, e.g. zh-tw, de
-	translationId?: string; // language id used in translation tools, e.g. zh-hant, de (optional, if not set, the id is used)
-	folderName?: string; // language specific folder name, e.g. cht, deu  (optional, if not set, the id is used)
-}
-
-export interface InnoSetup {
-	codePage: string; //code page for encoding (http://www.jrsoftware.org/ishelp/index.php?topic=langoptionssection)
-}
-
-export const defaultLanguages: Language[] = [
-	{ id: 'zh-tw', folderName: 'cht', translationId: 'zh-hant' },
-	{ id: 'zh-cn', folderName: 'chs', translationId: 'zh-hans' },
-	{ id: 'ja', folderName: 'jpn' },
-	{ id: 'ko', folderName: 'kor' },
-	{ id: 'de', folderName: 'deu' },
-	{ id: 'fr', folderName: 'fra' },
-	{ id: 'es', folderName: 'esn' },
-	{ id: 'ru', folderName: 'rus' },
-	{ id: 'it', folderName: 'ita' }
-];
-
-// languages requested by the community to non-stable builds
-export const extraLanguages: Language[] = [
-	{ id: 'pt-br', folderName: 'ptb' },
-	{ id: 'hu', folderName: 'hun' },
-	{ id: 'tr', folderName: 'trk' }
-];
-
-// non built-in extensions also that are transifex and need to be part of the language packs
-export const externalExtensionsWithTranslations = {
-	'vscode-chrome-debug': 'msjsdiag.debugger-for-chrome',
-	'vscode-node-debug': 'ms-vscode.node-debug',
-	'vscode-node-debug2': 'ms-vscode.node-debug2'
-};
-
-
-interface Map<V> {
-	[key: string]: V;
-}
-
-interface Item {
-	id: string;
-	message: string;
-	comment?: string;
-}
-
-export interface Resource {
-	name: string;
-	project: string;
-}
-
-interface ParsedXLF {
-	messages: Map<string>;
-	originalFilePath: string;
-	language: string;
-}
-
-interface LocalizeInfo {
-	key: string;
-	comment: string[];
-}
-
-module LocalizeInfo {
-	export function is(value: any): value is LocalizeInfo {
-		let candidate = value as LocalizeInfo;
-		return Is.defined(candidate) && Is.string(candidate.key) && (Is.undef(candidate.comment) || (Is.array(candidate.comment) && candidate.comment.every(element => Is.string(element))));
-	}
-}
-
-interface BundledFormat {
-	keys: Map<(string | LocalizeInfo)[]>;
-	messages: Map<string[]>;
-	bundles: Map<string[]>;
-}
-
-module BundledFormat {
-	export function is(value: any): value is BundledFormat {
-		if (Is.undef(value)) {
-			return false;
-		}
-
-		let candidate = value as BundledFormat;
-		let length = Object.keys(value).length;
-
-		return length === 3 && Is.defined(candidate.keys) && Is.defined(candidate.messages) && Is.defined(candidate.bundles);
-	}
-}
-
-interface ValueFormat {
-	message: string;
-	comment: string[];
-}
-
-interface PackageJsonFormat {
-	[key: string]: string | ValueFormat;
-}
-
-module PackageJsonFormat {
-	export function is(value: any): value is PackageJsonFormat {
-		if (Is.undef(value) || !Is.object(value)) {
-			return false;
-		}
-		return Object.keys(value).every(key => {
-			let element = value[key];
-			return Is.string(element) || (Is.object(element) && Is.defined(element.message) && Is.defined(element.comment));
-		});
-	}
-}
-
-interface BundledExtensionFormat {
-	[key: string]: {
-		messages: string[];
-		keys: (string | LocalizeInfo)[];
-	};
-}
-
-interface I18nFormat {
-	version: string;
-	contents: {
-		[module: string]: {
-			[messageKey: string]: string;
-		};
-	};
-}
-
-export class Line {
-	private buffer: string[] = [];
-
-	constructor(indent: number = 0) {
-		if (indent > 0) {
-			this.buffer.push(new Array(indent + 1).join(' '));
-		}
-	}
-
-	public append(value: string): Line {
-		this.buffer.push(value);
-		return this;
-	}
-
-	public toString(): string {
-		return this.buffer.join('');
-	}
-}
-
-class TextModel {
-	private _lines: string[];
-
-	constructor(contents: string) {
-		this._lines = contents.split(/\r\n|\r|\n/);
-	}
-
-	public get lines(): string[] {
-		return this._lines;
-	}
-}
-
-export class XLF {
-	private buffer: string[];
-	private files: Map<Item[]>;
-	public numberOfMessages: number;
-
-	constructor(public project: string) {
-		this.buffer = [];
-		this.files = Object.create(null);
-		this.numberOfMessages = 0;
-	}
-
-	public toString(): string {
-		this.appendHeader();
-
-		const files = Object.keys(this.files).sort();
-		for (const file of files) {
-			this.appendNewLine(`<file original="${file}" source-language="en" datatype="plaintext"><body>`, 2);
-			const items = this.files[file].sort((a: Item, b: Item) => {
-				return a.id < b.id ? -1 : a.id > b.id ? 1 : 0;
-			});
-			for (const item of items) {
-				this.addStringItem(file, item);
-			}
-			this.appendNewLine('</body></file>');
-		}
-		this.appendFooter();
-		return this.buffer.join('\r\n');
-	}
-
-	public addFile(original: string, keys: (string | LocalizeInfo)[], messages: string[]) {
-		if (keys.length === 0) {
-			console.log('No keys in ' + original);
-			return;
-		}
-		if (keys.length !== messages.length) {
-			throw new Error(`Unmatching keys(${keys.length}) and messages(${messages.length}).`);
-		}
-		this.numberOfMessages += keys.length;
-		this.files[original] = [];
-		let existingKeys = new Set<string>();
-		for (let i = 0; i < keys.length; i++) {
-			let key = keys[i];
-			let realKey: string | undefined;
-			let comment: string | undefined;
-			if (Is.string(key)) {
-				realKey = key;
-				comment = undefined;
-			} else if (LocalizeInfo.is(key)) {
-				realKey = key.key;
-				if (key.comment && key.comment.length > 0) {
-					comment = key.comment.map(comment => encodeEntities(comment)).join('\r\n');
-				}
-			}
-			if (!realKey || existingKeys.has(realKey)) {
-				continue;
-			}
-			existingKeys.add(realKey);
-			let message: string = encodeEntities(messages[i]);
-			this.files[original].push({ id: realKey, message: message, comment: comment });
-		}
-	}
-
-	private addStringItem(file: string, item: Item): void {
-		if (!item.id || item.message === undefined || item.message === null) {
-			throw new Error(`No item ID or value specified: ${JSON.stringify(item)}. File: ${file}`);
-		}
-		if (item.message.length === 0) {
-			log(`Item with id ${item.id} in file ${file} has an empty message.`);
-		}
-
-		this.appendNewLine(`<trans-unit id="${item.id}">`, 4);
-		this.appendNewLine(`<source xml:lang="en">${item.message}</source>`, 6);
-
-		if (item.comment) {
-			this.appendNewLine(`<note>${item.comment}</note>`, 6);
-		}
-
-		this.appendNewLine('</trans-unit>', 4);
-	}
-
-	private appendHeader(): void {
-		this.appendNewLine('<?xml version="1.0" encoding="utf-8"?>', 0);
-		this.appendNewLine('<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">', 0);
-	}
-
-	private appendFooter(): void {
-		this.appendNewLine('</xliff>', 0);
-	}
-
-	private appendNewLine(content: string, indent?: number): void {
-		let line = new Line(indent);
-		line.append(content);
-		this.buffer.push(line.toString());
-	}
-
-	static parsePseudo = function (xlfString: string): Promise<ParsedXLF[]> {
-		return new Promise((resolve) => {
-			let parser = new xml2js.Parser();
-			let files: { messages: Map<string>, originalFilePath: string, language: string }[] = [];
-			parser.parseString(xlfString, function (_err: any, result: any) {
-				const fileNodes: any[] = result['xliff']['file'];
-				fileNodes.forEach(file => {
-					const originalFilePath = file.$.original;
-					const messages: Map<string> = {};
-					const transUnits = file.body[0]['trans-unit'];
-					if (transUnits) {
-						transUnits.forEach((unit: any) => {
-							const key = unit.$.id;
-							const val = pseudify(unit.source[0]['_'].toString());
-							if (key && val) {
-								messages[key] = decodeEntities(val);
-							}
-						});
-						files.push({ messages: messages, originalFilePath: originalFilePath, language: 'ps' });
-					}
-				});
-				resolve(files);
-			});
-		});
-	};
-
-	static parse = function (xlfString: string): Promise<ParsedXLF[]> {
-		return new Promise((resolve, reject) => {
-			let parser = new xml2js.Parser();
-
-			let files: { messages: Map<string>, originalFilePath: string, language: string }[] = [];
-
-			parser.parseString(xlfString, function (err: any, result: any) {
-				if (err) {
-					reject(new Error(`XLF parsing error: Failed to parse XLIFF string. ${err}`));
-				}
-
-				const fileNodes: any[] = result['xliff']['file'];
-				if (!fileNodes) {
-					reject(new Error(`XLF parsing error: XLIFF file does not contain "xliff" or "file" node(s) required for parsing.`));
-				}
-
-				fileNodes.forEach((file) => {
-					const originalFilePath = file.$.original;
-					if (!originalFilePath) {
-						reject(new Error(`XLF parsing error: XLIFF file node does not contain original attribute to determine the original location of the resource file.`));
-					}
-					let language = file.$['target-language'];
-					if (!language) {
-						reject(new Error(`XLF parsing error: XLIFF file node does not contain target-language attribute to determine translated language.`));
-					}
-					const messages: Map<string> = {};
-
-					const transUnits = file.body[0]['trans-unit'];
-					if (transUnits) {
-						transUnits.forEach((unit: any) => {
-							const key = unit.$.id;
-							if (!unit.target) {
-								return; // No translation available
-							}
-
-							let val = unit.target[0];
-							if (typeof val !== 'string') {
-								// We allow empty source values so support them for translations as well.
-								val = val._ ? val._ : '';
-							}
-							if (!key) {
-								reject(new Error(`XLF parsing error: trans-unit ${JSON.stringify(unit, undefined, 0)} defined in file ${originalFilePath} is missing the ID attribute.`));
-								return;
-							}
-							messages[key] = decodeEntities(val);
-						});
-						files.push({ messages: messages, originalFilePath: originalFilePath, language: language.toLowerCase() });
-					}
-				});
-
-				resolve(files);
-			});
-		});
-	};
-}
-
-export interface ITask<T> {
-	(): T;
-}
-
-interface ILimitedTaskFactory<T> {
-	factory: ITask<Promise<T>>;
-	c: (value?: T | Promise<T>) => void;
-	e: (error?: any) => void;
-}
-
-export class Limiter<T> {
-	private runningPromises: number;
-	private outstandingPromises: ILimitedTaskFactory<any>[];
-
-	constructor(private maxDegreeOfParalellism: number) {
-		this.outstandingPromises = [];
-		this.runningPromises = 0;
-	}
-
-	queue(factory: ITask<Promise<T>>): Promise<T> {
-		return new Promise<T>((c, e) => {
-			this.outstandingPromises.push({ factory, c, e });
-			this.consume();
-		});
-	}
-
-	private consume(): void {
-		while (this.outstandingPromises.length && this.runningPromises < this.maxDegreeOfParalellism) {
-			const iLimitedTask = this.outstandingPromises.shift()!;
-			this.runningPromises++;
-
-			const promise = iLimitedTask.factory();
-			promise.then(iLimitedTask.c).catch(iLimitedTask.e);
-			promise.then(() => this.consumed()).catch(() => this.consumed());
-		}
-	}
-
-	private consumed(): void {
-		this.runningPromises--;
-		this.consume();
-	}
-}
-
-function sortLanguages(languages: Language[]): Language[] {
-	return languages.sort((a: Language, b: Language): number => {
-		return a.id < b.id ? -1 : (a.id > b.id ? 1 : 0);
-	});
-}
-
-function stripComments(content: string): string {
-	/**
-	* First capturing group matches double quoted string
-	* Second matches single quotes string
-	* Third matches block comments
-	* Fourth matches line comments
-	*/
-	const regexp = /("(?:[^\\\"]*(?:\\.)?)*")|('(?:[^\\\']*(?:\\.)?)*')|(\/\*(?:\r?\n|.)*?\*\/)|(\/{2,}.*?(?:(?:\r?\n)|$))/g;
-	let result = content.replace(regexp, (match, _m1, _m2, m3, m4) => {
-		// Only one of m1, m2, m3, m4 matches
-		if (m3) {
-			// A block comment. Replace with nothing
-			return '';
-		} else if (m4) {
-			// A line comment. If it ends in \r?\n then keep it.
-			let length = m4.length;
-			if (length > 2 && m4[length - 1] === '\n') {
-				return m4[length - 2] === '\r' ? '\r\n' : '\n';
-			} else {
-				return '';
-			}
-		} else {
-			// We match a string
-			return match;
-		}
-	});
-	return result;
-}
-
-function escapeCharacters(value: string): string {
-	const result: string[] = [];
-	for (let i = 0; i < value.length; i++) {
-		const ch = value.charAt(i);
-		switch (ch) {
-			case '\'':
-				result.push('\\\'');
-				break;
-			case '"':
-				result.push('\\"');
-				break;
-			case '\\':
-				result.push('\\\\');
-				break;
-			case '\n':
-				result.push('\\n');
-				break;
-			case '\r':
-				result.push('\\r');
-				break;
-			case '\t':
-				result.push('\\t');
-				break;
-			case '\b':
-				result.push('\\b');
-				break;
-			case '\f':
-				result.push('\\f');
-				break;
-			default:
-				result.push(ch);
-		}
-	}
-	return result.join('');
-}
-
-function processCoreBundleFormat(fileHeader: string, languages: Language[], json: BundledFormat, emitter: ThroughStream) {
-	let keysSection = json.keys;
-	let messageSection = json.messages;
-	let bundleSection = json.bundles;
-
-	let statistics: Map<number> = Object.create(null);
-
-	let defaultMessages: Map<Map<string>> = Object.create(null);
-	let modules = Object.keys(keysSection);
-	modules.forEach((module) => {
-		let keys = keysSection[module];
-		let messages = messageSection[module];
-		if (!messages || keys.length !== messages.length) {
-			emitter.emit('error', `Message for module ${module} corrupted. Mismatch in number of keys and messages.`);
-			return;
-		}
-		let messageMap: Map<string> = Object.create(null);
-		defaultMessages[module] = messageMap;
-		keys.map((key, i) => {
-			if (typeof key === 'string') {
-				messageMap[key] = messages[i];
-			} else {
-				messageMap[key.key] = messages[i];
-			}
-		});
-	});
-
-	let languageDirectory = path.join(__dirname, '..', '..', '..', 'vscode-loc', 'i18n');
-	if (!fs.existsSync(languageDirectory)) {
-		log(`No VS Code localization repository found. Looking at ${languageDirectory}`);
-		log(`To bundle translations please check out the vscode-loc repository as a sibling of the vscode repository.`);
-	}
-	let sortedLanguages = sortLanguages(languages);
-	sortedLanguages.forEach((language) => {
-		if (process.env['VSCODE_BUILD_VERBOSE']) {
-			log(`Generating nls bundles for: ${language.id}`);
-		}
-
-		statistics[language.id] = 0;
-		let localizedModules: Map<string[]> = Object.create(null);
-		let languageFolderName = language.translationId || language.id;
-		let i18nFile = path.join(languageDirectory, `vscode-language-pack-${languageFolderName}`, 'translations', 'main.i18n.json');
-		let allMessages: I18nFormat | undefined;
-		if (fs.existsSync(i18nFile)) {
-			let content = stripComments(fs.readFileSync(i18nFile, 'utf8'));
-			allMessages = JSON.parse(content);
-		}
-		modules.forEach((module) => {
-			let order = keysSection[module];
-			let moduleMessage: { [messageKey: string]: string } | undefined;
-			if (allMessages) {
-				moduleMessage = allMessages.contents[module];
-			}
-			if (!moduleMessage) {
-				if (process.env['VSCODE_BUILD_VERBOSE']) {
-					log(`No localized messages found for module ${module}. Using default messages.`);
-				}
-				moduleMessage = defaultMessages[module];
-				statistics[language.id] = statistics[language.id] + Object.keys(moduleMessage).length;
-			}
-			let localizedMessages: string[] = [];
-			order.forEach((keyInfo) => {
-				let key: string | null = null;
-				if (typeof keyInfo === 'string') {
-					key = keyInfo;
-				} else {
-					key = keyInfo.key;
-				}
-				let message: string = moduleMessage![key];
-				if (!message) {
-					if (process.env['VSCODE_BUILD_VERBOSE']) {
-						log(`No localized message found for key ${key} in module ${module}. Using default message.`);
-					}
-					message = defaultMessages[module][key];
-					statistics[language.id] = statistics[language.id] + 1;
-				}
-				localizedMessages.push(message);
-			});
-			localizedModules[module] = localizedMessages;
-		});
-		Object.keys(bundleSection).forEach((bundle) => {
-			let modules = bundleSection[bundle];
-			let contents: string[] = [
-				fileHeader,
-				`define("${bundle}.nls.${language.id}", {`
-			];
-			modules.forEach((module, index) => {
-				contents.push(`\t"${module}": [`);
-				let messages = localizedModules[module];
-				if (!messages) {
-					emitter.emit('error', `Didn't find messages for module ${module}.`);
-					return;
-				}
-				messages.forEach((message, index) => {
-					contents.push(`\t\t"${escapeCharacters(message)}${index < messages.length ? '",' : '"'}`);
-				});
-				contents.push(index < modules.length - 1 ? '\t],' : '\t]');
-			});
-			contents.push('});');
-			emitter.queue(new File({ path: bundle + '.nls.' + language.id + '.js', contents: Buffer.from(contents.join('\n'), 'utf-8') }));
-		});
-	});
-	Object.keys(statistics).forEach(key => {
-		let value = statistics[key];
-		log(`${key} has ${value} untranslated strings.`);
-	});
-	sortedLanguages.forEach(language => {
-		let stats = statistics[language.id];
-		if (Is.undef(stats)) {
-			log(`\tNo translations found for language ${language.id}. Using default language instead.`);
-		}
-	});
-}
-
-export function processNlsFiles(opts: { fileHeader: string; languages: Language[] }): ThroughStream {
-	return through(function (this: ThroughStream, file: File) {
-		let fileName = path.basename(file.path);
-		if (fileName === 'nls.metadata.json') {
-			let json = null;
-			if (file.isBuffer()) {
-				json = JSON.parse((<Buffer>file.contents).toString('utf8'));
-			} else {
-				this.emit('error', `Failed to read component file: ${file.relative}`);
-				return;
-			}
-			if (BundledFormat.is(json)) {
-				processCoreBundleFormat(opts.fileHeader, opts.languages, json, this);
-			}
-		}
-		this.queue(file);
-	});
-}
-
-const editorProject: string = 'vscode-editor',
-	workbenchProject: string = 'vscode-workbench',
-	extensionsProject: string = 'vscode-extensions',
-	setupProject: string = 'vscode-setup';
-
-export function getResource(sourceFile: string): Resource {
-	let resource: string;
-
-	if (/^vs\/platform/.test(sourceFile)) {
-		return { name: 'vs/platform', project: editorProject };
-	} else if (/^vs\/editor\/contrib/.test(sourceFile)) {
-		return { name: 'vs/editor/contrib', project: editorProject };
-	} else if (/^vs\/editor/.test(sourceFile)) {
-		return { name: 'vs/editor', project: editorProject };
-	} else if (/^vs\/base/.test(sourceFile)) {
-		return { name: 'vs/base', project: editorProject };
-	} else if (/^vs\/code/.test(sourceFile)) {
-		return { name: 'vs/code', project: workbenchProject };
-	} else if (/^vs\/workbench\/contrib/.test(sourceFile)) {
-		resource = sourceFile.split('/', 4).join('/');
-		return { name: resource, project: workbenchProject };
-	} else if (/^vs\/workbench\/services/.test(sourceFile)) {
-		resource = sourceFile.split('/', 4).join('/');
-		return { name: resource, project: workbenchProject };
-	} else if (/^vs\/workbench/.test(sourceFile)) {
-		return { name: 'vs/workbench', project: workbenchProject };
-	}
-
-	throw new Error(`Could not identify the XLF bundle for ${sourceFile}`);
-}
-
-
-export function createXlfFilesForCoreBundle(): ThroughStream {
-	return through(function (this: ThroughStream, file: File) {
-		const basename = path.basename(file.path);
-		if (basename === 'nls.metadata.json') {
-			if (file.isBuffer()) {
-				const xlfs: Map<XLF> = Object.create(null);
-				const json: BundledFormat = JSON.parse((file.contents as Buffer).toString('utf8'));
-				for (let coreModule in json.keys) {
-					const projectResource = getResource(coreModule);
-					const resource = projectResource.name;
-					const project = projectResource.project;
-
-					const keys = json.keys[coreModule];
-					const messages = json.messages[coreModule];
-					if (keys.length !== messages.length) {
-						this.emit('error', `There is a mismatch between keys and messages in ${file.relative} for module ${coreModule}`);
-						return;
-					} else {
-						let xlf = xlfs[resource];
-						if (!xlf) {
-							xlf = new XLF(project);
-							xlfs[resource] = xlf;
-						}
-						xlf.addFile(`src/${coreModule}`, keys, messages);
-					}
-				}
-				for (let resource in xlfs) {
-					const xlf = xlfs[resource];
-					const filePath = `${xlf.project}/${resource.replace(/\//g, '_')}.xlf`;
-					const xlfFile = new File({
-						path: filePath,
-						contents: Buffer.from(xlf.toString(), 'utf8')
-					});
-					this.queue(xlfFile);
-				}
-			} else {
-				this.emit('error', new Error(`File ${file.relative} is not using a buffer content`));
-				return;
-			}
-		} else {
-			this.emit('error', new Error(`File ${file.relative} is not a core meta data file.`));
-			return;
-		}
-	});
-}
-
-export function createXlfFilesForExtensions(): ThroughStream {
-	let counter: number = 0;
-	let folderStreamEnded: boolean = false;
-	let folderStreamEndEmitted: boolean = false;
-	return through(function (this: ThroughStream, extensionFolder: File) {
-		const folderStream = this;
-		const stat = fs.statSync(extensionFolder.path);
-		if (!stat.isDirectory()) {
-			return;
-		}
-		let extensionName = path.basename(extensionFolder.path);
-		if (extensionName === 'node_modules') {
-			return;
-		}
-		counter++;
-		let _xlf: XLF;
-		function getXlf() {
-			if (!_xlf) {
-				_xlf = new XLF(extensionsProject);
-			}
-			return _xlf;
-		}
-		gulp.src([`.build/extensions/${extensionName}/package.nls.json`, `.build/extensions/${extensionName}/**/nls.metadata.json`], { allowEmpty: true }).pipe(through(function (file: File) {
-			if (file.isBuffer()) {
-				const buffer: Buffer = file.contents as Buffer;
-				const basename = path.basename(file.path);
-				if (basename === 'package.nls.json') {
-					const json: PackageJsonFormat = JSON.parse(buffer.toString('utf8'));
-					const keys = Object.keys(json);
-					const messages = keys.map((key) => {
-						const value = json[key];
-						if (Is.string(value)) {
-							return value;
-						} else if (value) {
-							return value.message;
-						} else {
-							return `Unknown message for key: ${key}`;
-						}
-					});
-					getXlf().addFile(`extensions/${extensionName}/package`, keys, messages);
-				} else if (basename === 'nls.metadata.json') {
-					const json: BundledExtensionFormat = JSON.parse(buffer.toString('utf8'));
-					const relPath = path.relative(`.build/extensions/${extensionName}`, path.dirname(file.path));
-					for (let file in json) {
-						const fileContent = json[file];
-						getXlf().addFile(`extensions/${extensionName}/${relPath}/${file}`, fileContent.keys, fileContent.messages);
-					}
-				} else {
-					this.emit('error', new Error(`${file.path} is not a valid extension nls file`));
-					return;
-				}
-			}
-		}, function () {
-			if (_xlf) {
-				let xlfFile = new File({
-					path: path.join(extensionsProject, extensionName + '.xlf'),
-					contents: Buffer.from(_xlf.toString(), 'utf8')
-				});
-				folderStream.queue(xlfFile);
-			}
-			this.queue(null);
-			counter--;
-			if (counter === 0 && folderStreamEnded && !folderStreamEndEmitted) {
-				folderStreamEndEmitted = true;
-				folderStream.queue(null);
-			}
-		}));
-	}, function () {
-		folderStreamEnded = true;
-		if (counter === 0) {
-			folderStreamEndEmitted = true;
-			this.queue(null);
-		}
-	});
-}
-
-export function createXlfFilesForIsl(): ThroughStream {
-	return through(function (this: ThroughStream, file: File) {
-		let projectName: string,
-			resourceFile: string;
-		if (path.basename(file.path) === 'messages.en.isl') {
-			projectName = setupProject;
-			resourceFile = 'messages.xlf';
-		} else {
-			throw new Error(`Unknown input file ${file.path}`);
-		}
-
-		let xlf = new XLF(projectName),
-			keys: string[] = [],
-			messages: string[] = [];
-
-		let model = new TextModel(file.contents.toString());
-		let inMessageSection = false;
-		model.lines.forEach(line => {
-			if (line.length === 0) {
-				return;
-			}
-			let firstChar = line.charAt(0);
-			switch (firstChar) {
-				case ';':
-					// Comment line;
-					return;
-				case '[':
-					inMessageSection = '[Messages]' === line || '[CustomMessages]' === line;
-					return;
-			}
-			if (!inMessageSection) {
-				return;
-			}
-			let sections: string[] = line.split('=');
-			if (sections.length !== 2) {
-				throw new Error(`Badly formatted message found: ${line}`);
-			} else {
-				let key = sections[0];
-				let value = sections[1];
-				if (key.length > 0 && value.length > 0) {
-					keys.push(key);
-					messages.push(value);
-				}
-			}
-		});
-
-		const originalPath = file.path.substring(file.cwd.length + 1, file.path.split('.')[0].length).replace(/\\/g, '/');
-		xlf.addFile(originalPath, keys, messages);
-
-		// Emit only upon all ISL files combined into single XLF instance
-		const newFilePath = path.join(projectName, resourceFile);
-		const xlfFile = new File({ path: newFilePath, contents: Buffer.from(xlf.toString(), 'utf-8') });
-		this.queue(xlfFile);
-	});
-}
-
-export function pushXlfFiles(apiHostname: string, username: string, password: string): ThroughStream {
-	let tryGetPromises: Array<Promise<boolean>> = [];
-	let updateCreatePromises: Array<Promise<boolean>> = [];
-
-	return through(function (this: ThroughStream, file: File) {
-		const project = path.dirname(file.relative);
-		const fileName = path.basename(file.path);
-		const slug = fileName.substr(0, fileName.length - '.xlf'.length);
-		const credentials = `${username}:${password}`;
-
-		// Check if resource already exists, if not, then create it.
-		let promise = tryGetResource(project, slug, apiHostname, credentials);
-		tryGetPromises.push(promise);
-		promise.then(exists => {
-			if (exists) {
-				promise = updateResource(project, slug, file, apiHostname, credentials);
-			} else {
-				promise = createResource(project, slug, file, apiHostname, credentials);
-			}
-			updateCreatePromises.push(promise);
-		});
-
-	}, function () {
-		// End the pipe only after all the communication with Transifex API happened
-		Promise.all(tryGetPromises).then(() => {
-			Promise.all(updateCreatePromises).then(() => {
-				this.queue(null);
-			}).catch((reason) => { throw new Error(reason); });
-		}).catch((reason) => { throw new Error(reason); });
-	});
-}
-
-function getAllResources(project: string, apiHostname: string, username: string, password: string): Promise<string[]> {
-	return new Promise((resolve, reject) => {
-		const credentials = `${username}:${password}`;
-		const options = {
-			hostname: apiHostname,
-			path: `/api/2/project/${project}/resources`,
-			auth: credentials,
-			method: 'GET'
-		};
-
-		const request = https.request(options, (res) => {
-			let buffer: Buffer[] = [];
-			res.on('data', (chunk: Buffer) => buffer.push(chunk));
-			res.on('end', () => {
-				if (res.statusCode === 200) {
-					let json = JSON.parse(Buffer.concat(buffer).toString());
-					if (Array.isArray(json)) {
-						resolve(json.map(o => o.slug));
-						return;
-					}
-					reject(`Unexpected data format. Response code: ${res.statusCode}.`);
-				} else {
-					reject(`No resources in ${project} returned no data. Response code: ${res.statusCode}.`);
-				}
-			});
-		});
-		request.on('error', (err) => {
-			reject(`Failed to query resources in ${project} with the following error: ${err}. ${options.path}`);
-		});
-		request.end();
-	});
-}
-
-export function findObsoleteResources(apiHostname: string, username: string, password: string): ThroughStream {
-	let resourcesByProject: Map<string[]> = Object.create(null);
-	resourcesByProject[extensionsProject] = ([] as any[]).concat(externalExtensionsWithTranslations); // clone
-
-	return through(function (this: ThroughStream, file: File) {
-		const project = path.dirname(file.relative);
-		const fileName = path.basename(file.path);
-		const slug = fileName.substr(0, fileName.length - '.xlf'.length);
-
-		let slugs = resourcesByProject[project];
-		if (!slugs) {
-			resourcesByProject[project] = slugs = [];
-		}
-		slugs.push(slug);
-		this.push(file);
-	}, function () {
-
-		const json = JSON.parse(fs.readFileSync('./build/lib/i18n.resources.json', 'utf8'));
-		let i18Resources = [...json.editor, ...json.workbench].map((r: Resource) => r.project + '/' + r.name.replace(/\//g, '_'));
-		let extractedResources: string[] = [];
-		for (let project of [workbenchProject, editorProject]) {
-			for (let resource of resourcesByProject[project]) {
-				if (resource !== 'setup_messages') {
-					extractedResources.push(project + '/' + resource);
-				}
-			}
-		}
-		if (i18Resources.length !== extractedResources.length) {
-			console.log(`[i18n] Obsolete resources in file 'build/lib/i18n.resources.json': JSON.stringify(${i18Resources.filter(p => extractedResources.indexOf(p) === -1)})`);
-			console.log(`[i18n] Missing resources in file 'build/lib/i18n.resources.json': JSON.stringify(${extractedResources.filter(p => i18Resources.indexOf(p) === -1)})`);
-		}
-
-		let promises: Array<Promise<void>> = [];
-		for (let project in resourcesByProject) {
-			promises.push(
-				getAllResources(project, apiHostname, username, password).then(resources => {
-					let expectedResources = resourcesByProject[project];
-					let unusedResources = resources.filter(resource => resource && expectedResources.indexOf(resource) === -1);
-					if (unusedResources.length) {
-						console.log(`[transifex] Obsolete resources in project '${project}': ${unusedResources.join(', ')}`);
-					}
-				})
-			);
-		}
-		return Promise.all(promises).then(_ => {
-			this.push(null);
-		}).catch((reason) => { throw new Error(reason); });
-	});
-}
-
-function tryGetResource(project: string, slug: string, apiHostname: string, credentials: string): Promise<boolean> {
-	return new Promise((resolve, reject) => {
-		const options = {
-			hostname: apiHostname,
-			path: `/api/2/project/${project}/resource/${slug}/?details`,
-			auth: credentials,
-			method: 'GET'
-		};
-
-		const request = https.request(options, (response) => {
-			if (response.statusCode === 404) {
-				resolve(false);
-			} else if (response.statusCode === 200) {
-				resolve(true);
-			} else {
-				reject(`Failed to query resource ${project}/${slug}. Response: ${response.statusCode} ${response.statusMessage}`);
-			}
-		});
-		request.on('error', (err) => {
-			reject(`Failed to get ${project}/${slug} on Transifex: ${err}`);
-		});
-
-		request.end();
-	});
-}
-
-function createResource(project: string, slug: string, xlfFile: File, apiHostname: string, credentials: any): Promise<any> {
-	return new Promise((_resolve, reject) => {
-		const data = JSON.stringify({
-			'content': xlfFile.contents.toString(),
-			'name': slug,
-			'slug': slug,
-			'i18n_type': 'XLIFF'
-		});
-		const options = {
-			hostname: apiHostname,
-			path: `/api/2/project/${project}/resources`,
-			headers: {
-				'Content-Type': 'application/json',
-				'Content-Length': Buffer.byteLength(data)
-			},
-			auth: credentials,
-			method: 'POST'
-		};
-
-		let request = https.request(options, (res) => {
-			if (res.statusCode === 201) {
-				log(`Resource ${project}/${slug} successfully created on Transifex.`);
-			} else {
-				reject(`Something went wrong in the request creating ${slug} in ${project}. ${res.statusCode}`);
-			}
-		});
-		request.on('error', (err) => {
-			reject(`Failed to create ${project}/${slug} on Transifex: ${err}`);
-		});
-
-		request.write(data);
-		request.end();
-	});
-}
-
-/**
- * The following link provides information about how Transifex handles updates of a resource file:
- * https://dev.befoolish.co/tx-docs/public/projects/updating-content#what-happens-when-you-update-files
- */
-function updateResource(project: string, slug: string, xlfFile: File, apiHostname: string, credentials: string): Promise<any> {
-	return new Promise<void>((resolve, reject) => {
-		const data = JSON.stringify({ content: xlfFile.contents.toString() });
-		const options = {
-			hostname: apiHostname,
-			path: `/api/2/project/${project}/resource/${slug}/content`,
-			headers: {
-				'Content-Type': 'application/json',
-				'Content-Length': Buffer.byteLength(data)
-			},
-			auth: credentials,
-			method: 'PUT'
-		};
-
-		let request = https.request(options, (res) => {
-			if (res.statusCode === 200) {
-				res.setEncoding('utf8');
-
-				let responseBuffer: string = '';
-				res.on('data', function (chunk) {
-					responseBuffer += chunk;
-				});
-				res.on('end', () => {
-					const response = JSON.parse(responseBuffer);
-					log(`Resource ${project}/${slug} successfully updated on Transifex. Strings added: ${response.strings_added}, updated: ${response.strings_added}, deleted: ${response.strings_added}`);
-					resolve();
-				});
-			} else {
-				reject(`Something went wrong in the request updating ${slug} in ${project}. ${res.statusCode}`);
-			}
-		});
-		request.on('error', (err) => {
-			reject(`Failed to update ${project}/${slug} on Transifex: ${err}`);
-		});
-
-		request.write(data);
-		request.end();
-	});
-}
-
-export function pullSetupXlfFiles(apiHostname: string, username: string, password: string, language: Language, includeDefault: boolean): NodeJS.ReadableStream {
-	let setupResources = [{ name: 'setup_messages', project: workbenchProject }];
-	if (includeDefault) {
-		setupResources.push({ name: 'setup_default', project: setupProject });
-	}
-	return pullXlfFiles(apiHostname, username, password, language, setupResources);
-}
-
-function pullXlfFiles(apiHostname: string, username: string, password: string, language: Language, resources: Resource[]): NodeJS.ReadableStream {
-	const credentials = `${username}:${password}`;
-	let expectedTranslationsCount = resources.length;
-	let translationsRetrieved = 0, called = false;
-
-	return readable(function (_count: any, callback: any) {
-		// Mark end of stream when all resources were retrieved
-		if (translationsRetrieved === expectedTranslationsCount) {
-			return this.emit('end');
-		}
-
-		if (!called) {
-			called = true;
-			const stream = this;
-			resources.map(function (resource) {
-				retrieveResource(language, resource, apiHostname, credentials).then((file: File | null) => {
-					if (file) {
-						stream.emit('data', file);
-					}
-					translationsRetrieved++;
-				}).catch(error => { throw new Error(error); });
-			});
-		}
-
-		callback();
-	});
-}
-const limiter = new Limiter<File | null>(NUMBER_OF_CONCURRENT_DOWNLOADS);
-
-function retrieveResource(language: Language, resource: Resource, apiHostname: string, credentials: string): Promise<File | null> {
-	return limiter.queue(() => new Promise<File | null>((resolve, reject) => {
-		const slug = resource.name.replace(/\//g, '_');
-		const project = resource.project;
-		let transifexLanguageId = language.id === 'ps' ? 'en' : language.translationId || language.id;
-		const options = {
-			hostname: apiHostname,
-			path: `/api/2/project/${project}/resource/${slug}/translation/${transifexLanguageId}?file&mode=onlyreviewed`,
-			auth: credentials,
-			port: 443,
-			method: 'GET'
-		};
-		console.log('[transifex] Fetching ' + options.path);
-
-		let request = https.request(options, (res) => {
-			let xlfBuffer: Buffer[] = [];
-			res.on('data', (chunk: Buffer) => xlfBuffer.push(chunk));
-			res.on('end', () => {
-				if (res.statusCode === 200) {
-					resolve(new File({ contents: Buffer.concat(xlfBuffer), path: `${project}/${slug}.xlf` }));
-				} else if (res.statusCode === 404) {
-					console.log(`[transifex] ${slug} in ${project} returned no data.`);
-					resolve(null);
-				} else {
-					reject(`${slug} in ${project} returned no data. Response code: ${res.statusCode}.`);
-				}
-			});
-		});
-		request.on('error', (err) => {
-			reject(`Failed to query resource ${slug} with the following error: ${err}. ${options.path}`);
-		});
-		request.end();
-	}));
-}
-
-export function prepareI18nFiles(): ThroughStream {
-	let parsePromises: Promise<ParsedXLF[]>[] = [];
-
-	return through(function (this: ThroughStream, xlf: File) {
-		let stream = this;
-		let parsePromise = XLF.parse(xlf.contents.toString());
-		parsePromises.push(parsePromise);
-		parsePromise.then(
-			resolvedFiles => {
-				resolvedFiles.forEach(file => {
-					let translatedFile = createI18nFile(file.originalFilePath, file.messages);
-					stream.queue(translatedFile);
-				});
-			}
-		);
-	}, function () {
-		Promise.all(parsePromises)
-			.then(() => { this.queue(null); })
-			.catch(reason => { throw new Error(reason); });
-	});
-}
-
-function createI18nFile(originalFilePath: string, messages: any): File {
-	let result = Object.create(null);
-	result[''] = [
-		'--------------------------------------------------------------------------------------------',
-		'Copyright (c) Microsoft Corporation. All rights reserved.',
-		'Licensed under the MIT License. See License.txt in the project root for license information.',
-		'--------------------------------------------------------------------------------------------',
-		'Do not edit this file. It is machine generated.'
-	];
-	for (let key of Object.keys(messages)) {
-		result[key] = messages[key];
-	}
-
-	let content = JSON.stringify(result, null, '\t');
-	if (process.platform === 'win32') {
-		content = content.replace(/\n/g, '\r\n');
-	}
-	return new File({
-		path: path.join(originalFilePath + '.i18n.json'),
-		contents: Buffer.from(content, 'utf8')
-	});
-}
-
-interface I18nPack {
-	version: string;
-	contents: {
-		[path: string]: Map<string>;
-	};
-}
-
-const i18nPackVersion = '1.0.0';
-
-export interface TranslationPath {
-	id: string;
-	resourceName: string;
-}
-
-export function prepareI18nPackFiles(externalExtensions: Map<string>, resultingTranslationPaths: TranslationPath[], pseudo = false): NodeJS.ReadWriteStream {
-	let parsePromises: Promise<ParsedXLF[]>[] = [];
-	let mainPack: I18nPack = { version: i18nPackVersion, contents: {} };
-	let extensionsPacks: Map<I18nPack> = {};
-	let errors: any[] = [];
-	return through(function (this: ThroughStream, xlf: File) {
-		let project = path.basename(path.dirname(path.dirname(xlf.relative)));
-		let resource = path.basename(xlf.relative, '.xlf');
-		let contents = xlf.contents.toString();
-		log(`Found ${project}: ${resource}`);
-		let parsePromise = pseudo ? XLF.parsePseudo(contents) : XLF.parse(contents);
-		parsePromises.push(parsePromise);
-		parsePromise.then(
-			resolvedFiles => {
-				resolvedFiles.forEach(file => {
-					const path = file.originalFilePath;
-					const firstSlash = path.indexOf('/');
-
-					if (project === extensionsProject) {
-						let extPack = extensionsPacks[resource];
-						if (!extPack) {
-							extPack = extensionsPacks[resource] = { version: i18nPackVersion, contents: {} };
-						}
-						const externalId = externalExtensions[resource];
-						if (!externalId) { // internal extension: remove 'extensions/extensionId/' segnent
-							const secondSlash = path.indexOf('/', firstSlash + 1);
-							extPack.contents[path.substr(secondSlash + 1)] = file.messages;
-						} else {
-							extPack.contents[path] = file.messages;
-						}
-					} else {
-						mainPack.contents[path.substr(firstSlash + 1)] = file.messages;
-					}
-				});
-			}
-		).catch(reason => {
-			errors.push(reason);
-		});
-	}, function () {
-		Promise.all(parsePromises)
-			.then(() => {
-				if (errors.length > 0) {
-					throw errors;
-				}
-				const translatedMainFile = createI18nFile('./main', mainPack);
-				resultingTranslationPaths.push({ id: 'vscode', resourceName: 'main.i18n.json' });
-
-				this.queue(translatedMainFile);
-				for (let extension in extensionsPacks) {
-					const translatedExtFile = createI18nFile(`extensions/${extension}`, extensionsPacks[extension]);
-					this.queue(translatedExtFile);
-
-					const externalExtensionId = externalExtensions[extension];
-					if (externalExtensionId) {
-						resultingTranslationPaths.push({ id: externalExtensionId, resourceName: `extensions/${extension}.i18n.json` });
-					} else {
-						resultingTranslationPaths.push({ id: `vscode.${extension}`, resourceName: `extensions/${extension}.i18n.json` });
-					}
-
-				}
-				this.queue(null);
-			})
-			.catch((reason) => {
-				this.emit('error', reason);
-			});
-	});
-}
-
-export function prepareIslFiles(language: Language, innoSetupConfig: InnoSetup): ThroughStream {
-	let parsePromises: Promise<ParsedXLF[]>[] = [];
-
-	return through(function (this: ThroughStream, xlf: File) {
-		let stream = this;
-		let parsePromise = XLF.parse(xlf.contents.toString());
-		parsePromises.push(parsePromise);
-		parsePromise.then(
-			resolvedFiles => {
-				resolvedFiles.forEach(file => {
-					let translatedFile = createIslFile(file.originalFilePath, file.messages, language, innoSetupConfig);
-					stream.queue(translatedFile);
-				});
-			}
-		).catch(reason => {
-			this.emit('error', reason);
-		});
-	}, function () {
-		Promise.all(parsePromises)
-			.then(() => { this.queue(null); })
-			.catch(reason => {
-				this.emit('error', reason);
-			});
-	});
-}
-
-function createIslFile(originalFilePath: string, messages: Map<string>, language: Language, innoSetup: InnoSetup): File {
-	let content: string[] = [];
-	let originalContent: TextModel;
-	if (path.basename(originalFilePath) === 'Default') {
-		originalContent = new TextModel(fs.readFileSync(originalFilePath + '.isl', 'utf8'));
-	} else {
-		originalContent = new TextModel(fs.readFileSync(originalFilePath + '.en.isl', 'utf8'));
-	}
-	originalContent.lines.forEach(line => {
-		if (line.length > 0) {
-			let firstChar = line.charAt(0);
-			if (firstChar === '[' || firstChar === ';') {
-				content.push(line);
-			} else {
-				let sections: string[] = line.split('=');
-				let key = sections[0];
-				let translated = line;
-				if (key) {
-					let translatedMessage = messages[key];
-					if (translatedMessage) {
-						translated = `${key}=${translatedMessage}`;
-					}
-				}
-
-				content.push(translated);
-			}
-		}
-	});
-
-	const basename = path.basename(originalFilePath);
-	const filePath = `${basename}.${language.id}.isl`;
-	const encoded = iconv.encode(Buffer.from(content.join('\r\n'), 'utf8').toString(), innoSetup.codePage);
-
-	return new File({
-		path: filePath,
-		contents: Buffer.from(encoded),
-	});
-}
-
-function encodeEntities(value: string): string {
-	let result: string[] = [];
-	for (let i = 0; i < value.length; i++) {
-		let ch = value[i];
-		switch (ch) {
-			case '<':
-				result.push('&lt;');
-				break;
-			case '>':
-				result.push('&gt;');
-				break;
-			case '&':
-				result.push('&amp;');
-				break;
-			default:
-				result.push(ch);
-		}
-	}
-	return result.join('');
-}
-
-function decodeEntities(value: string): string {
-	return value.replace(/&lt;/g, '<').replace(/&gt;/g, '>').replace(/&amp;/g, '&');
-}
-
-function pseudify(message: string) {
-	return '\uFF3B' + message.replace(/[aouei]/g, '$&$&') + '\uFF3D';
-}
diff --git a/lib/vscode/build/lib/layersChecker.js b/lib/vscode/build/lib/layersChecker.js
deleted file mode 100644
index 147d038f50b8..000000000000
--- a/lib/vscode/build/lib/layersChecker.js
+++ /dev/null
@@ -1,274 +0,0 @@
-"use strict";
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-Object.defineProperty(exports, "__esModule", { value: true });
-const ts = require("typescript");
-const fs_1 = require("fs");
-const path_1 = require("path");
-const minimatch_1 = require("minimatch");
-//
-// #############################################################################################
-//
-// A custom typescript checker for the specific task of detecting the use of certain types in a
-// layer that does not allow such use. For example:
-// - using DOM globals in common/node/electron-main layer (e.g. HTMLElement)
-// - using node.js globals in common/browser layer (e.g. process)
-//
-// Make changes to below RULES to lift certain files from these checks only if absolutely needed
-//
-// #############################################################################################
-//
-// Types we assume are present in all implementations of JS VMs (node.js, browsers)
-// Feel free to add more core types as you see needed if present in node.js and browsers
-const CORE_TYPES = [
-    'require',
-    'setTimeout',
-    'clearTimeout',
-    'setInterval',
-    'clearInterval',
-    'console',
-    'log',
-    'info',
-    'warn',
-    'error',
-    'group',
-    'groupEnd',
-    'table',
-    'assert',
-    'Error',
-    'String',
-    'throws',
-    'stack',
-    'captureStackTrace',
-    'stackTraceLimit',
-    'TextDecoder',
-    'TextEncoder',
-    'encode',
-    'decode',
-    'self',
-    'trimLeft',
-    'trimRight'
-];
-// Types that are defined in a common layer but are known to be only
-// available in native environments should not be allowed in browser
-const NATIVE_TYPES = [
-    'NativeParsedArgs',
-    'INativeEnvironmentService',
-    'AbstractNativeEnvironmentService',
-    'INativeWindowConfiguration',
-    'ICommonNativeHostService'
-];
-const RULES = [
-    // Tests: skip
-    {
-        target: '**/vs/**/test/**',
-        skip: true // -> skip all test files
-    },
-    // Common: vs/base/common/platform.ts
-    {
-        target: '**/vs/base/common/platform.ts',
-        allowedTypes: [
-            ...CORE_TYPES,
-            // Safe access to postMessage() and friends
-            'MessageEvent',
-            'data'
-        ],
-        disallowedTypes: NATIVE_TYPES,
-        disallowedDefinitions: [
-            'lib.dom.d.ts',
-            '@types/node' // no node.js
-        ]
-    },
-    // Common: vs/platform/environment/common/*
-    {
-        target: '**/vs/platform/environment/common/*.ts',
-        disallowedTypes: [ /* Ignore native types that are defined from here */],
-        allowedTypes: CORE_TYPES,
-        disallowedDefinitions: [
-            'lib.dom.d.ts',
-            '@types/node' // no node.js
-        ]
-    },
-    // Common: vs/platform/windows/common/windows.ts
-    {
-        target: '**/vs/platform/windows/common/windows.ts',
-        disallowedTypes: [ /* Ignore native types that are defined from here */],
-        allowedTypes: CORE_TYPES,
-        disallowedDefinitions: [
-            'lib.dom.d.ts',
-            '@types/node' // no node.js
-        ]
-    },
-    // Common: vs/platform/native/common/native.ts
-    {
-        target: '**/vs/platform/native/common/native.ts',
-        disallowedTypes: [ /* Ignore native types that are defined from here */],
-        allowedTypes: CORE_TYPES,
-        disallowedDefinitions: [
-            'lib.dom.d.ts',
-            '@types/node' // no node.js
-        ]
-    },
-    // Common: vs/workbench/api/common/extHostExtensionService.ts
-    {
-        target: '**/vs/workbench/api/common/extHostExtensionService.ts',
-        allowedTypes: [
-            ...CORE_TYPES,
-            // Safe access to global
-            'global'
-        ],
-        disallowedTypes: NATIVE_TYPES,
-        disallowedDefinitions: [
-            'lib.dom.d.ts',
-            '@types/node' // no node.js
-        ]
-    },
-    // Common
-    {
-        target: '**/vs/**/common/**',
-        allowedTypes: CORE_TYPES,
-        disallowedTypes: NATIVE_TYPES,
-        disallowedDefinitions: [
-            'lib.dom.d.ts',
-            '@types/node' // no node.js
-        ]
-    },
-    // Browser
-    {
-        target: '**/vs/**/browser/**',
-        allowedTypes: CORE_TYPES,
-        disallowedTypes: NATIVE_TYPES,
-        disallowedDefinitions: [
-            '@types/node' // no node.js
-        ]
-    },
-    // Browser (editor contrib)
-    {
-        target: '**/src/vs/editor/contrib/**',
-        allowedTypes: CORE_TYPES,
-        disallowedTypes: NATIVE_TYPES,
-        disallowedDefinitions: [
-            '@types/node' // no node.js
-        ]
-    },
-    // node.js
-    {
-        target: '**/vs/**/node/**',
-        allowedTypes: [
-            ...CORE_TYPES,
-            // --> types from node.d.ts that duplicate from lib.dom.d.ts
-            'URL',
-            'protocol',
-            'hostname',
-            'port',
-            'pathname',
-            'search',
-            'username',
-            'password'
-        ],
-        disallowedDefinitions: [
-            'lib.dom.d.ts' // no DOM
-        ]
-    },
-    // Electron (sandbox)
-    {
-        target: '**/vs/**/electron-sandbox/**',
-        allowedTypes: CORE_TYPES,
-        disallowedDefinitions: [
-            '@types/node' // no node.js
-        ]
-    },
-    // Electron (renderer): skip
-    {
-        target: '**/vs/**/electron-browser/**',
-        skip: true // -> supports all types
-    },
-    // Electron (main)
-    {
-        target: '**/vs/**/electron-main/**',
-        allowedTypes: [
-            ...CORE_TYPES,
-            // --> types from electron.d.ts that duplicate from lib.dom.d.ts
-            'Event',
-            'Request'
-        ],
-        disallowedDefinitions: [
-            'lib.dom.d.ts' // no DOM
-        ]
-    }
-];
-const TS_CONFIG_PATH = path_1.join(__dirname, '../../', 'src', 'tsconfig.json');
-let hasErrors = false;
-function checkFile(program, sourceFile, rule) {
-    checkNode(sourceFile);
-    function checkNode(node) {
-        var _a, _b;
-        if (node.kind !== ts.SyntaxKind.Identifier) {
-            return ts.forEachChild(node, checkNode); // recurse down
-        }
-        const text = node.getText(sourceFile);
-        if ((_a = rule.allowedTypes) === null || _a === void 0 ? void 0 : _a.some(allowed => allowed === text)) {
-            return; // override
-        }
-        if ((_b = rule.disallowedTypes) === null || _b === void 0 ? void 0 : _b.some(disallowed => disallowed === text)) {
-            const { line, character } = sourceFile.getLineAndCharacterOfPosition(node.getStart());
-            console.log(`[build/lib/layersChecker.ts]: Reference to '${text}' violates layer '${rule.target}' (${sourceFile.fileName} (${line + 1},${character + 1})`);
-            hasErrors = true;
-            return;
-        }
-        const checker = program.getTypeChecker();
-        const symbol = checker.getSymbolAtLocation(node);
-        if (symbol) {
-            const declarations = symbol.declarations;
-            if (Array.isArray(declarations)) {
-                for (const declaration of declarations) {
-                    if (declaration) {
-                        const parent = declaration.parent;
-                        if (parent) {
-                            const parentSourceFile = parent.getSourceFile();
-                            if (parentSourceFile) {
-                                const definitionFileName = parentSourceFile.fileName;
-                                if (rule.disallowedDefinitions) {
-                                    for (const disallowedDefinition of rule.disallowedDefinitions) {
-                                        if (definitionFileName.indexOf(disallowedDefinition) >= 0) {
-                                            const { line, character } = sourceFile.getLineAndCharacterOfPosition(node.getStart());
-                                            console.log(`[build/lib/layersChecker.ts]: Reference to '${text}' from '${disallowedDefinition}' violates layer '${rule.target}' (${sourceFile.fileName} (${line + 1},${character + 1})`);
-                                            hasErrors = true;
-                                            return;
-                                        }
-                                    }
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-        }
-    }
-}
-function createProgram(tsconfigPath) {
-    const tsConfig = ts.readConfigFile(tsconfigPath, ts.sys.readFile);
-    const configHostParser = { fileExists: fs_1.existsSync, readDirectory: ts.sys.readDirectory, readFile: file => fs_1.readFileSync(file, 'utf8'), useCaseSensitiveFileNames: process.platform === 'linux' };
-    const tsConfigParsed = ts.parseJsonConfigFileContent(tsConfig.config, configHostParser, path_1.resolve(path_1.dirname(tsconfigPath)), { noEmit: true });
-    const compilerHost = ts.createCompilerHost(tsConfigParsed.options, true);
-    return ts.createProgram(tsConfigParsed.fileNames, tsConfigParsed.options, compilerHost);
-}
-//
-// Create program and start checking
-//
-const program = createProgram(TS_CONFIG_PATH);
-for (const sourceFile of program.getSourceFiles()) {
-    for (const rule of RULES) {
-        if (minimatch_1.match([sourceFile.fileName], rule.target).length > 0) {
-            if (!rule.skip) {
-                checkFile(program, sourceFile, rule);
-            }
-            break;
-        }
-    }
-}
-if (hasErrors) {
-    process.exit(1);
-}
diff --git a/lib/vscode/build/lib/layersChecker.ts b/lib/vscode/build/lib/layersChecker.ts
deleted file mode 100644
index 5b8e7fc667b2..000000000000
--- a/lib/vscode/build/lib/layersChecker.ts
+++ /dev/null
@@ -1,319 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-import * as ts from 'typescript';
-import { readFileSync, existsSync } from 'fs';
-import { resolve, dirname, join } from 'path';
-import { match } from 'minimatch';
-
-//
-// #############################################################################################
-//
-// A custom typescript checker for the specific task of detecting the use of certain types in a
-// layer that does not allow such use. For example:
-// - using DOM globals in common/node/electron-main layer (e.g. HTMLElement)
-// - using node.js globals in common/browser layer (e.g. process)
-//
-// Make changes to below RULES to lift certain files from these checks only if absolutely needed
-//
-// #############################################################################################
-//
-
-// Types we assume are present in all implementations of JS VMs (node.js, browsers)
-// Feel free to add more core types as you see needed if present in node.js and browsers
-const CORE_TYPES = [
-	'require', // from our AMD loader
-	'setTimeout',
-	'clearTimeout',
-	'setInterval',
-	'clearInterval',
-	'console',
-	'log',
-	'info',
-	'warn',
-	'error',
-	'group',
-	'groupEnd',
-	'table',
-	'assert',
-	'Error',
-	'String',
-	'throws',
-	'stack',
-	'captureStackTrace',
-	'stackTraceLimit',
-	'TextDecoder',
-	'TextEncoder',
-	'encode',
-	'decode',
-	'self',
-	'trimLeft',
-	'trimRight'
-];
-
-// Types that are defined in a common layer but are known to be only
-// available in native environments should not be allowed in browser
-const NATIVE_TYPES = [
-	'NativeParsedArgs',
-	'INativeEnvironmentService',
-	'AbstractNativeEnvironmentService',
-	'INativeWindowConfiguration',
-	'ICommonNativeHostService'
-];
-
-const RULES = [
-
-	// Tests: skip
-	{
-		target: '**/vs/**/test/**',
-		skip: true // -> skip all test files
-	},
-
-	// Common: vs/base/common/platform.ts
-	{
-		target: '**/vs/base/common/platform.ts',
-		allowedTypes: [
-			...CORE_TYPES,
-
-			// Safe access to postMessage() and friends
-			'MessageEvent',
-			'data'
-		],
-		disallowedTypes: NATIVE_TYPES,
-		disallowedDefinitions: [
-			'lib.dom.d.ts', // no DOM
-			'@types/node'	// no node.js
-		]
-	},
-
-	// Common: vs/platform/environment/common/*
-	{
-		target: '**/vs/platform/environment/common/*.ts',
-		disallowedTypes: [/* Ignore native types that are defined from here */],
-		allowedTypes: CORE_TYPES,
-		disallowedDefinitions: [
-			'lib.dom.d.ts', // no DOM
-			'@types/node'	// no node.js
-		]
-	},
-
-	// Common: vs/platform/windows/common/windows.ts
-	{
-		target: '**/vs/platform/windows/common/windows.ts',
-		disallowedTypes: [/* Ignore native types that are defined from here */],
-		allowedTypes: CORE_TYPES,
-		disallowedDefinitions: [
-			'lib.dom.d.ts', // no DOM
-			'@types/node'	// no node.js
-		]
-	},
-
-	// Common: vs/platform/native/common/native.ts
-	{
-		target: '**/vs/platform/native/common/native.ts',
-		disallowedTypes: [/* Ignore native types that are defined from here */],
-		allowedTypes: CORE_TYPES,
-		disallowedDefinitions: [
-			'lib.dom.d.ts', // no DOM
-			'@types/node'	// no node.js
-		]
-	},
-
-	// Common: vs/workbench/api/common/extHostExtensionService.ts
-	{
-		target: '**/vs/workbench/api/common/extHostExtensionService.ts',
-		allowedTypes: [
-			...CORE_TYPES,
-
-			// Safe access to global
-			'global'
-		],
-		disallowedTypes: NATIVE_TYPES,
-		disallowedDefinitions: [
-			'lib.dom.d.ts', // no DOM
-			'@types/node'	// no node.js
-		]
-	},
-
-	// Common
-	{
-		target: '**/vs/**/common/**',
-		allowedTypes: CORE_TYPES,
-		disallowedTypes: NATIVE_TYPES,
-		disallowedDefinitions: [
-			'lib.dom.d.ts', // no DOM
-			'@types/node'	// no node.js
-		]
-	},
-
-	// Browser
-	{
-		target: '**/vs/**/browser/**',
-		allowedTypes: CORE_TYPES,
-		disallowedTypes: NATIVE_TYPES,
-		disallowedDefinitions: [
-			'@types/node'	// no node.js
-		]
-	},
-
-	// Browser (editor contrib)
-	{
-		target: '**/src/vs/editor/contrib/**',
-		allowedTypes: CORE_TYPES,
-		disallowedTypes: NATIVE_TYPES,
-		disallowedDefinitions: [
-			'@types/node'	// no node.js
-		]
-	},
-
-	// node.js
-	{
-		target: '**/vs/**/node/**',
-		allowedTypes: [
-			...CORE_TYPES,
-
-			// --> types from node.d.ts that duplicate from lib.dom.d.ts
-			'URL',
-			'protocol',
-			'hostname',
-			'port',
-			'pathname',
-			'search',
-			'username',
-			'password'
-		],
-		disallowedDefinitions: [
-			'lib.dom.d.ts'	// no DOM
-		]
-	},
-
-	// Electron (sandbox)
-	{
-		target: '**/vs/**/electron-sandbox/**',
-		allowedTypes: CORE_TYPES,
-		disallowedDefinitions: [
-			'@types/node'	// no node.js
-		]
-	},
-
-	// Electron (renderer): skip
-	{
-		target: '**/vs/**/electron-browser/**',
-		skip: true // -> supports all types
-	},
-
-	// Electron (main)
-	{
-		target: '**/vs/**/electron-main/**',
-		allowedTypes: [
-			...CORE_TYPES,
-
-			// --> types from electron.d.ts that duplicate from lib.dom.d.ts
-			'Event',
-			'Request'
-		],
-		disallowedDefinitions: [
-			'lib.dom.d.ts'	// no DOM
-		]
-	}
-];
-
-const TS_CONFIG_PATH = join(__dirname, '../../', 'src', 'tsconfig.json');
-
-interface IRule {
-	target: string;
-	skip?: boolean;
-	allowedTypes?: string[];
-	disallowedDefinitions?: string[];
-	disallowedTypes?: string[];
-}
-
-let hasErrors = false;
-
-function checkFile(program: ts.Program, sourceFile: ts.SourceFile, rule: IRule) {
-	checkNode(sourceFile);
-
-	function checkNode(node: ts.Node): void {
-		if (node.kind !== ts.SyntaxKind.Identifier) {
-			return ts.forEachChild(node, checkNode); // recurse down
-		}
-
-		const text = node.getText(sourceFile);
-
-		if (rule.allowedTypes?.some(allowed => allowed === text)) {
-			return; // override
-		}
-
-		if (rule.disallowedTypes?.some(disallowed => disallowed === text)) {
-			const { line, character } = sourceFile.getLineAndCharacterOfPosition(node.getStart());
-			console.log(`[build/lib/layersChecker.ts]: Reference to '${text}' violates layer '${rule.target}' (${sourceFile.fileName} (${line + 1},${character + 1})`);
-
-			hasErrors = true;
-			return;
-		}
-
-		const checker = program.getTypeChecker();
-		const symbol = checker.getSymbolAtLocation(node);
-		if (symbol) {
-			const declarations = symbol.declarations;
-			if (Array.isArray(declarations)) {
-				for (const declaration of declarations) {
-					if (declaration) {
-						const parent = declaration.parent;
-						if (parent) {
-							const parentSourceFile = parent.getSourceFile();
-							if (parentSourceFile) {
-								const definitionFileName = parentSourceFile.fileName;
-								if (rule.disallowedDefinitions) {
-									for (const disallowedDefinition of rule.disallowedDefinitions) {
-										if (definitionFileName.indexOf(disallowedDefinition) >= 0) {
-											const { line, character } = sourceFile.getLineAndCharacterOfPosition(node.getStart());
-											console.log(`[build/lib/layersChecker.ts]: Reference to '${text}' from '${disallowedDefinition}' violates layer '${rule.target}' (${sourceFile.fileName} (${line + 1},${character + 1})`);
-
-											hasErrors = true;
-											return;
-										}
-									}
-								}
-							}
-						}
-					}
-				}
-			}
-		}
-	}
-}
-
-function createProgram(tsconfigPath: string): ts.Program {
-	const tsConfig = ts.readConfigFile(tsconfigPath, ts.sys.readFile);
-
-	const configHostParser: ts.ParseConfigHost = { fileExists: existsSync, readDirectory: ts.sys.readDirectory, readFile: file => readFileSync(file, 'utf8'), useCaseSensitiveFileNames: process.platform === 'linux' };
-	const tsConfigParsed = ts.parseJsonConfigFileContent(tsConfig.config, configHostParser, resolve(dirname(tsconfigPath)), { noEmit: true });
-
-	const compilerHost = ts.createCompilerHost(tsConfigParsed.options, true);
-
-	return ts.createProgram(tsConfigParsed.fileNames, tsConfigParsed.options, compilerHost);
-}
-
-//
-// Create program and start checking
-//
-const program = createProgram(TS_CONFIG_PATH);
-
-for (const sourceFile of program.getSourceFiles()) {
-	for (const rule of RULES) {
-		if (match([sourceFile.fileName], rule.target).length > 0) {
-			if (!rule.skip) {
-				checkFile(program, sourceFile, rule);
-			}
-
-			break;
-		}
-	}
-}
-
-if (hasErrors) {
-	process.exit(1);
-}
diff --git a/lib/vscode/build/lib/monaco-api.js b/lib/vscode/build/lib/monaco-api.js
deleted file mode 100644
index 2c6677d430ca..000000000000
--- a/lib/vscode/build/lib/monaco-api.js
+++ /dev/null
@@ -1,628 +0,0 @@
-"use strict";
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.execute = exports.run3 = exports.DeclarationResolver = exports.FSProvider = exports.RECIPE_PATH = void 0;
-const fs = require("fs");
-const path = require("path");
-const fancyLog = require("fancy-log");
-const ansiColors = require("ansi-colors");
-const dtsv = '3';
-const tsfmt = require('../../tsfmt.json');
-const SRC = path.join(__dirname, '../../src');
-exports.RECIPE_PATH = path.join(__dirname, '../monaco/monaco.d.ts.recipe');
-const DECLARATION_PATH = path.join(__dirname, '../../src/vs/monaco.d.ts');
-function logErr(message, ...rest) {
-    fancyLog(ansiColors.yellow(`[monaco.d.ts]`), message, ...rest);
-}
-function isDeclaration(ts, a) {
-    return (a.kind === ts.SyntaxKind.InterfaceDeclaration
-        || a.kind === ts.SyntaxKind.EnumDeclaration
-        || a.kind === ts.SyntaxKind.ClassDeclaration
-        || a.kind === ts.SyntaxKind.TypeAliasDeclaration
-        || a.kind === ts.SyntaxKind.FunctionDeclaration
-        || a.kind === ts.SyntaxKind.ModuleDeclaration);
-}
-function visitTopLevelDeclarations(ts, sourceFile, visitor) {
-    let stop = false;
-    let visit = (node) => {
-        if (stop) {
-            return;
-        }
-        switch (node.kind) {
-            case ts.SyntaxKind.InterfaceDeclaration:
-            case ts.SyntaxKind.EnumDeclaration:
-            case ts.SyntaxKind.ClassDeclaration:
-            case ts.SyntaxKind.VariableStatement:
-            case ts.SyntaxKind.TypeAliasDeclaration:
-            case ts.SyntaxKind.FunctionDeclaration:
-            case ts.SyntaxKind.ModuleDeclaration:
-                stop = visitor(node);
-        }
-        if (stop) {
-            return;
-        }
-        ts.forEachChild(node, visit);
-    };
-    visit(sourceFile);
-}
-function getAllTopLevelDeclarations(ts, sourceFile) {
-    let all = [];
-    visitTopLevelDeclarations(ts, sourceFile, (node) => {
-        if (node.kind === ts.SyntaxKind.InterfaceDeclaration || node.kind === ts.SyntaxKind.ClassDeclaration || node.kind === ts.SyntaxKind.ModuleDeclaration) {
-            let interfaceDeclaration = node;
-            let triviaStart = interfaceDeclaration.pos;
-            let triviaEnd = interfaceDeclaration.name.pos;
-            let triviaText = getNodeText(sourceFile, { pos: triviaStart, end: triviaEnd });
-            if (triviaText.indexOf('@internal') === -1) {
-                all.push(node);
-            }
-        }
-        else {
-            let nodeText = getNodeText(sourceFile, node);
-            if (nodeText.indexOf('@internal') === -1) {
-                all.push(node);
-            }
-        }
-        return false /*continue*/;
-    });
-    return all;
-}
-function getTopLevelDeclaration(ts, sourceFile, typeName) {
-    let result = null;
-    visitTopLevelDeclarations(ts, sourceFile, (node) => {
-        if (isDeclaration(ts, node) && node.name) {
-            if (node.name.text === typeName) {
-                result = node;
-                return true /*stop*/;
-            }
-            return false /*continue*/;
-        }
-        // node is ts.VariableStatement
-        if (getNodeText(sourceFile, node).indexOf(typeName) >= 0) {
-            result = node;
-            return true /*stop*/;
-        }
-        return false /*continue*/;
-    });
-    return result;
-}
-function getNodeText(sourceFile, node) {
-    return sourceFile.getFullText().substring(node.pos, node.end);
-}
-function hasModifier(modifiers, kind) {
-    if (modifiers) {
-        for (let i = 0; i < modifiers.length; i++) {
-            let mod = modifiers[i];
-            if (mod.kind === kind) {
-                return true;
-            }
-        }
-    }
-    return false;
-}
-function isStatic(ts, member) {
-    return hasModifier(member.modifiers, ts.SyntaxKind.StaticKeyword);
-}
-function isDefaultExport(ts, declaration) {
-    return (hasModifier(declaration.modifiers, ts.SyntaxKind.DefaultKeyword)
-        && hasModifier(declaration.modifiers, ts.SyntaxKind.ExportKeyword));
-}
-function getMassagedTopLevelDeclarationText(ts, sourceFile, declaration, importName, usage, enums) {
-    let result = getNodeText(sourceFile, declaration);
-    if (declaration.kind === ts.SyntaxKind.InterfaceDeclaration || declaration.kind === ts.SyntaxKind.ClassDeclaration) {
-        let interfaceDeclaration = declaration;
-        const staticTypeName = (isDefaultExport(ts, interfaceDeclaration)
-            ? `${importName}.default`
-            : `${importName}.${declaration.name.text}`);
-        let instanceTypeName = staticTypeName;
-        const typeParametersCnt = (interfaceDeclaration.typeParameters ? interfaceDeclaration.typeParameters.length : 0);
-        if (typeParametersCnt > 0) {
-            let arr = [];
-            for (let i = 0; i < typeParametersCnt; i++) {
-                arr.push('any');
-            }
-            instanceTypeName = `${instanceTypeName}<${arr.join(',')}>`;
-        }
-        const members = interfaceDeclaration.members;
-        members.forEach((member) => {
-            try {
-                let memberText = getNodeText(sourceFile, member);
-                if (memberText.indexOf('@internal') >= 0 || memberText.indexOf('private') >= 0) {
-                    result = result.replace(memberText, '');
-                }
-                else {
-                    const memberName = member.name.text;
-                    const memberAccess = (memberName.indexOf('.') >= 0 ? `['${memberName}']` : `.${memberName}`);
-                    if (isStatic(ts, member)) {
-                        usage.push(`a = ${staticTypeName}${memberAccess};`);
-                    }
-                    else {
-                        usage.push(`a = (<${instanceTypeName}>b)${memberAccess};`);
-                    }
-                }
-            }
-            catch (err) {
-                // life..
-            }
-        });
-    }
-    else if (declaration.kind === ts.SyntaxKind.VariableStatement) {
-        const jsDoc = result.substr(0, declaration.getLeadingTriviaWidth(sourceFile));
-        if (jsDoc.indexOf('@monacodtsreplace') >= 0) {
-            const jsDocLines = jsDoc.split(/\r\n|\r|\n/);
-            let directives = [];
-            for (const jsDocLine of jsDocLines) {
-                const m = jsDocLine.match(/^\s*\* \/([^/]+)\/([^/]+)\/$/);
-                if (m) {
-                    directives.push([new RegExp(m[1], 'g'), m[2]]);
-                }
-            }
-            // remove the jsdoc
-            result = result.substr(jsDoc.length);
-            if (directives.length > 0) {
-                // apply replace directives
-                const replacer = createReplacerFromDirectives(directives);
-                result = replacer(result);
-            }
-        }
-    }
-    result = result.replace(/export default /g, 'export ');
-    result = result.replace(/export declare /g, 'export ');
-    result = result.replace(/declare /g, '');
-    let lines = result.split(/\r\n|\r|\n/);
-    for (let i = 0; i < lines.length; i++) {
-        if (/\s*\*/.test(lines[i])) {
-            // very likely a comment
-            continue;
-        }
-        lines[i] = lines[i].replace(/"/g, '\'');
-    }
-    result = lines.join('\n');
-    if (declaration.kind === ts.SyntaxKind.EnumDeclaration) {
-        result = result.replace(/const enum/, 'enum');
-        enums.push({
-            enumName: declaration.name.getText(sourceFile),
-            text: result
-        });
-    }
-    return result;
-}
-function format(ts, text, endl) {
-    const REALLY_FORMAT = false;
-    text = preformat(text, endl);
-    if (!REALLY_FORMAT) {
-        return text;
-    }
-    // Parse the source text
-    let sourceFile = ts.createSourceFile('file.ts', text, ts.ScriptTarget.Latest, /*setParentPointers*/ true);
-    // Get the formatting edits on the input sources
-    let edits = ts.formatting.formatDocument(sourceFile, getRuleProvider(tsfmt), tsfmt);
-    // Apply the edits on the input code
-    return applyEdits(text, edits);
-    function countParensCurly(text) {
-        let cnt = 0;
-        for (let i = 0; i < text.length; i++) {
-            if (text.charAt(i) === '(' || text.charAt(i) === '{') {
-                cnt++;
-            }
-            if (text.charAt(i) === ')' || text.charAt(i) === '}') {
-                cnt--;
-            }
-        }
-        return cnt;
-    }
-    function repeatStr(s, cnt) {
-        let r = '';
-        for (let i = 0; i < cnt; i++) {
-            r += s;
-        }
-        return r;
-    }
-    function preformat(text, endl) {
-        let lines = text.split(endl);
-        let inComment = false;
-        let inCommentDeltaIndent = 0;
-        let indent = 0;
-        for (let i = 0; i < lines.length; i++) {
-            let line = lines[i].replace(/\s$/, '');
-            let repeat = false;
-            let lineIndent = 0;
-            do {
-                repeat = false;
-                if (line.substring(0, 4) === '    ') {
-                    line = line.substring(4);
-                    lineIndent++;
-                    repeat = true;
-                }
-                if (line.charAt(0) === '\t') {
-                    line = line.substring(1);
-                    lineIndent++;
-                    repeat = true;
-                }
-            } while (repeat);
-            if (line.length === 0) {
-                continue;
-            }
-            if (inComment) {
-                if (/\*\//.test(line)) {
-                    inComment = false;
-                }
-                lines[i] = repeatStr('\t', lineIndent + inCommentDeltaIndent) + line;
-                continue;
-            }
-            if (/\/\*/.test(line)) {
-                inComment = true;
-                inCommentDeltaIndent = indent - lineIndent;
-                lines[i] = repeatStr('\t', indent) + line;
-                continue;
-            }
-            const cnt = countParensCurly(line);
-            let shouldUnindentAfter = false;
-            let shouldUnindentBefore = false;
-            if (cnt < 0) {
-                if (/[({]/.test(line)) {
-                    shouldUnindentAfter = true;
-                }
-                else {
-                    shouldUnindentBefore = true;
-                }
-            }
-            else if (cnt === 0) {
-                shouldUnindentBefore = /^\}/.test(line);
-            }
-            let shouldIndentAfter = false;
-            if (cnt > 0) {
-                shouldIndentAfter = true;
-            }
-            else if (cnt === 0) {
-                shouldIndentAfter = /{$/.test(line);
-            }
-            if (shouldUnindentBefore) {
-                indent--;
-            }
-            lines[i] = repeatStr('\t', indent) + line;
-            if (shouldUnindentAfter) {
-                indent--;
-            }
-            if (shouldIndentAfter) {
-                indent++;
-            }
-        }
-        return lines.join(endl);
-    }
-    function getRuleProvider(options) {
-        // Share this between multiple formatters using the same options.
-        // This represents the bulk of the space the formatter uses.
-        return ts.formatting.getFormatContext(options);
-    }
-    function applyEdits(text, edits) {
-        // Apply edits in reverse on the existing text
-        let result = text;
-        for (let i = edits.length - 1; i >= 0; i--) {
-            let change = edits[i];
-            let head = result.slice(0, change.span.start);
-            let tail = result.slice(change.span.start + change.span.length);
-            result = head + change.newText + tail;
-        }
-        return result;
-    }
-}
-function createReplacerFromDirectives(directives) {
-    return (str) => {
-        for (let i = 0; i < directives.length; i++) {
-            str = str.replace(directives[i][0], directives[i][1]);
-        }
-        return str;
-    };
-}
-function createReplacer(data) {
-    data = data || '';
-    let rawDirectives = data.split(';');
-    let directives = [];
-    rawDirectives.forEach((rawDirective) => {
-        if (rawDirective.length === 0) {
-            return;
-        }
-        let pieces = rawDirective.split('=>');
-        let findStr = pieces[0];
-        let replaceStr = pieces[1];
-        findStr = findStr.replace(/[\-\\\{\}\*\+\?\|\^\$\.\,\[\]\(\)\#\s]/g, '\\$&');
-        findStr = '\\b' + findStr + '\\b';
-        directives.push([new RegExp(findStr, 'g'), replaceStr]);
-    });
-    return createReplacerFromDirectives(directives);
-}
-function generateDeclarationFile(ts, recipe, sourceFileGetter) {
-    const endl = /\r\n/.test(recipe) ? '\r\n' : '\n';
-    let lines = recipe.split(endl);
-    let result = [];
-    let usageCounter = 0;
-    let usageImports = [];
-    let usage = [];
-    let failed = false;
-    usage.push(`var a: any;`);
-    usage.push(`var b: any;`);
-    const generateUsageImport = (moduleId) => {
-        let importName = 'm' + (++usageCounter);
-        usageImports.push(`import * as ${importName} from './${moduleId.replace(/\.d\.ts$/, '')}';`);
-        return importName;
-    };
-    let enums = [];
-    let version = null;
-    lines.forEach(line => {
-        if (failed) {
-            return;
-        }
-        let m0 = line.match(/^\/\/dtsv=(\d+)$/);
-        if (m0) {
-            version = m0[1];
-        }
-        let m1 = line.match(/^\s*#include\(([^;)]*)(;[^)]*)?\)\:(.*)$/);
-        if (m1) {
-            let moduleId = m1[1];
-            const sourceFile = sourceFileGetter(moduleId);
-            if (!sourceFile) {
-                logErr(`While handling ${line}`);
-                logErr(`Cannot find ${moduleId}`);
-                failed = true;
-                return;
-            }
-            const importName = generateUsageImport(moduleId);
-            let replacer = createReplacer(m1[2]);
-            let typeNames = m1[3].split(/,/);
-            typeNames.forEach((typeName) => {
-                typeName = typeName.trim();
-                if (typeName.length === 0) {
-                    return;
-                }
-                let declaration = getTopLevelDeclaration(ts, sourceFile, typeName);
-                if (!declaration) {
-                    logErr(`While handling ${line}`);
-                    logErr(`Cannot find ${typeName}`);
-                    failed = true;
-                    return;
-                }
-                result.push(replacer(getMassagedTopLevelDeclarationText(ts, sourceFile, declaration, importName, usage, enums)));
-            });
-            return;
-        }
-        let m2 = line.match(/^\s*#includeAll\(([^;)]*)(;[^)]*)?\)\:(.*)$/);
-        if (m2) {
-            let moduleId = m2[1];
-            const sourceFile = sourceFileGetter(moduleId);
-            if (!sourceFile) {
-                logErr(`While handling ${line}`);
-                logErr(`Cannot find ${moduleId}`);
-                failed = true;
-                return;
-            }
-            const importName = generateUsageImport(moduleId);
-            let replacer = createReplacer(m2[2]);
-            let typeNames = m2[3].split(/,/);
-            let typesToExcludeMap = {};
-            let typesToExcludeArr = [];
-            typeNames.forEach((typeName) => {
-                typeName = typeName.trim();
-                if (typeName.length === 0) {
-                    return;
-                }
-                typesToExcludeMap[typeName] = true;
-                typesToExcludeArr.push(typeName);
-            });
-            getAllTopLevelDeclarations(ts, sourceFile).forEach((declaration) => {
-                if (isDeclaration(ts, declaration) && declaration.name) {
-                    if (typesToExcludeMap[declaration.name.text]) {
-                        return;
-                    }
-                }
-                else {
-                    // node is ts.VariableStatement
-                    let nodeText = getNodeText(sourceFile, declaration);
-                    for (let i = 0; i < typesToExcludeArr.length; i++) {
-                        if (nodeText.indexOf(typesToExcludeArr[i]) >= 0) {
-                            return;
-                        }
-                    }
-                }
-                result.push(replacer(getMassagedTopLevelDeclarationText(ts, sourceFile, declaration, importName, usage, enums)));
-            });
-            return;
-        }
-        result.push(line);
-    });
-    if (failed) {
-        return null;
-    }
-    if (version !== dtsv) {
-        if (!version) {
-            logErr(`gulp watch restart required. 'monaco.d.ts.recipe' is written before versioning was introduced.`);
-        }
-        else {
-            logErr(`gulp watch restart required. 'monaco.d.ts.recipe' v${version} does not match runtime v${dtsv}.`);
-        }
-        return null;
-    }
-    let resultTxt = result.join(endl);
-    resultTxt = resultTxt.replace(/\bURI\b/g, 'Uri');
-    resultTxt = resultTxt.replace(/\bEvent</g, 'IEvent<');
-    resultTxt = resultTxt.split(/\r\n|\n|\r/).join(endl);
-    resultTxt = format(ts, resultTxt, endl);
-    resultTxt = resultTxt.split(/\r\n|\n|\r/).join(endl);
-    enums.sort((e1, e2) => {
-        if (e1.enumName < e2.enumName) {
-            return -1;
-        }
-        if (e1.enumName > e2.enumName) {
-            return 1;
-        }
-        return 0;
-    });
-    let resultEnums = [
-        '/*---------------------------------------------------------------------------------------------',
-        ' *  Copyright (c) Microsoft Corporation. All rights reserved.',
-        ' *  Licensed under the MIT License. See License.txt in the project root for license information.',
-        ' *--------------------------------------------------------------------------------------------*/',
-        '',
-        '// THIS IS A GENERATED FILE. DO NOT EDIT DIRECTLY.',
-        ''
-    ].concat(enums.map(e => e.text)).join(endl);
-    resultEnums = resultEnums.split(/\r\n|\n|\r/).join(endl);
-    resultEnums = format(ts, resultEnums, endl);
-    resultEnums = resultEnums.split(/\r\n|\n|\r/).join(endl);
-    return {
-        result: resultTxt,
-        usageContent: `${usageImports.join('\n')}\n\n${usage.join('\n')}`,
-        enums: resultEnums
-    };
-}
-function _run(ts, sourceFileGetter) {
-    const recipe = fs.readFileSync(exports.RECIPE_PATH).toString();
-    const t = generateDeclarationFile(ts, recipe, sourceFileGetter);
-    if (!t) {
-        return null;
-    }
-    const result = t.result;
-    const usageContent = t.usageContent;
-    const enums = t.enums;
-    const currentContent = fs.readFileSync(DECLARATION_PATH).toString();
-    const one = currentContent.replace(/\r\n/gm, '\n');
-    const other = result.replace(/\r\n/gm, '\n');
-    const isTheSame = (one === other);
-    return {
-        content: result,
-        usageContent: usageContent,
-        enums: enums,
-        filePath: DECLARATION_PATH,
-        isTheSame
-    };
-}
-class FSProvider {
-    existsSync(filePath) {
-        return fs.existsSync(filePath);
-    }
-    statSync(filePath) {
-        return fs.statSync(filePath);
-    }
-    readFileSync(_moduleId, filePath) {
-        return fs.readFileSync(filePath);
-    }
-}
-exports.FSProvider = FSProvider;
-class CacheEntry {
-    constructor(sourceFile, mtime) {
-        this.sourceFile = sourceFile;
-        this.mtime = mtime;
-    }
-}
-class DeclarationResolver {
-    constructor(_fsProvider) {
-        this._fsProvider = _fsProvider;
-        this.ts = require('typescript');
-        this._sourceFileCache = Object.create(null);
-    }
-    invalidateCache(moduleId) {
-        this._sourceFileCache[moduleId] = null;
-    }
-    getDeclarationSourceFile(moduleId) {
-        if (this._sourceFileCache[moduleId]) {
-            // Since we cannot trust file watching to invalidate the cache, check also the mtime
-            const fileName = this._getFileName(moduleId);
-            const mtime = this._fsProvider.statSync(fileName).mtime.getTime();
-            if (this._sourceFileCache[moduleId].mtime !== mtime) {
-                this._sourceFileCache[moduleId] = null;
-            }
-        }
-        if (!this._sourceFileCache[moduleId]) {
-            this._sourceFileCache[moduleId] = this._getDeclarationSourceFile(moduleId);
-        }
-        return this._sourceFileCache[moduleId] ? this._sourceFileCache[moduleId].sourceFile : null;
-    }
-    _getFileName(moduleId) {
-        if (/\.d\.ts$/.test(moduleId)) {
-            return path.join(SRC, moduleId);
-        }
-        return path.join(SRC, `${moduleId}.ts`);
-    }
-    _getDeclarationSourceFile(moduleId) {
-        const fileName = this._getFileName(moduleId);
-        if (!this._fsProvider.existsSync(fileName)) {
-            return null;
-        }
-        const mtime = this._fsProvider.statSync(fileName).mtime.getTime();
-        if (/\.d\.ts$/.test(moduleId)) {
-            // const mtime = this._fsProvider.statFileSync()
-            const fileContents = this._fsProvider.readFileSync(moduleId, fileName).toString();
-            return new CacheEntry(this.ts.createSourceFile(fileName, fileContents, this.ts.ScriptTarget.ES5), mtime);
-        }
-        const fileContents = this._fsProvider.readFileSync(moduleId, fileName).toString();
-        const fileMap = {
-            'file.ts': fileContents
-        };
-        const service = this.ts.createLanguageService(new TypeScriptLanguageServiceHost(this.ts, {}, fileMap, {}));
-        const text = service.getEmitOutput('file.ts', true, true).outputFiles[0].text;
-        return new CacheEntry(this.ts.createSourceFile(fileName, text, this.ts.ScriptTarget.ES5), mtime);
-    }
-}
-exports.DeclarationResolver = DeclarationResolver;
-function run3(resolver) {
-    const sourceFileGetter = (moduleId) => resolver.getDeclarationSourceFile(moduleId);
-    return _run(resolver.ts, sourceFileGetter);
-}
-exports.run3 = run3;
-class TypeScriptLanguageServiceHost {
-    constructor(ts, libs, files, compilerOptions) {
-        this._ts = ts;
-        this._libs = libs;
-        this._files = files;
-        this._compilerOptions = compilerOptions;
-    }
-    // --- language service host ---------------
-    getCompilationSettings() {
-        return this._compilerOptions;
-    }
-    getScriptFileNames() {
-        return ([]
-            .concat(Object.keys(this._libs))
-            .concat(Object.keys(this._files)));
-    }
-    getScriptVersion(_fileName) {
-        return '1';
-    }
-    getProjectVersion() {
-        return '1';
-    }
-    getScriptSnapshot(fileName) {
-        if (this._files.hasOwnProperty(fileName)) {
-            return this._ts.ScriptSnapshot.fromString(this._files[fileName]);
-        }
-        else if (this._libs.hasOwnProperty(fileName)) {
-            return this._ts.ScriptSnapshot.fromString(this._libs[fileName]);
-        }
-        else {
-            return this._ts.ScriptSnapshot.fromString('');
-        }
-    }
-    getScriptKind(_fileName) {
-        return this._ts.ScriptKind.TS;
-    }
-    getCurrentDirectory() {
-        return '';
-    }
-    getDefaultLibFileName(_options) {
-        return 'defaultLib:es5';
-    }
-    isDefaultLibFileName(fileName) {
-        return fileName === this.getDefaultLibFileName(this._compilerOptions);
-    }
-}
-function execute() {
-    let r = run3(new DeclarationResolver(new FSProvider()));
-    if (!r) {
-        throw new Error(`monaco.d.ts generation error - Cannot continue`);
-    }
-    return r;
-}
-exports.execute = execute;
diff --git a/lib/vscode/build/lib/monaco-api.ts b/lib/vscode/build/lib/monaco-api.ts
deleted file mode 100644
index e45422b537eb..000000000000
--- a/lib/vscode/build/lib/monaco-api.ts
+++ /dev/null
@@ -1,753 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-import * as fs from 'fs';
-import type * as ts from 'typescript';
-import * as path from 'path';
-import * as fancyLog from 'fancy-log';
-import * as ansiColors from 'ansi-colors';
-
-const dtsv = '3';
-
-const tsfmt = require('../../tsfmt.json');
-
-const SRC = path.join(__dirname, '../../src');
-export const RECIPE_PATH = path.join(__dirname, '../monaco/monaco.d.ts.recipe');
-const DECLARATION_PATH = path.join(__dirname, '../../src/vs/monaco.d.ts');
-
-function logErr(message: any, ...rest: any[]): void {
-	fancyLog(ansiColors.yellow(`[monaco.d.ts]`), message, ...rest);
-}
-
-type SourceFileGetter = (moduleId: string) => ts.SourceFile | null;
-
-type TSTopLevelDeclaration = ts.InterfaceDeclaration | ts.EnumDeclaration | ts.ClassDeclaration | ts.TypeAliasDeclaration | ts.FunctionDeclaration | ts.ModuleDeclaration;
-type TSTopLevelDeclare = TSTopLevelDeclaration | ts.VariableStatement;
-
-function isDeclaration(ts: typeof import('typescript'), a: TSTopLevelDeclare): a is TSTopLevelDeclaration {
-	return (
-		a.kind === ts.SyntaxKind.InterfaceDeclaration
-		|| a.kind === ts.SyntaxKind.EnumDeclaration
-		|| a.kind === ts.SyntaxKind.ClassDeclaration
-		|| a.kind === ts.SyntaxKind.TypeAliasDeclaration
-		|| a.kind === ts.SyntaxKind.FunctionDeclaration
-		|| a.kind === ts.SyntaxKind.ModuleDeclaration
-	);
-}
-
-function visitTopLevelDeclarations(ts: typeof import('typescript'), sourceFile: ts.SourceFile, visitor: (node: TSTopLevelDeclare) => boolean): void {
-	let stop = false;
-
-	let visit = (node: ts.Node): void => {
-		if (stop) {
-			return;
-		}
-
-		switch (node.kind) {
-			case ts.SyntaxKind.InterfaceDeclaration:
-			case ts.SyntaxKind.EnumDeclaration:
-			case ts.SyntaxKind.ClassDeclaration:
-			case ts.SyntaxKind.VariableStatement:
-			case ts.SyntaxKind.TypeAliasDeclaration:
-			case ts.SyntaxKind.FunctionDeclaration:
-			case ts.SyntaxKind.ModuleDeclaration:
-				stop = visitor(<TSTopLevelDeclare>node);
-		}
-
-		if (stop) {
-			return;
-		}
-		ts.forEachChild(node, visit);
-	};
-
-	visit(sourceFile);
-}
-
-
-function getAllTopLevelDeclarations(ts: typeof import('typescript'), sourceFile: ts.SourceFile): TSTopLevelDeclare[] {
-	let all: TSTopLevelDeclare[] = [];
-	visitTopLevelDeclarations(ts, sourceFile, (node) => {
-		if (node.kind === ts.SyntaxKind.InterfaceDeclaration || node.kind === ts.SyntaxKind.ClassDeclaration || node.kind === ts.SyntaxKind.ModuleDeclaration) {
-			let interfaceDeclaration = <ts.InterfaceDeclaration>node;
-			let triviaStart = interfaceDeclaration.pos;
-			let triviaEnd = interfaceDeclaration.name.pos;
-			let triviaText = getNodeText(sourceFile, { pos: triviaStart, end: triviaEnd });
-
-			if (triviaText.indexOf('@internal') === -1) {
-				all.push(node);
-			}
-		} else {
-			let nodeText = getNodeText(sourceFile, node);
-			if (nodeText.indexOf('@internal') === -1) {
-				all.push(node);
-			}
-		}
-		return false /*continue*/;
-	});
-	return all;
-}
-
-
-function getTopLevelDeclaration(ts: typeof import('typescript'), sourceFile: ts.SourceFile, typeName: string): TSTopLevelDeclare | null {
-	let result: TSTopLevelDeclare | null = null;
-	visitTopLevelDeclarations(ts, sourceFile, (node) => {
-		if (isDeclaration(ts, node) && node.name) {
-			if (node.name.text === typeName) {
-				result = node;
-				return true /*stop*/;
-			}
-			return false /*continue*/;
-		}
-		// node is ts.VariableStatement
-		if (getNodeText(sourceFile, node).indexOf(typeName) >= 0) {
-			result = node;
-			return true /*stop*/;
-		}
-		return false /*continue*/;
-	});
-	return result;
-}
-
-
-function getNodeText(sourceFile: ts.SourceFile, node: { pos: number; end: number; }): string {
-	return sourceFile.getFullText().substring(node.pos, node.end);
-}
-
-function hasModifier(modifiers: ts.NodeArray<ts.Modifier> | undefined, kind: ts.SyntaxKind): boolean {
-	if (modifiers) {
-		for (let i = 0; i < modifiers.length; i++) {
-			let mod = modifiers[i];
-			if (mod.kind === kind) {
-				return true;
-			}
-		}
-	}
-	return false;
-}
-
-function isStatic(ts: typeof import('typescript'), member: ts.ClassElement | ts.TypeElement): boolean {
-	return hasModifier(member.modifiers, ts.SyntaxKind.StaticKeyword);
-}
-
-function isDefaultExport(ts: typeof import('typescript'), declaration: ts.InterfaceDeclaration | ts.ClassDeclaration): boolean {
-	return (
-		hasModifier(declaration.modifiers, ts.SyntaxKind.DefaultKeyword)
-		&& hasModifier(declaration.modifiers, ts.SyntaxKind.ExportKeyword)
-	);
-}
-
-function getMassagedTopLevelDeclarationText(ts: typeof import('typescript'), sourceFile: ts.SourceFile, declaration: TSTopLevelDeclare, importName: string, usage: string[], enums: IEnumEntry[]): string {
-	let result = getNodeText(sourceFile, declaration);
-	if (declaration.kind === ts.SyntaxKind.InterfaceDeclaration || declaration.kind === ts.SyntaxKind.ClassDeclaration) {
-		let interfaceDeclaration = <ts.InterfaceDeclaration | ts.ClassDeclaration>declaration;
-
-		const staticTypeName = (
-			isDefaultExport(ts, interfaceDeclaration)
-				? `${importName}.default`
-				: `${importName}.${declaration.name!.text}`
-		);
-
-		let instanceTypeName = staticTypeName;
-		const typeParametersCnt = (interfaceDeclaration.typeParameters ? interfaceDeclaration.typeParameters.length : 0);
-		if (typeParametersCnt > 0) {
-			let arr: string[] = [];
-			for (let i = 0; i < typeParametersCnt; i++) {
-				arr.push('any');
-			}
-			instanceTypeName = `${instanceTypeName}<${arr.join(',')}>`;
-		}
-
-		const members: ts.NodeArray<ts.ClassElement | ts.TypeElement> = interfaceDeclaration.members;
-		members.forEach((member) => {
-			try {
-				let memberText = getNodeText(sourceFile, member);
-				if (memberText.indexOf('@internal') >= 0 || memberText.indexOf('private') >= 0) {
-					result = result.replace(memberText, '');
-				} else {
-					const memberName = (<ts.Identifier | ts.StringLiteral>member.name).text;
-					const memberAccess = (memberName.indexOf('.') >= 0 ? `['${memberName}']` : `.${memberName}`);
-					if (isStatic(ts, member)) {
-						usage.push(`a = ${staticTypeName}${memberAccess};`);
-					} else {
-						usage.push(`a = (<${instanceTypeName}>b)${memberAccess};`);
-					}
-				}
-			} catch (err) {
-				// life..
-			}
-		});
-	} else if (declaration.kind === ts.SyntaxKind.VariableStatement) {
-		const jsDoc = result.substr(0, declaration.getLeadingTriviaWidth(sourceFile));
-		if (jsDoc.indexOf('@monacodtsreplace') >= 0) {
-			const jsDocLines = jsDoc.split(/\r\n|\r|\n/);
-			let directives: [RegExp, string][] = [];
-			for (const jsDocLine of jsDocLines) {
-				const m = jsDocLine.match(/^\s*\* \/([^/]+)\/([^/]+)\/$/);
-				if (m) {
-					directives.push([new RegExp(m[1], 'g'), m[2]]);
-				}
-			}
-			// remove the jsdoc
-			result = result.substr(jsDoc.length);
-			if (directives.length > 0) {
-				// apply replace directives
-				const replacer = createReplacerFromDirectives(directives);
-				result = replacer(result);
-			}
-		}
-	}
-	result = result.replace(/export default /g, 'export ');
-	result = result.replace(/export declare /g, 'export ');
-	result = result.replace(/declare /g, '');
-	let lines = result.split(/\r\n|\r|\n/);
-	for (let i = 0; i < lines.length; i++) {
-		if (/\s*\*/.test(lines[i])) {
-			// very likely a comment
-			continue;
-		}
-		lines[i] = lines[i].replace(/"/g, '\'');
-	}
-	result = lines.join('\n');
-
-	if (declaration.kind === ts.SyntaxKind.EnumDeclaration) {
-		result = result.replace(/const enum/, 'enum');
-		enums.push({
-			enumName: declaration.name.getText(sourceFile),
-			text: result
-		});
-	}
-
-	return result;
-}
-
-function format(ts: typeof import('typescript'), text: string, endl: string): string {
-	const REALLY_FORMAT = false;
-
-	text = preformat(text, endl);
-	if (!REALLY_FORMAT) {
-		return text;
-	}
-
-	// Parse the source text
-	let sourceFile = ts.createSourceFile('file.ts', text, ts.ScriptTarget.Latest, /*setParentPointers*/ true);
-
-	// Get the formatting edits on the input sources
-	let edits = (<any>ts).formatting.formatDocument(sourceFile, getRuleProvider(tsfmt), tsfmt);
-
-	// Apply the edits on the input code
-	return applyEdits(text, edits);
-
-	function countParensCurly(text: string): number {
-		let cnt = 0;
-		for (let i = 0; i < text.length; i++) {
-			if (text.charAt(i) === '(' || text.charAt(i) === '{') {
-				cnt++;
-			}
-			if (text.charAt(i) === ')' || text.charAt(i) === '}') {
-				cnt--;
-			}
-		}
-		return cnt;
-	}
-
-	function repeatStr(s: string, cnt: number): string {
-		let r = '';
-		for (let i = 0; i < cnt; i++) {
-			r += s;
-		}
-		return r;
-	}
-
-	function preformat(text: string, endl: string): string {
-		let lines = text.split(endl);
-		let inComment = false;
-		let inCommentDeltaIndent = 0;
-		let indent = 0;
-		for (let i = 0; i < lines.length; i++) {
-			let line = lines[i].replace(/\s$/, '');
-			let repeat = false;
-			let lineIndent = 0;
-			do {
-				repeat = false;
-				if (line.substring(0, 4) === '    ') {
-					line = line.substring(4);
-					lineIndent++;
-					repeat = true;
-				}
-				if (line.charAt(0) === '\t') {
-					line = line.substring(1);
-					lineIndent++;
-					repeat = true;
-				}
-			} while (repeat);
-
-			if (line.length === 0) {
-				continue;
-			}
-
-			if (inComment) {
-				if (/\*\//.test(line)) {
-					inComment = false;
-				}
-				lines[i] = repeatStr('\t', lineIndent + inCommentDeltaIndent) + line;
-				continue;
-			}
-
-			if (/\/\*/.test(line)) {
-				inComment = true;
-				inCommentDeltaIndent = indent - lineIndent;
-				lines[i] = repeatStr('\t', indent) + line;
-				continue;
-			}
-
-			const cnt = countParensCurly(line);
-			let shouldUnindentAfter = false;
-			let shouldUnindentBefore = false;
-			if (cnt < 0) {
-				if (/[({]/.test(line)) {
-					shouldUnindentAfter = true;
-				} else {
-					shouldUnindentBefore = true;
-				}
-			} else if (cnt === 0) {
-				shouldUnindentBefore = /^\}/.test(line);
-			}
-			let shouldIndentAfter = false;
-			if (cnt > 0) {
-				shouldIndentAfter = true;
-			} else if (cnt === 0) {
-				shouldIndentAfter = /{$/.test(line);
-			}
-
-			if (shouldUnindentBefore) {
-				indent--;
-			}
-
-			lines[i] = repeatStr('\t', indent) + line;
-
-			if (shouldUnindentAfter) {
-				indent--;
-			}
-			if (shouldIndentAfter) {
-				indent++;
-			}
-		}
-		return lines.join(endl);
-	}
-
-	function getRuleProvider(options: ts.FormatCodeSettings) {
-		// Share this between multiple formatters using the same options.
-		// This represents the bulk of the space the formatter uses.
-		return (ts as any).formatting.getFormatContext(options);
-	}
-
-	function applyEdits(text: string, edits: ts.TextChange[]): string {
-		// Apply edits in reverse on the existing text
-		let result = text;
-		for (let i = edits.length - 1; i >= 0; i--) {
-			let change = edits[i];
-			let head = result.slice(0, change.span.start);
-			let tail = result.slice(change.span.start + change.span.length);
-			result = head + change.newText + tail;
-		}
-		return result;
-	}
-}
-
-function createReplacerFromDirectives(directives: [RegExp, string][]): (str: string) => string {
-	return (str: string) => {
-		for (let i = 0; i < directives.length; i++) {
-			str = str.replace(directives[i][0], directives[i][1]);
-		}
-		return str;
-	};
-}
-
-function createReplacer(data: string): (str: string) => string {
-	data = data || '';
-	let rawDirectives = data.split(';');
-	let directives: [RegExp, string][] = [];
-	rawDirectives.forEach((rawDirective) => {
-		if (rawDirective.length === 0) {
-			return;
-		}
-		let pieces = rawDirective.split('=>');
-		let findStr = pieces[0];
-		let replaceStr = pieces[1];
-
-		findStr = findStr.replace(/[\-\\\{\}\*\+\?\|\^\$\.\,\[\]\(\)\#\s]/g, '\\$&');
-		findStr = '\\b' + findStr + '\\b';
-		directives.push([new RegExp(findStr, 'g'), replaceStr]);
-	});
-
-	return createReplacerFromDirectives(directives);
-}
-
-interface ITempResult {
-	result: string;
-	usageContent: string;
-	enums: string;
-}
-
-interface IEnumEntry {
-	enumName: string;
-	text: string;
-}
-
-function generateDeclarationFile(ts: typeof import('typescript'), recipe: string, sourceFileGetter: SourceFileGetter): ITempResult | null {
-	const endl = /\r\n/.test(recipe) ? '\r\n' : '\n';
-
-	let lines = recipe.split(endl);
-	let result: string[] = [];
-
-	let usageCounter = 0;
-	let usageImports: string[] = [];
-	let usage: string[] = [];
-
-	let failed = false;
-
-	usage.push(`var a: any;`);
-	usage.push(`var b: any;`);
-
-	const generateUsageImport = (moduleId: string) => {
-		let importName = 'm' + (++usageCounter);
-		usageImports.push(`import * as ${importName} from './${moduleId.replace(/\.d\.ts$/, '')}';`);
-		return importName;
-	};
-
-	let enums: IEnumEntry[] = [];
-	let version: string | null = null;
-
-	lines.forEach(line => {
-
-		if (failed) {
-			return;
-		}
-
-		let m0 = line.match(/^\/\/dtsv=(\d+)$/);
-		if (m0) {
-			version = m0[1];
-		}
-
-		let m1 = line.match(/^\s*#include\(([^;)]*)(;[^)]*)?\)\:(.*)$/);
-		if (m1) {
-			let moduleId = m1[1];
-			const sourceFile = sourceFileGetter(moduleId);
-			if (!sourceFile) {
-				logErr(`While handling ${line}`);
-				logErr(`Cannot find ${moduleId}`);
-				failed = true;
-				return;
-			}
-
-			const importName = generateUsageImport(moduleId);
-
-			let replacer = createReplacer(m1[2]);
-
-			let typeNames = m1[3].split(/,/);
-			typeNames.forEach((typeName) => {
-				typeName = typeName.trim();
-				if (typeName.length === 0) {
-					return;
-				}
-				let declaration = getTopLevelDeclaration(ts, sourceFile, typeName);
-				if (!declaration) {
-					logErr(`While handling ${line}`);
-					logErr(`Cannot find ${typeName}`);
-					failed = true;
-					return;
-				}
-				result.push(replacer(getMassagedTopLevelDeclarationText(ts, sourceFile, declaration, importName, usage, enums)));
-			});
-			return;
-		}
-
-		let m2 = line.match(/^\s*#includeAll\(([^;)]*)(;[^)]*)?\)\:(.*)$/);
-		if (m2) {
-			let moduleId = m2[1];
-			const sourceFile = sourceFileGetter(moduleId);
-			if (!sourceFile) {
-				logErr(`While handling ${line}`);
-				logErr(`Cannot find ${moduleId}`);
-				failed = true;
-				return;
-			}
-
-			const importName = generateUsageImport(moduleId);
-
-			let replacer = createReplacer(m2[2]);
-
-			let typeNames = m2[3].split(/,/);
-			let typesToExcludeMap: { [typeName: string]: boolean; } = {};
-			let typesToExcludeArr: string[] = [];
-			typeNames.forEach((typeName) => {
-				typeName = typeName.trim();
-				if (typeName.length === 0) {
-					return;
-				}
-				typesToExcludeMap[typeName] = true;
-				typesToExcludeArr.push(typeName);
-			});
-
-			getAllTopLevelDeclarations(ts, sourceFile).forEach((declaration) => {
-				if (isDeclaration(ts, declaration) && declaration.name) {
-					if (typesToExcludeMap[declaration.name.text]) {
-						return;
-					}
-				} else {
-					// node is ts.VariableStatement
-					let nodeText = getNodeText(sourceFile, declaration);
-					for (let i = 0; i < typesToExcludeArr.length; i++) {
-						if (nodeText.indexOf(typesToExcludeArr[i]) >= 0) {
-							return;
-						}
-					}
-				}
-				result.push(replacer(getMassagedTopLevelDeclarationText(ts, sourceFile, declaration, importName, usage, enums)));
-			});
-			return;
-		}
-
-		result.push(line);
-	});
-
-	if (failed) {
-		return null;
-	}
-
-	if (version !== dtsv) {
-		if (!version) {
-			logErr(`gulp watch restart required. 'monaco.d.ts.recipe' is written before versioning was introduced.`);
-		} else {
-			logErr(`gulp watch restart required. 'monaco.d.ts.recipe' v${version} does not match runtime v${dtsv}.`);
-		}
-		return null;
-	}
-
-	let resultTxt = result.join(endl);
-	resultTxt = resultTxt.replace(/\bURI\b/g, 'Uri');
-	resultTxt = resultTxt.replace(/\bEvent</g, 'IEvent<');
-	resultTxt = resultTxt.split(/\r\n|\n|\r/).join(endl);
-	resultTxt = format(ts, resultTxt, endl);
-	resultTxt = resultTxt.split(/\r\n|\n|\r/).join(endl);
-
-	enums.sort((e1, e2) => {
-		if (e1.enumName < e2.enumName) {
-			return -1;
-		}
-		if (e1.enumName > e2.enumName) {
-			return 1;
-		}
-		return 0;
-	});
-
-	let resultEnums = [
-		'/*---------------------------------------------------------------------------------------------',
-		' *  Copyright (c) Microsoft Corporation. All rights reserved.',
-		' *  Licensed under the MIT License. See License.txt in the project root for license information.',
-		' *--------------------------------------------------------------------------------------------*/',
-		'',
-		'// THIS IS A GENERATED FILE. DO NOT EDIT DIRECTLY.',
-		''
-	].concat(enums.map(e => e.text)).join(endl);
-	resultEnums = resultEnums.split(/\r\n|\n|\r/).join(endl);
-	resultEnums = format(ts, resultEnums, endl);
-	resultEnums = resultEnums.split(/\r\n|\n|\r/).join(endl);
-
-	return {
-		result: resultTxt,
-		usageContent: `${usageImports.join('\n')}\n\n${usage.join('\n')}`,
-		enums: resultEnums
-	};
-}
-
-export interface IMonacoDeclarationResult {
-	content: string;
-	usageContent: string;
-	enums: string;
-	filePath: string;
-	isTheSame: boolean;
-}
-
-function _run(ts: typeof import('typescript'), sourceFileGetter: SourceFileGetter): IMonacoDeclarationResult | null {
-	const recipe = fs.readFileSync(RECIPE_PATH).toString();
-	const t = generateDeclarationFile(ts, recipe, sourceFileGetter);
-	if (!t) {
-		return null;
-	}
-
-	const result = t.result;
-	const usageContent = t.usageContent;
-	const enums = t.enums;
-
-	const currentContent = fs.readFileSync(DECLARATION_PATH).toString();
-	const one = currentContent.replace(/\r\n/gm, '\n');
-	const other = result.replace(/\r\n/gm, '\n');
-	const isTheSame = (one === other);
-
-	return {
-		content: result,
-		usageContent: usageContent,
-		enums: enums,
-		filePath: DECLARATION_PATH,
-		isTheSame
-	};
-}
-
-export class FSProvider {
-	public existsSync(filePath: string): boolean {
-		return fs.existsSync(filePath);
-	}
-	public statSync(filePath: string): fs.Stats {
-		return fs.statSync(filePath);
-	}
-	public readFileSync(_moduleId: string, filePath: string): Buffer {
-		return fs.readFileSync(filePath);
-	}
-}
-
-class CacheEntry {
-	constructor(
-		public readonly sourceFile: ts.SourceFile,
-		public readonly mtime: number
-	) {}
-}
-
-export class DeclarationResolver {
-
-	public readonly ts: typeof import('typescript');
-	private _sourceFileCache: { [moduleId: string]: CacheEntry | null; };
-
-	constructor(private readonly _fsProvider: FSProvider) {
-		this.ts = require('typescript') as typeof import('typescript');
-		this._sourceFileCache = Object.create(null);
-	}
-
-	public invalidateCache(moduleId: string): void {
-		this._sourceFileCache[moduleId] = null;
-	}
-
-	public getDeclarationSourceFile(moduleId: string): ts.SourceFile | null {
-		if (this._sourceFileCache[moduleId]) {
-			// Since we cannot trust file watching to invalidate the cache, check also the mtime
-			const fileName = this._getFileName(moduleId);
-			const mtime = this._fsProvider.statSync(fileName).mtime.getTime();
-			if (this._sourceFileCache[moduleId]!.mtime !== mtime) {
-				this._sourceFileCache[moduleId] = null;
-			}
-		}
-		if (!this._sourceFileCache[moduleId]) {
-			this._sourceFileCache[moduleId] = this._getDeclarationSourceFile(moduleId);
-		}
-		return this._sourceFileCache[moduleId] ? this._sourceFileCache[moduleId]!.sourceFile : null;
-	}
-
-	private _getFileName(moduleId: string): string {
-		if (/\.d\.ts$/.test(moduleId)) {
-			return path.join(SRC, moduleId);
-		}
-		return path.join(SRC, `${moduleId}.ts`);
-	}
-
-	private _getDeclarationSourceFile(moduleId: string): CacheEntry | null {
-		const fileName = this._getFileName(moduleId);
-		if (!this._fsProvider.existsSync(fileName)) {
-			return null;
-		}
-		const mtime = this._fsProvider.statSync(fileName).mtime.getTime();
-		if (/\.d\.ts$/.test(moduleId)) {
-			// const mtime = this._fsProvider.statFileSync()
-			const fileContents = this._fsProvider.readFileSync(moduleId, fileName).toString();
-			return new CacheEntry(
-				this.ts.createSourceFile(fileName, fileContents, this.ts.ScriptTarget.ES5),
-				mtime
-			);
-		}
-		const fileContents = this._fsProvider.readFileSync(moduleId, fileName).toString();
-		const fileMap: IFileMap = {
-			'file.ts': fileContents
-		};
-		const service = this.ts.createLanguageService(new TypeScriptLanguageServiceHost(this.ts, {}, fileMap, {}));
-		const text = service.getEmitOutput('file.ts', true, true).outputFiles[0].text;
-		return new CacheEntry(
-			this.ts.createSourceFile(fileName, text, this.ts.ScriptTarget.ES5),
-			mtime
-		);
-	}
-}
-
-export function run3(resolver: DeclarationResolver): IMonacoDeclarationResult | null {
-	const sourceFileGetter = (moduleId: string) => resolver.getDeclarationSourceFile(moduleId);
-	return _run(resolver.ts, sourceFileGetter);
-}
-
-
-
-
-interface ILibMap { [libName: string]: string; }
-interface IFileMap { [fileName: string]: string; }
-
-class TypeScriptLanguageServiceHost implements ts.LanguageServiceHost {
-
-	private readonly _ts: typeof import('typescript');
-	private readonly _libs: ILibMap;
-	private readonly _files: IFileMap;
-	private readonly _compilerOptions: ts.CompilerOptions;
-
-	constructor(ts: typeof import('typescript'), libs: ILibMap, files: IFileMap, compilerOptions: ts.CompilerOptions) {
-		this._ts = ts;
-		this._libs = libs;
-		this._files = files;
-		this._compilerOptions = compilerOptions;
-	}
-
-	// --- language service host ---------------
-
-	getCompilationSettings(): ts.CompilerOptions {
-		return this._compilerOptions;
-	}
-	getScriptFileNames(): string[] {
-		return (
-			([] as string[])
-				.concat(Object.keys(this._libs))
-				.concat(Object.keys(this._files))
-		);
-	}
-	getScriptVersion(_fileName: string): string {
-		return '1';
-	}
-	getProjectVersion(): string {
-		return '1';
-	}
-	getScriptSnapshot(fileName: string): ts.IScriptSnapshot {
-		if (this._files.hasOwnProperty(fileName)) {
-			return this._ts.ScriptSnapshot.fromString(this._files[fileName]);
-		} else if (this._libs.hasOwnProperty(fileName)) {
-			return this._ts.ScriptSnapshot.fromString(this._libs[fileName]);
-		} else {
-			return this._ts.ScriptSnapshot.fromString('');
-		}
-	}
-	getScriptKind(_fileName: string): ts.ScriptKind {
-		return this._ts.ScriptKind.TS;
-	}
-	getCurrentDirectory(): string {
-		return '';
-	}
-	getDefaultLibFileName(_options: ts.CompilerOptions): string {
-		return 'defaultLib:es5';
-	}
-	isDefaultLibFileName(fileName: string): boolean {
-		return fileName === this.getDefaultLibFileName(this._compilerOptions);
-	}
-}
-
-export function execute(): IMonacoDeclarationResult {
-	let r = run3(new DeclarationResolver(new FSProvider()));
-	if (!r) {
-		throw new Error(`monaco.d.ts generation error - Cannot continue`);
-	}
-	return r;
-}
diff --git a/lib/vscode/build/lib/nls.js b/lib/vscode/build/lib/nls.js
deleted file mode 100644
index 671a0afed438..000000000000
--- a/lib/vscode/build/lib/nls.js
+++ /dev/null
@@ -1,348 +0,0 @@
-"use strict";
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.nls = void 0;
-const lazy = require("lazy.js");
-const event_stream_1 = require("event-stream");
-const File = require("vinyl");
-const sm = require("source-map");
-const path = require("path");
-var CollectStepResult;
-(function (CollectStepResult) {
-    CollectStepResult[CollectStepResult["Yes"] = 0] = "Yes";
-    CollectStepResult[CollectStepResult["YesAndRecurse"] = 1] = "YesAndRecurse";
-    CollectStepResult[CollectStepResult["No"] = 2] = "No";
-    CollectStepResult[CollectStepResult["NoAndRecurse"] = 3] = "NoAndRecurse";
-})(CollectStepResult || (CollectStepResult = {}));
-function collect(ts, node, fn) {
-    const result = [];
-    function loop(node) {
-        const stepResult = fn(node);
-        if (stepResult === CollectStepResult.Yes || stepResult === CollectStepResult.YesAndRecurse) {
-            result.push(node);
-        }
-        if (stepResult === CollectStepResult.YesAndRecurse || stepResult === CollectStepResult.NoAndRecurse) {
-            ts.forEachChild(node, loop);
-        }
-    }
-    loop(node);
-    return result;
-}
-function clone(object) {
-    const result = {};
-    for (const id in object) {
-        result[id] = object[id];
-    }
-    return result;
-}
-function template(lines) {
-    let indent = '', wrap = '';
-    if (lines.length > 1) {
-        indent = '\t';
-        wrap = '\n';
-    }
-    return `/*---------------------------------------------------------
- * Copyright (C) Microsoft Corporation. All rights reserved.
- *--------------------------------------------------------*/
-define([], [${wrap + lines.map(l => indent + l).join(',\n') + wrap}]);`;
-}
-/**
- * Returns a stream containing the patched JavaScript and source maps.
- */
-function nls() {
-    const input = event_stream_1.through();
-    const output = input.pipe(event_stream_1.through(function (f) {
-        if (!f.sourceMap) {
-            return this.emit('error', new Error(`File ${f.relative} does not have sourcemaps.`));
-        }
-        let source = f.sourceMap.sources[0];
-        if (!source) {
-            return this.emit('error', new Error(`File ${f.relative} does not have a source in the source map.`));
-        }
-        const root = f.sourceMap.sourceRoot;
-        if (root) {
-            source = path.join(root, source);
-        }
-        const typescript = f.sourceMap.sourcesContent[0];
-        if (!typescript) {
-            return this.emit('error', new Error(`File ${f.relative} does not have the original content in the source map.`));
-        }
-        _nls.patchFiles(f, typescript).forEach(f => this.emit('data', f));
-    }));
-    return event_stream_1.duplex(input, output);
-}
-exports.nls = nls;
-function isImportNode(ts, node) {
-    return node.kind === ts.SyntaxKind.ImportDeclaration || node.kind === ts.SyntaxKind.ImportEqualsDeclaration;
-}
-var _nls;
-(function (_nls) {
-    function fileFrom(file, contents, path = file.path) {
-        return new File({
-            contents: Buffer.from(contents),
-            base: file.base,
-            cwd: file.cwd,
-            path: path
-        });
-    }
-    function mappedPositionFrom(source, lc) {
-        return { source, line: lc.line + 1, column: lc.character };
-    }
-    function lcFrom(position) {
-        return { line: position.line - 1, character: position.column };
-    }
-    class SingleFileServiceHost {
-        constructor(ts, options, filename, contents) {
-            this.options = options;
-            this.filename = filename;
-            this.getCompilationSettings = () => this.options;
-            this.getScriptFileNames = () => [this.filename];
-            this.getScriptVersion = () => '1';
-            this.getScriptSnapshot = (name) => name === this.filename ? this.file : this.lib;
-            this.getCurrentDirectory = () => '';
-            this.getDefaultLibFileName = () => 'lib.d.ts';
-            this.file = ts.ScriptSnapshot.fromString(contents);
-            this.lib = ts.ScriptSnapshot.fromString('');
-        }
-    }
-    function isCallExpressionWithinTextSpanCollectStep(ts, textSpan, node) {
-        if (!ts.textSpanContainsTextSpan({ start: node.pos, length: node.end - node.pos }, textSpan)) {
-            return CollectStepResult.No;
-        }
-        return node.kind === ts.SyntaxKind.CallExpression ? CollectStepResult.YesAndRecurse : CollectStepResult.NoAndRecurse;
-    }
-    function analyze(ts, contents, options = {}) {
-        const filename = 'file.ts';
-        const serviceHost = new SingleFileServiceHost(ts, Object.assign(clone(options), { noResolve: true }), filename, contents);
-        const service = ts.createLanguageService(serviceHost);
-        const sourceFile = ts.createSourceFile(filename, contents, ts.ScriptTarget.ES5, true);
-        // all imports
-        const imports = lazy(collect(ts, sourceFile, n => isImportNode(ts, n) ? CollectStepResult.YesAndRecurse : CollectStepResult.NoAndRecurse));
-        // import nls = require('vs/nls');
-        const importEqualsDeclarations = imports
-            .filter(n => n.kind === ts.SyntaxKind.ImportEqualsDeclaration)
-            .map(n => n)
-            .filter(d => d.moduleReference.kind === ts.SyntaxKind.ExternalModuleReference)
-            .filter(d => d.moduleReference.expression.getText() === '\'vs/nls\'');
-        // import ... from 'vs/nls';
-        const importDeclarations = imports
-            .filter(n => n.kind === ts.SyntaxKind.ImportDeclaration)
-            .map(n => n)
-            .filter(d => d.moduleSpecifier.kind === ts.SyntaxKind.StringLiteral)
-            .filter(d => d.moduleSpecifier.getText() === '\'vs/nls\'')
-            .filter(d => !!d.importClause && !!d.importClause.namedBindings);
-        const nlsExpressions = importEqualsDeclarations
-            .map(d => d.moduleReference.expression)
-            .concat(importDeclarations.map(d => d.moduleSpecifier))
-            .map(d => ({
-            start: ts.getLineAndCharacterOfPosition(sourceFile, d.getStart()),
-            end: ts.getLineAndCharacterOfPosition(sourceFile, d.getEnd())
-        }));
-        // `nls.localize(...)` calls
-        const nlsLocalizeCallExpressions = importDeclarations
-            .filter(d => !!(d.importClause && d.importClause.namedBindings && d.importClause.namedBindings.kind === ts.SyntaxKind.NamespaceImport))
-            .map(d => d.importClause.namedBindings.name)
-            .concat(importEqualsDeclarations.map(d => d.name))
-            // find read-only references to `nls`
-            .map(n => service.getReferencesAtPosition(filename, n.pos + 1))
-            .flatten()
-            .filter(r => !r.isWriteAccess)
-            // find the deepest call expressions AST nodes that contain those references
-            .map(r => collect(ts, sourceFile, n => isCallExpressionWithinTextSpanCollectStep(ts, r.textSpan, n)))
-            .map(a => lazy(a).last())
-            .filter(n => !!n)
-            .map(n => n)
-            // only `localize` calls
-            .filter(n => n.expression.kind === ts.SyntaxKind.PropertyAccessExpression && n.expression.name.getText() === 'localize');
-        // `localize` named imports
-        const allLocalizeImportDeclarations = importDeclarations
-            .filter(d => !!(d.importClause && d.importClause.namedBindings && d.importClause.namedBindings.kind === ts.SyntaxKind.NamedImports))
-            .map(d => [].concat(d.importClause.namedBindings.elements))
-            .flatten();
-        // `localize` read-only references
-        const localizeReferences = allLocalizeImportDeclarations
-            .filter(d => d.name.getText() === 'localize')
-            .map(n => service.getReferencesAtPosition(filename, n.pos + 1))
-            .flatten()
-            .filter(r => !r.isWriteAccess);
-        // custom named `localize` read-only references
-        const namedLocalizeReferences = allLocalizeImportDeclarations
-            .filter(d => d.propertyName && d.propertyName.getText() === 'localize')
-            .map(n => service.getReferencesAtPosition(filename, n.name.pos + 1))
-            .flatten()
-            .filter(r => !r.isWriteAccess);
-        // find the deepest call expressions AST nodes that contain those references
-        const localizeCallExpressions = localizeReferences
-            .concat(namedLocalizeReferences)
-            .map(r => collect(ts, sourceFile, n => isCallExpressionWithinTextSpanCollectStep(ts, r.textSpan, n)))
-            .map(a => lazy(a).last())
-            .filter(n => !!n)
-            .map(n => n);
-        // collect everything
-        const localizeCalls = nlsLocalizeCallExpressions
-            .concat(localizeCallExpressions)
-            .map(e => e.arguments)
-            .filter(a => a.length > 1)
-            .sort((a, b) => a[0].getStart() - b[0].getStart())
-            .map(a => ({
-            keySpan: { start: ts.getLineAndCharacterOfPosition(sourceFile, a[0].getStart()), end: ts.getLineAndCharacterOfPosition(sourceFile, a[0].getEnd()) },
-            key: a[0].getText(),
-            valueSpan: { start: ts.getLineAndCharacterOfPosition(sourceFile, a[1].getStart()), end: ts.getLineAndCharacterOfPosition(sourceFile, a[1].getEnd()) },
-            value: a[1].getText()
-        }));
-        return {
-            localizeCalls: localizeCalls.toArray(),
-            nlsExpressions: nlsExpressions.toArray()
-        };
-    }
-    class TextModel {
-        constructor(contents) {
-            const regex = /\r\n|\r|\n/g;
-            let index = 0;
-            let match;
-            this.lines = [];
-            this.lineEndings = [];
-            while (match = regex.exec(contents)) {
-                this.lines.push(contents.substring(index, match.index));
-                this.lineEndings.push(match[0]);
-                index = regex.lastIndex;
-            }
-            if (contents.length > 0) {
-                this.lines.push(contents.substring(index, contents.length));
-                this.lineEndings.push('');
-            }
-        }
-        get(index) {
-            return this.lines[index];
-        }
-        set(index, line) {
-            this.lines[index] = line;
-        }
-        get lineCount() {
-            return this.lines.length;
-        }
-        /**
-         * Applies patch(es) to the model.
-         * Multiple patches must be ordered.
-         * Does not support patches spanning multiple lines.
-         */
-        apply(patch) {
-            const startLineNumber = patch.span.start.line;
-            const endLineNumber = patch.span.end.line;
-            const startLine = this.lines[startLineNumber] || '';
-            const endLine = this.lines[endLineNumber] || '';
-            this.lines[startLineNumber] = [
-                startLine.substring(0, patch.span.start.character),
-                patch.content,
-                endLine.substring(patch.span.end.character)
-            ].join('');
-            for (let i = startLineNumber + 1; i <= endLineNumber; i++) {
-                this.lines[i] = '';
-            }
-        }
-        toString() {
-            return lazy(this.lines).zip(this.lineEndings)
-                .flatten().toArray().join('');
-        }
-    }
-    function patchJavascript(patches, contents, moduleId) {
-        const model = new TextModel(contents);
-        // patch the localize calls
-        lazy(patches).reverse().each(p => model.apply(p));
-        // patch the 'vs/nls' imports
-        const firstLine = model.get(0);
-        const patchedFirstLine = firstLine.replace(/(['"])vs\/nls\1/g, `$1vs/nls!${moduleId}$1`);
-        model.set(0, patchedFirstLine);
-        return model.toString();
-    }
-    function patchSourcemap(patches, rsm, smc) {
-        const smg = new sm.SourceMapGenerator({
-            file: rsm.file,
-            sourceRoot: rsm.sourceRoot
-        });
-        patches = patches.reverse();
-        let currentLine = -1;
-        let currentLineDiff = 0;
-        let source = null;
-        smc.eachMapping(m => {
-            const patch = patches[patches.length - 1];
-            const original = { line: m.originalLine, column: m.originalColumn };
-            const generated = { line: m.generatedLine, column: m.generatedColumn };
-            if (currentLine !== generated.line) {
-                currentLineDiff = 0;
-            }
-            currentLine = generated.line;
-            generated.column += currentLineDiff;
-            if (patch && m.generatedLine - 1 === patch.span.end.line && m.generatedColumn === patch.span.end.character) {
-                const originalLength = patch.span.end.character - patch.span.start.character;
-                const modifiedLength = patch.content.length;
-                const lengthDiff = modifiedLength - originalLength;
-                currentLineDiff += lengthDiff;
-                generated.column += lengthDiff;
-                patches.pop();
-            }
-            source = rsm.sourceRoot ? path.relative(rsm.sourceRoot, m.source) : m.source;
-            source = source.replace(/\\/g, '/');
-            smg.addMapping({ source, name: m.name, original, generated });
-        }, null, sm.SourceMapConsumer.GENERATED_ORDER);
-        if (source) {
-            smg.setSourceContent(source, smc.sourceContentFor(source));
-        }
-        return JSON.parse(smg.toString());
-    }
-    function patch(ts, moduleId, typescript, javascript, sourcemap) {
-        const { localizeCalls, nlsExpressions } = analyze(ts, typescript);
-        if (localizeCalls.length === 0) {
-            return { javascript, sourcemap };
-        }
-        const nlsKeys = template(localizeCalls.map(lc => lc.key));
-        const nls = template(localizeCalls.map(lc => lc.value));
-        const smc = new sm.SourceMapConsumer(sourcemap);
-        const positionFrom = mappedPositionFrom.bind(null, sourcemap.sources[0]);
-        let i = 0;
-        // build patches
-        const patches = lazy(localizeCalls)
-            .map(lc => ([
-            { range: lc.keySpan, content: '' + (i++) },
-            { range: lc.valueSpan, content: 'null' }
-        ]))
-            .flatten()
-            .map(c => {
-            const start = lcFrom(smc.generatedPositionFor(positionFrom(c.range.start)));
-            const end = lcFrom(smc.generatedPositionFor(positionFrom(c.range.end)));
-            return { span: { start, end }, content: c.content };
-        })
-            .toArray();
-        javascript = patchJavascript(patches, javascript, moduleId);
-        // since imports are not within the sourcemap information,
-        // we must do this MacGyver style
-        if (nlsExpressions.length) {
-            javascript = javascript.replace(/^define\(.*$/m, line => {
-                return line.replace(/(['"])vs\/nls\1/g, `$1vs/nls!${moduleId}$1`);
-            });
-        }
-        sourcemap = patchSourcemap(patches, sourcemap, smc);
-        return { javascript, sourcemap, nlsKeys, nls };
-    }
-    function patchFiles(javascriptFile, typescript) {
-        const ts = require('typescript');
-        // hack?
-        const moduleId = javascriptFile.relative
-            .replace(/\.js$/, '')
-            .replace(/\\/g, '/');
-        const { javascript, sourcemap, nlsKeys, nls } = patch(ts, moduleId, typescript, javascriptFile.contents.toString(), javascriptFile.sourceMap);
-        const result = [fileFrom(javascriptFile, javascript)];
-        result[0].sourceMap = sourcemap;
-        if (nlsKeys) {
-            result.push(fileFrom(javascriptFile, nlsKeys, javascriptFile.path.replace(/\.js$/, '.nls.keys.js')));
-        }
-        if (nls) {
-            result.push(fileFrom(javascriptFile, nls, javascriptFile.path.replace(/\.js$/, '.nls.js')));
-        }
-        return result;
-    }
-    _nls.patchFiles = patchFiles;
-})(_nls || (_nls = {}));
diff --git a/lib/vscode/build/lib/nls.ts b/lib/vscode/build/lib/nls.ts
deleted file mode 100644
index cd184ad98527..000000000000
--- a/lib/vscode/build/lib/nls.ts
+++ /dev/null
@@ -1,468 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-import type * as ts from 'typescript';
-import * as lazy from 'lazy.js';
-import { duplex, through } from 'event-stream';
-import * as File from 'vinyl';
-import * as sm from 'source-map';
-import * as  path from 'path';
-
-declare class FileSourceMap extends File {
-	public sourceMap: sm.RawSourceMap;
-}
-
-enum CollectStepResult {
-	Yes,
-	YesAndRecurse,
-	No,
-	NoAndRecurse
-}
-
-function collect(ts: typeof import('typescript'), node: ts.Node, fn: (node: ts.Node) => CollectStepResult): ts.Node[] {
-	const result: ts.Node[] = [];
-
-	function loop(node: ts.Node) {
-		const stepResult = fn(node);
-
-		if (stepResult === CollectStepResult.Yes || stepResult === CollectStepResult.YesAndRecurse) {
-			result.push(node);
-		}
-
-		if (stepResult === CollectStepResult.YesAndRecurse || stepResult === CollectStepResult.NoAndRecurse) {
-			ts.forEachChild(node, loop);
-		}
-	}
-
-	loop(node);
-	return result;
-}
-
-function clone<T>(object: T): T {
-	const result = <T>{};
-	for (const id in object) {
-		result[id] = object[id];
-	}
-	return result;
-}
-
-function template(lines: string[]): string {
-	let indent = '', wrap = '';
-
-	if (lines.length > 1) {
-		indent = '\t';
-		wrap = '\n';
-	}
-
-	return `/*---------------------------------------------------------
- * Copyright (C) Microsoft Corporation. All rights reserved.
- *--------------------------------------------------------*/
-define([], [${ wrap + lines.map(l => indent + l).join(',\n') + wrap}]);`;
-}
-
-/**
- * Returns a stream containing the patched JavaScript and source maps.
- */
-export function nls(): NodeJS.ReadWriteStream {
-	const input = through();
-	const output = input.pipe(through(function (f: FileSourceMap) {
-		if (!f.sourceMap) {
-			return this.emit('error', new Error(`File ${f.relative} does not have sourcemaps.`));
-		}
-
-		let source = f.sourceMap.sources[0];
-		if (!source) {
-			return this.emit('error', new Error(`File ${f.relative} does not have a source in the source map.`));
-		}
-
-		const root = f.sourceMap.sourceRoot;
-		if (root) {
-			source = path.join(root, source);
-		}
-
-		const typescript = f.sourceMap.sourcesContent![0];
-		if (!typescript) {
-			return this.emit('error', new Error(`File ${f.relative} does not have the original content in the source map.`));
-		}
-
-		_nls.patchFiles(f, typescript).forEach(f => this.emit('data', f));
-	}));
-
-	return duplex(input, output);
-}
-
-function isImportNode(ts: typeof import('typescript'), node: ts.Node): boolean {
-	return node.kind === ts.SyntaxKind.ImportDeclaration || node.kind === ts.SyntaxKind.ImportEqualsDeclaration;
-}
-
-module _nls {
-
-	interface INlsStringResult {
-		javascript: string;
-		sourcemap: sm.RawSourceMap;
-		nls?: string;
-		nlsKeys?: string;
-	}
-
-	interface ISpan {
-		start: ts.LineAndCharacter;
-		end: ts.LineAndCharacter;
-	}
-
-	interface ILocalizeCall {
-		keySpan: ISpan;
-		key: string;
-		valueSpan: ISpan;
-		value: string;
-	}
-
-	interface ILocalizeAnalysisResult {
-		localizeCalls: ILocalizeCall[];
-		nlsExpressions: ISpan[];
-	}
-
-	interface IPatch {
-		span: ISpan;
-		content: string;
-	}
-
-	function fileFrom(file: File, contents: string, path: string = file.path) {
-		return new File({
-			contents: Buffer.from(contents),
-			base: file.base,
-			cwd: file.cwd,
-			path: path
-		});
-	}
-
-	function mappedPositionFrom(source: string, lc: ts.LineAndCharacter): sm.MappedPosition {
-		return { source, line: lc.line + 1, column: lc.character };
-	}
-
-	function lcFrom(position: sm.Position): ts.LineAndCharacter {
-		return { line: position.line - 1, character: position.column };
-	}
-
-	class SingleFileServiceHost implements ts.LanguageServiceHost {
-
-		private file: ts.IScriptSnapshot;
-		private lib: ts.IScriptSnapshot;
-
-		constructor(ts: typeof import('typescript'), private options: ts.CompilerOptions, private filename: string, contents: string) {
-			this.file = ts.ScriptSnapshot.fromString(contents);
-			this.lib = ts.ScriptSnapshot.fromString('');
-		}
-
-		getCompilationSettings = () => this.options;
-		getScriptFileNames = () => [this.filename];
-		getScriptVersion = () => '1';
-		getScriptSnapshot = (name: string) => name === this.filename ? this.file : this.lib;
-		getCurrentDirectory = () => '';
-		getDefaultLibFileName = () => 'lib.d.ts';
-	}
-
-	function isCallExpressionWithinTextSpanCollectStep(ts: typeof import('typescript'), textSpan: ts.TextSpan, node: ts.Node): CollectStepResult {
-		if (!ts.textSpanContainsTextSpan({ start: node.pos, length: node.end - node.pos }, textSpan)) {
-			return CollectStepResult.No;
-		}
-
-		return node.kind === ts.SyntaxKind.CallExpression ? CollectStepResult.YesAndRecurse : CollectStepResult.NoAndRecurse;
-	}
-
-	function analyze(ts: typeof import('typescript'), contents: string, options: ts.CompilerOptions = {}): ILocalizeAnalysisResult {
-		const filename = 'file.ts';
-		const serviceHost = new SingleFileServiceHost(ts, Object.assign(clone(options), { noResolve: true }), filename, contents);
-		const service = ts.createLanguageService(serviceHost);
-		const sourceFile = ts.createSourceFile(filename, contents, ts.ScriptTarget.ES5, true);
-
-		// all imports
-		const imports = lazy(collect(ts, sourceFile, n => isImportNode(ts, n) ? CollectStepResult.YesAndRecurse : CollectStepResult.NoAndRecurse));
-
-		// import nls = require('vs/nls');
-		const importEqualsDeclarations = imports
-			.filter(n => n.kind === ts.SyntaxKind.ImportEqualsDeclaration)
-			.map(n => <ts.ImportEqualsDeclaration>n)
-			.filter(d => d.moduleReference.kind === ts.SyntaxKind.ExternalModuleReference)
-			.filter(d => (<ts.ExternalModuleReference>d.moduleReference).expression.getText() === '\'vs/nls\'');
-
-		// import ... from 'vs/nls';
-		const importDeclarations = imports
-			.filter(n => n.kind === ts.SyntaxKind.ImportDeclaration)
-			.map(n => <ts.ImportDeclaration>n)
-			.filter(d => d.moduleSpecifier.kind === ts.SyntaxKind.StringLiteral)
-			.filter(d => d.moduleSpecifier.getText() === '\'vs/nls\'')
-			.filter(d => !!d.importClause && !!d.importClause.namedBindings);
-
-		const nlsExpressions = importEqualsDeclarations
-			.map(d => (<ts.ExternalModuleReference>d.moduleReference).expression)
-			.concat(importDeclarations.map(d => d.moduleSpecifier))
-			.map<ISpan>(d => ({
-				start: ts.getLineAndCharacterOfPosition(sourceFile, d.getStart()),
-				end: ts.getLineAndCharacterOfPosition(sourceFile, d.getEnd())
-			}));
-
-		// `nls.localize(...)` calls
-		const nlsLocalizeCallExpressions = importDeclarations
-			.filter(d => !!(d.importClause && d.importClause.namedBindings && d.importClause.namedBindings.kind === ts.SyntaxKind.NamespaceImport))
-			.map(d => (<ts.NamespaceImport>d.importClause!.namedBindings).name)
-			.concat(importEqualsDeclarations.map(d => d.name))
-
-			// find read-only references to `nls`
-			.map(n => service.getReferencesAtPosition(filename, n.pos + 1))
-			.flatten()
-			.filter(r => !r.isWriteAccess)
-
-			// find the deepest call expressions AST nodes that contain those references
-			.map(r => collect(ts, sourceFile, n => isCallExpressionWithinTextSpanCollectStep(ts, r.textSpan, n)))
-			.map(a => lazy(a).last())
-			.filter(n => !!n)
-			.map(n => <ts.CallExpression>n)
-
-			// only `localize` calls
-			.filter(n => n.expression.kind === ts.SyntaxKind.PropertyAccessExpression && (<ts.PropertyAccessExpression>n.expression).name.getText() === 'localize');
-
-		// `localize` named imports
-		const allLocalizeImportDeclarations = importDeclarations
-			.filter(d => !!(d.importClause && d.importClause.namedBindings && d.importClause.namedBindings.kind === ts.SyntaxKind.NamedImports))
-			.map(d => ([] as any[]).concat((<ts.NamedImports>d.importClause!.namedBindings!).elements))
-			.flatten();
-
-		// `localize` read-only references
-		const localizeReferences = allLocalizeImportDeclarations
-			.filter(d => d.name.getText() === 'localize')
-			.map(n => service.getReferencesAtPosition(filename, n.pos + 1))
-			.flatten()
-			.filter(r => !r.isWriteAccess);
-
-		// custom named `localize` read-only references
-		const namedLocalizeReferences = allLocalizeImportDeclarations
-			.filter(d => d.propertyName && d.propertyName.getText() === 'localize')
-			.map(n => service.getReferencesAtPosition(filename, n.name.pos + 1))
-			.flatten()
-			.filter(r => !r.isWriteAccess);
-
-		// find the deepest call expressions AST nodes that contain those references
-		const localizeCallExpressions = localizeReferences
-			.concat(namedLocalizeReferences)
-			.map(r => collect(ts, sourceFile, n => isCallExpressionWithinTextSpanCollectStep(ts, r.textSpan, n)))
-			.map(a => lazy(a).last())
-			.filter(n => !!n)
-			.map(n => <ts.CallExpression>n);
-
-		// collect everything
-		const localizeCalls = nlsLocalizeCallExpressions
-			.concat(localizeCallExpressions)
-			.map(e => e.arguments)
-			.filter(a => a.length > 1)
-			.sort((a, b) => a[0].getStart() - b[0].getStart())
-			.map<ILocalizeCall>(a => ({
-				keySpan: { start: ts.getLineAndCharacterOfPosition(sourceFile, a[0].getStart()), end: ts.getLineAndCharacterOfPosition(sourceFile, a[0].getEnd()) },
-				key: a[0].getText(),
-				valueSpan: { start: ts.getLineAndCharacterOfPosition(sourceFile, a[1].getStart()), end: ts.getLineAndCharacterOfPosition(sourceFile, a[1].getEnd()) },
-				value: a[1].getText()
-			}));
-
-		return {
-			localizeCalls: localizeCalls.toArray(),
-			nlsExpressions: nlsExpressions.toArray()
-		};
-	}
-
-	class TextModel {
-
-		private lines: string[];
-		private lineEndings: string[];
-
-		constructor(contents: string) {
-			const regex = /\r\n|\r|\n/g;
-			let index = 0;
-			let match: RegExpExecArray | null;
-
-			this.lines = [];
-			this.lineEndings = [];
-
-			while (match = regex.exec(contents)) {
-				this.lines.push(contents.substring(index, match.index));
-				this.lineEndings.push(match[0]);
-				index = regex.lastIndex;
-			}
-
-			if (contents.length > 0) {
-				this.lines.push(contents.substring(index, contents.length));
-				this.lineEndings.push('');
-			}
-		}
-
-		public get(index: number): string {
-			return this.lines[index];
-		}
-
-		public set(index: number, line: string): void {
-			this.lines[index] = line;
-		}
-
-		public get lineCount(): number {
-			return this.lines.length;
-		}
-
-		/**
-		 * Applies patch(es) to the model.
-		 * Multiple patches must be ordered.
-		 * Does not support patches spanning multiple lines.
-		 */
-		public apply(patch: IPatch): void {
-			const startLineNumber = patch.span.start.line;
-			const endLineNumber = patch.span.end.line;
-
-			const startLine = this.lines[startLineNumber] || '';
-			const endLine = this.lines[endLineNumber] || '';
-
-			this.lines[startLineNumber] = [
-				startLine.substring(0, patch.span.start.character),
-				patch.content,
-				endLine.substring(patch.span.end.character)
-			].join('');
-
-			for (let i = startLineNumber + 1; i <= endLineNumber; i++) {
-				this.lines[i] = '';
-			}
-		}
-
-		public toString(): string {
-			return lazy(this.lines).zip(this.lineEndings)
-				.flatten().toArray().join('');
-		}
-	}
-
-	function patchJavascript(patches: IPatch[], contents: string, moduleId: string): string {
-		const model = new TextModel(contents);
-
-		// patch the localize calls
-		lazy(patches).reverse().each(p => model.apply(p));
-
-		// patch the 'vs/nls' imports
-		const firstLine = model.get(0);
-		const patchedFirstLine = firstLine.replace(/(['"])vs\/nls\1/g, `$1vs/nls!${moduleId}$1`);
-		model.set(0, patchedFirstLine);
-
-		return model.toString();
-	}
-
-	function patchSourcemap(patches: IPatch[], rsm: sm.RawSourceMap, smc: sm.SourceMapConsumer): sm.RawSourceMap {
-		const smg = new sm.SourceMapGenerator({
-			file: rsm.file,
-			sourceRoot: rsm.sourceRoot
-		});
-
-		patches = patches.reverse();
-		let currentLine = -1;
-		let currentLineDiff = 0;
-		let source: string | null = null;
-
-		smc.eachMapping(m => {
-			const patch = patches[patches.length - 1];
-			const original = { line: m.originalLine, column: m.originalColumn };
-			const generated = { line: m.generatedLine, column: m.generatedColumn };
-
-			if (currentLine !== generated.line) {
-				currentLineDiff = 0;
-			}
-
-			currentLine = generated.line;
-			generated.column += currentLineDiff;
-
-			if (patch && m.generatedLine - 1 === patch.span.end.line && m.generatedColumn === patch.span.end.character) {
-				const originalLength = patch.span.end.character - patch.span.start.character;
-				const modifiedLength = patch.content.length;
-				const lengthDiff = modifiedLength - originalLength;
-				currentLineDiff += lengthDiff;
-				generated.column += lengthDiff;
-
-				patches.pop();
-			}
-
-			source = rsm.sourceRoot ? path.relative(rsm.sourceRoot, m.source) : m.source;
-			source = source.replace(/\\/g, '/');
-			smg.addMapping({ source, name: m.name, original, generated });
-		}, null, sm.SourceMapConsumer.GENERATED_ORDER);
-
-		if (source) {
-			smg.setSourceContent(source, smc.sourceContentFor(source));
-		}
-
-		return JSON.parse(smg.toString());
-	}
-
-	function patch(ts: typeof import('typescript'), moduleId: string, typescript: string, javascript: string, sourcemap: sm.RawSourceMap): INlsStringResult {
-		const { localizeCalls, nlsExpressions } = analyze(ts, typescript);
-
-		if (localizeCalls.length === 0) {
-			return { javascript, sourcemap };
-		}
-
-		const nlsKeys = template(localizeCalls.map(lc => lc.key));
-		const nls = template(localizeCalls.map(lc => lc.value));
-		const smc = new sm.SourceMapConsumer(sourcemap);
-		const positionFrom = mappedPositionFrom.bind(null, sourcemap.sources[0]);
-		let i = 0;
-
-		// build patches
-		const patches = lazy(localizeCalls)
-			.map(lc => ([
-				{ range: lc.keySpan, content: '' + (i++) },
-				{ range: lc.valueSpan, content: 'null' }
-			]))
-			.flatten()
-			.map<IPatch>(c => {
-				const start = lcFrom(smc.generatedPositionFor(positionFrom(c.range.start)));
-				const end = lcFrom(smc.generatedPositionFor(positionFrom(c.range.end)));
-				return { span: { start, end }, content: c.content };
-			})
-			.toArray();
-
-		javascript = patchJavascript(patches, javascript, moduleId);
-
-		// since imports are not within the sourcemap information,
-		// we must do this MacGyver style
-		if (nlsExpressions.length) {
-			javascript = javascript.replace(/^define\(.*$/m, line => {
-				return line.replace(/(['"])vs\/nls\1/g, `$1vs/nls!${moduleId}$1`);
-			});
-		}
-
-		sourcemap = patchSourcemap(patches, sourcemap, smc);
-
-		return { javascript, sourcemap, nlsKeys, nls };
-	}
-
-	export function patchFiles(javascriptFile: File, typescript: string): File[] {
-		const ts = require('typescript') as typeof import('typescript');
-		// hack?
-		const moduleId = javascriptFile.relative
-			.replace(/\.js$/, '')
-			.replace(/\\/g, '/');
-
-		const { javascript, sourcemap, nlsKeys, nls } = patch(
-			ts,
-			moduleId,
-			typescript,
-			javascriptFile.contents.toString(),
-			(<any>javascriptFile).sourceMap
-		);
-
-		const result: File[] = [fileFrom(javascriptFile, javascript)];
-		(<any>result[0]).sourceMap = sourcemap;
-
-		if (nlsKeys) {
-			result.push(fileFrom(javascriptFile, nlsKeys, javascriptFile.path.replace(/\.js$/, '.nls.keys.js')));
-		}
-
-		if (nls) {
-			result.push(fileFrom(javascriptFile, nls, javascriptFile.path.replace(/\.js$/, '.nls.js')));
-		}
-
-		return result;
-	}
-}
diff --git a/lib/vscode/build/lib/node.js b/lib/vscode/build/lib/node.js
deleted file mode 100644
index 6e735f2cdb29..000000000000
--- a/lib/vscode/build/lib/node.js
+++ /dev/null
@@ -1,17 +0,0 @@
-"use strict";
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-Object.defineProperty(exports, "__esModule", { value: true });
-const path = require("path");
-const fs = require("fs");
-const root = path.dirname(path.dirname(__dirname));
-const yarnrcPath = path.join(root, 'remote', '.yarnrc');
-// NOTE@coder: Fix version due to .yarnrc removal.
-const version = process.versions.node;
-const platform = process.platform;
-const arch = platform === 'darwin' ? 'x64' : process.arch;
-const node = platform === 'win32' ? 'node.exe' : 'node';
-const nodePath = path.join(root, '.build', 'node', `v${version}`, `${platform}-${arch}`, node);
-console.log(nodePath);
diff --git a/lib/vscode/build/lib/node.ts b/lib/vscode/build/lib/node.ts
deleted file mode 100644
index 96fa624ad30a..000000000000
--- a/lib/vscode/build/lib/node.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-import * as path from 'path';
-
-const root = path.dirname(path.dirname(__dirname));
-
-// NOTE@coder: Fix version due to .yarnrc removal.
-const version = process.versions.node;
-const platform = process.platform;
-const arch = platform === 'darwin' ? 'x64' : process.arch;
-
-const node = platform === 'win32' ? 'node.exe' : 'node';
-const nodePath = path.join(root, '.build', 'node', `v${version}`, `${platform}-${arch}`, node);
-
-console.log(nodePath);
diff --git a/lib/vscode/build/lib/optimize.js b/lib/vscode/build/lib/optimize.js
deleted file mode 100644
index 762a1ac2b4f1..000000000000
--- a/lib/vscode/build/lib/optimize.js
+++ /dev/null
@@ -1,202 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-'use strict';
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.minifyTask = exports.optimizeTask = exports.loaderConfig = void 0;
-const es = require("event-stream");
-const gulp = require("gulp");
-const concat = require("gulp-concat");
-const filter = require("gulp-filter");
-const fancyLog = require("fancy-log");
-const ansiColors = require("ansi-colors");
-const path = require("path");
-const pump = require("pump");
-const VinylFile = require("vinyl");
-const bundle = require("./bundle");
-const i18n_1 = require("./i18n");
-const stats_1 = require("./stats");
-const util = require("./util");
-const REPO_ROOT_PATH = path.join(__dirname, '../..');
-function log(prefix, message) {
-    fancyLog(ansiColors.cyan('[' + prefix + ']'), message);
-}
-function loaderConfig() {
-    const result = {
-        paths: {
-            'vs': 'out-build/vs',
-            'vscode': 'empty:'
-        },
-        amdModulesPattern: /^vs\//
-    };
-    result['vs/css'] = { inlineResources: true };
-    return result;
-}
-exports.loaderConfig = loaderConfig;
-const IS_OUR_COPYRIGHT_REGEXP = /Copyright \(C\) Microsoft Corporation/i;
-function loader(src, bundledFileHeader, bundleLoader) {
-    let sources = [
-        `${src}/vs/loader.js`
-    ];
-    if (bundleLoader) {
-        sources = sources.concat([
-            `${src}/vs/css.js`,
-            `${src}/vs/nls.js`
-        ]);
-    }
-    let isFirst = true;
-    return (gulp
-        .src(sources, { base: `${src}` })
-        .pipe(es.through(function (data) {
-        if (isFirst) {
-            isFirst = false;
-            this.emit('data', new VinylFile({
-                path: 'fake',
-                base: '.',
-                contents: Buffer.from(bundledFileHeader)
-            }));
-            this.emit('data', data);
-        }
-        else {
-            this.emit('data', data);
-        }
-    }))
-        .pipe(concat('vs/loader.js')));
-}
-function toConcatStream(src, bundledFileHeader, sources, dest, fileContentMapper) {
-    const useSourcemaps = /\.js$/.test(dest) && !/\.nls\.js$/.test(dest);
-    // If a bundle ends up including in any of the sources our copyright, then
-    // insert a fake source at the beginning of each bundle with our copyright
-    let containsOurCopyright = false;
-    for (let i = 0, len = sources.length; i < len; i++) {
-        const fileContents = sources[i].contents;
-        if (IS_OUR_COPYRIGHT_REGEXP.test(fileContents)) {
-            containsOurCopyright = true;
-            break;
-        }
-    }
-    if (containsOurCopyright) {
-        sources.unshift({
-            path: null,
-            contents: bundledFileHeader
-        });
-    }
-    const treatedSources = sources.map(function (source) {
-        const root = source.path ? REPO_ROOT_PATH.replace(/\\/g, '/') : '';
-        const base = source.path ? root + `/${src}` : '.';
-        const path = source.path ? root + '/' + source.path.replace(/\\/g, '/') : 'fake';
-        const contents = source.path ? fileContentMapper(source.contents, path) : source.contents;
-        return new VinylFile({
-            path: path,
-            base: base,
-            contents: Buffer.from(contents)
-        });
-    });
-    return es.readArray(treatedSources)
-        .pipe(useSourcemaps ? util.loadSourcemaps() : es.through())
-        .pipe(concat(dest))
-        .pipe(stats_1.createStatsStream(dest));
-}
-function toBundleStream(src, bundledFileHeader, bundles, fileContentMapper) {
-    return es.merge(bundles.map(function (bundle) {
-        return toConcatStream(src, bundledFileHeader, bundle.sources, bundle.dest, fileContentMapper);
-    }));
-}
-const DEFAULT_FILE_HEADER = [
-    '/*!--------------------------------------------------------',
-    ' * Copyright (C) Microsoft Corporation. All rights reserved.',
-    ' *--------------------------------------------------------*/'
-].join('\n');
-function optimizeTask(opts) {
-    const src = opts.src;
-    const entryPoints = opts.entryPoints;
-    const resources = opts.resources;
-    const loaderConfig = opts.loaderConfig;
-    const bundledFileHeader = opts.header || DEFAULT_FILE_HEADER;
-    const bundleLoader = (typeof opts.bundleLoader === 'undefined' ? true : opts.bundleLoader);
-    const out = opts.out;
-    const fileContentMapper = opts.fileContentMapper || ((contents, _path) => contents);
-    return function () {
-        const sourcemaps = require('gulp-sourcemaps');
-        const bundlesStream = es.through(); // this stream will contain the bundled files
-        const resourcesStream = es.through(); // this stream will contain the resources
-        const bundleInfoStream = es.through(); // this stream will contain bundleInfo.json
-        bundle.bundle(entryPoints, loaderConfig, function (err, result) {
-            if (err || !result) {
-                return bundlesStream.emit('error', JSON.stringify(err));
-            }
-            toBundleStream(src, bundledFileHeader, result.files, fileContentMapper).pipe(bundlesStream);
-            // Remove css inlined resources
-            const filteredResources = resources.slice();
-            result.cssInlinedResources.forEach(function (resource) {
-                if (process.env['VSCODE_BUILD_VERBOSE']) {
-                    log('optimizer', 'excluding inlined: ' + resource);
-                }
-                filteredResources.push('!' + resource);
-            });
-            gulp.src(filteredResources, { base: `${src}`, allowEmpty: true }).pipe(resourcesStream);
-            const bundleInfoArray = [];
-            if (opts.bundleInfo) {
-                bundleInfoArray.push(new VinylFile({
-                    path: 'bundleInfo.json',
-                    base: '.',
-                    contents: Buffer.from(JSON.stringify(result.bundleData, null, '\t'))
-                }));
-            }
-            es.readArray(bundleInfoArray).pipe(bundleInfoStream);
-        });
-        const result = es.merge(loader(src, bundledFileHeader, bundleLoader), bundlesStream, resourcesStream, bundleInfoStream);
-        return result
-            .pipe(sourcemaps.write('./', {
-            sourceRoot: undefined,
-            addComment: true,
-            includeContent: true
-        }))
-            .pipe(opts.languages && opts.languages.length ? i18n_1.processNlsFiles({
-            fileHeader: bundledFileHeader,
-            languages: opts.languages
-        }) : es.through())
-            .pipe(gulp.dest(out));
-    };
-}
-exports.optimizeTask = optimizeTask;
-function minifyTask(src, sourceMapBaseUrl) {
-    const esbuild = require('esbuild');
-    const sourceMappingURL = sourceMapBaseUrl ? ((f) => `${sourceMapBaseUrl}/${f.relative}.map`) : undefined;
-    return cb => {
-        const cssnano = require('cssnano');
-        const postcss = require('gulp-postcss');
-        const sourcemaps = require('gulp-sourcemaps');
-        const jsFilter = filter('**/*.js', { restore: true });
-        const cssFilter = filter('**/*.css', { restore: true });
-        pump(gulp.src([src + '/**', '!' + src + '/**/*.map']), jsFilter, sourcemaps.init({ loadMaps: true }), es.map((f, cb) => {
-            esbuild.build({
-                entryPoints: [f.path],
-                minify: true,
-                sourcemap: 'external',
-                outdir: '.',
-                platform: 'node',
-                target: ['node14.16'],
-                write: false
-            }).then(res => {
-                const jsFile = res.outputFiles.find(f => /\.js$/.test(f.path));
-                const sourceMapFile = res.outputFiles.find(f => /\.js\.map$/.test(f.path));
-                f.contents = Buffer.from(jsFile.contents);
-                f.sourceMap = JSON.parse(sourceMapFile.text);
-                cb(undefined, f);
-            }, cb);
-        }), jsFilter.restore, cssFilter, postcss([cssnano({ preset: 'default' })]), cssFilter.restore, sourcemaps.mapSources((sourcePath) => {
-            if (sourcePath === 'bootstrap-fork.js') {
-                return 'bootstrap-fork.orig.js';
-            }
-            return sourcePath;
-        }), sourcemaps.write('./', {
-            sourceMappingURL,
-            sourceRoot: undefined,
-            includeContent: true,
-            addComment: true
-        }), gulp.dest(src + '-min'), (err) => cb(err));
-    };
-}
-exports.minifyTask = minifyTask;
diff --git a/lib/vscode/build/lib/optimize.ts b/lib/vscode/build/lib/optimize.ts
deleted file mode 100644
index b613416cab2f..000000000000
--- a/lib/vscode/build/lib/optimize.ts
+++ /dev/null
@@ -1,289 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-'use strict';
-
-import * as es from 'event-stream';
-import * as gulp from 'gulp';
-import * as concat from 'gulp-concat';
-import * as filter from 'gulp-filter';
-import * as fancyLog from 'fancy-log';
-import * as ansiColors from 'ansi-colors';
-import * as path from 'path';
-import * as pump from 'pump';
-import * as VinylFile from 'vinyl';
-import * as bundle from './bundle';
-import { Language, processNlsFiles } from './i18n';
-import { createStatsStream } from './stats';
-import * as util from './util';
-
-const REPO_ROOT_PATH = path.join(__dirname, '../..');
-
-function log(prefix: string, message: string): void {
-	fancyLog(ansiColors.cyan('[' + prefix + ']'), message);
-}
-
-export function loaderConfig() {
-	const result: any = {
-		paths: {
-			'vs': 'out-build/vs',
-			'vscode': 'empty:'
-		},
-		amdModulesPattern: /^vs\//
-	};
-
-	result['vs/css'] = { inlineResources: true };
-
-	return result;
-}
-
-const IS_OUR_COPYRIGHT_REGEXP = /Copyright \(C\) Microsoft Corporation/i;
-
-function loader(src: string, bundledFileHeader: string, bundleLoader: boolean): NodeJS.ReadWriteStream {
-	let sources = [
-		`${src}/vs/loader.js`
-	];
-	if (bundleLoader) {
-		sources = sources.concat([
-			`${src}/vs/css.js`,
-			`${src}/vs/nls.js`
-		]);
-	}
-
-	let isFirst = true;
-	return (
-		gulp
-			.src(sources, { base: `${src}` })
-			.pipe(es.through(function (data) {
-				if (isFirst) {
-					isFirst = false;
-					this.emit('data', new VinylFile({
-						path: 'fake',
-						base: '.',
-						contents: Buffer.from(bundledFileHeader)
-					}));
-					this.emit('data', data);
-				} else {
-					this.emit('data', data);
-				}
-			}))
-			.pipe(concat('vs/loader.js'))
-	);
-}
-
-function toConcatStream(src: string, bundledFileHeader: string, sources: bundle.IFile[], dest: string, fileContentMapper: (contents: string, path: string) => string): NodeJS.ReadWriteStream {
-	const useSourcemaps = /\.js$/.test(dest) && !/\.nls\.js$/.test(dest);
-
-	// If a bundle ends up including in any of the sources our copyright, then
-	// insert a fake source at the beginning of each bundle with our copyright
-	let containsOurCopyright = false;
-	for (let i = 0, len = sources.length; i < len; i++) {
-		const fileContents = sources[i].contents;
-		if (IS_OUR_COPYRIGHT_REGEXP.test(fileContents)) {
-			containsOurCopyright = true;
-			break;
-		}
-	}
-
-	if (containsOurCopyright) {
-		sources.unshift({
-			path: null,
-			contents: bundledFileHeader
-		});
-	}
-
-	const treatedSources = sources.map(function (source) {
-		const root = source.path ? REPO_ROOT_PATH.replace(/\\/g, '/') : '';
-		const base = source.path ? root + `/${src}` : '.';
-		const path = source.path ? root + '/' + source.path.replace(/\\/g, '/') : 'fake';
-		const contents = source.path ? fileContentMapper(source.contents, path) : source.contents;
-
-		return new VinylFile({
-			path: path,
-			base: base,
-			contents: Buffer.from(contents)
-		});
-	});
-
-	return es.readArray(treatedSources)
-		.pipe(useSourcemaps ? util.loadSourcemaps() : es.through())
-		.pipe(concat(dest))
-		.pipe(createStatsStream(dest));
-}
-
-function toBundleStream(src: string, bundledFileHeader: string, bundles: bundle.IConcatFile[], fileContentMapper: (contents: string, path: string) => string): NodeJS.ReadWriteStream {
-	return es.merge(bundles.map(function (bundle) {
-		return toConcatStream(src, bundledFileHeader, bundle.sources, bundle.dest, fileContentMapper);
-	}));
-}
-
-export interface IOptimizeTaskOpts {
-	/**
-	 * The folder to read files from.
-	 */
-	src: string;
-	/**
-	 * (for AMD files, will get bundled and get Copyright treatment)
-	 */
-	entryPoints: bundle.IEntryPoint[];
-	/**
-	 * (svg, etc.)
-	 */
-	resources: string[];
-	loaderConfig: any;
-	/**
-	 * (true by default - append css and nls to loader)
-	 */
-	bundleLoader?: boolean;
-	/**
-	 * (basically the Copyright treatment)
-	 */
-	header?: string;
-	/**
-	 * (emit bundleInfo.json file)
-	 */
-	bundleInfo: boolean;
-	/**
-	 * (out folder name)
-	 */
-	out: string;
-	/**
-	 * (out folder name)
-	 */
-	languages?: Language[];
-	/**
-	 * File contents interceptor
-	 * @param contents The contens of the file
-	 * @param path The absolute file path, always using `/`, even on Windows
-	 */
-	fileContentMapper?: (contents: string, path: string) => string;
-}
-
-const DEFAULT_FILE_HEADER = [
-	'/*!--------------------------------------------------------',
-	' * Copyright (C) Microsoft Corporation. All rights reserved.',
-	' *--------------------------------------------------------*/'
-].join('\n');
-
-export function optimizeTask(opts: IOptimizeTaskOpts): () => NodeJS.ReadWriteStream {
-	const src = opts.src;
-	const entryPoints = opts.entryPoints;
-	const resources = opts.resources;
-	const loaderConfig = opts.loaderConfig;
-	const bundledFileHeader = opts.header || DEFAULT_FILE_HEADER;
-	const bundleLoader = (typeof opts.bundleLoader === 'undefined' ? true : opts.bundleLoader);
-	const out = opts.out;
-	const fileContentMapper = opts.fileContentMapper || ((contents: string, _path: string) => contents);
-
-	return function () {
-		const sourcemaps = require('gulp-sourcemaps') as typeof import('gulp-sourcemaps');
-
-		const bundlesStream = es.through(); // this stream will contain the bundled files
-		const resourcesStream = es.through(); // this stream will contain the resources
-		const bundleInfoStream = es.through(); // this stream will contain bundleInfo.json
-
-		bundle.bundle(entryPoints, loaderConfig, function (err, result) {
-			if (err || !result) { return bundlesStream.emit('error', JSON.stringify(err)); }
-
-			toBundleStream(src, bundledFileHeader, result.files, fileContentMapper).pipe(bundlesStream);
-
-			// Remove css inlined resources
-			const filteredResources = resources.slice();
-			result.cssInlinedResources.forEach(function (resource) {
-				if (process.env['VSCODE_BUILD_VERBOSE']) {
-					log('optimizer', 'excluding inlined: ' + resource);
-				}
-				filteredResources.push('!' + resource);
-			});
-			gulp.src(filteredResources, { base: `${src}`, allowEmpty: true }).pipe(resourcesStream);
-
-			const bundleInfoArray: VinylFile[] = [];
-			if (opts.bundleInfo) {
-				bundleInfoArray.push(new VinylFile({
-					path: 'bundleInfo.json',
-					base: '.',
-					contents: Buffer.from(JSON.stringify(result.bundleData, null, '\t'))
-				}));
-			}
-			es.readArray(bundleInfoArray).pipe(bundleInfoStream);
-		});
-
-		const result = es.merge(
-			loader(src, bundledFileHeader, bundleLoader),
-			bundlesStream,
-			resourcesStream,
-			bundleInfoStream
-		);
-
-		return result
-			.pipe(sourcemaps.write('./', {
-				sourceRoot: undefined,
-				addComment: true,
-				includeContent: true
-			}))
-			.pipe(opts.languages && opts.languages.length ? processNlsFiles({
-				fileHeader: bundledFileHeader,
-				languages: opts.languages
-			}) : es.through())
-			.pipe(gulp.dest(out));
-	};
-}
-
-export function minifyTask(src: string, sourceMapBaseUrl?: string): (cb: any) => void {
-	const esbuild = require('esbuild') as typeof import('esbuild');
-	const sourceMappingURL = sourceMapBaseUrl ? ((f: any) => `${sourceMapBaseUrl}/${f.relative}.map`) : undefined;
-
-	return cb => {
-		const cssnano = require('cssnano') as typeof import('cssnano');
-		const postcss = require('gulp-postcss') as typeof import('gulp-postcss');
-		const sourcemaps = require('gulp-sourcemaps') as typeof import('gulp-sourcemaps');
-
-		const jsFilter = filter('**/*.js', { restore: true });
-		const cssFilter = filter('**/*.css', { restore: true });
-
-		pump(
-			gulp.src([src + '/**', '!' + src + '/**/*.map']),
-			jsFilter,
-			sourcemaps.init({ loadMaps: true }),
-			es.map((f: any, cb) => {
-				esbuild.build({
-					entryPoints: [f.path],
-					minify: true,
-					sourcemap: 'external',
-					outdir: '.',
-					platform: 'node',
-					target: ['node14.16'],
-					write: false
-				}).then(res => {
-					const jsFile = res.outputFiles.find(f => /\.js$/.test(f.path))!;
-					const sourceMapFile = res.outputFiles.find(f => /\.js\.map$/.test(f.path))!;
-
-					f.contents = Buffer.from(jsFile.contents);
-					f.sourceMap = JSON.parse(sourceMapFile.text);
-
-					cb(undefined, f);
-				}, cb);
-			}),
-			jsFilter.restore,
-			cssFilter,
-			postcss([cssnano({ preset: 'default' })]),
-			cssFilter.restore,
-			(<any>sourcemaps).mapSources((sourcePath: string) => {
-				if (sourcePath === 'bootstrap-fork.js') {
-					return 'bootstrap-fork.orig.js';
-				}
-
-				return sourcePath;
-			}),
-			sourcemaps.write('./', {
-				sourceMappingURL,
-				sourceRoot: undefined,
-				includeContent: true,
-				addComment: true
-			} as any),
-			gulp.dest(src + '-min'),
-			(err: any) => cb(err));
-	};
-}
diff --git a/lib/vscode/build/lib/preLaunch.js b/lib/vscode/build/lib/preLaunch.js
deleted file mode 100644
index 1aecbe190487..000000000000
--- a/lib/vscode/build/lib/preLaunch.js
+++ /dev/null
@@ -1,55 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-'use strict';
-Object.defineProperty(exports, "__esModule", { value: true });
-// @ts-check
-const path = require("path");
-const child_process_1 = require("child_process");
-const fs_1 = require("fs");
-const yarn = process.platform === 'win32' ? 'yarn.cmd' : 'yarn';
-const rootDir = path.resolve(__dirname, '..', '..');
-function runProcess(command, args = []) {
-    return new Promise((resolve, reject) => {
-        const child = child_process_1.spawn(command, args, { cwd: rootDir, stdio: 'inherit', env: process.env });
-        child.on('exit', err => !err ? resolve() : process.exit(err !== null && err !== void 0 ? err : 1));
-        child.on('error', reject);
-    });
-}
-async function exists(subdir) {
-    try {
-        await fs_1.promises.stat(path.join(rootDir, subdir));
-        return true;
-    }
-    catch (_a) {
-        return false;
-    }
-}
-async function ensureNodeModules() {
-    if (!(await exists('node_modules'))) {
-        await runProcess(yarn);
-    }
-}
-async function getElectron() {
-    await runProcess(yarn, ['electron']);
-}
-async function ensureCompiled() {
-    if (!(await exists('out'))) {
-        await runProcess(yarn, ['compile']);
-    }
-}
-async function main() {
-    await ensureNodeModules();
-    await getElectron();
-    await ensureCompiled();
-    // Can't require this until after dependencies are installed
-    const { getBuiltInExtensions } = require('./builtInExtensions');
-    await getBuiltInExtensions();
-}
-if (require.main === module) {
-    main().catch(err => {
-        console.error(err);
-        process.exit(1);
-    });
-}
diff --git a/lib/vscode/build/lib/preLaunch.ts b/lib/vscode/build/lib/preLaunch.ts
deleted file mode 100644
index 57441870cc4d..000000000000
--- a/lib/vscode/build/lib/preLaunch.ts
+++ /dev/null
@@ -1,65 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-'use strict';
-
-// @ts-check
-
-import * as path from 'path';
-import { spawn } from 'child_process';
-import { promises as fs } from 'fs';
-
-const yarn = process.platform === 'win32' ? 'yarn.cmd' : 'yarn';
-const rootDir = path.resolve(__dirname, '..', '..');
-
-function runProcess(command: string, args: ReadonlyArray<string> = []) {
-	return new Promise<void>((resolve, reject) => {
-		const child = spawn(command, args, { cwd: rootDir, stdio: 'inherit', env: process.env });
-		child.on('exit', err => !err ? resolve() : process.exit(err ?? 1));
-		child.on('error', reject);
-	});
-}
-
-async function exists(subdir: string) {
-	try {
-		await fs.stat(path.join(rootDir, subdir));
-		return true;
-	} catch {
-		return false;
-	}
-}
-
-async function ensureNodeModules() {
-	if (!(await exists('node_modules'))) {
-		await runProcess(yarn);
-	}
-}
-
-async function getElectron() {
-	await runProcess(yarn, ['electron']);
-}
-
-async function ensureCompiled() {
-	if (!(await exists('out'))) {
-		await runProcess(yarn, ['compile']);
-	}
-}
-
-async function main() {
-	await ensureNodeModules();
-	await getElectron();
-	await ensureCompiled();
-
-	// Can't require this until after dependencies are installed
-	const { getBuiltInExtensions } = require('./builtInExtensions');
-	await getBuiltInExtensions();
-}
-
-if (require.main === module) {
-	main().catch(err => {
-		console.error(err);
-		process.exit(1);
-	});
-}
diff --git a/lib/vscode/build/lib/reporter.js b/lib/vscode/build/lib/reporter.js
deleted file mode 100644
index def8f24a065d..000000000000
--- a/lib/vscode/build/lib/reporter.js
+++ /dev/null
@@ -1,102 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-'use strict';
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.createReporter = void 0;
-const es = require("event-stream");
-const _ = require("underscore");
-const fancyLog = require("fancy-log");
-const ansiColors = require("ansi-colors");
-const fs = require("fs");
-const path = require("path");
-class ErrorLog {
-    constructor(id) {
-        this.id = id;
-        this.allErrors = [];
-        this.startTime = null;
-        this.count = 0;
-    }
-    onStart() {
-        if (this.count++ > 0) {
-            return;
-        }
-        this.startTime = new Date().getTime();
-        fancyLog(`Starting ${ansiColors.green('compilation')}${this.id ? ansiColors.blue(` ${this.id}`) : ''}...`);
-    }
-    onEnd() {
-        if (--this.count > 0) {
-            return;
-        }
-        this.log();
-    }
-    log() {
-        const errors = _.flatten(this.allErrors);
-        const seen = new Set();
-        errors.map(err => {
-            if (!seen.has(err)) {
-                seen.add(err);
-                fancyLog(`${ansiColors.red('Error')}: ${err}`);
-            }
-        });
-        fancyLog(`Finished ${ansiColors.green('compilation')}${this.id ? ansiColors.blue(` ${this.id}`) : ''} with ${errors.length} errors after ${ansiColors.magenta((new Date().getTime() - this.startTime) + ' ms')}`);
-        const regex = /^([^(]+)\((\d+),(\d+)\): (.*)$/s;
-        const messages = errors
-            .map(err => regex.exec(err))
-            .filter(match => !!match)
-            .map(x => x)
-            .map(([, path, line, column, message]) => ({ path, line: parseInt(line), column: parseInt(column), message }));
-        try {
-            const logFileName = 'log' + (this.id ? `_${this.id}` : '');
-            fs.writeFileSync(path.join(buildLogFolder, logFileName), JSON.stringify(messages));
-        }
-        catch (err) {
-            //noop
-        }
-    }
-}
-const errorLogsById = new Map();
-function getErrorLog(id = '') {
-    let errorLog = errorLogsById.get(id);
-    if (!errorLog) {
-        errorLog = new ErrorLog(id);
-        errorLogsById.set(id, errorLog);
-    }
-    return errorLog;
-}
-const buildLogFolder = path.join(path.dirname(path.dirname(__dirname)), '.build');
-try {
-    fs.mkdirSync(buildLogFolder);
-}
-catch (err) {
-    // ignore
-}
-function createReporter(id) {
-    const errorLog = getErrorLog(id);
-    const errors = [];
-    errorLog.allErrors.push(errors);
-    const result = (err) => errors.push(err);
-    result.hasErrors = () => errors.length > 0;
-    result.end = (emitError) => {
-        errors.length = 0;
-        errorLog.onStart();
-        return es.through(undefined, function () {
-            errorLog.onEnd();
-            if (emitError && errors.length > 0) {
-                if (!errors.__logged__) {
-                    errorLog.log();
-                }
-                errors.__logged__ = true;
-                const err = new Error(`Found ${errors.length} errors`);
-                err.__reporter__ = true;
-                this.emit('error', err);
-            }
-            else {
-                this.emit('end');
-            }
-        });
-    };
-    return result;
-}
-exports.createReporter = createReporter;
diff --git a/lib/vscode/build/lib/reporter.ts b/lib/vscode/build/lib/reporter.ts
deleted file mode 100644
index f875fce908a2..000000000000
--- a/lib/vscode/build/lib/reporter.ts
+++ /dev/null
@@ -1,127 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-'use strict';
-
-import * as es from 'event-stream';
-import * as _ from 'underscore';
-import * as fancyLog from 'fancy-log';
-import * as ansiColors from 'ansi-colors';
-import * as fs from 'fs';
-import * as path from 'path';
-
-class ErrorLog {
-	constructor(public id: string) {
-	}
-	allErrors: string[][] = [];
-	startTime: number | null = null;
-	count = 0;
-
-	onStart(): void {
-		if (this.count++ > 0) {
-			return;
-		}
-
-		this.startTime = new Date().getTime();
-		fancyLog(`Starting ${ansiColors.green('compilation')}${this.id ? ansiColors.blue(` ${this.id}`) : ''}...`);
-	}
-
-	onEnd(): void {
-		if (--this.count > 0) {
-			return;
-		}
-
-		this.log();
-	}
-
-	log(): void {
-		const errors = _.flatten(this.allErrors);
-		const seen = new Set<string>();
-
-		errors.map(err => {
-			if (!seen.has(err)) {
-				seen.add(err);
-				fancyLog(`${ansiColors.red('Error')}: ${err}`);
-			}
-		});
-
-		fancyLog(`Finished ${ansiColors.green('compilation')}${this.id ? ansiColors.blue(` ${this.id}`) : ''} with ${errors.length} errors after ${ansiColors.magenta((new Date().getTime() - this.startTime!) + ' ms')}`);
-
-		const regex = /^([^(]+)\((\d+),(\d+)\): (.*)$/s;
-		const messages = errors
-			.map(err => regex.exec(err))
-			.filter(match => !!match)
-			.map(x => x as string[])
-			.map(([, path, line, column, message]) => ({ path, line: parseInt(line), column: parseInt(column), message }));
-
-		try {
-			const logFileName = 'log' + (this.id ? `_${this.id}` : '');
-			fs.writeFileSync(path.join(buildLogFolder, logFileName), JSON.stringify(messages));
-		} catch (err) {
-			//noop
-		}
-	}
-
-}
-
-const errorLogsById = new Map<string, ErrorLog>();
-function getErrorLog(id: string = '') {
-	let errorLog = errorLogsById.get(id);
-	if (!errorLog) {
-		errorLog = new ErrorLog(id);
-		errorLogsById.set(id, errorLog);
-	}
-	return errorLog;
-}
-
-const buildLogFolder = path.join(path.dirname(path.dirname(__dirname)), '.build');
-
-try {
-	fs.mkdirSync(buildLogFolder);
-} catch (err) {
-	// ignore
-}
-
-export interface IReporter {
-	(err: string): void;
-	hasErrors(): boolean;
-	end(emitError: boolean): NodeJS.ReadWriteStream;
-}
-
-export function createReporter(id?: string): IReporter {
-	const errorLog = getErrorLog(id);
-
-	const errors: string[] = [];
-	errorLog.allErrors.push(errors);
-
-	const result = (err: string) => errors.push(err);
-
-	result.hasErrors = () => errors.length > 0;
-
-	result.end = (emitError: boolean): NodeJS.ReadWriteStream => {
-		errors.length = 0;
-		errorLog.onStart();
-
-		return es.through(undefined, function () {
-			errorLog.onEnd();
-
-			if (emitError && errors.length > 0) {
-				if (!(errors as any).__logged__) {
-					errorLog.log();
-				}
-
-				(errors as any).__logged__ = true;
-
-				const err = new Error(`Found ${errors.length} errors`);
-				(err as any).__reporter__ = true;
-				this.emit('error', err);
-			} else {
-				this.emit('end');
-			}
-		});
-	};
-
-	return result;
-}
diff --git a/lib/vscode/build/lib/snapshotLoader.js b/lib/vscode/build/lib/snapshotLoader.js
deleted file mode 100644
index ee626a0f7f15..000000000000
--- a/lib/vscode/build/lib/snapshotLoader.js
+++ /dev/null
@@ -1,55 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-'use strict';
-var snaps;
-(function (snaps) {
-    const fs = require('fs');
-    const path = require('path');
-    const os = require('os');
-    const cp = require('child_process');
-    const mksnapshot = path.join(__dirname, `../../node_modules/.bin/${process.platform === 'win32' ? 'mksnapshot.cmd' : 'mksnapshot'}`);
-    const product = require('../../product.json');
-    const arch = (process.argv.join('').match(/--arch=(.*)/) || [])[1];
-    //
-    let loaderFilepath;
-    let startupBlobFilepath;
-    switch (process.platform) {
-        case 'darwin':
-            loaderFilepath = `VSCode-darwin/${product.nameLong}.app/Contents/Resources/app/out/vs/loader.js`;
-            startupBlobFilepath = `VSCode-darwin/${product.nameLong}.app/Contents/Frameworks/Electron Framework.framework/Resources/snapshot_blob.bin`;
-            break;
-        case 'win32':
-        case 'linux':
-            loaderFilepath = `VSCode-${process.platform}-${arch}/resources/app/out/vs/loader.js`;
-            startupBlobFilepath = `VSCode-${process.platform}-${arch}/snapshot_blob.bin`;
-            break;
-        default:
-            throw new Error('Unknown platform');
-    }
-    loaderFilepath = path.join(__dirname, '../../../', loaderFilepath);
-    startupBlobFilepath = path.join(__dirname, '../../../', startupBlobFilepath);
-    snapshotLoader(loaderFilepath, startupBlobFilepath);
-    function snapshotLoader(loaderFilepath, startupBlobFilepath) {
-        const inputFile = fs.readFileSync(loaderFilepath);
-        const wrappedInputFile = `
-		var Monaco_Loader_Init;
-		(function() {
-			var doNotInitLoader = true;
-			${inputFile.toString()};
-			Monaco_Loader_Init = function() {
-				AMDLoader.init();
-				CSSLoaderPlugin.init();
-				NLSLoaderPlugin.init();
-
-				return { define, require };
-			}
-		})();
-		`;
-        const wrappedInputFilepath = path.join(os.tmpdir(), 'wrapped-loader.js');
-        console.log(wrappedInputFilepath);
-        fs.writeFileSync(wrappedInputFilepath, wrappedInputFile);
-        cp.execFileSync(mksnapshot, [wrappedInputFilepath, `--startup_blob`, startupBlobFilepath]);
-    }
-})(snaps || (snaps = {}));
diff --git a/lib/vscode/build/lib/snapshotLoader.ts b/lib/vscode/build/lib/snapshotLoader.ts
deleted file mode 100644
index 40b06d67d051..000000000000
--- a/lib/vscode/build/lib/snapshotLoader.ts
+++ /dev/null
@@ -1,67 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-'use strict';
-
-namespace snaps {
-
-	const fs = require('fs');
-	const path = require('path');
-	const os = require('os');
-	const cp = require('child_process');
-
-	const mksnapshot = path.join(__dirname, `../../node_modules/.bin/${process.platform === 'win32' ? 'mksnapshot.cmd' : 'mksnapshot'}`);
-	const product = require('../../product.json');
-	const arch = (process.argv.join('').match(/--arch=(.*)/) || [])[1];
-
-	//
-	let loaderFilepath: string;
-	let startupBlobFilepath: string;
-
-	switch (process.platform) {
-		case 'darwin':
-			loaderFilepath = `VSCode-darwin/${product.nameLong}.app/Contents/Resources/app/out/vs/loader.js`;
-			startupBlobFilepath = `VSCode-darwin/${product.nameLong}.app/Contents/Frameworks/Electron Framework.framework/Resources/snapshot_blob.bin`;
-			break;
-
-		case 'win32':
-		case 'linux':
-			loaderFilepath = `VSCode-${process.platform}-${arch}/resources/app/out/vs/loader.js`;
-			startupBlobFilepath = `VSCode-${process.platform}-${arch}/snapshot_blob.bin`;
-			break;
-
-		default:
-			throw new Error('Unknown platform');
-	}
-
-	loaderFilepath = path.join(__dirname, '../../../', loaderFilepath);
-	startupBlobFilepath = path.join(__dirname, '../../../', startupBlobFilepath);
-
-	snapshotLoader(loaderFilepath, startupBlobFilepath);
-
-	function snapshotLoader(loaderFilepath: string, startupBlobFilepath: string): void {
-
-		const inputFile = fs.readFileSync(loaderFilepath);
-		const wrappedInputFile = `
-		var Monaco_Loader_Init;
-		(function() {
-			var doNotInitLoader = true;
-			${inputFile.toString()};
-			Monaco_Loader_Init = function() {
-				AMDLoader.init();
-				CSSLoaderPlugin.init();
-				NLSLoaderPlugin.init();
-
-				return { define, require };
-			}
-		})();
-		`;
-		const wrappedInputFilepath = path.join(os.tmpdir(), 'wrapped-loader.js');
-		console.log(wrappedInputFilepath);
-		fs.writeFileSync(wrappedInputFilepath, wrappedInputFile);
-
-		cp.execFileSync(mksnapshot, [wrappedInputFilepath, `--startup_blob`, startupBlobFilepath]);
-	}
-}
diff --git a/lib/vscode/build/lib/standalone.js b/lib/vscode/build/lib/standalone.js
deleted file mode 100644
index 91a693ce2339..000000000000
--- a/lib/vscode/build/lib/standalone.js
+++ /dev/null
@@ -1,322 +0,0 @@
-"use strict";
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.createESMSourcesAndResources2 = exports.extractEditor = void 0;
-const fs = require("fs");
-const path = require("path");
-const tss = require("./treeshaking");
-const REPO_ROOT = path.join(__dirname, '../../');
-const SRC_DIR = path.join(REPO_ROOT, 'src');
-let dirCache = {};
-function writeFile(filePath, contents) {
-    function ensureDirs(dirPath) {
-        if (dirCache[dirPath]) {
-            return;
-        }
-        dirCache[dirPath] = true;
-        ensureDirs(path.dirname(dirPath));
-        if (fs.existsSync(dirPath)) {
-            return;
-        }
-        fs.mkdirSync(dirPath);
-    }
-    ensureDirs(path.dirname(filePath));
-    fs.writeFileSync(filePath, contents);
-}
-function extractEditor(options) {
-    var _a;
-    const ts = require('typescript');
-    const tsConfig = JSON.parse(fs.readFileSync(path.join(options.sourcesRoot, 'tsconfig.monaco.json')).toString());
-    let compilerOptions;
-    if (tsConfig.extends) {
-        compilerOptions = Object.assign({}, require(path.join(options.sourcesRoot, tsConfig.extends)).compilerOptions, tsConfig.compilerOptions);
-        delete tsConfig.extends;
-    }
-    else {
-        compilerOptions = tsConfig.compilerOptions;
-    }
-    tsConfig.compilerOptions = compilerOptions;
-    compilerOptions.noEmit = false;
-    compilerOptions.noUnusedLocals = false;
-    compilerOptions.preserveConstEnums = false;
-    compilerOptions.declaration = false;
-    compilerOptions.moduleResolution = ts.ModuleResolutionKind.Classic;
-    options.compilerOptions = compilerOptions;
-    console.log(`Running tree shaker with shakeLevel ${tss.toStringShakeLevel(options.shakeLevel)}`);
-    // Take the extra included .d.ts files from `tsconfig.monaco.json`
-    options.typings = tsConfig.include.filter(includedFile => /\.d\.ts$/.test(includedFile));
-    // Add extra .d.ts files from `node_modules/@types/`
-    if (Array.isArray((_a = options.compilerOptions) === null || _a === void 0 ? void 0 : _a.types)) {
-        options.compilerOptions.types.forEach((type) => {
-            options.typings.push(`../node_modules/@types/${type}/index.d.ts`);
-        });
-    }
-    let result = tss.shake(options);
-    for (let fileName in result) {
-        if (result.hasOwnProperty(fileName)) {
-            writeFile(path.join(options.destRoot, fileName), result[fileName]);
-        }
-    }
-    let copied = {};
-    const copyFile = (fileName) => {
-        if (copied[fileName]) {
-            return;
-        }
-        copied[fileName] = true;
-        const srcPath = path.join(options.sourcesRoot, fileName);
-        const dstPath = path.join(options.destRoot, fileName);
-        writeFile(dstPath, fs.readFileSync(srcPath));
-    };
-    const writeOutputFile = (fileName, contents) => {
-        writeFile(path.join(options.destRoot, fileName), contents);
-    };
-    for (let fileName in result) {
-        if (result.hasOwnProperty(fileName)) {
-            const fileContents = result[fileName];
-            const info = ts.preProcessFile(fileContents);
-            for (let i = info.importedFiles.length - 1; i >= 0; i--) {
-                const importedFileName = info.importedFiles[i].fileName;
-                let importedFilePath;
-                if (/^vs\/css!/.test(importedFileName)) {
-                    importedFilePath = importedFileName.substr('vs/css!'.length) + '.css';
-                }
-                else {
-                    importedFilePath = importedFileName;
-                }
-                if (/(^\.\/)|(^\.\.\/)/.test(importedFilePath)) {
-                    importedFilePath = path.join(path.dirname(fileName), importedFilePath);
-                }
-                if (/\.css$/.test(importedFilePath)) {
-                    transportCSS(importedFilePath, copyFile, writeOutputFile);
-                }
-                else {
-                    if (fs.existsSync(path.join(options.sourcesRoot, importedFilePath + '.js'))) {
-                        copyFile(importedFilePath + '.js');
-                    }
-                }
-            }
-        }
-    }
-    delete tsConfig.compilerOptions.moduleResolution;
-    writeOutputFile('tsconfig.json', JSON.stringify(tsConfig, null, '\t'));
-    [
-        'vs/css.build.js',
-        'vs/css.d.ts',
-        'vs/css.js',
-        'vs/loader.js',
-        'vs/nls.build.js',
-        'vs/nls.d.ts',
-        'vs/nls.js',
-        'vs/nls.mock.ts',
-    ].forEach(copyFile);
-}
-exports.extractEditor = extractEditor;
-function createESMSourcesAndResources2(options) {
-    const ts = require('typescript');
-    const SRC_FOLDER = path.join(REPO_ROOT, options.srcFolder);
-    const OUT_FOLDER = path.join(REPO_ROOT, options.outFolder);
-    const OUT_RESOURCES_FOLDER = path.join(REPO_ROOT, options.outResourcesFolder);
-    const getDestAbsoluteFilePath = (file) => {
-        let dest = options.renames[file.replace(/\\/g, '/')] || file;
-        if (dest === 'tsconfig.json') {
-            return path.join(OUT_FOLDER, `tsconfig.json`);
-        }
-        if (/\.ts$/.test(dest)) {
-            return path.join(OUT_FOLDER, dest);
-        }
-        return path.join(OUT_RESOURCES_FOLDER, dest);
-    };
-    const allFiles = walkDirRecursive(SRC_FOLDER);
-    for (const file of allFiles) {
-        if (options.ignores.indexOf(file.replace(/\\/g, '/')) >= 0) {
-            continue;
-        }
-        if (file === 'tsconfig.json') {
-            const tsConfig = JSON.parse(fs.readFileSync(path.join(SRC_FOLDER, file)).toString());
-            tsConfig.compilerOptions.module = 'es6';
-            tsConfig.compilerOptions.outDir = path.join(path.relative(OUT_FOLDER, OUT_RESOURCES_FOLDER), 'vs').replace(/\\/g, '/');
-            write(getDestAbsoluteFilePath(file), JSON.stringify(tsConfig, null, '\t'));
-            continue;
-        }
-        if (/\.d\.ts$/.test(file) || /\.css$/.test(file) || /\.js$/.test(file) || /\.ttf$/.test(file)) {
-            // Transport the files directly
-            write(getDestAbsoluteFilePath(file), fs.readFileSync(path.join(SRC_FOLDER, file)));
-            continue;
-        }
-        if (/\.ts$/.test(file)) {
-            // Transform the .ts file
-            let fileContents = fs.readFileSync(path.join(SRC_FOLDER, file)).toString();
-            const info = ts.preProcessFile(fileContents);
-            for (let i = info.importedFiles.length - 1; i >= 0; i--) {
-                const importedFilename = info.importedFiles[i].fileName;
-                const pos = info.importedFiles[i].pos;
-                const end = info.importedFiles[i].end;
-                let importedFilepath;
-                if (/^vs\/css!/.test(importedFilename)) {
-                    importedFilepath = importedFilename.substr('vs/css!'.length) + '.css';
-                }
-                else {
-                    importedFilepath = importedFilename;
-                }
-                if (/(^\.\/)|(^\.\.\/)/.test(importedFilepath)) {
-                    importedFilepath = path.join(path.dirname(file), importedFilepath);
-                }
-                let relativePath;
-                if (importedFilepath === path.dirname(file).replace(/\\/g, '/')) {
-                    relativePath = '../' + path.basename(path.dirname(file));
-                }
-                else if (importedFilepath === path.dirname(path.dirname(file)).replace(/\\/g, '/')) {
-                    relativePath = '../../' + path.basename(path.dirname(path.dirname(file)));
-                }
-                else {
-                    relativePath = path.relative(path.dirname(file), importedFilepath);
-                }
-                relativePath = relativePath.replace(/\\/g, '/');
-                if (!/(^\.\/)|(^\.\.\/)/.test(relativePath)) {
-                    relativePath = './' + relativePath;
-                }
-                fileContents = (fileContents.substring(0, pos + 1)
-                    + relativePath
-                    + fileContents.substring(end + 1));
-            }
-            fileContents = fileContents.replace(/import ([a-zA-z0-9]+) = require\(('[^']+')\);/g, function (_, m1, m2) {
-                return `import * as ${m1} from ${m2};`;
-            });
-            write(getDestAbsoluteFilePath(file), fileContents);
-            continue;
-        }
-        console.log(`UNKNOWN FILE: ${file}`);
-    }
-    function walkDirRecursive(dir) {
-        if (dir.charAt(dir.length - 1) !== '/' || dir.charAt(dir.length - 1) !== '\\') {
-            dir += '/';
-        }
-        let result = [];
-        _walkDirRecursive(dir, result, dir.length);
-        return result;
-    }
-    function _walkDirRecursive(dir, result, trimPos) {
-        const files = fs.readdirSync(dir);
-        for (let i = 0; i < files.length; i++) {
-            const file = path.join(dir, files[i]);
-            if (fs.statSync(file).isDirectory()) {
-                _walkDirRecursive(file, result, trimPos);
-            }
-            else {
-                result.push(file.substr(trimPos));
-            }
-        }
-    }
-    function write(absoluteFilePath, contents) {
-        if (/(\.ts$)|(\.js$)/.test(absoluteFilePath)) {
-            contents = toggleComments(contents.toString());
-        }
-        writeFile(absoluteFilePath, contents);
-        function toggleComments(fileContents) {
-            let lines = fileContents.split(/\r\n|\r|\n/);
-            let mode = 0;
-            for (let i = 0; i < lines.length; i++) {
-                const line = lines[i];
-                if (mode === 0) {
-                    if (/\/\/ ESM-comment-begin/.test(line)) {
-                        mode = 1;
-                        continue;
-                    }
-                    if (/\/\/ ESM-uncomment-begin/.test(line)) {
-                        mode = 2;
-                        continue;
-                    }
-                    continue;
-                }
-                if (mode === 1) {
-                    if (/\/\/ ESM-comment-end/.test(line)) {
-                        mode = 0;
-                        continue;
-                    }
-                    lines[i] = '// ' + line;
-                    continue;
-                }
-                if (mode === 2) {
-                    if (/\/\/ ESM-uncomment-end/.test(line)) {
-                        mode = 0;
-                        continue;
-                    }
-                    lines[i] = line.replace(/^(\s*)\/\/ ?/, function (_, indent) {
-                        return indent;
-                    });
-                }
-            }
-            return lines.join('\n');
-        }
-    }
-}
-exports.createESMSourcesAndResources2 = createESMSourcesAndResources2;
-function transportCSS(module, enqueue, write) {
-    if (!/\.css/.test(module)) {
-        return false;
-    }
-    const filename = path.join(SRC_DIR, module);
-    const fileContents = fs.readFileSync(filename).toString();
-    const inlineResources = 'base64'; // see https://github.com/microsoft/monaco-editor/issues/148
-    const newContents = _rewriteOrInlineUrls(fileContents, inlineResources === 'base64');
-    write(module, newContents);
-    return true;
-    function _rewriteOrInlineUrls(contents, forceBase64) {
-        return _replaceURL(contents, (url) => {
-            const fontMatch = url.match(/^(.*).ttf\?(.*)$/);
-            if (fontMatch) {
-                const relativeFontPath = `${fontMatch[1]}.ttf`; // trim the query parameter
-                const fontPath = path.join(path.dirname(module), relativeFontPath);
-                enqueue(fontPath);
-                return relativeFontPath;
-            }
-            const imagePath = path.join(path.dirname(module), url);
-            const fileContents = fs.readFileSync(path.join(SRC_DIR, imagePath));
-            const MIME = /\.svg$/.test(url) ? 'image/svg+xml' : 'image/png';
-            let DATA = ';base64,' + fileContents.toString('base64');
-            if (!forceBase64 && /\.svg$/.test(url)) {
-                // .svg => url encode as explained at https://codepen.io/tigt/post/optimizing-svgs-in-data-uris
-                let newText = fileContents.toString()
-                    .replace(/"/g, '\'')
-                    .replace(/</g, '%3C')
-                    .replace(/>/g, '%3E')
-                    .replace(/&/g, '%26')
-                    .replace(/#/g, '%23')
-                    .replace(/\s+/g, ' ');
-                let encodedData = ',' + newText;
-                if (encodedData.length < DATA.length) {
-                    DATA = encodedData;
-                }
-            }
-            return '"data:' + MIME + DATA + '"';
-        });
-    }
-    function _replaceURL(contents, replacer) {
-        // Use ")" as the terminator as quotes are oftentimes not used at all
-        return contents.replace(/url\(\s*([^\)]+)\s*\)?/g, (_, ...matches) => {
-            let url = matches[0];
-            // Eliminate starting quotes (the initial whitespace is not captured)
-            if (url.charAt(0) === '"' || url.charAt(0) === '\'') {
-                url = url.substring(1);
-            }
-            // The ending whitespace is captured
-            while (url.length > 0 && (url.charAt(url.length - 1) === ' ' || url.charAt(url.length - 1) === '\t')) {
-                url = url.substring(0, url.length - 1);
-            }
-            // Eliminate ending quotes
-            if (url.charAt(url.length - 1) === '"' || url.charAt(url.length - 1) === '\'') {
-                url = url.substring(0, url.length - 1);
-            }
-            if (!_startsWith(url, 'data:') && !_startsWith(url, 'http://') && !_startsWith(url, 'https://')) {
-                url = replacer(url);
-            }
-            return 'url(' + url + ')';
-        });
-    }
-    function _startsWith(haystack, needle) {
-        return haystack.length >= needle.length && haystack.substr(0, needle.length) === needle;
-    }
-}
diff --git a/lib/vscode/build/lib/standalone.ts b/lib/vscode/build/lib/standalone.ts
deleted file mode 100644
index 8b87b9fa4ae5..000000000000
--- a/lib/vscode/build/lib/standalone.ts
+++ /dev/null
@@ -1,372 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-import * as fs from 'fs';
-import * as path from 'path';
-import * as tss from './treeshaking';
-
-const REPO_ROOT = path.join(__dirname, '../../');
-const SRC_DIR = path.join(REPO_ROOT, 'src');
-
-let dirCache: { [dir: string]: boolean; } = {};
-
-function writeFile(filePath: string, contents: Buffer | string): void {
-	function ensureDirs(dirPath: string): void {
-		if (dirCache[dirPath]) {
-			return;
-		}
-		dirCache[dirPath] = true;
-
-		ensureDirs(path.dirname(dirPath));
-		if (fs.existsSync(dirPath)) {
-			return;
-		}
-		fs.mkdirSync(dirPath);
-	}
-	ensureDirs(path.dirname(filePath));
-	fs.writeFileSync(filePath, contents);
-}
-
-export function extractEditor(options: tss.ITreeShakingOptions & { destRoot: string }): void {
-	const ts = require('typescript') as typeof import('typescript');
-
-	const tsConfig = JSON.parse(fs.readFileSync(path.join(options.sourcesRoot, 'tsconfig.monaco.json')).toString());
-	let compilerOptions: { [key: string]: any };
-	if (tsConfig.extends) {
-		compilerOptions = Object.assign({}, require(path.join(options.sourcesRoot, tsConfig.extends)).compilerOptions, tsConfig.compilerOptions);
-		delete tsConfig.extends;
-	} else {
-		compilerOptions = tsConfig.compilerOptions;
-	}
-	tsConfig.compilerOptions = compilerOptions;
-
-	compilerOptions.noEmit = false;
-	compilerOptions.noUnusedLocals = false;
-	compilerOptions.preserveConstEnums = false;
-	compilerOptions.declaration = false;
-	compilerOptions.moduleResolution = ts.ModuleResolutionKind.Classic;
-
-
-	options.compilerOptions = compilerOptions;
-
-	console.log(`Running tree shaker with shakeLevel ${tss.toStringShakeLevel(options.shakeLevel)}`);
-
-	// Take the extra included .d.ts files from `tsconfig.monaco.json`
-	options.typings = (<string[]>tsConfig.include).filter(includedFile => /\.d\.ts$/.test(includedFile));
-
-	// Add extra .d.ts files from `node_modules/@types/`
-	if (Array.isArray(options.compilerOptions?.types)) {
-		options.compilerOptions.types.forEach((type: string) => {
-			options.typings.push(`../node_modules/@types/${type}/index.d.ts`);
-		});
-	}
-
-	let result = tss.shake(options);
-	for (let fileName in result) {
-		if (result.hasOwnProperty(fileName)) {
-			writeFile(path.join(options.destRoot, fileName), result[fileName]);
-		}
-	}
-	let copied: { [fileName: string]: boolean; } = {};
-	const copyFile = (fileName: string) => {
-		if (copied[fileName]) {
-			return;
-		}
-		copied[fileName] = true;
-		const srcPath = path.join(options.sourcesRoot, fileName);
-		const dstPath = path.join(options.destRoot, fileName);
-		writeFile(dstPath, fs.readFileSync(srcPath));
-	};
-	const writeOutputFile = (fileName: string, contents: string | Buffer) => {
-		writeFile(path.join(options.destRoot, fileName), contents);
-	};
-	for (let fileName in result) {
-		if (result.hasOwnProperty(fileName)) {
-			const fileContents = result[fileName];
-			const info = ts.preProcessFile(fileContents);
-
-			for (let i = info.importedFiles.length - 1; i >= 0; i--) {
-				const importedFileName = info.importedFiles[i].fileName;
-
-				let importedFilePath: string;
-				if (/^vs\/css!/.test(importedFileName)) {
-					importedFilePath = importedFileName.substr('vs/css!'.length) + '.css';
-				} else {
-					importedFilePath = importedFileName;
-				}
-				if (/(^\.\/)|(^\.\.\/)/.test(importedFilePath)) {
-					importedFilePath = path.join(path.dirname(fileName), importedFilePath);
-				}
-
-				if (/\.css$/.test(importedFilePath)) {
-					transportCSS(importedFilePath, copyFile, writeOutputFile);
-				} else {
-					if (fs.existsSync(path.join(options.sourcesRoot, importedFilePath + '.js'))) {
-						copyFile(importedFilePath + '.js');
-					}
-				}
-			}
-		}
-	}
-
-	delete tsConfig.compilerOptions.moduleResolution;
-	writeOutputFile('tsconfig.json', JSON.stringify(tsConfig, null, '\t'));
-
-	[
-		'vs/css.build.js',
-		'vs/css.d.ts',
-		'vs/css.js',
-		'vs/loader.js',
-		'vs/nls.build.js',
-		'vs/nls.d.ts',
-		'vs/nls.js',
-		'vs/nls.mock.ts',
-	].forEach(copyFile);
-}
-
-export interface IOptions2 {
-	srcFolder: string;
-	outFolder: string;
-	outResourcesFolder: string;
-	ignores: string[];
-	renames: { [filename: string]: string; };
-}
-
-export function createESMSourcesAndResources2(options: IOptions2): void {
-	const ts = require('typescript') as typeof import('typescript');
-
-	const SRC_FOLDER = path.join(REPO_ROOT, options.srcFolder);
-	const OUT_FOLDER = path.join(REPO_ROOT, options.outFolder);
-	const OUT_RESOURCES_FOLDER = path.join(REPO_ROOT, options.outResourcesFolder);
-
-	const getDestAbsoluteFilePath = (file: string): string => {
-		let dest = options.renames[file.replace(/\\/g, '/')] || file;
-		if (dest === 'tsconfig.json') {
-			return path.join(OUT_FOLDER, `tsconfig.json`);
-		}
-		if (/\.ts$/.test(dest)) {
-			return path.join(OUT_FOLDER, dest);
-		}
-		return path.join(OUT_RESOURCES_FOLDER, dest);
-	};
-
-	const allFiles = walkDirRecursive(SRC_FOLDER);
-	for (const file of allFiles) {
-
-		if (options.ignores.indexOf(file.replace(/\\/g, '/')) >= 0) {
-			continue;
-		}
-
-		if (file === 'tsconfig.json') {
-			const tsConfig = JSON.parse(fs.readFileSync(path.join(SRC_FOLDER, file)).toString());
-			tsConfig.compilerOptions.module = 'es6';
-			tsConfig.compilerOptions.outDir = path.join(path.relative(OUT_FOLDER, OUT_RESOURCES_FOLDER), 'vs').replace(/\\/g, '/');
-			write(getDestAbsoluteFilePath(file), JSON.stringify(tsConfig, null, '\t'));
-			continue;
-		}
-
-		if (/\.d\.ts$/.test(file) || /\.css$/.test(file) || /\.js$/.test(file) || /\.ttf$/.test(file)) {
-			// Transport the files directly
-			write(getDestAbsoluteFilePath(file), fs.readFileSync(path.join(SRC_FOLDER, file)));
-			continue;
-		}
-
-		if (/\.ts$/.test(file)) {
-			// Transform the .ts file
-			let fileContents = fs.readFileSync(path.join(SRC_FOLDER, file)).toString();
-
-			const info = ts.preProcessFile(fileContents);
-
-			for (let i = info.importedFiles.length - 1; i >= 0; i--) {
-				const importedFilename = info.importedFiles[i].fileName;
-				const pos = info.importedFiles[i].pos;
-				const end = info.importedFiles[i].end;
-
-				let importedFilepath: string;
-				if (/^vs\/css!/.test(importedFilename)) {
-					importedFilepath = importedFilename.substr('vs/css!'.length) + '.css';
-				} else {
-					importedFilepath = importedFilename;
-				}
-				if (/(^\.\/)|(^\.\.\/)/.test(importedFilepath)) {
-					importedFilepath = path.join(path.dirname(file), importedFilepath);
-				}
-
-				let relativePath: string;
-				if (importedFilepath === path.dirname(file).replace(/\\/g, '/')) {
-					relativePath = '../' + path.basename(path.dirname(file));
-				} else if (importedFilepath === path.dirname(path.dirname(file)).replace(/\\/g, '/')) {
-					relativePath = '../../' + path.basename(path.dirname(path.dirname(file)));
-				} else {
-					relativePath = path.relative(path.dirname(file), importedFilepath);
-				}
-				relativePath = relativePath.replace(/\\/g, '/');
-				if (!/(^\.\/)|(^\.\.\/)/.test(relativePath)) {
-					relativePath = './' + relativePath;
-				}
-				fileContents = (
-					fileContents.substring(0, pos + 1)
-					+ relativePath
-					+ fileContents.substring(end + 1)
-				);
-			}
-
-			fileContents = fileContents.replace(/import ([a-zA-z0-9]+) = require\(('[^']+')\);/g, function (_, m1, m2) {
-				return `import * as ${m1} from ${m2};`;
-			});
-
-			write(getDestAbsoluteFilePath(file), fileContents);
-			continue;
-		}
-
-		console.log(`UNKNOWN FILE: ${file}`);
-	}
-
-
-	function walkDirRecursive(dir: string): string[] {
-		if (dir.charAt(dir.length - 1) !== '/' || dir.charAt(dir.length - 1) !== '\\') {
-			dir += '/';
-		}
-		let result: string[] = [];
-		_walkDirRecursive(dir, result, dir.length);
-		return result;
-	}
-
-	function _walkDirRecursive(dir: string, result: string[], trimPos: number): void {
-		const files = fs.readdirSync(dir);
-		for (let i = 0; i < files.length; i++) {
-			const file = path.join(dir, files[i]);
-			if (fs.statSync(file).isDirectory()) {
-				_walkDirRecursive(file, result, trimPos);
-			} else {
-				result.push(file.substr(trimPos));
-			}
-		}
-	}
-
-	function write(absoluteFilePath: string, contents: string | Buffer): void {
-		if (/(\.ts$)|(\.js$)/.test(absoluteFilePath)) {
-			contents = toggleComments(contents.toString());
-		}
-		writeFile(absoluteFilePath, contents);
-
-		function toggleComments(fileContents: string): string {
-			let lines = fileContents.split(/\r\n|\r|\n/);
-			let mode = 0;
-			for (let i = 0; i < lines.length; i++) {
-				const line = lines[i];
-				if (mode === 0) {
-					if (/\/\/ ESM-comment-begin/.test(line)) {
-						mode = 1;
-						continue;
-					}
-					if (/\/\/ ESM-uncomment-begin/.test(line)) {
-						mode = 2;
-						continue;
-					}
-					continue;
-				}
-
-				if (mode === 1) {
-					if (/\/\/ ESM-comment-end/.test(line)) {
-						mode = 0;
-						continue;
-					}
-					lines[i] = '// ' + line;
-					continue;
-				}
-
-				if (mode === 2) {
-					if (/\/\/ ESM-uncomment-end/.test(line)) {
-						mode = 0;
-						continue;
-					}
-					lines[i] = line.replace(/^(\s*)\/\/ ?/, function (_, indent) {
-						return indent;
-					});
-				}
-			}
-
-			return lines.join('\n');
-		}
-	}
-}
-
-function transportCSS(module: string, enqueue: (module: string) => void, write: (path: string, contents: string | Buffer) => void): boolean {
-
-	if (!/\.css/.test(module)) {
-		return false;
-	}
-
-	const filename = path.join(SRC_DIR, module);
-	const fileContents = fs.readFileSync(filename).toString();
-	const inlineResources = 'base64'; // see https://github.com/microsoft/monaco-editor/issues/148
-
-	const newContents = _rewriteOrInlineUrls(fileContents, inlineResources === 'base64');
-	write(module, newContents);
-	return true;
-
-	function _rewriteOrInlineUrls(contents: string, forceBase64: boolean): string {
-		return _replaceURL(contents, (url) => {
-			const fontMatch = url.match(/^(.*).ttf\?(.*)$/);
-			if (fontMatch) {
-				const relativeFontPath = `${fontMatch[1]}.ttf`; // trim the query parameter
-				const fontPath = path.join(path.dirname(module), relativeFontPath);
-				enqueue(fontPath);
-				return relativeFontPath;
-			}
-
-			const imagePath = path.join(path.dirname(module), url);
-			const fileContents = fs.readFileSync(path.join(SRC_DIR, imagePath));
-			const MIME = /\.svg$/.test(url) ? 'image/svg+xml' : 'image/png';
-			let DATA = ';base64,' + fileContents.toString('base64');
-
-			if (!forceBase64 && /\.svg$/.test(url)) {
-				// .svg => url encode as explained at https://codepen.io/tigt/post/optimizing-svgs-in-data-uris
-				let newText = fileContents.toString()
-					.replace(/"/g, '\'')
-					.replace(/</g, '%3C')
-					.replace(/>/g, '%3E')
-					.replace(/&/g, '%26')
-					.replace(/#/g, '%23')
-					.replace(/\s+/g, ' ');
-				let encodedData = ',' + newText;
-				if (encodedData.length < DATA.length) {
-					DATA = encodedData;
-				}
-			}
-			return '"data:' + MIME + DATA + '"';
-		});
-	}
-
-	function _replaceURL(contents: string, replacer: (url: string) => string): string {
-		// Use ")" as the terminator as quotes are oftentimes not used at all
-		return contents.replace(/url\(\s*([^\)]+)\s*\)?/g, (_: string, ...matches: string[]) => {
-			let url = matches[0];
-			// Eliminate starting quotes (the initial whitespace is not captured)
-			if (url.charAt(0) === '"' || url.charAt(0) === '\'') {
-				url = url.substring(1);
-			}
-			// The ending whitespace is captured
-			while (url.length > 0 && (url.charAt(url.length - 1) === ' ' || url.charAt(url.length - 1) === '\t')) {
-				url = url.substring(0, url.length - 1);
-			}
-			// Eliminate ending quotes
-			if (url.charAt(url.length - 1) === '"' || url.charAt(url.length - 1) === '\'') {
-				url = url.substring(0, url.length - 1);
-			}
-
-			if (!_startsWith(url, 'data:') && !_startsWith(url, 'http://') && !_startsWith(url, 'https://')) {
-				url = replacer(url);
-			}
-
-			return 'url(' + url + ')';
-		});
-	}
-
-	function _startsWith(haystack: string, needle: string): boolean {
-		return haystack.length >= needle.length && haystack.substr(0, needle.length) === needle;
-	}
-}
diff --git a/lib/vscode/build/lib/stats.js b/lib/vscode/build/lib/stats.js
deleted file mode 100644
index 9a239e8868a6..000000000000
--- a/lib/vscode/build/lib/stats.js
+++ /dev/null
@@ -1,137 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-'use strict';
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.submitAllStats = exports.createStatsStream = void 0;
-const es = require("event-stream");
-const fancyLog = require("fancy-log");
-const ansiColors = require("ansi-colors");
-class Entry {
-    constructor(name, totalCount, totalSize) {
-        this.name = name;
-        this.totalCount = totalCount;
-        this.totalSize = totalSize;
-    }
-    toString(pretty) {
-        if (!pretty) {
-            if (this.totalCount === 1) {
-                return `${this.name}: ${this.totalSize} bytes`;
-            }
-            else {
-                return `${this.name}: ${this.totalCount} files with ${this.totalSize} bytes`;
-            }
-        }
-        else {
-            if (this.totalCount === 1) {
-                return `Stats for '${ansiColors.grey(this.name)}': ${Math.round(this.totalSize / 1204)}KB`;
-            }
-            else {
-                const count = this.totalCount < 100
-                    ? ansiColors.green(this.totalCount.toString())
-                    : ansiColors.red(this.totalCount.toString());
-                return `Stats for '${ansiColors.grey(this.name)}': ${count} files, ${Math.round(this.totalSize / 1204)}KB`;
-            }
-        }
-    }
-}
-const _entries = new Map();
-function createStatsStream(group, log) {
-    const entry = new Entry(group, 0, 0);
-    _entries.set(entry.name, entry);
-    return es.through(function (data) {
-        const file = data;
-        if (typeof file.path === 'string') {
-            entry.totalCount += 1;
-            if (Buffer.isBuffer(file.contents)) {
-                entry.totalSize += file.contents.length;
-            }
-            else if (file.stat && typeof file.stat.size === 'number') {
-                entry.totalSize += file.stat.size;
-            }
-            else {
-                // funky file...
-            }
-        }
-        this.emit('data', data);
-    }, function () {
-        if (log) {
-            if (entry.totalCount === 1) {
-                fancyLog(`Stats for '${ansiColors.grey(entry.name)}': ${Math.round(entry.totalSize / 1204)}KB`);
-            }
-            else {
-                const count = entry.totalCount < 100
-                    ? ansiColors.green(entry.totalCount.toString())
-                    : ansiColors.red(entry.totalCount.toString());
-                fancyLog(`Stats for '${ansiColors.grey(entry.name)}': ${count} files, ${Math.round(entry.totalSize / 1204)}KB`);
-            }
-        }
-        this.emit('end');
-    });
-}
-exports.createStatsStream = createStatsStream;
-function submitAllStats(productJson, commit) {
-    const appInsights = require('applicationinsights');
-    const sorted = [];
-    // move entries for single files to the front
-    _entries.forEach(value => {
-        if (value.totalCount === 1) {
-            sorted.unshift(value);
-        }
-        else {
-            sorted.push(value);
-        }
-    });
-    // print to console
-    for (const entry of sorted) {
-        console.log(entry.toString(true));
-    }
-    // send data as telementry event when the
-    // product is configured to send telemetry
-    if (!productJson || !productJson.aiConfig || typeof productJson.aiConfig.asimovKey !== 'string') {
-        return Promise.resolve(false);
-    }
-    return new Promise(resolve => {
-        try {
-            const sizes = {};
-            const counts = {};
-            for (const entry of sorted) {
-                sizes[entry.name] = entry.totalSize;
-                counts[entry.name] = entry.totalCount;
-            }
-            appInsights.setup(productJson.aiConfig.asimovKey)
-                .setAutoCollectConsole(false)
-                .setAutoCollectExceptions(false)
-                .setAutoCollectPerformance(false)
-                .setAutoCollectRequests(false)
-                .setAutoCollectDependencies(false)
-                .setAutoDependencyCorrelation(false)
-                .start();
-            appInsights.defaultClient.config.endpointUrl = 'https://vortex.data.microsoft.com/collect/v1';
-            /* __GDPR__
-                "monacoworkbench/packagemetrics" : {
-                    "commit" : {"classification": "SystemMetaData", "purpose": "PerformanceAndHealth" },
-                    "size" : {"classification": "SystemMetaData", "purpose": "PerformanceAndHealth" },
-                    "count" : {"classification": "SystemMetaData", "purpose": "PerformanceAndHealth" }
-                }
-            */
-            appInsights.defaultClient.trackEvent({
-                name: 'monacoworkbench/packagemetrics',
-                properties: { commit, size: JSON.stringify(sizes), count: JSON.stringify(counts) }
-            });
-            appInsights.defaultClient.flush({
-                callback: () => {
-                    appInsights.dispose();
-                    resolve(true);
-                }
-            });
-        }
-        catch (err) {
-            console.error('ERROR sending build stats as telemetry event!');
-            console.error(err);
-            resolve(false);
-        }
-    });
-}
-exports.submitAllStats = submitAllStats;
diff --git a/lib/vscode/build/lib/stats.ts b/lib/vscode/build/lib/stats.ts
deleted file mode 100644
index ce141a2f7552..000000000000
--- a/lib/vscode/build/lib/stats.ts
+++ /dev/null
@@ -1,148 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-'use strict';
-
-import * as es from 'event-stream';
-import * as fancyLog from 'fancy-log';
-import * as ansiColors from 'ansi-colors';
-import * as File from 'vinyl';
-
-class Entry {
-	constructor(readonly name: string, public totalCount: number, public totalSize: number) { }
-
-	toString(pretty?: boolean): string {
-		if (!pretty) {
-			if (this.totalCount === 1) {
-				return `${this.name}: ${this.totalSize} bytes`;
-			} else {
-				return `${this.name}: ${this.totalCount} files with ${this.totalSize} bytes`;
-			}
-		} else {
-			if (this.totalCount === 1) {
-				return `Stats for '${ansiColors.grey(this.name)}': ${Math.round(this.totalSize / 1204)}KB`;
-
-			} else {
-				const count = this.totalCount < 100
-					? ansiColors.green(this.totalCount.toString())
-					: ansiColors.red(this.totalCount.toString());
-
-				return `Stats for '${ansiColors.grey(this.name)}': ${count} files, ${Math.round(this.totalSize / 1204)}KB`;
-			}
-		}
-	}
-}
-
-const _entries = new Map<string, Entry>();
-
-export function createStatsStream(group: string, log?: boolean): es.ThroughStream {
-
-	const entry = new Entry(group, 0, 0);
-	_entries.set(entry.name, entry);
-
-	return es.through(function (data) {
-		const file = data as File;
-		if (typeof file.path === 'string') {
-			entry.totalCount += 1;
-			if (Buffer.isBuffer(file.contents)) {
-				entry.totalSize += file.contents.length;
-			} else if (file.stat && typeof file.stat.size === 'number') {
-				entry.totalSize += file.stat.size;
-			} else {
-				// funky file...
-			}
-		}
-		this.emit('data', data);
-	}, function () {
-		if (log) {
-			if (entry.totalCount === 1) {
-				fancyLog(`Stats for '${ansiColors.grey(entry.name)}': ${Math.round(entry.totalSize / 1204)}KB`);
-
-			} else {
-				const count = entry.totalCount < 100
-					? ansiColors.green(entry.totalCount.toString())
-					: ansiColors.red(entry.totalCount.toString());
-
-				fancyLog(`Stats for '${ansiColors.grey(entry.name)}': ${count} files, ${Math.round(entry.totalSize / 1204)}KB`);
-			}
-		}
-
-		this.emit('end');
-	});
-}
-
-export function submitAllStats(productJson: any, commit: string): Promise<boolean> {
-	const appInsights = require('applicationinsights') as typeof import('applicationinsights');
-
-	const sorted: Entry[] = [];
-	// move entries for single files to the front
-	_entries.forEach(value => {
-		if (value.totalCount === 1) {
-			sorted.unshift(value);
-		} else {
-			sorted.push(value);
-		}
-	});
-
-	// print to console
-	for (const entry of sorted) {
-		console.log(entry.toString(true));
-	}
-
-	// send data as telementry event when the
-	// product is configured to send telemetry
-	if (!productJson || !productJson.aiConfig || typeof productJson.aiConfig.asimovKey !== 'string') {
-		return Promise.resolve(false);
-	}
-
-	return new Promise(resolve => {
-		try {
-
-			const sizes: any = {};
-			const counts: any = {};
-			for (const entry of sorted) {
-				sizes[entry.name] = entry.totalSize;
-				counts[entry.name] = entry.totalCount;
-			}
-
-			appInsights.setup(productJson.aiConfig.asimovKey)
-				.setAutoCollectConsole(false)
-				.setAutoCollectExceptions(false)
-				.setAutoCollectPerformance(false)
-				.setAutoCollectRequests(false)
-				.setAutoCollectDependencies(false)
-				.setAutoDependencyCorrelation(false)
-				.start();
-
-			appInsights.defaultClient.config.endpointUrl = 'https://vortex.data.microsoft.com/collect/v1';
-
-			/* __GDPR__
-				"monacoworkbench/packagemetrics" : {
-					"commit" : {"classification": "SystemMetaData", "purpose": "PerformanceAndHealth" },
-					"size" : {"classification": "SystemMetaData", "purpose": "PerformanceAndHealth" },
-					"count" : {"classification": "SystemMetaData", "purpose": "PerformanceAndHealth" }
-				}
-			*/
-			appInsights.defaultClient.trackEvent({
-				name: 'monacoworkbench/packagemetrics',
-				properties: { commit, size: JSON.stringify(sizes), count: JSON.stringify(counts) }
-			});
-
-
-			appInsights.defaultClient.flush({
-				callback: () => {
-					appInsights.dispose();
-					resolve(true);
-				}
-			});
-
-		} catch (err) {
-			console.error('ERROR sending build stats as telemetry event!');
-			console.error(err);
-			resolve(false);
-		}
-	});
-
-}
diff --git a/lib/vscode/build/lib/task.js b/lib/vscode/build/lib/task.js
deleted file mode 100644
index d08ab8acde8f..000000000000
--- a/lib/vscode/build/lib/task.js
+++ /dev/null
@@ -1,97 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-'use strict';
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.define = exports.parallel = exports.series = void 0;
-const fancyLog = require("fancy-log");
-const ansiColors = require("ansi-colors");
-function _isPromise(p) {
-    if (typeof p.then === 'function') {
-        return true;
-    }
-    return false;
-}
-function _renderTime(time) {
-    return `${Math.round(time)} ms`;
-}
-async function _execute(task) {
-    const name = task.taskName || task.displayName || `<anonymous>`;
-    if (!task._tasks) {
-        fancyLog('Starting', ansiColors.cyan(name), '...');
-    }
-    const startTime = process.hrtime();
-    await _doExecute(task);
-    const elapsedArr = process.hrtime(startTime);
-    const elapsedNanoseconds = (elapsedArr[0] * 1e9 + elapsedArr[1]);
-    if (!task._tasks) {
-        fancyLog(`Finished`, ansiColors.cyan(name), 'after', ansiColors.magenta(_renderTime(elapsedNanoseconds / 1e6)));
-    }
-}
-async function _doExecute(task) {
-    // Always invoke as if it were a callback task
-    return new Promise((resolve, reject) => {
-        if (task.length === 1) {
-            // this is a callback task
-            task((err) => {
-                if (err) {
-                    return reject(err);
-                }
-                resolve();
-            });
-            return;
-        }
-        const taskResult = task();
-        if (typeof taskResult === 'undefined') {
-            // this is a sync task
-            resolve();
-            return;
-        }
-        if (_isPromise(taskResult)) {
-            // this is a promise returning task
-            taskResult.then(resolve, reject);
-            return;
-        }
-        // this is a stream returning task
-        taskResult.on('end', _ => resolve());
-        taskResult.on('error', err => reject(err));
-    });
-}
-function series(...tasks) {
-    const result = async () => {
-        for (let i = 0; i < tasks.length; i++) {
-            await _execute(tasks[i]);
-        }
-    };
-    result._tasks = tasks;
-    return result;
-}
-exports.series = series;
-function parallel(...tasks) {
-    const result = async () => {
-        await Promise.all(tasks.map(t => _execute(t)));
-    };
-    result._tasks = tasks;
-    return result;
-}
-exports.parallel = parallel;
-function define(name, task) {
-    if (task._tasks) {
-        // This is a composite task
-        const lastTask = task._tasks[task._tasks.length - 1];
-        if (lastTask._tasks || lastTask.taskName) {
-            // This is a composite task without a real task function
-            // => generate a fake task function
-            return define(name, series(task, () => Promise.resolve()));
-        }
-        lastTask.taskName = name;
-        task.displayName = name;
-        return task;
-    }
-    // This is a simple task
-    task.taskName = name;
-    task.displayName = name;
-    return task;
-}
-exports.define = define;
diff --git a/lib/vscode/build/lib/task.ts b/lib/vscode/build/lib/task.ts
deleted file mode 100644
index 4e571ec9294c..000000000000
--- a/lib/vscode/build/lib/task.ts
+++ /dev/null
@@ -1,125 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-'use strict';
-
-import * as fancyLog from 'fancy-log';
-import * as ansiColors from 'ansi-colors';
-
-export interface BaseTask {
-	displayName?: string;
-	taskName?: string;
-	_tasks?: Task[];
-}
-export interface PromiseTask extends BaseTask {
-	(): Promise<void>;
-}
-export interface StreamTask extends BaseTask {
-	(): NodeJS.ReadWriteStream;
-}
-export interface CallbackTask extends BaseTask {
-	(cb?: (err?: any) => void): void;
-}
-
-export type Task = PromiseTask | StreamTask | CallbackTask;
-
-function _isPromise(p: Promise<void> | NodeJS.ReadWriteStream): p is Promise<void> {
-	if (typeof (<any>p).then === 'function') {
-		return true;
-	}
-	return false;
-}
-
-function _renderTime(time: number): string {
-	return `${Math.round(time)} ms`;
-}
-
-async function _execute(task: Task): Promise<void> {
-	const name = task.taskName || task.displayName || `<anonymous>`;
-	if (!task._tasks) {
-		fancyLog('Starting', ansiColors.cyan(name), '...');
-	}
-	const startTime = process.hrtime();
-	await _doExecute(task);
-	const elapsedArr = process.hrtime(startTime);
-	const elapsedNanoseconds = (elapsedArr[0] * 1e9 + elapsedArr[1]);
-	if (!task._tasks) {
-		fancyLog(`Finished`, ansiColors.cyan(name), 'after', ansiColors.magenta(_renderTime(elapsedNanoseconds / 1e6)));
-	}
-}
-
-async function _doExecute(task: Task): Promise<void> {
-	// Always invoke as if it were a callback task
-	return new Promise((resolve, reject) => {
-		if (task.length === 1) {
-			// this is a callback task
-			task((err) => {
-				if (err) {
-					return reject(err);
-				}
-				resolve();
-			});
-			return;
-		}
-
-		const taskResult = task();
-
-		if (typeof taskResult === 'undefined') {
-			// this is a sync task
-			resolve();
-			return;
-		}
-
-		if (_isPromise(taskResult)) {
-			// this is a promise returning task
-			taskResult.then(resolve, reject);
-			return;
-		}
-
-		// this is a stream returning task
-		taskResult.on('end', _ => resolve());
-		taskResult.on('error', err => reject(err));
-	});
-}
-
-export function series(...tasks: Task[]): PromiseTask {
-	const result = async () => {
-		for (let i = 0; i < tasks.length; i++) {
-			await _execute(tasks[i]);
-		}
-	};
-	result._tasks = tasks;
-	return result;
-}
-
-export function parallel(...tasks: Task[]): PromiseTask {
-	const result = async () => {
-		await Promise.all(tasks.map(t => _execute(t)));
-	};
-	result._tasks = tasks;
-	return result;
-}
-
-export function define(name: string, task: Task): Task {
-	if (task._tasks) {
-		// This is a composite task
-		const lastTask = task._tasks[task._tasks.length - 1];
-
-		if (lastTask._tasks || lastTask.taskName) {
-			// This is a composite task without a real task function
-			// => generate a fake task function
-			return define(name, series(task, () => Promise.resolve()));
-		}
-
-		lastTask.taskName = name;
-		task.displayName = name;
-		return task;
-	}
-
-	// This is a simple task
-	task.taskName = name;
-	task.displayName = name;
-	return task;
-}
diff --git a/lib/vscode/build/lib/test/i18n.test.js b/lib/vscode/build/lib/test/i18n.test.js
deleted file mode 100644
index 4d339c120a9d..000000000000
--- a/lib/vscode/build/lib/test/i18n.test.js
+++ /dev/null
@@ -1,40 +0,0 @@
-"use strict";
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-Object.defineProperty(exports, "__esModule", { value: true });
-const assert = require("assert");
-const i18n = require("../i18n");
-suite('XLF Parser Tests', () => {
-    const sampleXlf = '<?xml version="1.0" encoding="utf-8"?><xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2"><file original="vs/base/common/keybinding" source-language="en" datatype="plaintext"><body><trans-unit id="key1"><source xml:lang="en">Key #1</source></trans-unit><trans-unit id="key2"><source xml:lang="en">Key #2 &amp;</source></trans-unit></body></file></xliff>';
-    const sampleTranslatedXlf = '<?xml version="1.0" encoding="utf-8"?><xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2"><file original="vs/base/common/keybinding" source-language="en" target-language="ru" datatype="plaintext"><body><trans-unit id="key1"><source xml:lang="en">Key #1</source><target>Кнопка #1</target></trans-unit><trans-unit id="key2"><source xml:lang="en">Key #2 &amp;</source><target>Кнопка #2 &amp;</target></trans-unit></body></file></xliff>';
-    const originalFilePath = 'vs/base/common/keybinding';
-    const keys = ['key1', 'key2'];
-    const messages = ['Key #1', 'Key #2 &'];
-    const translatedMessages = { key1: 'Кнопка #1', key2: 'Кнопка #2 &' };
-    test('Keys & messages to XLF conversion', () => {
-        const xlf = new i18n.XLF('vscode-workbench');
-        xlf.addFile(originalFilePath, keys, messages);
-        const xlfString = xlf.toString();
-        assert.strictEqual(xlfString.replace(/\s{2,}/g, ''), sampleXlf);
-    });
-    test('XLF to keys & messages conversion', () => {
-        i18n.XLF.parse(sampleTranslatedXlf).then(function (resolvedFiles) {
-            assert.deepStrictEqual(resolvedFiles[0].messages, translatedMessages);
-            assert.strictEqual(resolvedFiles[0].originalFilePath, originalFilePath);
-        });
-    });
-    test('JSON file source path to Transifex resource match', () => {
-        const editorProject = 'vscode-editor', workbenchProject = 'vscode-workbench';
-        const platform = { name: 'vs/platform', project: editorProject }, editorContrib = { name: 'vs/editor/contrib', project: editorProject }, editor = { name: 'vs/editor', project: editorProject }, base = { name: 'vs/base', project: editorProject }, code = { name: 'vs/code', project: workbenchProject }, workbenchParts = { name: 'vs/workbench/contrib/html', project: workbenchProject }, workbenchServices = { name: 'vs/workbench/services/textfile', project: workbenchProject }, workbench = { name: 'vs/workbench', project: workbenchProject };
-        assert.deepStrictEqual(i18n.getResource('vs/platform/actions/browser/menusExtensionPoint'), platform);
-        assert.deepStrictEqual(i18n.getResource('vs/editor/contrib/clipboard/browser/clipboard'), editorContrib);
-        assert.deepStrictEqual(i18n.getResource('vs/editor/common/modes/modesRegistry'), editor);
-        assert.deepStrictEqual(i18n.getResource('vs/base/common/errorMessage'), base);
-        assert.deepStrictEqual(i18n.getResource('vs/code/electron-main/window'), code);
-        assert.deepStrictEqual(i18n.getResource('vs/workbench/contrib/html/browser/webview'), workbenchParts);
-        assert.deepStrictEqual(i18n.getResource('vs/workbench/services/textfile/node/testFileService'), workbenchServices);
-        assert.deepStrictEqual(i18n.getResource('vs/workbench/browser/parts/panel/panelActions'), workbench);
-    });
-});
diff --git a/lib/vscode/build/lib/test/i18n.test.ts b/lib/vscode/build/lib/test/i18n.test.ts
deleted file mode 100644
index ab0924c43509..000000000000
--- a/lib/vscode/build/lib/test/i18n.test.ts
+++ /dev/null
@@ -1,54 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-import assert = require('assert');
-import i18n = require('../i18n');
-
-suite('XLF Parser Tests', () => {
-	const sampleXlf = '<?xml version="1.0" encoding="utf-8"?><xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2"><file original="vs/base/common/keybinding" source-language="en" datatype="plaintext"><body><trans-unit id="key1"><source xml:lang="en">Key #1</source></trans-unit><trans-unit id="key2"><source xml:lang="en">Key #2 &amp;</source></trans-unit></body></file></xliff>';
-	const sampleTranslatedXlf = '<?xml version="1.0" encoding="utf-8"?><xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2"><file original="vs/base/common/keybinding" source-language="en" target-language="ru" datatype="plaintext"><body><trans-unit id="key1"><source xml:lang="en">Key #1</source><target>Кнопка #1</target></trans-unit><trans-unit id="key2"><source xml:lang="en">Key #2 &amp;</source><target>Кнопка #2 &amp;</target></trans-unit></body></file></xliff>';
-	const originalFilePath = 'vs/base/common/keybinding';
-	const keys = ['key1', 'key2'];
-	const messages = ['Key #1', 'Key #2 &'];
-	const translatedMessages = { key1: 'Кнопка #1', key2: 'Кнопка #2 &' };
-
-	test('Keys & messages to XLF conversion', () => {
-		const xlf = new i18n.XLF('vscode-workbench');
-		xlf.addFile(originalFilePath, keys, messages);
-		const xlfString = xlf.toString();
-
-		assert.strictEqual(xlfString.replace(/\s{2,}/g, ''), sampleXlf);
-	});
-
-	test('XLF to keys & messages conversion', () => {
-		i18n.XLF.parse(sampleTranslatedXlf).then(function (resolvedFiles) {
-			assert.deepStrictEqual(resolvedFiles[0].messages, translatedMessages);
-			assert.strictEqual(resolvedFiles[0].originalFilePath, originalFilePath);
-		});
-	});
-
-	test('JSON file source path to Transifex resource match', () => {
-		const editorProject: string = 'vscode-editor',
-			workbenchProject: string = 'vscode-workbench';
-
-		const platform: i18n.Resource = { name: 'vs/platform', project: editorProject },
-			editorContrib = { name: 'vs/editor/contrib', project: editorProject },
-			editor = { name: 'vs/editor', project: editorProject },
-			base = { name: 'vs/base', project: editorProject },
-			code = { name: 'vs/code', project: workbenchProject },
-			workbenchParts = { name: 'vs/workbench/contrib/html', project: workbenchProject },
-			workbenchServices = { name: 'vs/workbench/services/textfile', project: workbenchProject },
-			workbench = { name: 'vs/workbench', project: workbenchProject };
-
-		assert.deepStrictEqual(i18n.getResource('vs/platform/actions/browser/menusExtensionPoint'), platform);
-		assert.deepStrictEqual(i18n.getResource('vs/editor/contrib/clipboard/browser/clipboard'), editorContrib);
-		assert.deepStrictEqual(i18n.getResource('vs/editor/common/modes/modesRegistry'), editor);
-		assert.deepStrictEqual(i18n.getResource('vs/base/common/errorMessage'), base);
-		assert.deepStrictEqual(i18n.getResource('vs/code/electron-main/window'), code);
-		assert.deepStrictEqual(i18n.getResource('vs/workbench/contrib/html/browser/webview'), workbenchParts);
-		assert.deepStrictEqual(i18n.getResource('vs/workbench/services/textfile/node/testFileService'), workbenchServices);
-		assert.deepStrictEqual(i18n.getResource('vs/workbench/browser/parts/panel/panelActions'), workbench);
-	});
-});
diff --git a/lib/vscode/build/lib/treeshaking.js b/lib/vscode/build/lib/treeshaking.js
deleted file mode 100644
index 41cb33809b04..000000000000
--- a/lib/vscode/build/lib/treeshaking.js
+++ /dev/null
@@ -1,783 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-'use strict';
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.shake = exports.toStringShakeLevel = exports.ShakeLevel = void 0;
-const fs = require("fs");
-const path = require("path");
-const TYPESCRIPT_LIB_FOLDER = path.dirname(require.resolve('typescript/lib/lib.d.ts'));
-var ShakeLevel;
-(function (ShakeLevel) {
-    ShakeLevel[ShakeLevel["Files"] = 0] = "Files";
-    ShakeLevel[ShakeLevel["InnerFile"] = 1] = "InnerFile";
-    ShakeLevel[ShakeLevel["ClassMembers"] = 2] = "ClassMembers";
-})(ShakeLevel = exports.ShakeLevel || (exports.ShakeLevel = {}));
-function toStringShakeLevel(shakeLevel) {
-    switch (shakeLevel) {
-        case 0 /* Files */:
-            return 'Files (0)';
-        case 1 /* InnerFile */:
-            return 'InnerFile (1)';
-        case 2 /* ClassMembers */:
-            return 'ClassMembers (2)';
-    }
-}
-exports.toStringShakeLevel = toStringShakeLevel;
-function printDiagnostics(options, diagnostics) {
-    for (const diag of diagnostics) {
-        let result = '';
-        if (diag.file) {
-            result += `${path.join(options.sourcesRoot, diag.file.fileName)}`;
-        }
-        if (diag.file && diag.start) {
-            let location = diag.file.getLineAndCharacterOfPosition(diag.start);
-            result += `:${location.line + 1}:${location.character}`;
-        }
-        result += ` - ` + JSON.stringify(diag.messageText);
-        console.log(result);
-    }
-}
-function shake(options) {
-    const ts = require('typescript');
-    const languageService = createTypeScriptLanguageService(ts, options);
-    const program = languageService.getProgram();
-    const globalDiagnostics = program.getGlobalDiagnostics();
-    if (globalDiagnostics.length > 0) {
-        printDiagnostics(options, globalDiagnostics);
-        throw new Error(`Compilation Errors encountered.`);
-    }
-    const syntacticDiagnostics = program.getSyntacticDiagnostics();
-    if (syntacticDiagnostics.length > 0) {
-        printDiagnostics(options, syntacticDiagnostics);
-        throw new Error(`Compilation Errors encountered.`);
-    }
-    const semanticDiagnostics = program.getSemanticDiagnostics();
-    if (semanticDiagnostics.length > 0) {
-        printDiagnostics(options, semanticDiagnostics);
-        throw new Error(`Compilation Errors encountered.`);
-    }
-    markNodes(ts, languageService, options);
-    return generateResult(ts, languageService, options.shakeLevel);
-}
-exports.shake = shake;
-//#region Discovery, LanguageService & Setup
-function createTypeScriptLanguageService(ts, options) {
-    // Discover referenced files
-    const FILES = discoverAndReadFiles(ts, options);
-    // Add fake usage files
-    options.inlineEntryPoints.forEach((inlineEntryPoint, index) => {
-        FILES[`inlineEntryPoint.${index}.ts`] = inlineEntryPoint;
-    });
-    // Add additional typings
-    options.typings.forEach((typing) => {
-        const filePath = path.join(options.sourcesRoot, typing);
-        FILES[typing] = fs.readFileSync(filePath).toString();
-    });
-    // Resolve libs
-    const RESOLVED_LIBS = processLibFiles(ts, options);
-    const compilerOptions = ts.convertCompilerOptionsFromJson(options.compilerOptions, options.sourcesRoot).options;
-    const host = new TypeScriptLanguageServiceHost(ts, RESOLVED_LIBS, FILES, compilerOptions);
-    return ts.createLanguageService(host);
-}
-/**
- * Read imports and follow them until all files have been handled
- */
-function discoverAndReadFiles(ts, options) {
-    const FILES = {};
-    const in_queue = Object.create(null);
-    const queue = [];
-    const enqueue = (moduleId) => {
-        if (in_queue[moduleId]) {
-            return;
-        }
-        in_queue[moduleId] = true;
-        queue.push(moduleId);
-    };
-    options.entryPoints.forEach((entryPoint) => enqueue(entryPoint));
-    while (queue.length > 0) {
-        const moduleId = queue.shift();
-        const dts_filename = path.join(options.sourcesRoot, moduleId + '.d.ts');
-        if (fs.existsSync(dts_filename)) {
-            const dts_filecontents = fs.readFileSync(dts_filename).toString();
-            FILES[`${moduleId}.d.ts`] = dts_filecontents;
-            continue;
-        }
-        const js_filename = path.join(options.sourcesRoot, moduleId + '.js');
-        if (fs.existsSync(js_filename)) {
-            // This is an import for a .js file, so ignore it...
-            continue;
-        }
-        let ts_filename;
-        if (options.redirects[moduleId]) {
-            ts_filename = path.join(options.sourcesRoot, options.redirects[moduleId] + '.ts');
-        }
-        else {
-            ts_filename = path.join(options.sourcesRoot, moduleId + '.ts');
-        }
-        const ts_filecontents = fs.readFileSync(ts_filename).toString();
-        const info = ts.preProcessFile(ts_filecontents);
-        for (let i = info.importedFiles.length - 1; i >= 0; i--) {
-            const importedFileName = info.importedFiles[i].fileName;
-            if (options.importIgnorePattern.test(importedFileName)) {
-                // Ignore vs/css! imports
-                continue;
-            }
-            let importedModuleId = importedFileName;
-            if (/(^\.\/)|(^\.\.\/)/.test(importedModuleId)) {
-                importedModuleId = path.join(path.dirname(moduleId), importedModuleId);
-            }
-            enqueue(importedModuleId);
-        }
-        FILES[`${moduleId}.ts`] = ts_filecontents;
-    }
-    return FILES;
-}
-/**
- * Read lib files and follow lib references
- */
-function processLibFiles(ts, options) {
-    const stack = [...options.compilerOptions.lib];
-    const result = {};
-    while (stack.length > 0) {
-        const filename = `lib.${stack.shift().toLowerCase()}.d.ts`;
-        const key = `defaultLib:${filename}`;
-        if (!result[key]) {
-            // add this file
-            const filepath = path.join(TYPESCRIPT_LIB_FOLDER, filename);
-            const sourceText = fs.readFileSync(filepath).toString();
-            result[key] = sourceText;
-            // precess dependencies and "recurse"
-            const info = ts.preProcessFile(sourceText);
-            for (let ref of info.libReferenceDirectives) {
-                stack.push(ref.fileName);
-            }
-        }
-    }
-    return result;
-}
-/**
- * A TypeScript language service host
- */
-class TypeScriptLanguageServiceHost {
-    constructor(ts, libs, files, compilerOptions) {
-        this._ts = ts;
-        this._libs = libs;
-        this._files = files;
-        this._compilerOptions = compilerOptions;
-    }
-    // --- language service host ---------------
-    getCompilationSettings() {
-        return this._compilerOptions;
-    }
-    getScriptFileNames() {
-        return ([]
-            .concat(Object.keys(this._libs))
-            .concat(Object.keys(this._files)));
-    }
-    getScriptVersion(_fileName) {
-        return '1';
-    }
-    getProjectVersion() {
-        return '1';
-    }
-    getScriptSnapshot(fileName) {
-        if (this._files.hasOwnProperty(fileName)) {
-            return this._ts.ScriptSnapshot.fromString(this._files[fileName]);
-        }
-        else if (this._libs.hasOwnProperty(fileName)) {
-            return this._ts.ScriptSnapshot.fromString(this._libs[fileName]);
-        }
-        else {
-            return this._ts.ScriptSnapshot.fromString('');
-        }
-    }
-    getScriptKind(_fileName) {
-        return this._ts.ScriptKind.TS;
-    }
-    getCurrentDirectory() {
-        return '';
-    }
-    getDefaultLibFileName(_options) {
-        return 'defaultLib:lib.d.ts';
-    }
-    isDefaultLibFileName(fileName) {
-        return fileName === this.getDefaultLibFileName(this._compilerOptions);
-    }
-}
-//#endregion
-//#region Tree Shaking
-var NodeColor;
-(function (NodeColor) {
-    NodeColor[NodeColor["White"] = 0] = "White";
-    NodeColor[NodeColor["Gray"] = 1] = "Gray";
-    NodeColor[NodeColor["Black"] = 2] = "Black";
-})(NodeColor || (NodeColor = {}));
-function getColor(node) {
-    return node.$$$color || 0 /* White */;
-}
-function setColor(node, color) {
-    node.$$$color = color;
-}
-function nodeOrParentIsBlack(node) {
-    while (node) {
-        const color = getColor(node);
-        if (color === 2 /* Black */) {
-            return true;
-        }
-        node = node.parent;
-    }
-    return false;
-}
-function nodeOrChildIsBlack(node) {
-    if (getColor(node) === 2 /* Black */) {
-        return true;
-    }
-    for (const child of node.getChildren()) {
-        if (nodeOrChildIsBlack(child)) {
-            return true;
-        }
-    }
-    return false;
-}
-function isSymbolWithDeclarations(symbol) {
-    return !!(symbol && symbol.declarations);
-}
-function markNodes(ts, languageService, options) {
-    const program = languageService.getProgram();
-    if (!program) {
-        throw new Error('Could not get program from language service');
-    }
-    if (options.shakeLevel === 0 /* Files */) {
-        // Mark all source files Black
-        program.getSourceFiles().forEach((sourceFile) => {
-            setColor(sourceFile, 2 /* Black */);
-        });
-        return;
-    }
-    const black_queue = [];
-    const gray_queue = [];
-    const export_import_queue = [];
-    const sourceFilesLoaded = {};
-    function enqueueTopLevelModuleStatements(sourceFile) {
-        sourceFile.forEachChild((node) => {
-            if (ts.isImportDeclaration(node)) {
-                if (!node.importClause && ts.isStringLiteral(node.moduleSpecifier)) {
-                    setColor(node, 2 /* Black */);
-                    enqueueImport(node, node.moduleSpecifier.text);
-                }
-                return;
-            }
-            if (ts.isExportDeclaration(node)) {
-                if (!node.exportClause && node.moduleSpecifier && ts.isStringLiteral(node.moduleSpecifier)) {
-                    // export * from "foo";
-                    setColor(node, 2 /* Black */);
-                    enqueueImport(node, node.moduleSpecifier.text);
-                }
-                if (node.exportClause && ts.isNamedExports(node.exportClause)) {
-                    for (const exportSpecifier of node.exportClause.elements) {
-                        export_import_queue.push(exportSpecifier);
-                    }
-                }
-                return;
-            }
-            if (ts.isExpressionStatement(node)
-                || ts.isIfStatement(node)
-                || ts.isIterationStatement(node, true)
-                || ts.isExportAssignment(node)) {
-                enqueue_black(node);
-            }
-            if (ts.isImportEqualsDeclaration(node)) {
-                if (/export/.test(node.getFullText(sourceFile))) {
-                    // e.g. "export import Severity = BaseSeverity;"
-                    enqueue_black(node);
-                }
-            }
-        });
-    }
-    function enqueue_gray(node) {
-        if (nodeOrParentIsBlack(node) || getColor(node) === 1 /* Gray */) {
-            return;
-        }
-        setColor(node, 1 /* Gray */);
-        gray_queue.push(node);
-    }
-    function enqueue_black(node) {
-        const previousColor = getColor(node);
-        if (previousColor === 2 /* Black */) {
-            return;
-        }
-        if (previousColor === 1 /* Gray */) {
-            // remove from gray queue
-            gray_queue.splice(gray_queue.indexOf(node), 1);
-            setColor(node, 0 /* White */);
-            // add to black queue
-            enqueue_black(node);
-            // move from one queue to the other
-            // black_queue.push(node);
-            // setColor(node, NodeColor.Black);
-            return;
-        }
-        if (nodeOrParentIsBlack(node)) {
-            return;
-        }
-        const fileName = node.getSourceFile().fileName;
-        if (/^defaultLib:/.test(fileName) || /\.d\.ts$/.test(fileName)) {
-            setColor(node, 2 /* Black */);
-            return;
-        }
-        const sourceFile = node.getSourceFile();
-        if (!sourceFilesLoaded[sourceFile.fileName]) {
-            sourceFilesLoaded[sourceFile.fileName] = true;
-            enqueueTopLevelModuleStatements(sourceFile);
-        }
-        if (ts.isSourceFile(node)) {
-            return;
-        }
-        setColor(node, 2 /* Black */);
-        black_queue.push(node);
-        if (options.shakeLevel === 2 /* ClassMembers */ && (ts.isMethodDeclaration(node) || ts.isMethodSignature(node) || ts.isPropertySignature(node) || ts.isPropertyDeclaration(node) || ts.isGetAccessor(node) || ts.isSetAccessor(node))) {
-            const references = languageService.getReferencesAtPosition(node.getSourceFile().fileName, node.name.pos + node.name.getLeadingTriviaWidth());
-            if (references) {
-                for (let i = 0, len = references.length; i < len; i++) {
-                    const reference = references[i];
-                    const referenceSourceFile = program.getSourceFile(reference.fileName);
-                    if (!referenceSourceFile) {
-                        continue;
-                    }
-                    const referenceNode = getTokenAtPosition(ts, referenceSourceFile, reference.textSpan.start, false, false);
-                    if (ts.isMethodDeclaration(referenceNode.parent)
-                        || ts.isPropertyDeclaration(referenceNode.parent)
-                        || ts.isGetAccessor(referenceNode.parent)
-                        || ts.isSetAccessor(referenceNode.parent)) {
-                        enqueue_gray(referenceNode.parent);
-                    }
-                }
-            }
-        }
-    }
-    function enqueueFile(filename) {
-        const sourceFile = program.getSourceFile(filename);
-        if (!sourceFile) {
-            console.warn(`Cannot find source file ${filename}`);
-            return;
-        }
-        enqueue_black(sourceFile);
-    }
-    function enqueueImport(node, importText) {
-        if (options.importIgnorePattern.test(importText)) {
-            // this import should be ignored
-            return;
-        }
-        const nodeSourceFile = node.getSourceFile();
-        let fullPath;
-        if (/(^\.\/)|(^\.\.\/)/.test(importText)) {
-            fullPath = path.join(path.dirname(nodeSourceFile.fileName), importText) + '.ts';
-        }
-        else {
-            fullPath = importText + '.ts';
-        }
-        enqueueFile(fullPath);
-    }
-    options.entryPoints.forEach(moduleId => enqueueFile(moduleId + '.ts'));
-    // Add fake usage files
-    options.inlineEntryPoints.forEach((_, index) => enqueueFile(`inlineEntryPoint.${index}.ts`));
-    let step = 0;
-    const checker = program.getTypeChecker();
-    while (black_queue.length > 0 || gray_queue.length > 0) {
-        ++step;
-        let node;
-        if (step % 100 === 0) {
-            console.log(`Treeshaking - ${Math.floor(100 * step / (step + black_queue.length + gray_queue.length))}% - ${step}/${step + black_queue.length + gray_queue.length} (${black_queue.length}, ${gray_queue.length})`);
-        }
-        if (black_queue.length === 0) {
-            for (let i = 0; i < gray_queue.length; i++) {
-                const node = gray_queue[i];
-                const nodeParent = node.parent;
-                if ((ts.isClassDeclaration(nodeParent) || ts.isInterfaceDeclaration(nodeParent)) && nodeOrChildIsBlack(nodeParent)) {
-                    gray_queue.splice(i, 1);
-                    black_queue.push(node);
-                    setColor(node, 2 /* Black */);
-                    i--;
-                }
-            }
-        }
-        if (black_queue.length > 0) {
-            node = black_queue.shift();
-        }
-        else {
-            // only gray nodes remaining...
-            break;
-        }
-        const nodeSourceFile = node.getSourceFile();
-        const loop = (node) => {
-            const [symbol, symbolImportNode] = getRealNodeSymbol(ts, checker, node);
-            if (symbolImportNode) {
-                setColor(symbolImportNode, 2 /* Black */);
-            }
-            if (isSymbolWithDeclarations(symbol) && !nodeIsInItsOwnDeclaration(nodeSourceFile, node, symbol)) {
-                for (let i = 0, len = symbol.declarations.length; i < len; i++) {
-                    const declaration = symbol.declarations[i];
-                    if (ts.isSourceFile(declaration)) {
-                        // Do not enqueue full source files
-                        // (they can be the declaration of a module import)
-                        continue;
-                    }
-                    if (options.shakeLevel === 2 /* ClassMembers */ && (ts.isClassDeclaration(declaration) || ts.isInterfaceDeclaration(declaration)) && !isLocalCodeExtendingOrInheritingFromDefaultLibSymbol(ts, program, checker, declaration)) {
-                        enqueue_black(declaration.name);
-                        for (let j = 0; j < declaration.members.length; j++) {
-                            const member = declaration.members[j];
-                            const memberName = member.name ? member.name.getText() : null;
-                            if (ts.isConstructorDeclaration(member)
-                                || ts.isConstructSignatureDeclaration(member)
-                                || ts.isIndexSignatureDeclaration(member)
-                                || ts.isCallSignatureDeclaration(member)
-                                || memberName === '[Symbol.iterator]'
-                                || memberName === '[Symbol.toStringTag]'
-                                || memberName === 'toJSON'
-                                || memberName === 'toString'
-                                || memberName === 'dispose' // TODO: keeping all `dispose` methods
-                                || /^_(.*)Brand$/.test(memberName || '') // TODO: keeping all members ending with `Brand`...
-                            ) {
-                                enqueue_black(member);
-                            }
-                        }
-                        // queue the heritage clauses
-                        if (declaration.heritageClauses) {
-                            for (let heritageClause of declaration.heritageClauses) {
-                                enqueue_black(heritageClause);
-                            }
-                        }
-                    }
-                    else {
-                        enqueue_black(declaration);
-                    }
-                }
-            }
-            node.forEachChild(loop);
-        };
-        node.forEachChild(loop);
-    }
-    while (export_import_queue.length > 0) {
-        const node = export_import_queue.shift();
-        if (nodeOrParentIsBlack(node)) {
-            continue;
-        }
-        const symbol = node.symbol;
-        if (!symbol) {
-            continue;
-        }
-        const aliased = checker.getAliasedSymbol(symbol);
-        if (aliased.declarations && aliased.declarations.length > 0) {
-            if (nodeOrParentIsBlack(aliased.declarations[0]) || nodeOrChildIsBlack(aliased.declarations[0])) {
-                setColor(node, 2 /* Black */);
-            }
-        }
-    }
-}
-function nodeIsInItsOwnDeclaration(nodeSourceFile, node, symbol) {
-    for (let i = 0, len = symbol.declarations.length; i < len; i++) {
-        const declaration = symbol.declarations[i];
-        const declarationSourceFile = declaration.getSourceFile();
-        if (nodeSourceFile === declarationSourceFile) {
-            if (declaration.pos <= node.pos && node.end <= declaration.end) {
-                return true;
-            }
-        }
-    }
-    return false;
-}
-function generateResult(ts, languageService, shakeLevel) {
-    const program = languageService.getProgram();
-    if (!program) {
-        throw new Error('Could not get program from language service');
-    }
-    let result = {};
-    const writeFile = (filePath, contents) => {
-        result[filePath] = contents;
-    };
-    program.getSourceFiles().forEach((sourceFile) => {
-        const fileName = sourceFile.fileName;
-        if (/^defaultLib:/.test(fileName)) {
-            return;
-        }
-        const destination = fileName;
-        if (/\.d\.ts$/.test(fileName)) {
-            if (nodeOrChildIsBlack(sourceFile)) {
-                writeFile(destination, sourceFile.text);
-            }
-            return;
-        }
-        let text = sourceFile.text;
-        let result = '';
-        function keep(node) {
-            result += text.substring(node.pos, node.end);
-        }
-        function write(data) {
-            result += data;
-        }
-        function writeMarkedNodes(node) {
-            if (getColor(node) === 2 /* Black */) {
-                return keep(node);
-            }
-            // Always keep certain top-level statements
-            if (ts.isSourceFile(node.parent)) {
-                if (ts.isExpressionStatement(node) && ts.isStringLiteral(node.expression) && node.expression.text === 'use strict') {
-                    return keep(node);
-                }
-                if (ts.isVariableStatement(node) && nodeOrChildIsBlack(node)) {
-                    return keep(node);
-                }
-            }
-            // Keep the entire import in import * as X cases
-            if (ts.isImportDeclaration(node)) {
-                if (node.importClause && node.importClause.namedBindings) {
-                    if (ts.isNamespaceImport(node.importClause.namedBindings)) {
-                        if (getColor(node.importClause.namedBindings) === 2 /* Black */) {
-                            return keep(node);
-                        }
-                    }
-                    else {
-                        let survivingImports = [];
-                        for (const importNode of node.importClause.namedBindings.elements) {
-                            if (getColor(importNode) === 2 /* Black */) {
-                                survivingImports.push(importNode.getFullText(sourceFile));
-                            }
-                        }
-                        const leadingTriviaWidth = node.getLeadingTriviaWidth();
-                        const leadingTrivia = sourceFile.text.substr(node.pos, leadingTriviaWidth);
-                        if (survivingImports.length > 0) {
-                            if (node.importClause && node.importClause.name && getColor(node.importClause) === 2 /* Black */) {
-                                return write(`${leadingTrivia}import ${node.importClause.name.text}, {${survivingImports.join(',')} } from${node.moduleSpecifier.getFullText(sourceFile)};`);
-                            }
-                            return write(`${leadingTrivia}import {${survivingImports.join(',')} } from${node.moduleSpecifier.getFullText(sourceFile)};`);
-                        }
-                        else {
-                            if (node.importClause && node.importClause.name && getColor(node.importClause) === 2 /* Black */) {
-                                return write(`${leadingTrivia}import ${node.importClause.name.text} from${node.moduleSpecifier.getFullText(sourceFile)};`);
-                            }
-                        }
-                    }
-                }
-                else {
-                    if (node.importClause && getColor(node.importClause) === 2 /* Black */) {
-                        return keep(node);
-                    }
-                }
-            }
-            if (ts.isExportDeclaration(node)) {
-                if (node.exportClause && node.moduleSpecifier && ts.isNamedExports(node.exportClause)) {
-                    let survivingExports = [];
-                    for (const exportSpecifier of node.exportClause.elements) {
-                        if (getColor(exportSpecifier) === 2 /* Black */) {
-                            survivingExports.push(exportSpecifier.getFullText(sourceFile));
-                        }
-                    }
-                    const leadingTriviaWidth = node.getLeadingTriviaWidth();
-                    const leadingTrivia = sourceFile.text.substr(node.pos, leadingTriviaWidth);
-                    if (survivingExports.length > 0) {
-                        return write(`${leadingTrivia}export {${survivingExports.join(',')} } from${node.moduleSpecifier.getFullText(sourceFile)};`);
-                    }
-                }
-            }
-            if (shakeLevel === 2 /* ClassMembers */ && (ts.isClassDeclaration(node) || ts.isInterfaceDeclaration(node)) && nodeOrChildIsBlack(node)) {
-                let toWrite = node.getFullText();
-                for (let i = node.members.length - 1; i >= 0; i--) {
-                    const member = node.members[i];
-                    if (getColor(member) === 2 /* Black */ || !member.name) {
-                        // keep method
-                        continue;
-                    }
-                    let pos = member.pos - node.pos;
-                    let end = member.end - node.pos;
-                    toWrite = toWrite.substring(0, pos) + toWrite.substring(end);
-                }
-                return write(toWrite);
-            }
-            if (ts.isFunctionDeclaration(node)) {
-                // Do not go inside functions if they haven't been marked
-                return;
-            }
-            node.forEachChild(writeMarkedNodes);
-        }
-        if (getColor(sourceFile) !== 2 /* Black */) {
-            if (!nodeOrChildIsBlack(sourceFile)) {
-                // none of the elements are reachable => don't write this file at all!
-                return;
-            }
-            sourceFile.forEachChild(writeMarkedNodes);
-            result += sourceFile.endOfFileToken.getFullText(sourceFile);
-        }
-        else {
-            result = text;
-        }
-        writeFile(destination, result);
-    });
-    return result;
-}
-//#endregion
-//#region Utils
-function isLocalCodeExtendingOrInheritingFromDefaultLibSymbol(ts, program, checker, declaration) {
-    if (!program.isSourceFileDefaultLibrary(declaration.getSourceFile()) && declaration.heritageClauses) {
-        for (const heritageClause of declaration.heritageClauses) {
-            for (const type of heritageClause.types) {
-                const symbol = findSymbolFromHeritageType(ts, checker, type);
-                if (symbol) {
-                    const decl = symbol.valueDeclaration || (symbol.declarations && symbol.declarations[0]);
-                    if (decl && program.isSourceFileDefaultLibrary(decl.getSourceFile())) {
-                        return true;
-                    }
-                }
-            }
-        }
-    }
-    return false;
-}
-function findSymbolFromHeritageType(ts, checker, type) {
-    if (ts.isExpressionWithTypeArguments(type)) {
-        return findSymbolFromHeritageType(ts, checker, type.expression);
-    }
-    if (ts.isIdentifier(type)) {
-        return getRealNodeSymbol(ts, checker, type)[0];
-    }
-    if (ts.isPropertyAccessExpression(type)) {
-        return findSymbolFromHeritageType(ts, checker, type.name);
-    }
-    return null;
-}
-/**
- * Returns the node's symbol and the `import` node (if the symbol resolved from a different module)
- */
-function getRealNodeSymbol(ts, checker, node) {
-    const getPropertySymbolsFromContextualType = ts.getPropertySymbolsFromContextualType;
-    const getContainingObjectLiteralElement = ts.getContainingObjectLiteralElement;
-    const getNameFromPropertyName = ts.getNameFromPropertyName;
-    // Go to the original declaration for cases:
-    //
-    //   (1) when the aliased symbol was declared in the location(parent).
-    //   (2) when the aliased symbol is originating from an import.
-    //
-    function shouldSkipAlias(node, declaration) {
-        if (!ts.isShorthandPropertyAssignment(node) && node.kind !== ts.SyntaxKind.Identifier) {
-            return false;
-        }
-        if (node.parent === declaration) {
-            return true;
-        }
-        switch (declaration.kind) {
-            case ts.SyntaxKind.ImportClause:
-            case ts.SyntaxKind.ImportEqualsDeclaration:
-                return true;
-            case ts.SyntaxKind.ImportSpecifier:
-                return declaration.parent.kind === ts.SyntaxKind.NamedImports;
-            default:
-                return false;
-        }
-    }
-    if (!ts.isShorthandPropertyAssignment(node)) {
-        if (node.getChildCount() !== 0) {
-            return [null, null];
-        }
-    }
-    const { parent } = node;
-    let symbol = (ts.isShorthandPropertyAssignment(node)
-        ? checker.getShorthandAssignmentValueSymbol(node)
-        : checker.getSymbolAtLocation(node));
-    let importNode = null;
-    // If this is an alias, and the request came at the declaration location
-    // get the aliased symbol instead. This allows for goto def on an import e.g.
-    //   import {A, B} from "mod";
-    // to jump to the implementation directly.
-    if (symbol && symbol.flags & ts.SymbolFlags.Alias && symbol.declarations && shouldSkipAlias(node, symbol.declarations[0])) {
-        const aliased = checker.getAliasedSymbol(symbol);
-        if (aliased.declarations) {
-            // We should mark the import as visited
-            importNode = symbol.declarations[0];
-            symbol = aliased;
-        }
-    }
-    if (symbol) {
-        // Because name in short-hand property assignment has two different meanings: property name and property value,
-        // using go-to-definition at such position should go to the variable declaration of the property value rather than
-        // go to the declaration of the property name (in this case stay at the same position). However, if go-to-definition
-        // is performed at the location of property access, we would like to go to definition of the property in the short-hand
-        // assignment. This case and others are handled by the following code.
-        if (node.parent.kind === ts.SyntaxKind.ShorthandPropertyAssignment) {
-            symbol = checker.getShorthandAssignmentValueSymbol(symbol.valueDeclaration);
-        }
-        // If the node is the name of a BindingElement within an ObjectBindingPattern instead of just returning the
-        // declaration the symbol (which is itself), we should try to get to the original type of the ObjectBindingPattern
-        // and return the property declaration for the referenced property.
-        // For example:
-        //      import('./foo').then(({ b/*goto*/ar }) => undefined); => should get use to the declaration in file "./foo"
-        //
-        //      function bar<T>(onfulfilled: (value: T) => void) { //....}
-        //      interface Test {
-        //          pr/*destination*/op1: number
-        //      }
-        //      bar<Test>(({pr/*goto*/op1})=>{});
-        if (ts.isPropertyName(node) && ts.isBindingElement(parent) && ts.isObjectBindingPattern(parent.parent) &&
-            (node === (parent.propertyName || parent.name))) {
-            const name = getNameFromPropertyName(node);
-            const type = checker.getTypeAtLocation(parent.parent);
-            if (name && type) {
-                if (type.isUnion()) {
-                    const prop = type.types[0].getProperty(name);
-                    if (prop) {
-                        symbol = prop;
-                    }
-                }
-                else {
-                    const prop = type.getProperty(name);
-                    if (prop) {
-                        symbol = prop;
-                    }
-                }
-            }
-        }
-        // If the current location we want to find its definition is in an object literal, try to get the contextual type for the
-        // object literal, lookup the property symbol in the contextual type, and use this for goto-definition.
-        // For example
-        //      interface Props{
-        //          /*first*/prop1: number
-        //          prop2: boolean
-        //      }
-        //      function Foo(arg: Props) {}
-        //      Foo( { pr/*1*/op1: 10, prop2: false })
-        const element = getContainingObjectLiteralElement(node);
-        if (element) {
-            const contextualType = element && checker.getContextualType(element.parent);
-            if (contextualType) {
-                const propertySymbols = getPropertySymbolsFromContextualType(element, checker, contextualType, /*unionSymbolOk*/ false);
-                if (propertySymbols) {
-                    symbol = propertySymbols[0];
-                }
-            }
-        }
-    }
-    if (symbol && symbol.declarations) {
-        return [symbol, importNode];
-    }
-    return [null, null];
-}
-/** Get the token whose text contains the position */
-function getTokenAtPosition(ts, sourceFile, position, allowPositionInLeadingTrivia, includeEndPosition) {
-    let current = sourceFile;
-    outer: while (true) {
-        // find the child that contains 'position'
-        for (const child of current.getChildren()) {
-            const start = allowPositionInLeadingTrivia ? child.getFullStart() : child.getStart(sourceFile, /*includeJsDoc*/ true);
-            if (start > position) {
-                // If this child begins after position, then all subsequent children will as well.
-                break;
-            }
-            const end = child.getEnd();
-            if (position < end || (position === end && (child.kind === ts.SyntaxKind.EndOfFileToken || includeEndPosition))) {
-                current = child;
-                continue outer;
-            }
-        }
-        return current;
-    }
-}
diff --git a/lib/vscode/build/lib/treeshaking.ts b/lib/vscode/build/lib/treeshaking.ts
deleted file mode 100644
index f24b31e26ac9..000000000000
--- a/lib/vscode/build/lib/treeshaking.ts
+++ /dev/null
@@ -1,945 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-'use strict';
-
-import * as fs from 'fs';
-import * as path from 'path';
-import type * as ts from 'typescript';
-
-const TYPESCRIPT_LIB_FOLDER = path.dirname(require.resolve('typescript/lib/lib.d.ts'));
-
-export const enum ShakeLevel {
-	Files = 0,
-	InnerFile = 1,
-	ClassMembers = 2
-}
-
-export function toStringShakeLevel(shakeLevel: ShakeLevel): string {
-	switch (shakeLevel) {
-		case ShakeLevel.Files:
-			return 'Files (0)';
-		case ShakeLevel.InnerFile:
-			return 'InnerFile (1)';
-		case ShakeLevel.ClassMembers:
-			return 'ClassMembers (2)';
-	}
-}
-
-export interface ITreeShakingOptions {
-	/**
-	 * The full path to the root where sources are.
-	 */
-	sourcesRoot: string;
-	/**
-	 * Module ids.
-	 * e.g. `vs/editor/editor.main` or `index`
-	 */
-	entryPoints: string[];
-	/**
-	 * Inline usages.
-	 */
-	inlineEntryPoints: string[];
-	/**
-	 * Other .d.ts files
-	 */
-	typings: string[];
-	/**
-	 * TypeScript compiler options.
-	 */
-	compilerOptions?: any;
-	/**
-	 * The shake level to perform.
-	 */
-	shakeLevel: ShakeLevel;
-	/**
-	 * regex pattern to ignore certain imports e.g. `vs/css!` imports
-	 */
-	importIgnorePattern: RegExp;
-
-	redirects: { [module: string]: string; };
-}
-
-export interface ITreeShakingResult {
-	[file: string]: string;
-}
-
-function printDiagnostics(options: ITreeShakingOptions, diagnostics: ReadonlyArray<ts.Diagnostic>): void {
-	for (const diag of diagnostics) {
-		let result = '';
-		if (diag.file) {
-			result += `${path.join(options.sourcesRoot, diag.file.fileName)}`;
-		}
-		if (diag.file && diag.start) {
-			let location = diag.file.getLineAndCharacterOfPosition(diag.start);
-			result += `:${location.line + 1}:${location.character}`;
-		}
-		result += ` - ` + JSON.stringify(diag.messageText);
-		console.log(result);
-	}
-}
-
-export function shake(options: ITreeShakingOptions): ITreeShakingResult {
-	const ts = require('typescript') as typeof import('typescript');
-	const languageService = createTypeScriptLanguageService(ts, options);
-	const program = languageService.getProgram()!;
-
-	const globalDiagnostics = program.getGlobalDiagnostics();
-	if (globalDiagnostics.length > 0) {
-		printDiagnostics(options, globalDiagnostics);
-		throw new Error(`Compilation Errors encountered.`);
-	}
-
-	const syntacticDiagnostics = program.getSyntacticDiagnostics();
-	if (syntacticDiagnostics.length > 0) {
-		printDiagnostics(options, syntacticDiagnostics);
-		throw new Error(`Compilation Errors encountered.`);
-	}
-
-	const semanticDiagnostics = program.getSemanticDiagnostics();
-	if (semanticDiagnostics.length > 0) {
-		printDiagnostics(options, semanticDiagnostics);
-		throw new Error(`Compilation Errors encountered.`);
-	}
-
-	markNodes(ts, languageService, options);
-
-	return generateResult(ts, languageService, options.shakeLevel);
-}
-
-//#region Discovery, LanguageService & Setup
-function createTypeScriptLanguageService(ts: typeof import('typescript'), options: ITreeShakingOptions): ts.LanguageService {
-	// Discover referenced files
-	const FILES = discoverAndReadFiles(ts, options);
-
-	// Add fake usage files
-	options.inlineEntryPoints.forEach((inlineEntryPoint, index) => {
-		FILES[`inlineEntryPoint.${index}.ts`] = inlineEntryPoint;
-	});
-
-	// Add additional typings
-	options.typings.forEach((typing) => {
-		const filePath = path.join(options.sourcesRoot, typing);
-		FILES[typing] = fs.readFileSync(filePath).toString();
-	});
-
-	// Resolve libs
-	const RESOLVED_LIBS = processLibFiles(ts, options);
-
-	const compilerOptions = ts.convertCompilerOptionsFromJson(options.compilerOptions, options.sourcesRoot).options;
-
-	const host = new TypeScriptLanguageServiceHost(ts, RESOLVED_LIBS, FILES, compilerOptions);
-	return ts.createLanguageService(host);
-}
-
-/**
- * Read imports and follow them until all files have been handled
- */
-function discoverAndReadFiles(ts: typeof import('typescript'), options: ITreeShakingOptions): IFileMap {
-	const FILES: IFileMap = {};
-
-	const in_queue: { [module: string]: boolean; } = Object.create(null);
-	const queue: string[] = [];
-
-	const enqueue = (moduleId: string) => {
-		if (in_queue[moduleId]) {
-			return;
-		}
-		in_queue[moduleId] = true;
-		queue.push(moduleId);
-	};
-
-	options.entryPoints.forEach((entryPoint) => enqueue(entryPoint));
-
-	while (queue.length > 0) {
-		const moduleId = queue.shift()!;
-		const dts_filename = path.join(options.sourcesRoot, moduleId + '.d.ts');
-		if (fs.existsSync(dts_filename)) {
-			const dts_filecontents = fs.readFileSync(dts_filename).toString();
-			FILES[`${moduleId}.d.ts`] = dts_filecontents;
-			continue;
-		}
-
-		const js_filename = path.join(options.sourcesRoot, moduleId + '.js');
-		if (fs.existsSync(js_filename)) {
-			// This is an import for a .js file, so ignore it...
-			continue;
-		}
-
-		let ts_filename: string;
-		if (options.redirects[moduleId]) {
-			ts_filename = path.join(options.sourcesRoot, options.redirects[moduleId] + '.ts');
-		} else {
-			ts_filename = path.join(options.sourcesRoot, moduleId + '.ts');
-		}
-		const ts_filecontents = fs.readFileSync(ts_filename).toString();
-		const info = ts.preProcessFile(ts_filecontents);
-		for (let i = info.importedFiles.length - 1; i >= 0; i--) {
-			const importedFileName = info.importedFiles[i].fileName;
-
-			if (options.importIgnorePattern.test(importedFileName)) {
-				// Ignore vs/css! imports
-				continue;
-			}
-
-			let importedModuleId = importedFileName;
-			if (/(^\.\/)|(^\.\.\/)/.test(importedModuleId)) {
-				importedModuleId = path.join(path.dirname(moduleId), importedModuleId);
-			}
-			enqueue(importedModuleId);
-		}
-
-		FILES[`${moduleId}.ts`] = ts_filecontents;
-	}
-
-	return FILES;
-}
-
-/**
- * Read lib files and follow lib references
- */
-function processLibFiles(ts: typeof import('typescript'), options: ITreeShakingOptions): ILibMap {
-
-	const stack: string[] = [...options.compilerOptions.lib];
-	const result: ILibMap = {};
-
-	while (stack.length > 0) {
-		const filename = `lib.${stack.shift()!.toLowerCase()}.d.ts`;
-		const key = `defaultLib:${filename}`;
-		if (!result[key]) {
-			// add this file
-			const filepath = path.join(TYPESCRIPT_LIB_FOLDER, filename);
-			const sourceText = fs.readFileSync(filepath).toString();
-			result[key] = sourceText;
-
-			// precess dependencies and "recurse"
-			const info = ts.preProcessFile(sourceText);
-			for (let ref of info.libReferenceDirectives) {
-				stack.push(ref.fileName);
-			}
-		}
-	}
-
-	return result;
-}
-
-interface ILibMap { [libName: string]: string; }
-interface IFileMap { [fileName: string]: string; }
-
-/**
- * A TypeScript language service host
- */
-class TypeScriptLanguageServiceHost implements ts.LanguageServiceHost {
-
-	private readonly _ts: typeof import('typescript');
-	private readonly _libs: ILibMap;
-	private readonly _files: IFileMap;
-	private readonly _compilerOptions: ts.CompilerOptions;
-
-	constructor(ts: typeof import('typescript'), libs: ILibMap, files: IFileMap, compilerOptions: ts.CompilerOptions) {
-		this._ts = ts;
-		this._libs = libs;
-		this._files = files;
-		this._compilerOptions = compilerOptions;
-	}
-
-	// --- language service host ---------------
-
-	getCompilationSettings(): ts.CompilerOptions {
-		return this._compilerOptions;
-	}
-	getScriptFileNames(): string[] {
-		return (
-			([] as string[])
-				.concat(Object.keys(this._libs))
-				.concat(Object.keys(this._files))
-		);
-	}
-	getScriptVersion(_fileName: string): string {
-		return '1';
-	}
-	getProjectVersion(): string {
-		return '1';
-	}
-	getScriptSnapshot(fileName: string): ts.IScriptSnapshot {
-		if (this._files.hasOwnProperty(fileName)) {
-			return this._ts.ScriptSnapshot.fromString(this._files[fileName]);
-		} else if (this._libs.hasOwnProperty(fileName)) {
-			return this._ts.ScriptSnapshot.fromString(this._libs[fileName]);
-		} else {
-			return this._ts.ScriptSnapshot.fromString('');
-		}
-	}
-	getScriptKind(_fileName: string): ts.ScriptKind {
-		return this._ts.ScriptKind.TS;
-	}
-	getCurrentDirectory(): string {
-		return '';
-	}
-	getDefaultLibFileName(_options: ts.CompilerOptions): string {
-		return 'defaultLib:lib.d.ts';
-	}
-	isDefaultLibFileName(fileName: string): boolean {
-		return fileName === this.getDefaultLibFileName(this._compilerOptions);
-	}
-}
-//#endregion
-
-//#region Tree Shaking
-
-const enum NodeColor {
-	White = 0,
-	Gray = 1,
-	Black = 2
-}
-
-function getColor(node: ts.Node): NodeColor {
-	return (<any>node).$$$color || NodeColor.White;
-}
-function setColor(node: ts.Node, color: NodeColor): void {
-	(<any>node).$$$color = color;
-}
-function nodeOrParentIsBlack(node: ts.Node): boolean {
-	while (node) {
-		const color = getColor(node);
-		if (color === NodeColor.Black) {
-			return true;
-		}
-		node = node.parent;
-	}
-	return false;
-}
-function nodeOrChildIsBlack(node: ts.Node): boolean {
-	if (getColor(node) === NodeColor.Black) {
-		return true;
-	}
-	for (const child of node.getChildren()) {
-		if (nodeOrChildIsBlack(child)) {
-			return true;
-		}
-	}
-	return false;
-}
-
-function isSymbolWithDeclarations(symbol: ts.Symbol | undefined | null): symbol is ts.Symbol & { declarations: ts.Declaration[] } {
-	return !!(symbol && symbol.declarations);
-}
-
-function markNodes(ts: typeof import('typescript'), languageService: ts.LanguageService, options: ITreeShakingOptions) {
-	const program = languageService.getProgram();
-	if (!program) {
-		throw new Error('Could not get program from language service');
-	}
-
-	if (options.shakeLevel === ShakeLevel.Files) {
-		// Mark all source files Black
-		program.getSourceFiles().forEach((sourceFile) => {
-			setColor(sourceFile, NodeColor.Black);
-		});
-		return;
-	}
-
-	const black_queue: ts.Node[] = [];
-	const gray_queue: ts.Node[] = [];
-	const export_import_queue: ts.Node[] = [];
-	const sourceFilesLoaded: { [fileName: string]: boolean } = {};
-
-	function enqueueTopLevelModuleStatements(sourceFile: ts.SourceFile): void {
-
-		sourceFile.forEachChild((node: ts.Node) => {
-
-			if (ts.isImportDeclaration(node)) {
-				if (!node.importClause && ts.isStringLiteral(node.moduleSpecifier)) {
-					setColor(node, NodeColor.Black);
-					enqueueImport(node, node.moduleSpecifier.text);
-				}
-				return;
-			}
-
-			if (ts.isExportDeclaration(node)) {
-				if (!node.exportClause && node.moduleSpecifier && ts.isStringLiteral(node.moduleSpecifier)) {
-					// export * from "foo";
-					setColor(node, NodeColor.Black);
-					enqueueImport(node, node.moduleSpecifier.text);
-				}
-				if (node.exportClause && ts.isNamedExports(node.exportClause)) {
-					for (const exportSpecifier of node.exportClause.elements) {
-						export_import_queue.push(exportSpecifier);
-					}
-				}
-				return;
-			}
-
-			if (
-				ts.isExpressionStatement(node)
-				|| ts.isIfStatement(node)
-				|| ts.isIterationStatement(node, true)
-				|| ts.isExportAssignment(node)
-			) {
-				enqueue_black(node);
-			}
-
-			if (ts.isImportEqualsDeclaration(node)) {
-				if (/export/.test(node.getFullText(sourceFile))) {
-					// e.g. "export import Severity = BaseSeverity;"
-					enqueue_black(node);
-				}
-			}
-
-		});
-	}
-
-	function enqueue_gray(node: ts.Node): void {
-		if (nodeOrParentIsBlack(node) || getColor(node) === NodeColor.Gray) {
-			return;
-		}
-		setColor(node, NodeColor.Gray);
-		gray_queue.push(node);
-	}
-
-	function enqueue_black(node: ts.Node): void {
-		const previousColor = getColor(node);
-
-		if (previousColor === NodeColor.Black) {
-			return;
-		}
-
-		if (previousColor === NodeColor.Gray) {
-			// remove from gray queue
-			gray_queue.splice(gray_queue.indexOf(node), 1);
-			setColor(node, NodeColor.White);
-
-			// add to black queue
-			enqueue_black(node);
-
-			// move from one queue to the other
-			// black_queue.push(node);
-			// setColor(node, NodeColor.Black);
-			return;
-		}
-
-		if (nodeOrParentIsBlack(node)) {
-			return;
-		}
-
-		const fileName = node.getSourceFile().fileName;
-		if (/^defaultLib:/.test(fileName) || /\.d\.ts$/.test(fileName)) {
-			setColor(node, NodeColor.Black);
-			return;
-		}
-
-		const sourceFile = node.getSourceFile();
-		if (!sourceFilesLoaded[sourceFile.fileName]) {
-			sourceFilesLoaded[sourceFile.fileName] = true;
-			enqueueTopLevelModuleStatements(sourceFile);
-		}
-
-		if (ts.isSourceFile(node)) {
-			return;
-		}
-
-		setColor(node, NodeColor.Black);
-		black_queue.push(node);
-
-		if (options.shakeLevel === ShakeLevel.ClassMembers && (ts.isMethodDeclaration(node) || ts.isMethodSignature(node) || ts.isPropertySignature(node) || ts.isPropertyDeclaration(node) || ts.isGetAccessor(node) || ts.isSetAccessor(node))) {
-			const references = languageService.getReferencesAtPosition(node.getSourceFile().fileName, node.name.pos + node.name.getLeadingTriviaWidth());
-			if (references) {
-				for (let i = 0, len = references.length; i < len; i++) {
-					const reference = references[i];
-					const referenceSourceFile = program!.getSourceFile(reference.fileName);
-					if (!referenceSourceFile) {
-						continue;
-					}
-
-					const referenceNode = getTokenAtPosition(ts, referenceSourceFile, reference.textSpan.start, false, false);
-					if (
-						ts.isMethodDeclaration(referenceNode.parent)
-						|| ts.isPropertyDeclaration(referenceNode.parent)
-						|| ts.isGetAccessor(referenceNode.parent)
-						|| ts.isSetAccessor(referenceNode.parent)
-					) {
-						enqueue_gray(referenceNode.parent);
-					}
-				}
-			}
-		}
-	}
-
-	function enqueueFile(filename: string): void {
-		const sourceFile = program!.getSourceFile(filename);
-		if (!sourceFile) {
-			console.warn(`Cannot find source file ${filename}`);
-			return;
-		}
-		enqueue_black(sourceFile);
-	}
-
-	function enqueueImport(node: ts.Node, importText: string): void {
-		if (options.importIgnorePattern.test(importText)) {
-			// this import should be ignored
-			return;
-		}
-
-		const nodeSourceFile = node.getSourceFile();
-		let fullPath: string;
-		if (/(^\.\/)|(^\.\.\/)/.test(importText)) {
-			fullPath = path.join(path.dirname(nodeSourceFile.fileName), importText) + '.ts';
-		} else {
-			fullPath = importText + '.ts';
-		}
-		enqueueFile(fullPath);
-	}
-
-	options.entryPoints.forEach(moduleId => enqueueFile(moduleId + '.ts'));
-	// Add fake usage files
-	options.inlineEntryPoints.forEach((_, index) => enqueueFile(`inlineEntryPoint.${index}.ts`));
-
-	let step = 0;
-
-	const checker = program.getTypeChecker();
-	while (black_queue.length > 0 || gray_queue.length > 0) {
-		++step;
-		let node: ts.Node;
-
-		if (step % 100 === 0) {
-			console.log(`Treeshaking - ${Math.floor(100 * step / (step + black_queue.length + gray_queue.length))}% - ${step}/${step + black_queue.length + gray_queue.length} (${black_queue.length}, ${gray_queue.length})`);
-		}
-
-		if (black_queue.length === 0) {
-			for (let i = 0; i < gray_queue.length; i++) {
-				const node = gray_queue[i];
-				const nodeParent = node.parent;
-				if ((ts.isClassDeclaration(nodeParent) || ts.isInterfaceDeclaration(nodeParent)) && nodeOrChildIsBlack(nodeParent)) {
-					gray_queue.splice(i, 1);
-					black_queue.push(node);
-					setColor(node, NodeColor.Black);
-					i--;
-				}
-			}
-		}
-
-		if (black_queue.length > 0) {
-			node = black_queue.shift()!;
-		} else {
-			// only gray nodes remaining...
-			break;
-		}
-		const nodeSourceFile = node.getSourceFile();
-
-		const loop = (node: ts.Node) => {
-			const [symbol, symbolImportNode] = getRealNodeSymbol(ts, checker, node);
-			if (symbolImportNode) {
-				setColor(symbolImportNode, NodeColor.Black);
-			}
-
-			if (isSymbolWithDeclarations(symbol) && !nodeIsInItsOwnDeclaration(nodeSourceFile, node, symbol)) {
-				for (let i = 0, len = symbol.declarations.length; i < len; i++) {
-					const declaration = symbol.declarations[i];
-					if (ts.isSourceFile(declaration)) {
-						// Do not enqueue full source files
-						// (they can be the declaration of a module import)
-						continue;
-					}
-
-					if (options.shakeLevel === ShakeLevel.ClassMembers && (ts.isClassDeclaration(declaration) || ts.isInterfaceDeclaration(declaration)) && !isLocalCodeExtendingOrInheritingFromDefaultLibSymbol(ts, program, checker, declaration)) {
-						enqueue_black(declaration.name!);
-
-						for (let j = 0; j < declaration.members.length; j++) {
-							const member = declaration.members[j];
-							const memberName = member.name ? member.name.getText() : null;
-							if (
-								ts.isConstructorDeclaration(member)
-								|| ts.isConstructSignatureDeclaration(member)
-								|| ts.isIndexSignatureDeclaration(member)
-								|| ts.isCallSignatureDeclaration(member)
-								|| memberName === '[Symbol.iterator]'
-								|| memberName === '[Symbol.toStringTag]'
-								|| memberName === 'toJSON'
-								|| memberName === 'toString'
-								|| memberName === 'dispose'// TODO: keeping all `dispose` methods
-								|| /^_(.*)Brand$/.test(memberName || '') // TODO: keeping all members ending with `Brand`...
-							) {
-								enqueue_black(member);
-							}
-						}
-
-						// queue the heritage clauses
-						if (declaration.heritageClauses) {
-							for (let heritageClause of declaration.heritageClauses) {
-								enqueue_black(heritageClause);
-							}
-						}
-					} else {
-						enqueue_black(declaration);
-					}
-				}
-			}
-			node.forEachChild(loop);
-		};
-		node.forEachChild(loop);
-	}
-
-	while (export_import_queue.length > 0) {
-		const node = export_import_queue.shift()!;
-		if (nodeOrParentIsBlack(node)) {
-			continue;
-		}
-		const symbol: ts.Symbol | undefined = (<any>node).symbol;
-		if (!symbol) {
-			continue;
-		}
-		const aliased = checker.getAliasedSymbol(symbol);
-		if (aliased.declarations && aliased.declarations.length > 0) {
-			if (nodeOrParentIsBlack(aliased.declarations[0]) || nodeOrChildIsBlack(aliased.declarations[0])) {
-				setColor(node, NodeColor.Black);
-			}
-		}
-	}
-}
-
-function nodeIsInItsOwnDeclaration(nodeSourceFile: ts.SourceFile, node: ts.Node, symbol: ts.Symbol & { declarations: ts.Declaration[] }): boolean {
-	for (let i = 0, len = symbol.declarations.length; i < len; i++) {
-		const declaration = symbol.declarations[i];
-		const declarationSourceFile = declaration.getSourceFile();
-
-		if (nodeSourceFile === declarationSourceFile) {
-			if (declaration.pos <= node.pos && node.end <= declaration.end) {
-				return true;
-			}
-		}
-	}
-
-	return false;
-}
-
-function generateResult(ts: typeof import('typescript'), languageService: ts.LanguageService, shakeLevel: ShakeLevel): ITreeShakingResult {
-	const program = languageService.getProgram();
-	if (!program) {
-		throw new Error('Could not get program from language service');
-	}
-
-	let result: ITreeShakingResult = {};
-	const writeFile = (filePath: string, contents: string): void => {
-		result[filePath] = contents;
-	};
-
-	program.getSourceFiles().forEach((sourceFile) => {
-		const fileName = sourceFile.fileName;
-		if (/^defaultLib:/.test(fileName)) {
-			return;
-		}
-		const destination = fileName;
-		if (/\.d\.ts$/.test(fileName)) {
-			if (nodeOrChildIsBlack(sourceFile)) {
-				writeFile(destination, sourceFile.text);
-			}
-			return;
-		}
-
-		let text = sourceFile.text;
-		let result = '';
-
-		function keep(node: ts.Node): void {
-			result += text.substring(node.pos, node.end);
-		}
-		function write(data: string): void {
-			result += data;
-		}
-
-		function writeMarkedNodes(node: ts.Node): void {
-			if (getColor(node) === NodeColor.Black) {
-				return keep(node);
-			}
-
-			// Always keep certain top-level statements
-			if (ts.isSourceFile(node.parent)) {
-				if (ts.isExpressionStatement(node) && ts.isStringLiteral(node.expression) && node.expression.text === 'use strict') {
-					return keep(node);
-				}
-
-				if (ts.isVariableStatement(node) && nodeOrChildIsBlack(node)) {
-					return keep(node);
-				}
-			}
-
-			// Keep the entire import in import * as X cases
-			if (ts.isImportDeclaration(node)) {
-				if (node.importClause && node.importClause.namedBindings) {
-					if (ts.isNamespaceImport(node.importClause.namedBindings)) {
-						if (getColor(node.importClause.namedBindings) === NodeColor.Black) {
-							return keep(node);
-						}
-					} else {
-						let survivingImports: string[] = [];
-						for (const importNode of node.importClause.namedBindings.elements) {
-							if (getColor(importNode) === NodeColor.Black) {
-								survivingImports.push(importNode.getFullText(sourceFile));
-							}
-						}
-						const leadingTriviaWidth = node.getLeadingTriviaWidth();
-						const leadingTrivia = sourceFile.text.substr(node.pos, leadingTriviaWidth);
-						if (survivingImports.length > 0) {
-							if (node.importClause && node.importClause.name && getColor(node.importClause) === NodeColor.Black) {
-								return write(`${leadingTrivia}import ${node.importClause.name.text}, {${survivingImports.join(',')} } from${node.moduleSpecifier.getFullText(sourceFile)};`);
-							}
-							return write(`${leadingTrivia}import {${survivingImports.join(',')} } from${node.moduleSpecifier.getFullText(sourceFile)};`);
-						} else {
-							if (node.importClause && node.importClause.name && getColor(node.importClause) === NodeColor.Black) {
-								return write(`${leadingTrivia}import ${node.importClause.name.text} from${node.moduleSpecifier.getFullText(sourceFile)};`);
-							}
-						}
-					}
-				} else {
-					if (node.importClause && getColor(node.importClause) === NodeColor.Black) {
-						return keep(node);
-					}
-				}
-			}
-
-			if (ts.isExportDeclaration(node)) {
-				if (node.exportClause && node.moduleSpecifier && ts.isNamedExports(node.exportClause)) {
-					let survivingExports: string[] = [];
-					for (const exportSpecifier of node.exportClause.elements) {
-						if (getColor(exportSpecifier) === NodeColor.Black) {
-							survivingExports.push(exportSpecifier.getFullText(sourceFile));
-						}
-					}
-					const leadingTriviaWidth = node.getLeadingTriviaWidth();
-					const leadingTrivia = sourceFile.text.substr(node.pos, leadingTriviaWidth);
-					if (survivingExports.length > 0) {
-						return write(`${leadingTrivia}export {${survivingExports.join(',')} } from${node.moduleSpecifier.getFullText(sourceFile)};`);
-					}
-				}
-			}
-
-			if (shakeLevel === ShakeLevel.ClassMembers && (ts.isClassDeclaration(node) || ts.isInterfaceDeclaration(node)) && nodeOrChildIsBlack(node)) {
-				let toWrite = node.getFullText();
-				for (let i = node.members.length - 1; i >= 0; i--) {
-					const member = node.members[i];
-					if (getColor(member) === NodeColor.Black || !member.name) {
-						// keep method
-						continue;
-					}
-
-					let pos = member.pos - node.pos;
-					let end = member.end - node.pos;
-					toWrite = toWrite.substring(0, pos) + toWrite.substring(end);
-				}
-				return write(toWrite);
-			}
-
-			if (ts.isFunctionDeclaration(node)) {
-				// Do not go inside functions if they haven't been marked
-				return;
-			}
-
-			node.forEachChild(writeMarkedNodes);
-		}
-
-		if (getColor(sourceFile) !== NodeColor.Black) {
-			if (!nodeOrChildIsBlack(sourceFile)) {
-				// none of the elements are reachable => don't write this file at all!
-				return;
-			}
-			sourceFile.forEachChild(writeMarkedNodes);
-			result += sourceFile.endOfFileToken.getFullText(sourceFile);
-		} else {
-			result = text;
-		}
-
-		writeFile(destination, result);
-	});
-
-	return result;
-}
-
-//#endregion
-
-//#region Utils
-
-function isLocalCodeExtendingOrInheritingFromDefaultLibSymbol(ts: typeof import('typescript'), program: ts.Program, checker: ts.TypeChecker, declaration: ts.ClassDeclaration | ts.InterfaceDeclaration): boolean {
-	if (!program.isSourceFileDefaultLibrary(declaration.getSourceFile()) && declaration.heritageClauses) {
-		for (const heritageClause of declaration.heritageClauses) {
-			for (const type of heritageClause.types) {
-				const symbol = findSymbolFromHeritageType(ts, checker, type);
-				if (symbol) {
-					const decl = symbol.valueDeclaration || (symbol.declarations && symbol.declarations[0]);
-					if (decl && program.isSourceFileDefaultLibrary(decl.getSourceFile())) {
-						return true;
-					}
-				}
-			}
-		}
-	}
-	return false;
-}
-
-function findSymbolFromHeritageType(ts: typeof import('typescript'), checker: ts.TypeChecker, type: ts.ExpressionWithTypeArguments | ts.Expression | ts.PrivateIdentifier): ts.Symbol | null {
-	if (ts.isExpressionWithTypeArguments(type)) {
-		return findSymbolFromHeritageType(ts, checker, type.expression);
-	}
-	if (ts.isIdentifier(type)) {
-		return getRealNodeSymbol(ts, checker, type)[0];
-	}
-	if (ts.isPropertyAccessExpression(type)) {
-		return findSymbolFromHeritageType(ts, checker, type.name);
-	}
-	return null;
-}
-
-/**
- * Returns the node's symbol and the `import` node (if the symbol resolved from a different module)
- */
-function getRealNodeSymbol(ts: typeof import('typescript'), checker: ts.TypeChecker, node: ts.Node): [ts.Symbol | null, ts.Declaration | null] {
-
-	// Use some TypeScript internals to avoid code duplication
-	type ObjectLiteralElementWithName = ts.ObjectLiteralElement & { name: ts.PropertyName; parent: ts.ObjectLiteralExpression | ts.JsxAttributes };
-	const getPropertySymbolsFromContextualType: (node: ObjectLiteralElementWithName, checker: ts.TypeChecker, contextualType: ts.Type, unionSymbolOk: boolean) => ReadonlyArray<ts.Symbol> = (<any>ts).getPropertySymbolsFromContextualType;
-	const getContainingObjectLiteralElement: (node: ts.Node) => ObjectLiteralElementWithName | undefined = (<any>ts).getContainingObjectLiteralElement;
-	const getNameFromPropertyName: (name: ts.PropertyName) => string | undefined = (<any>ts).getNameFromPropertyName;
-
-	// Go to the original declaration for cases:
-	//
-	//   (1) when the aliased symbol was declared in the location(parent).
-	//   (2) when the aliased symbol is originating from an import.
-	//
-	function shouldSkipAlias(node: ts.Node, declaration: ts.Node): boolean {
-		if (!ts.isShorthandPropertyAssignment(node) && node.kind !== ts.SyntaxKind.Identifier) {
-			return false;
-		}
-		if (node.parent === declaration) {
-			return true;
-		}
-		switch (declaration.kind) {
-			case ts.SyntaxKind.ImportClause:
-			case ts.SyntaxKind.ImportEqualsDeclaration:
-				return true;
-			case ts.SyntaxKind.ImportSpecifier:
-				return declaration.parent.kind === ts.SyntaxKind.NamedImports;
-			default:
-				return false;
-		}
-	}
-
-	if (!ts.isShorthandPropertyAssignment(node)) {
-		if (node.getChildCount() !== 0) {
-			return [null, null];
-		}
-	}
-
-	const { parent } = node;
-
-	let symbol = (
-		ts.isShorthandPropertyAssignment(node)
-			? checker.getShorthandAssignmentValueSymbol(node)
-			: checker.getSymbolAtLocation(node)
-	);
-
-	let importNode: ts.Declaration | null = null;
-	// If this is an alias, and the request came at the declaration location
-	// get the aliased symbol instead. This allows for goto def on an import e.g.
-	//   import {A, B} from "mod";
-	// to jump to the implementation directly.
-	if (symbol && symbol.flags & ts.SymbolFlags.Alias && symbol.declarations && shouldSkipAlias(node, symbol.declarations[0])) {
-		const aliased = checker.getAliasedSymbol(symbol);
-		if (aliased.declarations) {
-			// We should mark the import as visited
-			importNode = symbol.declarations[0];
-			symbol = aliased;
-		}
-	}
-
-	if (symbol) {
-		// Because name in short-hand property assignment has two different meanings: property name and property value,
-		// using go-to-definition at such position should go to the variable declaration of the property value rather than
-		// go to the declaration of the property name (in this case stay at the same position). However, if go-to-definition
-		// is performed at the location of property access, we would like to go to definition of the property in the short-hand
-		// assignment. This case and others are handled by the following code.
-		if (node.parent.kind === ts.SyntaxKind.ShorthandPropertyAssignment) {
-			symbol = checker.getShorthandAssignmentValueSymbol(symbol.valueDeclaration);
-		}
-
-		// If the node is the name of a BindingElement within an ObjectBindingPattern instead of just returning the
-		// declaration the symbol (which is itself), we should try to get to the original type of the ObjectBindingPattern
-		// and return the property declaration for the referenced property.
-		// For example:
-		//      import('./foo').then(({ b/*goto*/ar }) => undefined); => should get use to the declaration in file "./foo"
-		//
-		//      function bar<T>(onfulfilled: (value: T) => void) { //....}
-		//      interface Test {
-		//          pr/*destination*/op1: number
-		//      }
-		//      bar<Test>(({pr/*goto*/op1})=>{});
-		if (ts.isPropertyName(node) && ts.isBindingElement(parent) && ts.isObjectBindingPattern(parent.parent) &&
-			(node === (parent.propertyName || parent.name))) {
-			const name = getNameFromPropertyName(node);
-			const type = checker.getTypeAtLocation(parent.parent);
-			if (name && type) {
-				if (type.isUnion()) {
-					const prop = type.types[0].getProperty(name);
-					if (prop) {
-						symbol = prop;
-					}
-				} else {
-					const prop = type.getProperty(name);
-					if (prop) {
-						symbol = prop;
-					}
-				}
-			}
-		}
-
-		// If the current location we want to find its definition is in an object literal, try to get the contextual type for the
-		// object literal, lookup the property symbol in the contextual type, and use this for goto-definition.
-		// For example
-		//      interface Props{
-		//          /*first*/prop1: number
-		//          prop2: boolean
-		//      }
-		//      function Foo(arg: Props) {}
-		//      Foo( { pr/*1*/op1: 10, prop2: false })
-		const element = getContainingObjectLiteralElement(node);
-		if (element) {
-			const contextualType = element && checker.getContextualType(element.parent);
-			if (contextualType) {
-				const propertySymbols = getPropertySymbolsFromContextualType(element, checker, contextualType, /*unionSymbolOk*/ false);
-				if (propertySymbols) {
-					symbol = propertySymbols[0];
-				}
-			}
-		}
-	}
-
-	if (symbol && symbol.declarations) {
-		return [symbol, importNode];
-	}
-
-	return [null, null];
-}
-
-/** Get the token whose text contains the position */
-function getTokenAtPosition(ts: typeof import('typescript'), sourceFile: ts.SourceFile, position: number, allowPositionInLeadingTrivia: boolean, includeEndPosition: boolean): ts.Node {
-	let current: ts.Node = sourceFile;
-	outer: while (true) {
-		// find the child that contains 'position'
-		for (const child of current.getChildren()) {
-			const start = allowPositionInLeadingTrivia ? child.getFullStart() : child.getStart(sourceFile, /*includeJsDoc*/ true);
-			if (start > position) {
-				// If this child begins after position, then all subsequent children will as well.
-				break;
-			}
-
-			const end = child.getEnd();
-			if (position < end || (position === end && (child.kind === ts.SyntaxKind.EndOfFileToken || includeEndPosition))) {
-				current = child;
-				continue outer;
-			}
-		}
-
-		return current;
-	}
-}
-
-//#endregion
diff --git a/lib/vscode/build/lib/typings/cgmanifest.json b/lib/vscode/build/lib/typings/cgmanifest.json
deleted file mode 100644
index 6e529a79f235..000000000000
--- a/lib/vscode/build/lib/typings/cgmanifest.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-	"registrations": [
-		{
-			"component": {
-				"type": "git",
-				"git": {
-					"name": "definitelytyped",
-					"repositoryUrl": "https://github.com/DefinitelyTyped/DefinitelyTyped",
-					"commitHash": "69e3ac6bec3008271f76bbfa7cf69aa9198c4ff0"
-				}
-			},
-			"license": "MIT"
-		}
-	],
-	"version": 1
-}
diff --git a/lib/vscode/build/lib/typings/event-stream.d.ts b/lib/vscode/build/lib/typings/event-stream.d.ts
deleted file mode 100644
index 260051be52e5..000000000000
--- a/lib/vscode/build/lib/typings/event-stream.d.ts
+++ /dev/null
@@ -1,27 +0,0 @@
-declare module "event-stream" {
-	import { Stream } from 'stream';
-	import { ThroughStream as _ThroughStream } from 'through';
-	import * as File from 'vinyl';
-
-	export interface ThroughStream extends _ThroughStream {
-		queue(data: File | null): any;
-		push(data: File | null): any;
-		paused: boolean;
-	}
-
-	function merge(streams: Stream[]): ThroughStream;
-	function merge(...streams: Stream[]): ThroughStream;
-	function concat(...stream: Stream[]): ThroughStream;
-	function duplex(istream: Stream, ostream: Stream): ThroughStream;
-
-	function through(write?: (this: ThroughStream, data: any) => void, end?: (this: ThroughStream) => void,
-		opts?: { autoDestroy: boolean; }): ThroughStream;
-
-	function readArray<T>(array: T[]): ThroughStream;
-	function writeArray<T>(cb: (err: Error, array: T[]) => void): ThroughStream;
-
-	function mapSync<I, O>(cb: (data: I) => O): ThroughStream;
-	function map<I, O>(cb: (data: I, cb: (err?: Error, data?: O) => void) => O): ThroughStream;
-
-	function readable(asyncFunction: (this: ThroughStream, ...args: any[]) => any): any;
-}
\ No newline at end of file
diff --git a/lib/vscode/build/lib/typings/github-releases.d.ts b/lib/vscode/build/lib/typings/github-releases.d.ts
deleted file mode 100644
index 5706a86b5e4b..000000000000
--- a/lib/vscode/build/lib/typings/github-releases.d.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-declare module 'github-releases' {
-
-}
\ No newline at end of file
diff --git a/lib/vscode/build/lib/typings/gulp-bom.d.ts b/lib/vscode/build/lib/typings/gulp-bom.d.ts
deleted file mode 100644
index 88525a7e9dbc..000000000000
--- a/lib/vscode/build/lib/typings/gulp-bom.d.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-
-declare module "gulp-bom" {
-	function f(): NodeJS.ReadWriteStream;
-
-	/**
-	 * This is required as per:
-	 * https://github.com/microsoft/TypeScript/issues/5073
-	 */
-	namespace f {}
-
-	export = f;
-}
diff --git a/lib/vscode/build/lib/typings/gulp-flatmap.d.ts b/lib/vscode/build/lib/typings/gulp-flatmap.d.ts
deleted file mode 100644
index c99232c61cca..000000000000
--- a/lib/vscode/build/lib/typings/gulp-flatmap.d.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-declare module 'gulp-flatmap' {
-	import File = require('vinyl');
-	function f(fn:(stream:NodeJS.ReadWriteStream, file:File)=>NodeJS.ReadWriteStream): NodeJS.ReadWriteStream;
-
-	/**
-	 * This is required as per:
-	 * https://github.com/microsoft/TypeScript/issues/5073
-	 */
-	namespace f {}
-
-	export = f;
-}
diff --git a/lib/vscode/build/lib/typings/gulp-remote-src.d.ts b/lib/vscode/build/lib/typings/gulp-remote-src.d.ts
deleted file mode 100644
index ff9026b79bbb..000000000000
--- a/lib/vscode/build/lib/typings/gulp-remote-src.d.ts
+++ /dev/null
@@ -1,23 +0,0 @@
-declare module 'gulp-remote-retry-src' {
-
-	import stream = require("stream");
-
-	function remote(url: string, options: remote.IOptions): stream.Stream;
-
-	module remote {
-		export interface IRequestOptions {
-			body?: any;
-			json?: boolean;
-			method?: string;
-			headers?: any;
-		}
-
-		export interface IOptions {
-			base?: string;
-			buffer?: boolean;
-			requestOptions?: IRequestOptions;
-		}
-	}
-
-	export = remote;
-}
diff --git a/lib/vscode/build/lib/typings/gulp-tsb.d.ts b/lib/vscode/build/lib/typings/gulp-tsb.d.ts
deleted file mode 100644
index df9bb34d3fb4..000000000000
--- a/lib/vscode/build/lib/typings/gulp-tsb.d.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-declare module "gulp-tsb" {
-
-	export interface ICancellationToken {
-		isCancellationRequested(): boolean;
-	}
-
-	export interface IncrementalCompiler {
-		(token?: ICancellationToken): NodeJS.ReadWriteStream;
-		src(opts?: {
-			cwd?: string;
-			base?: string;
-		}): NodeJS.ReadStream;
-	}
-	export function create(projectPath: string, existingOptions: any, verbose?: boolean, onError?: (message: any) => void): IncrementalCompiler;
-
-}
diff --git a/lib/vscode/build/lib/typings/is.d.ts b/lib/vscode/build/lib/typings/is.d.ts
deleted file mode 100644
index 66e7501c03fb..000000000000
--- a/lib/vscode/build/lib/typings/is.d.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-declare module 'is' {
-	function a(value: any, type: string): boolean;
-	function defined(value: any): boolean;
-	function undef(value: any): boolean;
-	function object(value: any): boolean;
-	function string(value: any): value is string;
-	function boolean(value: any): boolean;
-	function array(value: any): boolean;
-	function empty<T>(value: Object | Array<T>): boolean;
-	function equal<T extends Object | Array<any> | Function | Date>(value: T, other: T): boolean;
-}
\ No newline at end of file
diff --git a/lib/vscode/build/lib/typings/lazy.js.d.ts b/lib/vscode/build/lib/typings/lazy.js.d.ts
deleted file mode 100644
index f69924b4b1cc..000000000000
--- a/lib/vscode/build/lib/typings/lazy.js.d.ts
+++ /dev/null
@@ -1,276 +0,0 @@
-// Type definitions for Lazy.js 0.3.2
-// Project: https://github.com/dtao/lazy.js/
-// Definitions by: Bart van der Schoor <https://github.com/Bartvds>
-// Definitions: https://github.com/borisyankov/DefinitelyTyped
-
-declare function Lazy(value: string): Lazy.StringLikeSequence;
-declare function Lazy<T>(value: T[]): Lazy.ArrayLikeSequence<T>;
-declare function Lazy(value: any[]): Lazy.ArrayLikeSequence<any>;
-declare function Lazy<T>(value: Object): Lazy.ObjectLikeSequence<T>;
-declare function Lazy(value: Object): Lazy.ObjectLikeSequence<any>;
-
-declare module Lazy {
-	function strict(): StrictLazy;
-	function generate<T>(generatorFn: GeneratorCallback<T>, length?: number): GeneratedSequence<T>;
-	function range(to: number): GeneratedSequence<number>;
-	function range(from: number, to: number, step?: number): GeneratedSequence<number>;
-	function repeat<T>(value: T, count?: number): GeneratedSequence<T>;
-	function on<T>(eventType: string): Sequence<T>;
-	function readFile(path: string): StringLikeSequence;
-	function makeHttpRequest(path: string): StringLikeSequence;
-
-	interface StrictLazy {
-		(value: string): StringLikeSequence;
-		<T>(value: T[]): ArrayLikeSequence<T>;
-		(value: any[]): ArrayLikeSequence<any>;
-		<T>(value: Object): ObjectLikeSequence<T>;
-		(value: Object): ObjectLikeSequence<any>;
-		strict(): StrictLazy;
-		generate<T>(generatorFn: GeneratorCallback<T>, length?: number): GeneratedSequence<T>;
-		range(to: number): GeneratedSequence<number>;
-		range(from: number, to: number, step?: number): GeneratedSequence<number>;
-		repeat<T>(value: T, count?: number): GeneratedSequence<T>;
-		on<T>(eventType: string): Sequence<T>;
-		readFile(path: string): StringLikeSequence;
-		makeHttpRequest(path: string): StringLikeSequence;
-	}
-
-	interface ArrayLike<T> {
-		length: number;
-		[index: number]: T;
-	}
-
-	interface Callback {
-		(): void;
-	}
-
-	interface ErrorCallback {
-		(error: any): void;
-	}
-
-	interface ValueCallback<T> {
-		(value: T): void;
-	}
-
-	interface GetKeyCallback<T> {
-		(value: T): string;
-	}
-
-	interface TestCallback<T> {
-		(value: T): boolean;
-	}
-
-	interface MapCallback<T, U> {
-		(value: T): U;
-	}
-
-	interface MapStringCallback {
-		(value: string): string;
-	}
-
-	interface NumberCallback<T> {
-		(value: T): number;
-	}
-
-	interface MemoCallback<T, U> {
-		(memo: U, value: T): U;
-	}
-
-	interface GeneratorCallback<T> {
-		(index: number): T;
-	}
-
-	interface CompareCallback {
-		(x: any, y: any): number;
-	}
-
-	// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-	interface Iterator<T> {
-		new(sequence: Sequence<T>): Iterator<T>;
-		current(): T;
-		moveNext(): boolean;
-	}
-
-	interface GeneratedSequence<T> extends Sequence<T> {
-		new(generatorFn: GeneratorCallback<T>, length: number): GeneratedSequence<T>;
-		length(): number;
-	}
-
-	interface AsyncSequence<T> extends SequenceBase<T> {
-		each(callback: ValueCallback<T>): AsyncHandle<T>;
-	}
-
-	interface AsyncHandle<T> {
-		cancel(): void;
-		onComplete(callback: Callback): void;
-		onError(callback: ErrorCallback): void;
-	}
-
-	// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-	module Sequence {
-		function define(methodName: string[], overrides: Object): Function;
-	}
-
-	interface Sequence<T> extends SequenceBase<T> {
-		each(eachFn: ValueCallback<T>): Sequence<T>;
-	}
-
-	interface ArraySequence<T> extends SequenceBase<T[]> {
-		flatten(): Sequence<T>;
-	}
-
-	interface SequenceBase<T> extends SequenceBaser<T> {
-		first(): any;
-		first(count: number): Sequence<T>;
-		indexOf(value: any, startIndex?: number): Sequence<T>;
-
-		last(): any;
-		last(count: number): Sequence<T>;
-		lastIndexOf(value: any): Sequence<T>;
-
-		reverse(): Sequence<T>;
-	}
-
-	interface SequenceBaser<T> {
-		// TODO improve define() (needs ugly overload)
-		async(interval: number): AsyncSequence<T>;
-		chunk(size: number): Sequence<T>;
-		compact(): Sequence<T>;
-		concat(var_args: T[]): Sequence<T>;
-		concat(sequence: Sequence<T>): Sequence<T>;
-		consecutive(length: number): Sequence<T>;
-		contains(value: T): boolean;
-		countBy(keyFn: GetKeyCallback<T>): ObjectLikeSequence<T>;
-		countBy(propertyName: string): ObjectLikeSequence<T>;
-		dropWhile(predicateFn: TestCallback<T>): Sequence<T>;
-		every(predicateFn: TestCallback<T>): boolean;
-		filter(predicateFn: TestCallback<T>): Sequence<T>;
-		find(predicateFn: TestCallback<T>): Sequence<T>;
-		findWhere(properties: Object): Sequence<T>;
-
-		groupBy(keyFn: GetKeyCallback<T>): ObjectLikeSequence<T>;
-		initial(count?: number): Sequence<T>;
-		intersection(var_args: T[]): Sequence<T>;
-		invoke(methodName: string): Sequence<T>;
-		isEmpty(): boolean;
-		join(delimiter?: string): string;
-		map<U>(mapFn: MapCallback<T, U[]>): ArraySequence<U>;
-		map<U>(mapFn: MapCallback<T, U>): Sequence<U>;
-
-		// TODO: vscode addition to workaround strict null errors
-		flatten(): Sequence<any>;
-
-		max(valueFn?: NumberCallback<T>): T;
-		min(valueFn?: NumberCallback<T>): T;
-		none(valueFn?: TestCallback<T>): boolean;
-		pluck(propertyName: string): Sequence<T>;
-		reduce<U>(aggregatorFn: MemoCallback<T, U>, memo?: U): U;
-		reduceRight<U>(aggregatorFn: MemoCallback<T, U>, memo: U): U;
-		reject(predicateFn: TestCallback<T>): Sequence<T>;
-		rest(count?: number): Sequence<T>;
-		shuffle(): Sequence<T>;
-		some(predicateFn?: TestCallback<T>): boolean;
-		sort(sortFn?: CompareCallback, descending?: boolean): Sequence<T>;
-		sortBy(sortFn: string, descending?: boolean): Sequence<T>;
-		sortBy(sortFn: NumberCallback<T>, descending?: boolean): Sequence<T>;
-		sortedIndex(value: T): Sequence<T>;
-		size(): number;
-		sum(valueFn?: NumberCallback<T>): Sequence<T>;
-		takeWhile(predicateFn: TestCallback<T>): Sequence<T>;
-		union(var_args: T[]): Sequence<T>;
-		uniq(): Sequence<T>;
-		where(properties: Object): Sequence<T>;
-		without(...var_args: T[]): Sequence<T>;
-		without(var_args: T[]): Sequence<T>;
-		zip(var_args: T[]): ArraySequence<T>;
-
-		toArray(): T[];
-		toObject(): Object;
-	}
-
-	// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-	module ArrayLikeSequence {
-		function define(methodName: string[], overrides: Object): Function;
-	}
-
-	interface ArrayLikeSequence<T> extends Sequence<T> {
-		// define()X;
-		concat(var_args: T[]): ArrayLikeSequence<T>;
-		concat(sequence: Sequence<T>): Sequence<T>;
-		first(count?: number): ArrayLikeSequence<T>;
-		get(index: number): T;
-		length(): number;
-		map<U>(mapFn: MapCallback<T, U[]>): ArraySequence<U>;
-		map<U>(mapFn: MapCallback<T, U>): ArrayLikeSequence<U>;
-		pop(): ArrayLikeSequence<T>;
-		rest(count?: number): ArrayLikeSequence<T>;
-		reverse(): ArrayLikeSequence<T>;
-		shift(): ArrayLikeSequence<T>;
-		slice(begin: number, end?: number): ArrayLikeSequence<T>;
-	}
-
-	// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-	module ObjectLikeSequence {
-		function define(methodName: string[], overrides: Object): Function;
-	}
-
-	interface ObjectLikeSequence<T> extends Sequence<T> {
-		assign(other: Object): ObjectLikeSequence<T>;
-		// throws error
-		//async(): X;
-		defaults(defaults: Object): ObjectLikeSequence<T>;
-		functions(): Sequence<T>;
-		get(property: string): ObjectLikeSequence<T>;
-		invert(): ObjectLikeSequence<T>;
-		keys(): Sequence<string>;
-		omit(properties: string[]): ObjectLikeSequence<T>;
-		pairs(): Sequence<T>;
-		pick(properties: string[]): ObjectLikeSequence<T>;
-		toArray(): T[];
-		toObject(): Object;
-		values(): Sequence<T>;
-	}
-
-	// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-	module StringLikeSequence {
-		function define(methodName: string[], overrides: Object): Function;
-	}
-
-	interface StringLikeSequence extends SequenceBaser<string> {
-		charAt(index: number): string;
-		charCodeAt(index: number): number;
-		contains(value: string): boolean;
-		endsWith(suffix: string): boolean;
-
-		first(): string;
-		first(count: number): StringLikeSequence;
-
-		indexOf(substring: string, startIndex?: number): number;
-
-		last(): string;
-		last(count: number): StringLikeSequence;
-
-		lastIndexOf(substring: string, startIndex?: number): number;
-		mapString(mapFn: MapStringCallback): StringLikeSequence;
-		match(pattern: RegExp): StringLikeSequence;
-		reverse(): StringLikeSequence;
-
-		split(delimiter: string): StringLikeSequence;
-		split(delimiter: RegExp): StringLikeSequence;
-
-		startsWith(prefix: string): boolean;
-		substring(start: number, stop?: number): StringLikeSequence;
-		toLowerCase(): StringLikeSequence;
-		toUpperCase(): StringLikeSequence;
-	}
-}
-
-declare module 'lazy.js' {
-	export = Lazy;
-}
-
diff --git a/lib/vscode/build/lib/typings/vinyl.d.ts b/lib/vscode/build/lib/typings/vinyl.d.ts
deleted file mode 100644
index 6be30a1eebf0..000000000000
--- a/lib/vscode/build/lib/typings/vinyl.d.ts
+++ /dev/null
@@ -1,112 +0,0 @@
-// Type definitions for vinyl 0.4.3
-// Project: https://github.com/wearefractal/vinyl
-// Definitions by: vvakame <https://github.com/vvakame/>, jedmao <https://github.com/jedmao>
-// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
-
-declare module "vinyl" {
-
-	import fs = require("fs");
-
-	/**
-	 * A virtual file format.
-	 */
-	class File {
-		constructor(options?: {
-			/**
-			* Default: process.cwd()
-			*/
-			cwd?: string;
-			/**
-			 * Used for relative pathing. Typically where a glob starts.
-			 */
-			base?: string;
-			/**
-			 * Full path to the file.
-			 */
-			path?: string;
-			/**
-			 * Path history. Has no effect if options.path is passed.
-			 */
-			history?: string[];
-			/**
-			 * The result of an fs.stat call. See fs.Stats for more information.
-			 */
-			stat?: fs.Stats;
-			/**
-			 * File contents.
-			 * Type: Buffer, Stream, or null
-			 */
-			contents?: Buffer | NodeJS.ReadWriteStream;
-		});
-
-		/**
-		 * Default: process.cwd()
-		 */
-		public cwd: string;
-		/**
-		 * Used for relative pathing. Typically where a glob starts.
-		 */
-		public base: string;
-		/**
-		 * Full path to the file.
-		 */
-		public path: string;
-		public stat: fs.Stats;
-		/**
-		 * Type: Buffer|Stream|null (Default: null)
-		 */
-		public contents: Buffer | NodeJS.ReadableStream;
-		/**
-		 * Returns path.relative for the file base and file path.
-		 * Example:
-		 *  var file = new File({
-		 *    cwd: "/",
-		 *    base: "/test/",
-		 *    path: "/test/file.js"
-		 *  });
-		 *  console.log(file.relative); // file.js
-		 */
-		public relative: string;
-
-		public isBuffer(): boolean;
-
-		public isStream(): boolean;
-
-		public isNull(): boolean;
-
-		public isDirectory(): boolean;
-
-		/**
-		 * Returns a new File object with all attributes cloned. Custom attributes are deep-cloned.
-		 */
-		public clone(opts?: { contents?: boolean }): File;
-
-		/**
-		 * If file.contents is a Buffer, it will write it to the stream.
-		 * If file.contents is a Stream, it will pipe it to the stream.
-		 * If file.contents is null, it will do nothing.
-		 */
-		public pipe<T extends NodeJS.ReadWriteStream>(
-			stream: T,
-			opts?: {
-				/**
-				 * If false, the destination stream will not be ended (same as node core).
-				 */
-				end?: boolean;
-			}): T;
-
-		/**
-		 * Returns a pretty String interpretation of the File. Useful for console.log.
-		 */
-		public inspect(): string;
-	}
-
-	/**
-	 * This is required as per:
-	 * https://github.com/microsoft/TypeScript/issues/5073
-	 */
-	namespace File {}
-
-	export = File;
-
-}
diff --git a/lib/vscode/build/lib/util.js b/lib/vscode/build/lib/util.js
deleted file mode 100644
index b58fb754d2bb..000000000000
--- a/lib/vscode/build/lib/util.js
+++ /dev/null
@@ -1,278 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-'use strict';
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.getElectronVersion = exports.streamToPromise = exports.versionStringToNumber = exports.filter = exports.rebase = exports.getVersion = exports.ensureDir = exports.rreddir = exports.rimraf = exports.rewriteSourceMappingURL = exports.stripSourceMappingURL = exports.loadSourcemaps = exports.cleanNodeModules = exports.skipDirectories = exports.toFileUri = exports.setExecutableBit = exports.fixWin32DirectoryPermissions = exports.incremental = void 0;
-const es = require("event-stream");
-const debounce = require("debounce");
-const _filter = require("gulp-filter");
-const rename = require("gulp-rename");
-const path = require("path");
-const fs = require("fs");
-const _rimraf = require("rimraf");
-const git = require("./git");
-const VinylFile = require("vinyl");
-const root = path.dirname(path.dirname(__dirname));
-const NoCancellationToken = { isCancellationRequested: () => false };
-function incremental(streamProvider, initial, supportsCancellation) {
-    const input = es.through();
-    const output = es.through();
-    let state = 'idle';
-    let buffer = Object.create(null);
-    const token = !supportsCancellation ? undefined : { isCancellationRequested: () => Object.keys(buffer).length > 0 };
-    const run = (input, isCancellable) => {
-        state = 'running';
-        const stream = !supportsCancellation ? streamProvider() : streamProvider(isCancellable ? token : NoCancellationToken);
-        input
-            .pipe(stream)
-            .pipe(es.through(undefined, () => {
-            state = 'idle';
-            eventuallyRun();
-        }))
-            .pipe(output);
-    };
-    if (initial) {
-        run(initial, false);
-    }
-    const eventuallyRun = debounce(() => {
-        const paths = Object.keys(buffer);
-        if (paths.length === 0) {
-            return;
-        }
-        const data = paths.map(path => buffer[path]);
-        buffer = Object.create(null);
-        run(es.readArray(data), true);
-    }, 500);
-    input.on('data', (f) => {
-        buffer[f.path] = f;
-        if (state === 'idle') {
-            eventuallyRun();
-        }
-    });
-    return es.duplex(input, output);
-}
-exports.incremental = incremental;
-function fixWin32DirectoryPermissions() {
-    if (!/win32/.test(process.platform)) {
-        return es.through();
-    }
-    return es.mapSync(f => {
-        if (f.stat && f.stat.isDirectory && f.stat.isDirectory()) {
-            f.stat.mode = 16877;
-        }
-        return f;
-    });
-}
-exports.fixWin32DirectoryPermissions = fixWin32DirectoryPermissions;
-function setExecutableBit(pattern) {
-    const setBit = es.mapSync(f => {
-        if (!f.stat) {
-            f.stat = { isFile() { return true; } };
-        }
-        f.stat.mode = /* 100755 */ 33261;
-        return f;
-    });
-    if (!pattern) {
-        return setBit;
-    }
-    const input = es.through();
-    const filter = _filter(pattern, { restore: true });
-    const output = input
-        .pipe(filter)
-        .pipe(setBit)
-        .pipe(filter.restore);
-    return es.duplex(input, output);
-}
-exports.setExecutableBit = setExecutableBit;
-function toFileUri(filePath) {
-    const match = filePath.match(/^([a-z])\:(.*)$/i);
-    if (match) {
-        filePath = '/' + match[1].toUpperCase() + ':' + match[2];
-    }
-    return 'file://' + filePath.replace(/\\/g, '/');
-}
-exports.toFileUri = toFileUri;
-function skipDirectories() {
-    return es.mapSync(f => {
-        if (!f.isDirectory()) {
-            return f;
-        }
-    });
-}
-exports.skipDirectories = skipDirectories;
-function cleanNodeModules(rulePath) {
-    const rules = fs.readFileSync(rulePath, 'utf8')
-        .split(/\r?\n/g)
-        .map(line => line.trim())
-        .filter(line => line && !/^#/.test(line));
-    const excludes = rules.filter(line => !/^!/.test(line)).map(line => `!**/node_modules/${line}`);
-    const includes = rules.filter(line => /^!/.test(line)).map(line => `**/node_modules/${line.substr(1)}`);
-    const input = es.through();
-    const output = es.merge(input.pipe(_filter(['**', ...excludes])), input.pipe(_filter(includes)));
-    return es.duplex(input, output);
-}
-exports.cleanNodeModules = cleanNodeModules;
-function loadSourcemaps() {
-    const input = es.through();
-    const output = input
-        .pipe(es.map((f, cb) => {
-        if (f.sourceMap) {
-            cb(undefined, f);
-            return;
-        }
-        if (!f.contents) {
-            cb(undefined, f);
-            return;
-        }
-        const contents = f.contents.toString('utf8');
-        const reg = /\/\/# sourceMappingURL=(.*)$/g;
-        let lastMatch = null;
-        let match = null;
-        while (match = reg.exec(contents)) {
-            lastMatch = match;
-        }
-        if (!lastMatch) {
-            f.sourceMap = {
-                version: '3',
-                names: [],
-                mappings: '',
-                sources: [f.relative],
-                sourcesContent: [contents]
-            };
-            cb(undefined, f);
-            return;
-        }
-        f.contents = Buffer.from(contents.replace(/\/\/# sourceMappingURL=(.*)$/g, ''), 'utf8');
-        fs.readFile(path.join(path.dirname(f.path), lastMatch[1]), 'utf8', (err, contents) => {
-            if (err) {
-                return cb(err);
-            }
-            f.sourceMap = JSON.parse(contents);
-            cb(undefined, f);
-        });
-    }));
-    return es.duplex(input, output);
-}
-exports.loadSourcemaps = loadSourcemaps;
-function stripSourceMappingURL() {
-    const input = es.through();
-    const output = input
-        .pipe(es.mapSync(f => {
-        const contents = f.contents.toString('utf8');
-        f.contents = Buffer.from(contents.replace(/\n\/\/# sourceMappingURL=(.*)$/gm, ''), 'utf8');
-        return f;
-    }));
-    return es.duplex(input, output);
-}
-exports.stripSourceMappingURL = stripSourceMappingURL;
-function rewriteSourceMappingURL(sourceMappingURLBase) {
-    const input = es.through();
-    const output = input
-        .pipe(es.mapSync(f => {
-        const contents = f.contents.toString('utf8');
-        const str = `//# sourceMappingURL=${sourceMappingURLBase}/${path.dirname(f.relative).replace(/\\/g, '/')}/$1`;
-        f.contents = Buffer.from(contents.replace(/\n\/\/# sourceMappingURL=(.*)$/gm, str));
-        return f;
-    }));
-    return es.duplex(input, output);
-}
-exports.rewriteSourceMappingURL = rewriteSourceMappingURL;
-function rimraf(dir) {
-    const result = () => new Promise((c, e) => {
-        let retries = 0;
-        const retry = () => {
-            _rimraf(dir, { maxBusyTries: 1 }, (err) => {
-                if (!err) {
-                    return c();
-                }
-                if (err.code === 'ENOTEMPTY' && ++retries < 5) {
-                    return setTimeout(() => retry(), 10);
-                }
-                return e(err);
-            });
-        };
-        retry();
-    });
-    result.taskName = `clean-${path.basename(dir).toLowerCase()}`;
-    return result;
-}
-exports.rimraf = rimraf;
-function _rreaddir(dirPath, prepend, result) {
-    const entries = fs.readdirSync(dirPath, { withFileTypes: true });
-    for (const entry of entries) {
-        if (entry.isDirectory()) {
-            _rreaddir(path.join(dirPath, entry.name), `${prepend}/${entry.name}`, result);
-        }
-        else {
-            result.push(`${prepend}/${entry.name}`);
-        }
-    }
-}
-function rreddir(dirPath) {
-    let result = [];
-    _rreaddir(dirPath, '', result);
-    return result;
-}
-exports.rreddir = rreddir;
-function ensureDir(dirPath) {
-    if (fs.existsSync(dirPath)) {
-        return;
-    }
-    ensureDir(path.dirname(dirPath));
-    fs.mkdirSync(dirPath);
-}
-exports.ensureDir = ensureDir;
-function getVersion(root) {
-    let version = process.env['BUILD_SOURCEVERSION'];
-    if (!version || !/^[0-9a-f]{40}$/i.test(version)) {
-        version = git.getVersion(root);
-    }
-    return version;
-}
-exports.getVersion = getVersion;
-function rebase(count) {
-    return rename(f => {
-        const parts = f.dirname ? f.dirname.split(/[\/\\]/) : [];
-        f.dirname = parts.slice(count).join(path.sep);
-    });
-}
-exports.rebase = rebase;
-function filter(fn) {
-    const result = es.through(function (data) {
-        if (fn(data)) {
-            this.emit('data', data);
-        }
-        else {
-            result.restore.push(data);
-        }
-    });
-    result.restore = es.through();
-    return result;
-}
-exports.filter = filter;
-function versionStringToNumber(versionStr) {
-    const semverRegex = /(\d+)\.(\d+)\.(\d+)/;
-    const match = versionStr.match(semverRegex);
-    if (!match) {
-        throw new Error('Version string is not properly formatted: ' + versionStr);
-    }
-    return parseInt(match[1], 10) * 1e4 + parseInt(match[2], 10) * 1e2 + parseInt(match[3], 10);
-}
-exports.versionStringToNumber = versionStringToNumber;
-function streamToPromise(stream) {
-    return new Promise((c, e) => {
-        stream.on('error', err => e(err));
-        stream.on('end', () => c());
-    });
-}
-exports.streamToPromise = streamToPromise;
-function getElectronVersion() {
-    // NOTE@coder: Fix version due to .yarnrc removal.
-    return process.versions.node;
-    const yarnrc = fs.readFileSync(path.join(root, '.yarnrc'), 'utf8');
-    const target = /^target "(.*)"$/m.exec(yarnrc)[1];
-    return target;
-}
-exports.getElectronVersion = getElectronVersion;
diff --git a/lib/vscode/build/lib/util.ts b/lib/vscode/build/lib/util.ts
deleted file mode 100644
index 2c64a4bfe64b..000000000000
--- a/lib/vscode/build/lib/util.ts
+++ /dev/null
@@ -1,341 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-'use strict';
-
-import * as es from 'event-stream';
-import debounce = require('debounce');
-import * as _filter from 'gulp-filter';
-import * as rename from 'gulp-rename';
-import * as _ from 'underscore';
-import * as path from 'path';
-import * as fs from 'fs';
-import * as _rimraf from 'rimraf';
-import * as git from './git';
-import * as VinylFile from 'vinyl';
-import { ThroughStream } from 'through';
-import * as sm from 'source-map';
-
-const root = path.dirname(path.dirname(__dirname));
-
-export interface ICancellationToken {
-	isCancellationRequested(): boolean;
-}
-
-const NoCancellationToken: ICancellationToken = { isCancellationRequested: () => false };
-
-export interface IStreamProvider {
-	(cancellationToken?: ICancellationToken): NodeJS.ReadWriteStream;
-}
-
-export function incremental(streamProvider: IStreamProvider, initial: NodeJS.ReadWriteStream, supportsCancellation?: boolean): NodeJS.ReadWriteStream {
-	const input = es.through();
-	const output = es.through();
-	let state = 'idle';
-	let buffer = Object.create(null);
-
-	const token: ICancellationToken | undefined = !supportsCancellation ? undefined : { isCancellationRequested: () => Object.keys(buffer).length > 0 };
-
-	const run = (input: NodeJS.ReadWriteStream, isCancellable: boolean) => {
-		state = 'running';
-
-		const stream = !supportsCancellation ? streamProvider() : streamProvider(isCancellable ? token : NoCancellationToken);
-
-		input
-			.pipe(stream)
-			.pipe(es.through(undefined, () => {
-				state = 'idle';
-				eventuallyRun();
-			}))
-			.pipe(output);
-	};
-
-	if (initial) {
-		run(initial, false);
-	}
-
-	const eventuallyRun = debounce(() => {
-		const paths = Object.keys(buffer);
-
-		if (paths.length === 0) {
-			return;
-		}
-
-		const data = paths.map(path => buffer[path]);
-		buffer = Object.create(null);
-		run(es.readArray(data), true);
-	}, 500);
-
-	input.on('data', (f: any) => {
-		buffer[f.path] = f;
-
-		if (state === 'idle') {
-			eventuallyRun();
-		}
-	});
-
-	return es.duplex(input, output);
-}
-
-export function fixWin32DirectoryPermissions(): NodeJS.ReadWriteStream {
-	if (!/win32/.test(process.platform)) {
-		return es.through();
-	}
-
-	return es.mapSync<VinylFile, VinylFile>(f => {
-		if (f.stat && f.stat.isDirectory && f.stat.isDirectory()) {
-			f.stat.mode = 16877;
-		}
-
-		return f;
-	});
-}
-
-export function setExecutableBit(pattern?: string | string[]): NodeJS.ReadWriteStream {
-	const setBit = es.mapSync<VinylFile, VinylFile>(f => {
-		if (!f.stat) {
-			f.stat = { isFile() { return true; } } as any;
-		}
-		f.stat.mode = /* 100755 */ 33261;
-		return f;
-	});
-
-	if (!pattern) {
-		return setBit;
-	}
-
-	const input = es.through();
-	const filter = _filter(pattern, { restore: true });
-	const output = input
-		.pipe(filter)
-		.pipe(setBit)
-		.pipe(filter.restore);
-
-	return es.duplex(input, output);
-}
-
-export function toFileUri(filePath: string): string {
-	const match = filePath.match(/^([a-z])\:(.*)$/i);
-
-	if (match) {
-		filePath = '/' + match[1].toUpperCase() + ':' + match[2];
-	}
-
-	return 'file://' + filePath.replace(/\\/g, '/');
-}
-
-export function skipDirectories(): NodeJS.ReadWriteStream {
-	return es.mapSync<VinylFile, VinylFile | undefined>(f => {
-		if (!f.isDirectory()) {
-			return f;
-		}
-	});
-}
-
-export function cleanNodeModules(rulePath: string): NodeJS.ReadWriteStream {
-	const rules = fs.readFileSync(rulePath, 'utf8')
-		.split(/\r?\n/g)
-		.map(line => line.trim())
-		.filter(line => line && !/^#/.test(line));
-
-	const excludes = rules.filter(line => !/^!/.test(line)).map(line => `!**/node_modules/${line}`);
-	const includes = rules.filter(line => /^!/.test(line)).map(line => `**/node_modules/${line.substr(1)}`);
-
-	const input = es.through();
-	const output = es.merge(
-		input.pipe(_filter(['**', ...excludes])),
-		input.pipe(_filter(includes))
-	);
-
-	return es.duplex(input, output);
-}
-
-declare class FileSourceMap extends VinylFile {
-	public sourceMap: sm.RawSourceMap;
-}
-
-export function loadSourcemaps(): NodeJS.ReadWriteStream {
-	const input = es.through();
-
-	const output = input
-		.pipe(es.map<FileSourceMap, FileSourceMap | undefined>((f, cb): FileSourceMap | undefined => {
-			if (f.sourceMap) {
-				cb(undefined, f);
-				return;
-			}
-
-			if (!f.contents) {
-				cb(undefined, f);
-				return;
-			}
-
-			const contents = (<Buffer>f.contents).toString('utf8');
-
-			const reg = /\/\/# sourceMappingURL=(.*)$/g;
-			let lastMatch: RegExpMatchArray | null = null;
-			let match: RegExpMatchArray | null = null;
-
-			while (match = reg.exec(contents)) {
-				lastMatch = match;
-			}
-
-			if (!lastMatch) {
-				f.sourceMap = {
-					version: '3',
-					names: [],
-					mappings: '',
-					sources: [f.relative],
-					sourcesContent: [contents]
-				};
-
-				cb(undefined, f);
-				return;
-			}
-
-			f.contents = Buffer.from(contents.replace(/\/\/# sourceMappingURL=(.*)$/g, ''), 'utf8');
-
-			fs.readFile(path.join(path.dirname(f.path), lastMatch[1]), 'utf8', (err, contents) => {
-				if (err) { return cb(err); }
-
-				f.sourceMap = JSON.parse(contents);
-				cb(undefined, f);
-			});
-		}));
-
-	return es.duplex(input, output);
-}
-
-export function stripSourceMappingURL(): NodeJS.ReadWriteStream {
-	const input = es.through();
-
-	const output = input
-		.pipe(es.mapSync<VinylFile, VinylFile>(f => {
-			const contents = (<Buffer>f.contents).toString('utf8');
-			f.contents = Buffer.from(contents.replace(/\n\/\/# sourceMappingURL=(.*)$/gm, ''), 'utf8');
-			return f;
-		}));
-
-	return es.duplex(input, output);
-}
-
-export function rewriteSourceMappingURL(sourceMappingURLBase: string): NodeJS.ReadWriteStream {
-	const input = es.through();
-
-	const output = input
-		.pipe(es.mapSync<VinylFile, VinylFile>(f => {
-			const contents = (<Buffer>f.contents).toString('utf8');
-			const str = `//# sourceMappingURL=${sourceMappingURLBase}/${path.dirname(f.relative).replace(/\\/g, '/')}/$1`;
-			f.contents = Buffer.from(contents.replace(/\n\/\/# sourceMappingURL=(.*)$/gm, str));
-			return f;
-		}));
-
-	return es.duplex(input, output);
-}
-
-export function rimraf(dir: string): () => Promise<void> {
-	const result = () => new Promise<void>((c, e) => {
-		let retries = 0;
-
-		const retry = () => {
-			_rimraf(dir, { maxBusyTries: 1 }, (err: any) => {
-				if (!err) {
-					return c();
-				}
-
-				if (err.code === 'ENOTEMPTY' && ++retries < 5) {
-					return setTimeout(() => retry(), 10);
-				}
-
-				return e(err);
-			});
-		};
-
-		retry();
-	});
-
-	result.taskName = `clean-${path.basename(dir).toLowerCase()}`;
-	return result;
-}
-
-function _rreaddir(dirPath: string, prepend: string, result: string[]): void {
-	const entries = fs.readdirSync(dirPath, { withFileTypes: true });
-	for (const entry of entries) {
-		if (entry.isDirectory()) {
-			_rreaddir(path.join(dirPath, entry.name), `${prepend}/${entry.name}`, result);
-		} else {
-			result.push(`${prepend}/${entry.name}`);
-		}
-	}
-}
-
-export function rreddir(dirPath: string): string[] {
-	let result: string[] = [];
-	_rreaddir(dirPath, '', result);
-	return result;
-}
-
-export function ensureDir(dirPath: string): void {
-	if (fs.existsSync(dirPath)) {
-		return;
-	}
-	ensureDir(path.dirname(dirPath));
-	fs.mkdirSync(dirPath);
-}
-
-export function getVersion(root: string): string | undefined {
-	let version = process.env['BUILD_SOURCEVERSION'];
-
-	if (!version || !/^[0-9a-f]{40}$/i.test(version)) {
-		version = git.getVersion(root);
-	}
-
-	return version;
-}
-
-export function rebase(count: number): NodeJS.ReadWriteStream {
-	return rename(f => {
-		const parts = f.dirname ? f.dirname.split(/[\/\\]/) : [];
-		f.dirname = parts.slice(count).join(path.sep);
-	});
-}
-
-export interface FilterStream extends NodeJS.ReadWriteStream {
-	restore: ThroughStream;
-}
-
-export function filter(fn: (data: any) => boolean): FilterStream {
-	const result = <FilterStream><any>es.through(function (data) {
-		if (fn(data)) {
-			this.emit('data', data);
-		} else {
-			result.restore.push(data);
-		}
-	});
-
-	result.restore = es.through();
-	return result;
-}
-
-export function versionStringToNumber(versionStr: string) {
-	const semverRegex = /(\d+)\.(\d+)\.(\d+)/;
-	const match = versionStr.match(semverRegex);
-	if (!match) {
-		throw new Error('Version string is not properly formatted: ' + versionStr);
-	}
-
-	return parseInt(match[1], 10) * 1e4 + parseInt(match[2], 10) * 1e2 + parseInt(match[3], 10);
-}
-
-export function streamToPromise(stream: NodeJS.ReadWriteStream): Promise<void> {
-	return new Promise((c, e) => {
-		stream.on('error', err => e(err));
-		stream.on('end', () => c());
-	});
-}
-
-export function getElectronVersion(): string {
-	// NOTE@coder: Fix version due to .yarnrc removal.
-	return process.versions.node;
-}
diff --git a/lib/vscode/build/lib/watch/.gitignore b/lib/vscode/build/lib/watch/.gitignore
deleted file mode 100644
index d777dcaa9d6e..000000000000
--- a/lib/vscode/build/lib/watch/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-.yarnrc
\ No newline at end of file
diff --git a/lib/vscode/build/lib/watch/index.js b/lib/vscode/build/lib/watch/index.js
deleted file mode 100644
index 949cb91cff09..000000000000
--- a/lib/vscode/build/lib/watch/index.js
+++ /dev/null
@@ -1,9 +0,0 @@
-"use strict";
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-const watch = process.platform === 'win32' ? require('./watch-win32') : require('vscode-gulp-watch');
-module.exports = function () {
-    return watch.apply(null, arguments);
-};
diff --git a/lib/vscode/build/lib/watch/index.ts b/lib/vscode/build/lib/watch/index.ts
deleted file mode 100644
index ce4bdfd75edf..000000000000
--- a/lib/vscode/build/lib/watch/index.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-const watch = process.platform === 'win32' ? require('./watch-win32') : require('vscode-gulp-watch');
-
-module.exports = function () {
-	return watch.apply(null, arguments);
-};
diff --git a/lib/vscode/build/lib/watch/package.json b/lib/vscode/build/lib/watch/package.json
deleted file mode 100644
index e2e4f5520255..000000000000
--- a/lib/vscode/build/lib/watch/package.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-  "name": "watch",
-  "version": "1.0.0",
-  "description": "",
-  "author": "Microsoft ",
-  "private": true,
-  "license": "MIT",
-  "devDependencies": {},
-  "dependencies": {
-    "vscode-gulp-watch": "^5.0.3"
-  }
-}
diff --git a/lib/vscode/build/lib/watch/watch-win32.js b/lib/vscode/build/lib/watch/watch-win32.js
deleted file mode 100644
index 71681c9c9510..000000000000
--- a/lib/vscode/build/lib/watch/watch-win32.js
+++ /dev/null
@@ -1,100 +0,0 @@
-"use strict";
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-Object.defineProperty(exports, "__esModule", { value: true });
-const path = require("path");
-const cp = require("child_process");
-const fs = require("fs");
-const File = require("vinyl");
-const es = require("event-stream");
-const filter = require("gulp-filter");
-const watcherPath = path.join(__dirname, 'watcher.exe');
-function toChangeType(type) {
-    switch (type) {
-        case '0': return 'change';
-        case '1': return 'add';
-        default: return 'unlink';
-    }
-}
-function watch(root) {
-    const result = es.through();
-    let child = cp.spawn(watcherPath, [root]);
-    child.stdout.on('data', function (data) {
-        const lines = data.toString('utf8').split('\n');
-        for (let i = 0; i < lines.length; i++) {
-            const line = lines[i].trim();
-            if (line.length === 0) {
-                continue;
-            }
-            const changeType = line[0];
-            const changePath = line.substr(2);
-            // filter as early as possible
-            if (/^\.git/.test(changePath) || /(^|\\)out($|\\)/.test(changePath)) {
-                continue;
-            }
-            const changePathFull = path.join(root, changePath);
-            const file = new File({
-                path: changePathFull,
-                base: root
-            });
-            file.event = toChangeType(changeType);
-            result.emit('data', file);
-        }
-    });
-    child.stderr.on('data', function (data) {
-        result.emit('error', data);
-    });
-    child.on('exit', function (code) {
-        result.emit('error', 'Watcher died with code ' + code);
-        child = null;
-    });
-    process.once('SIGTERM', function () { process.exit(0); });
-    process.once('SIGTERM', function () { process.exit(0); });
-    process.once('exit', function () { if (child) {
-        child.kill();
-    } });
-    return result;
-}
-const cache = Object.create(null);
-module.exports = function (pattern, options) {
-    options = options || {};
-    const cwd = path.normalize(options.cwd || process.cwd());
-    let watcher = cache[cwd];
-    if (!watcher) {
-        watcher = cache[cwd] = watch(cwd);
-    }
-    const rebase = !options.base ? es.through() : es.mapSync(function (f) {
-        f.base = options.base;
-        return f;
-    });
-    return watcher
-        .pipe(filter(['**', '!.git{,/**}'])) // ignore all things git
-        .pipe(filter(pattern))
-        .pipe(es.map(function (file, cb) {
-        fs.stat(file.path, function (err, stat) {
-            if (err && err.code === 'ENOENT') {
-                return cb(undefined, file);
-            }
-            if (err) {
-                return cb();
-            }
-            if (!stat.isFile()) {
-                return cb();
-            }
-            fs.readFile(file.path, function (err, contents) {
-                if (err && err.code === 'ENOENT') {
-                    return cb(undefined, file);
-                }
-                if (err) {
-                    return cb();
-                }
-                file.contents = contents;
-                file.stat = stat;
-                cb(undefined, file);
-            });
-        });
-    }))
-        .pipe(rebase);
-};
diff --git a/lib/vscode/build/lib/watch/watch-win32.ts b/lib/vscode/build/lib/watch/watch-win32.ts
deleted file mode 100644
index 833c8d9c6724..000000000000
--- a/lib/vscode/build/lib/watch/watch-win32.ts
+++ /dev/null
@@ -1,108 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-import * as path from 'path';
-import * as cp from 'child_process';
-import * as fs from 'fs';
-import * as File from 'vinyl';
-import * as es from 'event-stream';
-import * as filter from 'gulp-filter';
-import { Stream } from 'stream';
-
-const watcherPath = path.join(__dirname, 'watcher.exe');
-
-function toChangeType(type: '0' | '1' | '2'): 'change' | 'add' | 'unlink' {
-	switch (type) {
-		case '0': return 'change';
-		case '1': return 'add';
-		default: return 'unlink';
-	}
-}
-
-function watch(root: string): Stream {
-	const result = es.through();
-	let child: cp.ChildProcess | null = cp.spawn(watcherPath, [root]);
-
-	child.stdout!.on('data', function (data) {
-		const lines: string[] = data.toString('utf8').split('\n');
-		for (let i = 0; i < lines.length; i++) {
-			const line = lines[i].trim();
-			if (line.length === 0) {
-				continue;
-			}
-
-			const changeType = <'0' | '1' | '2'>line[0];
-			const changePath = line.substr(2);
-
-			// filter as early as possible
-			if (/^\.git/.test(changePath) || /(^|\\)out($|\\)/.test(changePath)) {
-				continue;
-			}
-
-			const changePathFull = path.join(root, changePath);
-
-			const file = new File({
-				path: changePathFull,
-				base: root
-			});
-			(<any>file).event = toChangeType(changeType);
-			result.emit('data', file);
-		}
-	});
-
-	child.stderr!.on('data', function (data) {
-		result.emit('error', data);
-	});
-
-	child.on('exit', function (code) {
-		result.emit('error', 'Watcher died with code ' + code);
-		child = null;
-	});
-
-	process.once('SIGTERM', function () { process.exit(0); });
-	process.once('SIGTERM', function () { process.exit(0); });
-	process.once('exit', function () { if (child) { child.kill(); } });
-
-	return result;
-}
-
-const cache: { [cwd: string]: Stream; } = Object.create(null);
-
-module.exports = function (pattern: string | string[] | filter.FileFunction, options?: { cwd?: string; base?: string; }) {
-	options = options || {};
-
-	const cwd = path.normalize(options.cwd || process.cwd());
-	let watcher = cache[cwd];
-
-	if (!watcher) {
-		watcher = cache[cwd] = watch(cwd);
-	}
-
-	const rebase = !options.base ? es.through() : es.mapSync(function (f: File) {
-		f.base = options!.base!;
-		return f;
-	});
-
-	return watcher
-		.pipe(filter(['**', '!.git{,/**}'])) // ignore all things git
-		.pipe(filter(pattern))
-		.pipe(es.map(function (file: File, cb) {
-			fs.stat(file.path, function (err, stat) {
-				if (err && err.code === 'ENOENT') { return cb(undefined, file); }
-				if (err) { return cb(); }
-				if (!stat.isFile()) { return cb(); }
-
-				fs.readFile(file.path, function (err, contents) {
-					if (err && err.code === 'ENOENT') { return cb(undefined, file); }
-					if (err) { return cb(); }
-
-					file.contents = contents;
-					file.stat = stat;
-					cb(undefined, file);
-				});
-			});
-		}))
-		.pipe(rebase);
-};
diff --git a/lib/vscode/build/lib/watch/watcher.exe b/lib/vscode/build/lib/watch/watcher.exe
deleted file mode 100644
index d4101748e4db..000000000000
Binary files a/lib/vscode/build/lib/watch/watcher.exe and /dev/null differ
diff --git a/lib/vscode/build/lib/watch/yarn.lock b/lib/vscode/build/lib/watch/yarn.lock
deleted file mode 100644
index 258c0edadadd..000000000000
--- a/lib/vscode/build/lib/watch/yarn.lock
+++ /dev/null
@@ -1,400 +0,0 @@
-# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
-# yarn lockfile v1
-
-
-ansi-colors@4.1.1:
-  version "4.1.1"
-  resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348"
-  integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==
-
-ansi-colors@^1.0.1:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-1.1.0.tgz#6374b4dd5d4718ff3ce27a671a3b1cad077132a9"
-  integrity sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==
-  dependencies:
-    ansi-wrap "^0.1.0"
-
-ansi-gray@^0.1.1:
-  version "0.1.1"
-  resolved "https://registry.yarnpkg.com/ansi-gray/-/ansi-gray-0.1.1.tgz#2962cf54ec9792c48510a3deb524436861ef7251"
-  integrity sha1-KWLPVOyXksSFEKPetSRDaGHvclE=
-  dependencies:
-    ansi-wrap "0.1.0"
-
-ansi-wrap@0.1.0, ansi-wrap@^0.1.0:
-  version "0.1.0"
-  resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf"
-  integrity sha1-qCJQ3bABXponyoLoLqYDu/pF768=
-
-anymatch@^3.1.1, anymatch@~3.1.1:
-  version "3.1.1"
-  resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142"
-  integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==
-  dependencies:
-    normalize-path "^3.0.0"
-    picomatch "^2.0.4"
-
-arr-diff@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520"
-  integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=
-
-arr-union@^3.1.0:
-  version "3.1.0"
-  resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
-  integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=
-
-assign-symbols@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
-  integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=
-
-binary-extensions@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.0.0.tgz#23c0df14f6a88077f5f986c0d167ec03c3d5537c"
-  integrity sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==
-
-braces@~3.0.2:
-  version "3.0.2"
-  resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
-  integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
-  dependencies:
-    fill-range "^7.0.1"
-
-chokidar@3.5.1:
-  version "3.5.1"
-  resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a"
-  integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==
-  dependencies:
-    anymatch "~3.1.1"
-    braces "~3.0.2"
-    glob-parent "~5.1.0"
-    is-binary-path "~2.1.0"
-    is-glob "~4.0.1"
-    normalize-path "~3.0.0"
-    readdirp "~3.5.0"
-  optionalDependencies:
-    fsevents "~2.3.1"
-
-clone-buffer@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58"
-  integrity sha1-4+JbIHrE5wGvch4staFnksrD3Fg=
-
-clone-stats@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz#b3782dff8bb5474e18b9b6bf0fdfe782f8777680"
-  integrity sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=
-
-clone@^2.1.1:
-  version "2.1.2"
-  resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f"
-  integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=
-
-cloneable-readable@^1.0.0:
-  version "1.1.3"
-  resolved "https://registry.yarnpkg.com/cloneable-readable/-/cloneable-readable-1.1.3.tgz#120a00cb053bfb63a222e709f9683ea2e11d8cec"
-  integrity sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==
-  dependencies:
-    inherits "^2.0.1"
-    process-nextick-args "^2.0.0"
-    readable-stream "^2.3.5"
-
-color-support@^1.1.3:
-  version "1.1.3"
-  resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2"
-  integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==
-
-core-util-is@~1.0.0:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
-  integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
-
-extend-shallow@^3.0.2:
-  version "3.0.2"
-  resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8"
-  integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=
-  dependencies:
-    assign-symbols "^1.0.0"
-    is-extendable "^1.0.1"
-
-fancy-log@^1.3.3:
-  version "1.3.3"
-  resolved "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.3.tgz#dbc19154f558690150a23953a0adbd035be45fc7"
-  integrity sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==
-  dependencies:
-    ansi-gray "^0.1.1"
-    color-support "^1.1.3"
-    parse-node-version "^1.0.0"
-    time-stamp "^1.0.0"
-
-fill-range@^7.0.1:
-  version "7.0.1"
-  resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
-  integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
-  dependencies:
-    to-regex-range "^5.0.1"
-
-first-chunk-stream@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/first-chunk-stream/-/first-chunk-stream-2.0.0.tgz#1bdecdb8e083c0664b91945581577a43a9f31d70"
-  integrity sha1-G97NuOCDwGZLkZRVgVd6Q6nzHXA=
-  dependencies:
-    readable-stream "^2.0.2"
-
-fsevents@~2.3.1:
-  version "2.3.1"
-  resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.1.tgz#b209ab14c61012636c8863507edf7fb68cc54e9f"
-  integrity sha512-YR47Eg4hChJGAB1O3yEAOkGO+rlzutoICGqGo9EZ4lKWokzZRSyIW1QmTzqjtw8MJdj9srP869CuWw/hyzSiBw==
-
-glob-parent@^5.1.1, glob-parent@~5.1.0:
-  version "5.1.2"
-  resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
-  integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
-  dependencies:
-    is-glob "^4.0.1"
-
-graceful-fs@^4.1.2:
-  version "4.2.3"
-  resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423"
-  integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==
-
-inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3:
-  version "2.0.4"
-  resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
-  integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
-
-is-binary-path@~2.1.0:
-  version "2.1.0"
-  resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
-  integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
-  dependencies:
-    binary-extensions "^2.0.0"
-
-is-extendable@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4"
-  integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==
-  dependencies:
-    is-plain-object "^2.0.4"
-
-is-extglob@^2.1.1:
-  version "2.1.1"
-  resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
-  integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
-
-is-glob@^4.0.1, is-glob@~4.0.1:
-  version "4.0.1"
-  resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc"
-  integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==
-  dependencies:
-    is-extglob "^2.1.1"
-
-is-number@^7.0.0:
-  version "7.0.0"
-  resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
-  integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
-
-is-plain-object@^2.0.4:
-  version "2.0.4"
-  resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
-  integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==
-  dependencies:
-    isobject "^3.0.1"
-
-is-utf8@^0.2.0, is-utf8@^0.2.1:
-  version "0.2.1"
-  resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
-  integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=
-
-isarray@~1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
-  integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
-
-isobject@^3.0.1:
-  version "3.0.1"
-  resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
-  integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8=
-
-normalize-path@^3.0.0, normalize-path@~3.0.0:
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
-  integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
-
-object-assign@^4.1.1:
-  version "4.1.1"
-  resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
-  integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
-
-parse-node-version@^1.0.0:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b"
-  integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==
-
-picomatch@^2.0.4, picomatch@^2.2.1:
-  version "2.2.2"
-  resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad"
-  integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==
-
-pify@^2.3.0:
-  version "2.3.0"
-  resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
-  integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw=
-
-plugin-error@1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/plugin-error/-/plugin-error-1.0.1.tgz#77016bd8919d0ac377fdcdd0322328953ca5781c"
-  integrity sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==
-  dependencies:
-    ansi-colors "^1.0.1"
-    arr-diff "^4.0.0"
-    arr-union "^3.1.0"
-    extend-shallow "^3.0.2"
-
-process-nextick-args@^2.0.0, process-nextick-args@~2.0.0:
-  version "2.0.1"
-  resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
-  integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
-
-readable-stream@^2.0.2, readable-stream@^2.3.5:
-  version "2.3.7"
-  resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
-  integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
-  dependencies:
-    core-util-is "~1.0.0"
-    inherits "~2.0.3"
-    isarray "~1.0.0"
-    process-nextick-args "~2.0.0"
-    safe-buffer "~5.1.1"
-    string_decoder "~1.1.1"
-    util-deprecate "~1.0.1"
-
-readable-stream@^3.6.0:
-  version "3.6.0"
-  resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
-  integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==
-  dependencies:
-    inherits "^2.0.3"
-    string_decoder "^1.1.1"
-    util-deprecate "^1.0.1"
-
-readdirp@~3.5.0:
-  version "3.5.0"
-  resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e"
-  integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==
-  dependencies:
-    picomatch "^2.2.1"
-
-remove-trailing-separator@^1.0.1:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef"
-  integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8=
-
-replace-ext@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb"
-  integrity sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=
-
-safe-buffer@~5.1.0, safe-buffer@~5.1.1:
-  version "5.1.2"
-  resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
-  integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
-
-safe-buffer@~5.2.0:
-  version "5.2.1"
-  resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
-  integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
-
-string_decoder@^1.1.1:
-  version "1.3.0"
-  resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
-  integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
-  dependencies:
-    safe-buffer "~5.2.0"
-
-string_decoder@~1.1.1:
-  version "1.1.1"
-  resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
-  integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
-  dependencies:
-    safe-buffer "~5.1.0"
-
-strip-bom-buf@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/strip-bom-buf/-/strip-bom-buf-1.0.0.tgz#1cb45aaf57530f4caf86c7f75179d2c9a51dd572"
-  integrity sha1-HLRar1dTD0yvhsf3UXnSyaUd1XI=
-  dependencies:
-    is-utf8 "^0.2.1"
-
-strip-bom-stream@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/strip-bom-stream/-/strip-bom-stream-2.0.0.tgz#f87db5ef2613f6968aa545abfe1ec728b6a829ca"
-  integrity sha1-+H217yYT9paKpUWr/h7HKLaoKco=
-  dependencies:
-    first-chunk-stream "^2.0.0"
-    strip-bom "^2.0.0"
-
-strip-bom@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e"
-  integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=
-  dependencies:
-    is-utf8 "^0.2.0"
-
-time-stamp@^1.0.0:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3"
-  integrity sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=
-
-to-regex-range@^5.0.1:
-  version "5.0.1"
-  resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
-  integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
-  dependencies:
-    is-number "^7.0.0"
-
-util-deprecate@^1.0.1, util-deprecate@~1.0.1:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
-  integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
-
-vinyl-file@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/vinyl-file/-/vinyl-file-3.0.0.tgz#b104d9e4409ffa325faadd520642d0a3b488b365"
-  integrity sha1-sQTZ5ECf+jJfqt1SBkLQo7SIs2U=
-  dependencies:
-    graceful-fs "^4.1.2"
-    pify "^2.3.0"
-    strip-bom-buf "^1.0.0"
-    strip-bom-stream "^2.0.0"
-    vinyl "^2.0.1"
-
-vinyl@^2.0.1, vinyl@^2.2.0:
-  version "2.2.1"
-  resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.2.1.tgz#23cfb8bbab5ece3803aa2c0a1eb28af7cbba1974"
-  integrity sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==
-  dependencies:
-    clone "^2.1.1"
-    clone-buffer "^1.0.0"
-    clone-stats "^1.0.0"
-    cloneable-readable "^1.0.0"
-    remove-trailing-separator "^1.0.1"
-    replace-ext "^1.0.0"
-
-vscode-gulp-watch@^5.0.3:
-  version "5.0.3"
-  resolved "https://registry.yarnpkg.com/vscode-gulp-watch/-/vscode-gulp-watch-5.0.3.tgz#1ca1c03581d43692ecb1fe0b9afd4256faeb701b"
-  integrity sha512-MTUp2yLE9CshhkNSNV58EQNxQSeF8lIj3mkXZX9a1vAk+EQNM2PAYdPUDSd/P/08W3PMHGznEiZyfK7JAjLosg==
-  dependencies:
-    ansi-colors "4.1.1"
-    anymatch "^3.1.1"
-    chokidar "3.5.1"
-    fancy-log "^1.3.3"
-    glob-parent "^5.1.1"
-    normalize-path "^3.0.0"
-    object-assign "^4.1.1"
-    plugin-error "1.0.1"
-    readable-stream "^3.6.0"
-    vinyl "^2.2.0"
-    vinyl-file "^3.0.0"
diff --git a/lib/vscode/build/monaco/LICENSE b/lib/vscode/build/monaco/LICENSE
deleted file mode 100644
index 76fdc58a0d7f..000000000000
--- a/lib/vscode/build/monaco/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2016 - present Microsoft Corporation
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/lib/vscode/build/monaco/README-npm.md b/lib/vscode/build/monaco/README-npm.md
deleted file mode 100644
index 737e06bbc5c4..000000000000
--- a/lib/vscode/build/monaco/README-npm.md
+++ /dev/null
@@ -1,14 +0,0 @@
-# monaco-editor-core
-
-> This npm module is a building block for the [monaco-editor](https://www.npmjs.com/package/monaco-editor)
-npm module and unless you are doing something special (e.g. authoring a monaco editor language that can be shipped
-and consumed independently), it is best to consume the [monaco-editor](https://www.npmjs.com/package/monaco-editor) module
-that contains this module and adds languages supports.
-
-The Monaco Editor is the code editor that powers [VS Code](https://github.com/microsoft/vscode),
-a good page describing the code editor's features is [here](https://code.visualstudio.com/docs/editor/editingevolved).
-
-This npm module contains the core editor functionality, as it comes from the [vscode repository](https://github.com/microsoft/vscode).
-
-## License
-[MIT](https://github.com/microsoft/vscode/blob/main/LICENSE.txt)
diff --git a/lib/vscode/build/monaco/README.md b/lib/vscode/build/monaco/README.md
deleted file mode 100644
index 3acbb4eebdbe..000000000000
--- a/lib/vscode/build/monaco/README.md
+++ /dev/null
@@ -1,20 +0,0 @@
-# Steps to publish a new version of monaco-editor-core
-
-## Generate monaco.d.ts
-
-* The `monaco.d.ts` is now automatically generated when running `gulp watch`
-
-## Bump version
-
-* increase version in `build/monaco/package.json`
-
-## Generate npm contents for monaco-editor-core
-
-* Be sure to have all changes committed **and pushed to the remote**
-* (the generated files contain the HEAD sha and that should be available on the remote)
-* run gulp editor-distro
-
-## Publish
-
-* `cd out-monaco-editor-core`
-* `npm publish`
diff --git a/lib/vscode/build/monaco/ThirdPartyNotices.txt b/lib/vscode/build/monaco/ThirdPartyNotices.txt
deleted file mode 100644
index 8b488daf191a..000000000000
--- a/lib/vscode/build/monaco/ThirdPartyNotices.txt
+++ /dev/null
@@ -1,90 +0,0 @@
-THIRD-PARTY SOFTWARE NOTICES AND INFORMATION
-Do Not Translate or Localize
-
-This project incorporates components from the projects listed below. The original copyright notices and the licenses
-under which Microsoft received such components are set forth below. Microsoft reserves all rights not expressly granted
-herein, whether by implication, estoppel or otherwise.
-
-
-
-%% nodejs path library (https://github.com/nodejs/node/tree/43dd49c9782848c25e5b03448c8a0f923f13c158)
-=========================================
-Copyright Joyent, Inc. and other Node contributors.
-
-Permission is hereby granted, free of charge, to any person obtaining a
-copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to permit
-persons to whom the Software is furnished to do so, subject to the
-following conditions:
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-USE OR OTHER DEALINGS IN THE SOFTWARE.
-=========================================
-END OF nodejs path library NOTICES AND INFORMATION
-
-
-
-
-%% string_scorer version 0.1.20 (https://github.com/joshaven/string_score)
-=========================================
-This software is released under the MIT license:
-
-Copyright (c) Joshaven Potter
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software is furnished to do so,
-subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
-FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
-COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
-IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-=========================================
-END OF string_scorer NOTICES AND INFORMATION
-
-
-
-
-%% chjj-marked NOTICES AND INFORMATION BEGIN HERE
-=========================================
-The MIT License (MIT)
-
-Copyright (c) 2011-2014, Christopher Jeffrey (https://github.com/chjj/)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-=========================================
-END OF chjj-marked NOTICES AND INFORMATION
diff --git a/lib/vscode/build/monaco/esm.core.js b/lib/vscode/build/monaco/esm.core.js
deleted file mode 100644
index b84b5fb4f412..000000000000
--- a/lib/vscode/build/monaco/esm.core.js
+++ /dev/null
@@ -1,21 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-// Entry file for webpack bunlding.
-
-import * as monaco from 'monaco-editor-core';
-
-self.MonacoEnvironment = {
-	getWorkerUrl: function (moduleId, label) {
-		return './editor.worker.bundle.js';
-	}
-};
-
-monaco.editor.create(document.getElementById('container'), {
-	value: [
-		'var hello = "hello world";'
-	].join('\n'),
-	language: 'javascript'
-});
diff --git a/lib/vscode/build/monaco/monaco.d.ts.recipe b/lib/vscode/build/monaco/monaco.d.ts.recipe
deleted file mode 100644
index bb053136f425..000000000000
--- a/lib/vscode/build/monaco/monaco.d.ts.recipe
+++ /dev/null
@@ -1,99 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-declare let MonacoEnvironment: monaco.Environment | undefined;
-
-declare namespace monaco {
-
-	export type Thenable<T> = PromiseLike<T>;
-
-	export interface Environment {
-		globalAPI?: boolean;
-		baseUrl?: string;
-		getWorker?(workerId: string, label: string): Worker;
-		getWorkerUrl?(workerId: string, label: string): string;
-	}
-
-	export interface IDisposable {
-		dispose(): void;
-	}
-
-	export interface IEvent<T> {
-		(listener: (e: T) => any, thisArg?: any): IDisposable;
-	}
-
-	/**
-	 * A helper that allows to emit and listen to typed events
-	 */
-	export class Emitter<T> {
-		constructor();
-		readonly event: Event<T>;
-		fire(event: T): void;
-		dispose(): void;
-	}
-
-#include(vs/platform/markers/common/markers): MarkerTag, MarkerSeverity
-#include(vs/base/common/cancellation): CancellationTokenSource, CancellationToken
-#include(vs/base/common/uri): URI, UriComponents
-#include(vs/base/common/keyCodes): KeyCode
-#include(vs/editor/common/standalone/standaloneBase): KeyMod
-#include(vs/base/common/htmlContent): IMarkdownString
-#include(vs/base/browser/keyboardEvent): IKeyboardEvent
-#include(vs/base/browser/mouseEvent): IMouseEvent
-#include(vs/editor/common/editorCommon): IScrollEvent
-#include(vs/editor/common/core/position): IPosition, Position
-#include(vs/editor/common/core/range): IRange, Range
-#include(vs/editor/common/core/selection): ISelection, Selection, SelectionDirection
-#include(vs/editor/common/core/token): Token
-}
-
-declare namespace monaco.editor {
-#include(vs/editor/browser/widget/diffNavigator): IDiffNavigator
-#includeAll(vs/editor/standalone/browser/standaloneEditor;modes.=>languages.;editorCommon.=>):
-#include(vs/editor/standalone/common/standaloneThemeService): BuiltinTheme, IStandaloneThemeData, IColors
-#include(vs/editor/common/modes/supports/tokenization): ITokenThemeRule
-#include(vs/editor/common/services/webWorker): MonacoWebWorker, IWebWorkerOptions
-#include(vs/editor/standalone/browser/standaloneCodeEditor): IActionDescriptor, IGlobalEditorOptions, IStandaloneEditorConstructionOptions, IDiffEditorConstructionOptions, IStandaloneCodeEditor, IStandaloneDiffEditor
-export interface ICommandHandler {
-	(...args: any[]): void;
-}
-#include(vs/platform/contextkey/common/contextkey): IContextKey
-#include(vs/editor/standalone/browser/standaloneServices): IEditorOverrideServices
-#include(vs/platform/markers/common/markers): IMarker, IMarkerData, IRelatedInformation
-#include(vs/editor/standalone/browser/colorizer): IColorizerOptions, IColorizerElementOptions
-#include(vs/base/common/scrollable): ScrollbarVisibility
-#include(vs/platform/theme/common/themeService): ThemeColor
-#includeAll(vs/editor/common/model;LanguageIdentifier=>languages.LanguageIdentifier): IScrollEvent
-#includeAll(vs/editor/common/editorCommon;editorOptions.=>): IScrollEvent
-#includeAll(vs/editor/common/model/textModelEvents):
-#includeAll(vs/editor/common/controller/cursorEvents):
-#include(vs/platform/accessibility/common/accessibility): AccessibilitySupport
-#includeAll(vs/editor/common/config/editorOptions):
-#includeAll(vs/editor/browser/editorBrowser;editorCommon.=>;editorOptions.=>):
-#include(vs/editor/common/config/fontInfo): FontInfo, BareFontInfo
-
-//compatibility:
-export type IReadOnlyModel = ITextModel;
-export type IModel = ITextModel;
-}
-
-declare namespace monaco.languages {
-
-#includeAll(vs/editor/standalone/browser/standaloneLanguages;modes.=>;editorCommon.=>editor.;model.=>editor.;IMarkerData=>editor.IMarkerData):
-#includeAll(vs/editor/common/modes/languageConfiguration):
-#includeAll(vs/editor/common/modes;editorCommon.IRange=>IRange;editorCommon.IPosition=>IPosition;editorCommon.=>editor.;IMarkerData=>editor.IMarkerData;model.=>editor.):
-#include(vs/editor/common/services/modeService): ILanguageExtensionPoint
-#includeAll(vs/editor/standalone/common/monarch/monarchTypes):
-
-}
-
-declare namespace monaco.worker {
-
-#include(vs/editor/common/model/mirrorTextModel): IMirrorTextModel
-#includeAll(vs/editor/common/services/editorSimpleWorker;):
-
-}
-
-//dtsv=3
diff --git a/lib/vscode/build/monaco/monaco.usage.recipe b/lib/vscode/build/monaco/monaco.usage.recipe
deleted file mode 100644
index 3c48da8d85a7..000000000000
--- a/lib/vscode/build/monaco/monaco.usage.recipe
+++ /dev/null
@@ -1,54 +0,0 @@
-
-// This file is adding references to various symbols which should not be removed via tree shaking
-
-import { ServiceIdentifier } from './vs/platform/instantiation/common/instantiation';
-import { create as create1 } from './vs/base/common/worker/simpleWorker';
-import { create as create2 } from './vs/editor/common/services/editorSimpleWorker';
-import { SyncDescriptor0, SyncDescriptor1, SyncDescriptor2, SyncDescriptor3, SyncDescriptor4, SyncDescriptor5, SyncDescriptor6, SyncDescriptor7, SyncDescriptor8 } from './vs/platform/instantiation/common/descriptors';
-import * as editorAPI from './vs/editor/editor.api';
-
-(function () {
-	var a: any;
-	var b: any;
-	a = (<ServiceIdentifier<any>>b).type;
-	a = create1;
-	a = create2;
-
-	// injection madness
-	a = (<SyncDescriptor0<any>>b).ctor;
-	a = (<SyncDescriptor0<any>>b).bind;
-	a = (<SyncDescriptor1<any, any>>b).ctor;
-	a = (<SyncDescriptor1<any, any>>b).bind;
-	a = (<SyncDescriptor1<any, any>>b).ctor;
-	a = (<SyncDescriptor1<any, any>>b).bind;
-	a = (<SyncDescriptor2<any, any, any>>b).ctor;
-	a = (<SyncDescriptor2<any, any, any>>b).bind;
-	a = (<SyncDescriptor3<any, any, any, any>>b).ctor;
-	a = (<SyncDescriptor3<any, any, any, any>>b).bind;
-	a = (<SyncDescriptor4<any, any, any, any, any>>b).ctor;
-	a = (<SyncDescriptor4<any, any, any, any, any>>b).bind;
-	a = (<SyncDescriptor5<any, any, any, any, any, any>>b).ctor;
-	a = (<SyncDescriptor5<any, any, any, any, any, any>>b).bind;
-	a = (<SyncDescriptor6<any, any, any, any, any, any, any>>b).ctor;
-	a = (<SyncDescriptor6<any, any, any, any, any, any, any>>b).bind;
-	a = (<SyncDescriptor7<any, any, any, any, any, any, any, any>>b).ctor;
-	a = (<SyncDescriptor7<any, any, any, any, any, any, any, any>>b).bind;
-	a = (<SyncDescriptor8<any, any, any, any, any, any, any, any, any>>b).ctor;
-	a = (<SyncDescriptor8<any, any, any, any, any, any, any, any, any>>b).bind;
-
-	// exported API
-	a = editorAPI.CancellationTokenSource;
-	a = editorAPI.Emitter;
-	a = editorAPI.KeyCode;
-	a = editorAPI.KeyMod;
-	a = editorAPI.Position;
-	a = editorAPI.Range;
-	a = editorAPI.Selection;
-	a = editorAPI.SelectionDirection;
-	a = editorAPI.MarkerSeverity;
-	a = editorAPI.MarkerTag;
-	a = editorAPI.Uri;
-	a = editorAPI.Token;
-	a = editorAPI.editor;
-	a = editorAPI.languages;
-})();
diff --git a/lib/vscode/build/monaco/monaco.webpack.config.js b/lib/vscode/build/monaco/monaco.webpack.config.js
deleted file mode 100644
index 974a341a197e..000000000000
--- a/lib/vscode/build/monaco/monaco.webpack.config.js
+++ /dev/null
@@ -1,44 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-const path = require('path');
-
-module.exports = {
-	mode: 'production',
-	entry: {
-		'core': './build/monaco/esm.core.js',
-		'editor.worker': './out-monaco-editor-core/esm/vs/editor/editor.worker.js'
-	},
-	output: {
-		globalObject: 'self',
-		filename: '[name].bundle.js',
-		path: path.resolve(__dirname, 'dist')
-	},
-	module: {
-		rules: [{
-			test: /\.css$/,
-			use: ['style-loader', 'css-loader']
-		}, {
-			test: /\.ttf$/,
-			use: ['file-loader']
-		}]
-	},
-	resolve: {
-		alias: {
-			'monaco-editor-core': path.resolve(__dirname, '../../out-monaco-editor-core/esm/vs/editor/editor.main.js'),
-		}
-	},
-	stats: {
-		all: false,
-		modules: true,
-		maxModules: 0,
-		errors: true,
-		warnings: true,
-		// our additional options
-		moduleTrace: true,
-		errorDetails: true,
-		chunks: true
-	}
-};
diff --git a/lib/vscode/build/monaco/package.json b/lib/vscode/build/monaco/package.json
deleted file mode 100644
index 9a6e05c12383..000000000000
--- a/lib/vscode/build/monaco/package.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
-  "name": "monaco-editor-core",
-  "private": true,
-  "version": "0.23.0",
-  "description": "A browser based code editor",
-  "author": "Microsoft Corporation",
-  "license": "MIT",
-  "typings": "./esm/vs/editor/editor.api.d.ts",
-  "module": "./esm/vs/editor/editor.main.js",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/microsoft/vscode"
-  },
-  "bugs": {
-    "url": "https://github.com/microsoft/vscode/issues"
-  }
-}
diff --git a/lib/vscode/build/monaco/version.txt b/lib/vscode/build/monaco/version.txt
deleted file mode 100644
index e69de29bb2d1..000000000000
diff --git a/lib/vscode/build/npm/dirs.js b/lib/vscode/build/npm/dirs.js
deleted file mode 100644
index ce069fbe29b1..000000000000
--- a/lib/vscode/build/npm/dirs.js
+++ /dev/null
@@ -1,51 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-// Complete list of directories where yarn should be executed to install node modules
-exports.dirs = [
-	'',
-	'build',
-	'build/lib/watch',
-	'extensions',
-	'extensions/configuration-editing',
-	'extensions/css-language-features',
-	'extensions/css-language-features/server',
-	'extensions/debug-auto-launch',
-	'extensions/debug-server-ready',
-	'extensions/emmet',
-	'extensions/extension-editing',
-	'extensions/git',
-	'extensions/github',
-	'extensions/github-authentication',
-	'extensions/grunt',
-	'extensions/gulp',
-	'extensions/html-language-features',
-	'extensions/html-language-features/server',
-	'extensions/image-preview',
-	'extensions/jake',
-	'extensions/json-language-features',
-	'extensions/json-language-features/server',
-	'extensions/markdown-language-features',
-	'extensions/merge-conflict',
-	'extensions/microsoft-authentication',
-	'extensions/notebook-markdown-extensions',
-	'extensions/npm',
-	'extensions/php-language-features',
-	'extensions/search-result',
-	'extensions/simple-browser',
-	'extensions/testing-editor-contributions',
-	'extensions/typescript-language-features',
-	'extensions/vscode-api-tests',
-	'extensions/vscode-colorize-tests',
-	'extensions/vscode-custom-editor-tests',
-	'extensions/vscode-notebook-tests',
-	'extensions/vscode-test-resolver',
-	'remote',
-	'remote/web',
-	'test/automation',
-	'test/integration/browser',
-	'test/monaco',
-	'test/smoke',
-];
diff --git a/lib/vscode/build/npm/postinstall.js b/lib/vscode/build/npm/postinstall.js
deleted file mode 100644
index 18ccef884a9d..000000000000
--- a/lib/vscode/build/npm/postinstall.js
+++ /dev/null
@@ -1,91 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-const cp = require('child_process');
-const path = require('path');
-const fs = require('fs');
-const { dirs } = require('./dirs');
-const yarn = process.platform === 'win32' ? 'yarn.cmd' : 'yarn';
-
-/**
- * @param {string} location
- * @param {*} [opts]
- */
-function yarnInstall(location, opts) {
-	opts = opts || { env: process.env };
-	opts.cwd = location;
-	opts.stdio = 'inherit';
-
-	const raw = process.env['npm_config_argv'] || '{}';
-	const argv = JSON.parse(raw);
-	const original = argv.original || [];
-	const args = original.filter(arg => arg === '--ignore-optional' || arg === '--frozen-lockfile');
-	if (opts.ignoreEngines) {
-		args.push('--ignore-engines');
-		delete opts.ignoreEngines;
-	}
-
-	console.log(`Installing dependencies in ${location}...`);
-	console.log(`$ yarn ${args.join(' ')}`);
-	const result = cp.spawnSync(yarn, args, opts);
-
-	if (result.error || result.status !== 0) {
-		process.exit(1);
-	}
-}
-
-for (let dir of dirs) {
-
-	if (dir === '') {
-		// `yarn` already executed in root
-		continue;
-	}
-
-	if (/^remote/.test(dir) && process.platform === 'win32' && (process.arch === 'arm64' || process.env['npm_config_arch'] === 'arm64')) {
-		// windows arm: do not execute `yarn` on remote folder
-		continue;
-	}
-
-	if (dir === 'build/lib/watch') {
-		// node modules for watching, specific to host node version, not electron
-		yarnInstallBuildDependencies();
-		continue;
-	}
-
-	let opts;
-
-	if (dir === 'remote') {
-		// node modules used by vscode server
-		const env = { ...process.env };
-		if (process.env['VSCODE_REMOTE_CC']) { env['CC'] = process.env['VSCODE_REMOTE_CC']; }
-		if (process.env['VSCODE_REMOTE_CXX']) { env['CXX'] = process.env['VSCODE_REMOTE_CXX']; }
-		if (process.env['VSCODE_REMOTE_NODE_GYP']) { env['npm_config_node_gyp'] = process.env['VSCODE_REMOTE_NODE_GYP']; }
-		opts = { env };
-	} else if (/^extensions\//.test(dir)) {
-		opts = { ignoreEngines: true };
-	}
-
-	yarnInstall(dir, opts);
-}
-
-function yarnInstallBuildDependencies() {
-	// make sure we install the deps of build/lib/watch for the system installed
-	// node, since that is the driver of gulp
-	const watchPath = path.join(path.dirname(__dirname), 'lib', 'watch');
-	const yarnrcPath = path.join(watchPath, '.yarnrc');
-
-	const disturl = 'https://nodejs.org/download/release';
-	const target = process.versions.node;
-	const runtime = 'node';
-
-	const yarnrc = `disturl "${disturl}"
-target "${target}"
-runtime "${runtime}"`;
-
-	fs.writeFileSync(yarnrcPath, yarnrc, 'utf8');
-	yarnInstall(watchPath);
-}
-
-cp.execSync('git config pull.rebase true');
diff --git a/lib/vscode/build/npm/preinstall.js b/lib/vscode/build/npm/preinstall.js
deleted file mode 100644
index 09dac06dc7c1..000000000000
--- a/lib/vscode/build/npm/preinstall.js
+++ /dev/null
@@ -1,68 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-let err = false;
-
-const majorNodeVersion = parseInt(/^(\d+)\./.exec(process.versions.node)[1]);
-
-if (majorNodeVersion < 10 || majorNodeVersion >= 17) {
-	console.error('\033[1;31m*** Please use node.js versions >=10 and <=17.\033[0;0m');
-	err = true;
-}
-
-const cp = require('child_process');
-const yarnVersion = cp.execSync('yarn -v', { encoding: 'utf8' }).trim();
-const parsedYarnVersion = /^(\d+)\.(\d+)\./.exec(yarnVersion);
-const majorYarnVersion = parseInt(parsedYarnVersion[1]);
-const minorYarnVersion = parseInt(parsedYarnVersion[2]);
-
-if (majorYarnVersion < 1 || minorYarnVersion < 10) {
-	console.error('\033[1;31m*** Please use yarn >=1.10.1.\033[0;0m');
-	err = true;
-}
-
-if (!/yarn[\w-.]*\.js$|yarnpkg$/.test(process.env['npm_execpath'])) {
-	console.error('\033[1;31m*** Please use yarn to install dependencies.\033[0;0m');
-	err = true;
-}
-
-if (process.platform === 'win32') {
-	if (!hasSupportedVisualStudioVersion()) {
-		console.error('\033[1;31m*** Invalid C/C++ Compiler Toolchain. Please check https://github.com/microsoft/vscode/wiki/How-to-Contribute.\033[0;0m');
-		err = true;
-	}
-}
-
-if (err) {
-	console.error('');
-	process.exit(1);
-}
-
-function hasSupportedVisualStudioVersion() {
-	const fs = require('fs');
-	const path = require('path');
-	// Translated over from
-	// https://source.chromium.org/chromium/chromium/src/+/master:build/vs_toolchain.py;l=140-175
-	const supportedVersions = ['2019', '2017'];
-
-	const availableVersions = [];
-	for (const version of supportedVersions) {
-		let vsPath = process.env[`vs${version}_install`];
-		if (vsPath && fs.existsSync(vsPath)) {
-			availableVersions.push(version);
-			break;
-		}
-		const programFiles86Path = process.env['ProgramFiles(x86)'];
-		if (programFiles86Path) {
-			vsPath = `${programFiles86Path}/Microsoft Visual Studio/${version}`;
-			const vsTypes = ['Enterprise', 'Professional', 'Community', 'Preview', 'BuildTools'];
-			if (vsTypes.some(vsType => fs.existsSync(path.join(vsPath, vsType)))) {
-				availableVersions.push(version);
-				break;
-			}
-		}
-	}
-	return availableVersions.length;
-}
diff --git a/lib/vscode/build/npm/update-all-grammars.js b/lib/vscode/build/npm/update-all-grammars.js
deleted file mode 100644
index ec7d2e843a4c..000000000000
--- a/lib/vscode/build/npm/update-all-grammars.js
+++ /dev/null
@@ -1,47 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-const cp = require('child_process');
-const fs = require('fs');
-const path = require('path');
-
-async function spawn(cmd, args, opts) {
-	return new Promise((c, e) => {
-		const child = cp.spawn(cmd, args, { shell: true, stdio: 'inherit', env: process.env, ...opts });
-		child.on('close', code => code === 0 ? c() : e(`Returned ${code}`));
-	});
-}
-
-async function main() {
-	await spawn('yarn', [], { cwd: 'extensions' });
-
-	for (const extension of fs.readdirSync('extensions')) {
-		try {
-			let packageJSON = JSON.parse(fs.readFileSync(path.join('extensions', extension, 'package.json')).toString());
-			if (!(packageJSON && packageJSON.scripts && packageJSON.scripts['update-grammar'])) {
-				continue;
-			}
-		} catch {
-			continue;
-		}
-
-		await spawn(`npm`, ['run', 'update-grammar'], { cwd: `extensions/${extension}` });
-	}
-
-	// run integration tests
-
-	if (process.platform === 'win32') {
-		cp.spawn('.\\scripts\\test-integration.bat', [], { env: process.env, stdio: 'inherit' });
-	} else {
-		cp.spawn('/bin/bash', ['./scripts/test-integration.sh'], { env: process.env, stdio: 'inherit' });
-	}
-}
-
-if (require.main === module) {
-	main().catch(err => {
-		console.error(err);
-		process.exit(1);
-	});
-}
diff --git a/lib/vscode/build/npm/update-distro.js b/lib/vscode/build/npm/update-distro.js
deleted file mode 100644
index 947a4967d60b..000000000000
--- a/lib/vscode/build/npm/update-distro.js
+++ /dev/null
@@ -1,18 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-const cp = require('child_process');
-const path = require('path');
-const fs = require('fs');
-
-const rootPath = path.dirname(path.dirname(path.dirname(__dirname)));
-const vscodePath = path.join(rootPath, 'vscode');
-const distroPath = path.join(rootPath, 'vscode-distro');
-const commit = cp.execSync('git rev-parse HEAD', { cwd: distroPath, encoding: 'utf8' }).trim();
-const packageJsonPath = path.join(vscodePath, 'package.json');
-const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));
-
-packageJson.distro = commit;
-fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2));
\ No newline at end of file
diff --git a/lib/vscode/build/npm/update-localization-extension.js b/lib/vscode/build/npm/update-localization-extension.js
deleted file mode 100644
index 7c6a73aa9d84..000000000000
--- a/lib/vscode/build/npm/update-localization-extension.js
+++ /dev/null
@@ -1,101 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-'use strict';
-
-let i18n = require("../lib/i18n");
-
-let fs = require("fs");
-let path = require("path");
-
-let gulp = require('gulp');
-let vfs = require("vinyl-fs");
-let rimraf = require('rimraf');
-let minimist = require('minimist');
-
-function update(options) {
-	let idOrPath = options._;
-	if (!idOrPath) {
-		throw new Error('Argument must be the location of the localization extension.');
-	}
-	let location = options.location;
-	if (location !== undefined && !fs.existsSync(location)) {
-		throw new Error(`${location} doesn't exist.`);
-	}
-	let locExtFolder = idOrPath;
-	if (/^\w{2,3}(-\w+)?$/.test(idOrPath)) {
-		locExtFolder = path.join('..', 'vscode-loc', 'i18n', `vscode-language-pack-${idOrPath}`);
-	}
-	let locExtStat = fs.statSync(locExtFolder);
-	if (!locExtStat || !locExtStat.isDirectory) {
-		throw new Error('No directory found at ' + idOrPath);
-	}
-	let packageJSON = JSON.parse(fs.readFileSync(path.join(locExtFolder, 'package.json')).toString());
-	let contributes = packageJSON['contributes'];
-	if (!contributes) {
-		throw new Error('The extension must define a "localizations" contribution in the "package.json"');
-	}
-	let localizations = contributes['localizations'];
-	if (!localizations) {
-		throw new Error('The extension must define a "localizations" contribution of type array in the "package.json"');
-	}
-
-	localizations.forEach(function (localization) {
-		if (!localization.languageId || !localization.languageName || !localization.localizedLanguageName) {
-			throw new Error('Each localization contribution must define "languageId", "languageName" and "localizedLanguageName" properties.');
-		}
-		let languageId = localization.languageId;
-		let translationDataFolder = path.join(locExtFolder, 'translations');
-
-		switch (languageId) {
-			case 'zh-cn':
-				languageId = 'zh-Hans';
-				break;
-			case 'zh-tw':
-				languageId = 'zh-Hant';
-				break;
-			case 'pt-br':
-				languageId = 'pt-BR';
-				break;
-		}
-
-		if (fs.existsSync(translationDataFolder) && fs.existsSync(path.join(translationDataFolder, 'main.i18n.json'))) {
-			console.log('Clearing  \'' + translationDataFolder + '\'...');
-			rimraf.sync(translationDataFolder);
-		}
-
-		console.log(`Importing translations for ${languageId} form '${location}' to '${translationDataFolder}' ...`);
-		let translationPaths = [];
-		gulp.src(path.join(location, '**', languageId, '*.xlf'), { silent: false })
-			.pipe(i18n.prepareI18nPackFiles(i18n.externalExtensionsWithTranslations, translationPaths, languageId === 'ps'))
-			.on('error', (error) => {
-				console.log(`Error occurred while importing translations:`);
-				translationPaths = undefined;
-				if (Array.isArray(error)) {
-					error.forEach(console.log);
-				} else if (error) {
-					console.log(error);
-				} else {
-					console.log('Unknown error');
-				}
-			})
-			.pipe(vfs.dest(translationDataFolder))
-			.on('end', function () {
-				if (translationPaths !== undefined) {
-					localization.translations = [];
-					for (let tp of translationPaths) {
-						localization.translations.push({ id: tp.id, path: `./translations/${tp.resourceName}` });
-					}
-					fs.writeFileSync(path.join(locExtFolder, 'package.json'), JSON.stringify(packageJSON, null, '\t'));
-				}
-			});
-	});
-}
-if (path.basename(process.argv[1]) === 'update-localization-extension.js') {
-	var options = minimist(process.argv.slice(2), {
-		string: 'location'
-	});
-	update(options);
-}
diff --git a/lib/vscode/build/package.json b/lib/vscode/build/package.json
deleted file mode 100644
index 69a210e5e57b..000000000000
--- a/lib/vscode/build/package.json
+++ /dev/null
@@ -1,60 +0,0 @@
-{
-  "name": "code-oss-dev-build",
-  "version": "1.0.0",
-  "license": "MIT",
-  "devDependencies": {
-    "@types/ansi-colors": "^3.2.0",
-    "@types/azure": "0.9.19",
-    "@types/byline": "^4.2.32",
-    "@types/debounce": "^1.0.0",
-    "@types/eslint": "4.16.1",
-    "@types/fancy-log": "^1.3.0",
-    "@types/glob": "^7.1.1",
-    "@types/gulp": "^4.0.5",
-    "@types/gulp-concat": "^0.0.32",
-    "@types/gulp-filter": "^3.0.32",
-    "@types/gulp-gzip": "^0.0.31",
-    "@types/gulp-json-editor": "^2.2.31",
-    "@types/gulp-rename": "^0.0.33",
-    "@types/gulp-sourcemaps": "^0.0.32",
-    "@types/mime": "0.0.29",
-    "@types/minimatch": "^3.0.3",
-    "@types/minimist": "^1.2.1",
-    "@types/mkdirp": "^1.0.1",
-    "@types/mocha": "^8.2.0",
-    "@types/node": "14.x",
-    "@types/p-limit": "^2.2.0",
-    "@types/plist": "^3.0.2",
-    "@types/pump": "^1.0.1",
-    "@types/request": "^2.47.0",
-    "@types/rimraf": "^2.0.4",
-    "@types/through": "^0.0.29",
-    "@types/through2": "^2.0.34",
-    "@types/underscore": "^1.8.9",
-    "@types/xml2js": "0.0.33",
-    "@typescript-eslint/experimental-utils": "~2.13.0",
-    "@typescript-eslint/parser": "^3.3.0",
-    "applicationinsights": "1.0.8",
-    "byline": "^5.0.0",
-    "colors": "^1.4.0",
-    "commander": "^7.0.0",
-    "esbuild": "^0.12.6",
-    "fs-extra": "^9.1.0",
-    "got": "11.8.1",
-    "iconv-lite-umd": "0.6.8",
-    "jsonc-parser": "^2.3.0",
-    "mime": "^1.4.1",
-    "mkdirp": "^1.0.4",
-    "p-limit": "^3.1.0",
-    "source-map": "0.6.1",
-    "typescript": "^4.4.0-dev.20210528",
-    "vsce": "1.88.0",
-    "vscode-universal": "deepak1556/universal#61454d96223b774c53cda10f72c2098c0ce02d58"
-  },
-  "scripts": {
-    "compile": "tsc -p tsconfig.build.json",
-    "watch": "tsc -p tsconfig.build.json --watch",
-    "npmCheckJs": "tsc --noEmit"
-  },
-  "dependencies": {}
-}
diff --git a/lib/vscode/build/polyfills/vscode-extension-telemetry.js b/lib/vscode/build/polyfills/vscode-extension-telemetry.js
deleted file mode 100644
index d038776c59c6..000000000000
--- a/lib/vscode/build/polyfills/vscode-extension-telemetry.js
+++ /dev/null
@@ -1,26 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-'use strict';
-Object.defineProperty(exports, "__esModule", { value: true });
-
-let TelemetryReporter = (function () {
-	function TelemetryReporter(extensionId, extensionVersion, key) {
-	}
-	TelemetryReporter.prototype.updateUserOptIn = function (key) {
-	};
-	TelemetryReporter.prototype.createAppInsightsClient = function (key) {
-	};
-	TelemetryReporter.prototype.getCommonProperties = function () {
-	};
-	TelemetryReporter.prototype.sendTelemetryEvent = function (eventName, properties, measurements) {
-	};
-	TelemetryReporter.prototype.dispose = function () {
-	};
-	TelemetryReporter.TELEMETRY_CONFIG_ID = 'telemetry';
-	TelemetryReporter.TELEMETRY_CONFIG_ENABLED_ID = 'enableTelemetry';
-	return TelemetryReporter;
-}());
-exports.default = TelemetryReporter;
diff --git a/lib/vscode/build/polyfills/vscode-nls.js b/lib/vscode/build/polyfills/vscode-nls.js
deleted file mode 100644
index b89250102afc..000000000000
--- a/lib/vscode/build/polyfills/vscode-nls.js
+++ /dev/null
@@ -1,79 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-'use strict';
-Object.defineProperty(exports, "__esModule", { value: true });
-
-function format(message, args) {
-	let result;
-	// if (isPseudo) {
-	// 	// FF3B and FF3D is the Unicode zenkaku representation for [ and ]
-	// 	message = '\uFF3B' + message.replace(/[aouei]/g, '$&$&') + '\uFF3D';
-	// }
-	if (args.length === 0) {
-		result = message;
-	}
-	else {
-		result = message.replace(/\{(\d+)\}/g, function (match, rest) {
-			let index = rest[0];
-			let arg = args[index];
-			let replacement = match;
-			if (typeof arg === 'string') {
-				replacement = arg;
-			}
-			else if (typeof arg === 'number' || typeof arg === 'boolean' || arg === void 0 || arg === null) {
-				replacement = String(arg);
-			}
-			return replacement;
-		});
-	}
-	return result;
-}
-
-function localize(key, message) {
-	let args = [];
-	for (let _i = 2; _i < arguments.length; _i++) {
-		args[_i - 2] = arguments[_i];
-	}
-	return format(message, args);
-}
-
-function loadMessageBundle(file) {
-	return localize;
-}
-
-let MessageFormat;
-(function (MessageFormat) {
-	MessageFormat["file"] = "file";
-	MessageFormat["bundle"] = "bundle";
-	MessageFormat["both"] = "both";
-})(MessageFormat = exports.MessageFormat || (exports.MessageFormat = {}));
-let BundleFormat;
-(function (BundleFormat) {
-	// the nls.bundle format
-	BundleFormat["standalone"] = "standalone";
-	BundleFormat["languagePack"] = "languagePack";
-})(BundleFormat = exports.BundleFormat || (exports.BundleFormat = {}));
-
-exports.loadMessageBundle = loadMessageBundle;
-function config(opts) {
-	if (opts) {
-		if (isString(opts.locale)) {
-			options.locale = opts.locale.toLowerCase();
-			options.language = options.locale;
-			resolvedLanguage = undefined;
-			resolvedBundles = Object.create(null);
-		}
-		if (opts.messageFormat !== undefined) {
-			options.messageFormat = opts.messageFormat;
-		}
-		if (opts.bundleFormat === BundleFormat.standalone && options.languagePackSupport === true) {
-			options.languagePackSupport = false;
-		}
-	}
-	isPseudo = options.locale === 'pseudo';
-	return loadMessageBundle;
-}
-exports.config = config;
diff --git a/lib/vscode/build/tsconfig.build.json b/lib/vscode/build/tsconfig.build.json
deleted file mode 100644
index 2402a092886f..000000000000
--- a/lib/vscode/build/tsconfig.build.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-	"extends": "./tsconfig.json",
-	"compilerOptions": {
-		"allowJs": false,
-		"checkJs": false
-	}
-}
\ No newline at end of file
diff --git a/lib/vscode/build/tsconfig.json b/lib/vscode/build/tsconfig.json
deleted file mode 100644
index f075fe3d4f54..000000000000
--- a/lib/vscode/build/tsconfig.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
-	"compilerOptions": {
-		"target": "es2017",
-		"module": "commonjs",
-		"removeComments": false,
-		"preserveConstEnums": true,
-		"sourceMap": false,
-		"resolveJsonModule": true,
-		"experimentalDecorators": true,
-		// enable JavaScript type checking for the language service
-		// use the tsconfig.build.json for compiling which disable JavaScript
-		// type checking so that JavaScript file are not transpiled
-		"allowJs": true,
-		"checkJs": true,
-		"strict": true,
-		"noUnusedLocals": true,
-		"noUnusedParameters": true,
-		"newLine": "lf"
-	},
-	"include": [
-		"**/*.ts"
-	],
-	"exclude": [
-		"node_modules/**"
-	]
-}
diff --git a/lib/vscode/build/win32/.gitignore b/lib/vscode/build/win32/.gitignore
deleted file mode 100644
index 809f6a264e95..000000000000
--- a/lib/vscode/build/win32/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-code-processed.iss
\ No newline at end of file
diff --git a/lib/vscode/build/win32/Cargo.lock b/lib/vscode/build/win32/Cargo.lock
deleted file mode 100644
index e27f58bf455c..000000000000
--- a/lib/vscode/build/win32/Cargo.lock
+++ /dev/null
@@ -1,258 +0,0 @@
-# This file is automatically @generated by Cargo.
-# It is not intended for manual editing.
-[[package]]
-name = "build_const"
-version = "0.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "byteorder"
-version = "1.2.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "chrono"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "num 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)",
- "time 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "crc"
-version = "1.7.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "build_const 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "inno_updater"
-version = "0.8.2"
-dependencies = [
- "byteorder 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "crc 1.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "slog 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "slog-async 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "slog-term 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "isatty"
-version = "0.1.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)",
- "termion 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "kernel32-sys"
-version = "0.2.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
- "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "lazy_static"
-version = "1.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "libc"
-version = "0.2.36"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "num"
-version = "0.1.41"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "num-integer 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)",
- "num-iter 0.1.34 (registry+https://github.com/rust-lang/crates.io-index)",
- "num-traits 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "num-integer"
-version = "0.1.35"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "num-traits 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "num-iter"
-version = "0.1.34"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "num-integer 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)",
- "num-traits 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "num-traits"
-version = "0.1.42"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "redox_syscall"
-version = "0.1.37"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "redox_termios"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "redox_syscall 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "slog"
-version = "2.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "slog-async"
-version = "2.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "slog 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "take_mut 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "thread_local 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "slog-term"
-version = "2.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "chrono 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "isatty 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "slog 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "term 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "thread_local 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "take_mut"
-version = "0.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "term"
-version = "0.4.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "termion"
-version = "1.5.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)",
- "redox_syscall 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)",
- "redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "thread_local"
-version = "0.3.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "lazy_static 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "time"
-version = "0.1.39"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)",
- "redox_syscall 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)",
- "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "unreachable"
-version = "1.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "void"
-version = "1.0.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "winapi"
-version = "0.2.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "winapi"
-version = "0.3.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "winapi-build"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "winapi-i686-pc-windows-gnu"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "winapi-x86_64-pc-windows-gnu"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[metadata]
-"checksum build_const 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e90dc84f5e62d2ebe7676b83c22d33b6db8bd27340fb6ffbff0a364efa0cb9c9"
-"checksum byteorder 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "652805b7e73fada9d85e9a6682a4abd490cb52d96aeecc12e33a0de34dfd0d23"
-"checksum chrono 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7c20ebe0b2b08b0aeddba49c609fe7957ba2e33449882cb186a180bc60682fa9"
-"checksum crc 1.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bd5d02c0aac6bd68393ed69e00bbc2457f3e89075c6349db7189618dc4ddc1d7"
-"checksum isatty 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "8f2a233726c7bb76995cec749d59582e5664823b7245d4970354408f1d79a7a2"
-"checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d"
-"checksum lazy_static 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c8f31047daa365f19be14b47c29df4f7c3b581832407daabe6ae77397619237d"
-"checksum libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)" = "1e5d97d6708edaa407429faa671b942dc0f2727222fb6b6539bf1db936e4b121"
-"checksum num 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)" = "cc4083e14b542ea3eb9b5f33ff48bd373a92d78687e74f4cc0a30caeb754f0ca"
-"checksum num-integer 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)" = "d1452e8b06e448a07f0e6ebb0bb1d92b8890eea63288c0b627331d53514d0fba"
-"checksum num-iter 0.1.34 (registry+https://github.com/rust-lang/crates.io-index)" = "7485fcc84f85b4ecd0ea527b14189281cf27d60e583ae65ebc9c088b13dffe01"
-"checksum num-traits 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "9936036cc70fe4a8b2d338ab665900323290efb03983c86cbe235ae800ad8017"
-"checksum redox_syscall 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)" = "0d92eecebad22b767915e4d529f89f28ee96dbbf5a4810d2b844373f136417fd"
-"checksum redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7e891cfe48e9100a70a3b6eb652fef28920c117d366339687bd5576160db0f76"
-"checksum slog 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0a6b13b17f4225771f7f15cece704a4e68d3a5f31278ed26367f497133398a18"
-"checksum slog-async 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5e319a30c08b004618d5f7ca2f2b1dad7b4623ba7fcb1a12846fc3b01e9eaa10"
-"checksum slog-term 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5bb5d9360b2b279b326824b3b4ca2402ead8a8138f0e5ec1900605c861bb6671"
-"checksum take_mut 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "50b910a1174df4aeb5738e8a0e7253883cf7801de40d094175a5a557e487f4c5"
-"checksum term 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "fa63644f74ce96fbeb9b794f66aff2a52d601cbd5e80f4b97123e3899f4570f1"
-"checksum termion 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "689a3bdfaab439fd92bc87df5c4c78417d3cbe537487274e9b0b2dce76e92096"
-"checksum thread_local 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "279ef31c19ededf577bfd12dfae728040a21f635b06a24cd670ff510edd38963"
-"checksum time 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)" = "a15375f1df02096fb3317256ce2cee6a1f42fc84ea5ad5fc8c421cfe40c73098"
-"checksum unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56"
-"checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d"
-"checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a"
-"checksum winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "04e3bd221fcbe8a271359c04f21a76db7d0c6028862d1bb5512d85e1e2eb5bb3"
-"checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc"
-"checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
-"checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
diff --git a/lib/vscode/build/win32/code.iss b/lib/vscode/build/win32/code.iss
deleted file mode 100644
index 50dcf76b882c..000000000000
--- a/lib/vscode/build/win32/code.iss
+++ /dev/null
@@ -1,1338 +0,0 @@
-#define RootLicenseFileName FileExists(RepoDir + '\LICENSE.rtf') ? 'LICENSE.rtf' : 'LICENSE.txt'
-#define LocalizedLanguageFile(Language = "") \
-    DirExists(RepoDir + "\licenses") && Language != "" \
-      ? ('; LicenseFile: "' + RepoDir + '\licenses\LICENSE-' + Language + '.rtf"') \
-      : '; LicenseFile: "' + RepoDir + '\' + RootLicenseFileName + '"'
-
-[Setup]
-AppId={#AppId}
-AppName={#NameLong}
-AppVerName={#NameVersion}
-AppPublisher=Microsoft Corporation
-AppPublisherURL=https://code.visualstudio.com/
-AppSupportURL=https://code.visualstudio.com/
-AppUpdatesURL=https://code.visualstudio.com/
-DefaultGroupName={#NameLong}
-AllowNoIcons=yes
-OutputDir={#OutputDir}
-OutputBaseFilename=VSCodeSetup
-Compression=lzma
-SolidCompression=yes
-AppMutex={code:GetAppMutex}
-SetupMutex={#AppMutex}setup
-WizardImageFile="{#RepoDir}\resources\win32\inno-big-100.bmp,{#RepoDir}\resources\win32\inno-big-125.bmp,{#RepoDir}\resources\win32\inno-big-150.bmp,{#RepoDir}\resources\win32\inno-big-175.bmp,{#RepoDir}\resources\win32\inno-big-200.bmp,{#RepoDir}\resources\win32\inno-big-225.bmp,{#RepoDir}\resources\win32\inno-big-250.bmp"
-WizardSmallImageFile="{#RepoDir}\resources\win32\inno-small-100.bmp,{#RepoDir}\resources\win32\inno-small-125.bmp,{#RepoDir}\resources\win32\inno-small-150.bmp,{#RepoDir}\resources\win32\inno-small-175.bmp,{#RepoDir}\resources\win32\inno-small-200.bmp,{#RepoDir}\resources\win32\inno-small-225.bmp,{#RepoDir}\resources\win32\inno-small-250.bmp"
-SetupIconFile={#RepoDir}\resources\win32\code.ico
-UninstallDisplayIcon={app}\{#ExeBasename}.exe
-ChangesEnvironment=true
-ChangesAssociations=true
-MinVersion=6.1.7600
-SourceDir={#SourceDir}
-AppVersion={#Version}
-VersionInfoVersion={#RawVersion}
-ShowLanguageDialog=auto
-ArchitecturesAllowed={#ArchitecturesAllowed}
-ArchitecturesInstallIn64BitMode={#ArchitecturesInstallIn64BitMode}
-WizardStyle=modern
-
-#ifdef Sign
-SignTool=esrp
-#endif
-
-#if "user" == InstallTarget
-DefaultDirName={userpf}\{#DirName}
-PrivilegesRequired=lowest
-#else
-DefaultDirName={pf}\{#DirName}
-#endif
-
-[Languages]
-Name: "english"; MessagesFile: "compiler:Default.isl,{#RepoDir}\build\win32\i18n\messages.en.isl" {#LocalizedLanguageFile}
-Name: "german"; MessagesFile: "compiler:Languages\German.isl,{#RepoDir}\build\win32\i18n\messages.de.isl" {#LocalizedLanguageFile("deu")}
-Name: "spanish"; MessagesFile: "compiler:Languages\Spanish.isl,{#RepoDir}\build\win32\i18n\messages.es.isl" {#LocalizedLanguageFile("esp")}
-Name: "french"; MessagesFile: "compiler:Languages\French.isl,{#RepoDir}\build\win32\i18n\messages.fr.isl" {#LocalizedLanguageFile("fra")}
-Name: "italian"; MessagesFile: "compiler:Languages\Italian.isl,{#RepoDir}\build\win32\i18n\messages.it.isl" {#LocalizedLanguageFile("ita")}
-Name: "japanese"; MessagesFile: "compiler:Languages\Japanese.isl,{#RepoDir}\build\win32\i18n\messages.ja.isl" {#LocalizedLanguageFile("jpn")}
-Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl,{#RepoDir}\build\win32\i18n\messages.ru.isl" {#LocalizedLanguageFile("rus")}
-Name: "korean"; MessagesFile: "{#RepoDir}\build\win32\i18n\Default.ko.isl,{#RepoDir}\build\win32\i18n\messages.ko.isl" {#LocalizedLanguageFile("kor")}
-Name: "simplifiedChinese"; MessagesFile: "{#RepoDir}\build\win32\i18n\Default.zh-cn.isl,{#RepoDir}\build\win32\i18n\messages.zh-cn.isl" {#LocalizedLanguageFile("chs")}
-Name: "traditionalChinese"; MessagesFile: "{#RepoDir}\build\win32\i18n\Default.zh-tw.isl,{#RepoDir}\build\win32\i18n\messages.zh-tw.isl" {#LocalizedLanguageFile("cht")}
-Name: "brazilianPortuguese"; MessagesFile: "compiler:Languages\BrazilianPortuguese.isl,{#RepoDir}\build\win32\i18n\messages.pt-br.isl" {#LocalizedLanguageFile("ptb")}
-Name: "hungarian"; MessagesFile: "{#RepoDir}\build\win32\i18n\Default.hu.isl,{#RepoDir}\build\win32\i18n\messages.hu.isl" {#LocalizedLanguageFile("hun")}
-Name: "turkish"; MessagesFile: "compiler:Languages\Turkish.isl,{#RepoDir}\build\win32\i18n\messages.tr.isl" {#LocalizedLanguageFile("trk")}
-
-[InstallDelete]
-Type: filesandordirs; Name: "{app}\resources\app\out"; Check: IsNotUpdate
-Type: filesandordirs; Name: "{app}\resources\app\plugins"; Check: IsNotUpdate
-Type: filesandordirs; Name: "{app}\resources\app\extensions"; Check: IsNotUpdate
-Type: filesandordirs; Name: "{app}\resources\app\node_modules"; Check: IsNotUpdate
-Type: filesandordirs; Name: "{app}\resources\app\node_modules.asar.unpacked"; Check: IsNotUpdate
-Type: files; Name: "{app}\resources\app\node_modules.asar"; Check: IsNotUpdate
-Type: files; Name: "{app}\resources\app\Credits_45.0.2454.85.html"; Check: IsNotUpdate
-
-[UninstallDelete]
-Type: filesandordirs; Name: "{app}\_"
-
-[Tasks]
-Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
-Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked; OnlyBelowVersion: 0,6.1
-Name: "addcontextmenufiles"; Description: "{cm:AddContextMenuFiles,{#NameShort}}"; GroupDescription: "{cm:Other}"; Flags: unchecked
-Name: "addcontextmenufolders"; Description: "{cm:AddContextMenuFolders,{#NameShort}}"; GroupDescription: "{cm:Other}"; Flags: unchecked
-Name: "associatewithfiles"; Description: "{cm:AssociateWithFiles,{#NameShort}}"; GroupDescription: "{cm:Other}"; Flags: unchecked
-Name: "addtopath"; Description: "{cm:AddToPath}"; GroupDescription: "{cm:Other}"
-Name: "runcode"; Description: "{cm:RunAfter,{#NameShort}}"; GroupDescription: "{cm:Other}"; Check: WizardSilent
-
-[Files]
-Source: "*"; Excludes: "\CodeSignSummary*.md,\tools,\tools\*,\resources\app\product.json"; DestDir: "{code:GetDestDir}"; Flags: ignoreversion recursesubdirs createallsubdirs
-Source: "tools\*"; DestDir: "{app}\tools"; Flags: ignoreversion
-Source: "{#ProductJsonPath}"; DestDir: "{code:GetDestDir}\resources\app"; Flags: ignoreversion
-
-[Icons]
-Name: "{group}\{#NameLong}"; Filename: "{app}\{#ExeBasename}.exe"; AppUserModelID: "{#AppUserId}"
-Name: "{autodesktop}\{#NameLong}"; Filename: "{app}\{#ExeBasename}.exe"; Tasks: desktopicon; AppUserModelID: "{#AppUserId}"
-Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\{#NameLong}"; Filename: "{app}\{#ExeBasename}.exe"; Tasks: quicklaunchicon; AppUserModelID: "{#AppUserId}"
-
-[Run]
-Filename: "{app}\{#ExeBasename}.exe"; Description: "{cm:LaunchProgram,{#NameLong}}"; Tasks: runcode; Flags: nowait postinstall; Check: ShouldRunAfterUpdate
-Filename: "{app}\{#ExeBasename}.exe"; Description: "{cm:LaunchProgram,{#NameLong}}"; Flags: nowait postinstall; Check: WizardNotSilent
-
-[Registry]
-#if "user" == InstallTarget
-#define SoftwareClassesRootKey "HKCU"
-#else
-#define SoftwareClassesRootKey "HKLM"
-#endif
-
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.ascx\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.ascx\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.ascx"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.ascx"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,ASCX}"; Flags: uninsdeletekey; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.ascx"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.ascx\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\xml.ico"; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.ascx\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.ascx\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
-
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.asp\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.asp\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.asp"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.asp"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,ASP}"; Flags: uninsdeletekey; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.asp"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.asp\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\html.ico"; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.asp\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.asp\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
-
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.aspx\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.aspx\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.aspx"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.aspx"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,ASPX}"; Flags: uninsdeletekey; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.aspx"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.aspx\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\html.ico"; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.aspx\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.aspx\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
-
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.bash\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.bash\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.bash"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.bash"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Bash}"; Flags: uninsdeletekey; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.bash"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.bash\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\shell.ico"; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.bash\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.bash\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
-
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.bash_login\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.bash_login\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.bash_login"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.bash_login"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Bash Login}"; Flags: uninsdeletekey; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.bash_login"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.bash_login\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\shell.ico"; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.bash_login\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.bash_login\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
-
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.bash_logout\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.bash_logout\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.bash_logout"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.bash_logout"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Bash Logout}"; Flags: uninsdeletekey; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.bash_logout"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.bash_logout\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\shell.ico"; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.bash_logout\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.bash_logout\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
-
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.bash_profile\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.bash_profile\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.bash_profile"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.bash_profile"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Bash Profile}"; Flags: uninsdeletekey; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.bash_profile"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.bash_profile\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\shell.ico"; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.bash_profile\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.bash_profile\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
-
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.bashrc\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.bashrc\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.bashrc"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.bashrc"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Bash RC}"; Flags: uninsdeletekey; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.bashrc"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.bashrc\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\shell.ico"; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.bashrc\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.bashrc\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
-
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.bib\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.bib\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.bib"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.bib"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,BibTeX}"; Flags: uninsdeletekey; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.bib"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.bib\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\default.ico"; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.bib\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.bib\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
-
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.bowerrc\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.bowerrc\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.bowerrc"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.bowerrc"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Bower RC}"; Flags: uninsdeletekey; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.bowerrc"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.bowerrc\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\bower.ico"; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.bowerrc\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.bowerrc\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
-
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.c++\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.c++\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.c++"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.c++"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,C++}"; Flags: uninsdeletekey; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.c++"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.c++\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\cpp.ico"; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.c++\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
-
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.c\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.c\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.c"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.c"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,C}"; Flags: uninsdeletekey; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.c"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.c\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\c.ico"; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.c\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.c\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
-
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.cc\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.cc\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.cc"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cc"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,C++}"; Flags: uninsdeletekey; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cc"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cc\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\cpp.ico"; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cc\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cc\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
-
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.cjs\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.cjs\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.cjs"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cjs"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,JavaScript}"; Flags: uninsdeletekey; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cjs"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cjs\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\javascript.ico"; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cjs\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cjs\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
-
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.clj\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.clj\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.clj"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.clj"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Clojure}"; Flags: uninsdeletekey; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.clj"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.clj\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\default.ico"; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.clj\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.clj\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
-
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.cljs\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.cljs\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.cljs"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cljs"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,ClojureScript}"; Flags: uninsdeletekey; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cljs"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cljs\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\default.ico"; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cljs\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cljs\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
-
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.cljx\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.cljx\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.cljx"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cljx"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,CLJX}"; Flags: uninsdeletekey; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cljx"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cljx\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\default.ico"; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cljx\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cljx\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
-
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.clojure\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.clojure\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.clojure"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.clojure"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Clojure}"; Flags: uninsdeletekey; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.clojure"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.clojure\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\default.ico"; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.clojure\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.clojure\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
-
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.code-workspace\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.code-workspace\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.code-workspace"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.code-workspace"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Code Workspace}"; Flags: uninsdeletekey; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.code"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.code-workspace\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\default.ico"; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.code-workspace\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.code-workspace\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
-
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.coffee\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.coffee\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.coffee"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.coffee"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,CoffeeScript}"; Flags: uninsdeletekey; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.coffee"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.coffee\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\default.ico"; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.coffee\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.coffee\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
-
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.config\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.config\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.config"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.config"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Configuration}"; Flags: uninsdeletekey; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.config"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.config\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\config.ico"; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.config\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.config\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
-
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.containerfile\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.containerfile\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.containerfile"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.containerfile"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Containerfile}"; Flags: uninsdeletekey; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.containerfile"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.containerfile\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\default.ico"; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.containerfile\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
-
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.cpp\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.cpp\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.cpp"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cpp"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,C++}"; Flags: uninsdeletekey; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cpp"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cpp\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\cpp.ico"; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cpp\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cpp\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
-
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.cs\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.cs\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.cs"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cs"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,C#}"; Flags: uninsdeletekey; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cs"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cs\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\csharp.ico"; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cs\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cs\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
-
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.cshtml\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.cshtml\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.cshtml"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cshtml"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,CSHTML}"; Flags: uninsdeletekey; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cshtml"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cshtml\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\html.ico"; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cshtml\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cshtml\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
-
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.csproj\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.csproj\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.csproj"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.csproj"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,C# Project}"; Flags: uninsdeletekey; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.csproj"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.csproj\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\xml.ico"; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.csproj\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.csproj\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
-
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.css\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.css\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.css"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.css"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,CSS}"; Flags: uninsdeletekey; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.css"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.css\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\css.ico"; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.css\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.css\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
-
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.csx\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.csx\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.csx"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.csx"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,C# Script}"; Flags: uninsdeletekey; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.csx"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.csx\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\csharp.ico"; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.csx\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.csx\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
-
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.ctp\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.ctp\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.ctp"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.ctp"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,CakePHP Template}"; Flags: uninsdeletekey; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.ctp"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.ctp\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\default.ico"; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.ctp\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.ctp\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
-
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.cxx\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.cxx\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.cxx"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cxx"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,C++}"; Flags: uninsdeletekey; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cxx"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cxx\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\cpp.ico"; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cxx\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cxx\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
-
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.dockerfile\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.dockerfile\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.dockerfile"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.dockerfile"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Dockerfile}"; Flags: uninsdeletekey; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.dockerfile"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.dockerfile\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\default.ico"; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.dockerfile\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.dockerfile\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
-
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.dot\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
-Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.do