obsidian-dev-utils 96.6.0 → 98.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +22 -0
- package/LICENSE +1 -1
- package/dist/integration-test-plugin/main.js +1762 -4197
- package/dist/lib/cjs/__merged.cjs +17 -9
- package/dist/lib/cjs/__merged.d.cts +3 -1
- package/dist/lib/cjs/desktop-zip-extractor.cjs +276 -0
- package/dist/lib/cjs/desktop-zip-extractor.d.cts +94 -0
- package/dist/lib/cjs/generated-during-build.cjs +1 -1
- package/dist/lib/cjs/index.cjs +4 -1
- package/dist/lib/cjs/index.d.cts +1 -0
- package/dist/lib/cjs/obsidian/components/rename-delete-handler-component.cjs +38 -38
- package/dist/lib/cjs/obsidian/demo-vault-naming.cjs +167 -0
- package/dist/lib/cjs/obsidian/demo-vault-naming.d.cts +54 -0
- package/dist/lib/cjs/obsidian/desktop-demo-vault-opener.cjs +20 -21
- package/dist/lib/cjs/obsidian/desktop-demo-vault-opener.d.cts +21 -16
- package/dist/lib/cjs/obsidian/desktop-trusted-input.cjs +9 -9
- package/dist/lib/cjs/obsidian/desktop-trusted-input.d.cts +23 -4
- package/dist/lib/cjs/obsidian/index.cjs +10 -1
- package/dist/lib/cjs/obsidian/index.d.cts +3 -0
- package/dist/lib/cjs/obsidian/mobile-trusted-input.cjs +195 -0
- package/dist/lib/cjs/obsidian/mobile-trusted-input.d.cts +93 -0
- package/dist/lib/cjs/obsidian/plugin/obsidian-plugin-repo-paths.cjs +2 -1
- package/dist/lib/cjs/obsidian/plugin/obsidian-plugin-repo-paths.d.cts +4 -0
- package/dist/lib/cjs/obsidian/resource-lock.cjs +122 -122
- package/dist/lib/cjs/obsidian/trusted-input.cjs +206 -0
- package/dist/lib/cjs/obsidian/trusted-input.d.cts +126 -0
- package/dist/lib/cjs/script-utils/build.cjs +30 -6
- package/dist/lib/cjs/script-utils/build.d.cts +5 -0
- package/dist/lib/cjs/script-utils/demo-vault.cjs +26 -6
- package/dist/lib/cjs/script-utils/demo-vault.d.cts +12 -8
- package/dist/lib/cjs/script-utils/exec.cjs +1 -1
- package/dist/lib/cjs/script-utils/formatters/dprint.cjs +3 -2
- package/dist/lib/cjs/script-utils/index.cjs +4 -1
- package/dist/lib/cjs/script-utils/index.d.cts +1 -0
- package/dist/lib/cjs/script-utils/linters/cspell.cjs +3 -3
- package/dist/lib/cjs/script-utils/linters/eslint-config.cjs +39 -1
- package/dist/lib/cjs/script-utils/linters/eslint-rules/index.cjs +16 -1
- package/dist/lib/cjs/script-utils/linters/eslint-rules/index.d.cts +5 -0
- package/dist/lib/cjs/script-utils/linters/eslint-rules/manifest-description.cjs +254 -0
- package/dist/lib/cjs/script-utils/linters/eslint-rules/manifest-description.d.cts +54 -0
- package/dist/lib/cjs/script-utils/linters/eslint-rules/manifest-helpers.cjs +217 -0
- package/dist/lib/cjs/script-utils/linters/eslint-rules/manifest-helpers.d.cts +141 -0
- package/dist/lib/cjs/script-utils/linters/eslint-rules/manifest-id.cjs +214 -0
- package/dist/lib/cjs/script-utils/linters/eslint-rules/manifest-id.d.cts +32 -0
- package/dist/lib/cjs/script-utils/linters/eslint-rules/manifest-name.cjs +215 -0
- package/dist/lib/cjs/script-utils/linters/eslint-rules/manifest-name.d.cts +30 -0
- package/dist/lib/cjs/script-utils/linters/eslint-rules/manifest-schema.cjs +318 -0
- package/dist/lib/cjs/script-utils/linters/eslint-rules/manifest-schema.d.cts +45 -0
- package/dist/lib/cjs/script-utils/linters/eslint-rules/obsidian-dev-utils-plugin.cjs +9 -1
- package/dist/lib/cjs/script-utils/linters/eslint.cjs +3 -2
- package/dist/lib/cjs/script-utils/linters/markdownlint.cjs +4 -4
- package/dist/lib/cjs/script-utils/npm-run.cjs +4 -3
- package/dist/lib/cjs/script-utils/obsidian-dev-utils-repo-paths.cjs +10 -1
- package/dist/lib/cjs/script-utils/obsidian-dev-utils-repo-paths.d.cts +37 -1
- package/dist/lib/cjs/script-utils/package-manager.cjs +287 -0
- package/dist/lib/cjs/script-utils/package-manager.d.cts +77 -0
- package/dist/lib/cjs/script-utils/version.cjs +21 -9
- package/dist/lib/esm/__merged.d.mts +3 -1
- package/dist/lib/esm/__merged.mjs +18 -10
- package/dist/lib/esm/desktop-zip-extractor.d.mts +94 -0
- package/dist/lib/esm/desktop-zip-extractor.mjs +174 -0
- package/dist/lib/esm/generated-during-build.mjs +1 -1
- package/dist/lib/esm/index.d.mts +1 -0
- package/dist/lib/esm/index.mjs +3 -1
- package/dist/lib/esm/obsidian/components/rename-delete-handler-component.mjs +38 -38
- package/dist/lib/esm/obsidian/demo-vault-naming.d.mts +54 -0
- package/dist/lib/esm/obsidian/demo-vault-naming.mjs +61 -0
- package/dist/lib/esm/obsidian/desktop-demo-vault-opener.d.mts +21 -16
- package/dist/lib/esm/obsidian/desktop-demo-vault-opener.mjs +23 -11
- package/dist/lib/esm/obsidian/desktop-trusted-input.d.mts +23 -4
- package/dist/lib/esm/obsidian/desktop-trusted-input.mjs +9 -9
- package/dist/lib/esm/obsidian/index.d.mts +3 -0
- package/dist/lib/esm/obsidian/index.mjs +7 -1
- package/dist/lib/esm/obsidian/mobile-trusted-input.d.mts +93 -0
- package/dist/lib/esm/obsidian/mobile-trusted-input.mjs +84 -0
- package/dist/lib/esm/obsidian/plugin/obsidian-plugin-repo-paths.d.mts +4 -0
- package/dist/lib/esm/obsidian/plugin/obsidian-plugin-repo-paths.mjs +2 -1
- package/dist/lib/esm/obsidian/resource-lock.mjs +122 -122
- package/dist/lib/esm/obsidian/trusted-input.d.mts +126 -0
- package/dist/lib/esm/obsidian/trusted-input.mjs +85 -0
- package/dist/lib/esm/script-utils/build.d.mts +5 -0
- package/dist/lib/esm/script-utils/build.mjs +30 -6
- package/dist/lib/esm/script-utils/demo-vault.d.mts +12 -8
- package/dist/lib/esm/script-utils/demo-vault.mjs +29 -6
- package/dist/lib/esm/script-utils/exec.mjs +1 -1
- package/dist/lib/esm/script-utils/formatters/dprint.mjs +3 -2
- package/dist/lib/esm/script-utils/index.d.mts +1 -0
- package/dist/lib/esm/script-utils/index.mjs +3 -1
- package/dist/lib/esm/script-utils/linters/cspell.mjs +3 -3
- package/dist/lib/esm/script-utils/linters/eslint-config.mjs +39 -1
- package/dist/lib/esm/script-utils/linters/eslint-rules/index.d.mts +5 -0
- package/dist/lib/esm/script-utils/linters/eslint-rules/index.mjs +11 -1
- package/dist/lib/esm/script-utils/linters/eslint-rules/manifest-description.d.mts +54 -0
- package/dist/lib/esm/script-utils/linters/eslint-rules/manifest-description.mjs +148 -0
- package/dist/lib/esm/script-utils/linters/eslint-rules/manifest-helpers.d.mts +141 -0
- package/dist/lib/esm/script-utils/linters/eslint-rules/manifest-helpers.mjs +92 -0
- package/dist/lib/esm/script-utils/linters/eslint-rules/manifest-id.d.mts +32 -0
- package/dist/lib/esm/script-utils/linters/eslint-rules/manifest-id.mjs +111 -0
- package/dist/lib/esm/script-utils/linters/eslint-rules/manifest-name.d.mts +30 -0
- package/dist/lib/esm/script-utils/linters/eslint-rules/manifest-name.mjs +112 -0
- package/dist/lib/esm/script-utils/linters/eslint-rules/manifest-schema.d.mts +45 -0
- package/dist/lib/esm/script-utils/linters/eslint-rules/manifest-schema.mjs +217 -0
- package/dist/lib/esm/script-utils/linters/eslint-rules/obsidian-dev-utils-plugin.mjs +9 -1
- package/dist/lib/esm/script-utils/linters/eslint.mjs +3 -2
- package/dist/lib/esm/script-utils/linters/markdownlint.mjs +4 -4
- package/dist/lib/esm/script-utils/npm-run.mjs +4 -3
- package/dist/lib/esm/script-utils/obsidian-dev-utils-repo-paths.d.mts +37 -1
- package/dist/lib/esm/script-utils/obsidian-dev-utils-repo-paths.mjs +10 -1
- package/dist/lib/esm/script-utils/package-manager.d.mts +77 -0
- package/dist/lib/esm/script-utils/package-manager.mjs +173 -0
- package/dist/lib/esm/script-utils/version.mjs +21 -9
- package/obsidian/demo-vault-naming/package.json +6 -0
- package/obsidian/mobile-trusted-input/package.json +6 -0
- package/obsidian/trusted-input/package.json +6 -0
- package/package.json +19 -17
- package/script-utils/linters/eslint-rules/manifest-description/package.json +6 -0
- package/script-utils/linters/eslint-rules/manifest-helpers/package.json +6 -0
- package/script-utils/linters/eslint-rules/manifest-id/package.json +6 -0
- package/script-utils/linters/eslint-rules/manifest-name/package.json +6 -0
- package/script-utils/linters/eslint-rules/manifest-schema/package.json +6 -0
- package/script-utils/package-manager/package.json +6 -0
|
@@ -114,6 +114,7 @@ import {
|
|
|
114
114
|
printWithStackTrace,
|
|
115
115
|
showInitialDebugMessage
|
|
116
116
|
} from "./debug.mjs";
|
|
117
|
+
import { extractZipArchive } from "./desktop-zip-extractor.mjs";
|
|
117
118
|
import {
|
|
118
119
|
AsyncCallbackDisposable,
|
|
119
120
|
AsyncDisposableBase,
|
|
@@ -337,16 +338,11 @@ import {
|
|
|
337
338
|
renderPaginatedTable
|
|
338
339
|
} from "./obsidian/dataview.mjs";
|
|
339
340
|
import { bootstrapDemoVault } from "./obsidian/demo-vault-helper.mjs";
|
|
340
|
-
import { openDemoVault } from "./obsidian/desktop-demo-vault-opener.mjs";
|
|
341
341
|
import {
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
pressKey,
|
|
347
|
-
typeIntoEditor,
|
|
348
|
-
unhoverElement
|
|
349
|
-
} from "./obsidian/desktop-trusted-input.mjs";
|
|
342
|
+
getDemoVaultArchiveFileName,
|
|
343
|
+
getDemoVaultFolderName
|
|
344
|
+
} from "./obsidian/demo-vault-naming.mjs";
|
|
345
|
+
import { openDemoVault } from "./obsidian/desktop-demo-vault-opener.mjs";
|
|
350
346
|
import { PluginEditorExtensionRegistrar } from "./obsidian/editor-extension-registrar.mjs";
|
|
351
347
|
import { PluginEditorSuggestRegistrar } from "./obsidian/editor-suggest-registrar.mjs";
|
|
352
348
|
import {
|
|
@@ -652,6 +648,15 @@ import {
|
|
|
652
648
|
TemplaterUnavailabilityReason,
|
|
653
649
|
TemplaterUnavailableError
|
|
654
650
|
} from "./obsidian/templater.mjs";
|
|
651
|
+
import {
|
|
652
|
+
clickElement,
|
|
653
|
+
clickMouse,
|
|
654
|
+
hoverElement,
|
|
655
|
+
moveMouse,
|
|
656
|
+
pressKey,
|
|
657
|
+
typeIntoEditor,
|
|
658
|
+
unhoverElement
|
|
659
|
+
} from "./obsidian/trusted-input.mjs";
|
|
655
660
|
import {
|
|
656
661
|
getOsAndObsidianUnsafePathCharsRegExp,
|
|
657
662
|
getOsUnsafePathCharsRegExp,
|
|
@@ -1066,6 +1071,7 @@ export {
|
|
|
1066
1071
|
extractDefaultExportInterop,
|
|
1067
1072
|
extractJpegMetadataSegments,
|
|
1068
1073
|
extractLinkFile,
|
|
1074
|
+
extractZipArchive,
|
|
1069
1075
|
filterInPlace,
|
|
1070
1076
|
findAttachmentUnitFolderPath,
|
|
1071
1077
|
findNoPriorityWinnerReason,
|
|
@@ -1100,6 +1106,8 @@ export {
|
|
|
1100
1106
|
getCommunityPluginRepo,
|
|
1101
1107
|
getDebugController,
|
|
1102
1108
|
getDebugger,
|
|
1109
|
+
getDemoVaultArchiveFileName,
|
|
1110
|
+
getDemoVaultFolderName,
|
|
1103
1111
|
getDocumentWindow,
|
|
1104
1112
|
getDomEventsHandlersConstructor,
|
|
1105
1113
|
getEnumKey,
|
|
@@ -1389,4 +1397,4 @@ export {
|
|
|
1389
1397
|
watchPluginApi,
|
|
1390
1398
|
wrapForCallout
|
|
1391
1399
|
};
|
|
1392
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL19fbWVyZ2VkLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKiBUSElTIElTIEEgR0VORVJBVEVEL0JVTkRMRUQgRklMRSBCWSBCVUlMRCBTQ1JJUFQgKi9cblxuZXhwb3J0IHtcbiAgYWJvcnRTaWduYWxBbnksXG4gIGFib3J0U2lnbmFsTmV2ZXIsXG4gIGFib3J0U2lnbmFsVGltZW91dCxcbiAgZ2V0U2hhcmVkQWJvcnRDb250cm9sbGVyLFxuICBnZXRTaGFyZWRBYm9ydFNpZ25hbCxcbiAgSU5GSU5JVEVfVElNRU9VVCxcbiAgb25BYm9ydCxcbiAgUmVzZXR0YWJsZUFib3J0Q29udHJvbGxlcixcbiAgd2FpdEZvckFib3J0XG59IGZyb20gJy4vYWJvcnQtY29udHJvbGxlci50cyc7XG5leHBvcnQge1xuICBmaWx0ZXJJblBsYWNlLFxuICBzbmFwc2hvdCxcbiAgdW5pcXVlLFxuICB1bmlxdWVJblBsYWNlXG59IGZyb20gJy4vYXJyYXkudHMnO1xuZXhwb3J0IHtcbiAgQXN5bmNFdmVudFJlZkRpc3Bvc2FibGUsXG4gIEFzeW5jRXZlbnRzLFxuICBBc3luY0V2ZW50c0Jhc2UsXG4gIG1peGluQXN5bmNFdmVudHMsXG4gIHN1YnNjcmliZUFzeW5jRGlzcG9zYWJsZUV2ZW50XG59IGZyb20gJy4vYXN5bmMtZXZlbnRzLnRzJztcbmV4cG9ydCB7XG4gIGFkZEVycm9ySGFuZGxlcixcbiAgYXN5bmNGaWx0ZXIsXG4gIGFzeW5jRmlsdGVySW5QbGFjZSxcbiAgYXN5bmNGbGF0TWFwLFxuICBhc3luY01hcCxcbiAgY2hhaW4sXG4gIGNvbnZlcnRBc3luY1RvU3luYyxcbiAgY29udmVydFN5bmNUb0FzeW5jLFxuICBkaXNhYmxlQXN5bmNPcGVyYXRpb25UcmFja2luZyxcbiAgZW5hYmxlQXN5bmNPcGVyYXRpb25UcmFja2luZyxcbiAgaGFuZGxlU2lsZW50RXJyb3IsXG4gIGlnbm9yZUVycm9yLFxuICBpbnZva2VBc3luY1NhZmVseSxcbiAgaW52b2tlQXN5bmNTYWZlbHlBZnRlckRlbGF5LFxuICBpc0FzeW5jT3BlcmF0aW9uVHJhY2tpbmdFbmFibGVkLFxuICBtYXJrc0FzVGVybWluYXRlUmV0cnksXG4gIG5ldmVyRW5kcyxcbiAgbmV4dFRpY2tBc3luYyxcbiAgbm9ybWFsaXplUHJvbWlzYWJsZSxcbiAgcHJvbWlzZUFsbEFzeW5jRm5zU2VxdWVudGlhbGx5LFxuICBwcm9taXNlQWxsU2VxdWVudGlhbGx5LFxuICBxdWV1ZU1pY3JvdGFza0FzeW5jLFxuICByZXF1ZXN0QW5pbWF0aW9uRnJhbWVBc3luYyxcbiAgcmV0cnlXaXRoVGltZW91dCxcbiAgcnVuV2l0aFRpbWVvdXQsXG4gIHNldEltbWVkaWF0ZUFzeW5jLFxuICBzZXRUaW1lb3V0QXN5bmMsXG4gIHNsZWVwLFxuICB0aW1lb3V0LFxuICB0b0FycmF5LFxuICB3YWl0Rm9yQWxsQXN5bmNPcGVyYXRpb25zXG59IGZyb20gJy4vYXN5bmMudHMnO1xuZXhwb3J0IHsgQmVlcGVyIH0gZnJvbSAnLi9iZWVwZXIudHMnO1xuZXhwb3J0IHtcbiAgYmxvYlRvQXJyYXlCdWZmZXIsXG4gIGJsb2JUb0RhdGFVcmwsXG4gIGJsb2JUb0pwZWdBcnJheUJ1ZmZlcixcbiAgZGF0YVVybFRvQXJyYXlCdWZmZXIsXG4gIGlzSW1hZ2VGaWxlXG59IGZyb20gJy4vYmxvYi50cyc7XG5leHBvcnQge1xuICBlbmFibGVMaWJyYXJ5RGVidWdnZXJzLFxuICBnZXREZWJ1Z0NvbnRyb2xsZXIsXG4gIGdldERlYnVnZ2VyLFxuICBnZXRMaWJEZWJ1Z2dlcixcbiAgcHJpbnRXaXRoU3RhY2tUcmFjZSxcbiAgc2hvd0luaXRpYWxEZWJ1Z01lc3NhZ2Vcbn0gZnJvbSAnLi9kZWJ1Zy50cyc7XG5leHBvcnQge1xuICBBc3luY0NhbGxiYWNrRGlzcG9zYWJsZSxcbiAgQXN5bmNEaXNwb3NhYmxlQmFzZSxcbiAgQ2FsbGJhY2tEaXNwb3NhYmxlLFxuICBDb21iaW5lQXN5bmNEaXNwb3NhYmxlLFxuICBDb21iaW5lRGlzcG9zYWJsZSxcbiAgRGlzcG9zYWJsZUJhc2UsXG4gIGRpc3Bvc2UsXG4gIGRpc3Bvc2VBc3luYyxcbiAgRGlzcG9zZUVycm9yQmVoYXZpb3IsXG4gIERpc3Bvc2VPcmRlcixcbiAgaXNBc3luY0Rpc3Bvc2FibGUsXG4gIGlzQXN5bmNEaXNwb3NhYmxlRXgsXG4gIGlzRGlzcG9zYWJsZSxcbiAgaXNEaXNwb3NhYmxlRXgsXG4gIE11bHRpcGxlRGlzcG9zZUJlaGF2aW9yLFxuICB0b0FzeW5jRGlzcG9zYWJsZUV4LFxuICB0b0Rpc3Bvc2FibGVFeFxufSBmcm9tICcuL2Rpc3Bvc2FibGUudHMnO1xuZXhwb3J0IHtcbiAgZ2V0RW51bUtleSxcbiAgZ2V0RW51bVZhbHVlXG59IGZyb20gJy4vZW51bS50cyc7XG5leHBvcnQge1xuICBBU1lOQ19XUkFQUEVSX0VSUk9SX01FU1NBR0UsXG4gIEN1c3RvbVN0YWNrVHJhY2VFcnJvcixcbiAgZHJhaW5Db2xsZWN0ZWRVbmhhbmRsZWRBc3luY0Vycm9ycyxcbiAgZW1pdEFzeW5jRXJyb3JFdmVudCxcbiAgZXJyb3JUb1N0cmluZyxcbiAgRXJyb3JXcmFwcGVyLFxuICBnZXRTdGFja1RyYWNlLFxuICBpc0FzeW5jRXJyb3JJZ25vcmVDb250ZXh0QWN0aXZlLFxuICBwcmludEVycm9yLFxuICByZWdpc3RlckFzeW5jRXJyb3JFdmVudEhhbmRsZXIsXG4gIFNpbGVudEVycm9yLFxuICBzdGFydEFzeW5jRXJyb3JJZ25vcmVDb250ZXh0LFxuICBzdGFydENvbGxlY3RpbmdVbmhhbmRsZWRBc3luY0Vycm9ycyxcbiAgc3RvcENvbGxlY3RpbmdVbmhhbmRsZWRBc3luY0Vycm9ycyxcbiAgdGhyb3dFeHByZXNzaW9uXG59IGZyb20gJy4vZXJyb3IudHMnO1xuZXhwb3J0IHtcbiAgY2xvbmVGdW5jdGlvbixcbiAgY3JlYXRlRnVuY3Rpb24sXG4gIGdldEZ1bmN0aW9uRXhwcmVzc2lvblN0cmluZyxcbiAgbm9vcCxcbiAgbm9vcEFzeW5jLFxuICBub29wQXN5bmNTaW5nbGV0b25Qcm9taXNlLFxuICBvbWl0QXN5bmNSZXR1cm5UeXBlLFxuICBvbWl0UmV0dXJuVHlwZVxufSBmcm9tICcuL2Z1bmN0aW9uLnRzJztcbmV4cG9ydCB7XG4gIExJQlJBUllfU1RZTEVTLFxuICBMSUJSQVJZX1ZFUlNJT05cbn0gZnJvbSAnLi9nZW5lcmF0ZWQtZHVyaW5nLWJ1aWxkLnRzJztcbmV4cG9ydCB7XG4gIGNyZWF0ZURpdkFzeW5jLFxuICBjcmVhdGVFbEFzeW5jLFxuICBjcmVhdGVGcmFnbWVudEFzeW5jLFxuICBjcmVhdGVTcGFuQXN5bmMsXG4gIGNyZWF0ZVN2Z0FzeW5jLFxuICBlbnN1cmVMb2FkZWQsXG4gIGdldERvY3VtZW50V2luZG93LFxuICBnZXRaSW5kZXgsXG4gIGlzRWxlbWVudFZpc2libGVJbk9mZnNldFBhcmVudCxcbiAgaXNMb2FkZWQsXG4gIG9uQW5jZXN0b3JTY3JvbGxPclJlc2l6ZSxcbiAgdG9QeCxcbiAgd2FpdFVudGlsQ29ubmVjdGVkXG59IGZyb20gJy4vaHRtbC1lbGVtZW50LnRzJztcbmV4cG9ydCB7XG4gIGV4dHJhY3RKcGVnTWV0YWRhdGFTZWdtZW50cyxcbiAgaW5qZWN0SnBlZ01ldGFkYXRhU2VnbWVudHNcbn0gZnJvbSAnLi9qcGVnLW1ldGFkYXRhLnRzJztcbmV4cG9ydCB7XG4gIExpYnJhcnksXG4gIExJQlJBUllfTkFNRVxufSBmcm9tICcuL2xpYnJhcnkudHMnO1xuZXhwb3J0IHtcbiAgYXNzaWduV2l0aE5vbkVudW1lcmFibGVQcm9wZXJ0aWVzLFxuICBjYXN0VG8sXG4gIGNsb25lV2l0aE5vbkVudW1lcmFibGVQcm9wZXJ0aWVzLFxuICBkZWxldGVQcm9wZXJ0aWVzLFxuICBkZWxldGVQcm9wZXJ0eSxcbiAgZXh0cmFjdERlZmF1bHRFeHBvcnRJbnRlcm9wLFxuICBGdW5jdGlvbkhhbmRsaW5nTW9kZSxcbiAgZ2V0QWxsRW50cmllcyxcbiAgZ2V0QWxsS2V5cyxcbiAgZ2V0TmVzdGVkUHJvcGVydHlWYWx1ZSxcbiAgZ2V0UHJvdG90eXBlT2YsXG4gIGlzRGVlcEVxdWFsLFxuICBuYW1lb2YsXG4gIG5vcm1hbGl6ZU9wdGlvbmFsUHJvcGVydGllcyxcbiAgcmVtb3ZlVW5kZWZpbmVkUHJvcGVydGllcyxcbiAgc2V0TmVzdGVkUHJvcGVydHlWYWx1ZSxcbiAgdG9Kc29uXG59IGZyb20gJy4vb2JqZWN0LXV0aWxzLnRzJztcbmV4cG9ydCB7XG4gIGdldE9ic2lkaWFuRGV2VXRpbHNTdGF0ZSxcbiAgcmVzZXRPYnNpZGlhbkRldlV0aWxzU3RhdGVcbn0gZnJvbSAnLi9vYnNpZGlhbi1kZXYtdXRpbHMtc3RhdGUudHMnO1xuZXhwb3J0IHsgQXBwQWN0aXZlRmlsZVByb3ZpZGVyIH0gZnJvbSAnLi9vYnNpZGlhbi9hY3RpdmUtZmlsZS1wcm92aWRlci50cyc7XG5leHBvcnQgeyBnZXRBcHAgfSBmcm9tICcuL29ic2lkaWFuL2FwcC50cyc7XG5leHBvcnQge1xuICByZXRyeVdpdGhUaW1lb3V0Tm90aWNlLFxuICBydW5XaXRoVGltZW91dE5vdGljZVxufSBmcm9tICcuL29ic2lkaWFuL2FzeW5jLXdpdGgtbm90aWNlLnRzJztcbmV4cG9ydCB7XG4gIEF0dGFjaG1lbnRQYXRoQ29udGV4dCxcbiAgRFVNTVlfUEFUSCxcbiAgZ2V0QXR0YWNobWVudEZpbGVQYXRoLFxuICBnZXRBdHRhY2htZW50Rm9sZGVyUGF0aCxcbiAgZ2V0QXR0YWNobWVudEZvbGRlclBhdGhTeW5jT3JOdWxsLFxuICBnZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHMsXG4gIGhhc093bkF0dGFjaG1lbnRGb2xkZXIsXG4gIGlzQXRQcm9wZXJBdHRhY2htZW50UGF0aFxufSBmcm9tICcuL29ic2lkaWFuL2F0dGFjaG1lbnQtcGF0aC50cyc7XG5leHBvcnQge1xuICBmaW5kQXR0YWNobWVudFVuaXRGb2xkZXJQYXRoLFxuICByZWJhc2VQYXRoT250b0ZvbGRlclxufSBmcm9tICcuL29ic2lkaWFuL2F0dGFjaG1lbnQtdW5pdC1mb2xkZXIudHMnO1xuZXhwb3J0IHtcbiAgcmVuZGVyQmFja2xpbmtzVGFibGUsXG4gIHJlbmRlckRlbGF5ZWRCYWNrbGlua3MsXG4gIHJlbmRlckRlbGF5ZWRCYWNrbGlua3NGb3JGb2xkZXJcbn0gZnJvbSAnLi9vYnNpZGlhbi9iYWNrbGluay50cyc7XG5leHBvcnQgeyBQbHVnaW5CYXNlc1ZpZXdSZWdpc3RyYXIgfSBmcm9tICcuL29ic2lkaWFuL2Jhc2VzLXZpZXctcmVnaXN0cmFyLnRzJztcbmV4cG9ydCB7XG4gIENhbGxvdXRNb2RlLFxuICByZW5kZXJDYWxsb3V0LFxuICB3cmFwRm9yQ2FsbG91dFxufSBmcm9tICcuL29ic2lkaWFuL2NhbGxvdXQudHMnO1xuZXhwb3J0IHsgZ2V0Q2FudmFzUmVmZXJlbmNlcyB9IGZyb20gJy4vb2JzaWRpYW4vY2FudmFzLnRzJztcbmV4cG9ydCB7XG4gIENhc2VJbnNlbnNpdGl2ZUZpbGVJbmRleCxcbiAgZ2V0Q2FzZUluc2Vuc2l0aXZlRmlsZUluZGV4LFxuICBzZXRDYXNlSW5zZW5zaXRpdmVGaWxlSW5kZXgsXG4gIHVuc2V0Q2FzZUluc2Vuc2l0aXZlRmlsZUluZGV4XG59IGZyb20gJy4vb2JzaWRpYW4vY2FzZS1pbnNlbnNpdGl2ZS1maWxlLWluZGV4LnRzJztcbmV4cG9ydCB7IGNyZWF0ZUNvZGVCbG9ja1JlZ0V4cCB9IGZyb20gJy4vb2JzaWRpYW4vY29kZS1ibG9jay1yZWctZXhwLnRzJztcbmV4cG9ydCB7IEFic3RyYWN0RmlsZUNvbW1hbmRIYW5kbGVyIH0gZnJvbSAnLi9vYnNpZGlhbi9jb21tYW5kLWhhbmRsZXJzL2Fic3RyYWN0LWZpbGUtY29tbWFuZC1oYW5kbGVyLnRzJztcbmV4cG9ydCB7IENvbW1hbmRIYW5kbGVyQ29tcG9uZW50IH0gZnJvbSAnLi9vYnNpZGlhbi9jb21tYW5kLWhhbmRsZXJzL2NvbW1hbmQtaGFuZGxlci1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgQ29tbWFuZEhhbmRsZXIgfSBmcm9tICcuL29ic2lkaWFuL2NvbW1hbmQtaGFuZGxlcnMvY29tbWFuZC1oYW5kbGVyLnRzJztcbmV4cG9ydCB7IEVkaXRvckNvbW1hbmRIYW5kbGVyIH0gZnJvbSAnLi9vYnNpZGlhbi9jb21tYW5kLWhhbmRsZXJzL2VkaXRvci1jb21tYW5kLWhhbmRsZXIudHMnO1xuZXhwb3J0IHsgRmlsZUNvbW1hbmRIYW5kbGVyIH0gZnJvbSAnLi9vYnNpZGlhbi9jb21tYW5kLWhhbmRsZXJzL2ZpbGUtY29tbWFuZC1oYW5kbGVyLnRzJztcbmV4cG9ydCB7IEZvbGRlckNvbW1hbmRIYW5kbGVyIH0gZnJvbSAnLi9vYnNpZGlhbi9jb21tYW5kLWhhbmRsZXJzL2ZvbGRlci1jb21tYW5kLWhhbmRsZXIudHMnO1xuZXhwb3J0IHsgR2xvYmFsQ29tbWFuZEhhbmRsZXIgfSBmcm9tICcuL29ic2lkaWFuL2NvbW1hbmQtaGFuZGxlcnMvZ2xvYmFsLWNvbW1hbmQtaGFuZGxlci50cyc7XG5leHBvcnQgeyBPcGVuRGVtb1ZhdWx0Q29tbWFuZEhhbmRsZXIgfSBmcm9tICcuL29ic2lkaWFuL2NvbW1hbmQtaGFuZGxlcnMvb3Blbi1kZW1vLXZhdWx0LWNvbW1hbmQtaGFuZGxlci50cyc7XG5leHBvcnQgeyBPcGVuU2V0dGluZ3NDb21tYW5kSGFuZGxlciB9IGZyb20gJy4vb2JzaWRpYW4vY29tbWFuZC1oYW5kbGVycy9vcGVuLXNldHRpbmdzLWNvbW1hbmQtaGFuZGxlci50cyc7XG5leHBvcnQgeyBVbmxvY2tBY3RpdmVOb3RlQ29tbWFuZEhhbmRsZXIgfSBmcm9tICcuL29ic2lkaWFuL2NvbW1hbmQtaGFuZGxlcnMvdW5sb2NrLWFjdGl2ZS1ub3RlLWNvbW1hbmQtaGFuZGxlci50cyc7XG5leHBvcnQgeyBQbHVnaW5Db21tYW5kUmVnaXN0cmFyIH0gZnJvbSAnLi9vYnNpZGlhbi9jb21tYW5kLXJlZ2lzdHJhci50cyc7XG5leHBvcnQge1xuICBjb25maWd1cmVDb21tdW5pdHlQbHVnaW4sXG4gIENvbmZpZ3VyZUNvbW11bml0eVBsdWdpblJlc3VsdCxcbiAgZGlzYWJsZUNvbW11bml0eVBsdWdpbixcbiAgZW5hYmxlQ29tbXVuaXR5UGx1Z2luLFxuICBnZXRDb21tdW5pdHlQbHVnaW5SZXBvLFxuICBnZXRMYXRlc3RSZWxlYXNlVmVyc2lvbixcbiAgaW5zdGFsbENvbW11bml0eVBsdWdpbixcbiAgaW5zdGFsbENvbmZpZ3VyZUVuYWJsZUNvbW11bml0eVBsdWdpbixcbiAgc2VhcmNoQ29tbXVuaXR5UGx1Z2lucyxcbiAgdG9nZ2xlRW5hYmxlQ29tbXVuaXR5UGx1Z2luLFxuICB0b2dnbGVJbnN0YWxsQ29tbXVuaXR5UGx1Z2luLFxuICB1bmluc3RhbGxDb21tdW5pdHlQbHVnaW5cbn0gZnJvbSAnLi9vYnNpZGlhbi9jb21tdW5pdHktcGx1Z2lucy50cyc7XG5leHBvcnQgeyBBYm9ydFNpZ25hbENvbXBvbmVudCB9IGZyb20gJy4vb2JzaWRpYW4vY29tcG9uZW50cy9hYm9ydC1zaWduYWwtY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IEFsbFdpbmRvd3NFdmVudENvbXBvbmVudCB9IGZyb20gJy4vb2JzaWRpYW4vY29tcG9uZW50cy9hbGwtd2luZG93cy1ldmVudC1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgQXN5bmNFcnJvckhhbmRsZXJDb21wb25lbnQgfSBmcm9tICcuL29ic2lkaWFuL2NvbXBvbmVudHMvYXN5bmMtZXJyb3ItaGFuZGxlci1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgcmVnaXN0ZXJBc3luY0V2ZW50IH0gZnJvbSAnLi9vYnNpZGlhbi9jb21wb25lbnRzL2FzeW5jLWV2ZW50cy1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgQ2FzZUluc2Vuc2l0aXZlRmlsZUluZGV4Q29tcG9uZW50IH0gZnJvbSAnLi9vYnNpZGlhbi9jb21wb25lbnRzL2Nhc2UtaW5zZW5zaXRpdmUtZmlsZS1pbmRleC1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgQ29tcG9uZW50RXggfSBmcm9tICcuL29ic2lkaWFuL2NvbXBvbmVudHMvY29tcG9uZW50LWV4LnRzJztcbmV4cG9ydCB7IENvbnNvbGVEZWJ1Z0NvbXBvbmVudCB9IGZyb20gJy4vb2JzaWRpYW4vY29tcG9uZW50cy9jb25zb2xlLWRlYnVnLWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBhc0Rpc3Bvc2FibGVDb21wb25lbnQgfSBmcm9tICcuL29ic2lkaWFuL2NvbXBvbmVudHMvZGlzcG9zYWJsZS1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgRW1iZWRFeHRlbnNpb25zQ29tcG9uZW50IH0gZnJvbSAnLi9vYnNpZGlhbi9jb21wb25lbnRzL2VtYmVkLWV4dGVuc2lvbnMtY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IEdlbmVyYXRlTWFya2Rvd25MaW5rRGVmYXVsdFBhcmFtc0NvbXBvbmVudCB9IGZyb20gJy4vb2JzaWRpYW4vY29tcG9uZW50cy9nZW5lcmF0ZS1tYXJrZG93bi1saW5rLWRlZmF1bHQtcGFyYW1zLWNvbXBvbmVudC50cyc7XG5leHBvcnQge1xuICBDYWxsYmFja0xheW91dFJlYWR5Q29tcG9uZW50LFxuICBMYXlvdXRSZWFkeUNvbXBvbmVudFxufSBmcm9tICcuL29ic2lkaWFuL2NvbXBvbmVudHMvbGF5b3V0LXJlYWR5LWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBNZW51RXZlbnRSZWdpc3RyYXJDb21wb25lbnQgfSBmcm9tICcuL29ic2lkaWFuL2NvbXBvbmVudHMvbWVudS1ldmVudC1yZWdpc3RyYXItY29tcG9uZW50LnRzJztcbmV4cG9ydCB7XG4gIGFyb3VuZCxcbiAgaGFzUGF0Y2hUb2tlbixcbiAgTW9ua2V5QXJvdW5kQ29tcG9uZW50XG59IGZyb20gJy4vb2JzaWRpYW4vY29tcG9uZW50cy9tb25rZXktYXJvdW5kLWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBOb3RlYm9va05hdmlnYXRvck1lbnVFdmVudFJlZ2lzdHJhckNvbXBvbmVudCB9IGZyb20gJy4vb2JzaWRpYW4vY29tcG9uZW50cy9ub3RlYm9vay1uYXZpZ2F0b3ItbWVudS1ldmVudC1yZWdpc3RyYXItY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IFBsdWdpbkNvbnRleHRDb21wb25lbnQgfSBmcm9tICcuL29ic2lkaWFuL2NvbXBvbmVudHMvcGx1Z2luLWNvbnRleHQtY29tcG9uZW50LnRzJztcbmV4cG9ydCB7XG4gIFBsdWdpbk5vdGljZUNvbXBvbmVudCxcbiAgUGx1Z2luTm90aWNlTW9kZVxufSBmcm9tICcuL29ic2lkaWFuL2NvbXBvbmVudHMvcGx1Z2luLW5vdGljZS1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgUGx1Z2luU2V0dGluZ3NDb21wb25lbnRCYXNlIH0gZnJvbSAnLi9vYnNpZGlhbi9jb21wb25lbnRzL3BsdWdpbi1zZXR0aW5ncy1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgUGx1Z2luU2V0dGluZ3NUYWJDb21wb25lbnQgfSBmcm9tICcuL29ic2lkaWFuL2NvbXBvbmVudHMvcGx1Z2luLXNldHRpbmdzLXRhYi1jb21wb25lbnQudHMnO1xuZXhwb3J0IHtcbiAgUGx1Z2luU3VnZ2VzdGlvbkNvbXBvbmVudCxcbiAgU3VnZ2VzdGVkUGx1Z2luU3RhdGVcbn0gZnJvbSAnLi9vYnNpZGlhbi9jb21wb25lbnRzL3BsdWdpbi1zdWdnZXN0aW9uLWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBQb2ludGVyUG9zaXRpb25Db21wb25lbnQgfSBmcm9tICcuL29ic2lkaWFuL2NvbXBvbmVudHMvcG9pbnRlci1wb3NpdGlvbi1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgUmVnaXN0cnlDb21wb25lbnQgfSBmcm9tICcuL29ic2lkaWFuL2NvbXBvbmVudHMvcmVnaXN0cnktY29tcG9uZW50LnRzJztcbmV4cG9ydCB7XG4gIEVtcHR5Rm9sZGVyQmVoYXZpb3IsXG4gIFJlbmFtZURlbGV0ZUhhbmRsZXJDb21wb25lbnRcbn0gZnJvbSAnLi9vYnNpZGlhbi9jb21wb25lbnRzL3JlbmFtZS1kZWxldGUtaGFuZGxlci1jb21wb25lbnQudHMnO1xuZXhwb3J0IHtcbiAgTk9UX0VNUFRZX0RJUkVDVE9SWV9FUlJPUl9DT0RFLFxuICBSbWRpckd1YXJkQ29tcG9uZW50XG59IGZyb20gJy4vb2JzaWRpYW4vY29tcG9uZW50cy9ybWRpci1ndWFyZC1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgU3ludGF4SGlnaGxpZ2h0aW5nQ29tcG9uZW50IH0gZnJvbSAnLi9vYnNpZGlhbi9jb21wb25lbnRzL3N5bnRheC1oaWdobGlnaHRpbmctY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IGdldERvbUV2ZW50c0hhbmRsZXJzQ29uc3RydWN0b3IgfSBmcm9tICcuL29ic2lkaWFuL2NvbnN0cnVjdG9ycy9nZXQtZG9tLWV2ZW50cy1oYW5kbGVycy1jb25zdHJ1Y3Rvci50cyc7XG5leHBvcnQgeyBDc3NDbGFzcyB9IGZyb20gJy4vb2JzaWRpYW4vY3NzLWNsYXNzLnRzJztcbmV4cG9ydCB7IFBsdWdpbkRhdGFIYW5kbGVyIH0gZnJvbSAnLi9vYnNpZGlhbi9kYXRhLWhhbmRsZXIudHMnO1xuZXhwb3J0IHtcbiAgZml4VGl0bGUsXG4gIG1ha2VMaW5rV2l0aFBhdGhcbn0gZnJvbSAnLi9vYnNpZGlhbi9kYXRhdmlldy1saW5rLnRzJztcbmV4cG9ydCB7XG4gIGdldFJlbmRlcmVkQ29udGFpbmVyLFxuICBpbnNlcnRDb2RlQmxvY2ssXG4gIHJlbG9hZEN1cnJlbnRGaWxlQ2FjaGUsXG4gIHJlbmRlcklmcmFtZSxcbiAgcmVuZGVyUGFnaW5hdGVkTGlzdCxcbiAgcmVuZGVyUGFnaW5hdGVkVGFibGVcbn0gZnJvbSAnLi9vYnNpZGlhbi9kYXRhdmlldy50cyc7XG5leHBvcnQgeyBib290c3RyYXBEZW1vVmF1bHQgfSBmcm9tICcuL29ic2lkaWFuL2RlbW8tdmF1bHQtaGVscGVyLnRzJztcbmV4cG9ydCB7IG9wZW5EZW1vVmF1bHQgfSBmcm9tICcuL29ic2lkaWFuL2Rlc2t0b3AtZGVtby12YXVsdC1vcGVuZXIudHMnO1xuZXhwb3J0IHtcbiAgY2xpY2tFbGVtZW50LFxuICBjbGlja01vdXNlLFxuICBob3ZlckVsZW1lbnQsXG4gIG1vdmVNb3VzZSxcbiAgcHJlc3NLZXksXG4gIHR5cGVJbnRvRWRpdG9yLFxuICB1bmhvdmVyRWxlbWVudFxufSBmcm9tICcuL29ic2lkaWFuL2Rlc2t0b3AtdHJ1c3RlZC1pbnB1dC50cyc7XG5leHBvcnQgeyBQbHVnaW5FZGl0b3JFeHRlbnNpb25SZWdpc3RyYXIgfSBmcm9tICcuL29ic2lkaWFuL2VkaXRvci1leHRlbnNpb24tcmVnaXN0cmFyLnRzJztcbmV4cG9ydCB7IFBsdWdpbkVkaXRvclN1Z2dlc3RSZWdpc3RyYXIgfSBmcm9tICcuL29ic2lkaWFuL2VkaXRvci1zdWdnZXN0LXJlZ2lzdHJhci50cyc7XG5leHBvcnQge1xuICBzeW5jT3BlbkVkaXRvckJ1ZmZlcnNGb3JQYXRoLFxuICB0b2dnbGVFZGl0b3JSZWFkT25seVxufSBmcm9tICcuL29ic2lkaWFuL2VkaXRvci50cyc7XG5leHBvcnQge1xuICBFdmVudFJlZkRpc3Bvc2FibGUsXG4gIHN1YnNjcmliZURpc3Bvc2FibGVFdmVudCxcbiAgc3Vic2NyaWJlRXZlbnRcbn0gZnJvbSAnLi9vYnNpZGlhbi9ldmVudHMudHMnO1xuZXhwb3J0IHsgUGx1Z2luRXh0ZW5zaW9uc1JlZ2lzdHJhciB9IGZyb20gJy4vb2JzaWRpYW4vZXh0ZW5zaW9ucy1yZWdpc3RyYXIudHMnO1xuZXhwb3J0IHtcbiAgYXBwbHlDb250ZW50Q2hhbmdlcyxcbiAgYXBwbHlGaWxlQ2hhbmdlcyxcbiAgaXNDYW52YXNDaGFuZ2UsXG4gIGlzQ2FudmFzRmlsZU5vZGVDaGFuZ2UsXG4gIGlzQ2FudmFzVGV4dE5vZGVDaGFuZ2UsXG4gIGlzQ29udGVudENoYW5nZSxcbiAgaXNGcm9udG1hdHRlckNoYW5nZSxcbiAgaXNGcm9udG1hdHRlckNoYW5nZVdpdGhPZmZzZXRzLFxuICB0b0Zyb250bWF0dGVyQ2hhbmdlV2l0aE9mZnNldHNcbn0gZnJvbSAnLi9vYnNpZGlhbi9maWxlLWNoYW5nZS50cyc7XG5leHBvcnQge1xuICBhZGRBbGlhcyxcbiAgZGVsZXRlQWxpYXMsXG4gIHByb2Nlc3NGcm9udG1hdHRlcixcbiAgd2FpdEZvclBlbmRpbmdMaW5rVXBkYXRlc1xufSBmcm9tICcuL29ic2lkaWFuL2ZpbGUtbWFuYWdlci50cyc7XG5leHBvcnQge1xuICBhc0FycmF5T2ZGaWxlcyxcbiAgYXNBcnJheU9mRm9sZGVycyxcbiAgYXNGaWxlLFxuICBhc0ZpbGVPck51bGwsXG4gIGFzRm9sZGVyLFxuICBhc0ZvbGRlck9yTnVsbCxcbiAgQkFTRV9GSUxFX0VYVEVOU0lPTixcbiAgQ0FOVkFTX0ZJTEVfRVhURU5TSU9OLFxuICBjaGVja0V4dGVuc2lvbixcbiAgZG9lc0V4aXN0LFxuICBGaWxlU3lzdGVtVHlwZSxcbiAgZ2V0QWJzdHJhY3RGaWxlLFxuICBnZXRBYnN0cmFjdEZpbGVPck51bGwsXG4gIGdldEJhc2VuYW1lLFxuICBnZXRFeHRlbnNpb24sXG4gIGdldEZpbGUsXG4gIGdldEZpbGVPck51bGwsXG4gIGdldEZpbGVTeXN0ZW1UeXBlLFxuICBnZXRGb2xkZXIsXG4gIGdldEZvbGRlck9yTnVsbCxcbiAgZ2V0TWFya2Rvd25GaWxlcyxcbiAgZ2V0T3JDcmVhdGVGaWxlLFxuICBnZXRPckNyZWF0ZUZvbGRlcixcbiAgZ2V0UGF0aCxcbiAgaXNBYnN0cmFjdEZpbGUsXG4gIGlzQmFzZUZpbGUsXG4gIGlzQ2FudmFzRmlsZSxcbiAgaXNGaWxlLFxuICBpc0ZvbGRlcixcbiAgaXNNYXJrZG93bkZpbGUsXG4gIGlzTm90ZSxcbiAgaXNUcmVhdGVkQXNBdHRhY2htZW50LFxuICBNQVJLRE9XTl9GSUxFX0VYVEVOU0lPTixcbiAgTWlzc2luZ1BhdGhUcmVhdG1lbnQsXG4gIHRyaW1NYXJrZG93bkV4dGVuc2lvblxufSBmcm9tICcuL29ic2lkaWFuL2ZpbGUtc3lzdGVtLnRzJztcbmV4cG9ydCB7XG4gIEZPTERFUl9OT1RFU19QTFVHSU5fSUQsXG4gIEZvbGRlck5vdGVMb2NhdGlvbixcbiAgcmVzb2x2ZUZvbGRlck5vdGUsXG4gIHJlc29sdmVGb2xkZXJOb3RlQ29uZmlnXG59IGZyb20gJy4vb2JzaWRpYW4vZm9sZGVyLW5vdGUudHMnO1xuZXhwb3J0IHtcbiAgaXNGcm9udG1hdHRlckxpbmtDYWNoZVdpdGhPZmZzZXRzLFxuICB0b0Zyb250bWF0dGVyTGlua0NhY2hlV2l0aE9mZnNldHNcbn0gZnJvbSAnLi9vYnNpZGlhbi9mcm9udG1hdHRlci1saW5rLWNhY2hlLXdpdGgtb2Zmc2V0cy50cyc7XG5leHBvcnQge1xuICBwYXJzZUZyb250bWF0dGVyLFxuICByZW1vdmVFbXB0eUZyb250bWF0dGVyVmFsdWVzLFxuICBzZXRGcm9udG1hdHRlclxufSBmcm9tICcuL29ic2lkaWFuL2Zyb250bWF0dGVyLnRzJztcbmV4cG9ydCB7IFBsdWdpbkhvdmVyTGlua1NvdXJjZVJlZ2lzdHJhciB9IGZyb20gJy4vb2JzaWRpYW4vaG92ZXItbGluay1zb3VyY2UtcmVnaXN0cmFyLnRzJztcbmV4cG9ydCB7IGFwcGVuZENvZGVCbG9jayB9IGZyb20gJy4vb2JzaWRpYW4vaHRtbC1lbGVtZW50LnRzJztcbmV4cG9ydCB7XG4gIERFRkFVTFRfTlMsXG4gIGluaXRJMThOLFxuICB0XG59IGZyb20gJy4vb2JzaWRpYW4vaTE4bi9pMThuLnRzJztcbmV4cG9ydCB7IGVuIH0gZnJvbSAnLi9vYnNpZGlhbi9pMThuL2xvY2FsZXMvZW4udHMnO1xuZXhwb3J0IHtcbiAgREVGQVVMVF9MQU5HVUFHRSxcbiAgZGVmYXVsdFRyYW5zbGF0aW9uc01hcFxufSBmcm9tICcuL29ic2lkaWFuL2kxOG4vbG9jYWxlcy90cmFuc2xhdGlvbnMtbWFwLnRzJztcbmV4cG9ydCB7IGlzSW5PYnNpZGlhbiB9IGZyb20gJy4vb2JzaWRpYW4vaXMtaW4tb2JzaWRpYW4udHMnO1xuZXhwb3J0IHtcbiAgY29udmVydExpbmssXG4gIGVkaXRCYWNrbGlua3MsXG4gIGVkaXRMaW5rcyxcbiAgZWRpdExpbmtzSW5Db250ZW50LFxuICBleHRyYWN0TGlua0ZpbGUsXG4gIGZpeEZyb250bWF0dGVyTWFya2Rvd25MaW5rcyxcbiAgZ2VuZXJhdGVNYXJrZG93bkxpbmssXG4gIGdlbmVyYXRlUmF3TWFya2Rvd25MaW5rLFxuICBnZXRHZW5lcmF0ZU1hcmtkb3duTGlua0RlZmF1bHRQYXJhbXNGbnMsXG4gIGhhc0FuZ2xlQnJhY2tldHMsXG4gIGhhc0VtYmVkU3ludGF4LFxuICBoYXNMZWFkaW5nRG90LFxuICBoYXNMZWFkaW5nU2xhc2gsXG4gIGhhc1dpa2lsaW5rU3ludGF4LFxuICBMaW5rUGF0aFN0eWxlLFxuICBMaW5rU3R5bGUsXG4gIHNob3VsZFJlc2V0QWxpYXMsXG4gIHNwbGl0U3VicGF0aCxcbiAgdXBkYXRlRmlsZVVybExpbmtzSW5Db250ZW50LFxuICB1cGRhdGVGaWxlVXJsTGlua3NJbkZpbGUsXG4gIHVwZGF0ZUxpbmssXG4gIHVwZGF0ZUxpbmtzSW5Db250ZW50LFxuICB1cGRhdGVMaW5rc0luRmlsZVxufSBmcm9tICcuL29ic2lkaWFuL2xpbmsudHMnO1xuZXhwb3J0IHsgaW52b2tlQXN5bmNBbmRMb2cgfSBmcm9tICcuL29ic2lkaWFuL2xvZ2dlci50cyc7XG5leHBvcnQgeyBsb29wIH0gZnJvbSAnLi9vYnNpZGlhbi9sb29wLnRzJztcbmV4cG9ydCB7IFBsdWdpbk1hcmtkb3duQ29kZUJsb2NrUHJvY2Vzc29yUmVnaXN0cmFyIH0gZnJvbSAnLi9vYnNpZGlhbi9tYXJrZG93bi1jb2RlLWJsb2NrLXByb2Nlc3Nvci1yZWdpc3RyYXIudHMnO1xuZXhwb3J0IHtcbiAgZ2V0Q29kZUJsb2NrTWFya2Rvd25JbmZvLFxuICBpbnNlcnRBZnRlckNvZGVCbG9jayxcbiAgaW5zZXJ0QmVmb3JlQ29kZUJsb2NrLFxuICByZW1vdmVDb2RlQmxvY2ssXG4gIHJlcGxhY2VDb2RlQmxvY2tcbn0gZnJvbSAnLi9vYnNpZGlhbi9tYXJrZG93bi1jb2RlLWJsb2NrLXByb2Nlc3Nvci50cyc7XG5leHBvcnQgeyBQbHVnaW5NYXJrZG93blBvc3RQcm9jZXNzb3JSZWdpc3RyYXIgfSBmcm9tICcuL29ic2lkaWFuL21hcmtkb3duLXBvc3QtcHJvY2Vzc29yLXJlZ2lzdHJhci50cyc7XG5leHBvcnQgeyBnZXRGdWxsQ29udGVudEh0bWwgfSBmcm9tICcuL29ic2lkaWFuL21hcmtkb3duLXZpZXcudHMnO1xuZXhwb3J0IHtcbiAgZnVsbFJlbmRlcixcbiAgbWFya2Rvd25Ub0h0bWwsXG4gIHJlZ2lzdGVyTGlua0hhbmRsZXJzLFxuICByZW5kZXJFeHRlcm5hbExpbmssXG4gIHJlbmRlckludGVybmFsTGlua1xufSBmcm9tICcuL29ic2lkaWFuL21hcmtkb3duLnRzJztcbmV4cG9ydCB7XG4gIENhY2hlZE1ldGFkYXRhRXhGZWF0dXJlLFxuICBlbnN1cmVNZXRhZGF0YUNhY2hlUmVhZHksXG4gIGdldEJhY2tsaW5rc0ZvckZpbGVPclBhdGgsXG4gIGdldEJhY2tsaW5rc0ZvckZpbGVTYWZlLFxuICBnZXRDYWNoZVNhZmUsXG4gIGdldEZyb250bWF0dGVyU2FmZSxcbiAgZ2V0TGlua3MsXG4gIGlzQ2FjaGVkTWV0YWRhdGFFeCxcbiAgcGFyc2VNZXRhZGF0YSxcbiAgcmVnaXN0ZXJGaWxlQ2FjaGVGb3JOb25FeGlzdGluZ0ZpbGUsXG4gIHJlZ2lzdGVyRmlsZXMsXG4gIHVucmVnaXN0ZXJGaWxlQ2FjaGVGb3JOb25FeGlzdGluZ0ZpbGUsXG4gIHVucmVnaXN0ZXJGaWxlc1xufSBmcm9tICcuL29ic2lkaWFuL21ldGFkYXRhLWNhY2hlLnRzJztcbmV4cG9ydCB7IGFsZXJ0IH0gZnJvbSAnLi9vYnNpZGlhbi9tb2RhbHMvYWxlcnQudHMnO1xuZXhwb3J0IHsgY29uZmlybSB9IGZyb20gJy4vb2JzaWRpYW4vbW9kYWxzL2NvbmZpcm0udHMnO1xuZXhwb3J0IHsgTWluaW1pemFibGVNb2RhbCB9IGZyb20gJy4vb2JzaWRpYW4vbW9kYWxzL21pbmltaXphYmxlLW1vZGFsLnRzJztcbmV4cG9ydCB7XG4gIE1vZGFsQ29tbWFuZEJ1aWxkZXIsXG4gIE1vZGFsQ29tbWFuZHNSZW5kZXJNb2RlXG59IGZyb20gJy4vb2JzaWRpYW4vbW9kYWxzL21vZGFsLWNvbW1hbmQtYnVpbGRlci50cyc7XG5leHBvcnQge1xuICBNb2RhbEJhc2UsXG4gIHNob3dNb2RhbFxufSBmcm9tICcuL29ic2lkaWFuL21vZGFscy9tb2RhbC50cyc7XG5leHBvcnQgeyBwcm9tcHQgfSBmcm9tICcuL29ic2lkaWFuL21vZGFscy9wcm9tcHQudHMnO1xuZXhwb3J0IHsgc2VsZWN0SXRlbSB9IGZyb20gJy4vb2JzaWRpYW4vbW9kYWxzL3NlbGVjdC1pdGVtLnRzJztcbmV4cG9ydCB7IHNlbGVjdE9wdGlvbiB9IGZyb20gJy4vb2JzaWRpYW4vbW9kYWxzL3NlbGVjdC1vcHRpb24udHMnO1xuZXhwb3J0IHsgU3VnZ2VzdE1vZGFsQ29tbWFuZEJ1aWxkZXIgfSBmcm9tICcuL29ic2lkaWFuL21vZGFscy9zdWdnZXN0LW1vZGFsLWNvbW1hbmQtYnVpbGRlci50cyc7XG5leHBvcnQge1xuICBmaW5kTm9Qcmlvcml0eVdpbm5lclJlYXNvbixcbiAgZmluZE5vdGVQcmlvcml0eVJhbmssXG4gIE5PX1BSSU9SSVRZX01BVENILFxuICBOb1ByaW9yaXR5V2lubmVyUmVhc29uLFxuICBwaWNrSGlnaGVzdFByaW9yaXR5Tm90ZVBhdGhcbn0gZnJvbSAnLi9vYnNpZGlhbi9ub3RlLXByaW9yaXR5LnRzJztcbmV4cG9ydCB7XG4gIE5PVEVCT09LX05BVklHQVRPUl9NRU5VX1NPVVJDRSxcbiAgTk9URUJPT0tfTkFWSUdBVE9SX1BMVUdJTl9JRCxcbiAgcmVzb2x2ZU5vdGVib29rTmF2aWdhdG9yQXBpXG59IGZyb20gJy4vb2JzaWRpYW4vbm90ZWJvb2stbmF2aWdhdG9yLnRzJztcbmV4cG9ydCB7IFBsdWdpbk9ic2lkaWFuUHJvdG9jb2xIYW5kbGVyUmVnaXN0cmFyIH0gZnJvbSAnLi9vYnNpZGlhbi9vYnNpZGlhbi1wcm90b2NvbC1oYW5kbGVyLXJlZ2lzdHJhci50cyc7XG5leHBvcnQge1xuICBnZXROZXdMaW5rRm9ybWF0LFxuICBpc1NwZWxsY2hlY2tFbmFibGVkLFxuICBzaG91bGRVc2VXaWtpbGlua3Ncbn0gZnJvbSAnLi9vYnNpZGlhbi9vYnNpZGlhbi1zZXR0aW5ncy50cyc7XG5leHBvcnQge1xuICBlc2NhcGVBbGlhcyxcbiAgaXNQYXJzZUxpbmtGcm9udG1hdHRlclJlZmVyZW5jZSxcbiAgaXNQYXJzZUxpbmtSZWZlcmVuY2UsXG4gIHBhcnNlRnJvbnRtYXR0ZXJMaW5rcyxcbiAgcGFyc2VMaW5rLFxuICBwYXJzZUxpbmtzLFxuICB0b1BhcnNlTGlua1JlZmVyZW5jZSxcbiAgdW5lc2NhcGVBbGlhc1xufSBmcm9tICcuL29ic2lkaWFuL3BhcnNlLWxpbmsudHMnO1xuZXhwb3J0IHtcbiAgUGF0aFNldHRpbmdzLFxuICBwYXRoc1ZhbGlkYXRvclxufSBmcm9tICcuL29ic2lkaWFuL3BhdGgtc2V0dGluZ3MudHMnO1xuZXhwb3J0IHsgcHJpbnRUb1BkZiB9IGZyb20gJy4vb2JzaWRpYW4vcGRmLnRzJztcbmV4cG9ydCB7IFBsdWdpbkNsaUhhbmRsZXJSZWdpc3RyYXIgfSBmcm9tICcuL29ic2lkaWFuL3BsdWdpbi1jbGktaGFuZGxlci1yZWdpc3RyYXIudHMnO1xuZXhwb3J0IHsgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMgfSBmcm9tICcuL29ic2lkaWFuL3BsdWdpbi9vYnNpZGlhbi1wbHVnaW4tcmVwby1wYXRocy50cyc7XG5leHBvcnQge1xuICBQbHVnaW5BcGlQYXlsb2FkS2luZCxcbiAgUGx1Z2luQXBpUmV2b2tlZEVycm9yLFxuICBQbHVnaW5BcGlVbmF2YWlsYWJpbGl0eVJlYXNvbixcbiAgUGx1Z2luQXBpVW5hdmFpbGFibGVFcnJvcixcbiAgUGx1Z2luQXBpVmFsaWRhdGlvbkVycm9yLFxuICBwdWJsaXNoUGx1Z2luQXBpLFxuICB3YXRjaFBsdWdpbkFwaVxufSBmcm9tICcuL29ic2lkaWFuL3BsdWdpbi9wbHVnaW4tYXBpLnRzJztcbmV4cG9ydCB7XG4gIGFkZFBsdWdpbkNzc0NsYXNzZXMsXG4gIGluaXREZWJ1Z0NvbnRyb2xsZXIsXG4gIGluaXRQbHVnaW5Db250ZXh0XG59IGZyb20gJy4vb2JzaWRpYW4vcGx1Z2luL3BsdWdpbi1jb250ZXh0LnRzJztcbmV4cG9ydCB7IFBsdWdpbkV2ZW50U291cmNlSW1wbCB9IGZyb20gJy4vb2JzaWRpYW4vcGx1Z2luL3BsdWdpbi1ldmVudC1zb3VyY2UudHMnO1xuZXhwb3J0IHtcbiAgUGx1Z2luU2V0dGluZ3NUYWJCYXNlLFxuICBTQVZFX1RPX0ZJTEVfQ09OVEVYVFxufSBmcm9tICcuL29ic2lkaWFuL3BsdWdpbi9wbHVnaW4tc2V0dGluZ3MtdGFiLnRzJztcbmV4cG9ydCB7XG4gIFBsdWdpbkJhc2UsXG4gIHJlbG9hZFBsdWdpbixcbiAgc2hvd0Vycm9yQW5kRGlzYWJsZVBsdWdpblxufSBmcm9tICcuL29ic2lkaWFuL3BsdWdpbi9wbHVnaW4udHMnO1xuZXhwb3J0IHsgZWRpdEZpZWxkc0luUG9wb3ZlciB9IGZyb20gJy4vb2JzaWRpYW4vcG9wb3ZlcnMvZmllbGQtcG9wb3Zlci50cyc7XG5leHBvcnQge1xuICBjcmVhdGVBbmNob3JGcm9tRG9jdW1lbnRDZW50ZXIsXG4gIGNyZWF0ZUFuY2hvckZyb21FbGVtZW50LFxuICBjcmVhdGVBbmNob3JGcm9tUG9pbnQsXG4gIGNyZWF0ZUFuY2hvckZyb21TZWxlY3Rpb25cbn0gZnJvbSAnLi9vYnNpZGlhbi9wb3BvdmVycy9wb3BvdmVyLWFuY2hvci50cyc7XG5leHBvcnQgeyBzaG93UG9wb3ZlciB9IGZyb20gJy4vb2JzaWRpYW4vcG9wb3ZlcnMvcG9wb3Zlci50cyc7XG5leHBvcnQge1xuICBhZGRUb1F1ZXVlLFxuICBhZGRUb1F1ZXVlQW5kV2FpdCxcbiAgZmx1c2hRdWV1ZVxufSBmcm9tICcuL29ic2lkaWFuL3F1ZXVlLnRzJztcbmV4cG9ydCB7XG4gIEFwcENvbnRleHQsXG4gIHVzZUFwcFxufSBmcm9tICcuL29ic2lkaWFuL3JlYWN0L2FwcC1jb250ZXh0LnRzJztcbmV4cG9ydCB7XG4gIGlzQ2FudmFzRmlsZU5vZGVSZWZlcmVuY2UsXG4gIGlzQ2FudmFzUmVmZXJlbmNlLFxuICBpc0NhbnZhc1RleHROb2RlUmVmZXJlbmNlLFxuICByZWZlcmVuY2VUb0ZpbGVDaGFuZ2UsXG4gIHNvcnRSZWZlcmVuY2VzXG59IGZyb20gJy4vb2JzaWRpYW4vcmVmZXJlbmNlLnRzJztcbmV4cG9ydCB7XG4gIGlzUmVzb3VyY2VMb2NrZWRGb3JQYXRoLFxuICBpc1Jlc291cmNlTG9ja2VkRm9yUGF0aEJ5QW5jZXN0b3IsXG4gIGxvY2tSZXNvdXJjZUZvclBhdGgsXG4gIHJlcXVlc3RSZXNvdXJjZVVubG9ja0ZvclBhdGgsXG4gIFJlc291cmNlTG9ja0NvbXBvbmVudCxcbiAgUmVzb3VyY2VMb2NrZWRFcnJvcixcbiAgdW5sb2NrUmVzb3VyY2VGb3JQYXRoXG59IGZyb20gJy4vb2JzaWRpYW4vcmVzb3VyY2UtbG9jay50cyc7XG5leHBvcnQgeyByZWxhdGl2ZVBhdGhUb1Jlc291cmNlVXJsIH0gZnJvbSAnLi9vYnNpZGlhbi9yZXNvdXJjZS11cmwudHMnO1xuZXhwb3J0IHsgUGx1Z2luUmliYm9uSWNvblJlZ2lzdHJhciB9IGZyb20gJy4vb2JzaWRpYW4vcmliYm9uLWljb24tcmVnaXN0cmFyLnRzJztcbmV4cG9ydCB7IENoZWNrYm94Q29tcG9uZW50IH0gZnJvbSAnLi9vYnNpZGlhbi9zZXR0aW5nLWNvbXBvbmVudHMvY2hlY2tib3gtY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IENvZGVIaWdobGlnaHRlckNvbXBvbmVudCB9IGZyb20gJy4vb2JzaWRpYW4vc2V0dGluZy1jb21wb25lbnRzL2NvZGUtaGlnaGxpZ2h0ZXItY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IERhdGVDb21wb25lbnQgfSBmcm9tICcuL29ic2lkaWFuL3NldHRpbmctY29tcG9uZW50cy9kYXRlLWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBEYXRlVGltZUNvbXBvbmVudCB9IGZyb20gJy4vb2JzaWRpYW4vc2V0dGluZy1jb21wb25lbnRzL2RhdGUtdGltZS1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgRW1haWxDb21wb25lbnQgfSBmcm9tICcuL29ic2lkaWFuL3NldHRpbmctY29tcG9uZW50cy9lbWFpbC1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgRmlsZUNvbXBvbmVudCB9IGZyb20gJy4vb2JzaWRpYW4vc2V0dGluZy1jb21wb25lbnRzL2ZpbGUtY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IE1vbnRoQ29tcG9uZW50IH0gZnJvbSAnLi9vYnNpZGlhbi9zZXR0aW5nLWNvbXBvbmVudHMvbW9udGgtY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IE11bHRpcGxlRHJvcGRvd25Db21wb25lbnQgfSBmcm9tICcuL29ic2lkaWFuL3NldHRpbmctY29tcG9uZW50cy9tdWx0aXBsZS1kcm9wZG93bi1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgTXVsdGlwbGVFbWFpbENvbXBvbmVudCB9IGZyb20gJy4vb2JzaWRpYW4vc2V0dGluZy1jb21wb25lbnRzL211bHRpcGxlLWVtYWlsLWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBNdWx0aXBsZUZpbGVDb21wb25lbnQgfSBmcm9tICcuL29ic2lkaWFuL3NldHRpbmctY29tcG9uZW50cy9tdWx0aXBsZS1maWxlLWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBNdWx0aXBsZVRleHRDb21wb25lbnQgfSBmcm9tICcuL29ic2lkaWFuL3NldHRpbmctY29tcG9uZW50cy9tdWx0aXBsZS10ZXh0LWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBOdW1iZXJDb21wb25lbnQgfSBmcm9tICcuL29ic2lkaWFuL3NldHRpbmctY29tcG9uZW50cy9udW1iZXItY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IFBhc3N3b3JkQ29tcG9uZW50IH0gZnJvbSAnLi9vYnNpZGlhbi9zZXR0aW5nLWNvbXBvbmVudHMvcGFzc3dvcmQtY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IGVuc3VyZVdyYXBwZWQgfSBmcm9tICcuL29ic2lkaWFuL3NldHRpbmctY29tcG9uZW50cy9zZXR0aW5nLWNvbXBvbmVudC13cmFwcGVyLnRzJztcbmV4cG9ydCB7IFRlbGVwaG9uZUNvbXBvbmVudCB9IGZyb20gJy4vb2JzaWRpYW4vc2V0dGluZy1jb21wb25lbnRzL3RlbGVwaG9uZS1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgZ2V0VGV4dEJhc2VkQ29tcG9uZW50VmFsdWUgfSBmcm9tICcuL29ic2lkaWFuL3NldHRpbmctY29tcG9uZW50cy90ZXh0LWJhc2VkLWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBUaW1lQ29tcG9uZW50IH0gZnJvbSAnLi9vYnNpZGlhbi9zZXR0aW5nLWNvbXBvbmVudHMvdGltZS1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgVHJpU3RhdGVDaGVja2JveENvbXBvbmVudCB9IGZyb20gJy4vb2JzaWRpYW4vc2V0dGluZy1jb21wb25lbnRzL3RyaS1zdGF0ZS1jaGVja2JveC1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgVHlwZWREcm9wZG93bkNvbXBvbmVudCB9IGZyb20gJy4vb2JzaWRpYW4vc2V0dGluZy1jb21wb25lbnRzL3R5cGVkLWRyb3Bkb3duLWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBUeXBlZE11bHRpcGxlRHJvcGRvd25Db21wb25lbnQgfSBmcm9tICcuL29ic2lkaWFuL3NldHRpbmctY29tcG9uZW50cy90eXBlZC1tdWx0aXBsZS1kcm9wZG93bi1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgVHlwZWRSYW5nZVRleHRDb21wb25lbnQgfSBmcm9tICcuL29ic2lkaWFuL3NldHRpbmctY29tcG9uZW50cy90eXBlZC1yYW5nZS10ZXh0LWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBUeXBlZFRleHRDb21wb25lbnQgfSBmcm9tICcuL29ic2lkaWFuL3NldHRpbmctY29tcG9uZW50cy90eXBlZC10ZXh0LWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBVcmxDb21wb25lbnQgfSBmcm9tICcuL29ic2lkaWFuL3NldHRpbmctY29tcG9uZW50cy91cmwtY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IGdldFZhbGlkYXRvckNvbXBvbmVudCB9IGZyb20gJy4vb2JzaWRpYW4vc2V0dGluZy1jb21wb25lbnRzL3ZhbGlkYXRvci1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgV2Vla0NvbXBvbmVudCB9IGZyb20gJy4vb2JzaWRpYW4vc2V0dGluZy1jb21wb25lbnRzL3dlZWstY29tcG9uZW50LnRzJztcbmV4cG9ydCB7XG4gIGFkb3B0U2V0dGluZ0V4LFxuICBTZXR0aW5nRXhcbn0gZnJvbSAnLi9vYnNpZGlhbi9zZXR0aW5nLWV4LnRzJztcbmV4cG9ydCB7IFNldHRpbmdHcm91cEV4IH0gZnJvbSAnLi9vYnNpZGlhbi9zZXR0aW5nLWdyb3VwLWV4LnRzJztcbmV4cG9ydCB7IFBsdWdpblN0YXR1c0Jhckl0ZW1SZWdpc3RyYXIgfSBmcm9tICcuL29ic2lkaWFuL3N0YXR1cy1iYXItaXRlbS1yZWdpc3RyYXIudHMnO1xuZXhwb3J0IHtcbiAgZ2V0VGVtcGxhdGVyRnVuY3Rpb25zLFxuICBnZXRUZW1wbGF0ZXJSZW5kZXJUYXJnZXRGaWxlLFxuICBwYXJzZVRlbXBsYXRlLFxuICByZXF1aXJlVGVtcGxhdGVyQXBpLFxuICByZXNvbHZlVGVtcGxhdGVyQXBpLFxuICBURU1QTEFURVJfUExVR0lOX0lELFxuICBUZW1wbGF0ZXJBY3RpdmVGaWxlUHJvdmlkZXIsXG4gIFRlbXBsYXRlclJ1bk1vZGUsXG4gIFRlbXBsYXRlclVuYXZhaWxhYmlsaXR5UmVhc29uLFxuICBUZW1wbGF0ZXJVbmF2YWlsYWJsZUVycm9yXG59IGZyb20gJy4vb2JzaWRpYW4vdGVtcGxhdGVyLnRzJztcbmV4cG9ydCB7XG4gIGdldE9zQW5kT2JzaWRpYW5VbnNhZmVQYXRoQ2hhcnNSZWdFeHAsXG4gIGdldE9zVW5zYWZlUGF0aENoYXJzUmVnRXhwLFxuICBpc1ZhbGlkYXRpb25NZXNzYWdlSG9sZGVyLFxuICBPQlNJRElBTl9VTlNBRkVfRklMRU5BTUVfQ0hBUlMsXG4gIFVOSVhfVU5TQUZFX1BBVEhfQ0hBUlMsXG4gIFdJTkRPV1NfVU5TQUZFX1BBVEhfQ0hBUlNcbn0gZnJvbSAnLi9vYnNpZGlhbi92YWxpZGF0aW9uLnRzJztcbmV4cG9ydCB7XG4gIGRlbGV0ZUlmTm90VXNlZCxcbiAgRGVsZXRlSWZOb3RVc2VkUmVzdWx0XG59IGZyb20gJy4vb2JzaWRpYW4vdmF1bHQtZGVsZXRlLnRzJztcbmV4cG9ydCB7IFZhdWx0VHJhbnNhY3Rpb24gfSBmcm9tICcuL29ic2lkaWFuL3ZhdWx0LXRyYW5zYWN0aW9uLnRzJztcbmV4cG9ydCB7XG4gIGNsZWFudXBFbXB0eUZvbGRlcnMsXG4gIGNvcHlTYWZlLFxuICBjcmVhdGVGb2xkZXJTYWZlLFxuICBDcmVhdGVGb2xkZXJTYWZlUmVzdWx0LFxuICBjcmVhdGVUZW1wb3JhcnlGaWxlLFxuICBjcmVhdGVUZW1wb3JhcnlGb2xkZXIsXG4gIGRlbGV0ZUVtcHR5Rm9sZGVyLFxuICBkZWxldGVFbXB0eUZvbGRlckhpZXJhcmNoeSxcbiAgZ2V0QWJzdHJhY3RGaWxlUGF0aFNhZmUsXG4gIGdldEF2YWlsYWJsZVBhdGgsXG4gIGdldEZpbGVQYXRoU2FmZSxcbiAgZ2V0Rm9sZGVyUGF0aFNhZmUsXG4gIGdldE1hcmtkb3duRmlsZXNTb3J0ZWQsXG4gIGdldE5vdGVGaWxlc1NvcnRlZCxcbiAgZ2V0T3JDcmVhdGVBYnN0cmFjdEZpbGVTYWZlLFxuICBnZXRPckNyZWF0ZUZpbGVTYWZlLFxuICBnZXRPckNyZWF0ZUZvbGRlclNhZmUsXG4gIGdldFNhZmVSZW5hbWVQYXRoLFxuICBJbnZva2VGaWxlQWN0aW9uU2FmZVJlc3VsdCxcbiAgaW52b2tlV2l0aEZpbGVTeXN0ZW1Mb2NrLFxuICBpc0NoaWxkLFxuICBpc0NoaWxkT3JTZWxmLFxuICBpc0VtcHR5Rm9sZGVyLFxuICBsaXN0U2FmZSxcbiAgcHJvY2VzcyxcbiAgcmVhZFNhZmUsXG4gIHJlbmFtZVNhZmUsXG4gIHNhdmVOb3RlLFxuICB0cmFzaFNhZmVcbn0gZnJvbSAnLi9vYnNpZGlhbi92YXVsdC50cyc7XG5leHBvcnQgeyBQbHVnaW5WaWV3UmVnaXN0cmFyIH0gZnJvbSAnLi9vYnNpZGlhbi92aWV3LXJlZ2lzdHJhci50cyc7XG5leHBvcnQge1xuICBlbnN1cmVMYXlvdXRSZWFkeSxcbiAgZ2V0QWxsQ29udGFpbmVycyxcbiAgZ2V0QWxsRG9tV2luZG93cyxcbiAgZ2V0TWFpbldpbmRvdyxcbiAgc3dpdGNoVG9NYWluV2luZG93LFxuICBzd2l0Y2hUb1dpbmRvd1xufSBmcm9tICcuL29ic2lkaWFuL3dvcmtzcGFjZS50cyc7XG5leHBvcnQge1xuICBiYXNlbmFtZSxcbiAgZGVsaW1pdGVyLFxuICBkaXJuYW1lLFxuICBleHRuYW1lLFxuICBmb3JtYXQsXG4gIGdldEZpbGVOYW1lLFxuICBnZXRGb2xkZXJOYW1lLFxuICBpc0Fic29sdXRlLFxuICBqb2luLFxuICBtYWtlRmlsZU5hbWUsXG4gIG5vcm1hbGl6ZUlmUmVsYXRpdmUsXG4gIG5vcm1hbGl6ZVBhdGgsXG4gIHBhcnNlLFxuICBwb3NpeCxcbiAgcmVsYXRpdmUsXG4gIHJlc29sdmUsXG4gIHNlcGFyYXRvcixcbiAgdG9Qb3NpeEJ1ZmZlcixcbiAgdG9Qb3NpeFBhdGhcbn0gZnJvbSAnLi9wYXRoLnRzJztcbmV4cG9ydCB7XG4gIEFMV0FZU19NQVRDSF9SRUdfRVhQLFxuICBlc2NhcGVSZWdFeHAsXG4gIGdldE1hbmRhdG9yeU5hbWVkR3JvdXAsXG4gIGdldE9wdGlvbmFsTmFtZWRHcm91cCxcbiAgaXNWYWxpZFJlZ0V4cCxcbiAgTkVWRVJfTUFUQ0hfUkVHX0VYUCxcbiAgb25lT2YsXG4gIFJlZ0V4cE1lcmdlRmxhZ3NDb25mbGljdFN0cmF0ZWd5XG59IGZyb20gJy4vcmVnLWV4cC50cyc7XG5leHBvcnQge1xuICBieXBhc3NTdHJpY3RQcm94eSxcbiAgc3RyaWN0UHJveHlcbn0gZnJvbSAnLi9zdHJpY3QtcHJveHkudHMnO1xuZXhwb3J0IHtcbiAgRU1QVFksXG4gIGVuc3VyZUVuZHNXaXRoLFxuICBlbnN1cmVMZkVuZGluZ3MsXG4gIGVuc3VyZVN0YXJ0c1dpdGgsXG4gIGVzY2FwZSxcbiAgZ2V0TGZOb3JtYWxpemVkT2Zmc2V0VG9PcmlnaW5hbE9mZnNldE1hcHBlcixcbiAgaGFzU2luZ2xlT2NjdXJyZW5jZSxcbiAgaW5kZW50LFxuICBpbnNlcnRBdCxcbiAgbWFrZVZhbGlkVmFyaWFibGVOYW1lLFxuICBub3JtYWxpemVTdHJpbmcsXG4gIHJlcGxhY2UsXG4gIHJlcGxhY2VBbGwsXG4gIHJlcGxhY2VBbGxBc3luYyxcbiAgdHJpbUVuZCxcbiAgdHJpbVN0YXJ0LFxuICB1bmVzY2FwZSxcbiAgdW5pbmRlbnRcbn0gZnJvbSAnLi9zdHJpbmcudHMnO1xuZXhwb3J0IHsgRGF0ZVRyYW5zZm9ybWVyIH0gZnJvbSAnLi90cmFuc2Zvcm1lcnMvZGF0ZS10cmFuc2Zvcm1lci50cyc7XG5leHBvcnQgeyBEdXJhdGlvblRyYW5zZm9ybWVyIH0gZnJvbSAnLi90cmFuc2Zvcm1lcnMvZHVyYXRpb24tdHJhbnNmb3JtZXIudHMnO1xuZXhwb3J0IHsgR3JvdXBUcmFuc2Zvcm1lciB9IGZyb20gJy4vdHJhbnNmb3JtZXJzL2dyb3VwLXRyYW5zZm9ybWVyLnRzJztcbmV4cG9ydCB7IE1hcFRyYW5zZm9ybWVyIH0gZnJvbSAnLi90cmFuc2Zvcm1lcnMvbWFwLXRyYW5zZm9ybWVyLnRzJztcbmV4cG9ydCB7IFNldFRyYW5zZm9ybWVyIH0gZnJvbSAnLi90cmFuc2Zvcm1lcnMvc2V0LXRyYW5zZm9ybWVyLnRzJztcbmV4cG9ydCB7IFNraXBQcml2YXRlUHJvcGVydHlUcmFuc2Zvcm1lciB9IGZyb20gJy4vdHJhbnNmb3JtZXJzL3NraXAtcHJpdmF0ZS1wcm9wZXJ0eS10cmFuc2Zvcm1lci50cyc7XG5leHBvcnQgeyBUcmFuc2Zvcm1lciB9IGZyb20gJy4vdHJhbnNmb3JtZXJzL3RyYW5zZm9ybWVyLnRzJztcbmV4cG9ydCB7IFR3b1dheU1hcFRyYW5zZm9ybWVyIH0gZnJvbSAnLi90cmFuc2Zvcm1lcnMvdHdvLXdheS1tYXAtdHJhbnNmb3JtZXIudHMnO1xuZXhwb3J0IHsgVHlwZWRUcmFuc2Zvcm1lciB9IGZyb20gJy4vdHJhbnNmb3JtZXJzL3R5cGVkLXRyYW5zZm9ybWVyLnRzJztcbmV4cG9ydCB7IFR3b1dheU1hcCB9IGZyb20gJy4vdHdvLXdheS1tYXAudHMnO1xuZXhwb3J0IHtcbiAgYXNzZXJ0LFxuICBhc3NlcnRHZW5lcmljT2JqZWN0LFxuICBhc3NlcnROZXZlcixcbiAgYXNzZXJ0Tm9uTnVsbGFibGUsXG4gIGVuc3VyZUdlbmVyaWNPYmplY3QsXG4gIGVuc3VyZU5vbk51bGxhYmxlXG59IGZyb20gJy4vdHlwZS1ndWFyZHMudHMnO1xuZXhwb3J0IHsgVHlwZUFzc2VydGVyIH0gZnJvbSAnLi90eXBlLnRzJztcbmV4cG9ydCB7XG4gIGVuY29kZVVybCxcbiAgaXNGaWxlVXJsLFxuICBpc1VybCxcbiAgbm9ybWFsaXplRmlsZVVybCxcbiAgcGF0aFRvRmlsZVVybFxufSBmcm9tICcuL3VybC50cyc7XG5leHBvcnQgeyByZXNvbHZlVmFsdWUgfSBmcm9tICcuL3ZhbHVlLXByb3ZpZGVyLnRzJztcbmV4cG9ydCB7IFZhbHVlV3JhcHBlciB9IGZyb20gJy4vdmFsdWUtd3JhcHBlci50cyc7XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUE7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1A7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1A7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVMsY0FBYztBQUN2QjtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1A7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUDtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUDtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1A7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFB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LE9BQ0s7QUFDUCxTQUFTLDBCQUEwQjtBQUNuQyxTQUFTLHFCQUFxQjtBQUM5QjtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1AsU0FBUyxzQ0FBc0M7QUFDL0MsU0FBUyxvQ0FBb0M7QUFDN0M7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUDtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUCxTQUFTLGlDQUFpQztBQUMxQztBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUDtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1A7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUDtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1A7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUDtBQUFBLEVBQ0U7QUFBQSxFQUNB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QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1AsU0FBUywyQkFBMkI7QUFDcEM7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1A7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1A7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUDtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUCxTQUFTLHVCQUF1QjtBQUNoQyxTQUFTLDJCQUEyQjtBQUNwQyxTQUFTLHdCQUF3QjtBQUNqQyxTQUFTLHNCQUFzQjtBQUMvQixTQUFTLHNCQUFzQjtBQUMvQixTQUFTLHNDQUFzQztBQUMvQyxTQUFTLG1CQUFtQjtBQUM1QixTQUFTLDRCQUE0QjtBQUNyQyxTQUFTLHdCQUF3QjtBQUNqQyxTQUFTLGlCQUFpQjtBQUMxQjtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUCxTQUFTLG9CQUFvQjtBQUM3QjtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVMsb0JBQW9CO0FBQzdCLFNBQVMsb0JBQW9COyIsCiAgIm5hbWVzIjogW10KfQo=
|
|
1400
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL19fbWVyZ2VkLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKiBUSElTIElTIEEgR0VORVJBVEVEL0JVTkRMRUQgRklMRSBCWSBCVUlMRCBTQ1JJUFQgKi9cblxuZXhwb3J0IHtcbiAgYWJvcnRTaWduYWxBbnksXG4gIGFib3J0U2lnbmFsTmV2ZXIsXG4gIGFib3J0U2lnbmFsVGltZW91dCxcbiAgZ2V0U2hhcmVkQWJvcnRDb250cm9sbGVyLFxuICBnZXRTaGFyZWRBYm9ydFNpZ25hbCxcbiAgSU5GSU5JVEVfVElNRU9VVCxcbiAgb25BYm9ydCxcbiAgUmVzZXR0YWJsZUFib3J0Q29udHJvbGxlcixcbiAgd2FpdEZvckFib3J0XG59IGZyb20gJy4vYWJvcnQtY29udHJvbGxlci50cyc7XG5leHBvcnQge1xuICBmaWx0ZXJJblBsYWNlLFxuICBzbmFwc2hvdCxcbiAgdW5pcXVlLFxuICB1bmlxdWVJblBsYWNlXG59IGZyb20gJy4vYXJyYXkudHMnO1xuZXhwb3J0IHtcbiAgQXN5bmNFdmVudFJlZkRpc3Bvc2FibGUsXG4gIEFzeW5jRXZlbnRzLFxuICBBc3luY0V2ZW50c0Jhc2UsXG4gIG1peGluQXN5bmNFdmVudHMsXG4gIHN1YnNjcmliZUFzeW5jRGlzcG9zYWJsZUV2ZW50XG59IGZyb20gJy4vYXN5bmMtZXZlbnRzLnRzJztcbmV4cG9ydCB7XG4gIGFkZEVycm9ySGFuZGxlcixcbiAgYXN5bmNGaWx0ZXIsXG4gIGFzeW5jRmlsdGVySW5QbGFjZSxcbiAgYXN5bmNGbGF0TWFwLFxuICBhc3luY01hcCxcbiAgY2hhaW4sXG4gIGNvbnZlcnRBc3luY1RvU3luYyxcbiAgY29udmVydFN5bmNUb0FzeW5jLFxuICBkaXNhYmxlQXN5bmNPcGVyYXRpb25UcmFja2luZyxcbiAgZW5hYmxlQXN5bmNPcGVyYXRpb25UcmFja2luZyxcbiAgaGFuZGxlU2lsZW50RXJyb3IsXG4gIGlnbm9yZUVycm9yLFxuICBpbnZva2VBc3luY1NhZmVseSxcbiAgaW52b2tlQXN5bmNTYWZlbHlBZnRlckRlbGF5LFxuICBpc0FzeW5jT3BlcmF0aW9uVHJhY2tpbmdFbmFibGVkLFxuICBtYXJrc0FzVGVybWluYXRlUmV0cnksXG4gIG5ldmVyRW5kcyxcbiAgbmV4dFRpY2tBc3luYyxcbiAgbm9ybWFsaXplUHJvbWlzYWJsZSxcbiAgcHJvbWlzZUFsbEFzeW5jRm5zU2VxdWVudGlhbGx5LFxuICBwcm9taXNlQWxsU2VxdWVudGlhbGx5LFxuICBxdWV1ZU1pY3JvdGFza0FzeW5jLFxuICByZXF1ZXN0QW5pbWF0aW9uRnJhbWVBc3luYyxcbiAgcmV0cnlXaXRoVGltZW91dCxcbiAgcnVuV2l0aFRpbWVvdXQsXG4gIHNldEltbWVkaWF0ZUFzeW5jLFxuICBzZXRUaW1lb3V0QXN5bmMsXG4gIHNsZWVwLFxuICB0aW1lb3V0LFxuICB0b0FycmF5LFxuICB3YWl0Rm9yQWxsQXN5bmNPcGVyYXRpb25zXG59IGZyb20gJy4vYXN5bmMudHMnO1xuZXhwb3J0IHsgQmVlcGVyIH0gZnJvbSAnLi9iZWVwZXIudHMnO1xuZXhwb3J0IHtcbiAgYmxvYlRvQXJyYXlCdWZmZXIsXG4gIGJsb2JUb0RhdGFVcmwsXG4gIGJsb2JUb0pwZWdBcnJheUJ1ZmZlcixcbiAgZGF0YVVybFRvQXJyYXlCdWZmZXIsXG4gIGlzSW1hZ2VGaWxlXG59IGZyb20gJy4vYmxvYi50cyc7XG5leHBvcnQge1xuICBlbmFibGVMaWJyYXJ5RGVidWdnZXJzLFxuICBnZXREZWJ1Z0NvbnRyb2xsZXIsXG4gIGdldERlYnVnZ2VyLFxuICBnZXRMaWJEZWJ1Z2dlcixcbiAgcHJpbnRXaXRoU3RhY2tUcmFjZSxcbiAgc2hvd0luaXRpYWxEZWJ1Z01lc3NhZ2Vcbn0gZnJvbSAnLi9kZWJ1Zy50cyc7XG5leHBvcnQgeyBleHRyYWN0WmlwQXJjaGl2ZSB9IGZyb20gJy4vZGVza3RvcC16aXAtZXh0cmFjdG9yLnRzJztcbmV4cG9ydCB7XG4gIEFzeW5jQ2FsbGJhY2tEaXNwb3NhYmxlLFxuICBBc3luY0Rpc3Bvc2FibGVCYXNlLFxuICBDYWxsYmFja0Rpc3Bvc2FibGUsXG4gIENvbWJpbmVBc3luY0Rpc3Bvc2FibGUsXG4gIENvbWJpbmVEaXNwb3NhYmxlLFxuICBEaXNwb3NhYmxlQmFzZSxcbiAgZGlzcG9zZSxcbiAgZGlzcG9zZUFzeW5jLFxuICBEaXNwb3NlRXJyb3JCZWhhdmlvcixcbiAgRGlzcG9zZU9yZGVyLFxuICBpc0FzeW5jRGlzcG9zYWJsZSxcbiAgaXNBc3luY0Rpc3Bvc2FibGVFeCxcbiAgaXNEaXNwb3NhYmxlLFxuICBpc0Rpc3Bvc2FibGVFeCxcbiAgTXVsdGlwbGVEaXNwb3NlQmVoYXZpb3IsXG4gIHRvQXN5bmNEaXNwb3NhYmxlRXgsXG4gIHRvRGlzcG9zYWJsZUV4XG59IGZyb20gJy4vZGlzcG9zYWJsZS50cyc7XG5leHBvcnQge1xuICBnZXRFbnVtS2V5LFxuICBnZXRFbnVtVmFsdWVcbn0gZnJvbSAnLi9lbnVtLnRzJztcbmV4cG9ydCB7XG4gIEFTWU5DX1dSQVBQRVJfRVJST1JfTUVTU0FHRSxcbiAgQ3VzdG9tU3RhY2tUcmFjZUVycm9yLFxuICBkcmFpbkNvbGxlY3RlZFVuaGFuZGxlZEFzeW5jRXJyb3JzLFxuICBlbWl0QXN5bmNFcnJvckV2ZW50LFxuICBlcnJvclRvU3RyaW5nLFxuICBFcnJvcldyYXBwZXIsXG4gIGdldFN0YWNrVHJhY2UsXG4gIGlzQXN5bmNFcnJvcklnbm9yZUNvbnRleHRBY3RpdmUsXG4gIHByaW50RXJyb3IsXG4gIHJlZ2lzdGVyQXN5bmNFcnJvckV2ZW50SGFuZGxlcixcbiAgU2lsZW50RXJyb3IsXG4gIHN0YXJ0QXN5bmNFcnJvcklnbm9yZUNvbnRleHQsXG4gIHN0YXJ0Q29sbGVjdGluZ1VuaGFuZGxlZEFzeW5jRXJyb3JzLFxuICBzdG9wQ29sbGVjdGluZ1VuaGFuZGxlZEFzeW5jRXJyb3JzLFxuICB0aHJvd0V4cHJlc3Npb25cbn0gZnJvbSAnLi9lcnJvci50cyc7XG5leHBvcnQge1xuICBjbG9uZUZ1bmN0aW9uLFxuICBjcmVhdGVGdW5jdGlvbixcbiAgZ2V0RnVuY3Rpb25FeHByZXNzaW9uU3RyaW5nLFxuICBub29wLFxuICBub29wQXN5bmMsXG4gIG5vb3BBc3luY1NpbmdsZXRvblByb21pc2UsXG4gIG9taXRBc3luY1JldHVyblR5cGUsXG4gIG9taXRSZXR1cm5UeXBlXG59IGZyb20gJy4vZnVuY3Rpb24udHMnO1xuZXhwb3J0IHtcbiAgTElCUkFSWV9TVFlMRVMsXG4gIExJQlJBUllfVkVSU0lPTlxufSBmcm9tICcuL2dlbmVyYXRlZC1kdXJpbmctYnVpbGQudHMnO1xuZXhwb3J0IHtcbiAgY3JlYXRlRGl2QXN5bmMsXG4gIGNyZWF0ZUVsQXN5bmMsXG4gIGNyZWF0ZUZyYWdtZW50QXN5bmMsXG4gIGNyZWF0ZVNwYW5Bc3luYyxcbiAgY3JlYXRlU3ZnQXN5bmMsXG4gIGVuc3VyZUxvYWRlZCxcbiAgZ2V0RG9jdW1lbnRXaW5kb3csXG4gIGdldFpJbmRleCxcbiAgaXNFbGVtZW50VmlzaWJsZUluT2Zmc2V0UGFyZW50LFxuICBpc0xvYWRlZCxcbiAgb25BbmNlc3RvclNjcm9sbE9yUmVzaXplLFxuICB0b1B4LFxuICB3YWl0VW50aWxDb25uZWN0ZWRcbn0gZnJvbSAnLi9odG1sLWVsZW1lbnQudHMnO1xuZXhwb3J0IHtcbiAgZXh0cmFjdEpwZWdNZXRhZGF0YVNlZ21lbnRzLFxuICBpbmplY3RKcGVnTWV0YWRhdGFTZWdtZW50c1xufSBmcm9tICcuL2pwZWctbWV0YWRhdGEudHMnO1xuZXhwb3J0IHtcbiAgTGlicmFyeSxcbiAgTElCUkFSWV9OQU1FXG59IGZyb20gJy4vbGlicmFyeS50cyc7XG5leHBvcnQge1xuICBhc3NpZ25XaXRoTm9uRW51bWVyYWJsZVByb3BlcnRpZXMsXG4gIGNhc3RUbyxcbiAgY2xvbmVXaXRoTm9uRW51bWVyYWJsZVByb3BlcnRpZXMsXG4gIGRlbGV0ZVByb3BlcnRpZXMsXG4gIGRlbGV0ZVByb3BlcnR5LFxuICBleHRyYWN0RGVmYXVsdEV4cG9ydEludGVyb3AsXG4gIEZ1bmN0aW9uSGFuZGxpbmdNb2RlLFxuICBnZXRBbGxFbnRyaWVzLFxuICBnZXRBbGxLZXlzLFxuICBnZXROZXN0ZWRQcm9wZXJ0eVZhbHVlLFxuICBnZXRQcm90b3R5cGVPZixcbiAgaXNEZWVwRXF1YWwsXG4gIG5hbWVvZixcbiAgbm9ybWFsaXplT3B0aW9uYWxQcm9wZXJ0aWVzLFxuICByZW1vdmVVbmRlZmluZWRQcm9wZXJ0aWVzLFxuICBzZXROZXN0ZWRQcm9wZXJ0eVZhbHVlLFxuICB0b0pzb25cbn0gZnJvbSAnLi9vYmplY3QtdXRpbHMudHMnO1xuZXhwb3J0IHtcbiAgZ2V0T2JzaWRpYW5EZXZVdGlsc1N0YXRlLFxuICByZXNldE9ic2lkaWFuRGV2VXRpbHNTdGF0ZVxufSBmcm9tICcuL29ic2lkaWFuLWRldi11dGlscy1zdGF0ZS50cyc7XG5leHBvcnQgeyBBcHBBY3RpdmVGaWxlUHJvdmlkZXIgfSBmcm9tICcuL29ic2lkaWFuL2FjdGl2ZS1maWxlLXByb3ZpZGVyLnRzJztcbmV4cG9ydCB7IGdldEFwcCB9IGZyb20gJy4vb2JzaWRpYW4vYXBwLnRzJztcbmV4cG9ydCB7XG4gIHJldHJ5V2l0aFRpbWVvdXROb3RpY2UsXG4gIHJ1bldpdGhUaW1lb3V0Tm90aWNlXG59IGZyb20gJy4vb2JzaWRpYW4vYXN5bmMtd2l0aC1ub3RpY2UudHMnO1xuZXhwb3J0IHtcbiAgQXR0YWNobWVudFBhdGhDb250ZXh0LFxuICBEVU1NWV9QQVRILFxuICBnZXRBdHRhY2htZW50RmlsZVBhdGgsXG4gIGdldEF0dGFjaG1lbnRGb2xkZXJQYXRoLFxuICBnZXRBdHRhY2htZW50Rm9sZGVyUGF0aFN5bmNPck51bGwsXG4gIGdldEF2YWlsYWJsZVBhdGhGb3JBdHRhY2htZW50cyxcbiAgaGFzT3duQXR0YWNobWVudEZvbGRlcixcbiAgaXNBdFByb3BlckF0dGFjaG1lbnRQYXRoXG59IGZyb20gJy4vb2JzaWRpYW4vYXR0YWNobWVudC1wYXRoLnRzJztcbmV4cG9ydCB7XG4gIGZpbmRBdHRhY2htZW50VW5pdEZvbGRlclBhdGgsXG4gIHJlYmFzZVBhdGhPbnRvRm9sZGVyXG59IGZyb20gJy4vb2JzaWRpYW4vYXR0YWNobWVudC11bml0LWZvbGRlci50cyc7XG5leHBvcnQge1xuICByZW5kZXJCYWNrbGlua3NUYWJsZSxcbiAgcmVuZGVyRGVsYXllZEJhY2tsaW5rcyxcbiAgcmVuZGVyRGVsYXllZEJhY2tsaW5rc0ZvckZvbGRlclxufSBmcm9tICcuL29ic2lkaWFuL2JhY2tsaW5rLnRzJztcbmV4cG9ydCB7IFBsdWdpbkJhc2VzVmlld1JlZ2lzdHJhciB9IGZyb20gJy4vb2JzaWRpYW4vYmFzZXMtdmlldy1yZWdpc3RyYXIudHMnO1xuZXhwb3J0IHtcbiAgQ2FsbG91dE1vZGUsXG4gIHJlbmRlckNhbGxvdXQsXG4gIHdyYXBGb3JDYWxsb3V0XG59IGZyb20gJy4vb2JzaWRpYW4vY2FsbG91dC50cyc7XG5leHBvcnQgeyBnZXRDYW52YXNSZWZlcmVuY2VzIH0gZnJvbSAnLi9vYnNpZGlhbi9jYW52YXMudHMnO1xuZXhwb3J0IHtcbiAgQ2FzZUluc2Vuc2l0aXZlRmlsZUluZGV4LFxuICBnZXRDYXNlSW5zZW5zaXRpdmVGaWxlSW5kZXgsXG4gIHNldENhc2VJbnNlbnNpdGl2ZUZpbGVJbmRleCxcbiAgdW5zZXRDYXNlSW5zZW5zaXRpdmVGaWxlSW5kZXhcbn0gZnJvbSAnLi9vYnNpZGlhbi9jYXNlLWluc2Vuc2l0aXZlLWZpbGUtaW5kZXgudHMnO1xuZXhwb3J0IHsgY3JlYXRlQ29kZUJsb2NrUmVnRXhwIH0gZnJvbSAnLi9vYnNpZGlhbi9jb2RlLWJsb2NrLXJlZy1leHAudHMnO1xuZXhwb3J0IHsgQWJzdHJhY3RGaWxlQ29tbWFuZEhhbmRsZXIgfSBmcm9tICcuL29ic2lkaWFuL2NvbW1hbmQtaGFuZGxlcnMvYWJzdHJhY3QtZmlsZS1jb21tYW5kLWhhbmRsZXIudHMnO1xuZXhwb3J0IHsgQ29tbWFuZEhhbmRsZXJDb21wb25lbnQgfSBmcm9tICcuL29ic2lkaWFuL2NvbW1hbmQtaGFuZGxlcnMvY29tbWFuZC1oYW5kbGVyLWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBDb21tYW5kSGFuZGxlciB9IGZyb20gJy4vb2JzaWRpYW4vY29tbWFuZC1oYW5kbGVycy9jb21tYW5kLWhhbmRsZXIudHMnO1xuZXhwb3J0IHsgRWRpdG9yQ29tbWFuZEhhbmRsZXIgfSBmcm9tICcuL29ic2lkaWFuL2NvbW1hbmQtaGFuZGxlcnMvZWRpdG9yLWNvbW1hbmQtaGFuZGxlci50cyc7XG5leHBvcnQgeyBGaWxlQ29tbWFuZEhhbmRsZXIgfSBmcm9tICcuL29ic2lkaWFuL2NvbW1hbmQtaGFuZGxlcnMvZmlsZS1jb21tYW5kLWhhbmRsZXIudHMnO1xuZXhwb3J0IHsgRm9sZGVyQ29tbWFuZEhhbmRsZXIgfSBmcm9tICcuL29ic2lkaWFuL2NvbW1hbmQtaGFuZGxlcnMvZm9sZGVyLWNvbW1hbmQtaGFuZGxlci50cyc7XG5leHBvcnQgeyBHbG9iYWxDb21tYW5kSGFuZGxlciB9IGZyb20gJy4vb2JzaWRpYW4vY29tbWFuZC1oYW5kbGVycy9nbG9iYWwtY29tbWFuZC1oYW5kbGVyLnRzJztcbmV4cG9ydCB7IE9wZW5EZW1vVmF1bHRDb21tYW5kSGFuZGxlciB9IGZyb20gJy4vb2JzaWRpYW4vY29tbWFuZC1oYW5kbGVycy9vcGVuLWRlbW8tdmF1bHQtY29tbWFuZC1oYW5kbGVyLnRzJztcbmV4cG9ydCB7IE9wZW5TZXR0aW5nc0NvbW1hbmRIYW5kbGVyIH0gZnJvbSAnLi9vYnNpZGlhbi9jb21tYW5kLWhhbmRsZXJzL29wZW4tc2V0dGluZ3MtY29tbWFuZC1oYW5kbGVyLnRzJztcbmV4cG9ydCB7IFVubG9ja0FjdGl2ZU5vdGVDb21tYW5kSGFuZGxlciB9IGZyb20gJy4vb2JzaWRpYW4vY29tbWFuZC1oYW5kbGVycy91bmxvY2stYWN0aXZlLW5vdGUtY29tbWFuZC1oYW5kbGVyLnRzJztcbmV4cG9ydCB7IFBsdWdpbkNvbW1hbmRSZWdpc3RyYXIgfSBmcm9tICcuL29ic2lkaWFuL2NvbW1hbmQtcmVnaXN0cmFyLnRzJztcbmV4cG9ydCB7XG4gIGNvbmZpZ3VyZUNvbW11bml0eVBsdWdpbixcbiAgQ29uZmlndXJlQ29tbXVuaXR5UGx1Z2luUmVzdWx0LFxuICBkaXNhYmxlQ29tbXVuaXR5UGx1Z2luLFxuICBlbmFibGVDb21tdW5pdHlQbHVnaW4sXG4gIGdldENvbW11bml0eVBsdWdpblJlcG8sXG4gIGdldExhdGVzdFJlbGVhc2VWZXJzaW9uLFxuICBpbnN0YWxsQ29tbXVuaXR5UGx1Z2luLFxuICBpbnN0YWxsQ29uZmlndXJlRW5hYmxlQ29tbXVuaXR5UGx1Z2luLFxuICBzZWFyY2hDb21tdW5pdHlQbHVnaW5zLFxuICB0b2dnbGVFbmFibGVDb21tdW5pdHlQbHVnaW4sXG4gIHRvZ2dsZUluc3RhbGxDb21tdW5pdHlQbHVnaW4sXG4gIHVuaW5zdGFsbENvbW11bml0eVBsdWdpblxufSBmcm9tICcuL29ic2lkaWFuL2NvbW11bml0eS1wbHVnaW5zLnRzJztcbmV4cG9ydCB7IEFib3J0U2lnbmFsQ29tcG9uZW50IH0gZnJvbSAnLi9vYnNpZGlhbi9jb21wb25lbnRzL2Fib3J0LXNpZ25hbC1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgQWxsV2luZG93c0V2ZW50Q29tcG9uZW50IH0gZnJvbSAnLi9vYnNpZGlhbi9jb21wb25lbnRzL2FsbC13aW5kb3dzLWV2ZW50LWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBBc3luY0Vycm9ySGFuZGxlckNvbXBvbmVudCB9IGZyb20gJy4vb2JzaWRpYW4vY29tcG9uZW50cy9hc3luYy1lcnJvci1oYW5kbGVyLWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyByZWdpc3RlckFzeW5jRXZlbnQgfSBmcm9tICcuL29ic2lkaWFuL2NvbXBvbmVudHMvYXN5bmMtZXZlbnRzLWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBDYXNlSW5zZW5zaXRpdmVGaWxlSW5kZXhDb21wb25lbnQgfSBmcm9tICcuL29ic2lkaWFuL2NvbXBvbmVudHMvY2FzZS1pbnNlbnNpdGl2ZS1maWxlLWluZGV4LWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBDb21wb25lbnRFeCB9IGZyb20gJy4vb2JzaWRpYW4vY29tcG9uZW50cy9jb21wb25lbnQtZXgudHMnO1xuZXhwb3J0IHsgQ29uc29sZURlYnVnQ29tcG9uZW50IH0gZnJvbSAnLi9vYnNpZGlhbi9jb21wb25lbnRzL2NvbnNvbGUtZGVidWctY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IGFzRGlzcG9zYWJsZUNvbXBvbmVudCB9IGZyb20gJy4vb2JzaWRpYW4vY29tcG9uZW50cy9kaXNwb3NhYmxlLWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBFbWJlZEV4dGVuc2lvbnNDb21wb25lbnQgfSBmcm9tICcuL29ic2lkaWFuL2NvbXBvbmVudHMvZW1iZWQtZXh0ZW5zaW9ucy1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgR2VuZXJhdGVNYXJrZG93bkxpbmtEZWZhdWx0UGFyYW1zQ29tcG9uZW50IH0gZnJvbSAnLi9vYnNpZGlhbi9jb21wb25lbnRzL2dlbmVyYXRlLW1hcmtkb3duLWxpbmstZGVmYXVsdC1wYXJhbXMtY29tcG9uZW50LnRzJztcbmV4cG9ydCB7XG4gIENhbGxiYWNrTGF5b3V0UmVhZHlDb21wb25lbnQsXG4gIExheW91dFJlYWR5Q29tcG9uZW50XG59IGZyb20gJy4vb2JzaWRpYW4vY29tcG9uZW50cy9sYXlvdXQtcmVhZHktY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IE1lbnVFdmVudFJlZ2lzdHJhckNvbXBvbmVudCB9IGZyb20gJy4vb2JzaWRpYW4vY29tcG9uZW50cy9tZW51LWV2ZW50LXJlZ2lzdHJhci1jb21wb25lbnQudHMnO1xuZXhwb3J0IHtcbiAgYXJvdW5kLFxuICBoYXNQYXRjaFRva2VuLFxuICBNb25rZXlBcm91bmRDb21wb25lbnRcbn0gZnJvbSAnLi9vYnNpZGlhbi9jb21wb25lbnRzL21vbmtleS1hcm91bmQtY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IE5vdGVib29rTmF2aWdhdG9yTWVudUV2ZW50UmVnaXN0cmFyQ29tcG9uZW50IH0gZnJvbSAnLi9vYnNpZGlhbi9jb21wb25lbnRzL25vdGVib29rLW5hdmlnYXRvci1tZW51LWV2ZW50LXJlZ2lzdHJhci1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgUGx1Z2luQ29udGV4dENvbXBvbmVudCB9IGZyb20gJy4vb2JzaWRpYW4vY29tcG9uZW50cy9wbHVnaW4tY29udGV4dC1jb21wb25lbnQudHMnO1xuZXhwb3J0IHtcbiAgUGx1Z2luTm90aWNlQ29tcG9uZW50LFxuICBQbHVnaW5Ob3RpY2VNb2RlXG59IGZyb20gJy4vb2JzaWRpYW4vY29tcG9uZW50cy9wbHVnaW4tbm90aWNlLWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBQbHVnaW5TZXR0aW5nc0NvbXBvbmVudEJhc2UgfSBmcm9tICcuL29ic2lkaWFuL2NvbXBvbmVudHMvcGx1Z2luLXNldHRpbmdzLWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBQbHVnaW5TZXR0aW5nc1RhYkNvbXBvbmVudCB9IGZyb20gJy4vb2JzaWRpYW4vY29tcG9uZW50cy9wbHVnaW4tc2V0dGluZ3MtdGFiLWNvbXBvbmVudC50cyc7XG5leHBvcnQge1xuICBQbHVnaW5TdWdnZXN0aW9uQ29tcG9uZW50LFxuICBTdWdnZXN0ZWRQbHVnaW5TdGF0ZVxufSBmcm9tICcuL29ic2lkaWFuL2NvbXBvbmVudHMvcGx1Z2luLXN1Z2dlc3Rpb24tY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IFBvaW50ZXJQb3NpdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vb2JzaWRpYW4vY29tcG9uZW50cy9wb2ludGVyLXBvc2l0aW9uLWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBSZWdpc3RyeUNvbXBvbmVudCB9IGZyb20gJy4vb2JzaWRpYW4vY29tcG9uZW50cy9yZWdpc3RyeS1jb21wb25lbnQudHMnO1xuZXhwb3J0IHtcbiAgRW1wdHlGb2xkZXJCZWhhdmlvcixcbiAgUmVuYW1lRGVsZXRlSGFuZGxlckNvbXBvbmVudFxufSBmcm9tICcuL29ic2lkaWFuL2NvbXBvbmVudHMvcmVuYW1lLWRlbGV0ZS1oYW5kbGVyLWNvbXBvbmVudC50cyc7XG5leHBvcnQge1xuICBOT1RfRU1QVFlfRElSRUNUT1JZX0VSUk9SX0NPREUsXG4gIFJtZGlyR3VhcmRDb21wb25lbnRcbn0gZnJvbSAnLi9vYnNpZGlhbi9jb21wb25lbnRzL3JtZGlyLWd1YXJkLWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBTeW50YXhIaWdobGlnaHRpbmdDb21wb25lbnQgfSBmcm9tICcuL29ic2lkaWFuL2NvbXBvbmVudHMvc3ludGF4LWhpZ2hsaWdodGluZy1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgZ2V0RG9tRXZlbnRzSGFuZGxlcnNDb25zdHJ1Y3RvciB9IGZyb20gJy4vb2JzaWRpYW4vY29uc3RydWN0b3JzL2dldC1kb20tZXZlbnRzLWhhbmRsZXJzLWNvbnN0cnVjdG9yLnRzJztcbmV4cG9ydCB7IENzc0NsYXNzIH0gZnJvbSAnLi9vYnNpZGlhbi9jc3MtY2xhc3MudHMnO1xuZXhwb3J0IHsgUGx1Z2luRGF0YUhhbmRsZXIgfSBmcm9tICcuL29ic2lkaWFuL2RhdGEtaGFuZGxlci50cyc7XG5leHBvcnQge1xuICBmaXhUaXRsZSxcbiAgbWFrZUxpbmtXaXRoUGF0aFxufSBmcm9tICcuL29ic2lkaWFuL2RhdGF2aWV3LWxpbmsudHMnO1xuZXhwb3J0IHtcbiAgZ2V0UmVuZGVyZWRDb250YWluZXIsXG4gIGluc2VydENvZGVCbG9jayxcbiAgcmVsb2FkQ3VycmVudEZpbGVDYWNoZSxcbiAgcmVuZGVySWZyYW1lLFxuICByZW5kZXJQYWdpbmF0ZWRMaXN0LFxuICByZW5kZXJQYWdpbmF0ZWRUYWJsZVxufSBmcm9tICcuL29ic2lkaWFuL2RhdGF2aWV3LnRzJztcbmV4cG9ydCB7IGJvb3RzdHJhcERlbW9WYXVsdCB9IGZyb20gJy4vb2JzaWRpYW4vZGVtby12YXVsdC1oZWxwZXIudHMnO1xuZXhwb3J0IHtcbiAgZ2V0RGVtb1ZhdWx0QXJjaGl2ZUZpbGVOYW1lLFxuICBnZXREZW1vVmF1bHRGb2xkZXJOYW1lXG59IGZyb20gJy4vb2JzaWRpYW4vZGVtby12YXVsdC1uYW1pbmcudHMnO1xuZXhwb3J0IHsgb3BlbkRlbW9WYXVsdCB9IGZyb20gJy4vb2JzaWRpYW4vZGVza3RvcC1kZW1vLXZhdWx0LW9wZW5lci50cyc7XG5leHBvcnQgeyBQbHVnaW5FZGl0b3JFeHRlbnNpb25SZWdpc3RyYXIgfSBmcm9tICcuL29ic2lkaWFuL2VkaXRvci1leHRlbnNpb24tcmVnaXN0cmFyLnRzJztcbmV4cG9ydCB7IFBsdWdpbkVkaXRvclN1Z2dlc3RSZWdpc3RyYXIgfSBmcm9tICcuL29ic2lkaWFuL2VkaXRvci1zdWdnZXN0LXJlZ2lzdHJhci50cyc7XG5leHBvcnQge1xuICBzeW5jT3BlbkVkaXRvckJ1ZmZlcnNGb3JQYXRoLFxuICB0b2dnbGVFZGl0b3JSZWFkT25seVxufSBmcm9tICcuL29ic2lkaWFuL2VkaXRvci50cyc7XG5leHBvcnQge1xuICBFdmVudFJlZkRpc3Bvc2FibGUsXG4gIHN1YnNjcmliZURpc3Bvc2FibGVFdmVudCxcbiAgc3Vic2NyaWJlRXZlbnRcbn0gZnJvbSAnLi9vYnNpZGlhbi9ldmVudHMudHMnO1xuZXhwb3J0IHsgUGx1Z2luRXh0ZW5zaW9uc1JlZ2lzdHJhciB9IGZyb20gJy4vb2JzaWRpYW4vZXh0ZW5zaW9ucy1yZWdpc3RyYXIudHMnO1xuZXhwb3J0IHtcbiAgYXBwbHlDb250ZW50Q2hhbmdlcyxcbiAgYXBwbHlGaWxlQ2hhbmdlcyxcbiAgaXNDYW52YXNDaGFuZ2UsXG4gIGlzQ2FudmFzRmlsZU5vZGVDaGFuZ2UsXG4gIGlzQ2FudmFzVGV4dE5vZGVDaGFuZ2UsXG4gIGlzQ29udGVudENoYW5nZSxcbiAgaXNGcm9udG1hdHRlckNoYW5nZSxcbiAgaXNGcm9udG1hdHRlckNoYW5nZVdpdGhPZmZzZXRzLFxuICB0b0Zyb250bWF0dGVyQ2hhbmdlV2l0aE9mZnNldHNcbn0gZnJvbSAnLi9vYnNpZGlhbi9maWxlLWNoYW5nZS50cyc7XG5leHBvcnQge1xuICBhZGRBbGlhcyxcbiAgZGVsZXRlQWxpYXMsXG4gIHByb2Nlc3NGcm9udG1hdHRlcixcbiAgd2FpdEZvclBlbmRpbmdMaW5rVXBkYXRlc1xufSBmcm9tICcuL29ic2lkaWFuL2ZpbGUtbWFuYWdlci50cyc7XG5leHBvcnQge1xuICBhc0FycmF5T2ZGaWxlcyxcbiAgYXNBcnJheU9mRm9sZGVycyxcbiAgYXNGaWxlLFxuICBhc0ZpbGVPck51bGwsXG4gIGFzRm9sZGVyLFxuICBhc0ZvbGRlck9yTnVsbCxcbiAgQkFTRV9GSUxFX0VYVEVOU0lPTixcbiAgQ0FOVkFTX0ZJTEVfRVhURU5TSU9OLFxuICBjaGVja0V4dGVuc2lvbixcbiAgZG9lc0V4aXN0LFxuICBGaWxlU3lzdGVtVHlwZSxcbiAgZ2V0QWJzdHJhY3RGaWxlLFxuICBnZXRBYnN0cmFjdEZpbGVPck51bGwsXG4gIGdldEJhc2VuYW1lLFxuICBnZXRFeHRlbnNpb24sXG4gIGdldEZpbGUsXG4gIGdldEZpbGVPck51bGwsXG4gIGdldEZpbGVTeXN0ZW1UeXBlLFxuICBnZXRGb2xkZXIsXG4gIGdldEZvbGRlck9yTnVsbCxcbiAgZ2V0TWFya2Rvd25GaWxlcyxcbiAgZ2V0T3JDcmVhdGVGaWxlLFxuICBnZXRPckNyZWF0ZUZvbGRlcixcbiAgZ2V0UGF0aCxcbiAgaXNBYnN0cmFjdEZpbGUsXG4gIGlzQmFzZUZpbGUsXG4gIGlzQ2FudmFzRmlsZSxcbiAgaXNGaWxlLFxuICBpc0ZvbGRlcixcbiAgaXNNYXJrZG93bkZpbGUsXG4gIGlzTm90ZSxcbiAgaXNUcmVhdGVkQXNBdHRhY2htZW50LFxuICBNQVJLRE9XTl9GSUxFX0VYVEVOU0lPTixcbiAgTWlzc2luZ1BhdGhUcmVhdG1lbnQsXG4gIHRyaW1NYXJrZG93bkV4dGVuc2lvblxufSBmcm9tICcuL29ic2lkaWFuL2ZpbGUtc3lzdGVtLnRzJztcbmV4cG9ydCB7XG4gIEZPTERFUl9OT1RFU19QTFVHSU5fSUQsXG4gIEZvbGRlck5vdGVMb2NhdGlvbixcbiAgcmVzb2x2ZUZvbGRlck5vdGUsXG4gIHJlc29sdmVGb2xkZXJOb3RlQ29uZmlnXG59IGZyb20gJy4vb2JzaWRpYW4vZm9sZGVyLW5vdGUudHMnO1xuZXhwb3J0IHtcbiAgaXNGcm9udG1hdHRlckxpbmtDYWNoZVdpdGhPZmZzZXRzLFxuICB0b0Zyb250bWF0dGVyTGlua0NhY2hlV2l0aE9mZnNldHNcbn0gZnJvbSAnLi9vYnNpZGlhbi9mcm9udG1hdHRlci1saW5rLWNhY2hlLXdpdGgtb2Zmc2V0cy50cyc7XG5leHBvcnQge1xuICBwYXJzZUZyb250bWF0dGVyLFxuICByZW1vdmVFbXB0eUZyb250bWF0dGVyVmFsdWVzLFxuICBzZXRGcm9udG1hdHRlclxufSBmcm9tICcuL29ic2lkaWFuL2Zyb250bWF0dGVyLnRzJztcbmV4cG9ydCB7IFBsdWdpbkhvdmVyTGlua1NvdXJjZVJlZ2lzdHJhciB9IGZyb20gJy4vb2JzaWRpYW4vaG92ZXItbGluay1zb3VyY2UtcmVnaXN0cmFyLnRzJztcbmV4cG9ydCB7IGFwcGVuZENvZGVCbG9jayB9IGZyb20gJy4vb2JzaWRpYW4vaHRtbC1lbGVtZW50LnRzJztcbmV4cG9ydCB7XG4gIERFRkFVTFRfTlMsXG4gIGluaXRJMThOLFxuICB0XG59IGZyb20gJy4vb2JzaWRpYW4vaTE4bi9pMThuLnRzJztcbmV4cG9ydCB7IGVuIH0gZnJvbSAnLi9vYnNpZGlhbi9pMThuL2xvY2FsZXMvZW4udHMnO1xuZXhwb3J0IHtcbiAgREVGQVVMVF9MQU5HVUFHRSxcbiAgZGVmYXVsdFRyYW5zbGF0aW9uc01hcFxufSBmcm9tICcuL29ic2lkaWFuL2kxOG4vbG9jYWxlcy90cmFuc2xhdGlvbnMtbWFwLnRzJztcbmV4cG9ydCB7IGlzSW5PYnNpZGlhbiB9IGZyb20gJy4vb2JzaWRpYW4vaXMtaW4tb2JzaWRpYW4udHMnO1xuZXhwb3J0IHtcbiAgY29udmVydExpbmssXG4gIGVkaXRCYWNrbGlua3MsXG4gIGVkaXRMaW5rcyxcbiAgZWRpdExpbmtzSW5Db250ZW50LFxuICBleHRyYWN0TGlua0ZpbGUsXG4gIGZpeEZyb250bWF0dGVyTWFya2Rvd25MaW5rcyxcbiAgZ2VuZXJhdGVNYXJrZG93bkxpbmssXG4gIGdlbmVyYXRlUmF3TWFya2Rvd25MaW5rLFxuICBnZXRHZW5lcmF0ZU1hcmtkb3duTGlua0RlZmF1bHRQYXJhbXNGbnMsXG4gIGhhc0FuZ2xlQnJhY2tldHMsXG4gIGhhc0VtYmVkU3ludGF4LFxuICBoYXNMZWFkaW5nRG90LFxuICBoYXNMZWFkaW5nU2xhc2gsXG4gIGhhc1dpa2lsaW5rU3ludGF4LFxuICBMaW5rUGF0aFN0eWxlLFxuICBMaW5rU3R5bGUsXG4gIHNob3VsZFJlc2V0QWxpYXMsXG4gIHNwbGl0U3VicGF0aCxcbiAgdXBkYXRlRmlsZVVybExpbmtzSW5Db250ZW50LFxuICB1cGRhdGVGaWxlVXJsTGlua3NJbkZpbGUsXG4gIHVwZGF0ZUxpbmssXG4gIHVwZGF0ZUxpbmtzSW5Db250ZW50LFxuICB1cGRhdGVMaW5rc0luRmlsZVxufSBmcm9tICcuL29ic2lkaWFuL2xpbmsudHMnO1xuZXhwb3J0IHsgaW52b2tlQXN5bmNBbmRMb2cgfSBmcm9tICcuL29ic2lkaWFuL2xvZ2dlci50cyc7XG5leHBvcnQgeyBsb29wIH0gZnJvbSAnLi9vYnNpZGlhbi9sb29wLnRzJztcbmV4cG9ydCB7IFBsdWdpbk1hcmtkb3duQ29kZUJsb2NrUHJvY2Vzc29yUmVnaXN0cmFyIH0gZnJvbSAnLi9vYnNpZGlhbi9tYXJrZG93bi1jb2RlLWJsb2NrLXByb2Nlc3Nvci1yZWdpc3RyYXIudHMnO1xuZXhwb3J0IHtcbiAgZ2V0Q29kZUJsb2NrTWFya2Rvd25JbmZvLFxuICBpbnNlcnRBZnRlckNvZGVCbG9jayxcbiAgaW5zZXJ0QmVmb3JlQ29kZUJsb2NrLFxuICByZW1vdmVDb2RlQmxvY2ssXG4gIHJlcGxhY2VDb2RlQmxvY2tcbn0gZnJvbSAnLi9vYnNpZGlhbi9tYXJrZG93bi1jb2RlLWJsb2NrLXByb2Nlc3Nvci50cyc7XG5leHBvcnQgeyBQbHVnaW5NYXJrZG93blBvc3RQcm9jZXNzb3JSZWdpc3RyYXIgfSBmcm9tICcuL29ic2lkaWFuL21hcmtkb3duLXBvc3QtcHJvY2Vzc29yLXJlZ2lzdHJhci50cyc7XG5leHBvcnQgeyBnZXRGdWxsQ29udGVudEh0bWwgfSBmcm9tICcuL29ic2lkaWFuL21hcmtkb3duLXZpZXcudHMnO1xuZXhwb3J0IHtcbiAgZnVsbFJlbmRlcixcbiAgbWFya2Rvd25Ub0h0bWwsXG4gIHJlZ2lzdGVyTGlua0hhbmRsZXJzLFxuICByZW5kZXJFeHRlcm5hbExpbmssXG4gIHJlbmRlckludGVybmFsTGlua1xufSBmcm9tICcuL29ic2lkaWFuL21hcmtkb3duLnRzJztcbmV4cG9ydCB7XG4gIENhY2hlZE1ldGFkYXRhRXhGZWF0dXJlLFxuICBlbnN1cmVNZXRhZGF0YUNhY2hlUmVhZHksXG4gIGdldEJhY2tsaW5rc0ZvckZpbGVPclBhdGgsXG4gIGdldEJhY2tsaW5rc0ZvckZpbGVTYWZlLFxuICBnZXRDYWNoZVNhZmUsXG4gIGdldEZyb250bWF0dGVyU2FmZSxcbiAgZ2V0TGlua3MsXG4gIGlzQ2FjaGVkTWV0YWRhdGFFeCxcbiAgcGFyc2VNZXRhZGF0YSxcbiAgcmVnaXN0ZXJGaWxlQ2FjaGVGb3JOb25FeGlzdGluZ0ZpbGUsXG4gIHJlZ2lzdGVyRmlsZXMsXG4gIHVucmVnaXN0ZXJGaWxlQ2FjaGVGb3JOb25FeGlzdGluZ0ZpbGUsXG4gIHVucmVnaXN0ZXJGaWxlc1xufSBmcm9tICcuL29ic2lkaWFuL21ldGFkYXRhLWNhY2hlLnRzJztcbmV4cG9ydCB7IGFsZXJ0IH0gZnJvbSAnLi9vYnNpZGlhbi9tb2RhbHMvYWxlcnQudHMnO1xuZXhwb3J0IHsgY29uZmlybSB9IGZyb20gJy4vb2JzaWRpYW4vbW9kYWxzL2NvbmZpcm0udHMnO1xuZXhwb3J0IHsgTWluaW1pemFibGVNb2RhbCB9IGZyb20gJy4vb2JzaWRpYW4vbW9kYWxzL21pbmltaXphYmxlLW1vZGFsLnRzJztcbmV4cG9ydCB7XG4gIE1vZGFsQ29tbWFuZEJ1aWxkZXIsXG4gIE1vZGFsQ29tbWFuZHNSZW5kZXJNb2RlXG59IGZyb20gJy4vb2JzaWRpYW4vbW9kYWxzL21vZGFsLWNvbW1hbmQtYnVpbGRlci50cyc7XG5leHBvcnQge1xuICBNb2RhbEJhc2UsXG4gIHNob3dNb2RhbFxufSBmcm9tICcuL29ic2lkaWFuL21vZGFscy9tb2RhbC50cyc7XG5leHBvcnQgeyBwcm9tcHQgfSBmcm9tICcuL29ic2lkaWFuL21vZGFscy9wcm9tcHQudHMnO1xuZXhwb3J0IHsgc2VsZWN0SXRlbSB9IGZyb20gJy4vb2JzaWRpYW4vbW9kYWxzL3NlbGVjdC1pdGVtLnRzJztcbmV4cG9ydCB7IHNlbGVjdE9wdGlvbiB9IGZyb20gJy4vb2JzaWRpYW4vbW9kYWxzL3NlbGVjdC1vcHRpb24udHMnO1xuZXhwb3J0IHsgU3VnZ2VzdE1vZGFsQ29tbWFuZEJ1aWxkZXIgfSBmcm9tICcuL29ic2lkaWFuL21vZGFscy9zdWdnZXN0LW1vZGFsLWNvbW1hbmQtYnVpbGRlci50cyc7XG5leHBvcnQge1xuICBmaW5kTm9Qcmlvcml0eVdpbm5lclJlYXNvbixcbiAgZmluZE5vdGVQcmlvcml0eVJhbmssXG4gIE5PX1BSSU9SSVRZX01BVENILFxuICBOb1ByaW9yaXR5V2lubmVyUmVhc29uLFxuICBwaWNrSGlnaGVzdFByaW9yaXR5Tm90ZVBhdGhcbn0gZnJvbSAnLi9vYnNpZGlhbi9ub3RlLXByaW9yaXR5LnRzJztcbmV4cG9ydCB7XG4gIE5PVEVCT09LX05BVklHQVRPUl9NRU5VX1NPVVJDRSxcbiAgTk9URUJPT0tfTkFWSUdBVE9SX1BMVUdJTl9JRCxcbiAgcmVzb2x2ZU5vdGVib29rTmF2aWdhdG9yQXBpXG59IGZyb20gJy4vb2JzaWRpYW4vbm90ZWJvb2stbmF2aWdhdG9yLnRzJztcbmV4cG9ydCB7IFBsdWdpbk9ic2lkaWFuUHJvdG9jb2xIYW5kbGVyUmVnaXN0cmFyIH0gZnJvbSAnLi9vYnNpZGlhbi9vYnNpZGlhbi1wcm90b2NvbC1oYW5kbGVyLXJlZ2lzdHJhci50cyc7XG5leHBvcnQge1xuICBnZXROZXdMaW5rRm9ybWF0LFxuICBpc1NwZWxsY2hlY2tFbmFibGVkLFxuICBzaG91bGRVc2VXaWtpbGlua3Ncbn0gZnJvbSAnLi9vYnNpZGlhbi9vYnNpZGlhbi1zZXR0aW5ncy50cyc7XG5leHBvcnQge1xuICBlc2NhcGVBbGlhcyxcbiAgaXNQYXJzZUxpbmtGcm9udG1hdHRlclJlZmVyZW5jZSxcbiAgaXNQYXJzZUxpbmtSZWZlcmVuY2UsXG4gIHBhcnNlRnJvbnRtYXR0ZXJMaW5rcyxcbiAgcGFyc2VMaW5rLFxuICBwYXJzZUxpbmtzLFxuICB0b1BhcnNlTGlua1JlZmVyZW5jZSxcbiAgdW5lc2NhcGVBbGlhc1xufSBmcm9tICcuL29ic2lkaWFuL3BhcnNlLWxpbmsudHMnO1xuZXhwb3J0IHtcbiAgUGF0aFNldHRpbmdzLFxuICBwYXRoc1ZhbGlkYXRvclxufSBmcm9tICcuL29ic2lkaWFuL3BhdGgtc2V0dGluZ3MudHMnO1xuZXhwb3J0IHsgcHJpbnRUb1BkZiB9IGZyb20gJy4vb2JzaWRpYW4vcGRmLnRzJztcbmV4cG9ydCB7IFBsdWdpbkNsaUhhbmRsZXJSZWdpc3RyYXIgfSBmcm9tICcuL29ic2lkaWFuL3BsdWdpbi1jbGktaGFuZGxlci1yZWdpc3RyYXIudHMnO1xuZXhwb3J0IHsgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMgfSBmcm9tICcuL29ic2lkaWFuL3BsdWdpbi9vYnNpZGlhbi1wbHVnaW4tcmVwby1wYXRocy50cyc7XG5leHBvcnQge1xuICBQbHVnaW5BcGlQYXlsb2FkS2luZCxcbiAgUGx1Z2luQXBpUmV2b2tlZEVycm9yLFxuICBQbHVnaW5BcGlVbmF2YWlsYWJpbGl0eVJlYXNvbixcbiAgUGx1Z2luQXBpVW5hdmFpbGFibGVFcnJvcixcbiAgUGx1Z2luQXBpVmFsaWRhdGlvbkVycm9yLFxuICBwdWJsaXNoUGx1Z2luQXBpLFxuICB3YXRjaFBsdWdpbkFwaVxufSBmcm9tICcuL29ic2lkaWFuL3BsdWdpbi9wbHVnaW4tYXBpLnRzJztcbmV4cG9ydCB7XG4gIGFkZFBsdWdpbkNzc0NsYXNzZXMsXG4gIGluaXREZWJ1Z0NvbnRyb2xsZXIsXG4gIGluaXRQbHVnaW5Db250ZXh0XG59IGZyb20gJy4vb2JzaWRpYW4vcGx1Z2luL3BsdWdpbi1jb250ZXh0LnRzJztcbmV4cG9ydCB7IFBsdWdpbkV2ZW50U291cmNlSW1wbCB9IGZyb20gJy4vb2JzaWRpYW4vcGx1Z2luL3BsdWdpbi1ldmVudC1zb3VyY2UudHMnO1xuZXhwb3J0IHtcbiAgUGx1Z2luU2V0dGluZ3NUYWJCYXNlLFxuICBTQVZFX1RPX0ZJTEVfQ09OVEVYVFxufSBmcm9tICcuL29ic2lkaWFuL3BsdWdpbi9wbHVnaW4tc2V0dGluZ3MtdGFiLnRzJztcbmV4cG9ydCB7XG4gIFBsdWdpbkJhc2UsXG4gIHJlbG9hZFBsdWdpbixcbiAgc2hvd0Vycm9yQW5kRGlzYWJsZVBsdWdpblxufSBmcm9tICcuL29ic2lkaWFuL3BsdWdpbi9wbHVnaW4udHMnO1xuZXhwb3J0IHsgZWRpdEZpZWxkc0luUG9wb3ZlciB9IGZyb20gJy4vb2JzaWRpYW4vcG9wb3ZlcnMvZmllbGQtcG9wb3Zlci50cyc7XG5leHBvcnQge1xuICBjcmVhdGVBbmNob3JGcm9tRG9jdW1lbnRDZW50ZXIsXG4gIGNyZWF0ZUFuY2hvckZyb21FbGVtZW50LFxuICBjcmVhdGVBbmNob3JGcm9tUG9pbnQsXG4gIGNyZWF0ZUFuY2hvckZyb21TZWxlY3Rpb25cbn0gZnJvbSAnLi9vYnNpZGlhbi9wb3BvdmVycy9wb3BvdmVyLWFuY2hvci50cyc7XG5leHBvcnQgeyBzaG93UG9wb3ZlciB9IGZyb20gJy4vb2JzaWRpYW4vcG9wb3ZlcnMvcG9wb3Zlci50cyc7XG5leHBvcnQge1xuICBhZGRUb1F1ZXVlLFxuICBhZGRUb1F1ZXVlQW5kV2FpdCxcbiAgZmx1c2hRdWV1ZVxufSBmcm9tICcuL29ic2lkaWFuL3F1ZXVlLnRzJztcbmV4cG9ydCB7XG4gIEFwcENvbnRleHQsXG4gIHVzZUFwcFxufSBmcm9tICcuL29ic2lkaWFuL3JlYWN0L2FwcC1jb250ZXh0LnRzJztcbmV4cG9ydCB7XG4gIGlzQ2FudmFzRmlsZU5vZGVSZWZlcmVuY2UsXG4gIGlzQ2FudmFzUmVmZXJlbmNlLFxuICBpc0NhbnZhc1RleHROb2RlUmVmZXJlbmNlLFxuICByZWZlcmVuY2VUb0ZpbGVDaGFuZ2UsXG4gIHNvcnRSZWZlcmVuY2VzXG59IGZyb20gJy4vb2JzaWRpYW4vcmVmZXJlbmNlLnRzJztcbmV4cG9ydCB7XG4gIGlzUmVzb3VyY2VMb2NrZWRGb3JQYXRoLFxuICBpc1Jlc291cmNlTG9ja2VkRm9yUGF0aEJ5QW5jZXN0b3IsXG4gIGxvY2tSZXNvdXJjZUZvclBhdGgsXG4gIHJlcXVlc3RSZXNvdXJjZVVubG9ja0ZvclBhdGgsXG4gIFJlc291cmNlTG9ja0NvbXBvbmVudCxcbiAgUmVzb3VyY2VMb2NrZWRFcnJvcixcbiAgdW5sb2NrUmVzb3VyY2VGb3JQYXRoXG59IGZyb20gJy4vb2JzaWRpYW4vcmVzb3VyY2UtbG9jay50cyc7XG5leHBvcnQgeyByZWxhdGl2ZVBhdGhUb1Jlc291cmNlVXJsIH0gZnJvbSAnLi9vYnNpZGlhbi9yZXNvdXJjZS11cmwudHMnO1xuZXhwb3J0IHsgUGx1Z2luUmliYm9uSWNvblJlZ2lzdHJhciB9IGZyb20gJy4vb2JzaWRpYW4vcmliYm9uLWljb24tcmVnaXN0cmFyLnRzJztcbmV4cG9ydCB7IENoZWNrYm94Q29tcG9uZW50IH0gZnJvbSAnLi9vYnNpZGlhbi9zZXR0aW5nLWNvbXBvbmVudHMvY2hlY2tib3gtY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IENvZGVIaWdobGlnaHRlckNvbXBvbmVudCB9IGZyb20gJy4vb2JzaWRpYW4vc2V0dGluZy1jb21wb25lbnRzL2NvZGUtaGlnaGxpZ2h0ZXItY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IERhdGVDb21wb25lbnQgfSBmcm9tICcuL29ic2lkaWFuL3NldHRpbmctY29tcG9uZW50cy9kYXRlLWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBEYXRlVGltZUNvbXBvbmVudCB9IGZyb20gJy4vb2JzaWRpYW4vc2V0dGluZy1jb21wb25lbnRzL2RhdGUtdGltZS1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgRW1haWxDb21wb25lbnQgfSBmcm9tICcuL29ic2lkaWFuL3NldHRpbmctY29tcG9uZW50cy9lbWFpbC1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgRmlsZUNvbXBvbmVudCB9IGZyb20gJy4vb2JzaWRpYW4vc2V0dGluZy1jb21wb25lbnRzL2ZpbGUtY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IE1vbnRoQ29tcG9uZW50IH0gZnJvbSAnLi9vYnNpZGlhbi9zZXR0aW5nLWNvbXBvbmVudHMvbW9udGgtY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IE11bHRpcGxlRHJvcGRvd25Db21wb25lbnQgfSBmcm9tICcuL29ic2lkaWFuL3NldHRpbmctY29tcG9uZW50cy9tdWx0aXBsZS1kcm9wZG93bi1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgTXVsdGlwbGVFbWFpbENvbXBvbmVudCB9IGZyb20gJy4vb2JzaWRpYW4vc2V0dGluZy1jb21wb25lbnRzL211bHRpcGxlLWVtYWlsLWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBNdWx0aXBsZUZpbGVDb21wb25lbnQgfSBmcm9tICcuL29ic2lkaWFuL3NldHRpbmctY29tcG9uZW50cy9tdWx0aXBsZS1maWxlLWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBNdWx0aXBsZVRleHRDb21wb25lbnQgfSBmcm9tICcuL29ic2lkaWFuL3NldHRpbmctY29tcG9uZW50cy9tdWx0aXBsZS10ZXh0LWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBOdW1iZXJDb21wb25lbnQgfSBmcm9tICcuL29ic2lkaWFuL3NldHRpbmctY29tcG9uZW50cy9udW1iZXItY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IFBhc3N3b3JkQ29tcG9uZW50IH0gZnJvbSAnLi9vYnNpZGlhbi9zZXR0aW5nLWNvbXBvbmVudHMvcGFzc3dvcmQtY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IGVuc3VyZVdyYXBwZWQgfSBmcm9tICcuL29ic2lkaWFuL3NldHRpbmctY29tcG9uZW50cy9zZXR0aW5nLWNvbXBvbmVudC13cmFwcGVyLnRzJztcbmV4cG9ydCB7IFRlbGVwaG9uZUNvbXBvbmVudCB9IGZyb20gJy4vb2JzaWRpYW4vc2V0dGluZy1jb21wb25lbnRzL3RlbGVwaG9uZS1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgZ2V0VGV4dEJhc2VkQ29tcG9uZW50VmFsdWUgfSBmcm9tICcuL29ic2lkaWFuL3NldHRpbmctY29tcG9uZW50cy90ZXh0LWJhc2VkLWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBUaW1lQ29tcG9uZW50IH0gZnJvbSAnLi9vYnNpZGlhbi9zZXR0aW5nLWNvbXBvbmVudHMvdGltZS1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgVHJpU3RhdGVDaGVja2JveENvbXBvbmVudCB9IGZyb20gJy4vb2JzaWRpYW4vc2V0dGluZy1jb21wb25lbnRzL3RyaS1zdGF0ZS1jaGVja2JveC1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgVHlwZWREcm9wZG93bkNvbXBvbmVudCB9IGZyb20gJy4vb2JzaWRpYW4vc2V0dGluZy1jb21wb25lbnRzL3R5cGVkLWRyb3Bkb3duLWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBUeXBlZE11bHRpcGxlRHJvcGRvd25Db21wb25lbnQgfSBmcm9tICcuL29ic2lkaWFuL3NldHRpbmctY29tcG9uZW50cy90eXBlZC1tdWx0aXBsZS1kcm9wZG93bi1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgVHlwZWRSYW5nZVRleHRDb21wb25lbnQgfSBmcm9tICcuL29ic2lkaWFuL3NldHRpbmctY29tcG9uZW50cy90eXBlZC1yYW5nZS10ZXh0LWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBUeXBlZFRleHRDb21wb25lbnQgfSBmcm9tICcuL29ic2lkaWFuL3NldHRpbmctY29tcG9uZW50cy90eXBlZC10ZXh0LWNvbXBvbmVudC50cyc7XG5leHBvcnQgeyBVcmxDb21wb25lbnQgfSBmcm9tICcuL29ic2lkaWFuL3NldHRpbmctY29tcG9uZW50cy91cmwtY29tcG9uZW50LnRzJztcbmV4cG9ydCB7IGdldFZhbGlkYXRvckNvbXBvbmVudCB9IGZyb20gJy4vb2JzaWRpYW4vc2V0dGluZy1jb21wb25lbnRzL3ZhbGlkYXRvci1jb21wb25lbnQudHMnO1xuZXhwb3J0IHsgV2Vla0NvbXBvbmVudCB9IGZyb20gJy4vb2JzaWRpYW4vc2V0dGluZy1jb21wb25lbnRzL3dlZWstY29tcG9uZW50LnRzJztcbmV4cG9ydCB7XG4gIGFkb3B0U2V0dGluZ0V4LFxuICBTZXR0aW5nRXhcbn0gZnJvbSAnLi9vYnNpZGlhbi9zZXR0aW5nLWV4LnRzJztcbmV4cG9ydCB7IFNldHRpbmdHcm91cEV4IH0gZnJvbSAnLi9vYnNpZGlhbi9zZXR0aW5nLWdyb3VwLWV4LnRzJztcbmV4cG9ydCB7IFBsdWdpblN0YXR1c0Jhckl0ZW1SZWdpc3RyYXIgfSBmcm9tICcuL29ic2lkaWFuL3N0YXR1cy1iYXItaXRlbS1yZWdpc3RyYXIudHMnO1xuZXhwb3J0IHtcbiAgZ2V0VGVtcGxhdGVyRnVuY3Rpb25zLFxuICBnZXRUZW1wbGF0ZXJSZW5kZXJUYXJnZXRGaWxlLFxuICBwYXJzZVRlbXBsYXRlLFxuICByZXF1aXJlVGVtcGxhdGVyQXBpLFxuICByZXNvbHZlVGVtcGxhdGVyQXBpLFxuICBURU1QTEFURVJfUExVR0lOX0lELFxuICBUZW1wbGF0ZXJBY3RpdmVGaWxlUHJvdmlkZXIsXG4gIFRlbXBsYXRlclJ1bk1vZGUsXG4gIFRlbXBsYXRlclVuYXZhaWxhYmlsaXR5UmVhc29uLFxuICBUZW1wbGF0ZXJVbmF2YWlsYWJsZUVycm9yXG59IGZyb20gJy4vb2JzaWRpYW4vdGVtcGxhdGVyLnRzJztcbmV4cG9ydCB7XG4gIGNsaWNrRWxlbWVudCxcbiAgY2xpY2tNb3VzZSxcbiAgaG92ZXJFbGVtZW50LFxuICBtb3ZlTW91c2UsXG4gIHByZXNzS2V5LFxuICB0eXBlSW50b0VkaXRvcixcbiAgdW5ob3ZlckVsZW1lbnRcbn0gZnJvbSAnLi9vYnNpZGlhbi90cnVzdGVkLWlucHV0LnRzJztcbmV4cG9ydCB7XG4gIGdldE9zQW5kT2JzaWRpYW5VbnNhZmVQYXRoQ2hhcnNSZWdFeHAsXG4gIGdldE9zVW5zYWZlUGF0aENoYXJzUmVnRXhwLFxuICBpc1ZhbGlkYXRpb25NZXNzYWdlSG9sZGVyLFxuICBPQlNJRElBTl9VTlNBRkVfRklMRU5BTUVfQ0hBUlMsXG4gIFVOSVhfVU5TQUZFX1BBVEhfQ0hBUlMsXG4gIFdJTkRPV1NfVU5TQUZFX1BBVEhfQ0hBUlNcbn0gZnJvbSAnLi9vYnNpZGlhbi92YWxpZGF0aW9uLnRzJztcbmV4cG9ydCB7XG4gIGRlbGV0ZUlmTm90VXNlZCxcbiAgRGVsZXRlSWZOb3RVc2VkUmVzdWx0XG59IGZyb20gJy4vb2JzaWRpYW4vdmF1bHQtZGVsZXRlLnRzJztcbmV4cG9ydCB7IFZhdWx0VHJhbnNhY3Rpb24gfSBmcm9tICcuL29ic2lkaWFuL3ZhdWx0LXRyYW5zYWN0aW9uLnRzJztcbmV4cG9ydCB7XG4gIGNsZWFudXBFbXB0eUZvbGRlcnMsXG4gIGNvcHlTYWZlLFxuICBjcmVhdGVGb2xkZXJTYWZlLFxuICBDcmVhdGVGb2xkZXJTYWZlUmVzdWx0LFxuICBjcmVhdGVUZW1wb3JhcnlGaWxlLFxuICBjcmVhdGVUZW1wb3JhcnlGb2xkZXIsXG4gIGRlbGV0ZUVtcHR5Rm9sZGVyLFxuICBkZWxldGVFbXB0eUZvbGRlckhpZXJhcmNoeSxcbiAgZ2V0QWJzdHJhY3RGaWxlUGF0aFNhZmUsXG4gIGdldEF2YWlsYWJsZVBhdGgsXG4gIGdldEZpbGVQYXRoU2FmZSxcbiAgZ2V0Rm9sZGVyUGF0aFNhZmUsXG4gIGdldE1hcmtkb3duRmlsZXNTb3J0ZWQsXG4gIGdldE5vdGVGaWxlc1NvcnRlZCxcbiAgZ2V0T3JDcmVhdGVBYnN0cmFjdEZpbGVTYWZlLFxuICBnZXRPckNyZWF0ZUZpbGVTYWZlLFxuICBnZXRPckNyZWF0ZUZvbGRlclNhZmUsXG4gIGdldFNhZmVSZW5hbWVQYXRoLFxuICBJbnZva2VGaWxlQWN0aW9uU2FmZVJlc3VsdCxcbiAgaW52b2tlV2l0aEZpbGVTeXN0ZW1Mb2NrLFxuICBpc0NoaWxkLFxuICBpc0NoaWxkT3JTZWxmLFxuICBpc0VtcHR5Rm9sZGVyLFxuICBsaXN0U2FmZSxcbiAgcHJvY2VzcyxcbiAgcmVhZFNhZmUsXG4gIHJlbmFtZVNhZmUsXG4gIHNhdmVOb3RlLFxuICB0cmFzaFNhZmVcbn0gZnJvbSAnLi9vYnNpZGlhbi92YXVsdC50cyc7XG5leHBvcnQgeyBQbHVnaW5WaWV3UmVnaXN0cmFyIH0gZnJvbSAnLi9vYnNpZGlhbi92aWV3LXJlZ2lzdHJhci50cyc7XG5leHBvcnQge1xuICBlbnN1cmVMYXlvdXRSZWFkeSxcbiAgZ2V0QWxsQ29udGFpbmVycyxcbiAgZ2V0QWxsRG9tV2luZG93cyxcbiAgZ2V0TWFpbldpbmRvdyxcbiAgc3dpdGNoVG9NYWluV2luZG93LFxuICBzd2l0Y2hUb1dpbmRvd1xufSBmcm9tICcuL29ic2lkaWFuL3dvcmtzcGFjZS50cyc7XG5leHBvcnQge1xuICBiYXNlbmFtZSxcbiAgZGVsaW1pdGVyLFxuICBkaXJuYW1lLFxuICBleHRuYW1lLFxuICBmb3JtYXQsXG4gIGdldEZpbGVOYW1lLFxuICBnZXRGb2xkZXJOYW1lLFxuICBpc0Fic29sdXRlLFxuICBqb2luLFxuICBtYWtlRmlsZU5hbWUsXG4gIG5vcm1hbGl6ZUlmUmVsYXRpdmUsXG4gIG5vcm1hbGl6ZVBhdGgsXG4gIHBhcnNlLFxuICBwb3NpeCxcbiAgcmVsYXRpdmUsXG4gIHJlc29sdmUsXG4gIHNlcGFyYXRvcixcbiAgdG9Qb3NpeEJ1ZmZlcixcbiAgdG9Qb3NpeFBhdGhcbn0gZnJvbSAnLi9wYXRoLnRzJztcbmV4cG9ydCB7XG4gIEFMV0FZU19NQVRDSF9SRUdfRVhQLFxuICBlc2NhcGVSZWdFeHAsXG4gIGdldE1hbmRhdG9yeU5hbWVkR3JvdXAsXG4gIGdldE9wdGlvbmFsTmFtZWRHcm91cCxcbiAgaXNWYWxpZFJlZ0V4cCxcbiAgTkVWRVJfTUFUQ0hfUkVHX0VYUCxcbiAgb25lT2YsXG4gIFJlZ0V4cE1lcmdlRmxhZ3NDb25mbGljdFN0cmF0ZWd5XG59IGZyb20gJy4vcmVnLWV4cC50cyc7XG5leHBvcnQge1xuICBieXBhc3NTdHJpY3RQcm94eSxcbiAgc3RyaWN0UHJveHlcbn0gZnJvbSAnLi9zdHJpY3QtcHJveHkudHMnO1xuZXhwb3J0IHtcbiAgRU1QVFksXG4gIGVuc3VyZUVuZHNXaXRoLFxuICBlbnN1cmVMZkVuZGluZ3MsXG4gIGVuc3VyZVN0YXJ0c1dpdGgsXG4gIGVzY2FwZSxcbiAgZ2V0TGZOb3JtYWxpemVkT2Zmc2V0VG9PcmlnaW5hbE9mZnNldE1hcHBlcixcbiAgaGFzU2luZ2xlT2NjdXJyZW5jZSxcbiAgaW5kZW50LFxuICBpbnNlcnRBdCxcbiAgbWFrZVZhbGlkVmFyaWFibGVOYW1lLFxuICBub3JtYWxpemVTdHJpbmcsXG4gIHJlcGxhY2UsXG4gIHJlcGxhY2VBbGwsXG4gIHJlcGxhY2VBbGxBc3luYyxcbiAgdHJpbUVuZCxcbiAgdHJpbVN0YXJ0LFxuICB1bmVzY2FwZSxcbiAgdW5pbmRlbnRcbn0gZnJvbSAnLi9zdHJpbmcudHMnO1xuZXhwb3J0IHsgRGF0ZVRyYW5zZm9ybWVyIH0gZnJvbSAnLi90cmFuc2Zvcm1lcnMvZGF0ZS10cmFuc2Zvcm1lci50cyc7XG5leHBvcnQgeyBEdXJhdGlvblRyYW5zZm9ybWVyIH0gZnJvbSAnLi90cmFuc2Zvcm1lcnMvZHVyYXRpb24tdHJhbnNmb3JtZXIudHMnO1xuZXhwb3J0IHsgR3JvdXBUcmFuc2Zvcm1lciB9IGZyb20gJy4vdHJhbnNmb3JtZXJzL2dyb3VwLXRyYW5zZm9ybWVyLnRzJztcbmV4cG9ydCB7IE1hcFRyYW5zZm9ybWVyIH0gZnJvbSAnLi90cmFuc2Zvcm1lcnMvbWFwLXRyYW5zZm9ybWVyLnRzJztcbmV4cG9ydCB7IFNldFRyYW5zZm9ybWVyIH0gZnJvbSAnLi90cmFuc2Zvcm1lcnMvc2V0LXRyYW5zZm9ybWVyLnRzJztcbmV4cG9ydCB7IFNraXBQcml2YXRlUHJvcGVydHlUcmFuc2Zvcm1lciB9IGZyb20gJy4vdHJhbnNmb3JtZXJzL3NraXAtcHJpdmF0ZS1wcm9wZXJ0eS10cmFuc2Zvcm1lci50cyc7XG5leHBvcnQgeyBUcmFuc2Zvcm1lciB9IGZyb20gJy4vdHJhbnNmb3JtZXJzL3RyYW5zZm9ybWVyLnRzJztcbmV4cG9ydCB7IFR3b1dheU1hcFRyYW5zZm9ybWVyIH0gZnJvbSAnLi90cmFuc2Zvcm1lcnMvdHdvLXdheS1tYXAtdHJhbnNmb3JtZXIudHMnO1xuZXhwb3J0IHsgVHlwZWRUcmFuc2Zvcm1lciB9IGZyb20gJy4vdHJhbnNmb3JtZXJzL3R5cGVkLXRyYW5zZm9ybWVyLnRzJztcbmV4cG9ydCB7IFR3b1dheU1hcCB9IGZyb20gJy4vdHdvLXdheS1tYXAudHMnO1xuZXhwb3J0IHtcbiAgYXNzZXJ0LFxuICBhc3NlcnRHZW5lcmljT2JqZWN0LFxuICBhc3NlcnROZXZlcixcbiAgYXNzZXJ0Tm9uTnVsbGFibGUsXG4gIGVuc3VyZUdlbmVyaWNPYmplY3QsXG4gIGVuc3VyZU5vbk51bGxhYmxlXG59IGZyb20gJy4vdHlwZS1ndWFyZHMudHMnO1xuZXhwb3J0IHsgVHlwZUFzc2VydGVyIH0gZnJvbSAnLi90eXBlLnRzJztcbmV4cG9ydCB7XG4gIGVuY29kZVVybCxcbiAgaXNGaWxlVXJsLFxuICBpc1VybCxcbiAgbm9ybWFsaXplRmlsZVVybCxcbiAgcGF0aFRvRmlsZVVybFxufSBmcm9tICcuL3VybC50cyc7XG5leHBvcnQgeyByZXNvbHZlVmFsdWUgfSBmcm9tICcuL3ZhbHVlLXByb3ZpZGVyLnRzJztcbmV4cG9ydCB7IFZhbHVlV3JhcHBlciB9IGZyb20gJy4vdmFsdWUtd3JhcHBlci50cyc7XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUE7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1A7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1A7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVMsY0FBYztBQUN2QjtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVMseUJBQXlCO0FBQ2xDO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1A7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUDtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUDtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1A7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1A7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUDtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1AsU0FBUyw2QkFBNkI7QUFDdEMsU0FBUyxjQUFjO0FBQ3ZCO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1A7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUDtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVMsZ0NBQWdDO0FBQ3pDO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVMsMkJBQTJCO0FBQ3BDO0FBQUEsRUFDRTtBQUFBLEVB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QUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1AsU0FBUyx3QkFBd0I7QUFDakM7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUCxTQUFTLDJCQUEyQjtBQUNwQztBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUDtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1A7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUDtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVMsdUJBQXVCO0FBQ2hDLFNBQVMsMkJBQTJCO0FBQ3BDLFNBQVMsd0JBQXdCO0FBQ2pDLFNBQVMsc0JBQXNCO0FBQy9CLFNBQVMsc0JBQXNCO0FBQy9CLFNBQVMsc0NBQXNDO0FBQy9DLFNBQVMsbUJBQW1CO0FBQzVCLFNBQVMsNEJBQTRCO0FBQ3JDLFNBQVMsd0JBQXdCO0FBQ2pDLFNBQVMsaUJBQWlCO0FBQzFCO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVMsb0JBQW9CO0FBQzdCO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1AsU0FBUyxvQkFBb0I7QUFDN0IsU0FBUyxvQkFBb0I7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/// <reference path="./library.d.mts" />
|
|
2
|
+
/**
|
|
3
|
+
* @file
|
|
4
|
+
*
|
|
5
|
+
* Extracts a ZIP archive to disk using only Node's `zlib` — with no third-party unzip dependency.
|
|
6
|
+
*
|
|
7
|
+
* It exists for one measured reason. The dependency it replaced on this path, `adm-zip`, bundled
|
|
8
|
+
* roughly 34 KB of minified JavaScript into EVERY Obsidian plugin built with this library: a plugin
|
|
9
|
+
* ships a single CJS `main.js`, esbuild has no code splitting to put a dependency behind, and a
|
|
10
|
+
* `await import()` only defers evaluation — the module body is inlined either way. `node:zlib` is
|
|
11
|
+
* already an esbuild external, so the same work now costs a plugin bundle nothing at all. Archives
|
|
12
|
+
* are still WRITTEN with `adm-zip` at release time (`script-utils/demo-vault.ts`), which is Node-side
|
|
13
|
+
* tooling and never reaches a plugin bundle.
|
|
14
|
+
*
|
|
15
|
+
* Deliberately narrow: it reads exactly what that writer produces — stored and deflated entries in an
|
|
16
|
+
* unencrypted archive below the 4 GB / 65535-entry ZIP64 threshold — and raises a named error for
|
|
17
|
+
* anything else rather than guessing at it. Sizes and offsets are taken from the central directory,
|
|
18
|
+
* which is authoritative even for archives written with data descriptors.
|
|
19
|
+
*
|
|
20
|
+
* The `node:` imports below are safe to merely EVALUATE on mobile — `require` hands back `undefined`
|
|
21
|
+
* there and nothing reads it at load time — so this module can sit in the generated barrels without
|
|
22
|
+
* breaking the library's load on Android. Only the calls are desktop-only.
|
|
23
|
+
*/
|
|
24
|
+
import type { Buffer } from 'node:buffer';
|
|
25
|
+
/**
|
|
26
|
+
* Parameters for {@link extractZipArchive}.
|
|
27
|
+
*/
|
|
28
|
+
export interface ExtractZipArchiveParams {
|
|
29
|
+
/**
|
|
30
|
+
* The raw ZIP archive bytes.
|
|
31
|
+
*/
|
|
32
|
+
readonly archive: Buffer;
|
|
33
|
+
/**
|
|
34
|
+
* The file-system implementation the extracted entries are written with.
|
|
35
|
+
*
|
|
36
|
+
* Injected rather than imported so the caller chooses which `fs` writes the files. The demo-vault
|
|
37
|
+
* opener hands over Electron's `original-fs` (see {@link ZipExtractionFileSystem}).
|
|
38
|
+
*/
|
|
39
|
+
readonly fileSystem: ZipExtractionFileSystem;
|
|
40
|
+
/**
|
|
41
|
+
* The directory to extract into. Created if it does not exist.
|
|
42
|
+
*/
|
|
43
|
+
readonly targetDirectory: string;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* The slice of `node:fs` extraction needs.
|
|
47
|
+
*
|
|
48
|
+
* Only the two WRITING calls are required, and that is deliberate: Electron's asar layer intercepts
|
|
49
|
+
* `fs` READS (and `existsSync`) on any path containing `.asar`, which a demo vault may legitimately
|
|
50
|
+
* ship as a plain file. Never probing the target with a read keeps that interception out of the
|
|
51
|
+
* picture entirely, and a caller that hands over Electron's `original-fs` is safe even from the
|
|
52
|
+
* write side.
|
|
53
|
+
*/
|
|
54
|
+
export interface ZipExtractionFileSystem {
|
|
55
|
+
/**
|
|
56
|
+
* Creates a directory, including any missing parents.
|
|
57
|
+
*
|
|
58
|
+
* @param path - The directory to create.
|
|
59
|
+
* @param options - The {@link ZipExtractionMkdirOptions}.
|
|
60
|
+
* @returns The first directory created, if any.
|
|
61
|
+
*/
|
|
62
|
+
mkdirSync(path: string, options: ZipExtractionMkdirOptions): string | undefined;
|
|
63
|
+
/**
|
|
64
|
+
* Writes a file, overwriting it if it exists.
|
|
65
|
+
*
|
|
66
|
+
* @param path - The file to write.
|
|
67
|
+
* @param data - The bytes to write.
|
|
68
|
+
*/
|
|
69
|
+
writeFileSync(path: string, data: Buffer): void;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* The options {@link ZipExtractionFileSystem.mkdirSync} is always called with.
|
|
73
|
+
*
|
|
74
|
+
* Extraction never probes for an existing directory, so every call has to create the missing parents
|
|
75
|
+
* itself and tolerate a directory that is already there.
|
|
76
|
+
*/
|
|
77
|
+
export interface ZipExtractionMkdirOptions {
|
|
78
|
+
/**
|
|
79
|
+
* Always `true`.
|
|
80
|
+
*/
|
|
81
|
+
readonly recursive: true;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Extracts every entry of a ZIP archive into a directory.
|
|
85
|
+
*
|
|
86
|
+
* Directory entries become directories; a file entry's parents are created whether or not the archive
|
|
87
|
+
* declared them. An entry whose name would escape {@link ExtractZipArchiveParams.targetDirectory} is
|
|
88
|
+
* refused rather than written (the "zip slip" traversal), as is an encrypted, ZIP64, or
|
|
89
|
+
* unknown-compression archive.
|
|
90
|
+
*
|
|
91
|
+
* @param params - The {@link ExtractZipArchiveParams}.
|
|
92
|
+
* @throws An {@link Error} naming the reason when the archive cannot be read as written.
|
|
93
|
+
*/
|
|
94
|
+
export declare function extractZipArchive(params: ExtractZipArchiveParams): void;
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
/*
|
|
2
|
+
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
|
|
3
|
+
if you want to view the source, please visit the github repository of this plugin
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
(function () {
|
|
7
|
+
function ensureBrowserProcess() {
|
|
8
|
+
const browserProcess = {
|
|
9
|
+
browser: true,
|
|
10
|
+
cwd() {
|
|
11
|
+
return '/';
|
|
12
|
+
},
|
|
13
|
+
env: {},
|
|
14
|
+
platform: 'android'
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
// eslint-disable-next-line obsidianmd/no-global-this, unicorn/no-unnecessary-global-this -- Must stay `globalThis`-qualified: in the emitted banner a bare `process` is a free identifier, so reading it where the host has none throws a ReferenceError instead of yielding `undefined`. That is the very case this function exists to handle.
|
|
18
|
+
const existingProcess = globalThis.process;
|
|
19
|
+
|
|
20
|
+
if (!existingProcess) {
|
|
21
|
+
// eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
|
|
22
|
+
globalThis.process = browserProcess;
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
if (existingProcess.versions?.node) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
const existingProcessRecord = existingProcess;
|
|
31
|
+
|
|
32
|
+
for (const [key, value] of Object.entries(browserProcess)) {
|
|
33
|
+
existingProcessRecord[key] ??= value;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
existingProcessRecord['browser'] = true;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
(function initEsm() {
|
|
40
|
+
ensureBrowserProcess();
|
|
41
|
+
})();
|
|
42
|
+
})();
|
|
43
|
+
|
|
44
|
+
import { inflateRawSync } from "node:zlib";
|
|
45
|
+
import {
|
|
46
|
+
dirname,
|
|
47
|
+
join
|
|
48
|
+
} from "./path.mjs";
|
|
49
|
+
const END_OF_CENTRAL_DIRECTORY_SIGNATURE = 101010256;
|
|
50
|
+
const CENTRAL_DIRECTORY_HEADER_SIGNATURE = 33639248;
|
|
51
|
+
const LOCAL_FILE_HEADER_SIGNATURE = 67324752;
|
|
52
|
+
const END_OF_CENTRAL_DIRECTORY_SIZE = 22;
|
|
53
|
+
const MAX_ARCHIVE_COMMENT_LENGTH = 65535;
|
|
54
|
+
const SATURATED_UINT_16 = 65535;
|
|
55
|
+
const SATURATED_UINT_32 = 4294967295;
|
|
56
|
+
const ARCHIVE_ENTRY_COUNT_OFFSET = 10;
|
|
57
|
+
const CENTRAL_DIRECTORY_START_OFFSET = 16;
|
|
58
|
+
const CENTRAL_DIRECTORY_FLAGS_OFFSET = 8;
|
|
59
|
+
const CENTRAL_DIRECTORY_COMPRESSION_METHOD_OFFSET = 10;
|
|
60
|
+
const CENTRAL_DIRECTORY_COMPRESSED_SIZE_OFFSET = 20;
|
|
61
|
+
const CENTRAL_DIRECTORY_NAME_LENGTH_OFFSET = 28;
|
|
62
|
+
const CENTRAL_DIRECTORY_EXTRA_LENGTH_OFFSET = 30;
|
|
63
|
+
const CENTRAL_DIRECTORY_COMMENT_LENGTH_OFFSET = 32;
|
|
64
|
+
const CENTRAL_DIRECTORY_LOCAL_HEADER_OFFSET_OFFSET = 42;
|
|
65
|
+
const CENTRAL_DIRECTORY_HEADER_SIZE = 46;
|
|
66
|
+
const LOCAL_HEADER_NAME_LENGTH_OFFSET = 26;
|
|
67
|
+
const LOCAL_HEADER_EXTRA_LENGTH_OFFSET = 28;
|
|
68
|
+
const LOCAL_HEADER_SIZE = 30;
|
|
69
|
+
const COMPRESSION_METHOD_STORED = 0;
|
|
70
|
+
const COMPRESSION_METHOD_DEFLATED = 8;
|
|
71
|
+
const ENCRYPTED_FLAG_DIVISOR = 2;
|
|
72
|
+
const ENTRY_NAME_SEPARATOR = "/";
|
|
73
|
+
const WINDOWS_DRIVE_PREFIX_REG_EXP = /^[A-Za-z]:/;
|
|
74
|
+
function extractZipArchive(params) {
|
|
75
|
+
const {
|
|
76
|
+
archive,
|
|
77
|
+
fileSystem,
|
|
78
|
+
targetDirectory
|
|
79
|
+
} = params;
|
|
80
|
+
fileSystem.mkdirSync(targetDirectory, { recursive: true });
|
|
81
|
+
for (const entry of readCentralDirectory(archive)) {
|
|
82
|
+
assertSafeEntryName(entry.name);
|
|
83
|
+
if (entry.name.endsWith(ENTRY_NAME_SEPARATOR)) {
|
|
84
|
+
fileSystem.mkdirSync(join(targetDirectory, entry.name.slice(0, -1)), { recursive: true });
|
|
85
|
+
continue;
|
|
86
|
+
}
|
|
87
|
+
const entryPath = join(targetDirectory, entry.name);
|
|
88
|
+
fileSystem.mkdirSync(dirname(entryPath), { recursive: true });
|
|
89
|
+
fileSystem.writeFileSync(entryPath, readEntryData(archive, entry));
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
function assertSafeEntryName(entryName) {
|
|
93
|
+
if (entryName.startsWith(ENTRY_NAME_SEPARATOR)) {
|
|
94
|
+
throw new Error(`Refusing to extract the absolute archive entry '${entryName}'.`);
|
|
95
|
+
}
|
|
96
|
+
if (WINDOWS_DRIVE_PREFIX_REG_EXP.test(entryName)) {
|
|
97
|
+
throw new Error(`Refusing to extract the drive-qualified archive entry '${entryName}'.`);
|
|
98
|
+
}
|
|
99
|
+
if (entryName.includes("\\")) {
|
|
100
|
+
throw new Error(`Refusing to extract the archive entry '${entryName}', which uses a backslash separator.`);
|
|
101
|
+
}
|
|
102
|
+
if (entryName.split(ENTRY_NAME_SEPARATOR).includes("..")) {
|
|
103
|
+
throw new Error(`Refusing to extract the archive entry '${entryName}', which points outside the target directory.`);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
function findEndOfCentralDirectoryOffset(archive) {
|
|
107
|
+
const lastPossibleOffset = archive.length - END_OF_CENTRAL_DIRECTORY_SIZE;
|
|
108
|
+
const firstPossibleOffset = Math.max(0, lastPossibleOffset - MAX_ARCHIVE_COMMENT_LENGTH);
|
|
109
|
+
for (let offset = lastPossibleOffset; offset >= firstPossibleOffset; offset--) {
|
|
110
|
+
if (archive.readUInt32LE(offset) === END_OF_CENTRAL_DIRECTORY_SIGNATURE) {
|
|
111
|
+
return offset;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
throw new Error("The archive is not a ZIP file: its end-of-central-directory record is missing.");
|
|
115
|
+
}
|
|
116
|
+
function readCentralDirectory(archive) {
|
|
117
|
+
const endOfCentralDirectoryOffset = findEndOfCentralDirectoryOffset(archive);
|
|
118
|
+
const entryCount = archive.readUInt16LE(endOfCentralDirectoryOffset + ARCHIVE_ENTRY_COUNT_OFFSET);
|
|
119
|
+
let entryOffset = archive.readUInt32LE(endOfCentralDirectoryOffset + CENTRAL_DIRECTORY_START_OFFSET);
|
|
120
|
+
if (entryCount === SATURATED_UINT_16 || entryOffset === SATURATED_UINT_32) {
|
|
121
|
+
throw new Error("ZIP64 archives are not supported.");
|
|
122
|
+
}
|
|
123
|
+
const entries = [];
|
|
124
|
+
for (let entryIndex = 0; entryIndex < entryCount; entryIndex++) {
|
|
125
|
+
if (archive.readUInt32LE(entryOffset) !== CENTRAL_DIRECTORY_HEADER_SIGNATURE) {
|
|
126
|
+
throw new Error(`The archive's central directory is corrupt at entry ${String(entryIndex)}.`);
|
|
127
|
+
}
|
|
128
|
+
const flags = archive.readUInt16LE(entryOffset + CENTRAL_DIRECTORY_FLAGS_OFFSET);
|
|
129
|
+
if (flags % ENCRYPTED_FLAG_DIVISOR === 1) {
|
|
130
|
+
throw new Error("Encrypted ZIP archives are not supported.");
|
|
131
|
+
}
|
|
132
|
+
const compressedSize = archive.readUInt32LE(entryOffset + CENTRAL_DIRECTORY_COMPRESSED_SIZE_OFFSET);
|
|
133
|
+
const localHeaderOffset = archive.readUInt32LE(entryOffset + CENTRAL_DIRECTORY_LOCAL_HEADER_OFFSET_OFFSET);
|
|
134
|
+
if (compressedSize === SATURATED_UINT_32 || localHeaderOffset === SATURATED_UINT_32) {
|
|
135
|
+
throw new Error("ZIP64 archives are not supported.");
|
|
136
|
+
}
|
|
137
|
+
const nameLength = archive.readUInt16LE(entryOffset + CENTRAL_DIRECTORY_NAME_LENGTH_OFFSET);
|
|
138
|
+
const nameOffset = entryOffset + CENTRAL_DIRECTORY_HEADER_SIZE;
|
|
139
|
+
entries.push({
|
|
140
|
+
compressedSize,
|
|
141
|
+
compressionMethod: archive.readUInt16LE(entryOffset + CENTRAL_DIRECTORY_COMPRESSION_METHOD_OFFSET),
|
|
142
|
+
localHeaderOffset,
|
|
143
|
+
name: archive.toString("utf-8", nameOffset, nameOffset + nameLength)
|
|
144
|
+
});
|
|
145
|
+
entryOffset = nameOffset + nameLength + archive.readUInt16LE(entryOffset + CENTRAL_DIRECTORY_EXTRA_LENGTH_OFFSET) + archive.readUInt16LE(entryOffset + CENTRAL_DIRECTORY_COMMENT_LENGTH_OFFSET);
|
|
146
|
+
}
|
|
147
|
+
return entries;
|
|
148
|
+
}
|
|
149
|
+
function readEntryData(archive, entry) {
|
|
150
|
+
if (archive.readUInt32LE(entry.localHeaderOffset) !== LOCAL_FILE_HEADER_SIGNATURE) {
|
|
151
|
+
throw new Error(`The archive entry '${entry.name}' has a corrupt local header.`);
|
|
152
|
+
}
|
|
153
|
+
const dataOffset = entry.localHeaderOffset + LOCAL_HEADER_SIZE + archive.readUInt16LE(entry.localHeaderOffset + LOCAL_HEADER_NAME_LENGTH_OFFSET) + archive.readUInt16LE(entry.localHeaderOffset + LOCAL_HEADER_EXTRA_LENGTH_OFFSET);
|
|
154
|
+
const dataEnd = dataOffset + entry.compressedSize;
|
|
155
|
+
if (dataEnd > archive.length) {
|
|
156
|
+
throw new Error(`The archive is truncated: entry '${entry.name}' runs past its end.`);
|
|
157
|
+
}
|
|
158
|
+
const compressedData = archive.subarray(dataOffset, dataEnd);
|
|
159
|
+
switch (entry.compressionMethod) {
|
|
160
|
+
case COMPRESSION_METHOD_DEFLATED: {
|
|
161
|
+
return inflateRawSync(compressedData);
|
|
162
|
+
}
|
|
163
|
+
case COMPRESSION_METHOD_STORED: {
|
|
164
|
+
return compressedData;
|
|
165
|
+
}
|
|
166
|
+
default: {
|
|
167
|
+
throw new Error(`The archive entry '${entry.name}' uses unsupported compression method ${String(entry.compressionMethod)}.`);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
export {
|
|
172
|
+
extractZipArchive
|
|
173
|
+
};
|
|
174
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2Rlc2t0b3AtemlwLWV4dHJhY3Rvci50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIEV4dHJhY3RzIGEgWklQIGFyY2hpdmUgdG8gZGlzayB1c2luZyBvbmx5IE5vZGUncyBgemxpYmAgXHUyMDE0IHdpdGggbm8gdGhpcmQtcGFydHkgdW56aXAgZGVwZW5kZW5jeS5cbiAqXG4gKiBJdCBleGlzdHMgZm9yIG9uZSBtZWFzdXJlZCByZWFzb24uIFRoZSBkZXBlbmRlbmN5IGl0IHJlcGxhY2VkIG9uIHRoaXMgcGF0aCwgYGFkbS16aXBgLCBidW5kbGVkXG4gKiByb3VnaGx5IDM0IEtCIG9mIG1pbmlmaWVkIEphdmFTY3JpcHQgaW50byBFVkVSWSBPYnNpZGlhbiBwbHVnaW4gYnVpbHQgd2l0aCB0aGlzIGxpYnJhcnk6IGEgcGx1Z2luXG4gKiBzaGlwcyBhIHNpbmdsZSBDSlMgYG1haW4uanNgLCBlc2J1aWxkIGhhcyBubyBjb2RlIHNwbGl0dGluZyB0byBwdXQgYSBkZXBlbmRlbmN5IGJlaGluZCwgYW5kIGFcbiAqIGBhd2FpdCBpbXBvcnQoKWAgb25seSBkZWZlcnMgZXZhbHVhdGlvbiBcdTIwMTQgdGhlIG1vZHVsZSBib2R5IGlzIGlubGluZWQgZWl0aGVyIHdheS4gYG5vZGU6emxpYmAgaXNcbiAqIGFscmVhZHkgYW4gZXNidWlsZCBleHRlcm5hbCwgc28gdGhlIHNhbWUgd29yayBub3cgY29zdHMgYSBwbHVnaW4gYnVuZGxlIG5vdGhpbmcgYXQgYWxsLiBBcmNoaXZlc1xuICogYXJlIHN0aWxsIFdSSVRURU4gd2l0aCBgYWRtLXppcGAgYXQgcmVsZWFzZSB0aW1lIChgc2NyaXB0LXV0aWxzL2RlbW8tdmF1bHQudHNgKSwgd2hpY2ggaXMgTm9kZS1zaWRlXG4gKiB0b29saW5nIGFuZCBuZXZlciByZWFjaGVzIGEgcGx1Z2luIGJ1bmRsZS5cbiAqXG4gKiBEZWxpYmVyYXRlbHkgbmFycm93OiBpdCByZWFkcyBleGFjdGx5IHdoYXQgdGhhdCB3cml0ZXIgcHJvZHVjZXMgXHUyMDE0IHN0b3JlZCBhbmQgZGVmbGF0ZWQgZW50cmllcyBpbiBhblxuICogdW5lbmNyeXB0ZWQgYXJjaGl2ZSBiZWxvdyB0aGUgNCBHQiAvIDY1NTM1LWVudHJ5IFpJUDY0IHRocmVzaG9sZCBcdTIwMTQgYW5kIHJhaXNlcyBhIG5hbWVkIGVycm9yIGZvclxuICogYW55dGhpbmcgZWxzZSByYXRoZXIgdGhhbiBndWVzc2luZyBhdCBpdC4gU2l6ZXMgYW5kIG9mZnNldHMgYXJlIHRha2VuIGZyb20gdGhlIGNlbnRyYWwgZGlyZWN0b3J5LFxuICogd2hpY2ggaXMgYXV0aG9yaXRhdGl2ZSBldmVuIGZvciBhcmNoaXZlcyB3cml0dGVuIHdpdGggZGF0YSBkZXNjcmlwdG9ycy5cbiAqXG4gKiBUaGUgYG5vZGU6YCBpbXBvcnRzIGJlbG93IGFyZSBzYWZlIHRvIG1lcmVseSBFVkFMVUFURSBvbiBtb2JpbGUgXHUyMDE0IGByZXF1aXJlYCBoYW5kcyBiYWNrIGB1bmRlZmluZWRgXG4gKiB0aGVyZSBhbmQgbm90aGluZyByZWFkcyBpdCBhdCBsb2FkIHRpbWUgXHUyMDE0IHNvIHRoaXMgbW9kdWxlIGNhbiBzaXQgaW4gdGhlIGdlbmVyYXRlZCBiYXJyZWxzIHdpdGhvdXRcbiAqIGJyZWFraW5nIHRoZSBsaWJyYXJ5J3MgbG9hZCBvbiBBbmRyb2lkLiBPbmx5IHRoZSBjYWxscyBhcmUgZGVza3RvcC1vbmx5LlxuICovXG5cbi8qIGVzbGludC1kaXNhYmxlIGltcG9ydC14L25vLW5vZGVqcy1tb2R1bGVzIC0tIERlc2t0b3Atb25seSBleHRyYWN0aW9uOyB0aGUgb25seSBjYWxsZXIgaXMgZ2F0ZWQgYnkgYFBsYXRmb3JtLmlzRGVza3RvcEFwcGAsIHNvIHRoZXNlIE5vZGUgQVBJcyBhcmUgbmV2ZXIgcmVhY2hlZCBvbiBtb2JpbGUuICovXG5pbXBvcnQgdHlwZSB7IEJ1ZmZlciB9IGZyb20gJ25vZGU6YnVmZmVyJztcblxuaW1wb3J0IHsgaW5mbGF0ZVJhd1N5bmMgfSBmcm9tICdub2RlOnpsaWInO1xuLyogZXNsaW50LWVuYWJsZSBpbXBvcnQteC9uby1ub2RlanMtbW9kdWxlcyAtLSBEZXNrdG9wLW9ubHkgZXh0cmFjdGlvbjsgdGhlIG9ubHkgY2FsbGVyIGlzIGdhdGVkIGJ5IGBQbGF0Zm9ybS5pc0Rlc2t0b3BBcHBgLCBzbyB0aGVzZSBOb2RlIEFQSXMgYXJlIG5ldmVyIHJlYWNoZWQgb24gbW9iaWxlLiAqL1xuXG5pbXBvcnQge1xuICBkaXJuYW1lLFxuICBqb2luXG59IGZyb20gJy4vcGF0aC50cyc7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGV4dHJhY3RaaXBBcmNoaXZlfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFeHRyYWN0WmlwQXJjaGl2ZVBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgcmF3IFpJUCBhcmNoaXZlIGJ5dGVzLlxuICAgKi9cbiAgcmVhZG9ubHkgYXJjaGl2ZTogQnVmZmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgZmlsZS1zeXN0ZW0gaW1wbGVtZW50YXRpb24gdGhlIGV4dHJhY3RlZCBlbnRyaWVzIGFyZSB3cml0dGVuIHdpdGguXG4gICAqXG4gICAqIEluamVjdGVkIHJhdGhlciB0aGFuIGltcG9ydGVkIHNvIHRoZSBjYWxsZXIgY2hvb3NlcyB3aGljaCBgZnNgIHdyaXRlcyB0aGUgZmlsZXMuIFRoZSBkZW1vLXZhdWx0XG4gICAqIG9wZW5lciBoYW5kcyBvdmVyIEVsZWN0cm9uJ3MgYG9yaWdpbmFsLWZzYCAoc2VlIHtAbGluayBaaXBFeHRyYWN0aW9uRmlsZVN5c3RlbX0pLlxuICAgKi9cbiAgcmVhZG9ubHkgZmlsZVN5c3RlbTogWmlwRXh0cmFjdGlvbkZpbGVTeXN0ZW07XG5cbiAgLyoqXG4gICAqIFRoZSBkaXJlY3RvcnkgdG8gZXh0cmFjdCBpbnRvLiBDcmVhdGVkIGlmIGl0IGRvZXMgbm90IGV4aXN0LlxuICAgKi9cbiAgcmVhZG9ubHkgdGFyZ2V0RGlyZWN0b3J5OiBzdHJpbmc7XG59XG5cbi8qKlxuICogVGhlIHNsaWNlIG9mIGBub2RlOmZzYCBleHRyYWN0aW9uIG5lZWRzLlxuICpcbiAqIE9ubHkgdGhlIHR3byBXUklUSU5HIGNhbGxzIGFyZSByZXF1aXJlZCwgYW5kIHRoYXQgaXMgZGVsaWJlcmF0ZTogRWxlY3Ryb24ncyBhc2FyIGxheWVyIGludGVyY2VwdHNcbiAqIGBmc2AgUkVBRFMgKGFuZCBgZXhpc3RzU3luY2ApIG9uIGFueSBwYXRoIGNvbnRhaW5pbmcgYC5hc2FyYCwgd2hpY2ggYSBkZW1vIHZhdWx0IG1heSBsZWdpdGltYXRlbHlcbiAqIHNoaXAgYXMgYSBwbGFpbiBmaWxlLiBOZXZlciBwcm9iaW5nIHRoZSB0YXJnZXQgd2l0aCBhIHJlYWQga2VlcHMgdGhhdCBpbnRlcmNlcHRpb24gb3V0IG9mIHRoZVxuICogcGljdHVyZSBlbnRpcmVseSwgYW5kIGEgY2FsbGVyIHRoYXQgaGFuZHMgb3ZlciBFbGVjdHJvbidzIGBvcmlnaW5hbC1mc2AgaXMgc2FmZSBldmVuIGZyb20gdGhlXG4gKiB3cml0ZSBzaWRlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFppcEV4dHJhY3Rpb25GaWxlU3lzdGVtIHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBkaXJlY3RvcnksIGluY2x1ZGluZyBhbnkgbWlzc2luZyBwYXJlbnRzLlxuICAgKlxuICAgKiBAcGFyYW0gcGF0aCAtIFRoZSBkaXJlY3RvcnkgdG8gY3JlYXRlLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSB7QGxpbmsgWmlwRXh0cmFjdGlvbk1rZGlyT3B0aW9uc30uXG4gICAqIEByZXR1cm5zIFRoZSBmaXJzdCBkaXJlY3RvcnkgY3JlYXRlZCwgaWYgYW55LlxuICAgKi9cbiAgbWtkaXJTeW5jKHBhdGg6IHN0cmluZywgb3B0aW9uczogWmlwRXh0cmFjdGlvbk1rZGlyT3B0aW9ucyk6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogV3JpdGVzIGEgZmlsZSwgb3ZlcndyaXRpbmcgaXQgaWYgaXQgZXhpc3RzLlxuICAgKlxuICAgKiBAcGFyYW0gcGF0aCAtIFRoZSBmaWxlIHRvIHdyaXRlLlxuICAgKiBAcGFyYW0gZGF0YSAtIFRoZSBieXRlcyB0byB3cml0ZS5cbiAgICovXG4gIHdyaXRlRmlsZVN5bmMocGF0aDogc3RyaW5nLCBkYXRhOiBCdWZmZXIpOiB2b2lkO1xufVxuXG4vKipcbiAqIFRoZSBvcHRpb25zIHtAbGluayBaaXBFeHRyYWN0aW9uRmlsZVN5c3RlbS5ta2RpclN5bmN9IGlzIGFsd2F5cyBjYWxsZWQgd2l0aC5cbiAqXG4gKiBFeHRyYWN0aW9uIG5ldmVyIHByb2JlcyBmb3IgYW4gZXhpc3RpbmcgZGlyZWN0b3J5LCBzbyBldmVyeSBjYWxsIGhhcyB0byBjcmVhdGUgdGhlIG1pc3NpbmcgcGFyZW50c1xuICogaXRzZWxmIGFuZCB0b2xlcmF0ZSBhIGRpcmVjdG9yeSB0aGF0IGlzIGFscmVhZHkgdGhlcmUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgWmlwRXh0cmFjdGlvbk1rZGlyT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBBbHdheXMgYHRydWVgLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVjdXJzaXZlOiB0cnVlO1xufVxuXG5pbnRlcmZhY2UgWmlwRW50cnkge1xuICByZWFkb25seSBjb21wcmVzc2VkU2l6ZTogbnVtYmVyO1xuICByZWFkb25seSBjb21wcmVzc2lvbk1ldGhvZDogbnVtYmVyO1xuICByZWFkb25seSBsb2NhbEhlYWRlck9mZnNldDogbnVtYmVyO1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG59XG5cbmNvbnN0IEVORF9PRl9DRU5UUkFMX0RJUkVDVE9SWV9TSUdOQVRVUkUgPSAweDA2XzA1XzRCXzUwO1xuY29uc3QgQ0VOVFJBTF9ESVJFQ1RPUllfSEVBREVSX1NJR05BVFVSRSA9IDB4MDJfMDFfNEJfNTA7XG5jb25zdCBMT0NBTF9GSUxFX0hFQURFUl9TSUdOQVRVUkUgPSAweDA0XzAzXzRCXzUwO1xuXG5jb25zdCBFTkRfT0ZfQ0VOVFJBTF9ESVJFQ1RPUllfU0laRSA9IDIyO1xuY29uc3QgTUFYX0FSQ0hJVkVfQ09NTUVOVF9MRU5HVEggPSA2NV81MzU7XG5cbi8vIEEgY291bnQgb3Igb2Zmc2V0IHNhdHVyYXRlZCB0byBhbGwtb25lcyBtZWFucyB0aGUgcmVhbCB2YWx1ZSBsaXZlcyBpbiBhIFpJUDY0IHJlY29yZCB0aGlzIHJlYWRlclxuLy8gRG9lcyBub3QgaW1wbGVtZW50LCBzbyB0aGUgZmllbGQgbXVzdCBuZXZlciBiZSByZWFkIGF0IGZhY2UgdmFsdWUuXG5jb25zdCBTQVRVUkFURURfVUlOVF8xNiA9IDY1XzUzNTtcbmNvbnN0IFNBVFVSQVRFRF9VSU5UXzMyID0gNF8yOTRfOTY3XzI5NTtcblxuLy8gRmllbGQgb2Zmc2V0cyB3aXRoaW4gdGhlIGVuZC1vZi1jZW50cmFsLWRpcmVjdG9yeSByZWNvcmQuXG5jb25zdCBBUkNISVZFX0VOVFJZX0NPVU5UX09GRlNFVCA9IDEwO1xuY29uc3QgQ0VOVFJBTF9ESVJFQ1RPUllfU1RBUlRfT0ZGU0VUID0gMTY7XG5cbi8vIEZpZWxkIG9mZnNldHMgd2l0aGluIGEgY2VudHJhbC1kaXJlY3RvcnkgaGVhZGVyLlxuY29uc3QgQ0VOVFJBTF9ESVJFQ1RPUllfRkxBR1NfT0ZGU0VUID0gODtcbmNvbnN0IENFTlRSQUxfRElSRUNUT1JZX0NPTVBSRVNTSU9OX01FVEhPRF9PRkZTRVQgPSAxMDtcbmNvbnN0IENFTlRSQUxfRElSRUNUT1JZX0NPTVBSRVNTRURfU0laRV9PRkZTRVQgPSAyMDtcbmNvbnN0IENFTlRSQUxfRElSRUNUT1JZX05BTUVfTEVOR1RIX09GRlNFVCA9IDI4O1xuY29uc3QgQ0VOVFJBTF9ESVJFQ1RPUllfRVhUUkFfTEVOR1RIX09GRlNFVCA9IDMwO1xuY29uc3QgQ0VOVFJBTF9ESVJFQ1RPUllfQ09NTUVOVF9MRU5HVEhfT0ZGU0VUID0gMzI7XG5jb25zdCBDRU5UUkFMX0RJUkVDVE9SWV9MT0NBTF9IRUFERVJfT0ZGU0VUX09GRlNFVCA9IDQyO1xuY29uc3QgQ0VOVFJBTF9ESVJFQ1RPUllfSEVBREVSX1NJWkUgPSA0NjtcblxuLy8gRmllbGQgb2Zmc2V0cyB3aXRoaW4gYSBsb2NhbCBmaWxlIGhlYWRlci5cbmNvbnN0IExPQ0FMX0hFQURFUl9OQU1FX0xFTkdUSF9PRkZTRVQgPSAyNjtcbmNvbnN0IExPQ0FMX0hFQURFUl9FWFRSQV9MRU5HVEhfT0ZGU0VUID0gMjg7XG5jb25zdCBMT0NBTF9IRUFERVJfU0laRSA9IDMwO1xuXG5jb25zdCBDT01QUkVTU0lPTl9NRVRIT0RfU1RPUkVEID0gMDtcbmNvbnN0IENPTVBSRVNTSU9OX01FVEhPRF9ERUZMQVRFRCA9IDg7XG5cbi8vIEJpdCAwIG9mIHRoZSBnZW5lcmFsLXB1cnBvc2UgZmxhZ3MgbWFya3MgYW4gZW5jcnlwdGVkIGVudHJ5LCBhbmQgaXQgaXMgdGhlIGxvd2VzdCBiaXQgXHUyMDE0IHNvIHRoZVxuLy8gUmVtYWluZGVyIHRlc3RzIGl0IHdpdGhvdXQgcmVhY2hpbmcgZm9yIGEgYml0d2lzZSBvcGVyYXRvci5cbmNvbnN0IEVOQ1JZUFRFRF9GTEFHX0RJVklTT1IgPSAyO1xuXG5jb25zdCBFTlRSWV9OQU1FX1NFUEFSQVRPUiA9ICcvJztcbmNvbnN0IFdJTkRPV1NfRFJJVkVfUFJFRklYX1JFR19FWFAgPSAvXltBLVphLXpdOi87XG5cbi8qKlxuICogRXh0cmFjdHMgZXZlcnkgZW50cnkgb2YgYSBaSVAgYXJjaGl2ZSBpbnRvIGEgZGlyZWN0b3J5LlxuICpcbiAqIERpcmVjdG9yeSBlbnRyaWVzIGJlY29tZSBkaXJlY3RvcmllczsgYSBmaWxlIGVudHJ5J3MgcGFyZW50cyBhcmUgY3JlYXRlZCB3aGV0aGVyIG9yIG5vdCB0aGUgYXJjaGl2ZVxuICogZGVjbGFyZWQgdGhlbS4gQW4gZW50cnkgd2hvc2UgbmFtZSB3b3VsZCBlc2NhcGUge0BsaW5rIEV4dHJhY3RaaXBBcmNoaXZlUGFyYW1zLnRhcmdldERpcmVjdG9yeX0gaXNcbiAqIHJlZnVzZWQgcmF0aGVyIHRoYW4gd3JpdHRlbiAodGhlIFwiemlwIHNsaXBcIiB0cmF2ZXJzYWwpLCBhcyBpcyBhbiBlbmNyeXB0ZWQsIFpJUDY0LCBvclxuICogdW5rbm93bi1jb21wcmVzc2lvbiBhcmNoaXZlLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUge0BsaW5rIEV4dHJhY3RaaXBBcmNoaXZlUGFyYW1zfS5cbiAqIEB0aHJvd3MgQW4ge0BsaW5rIEVycm9yfSBuYW1pbmcgdGhlIHJlYXNvbiB3aGVuIHRoZSBhcmNoaXZlIGNhbm5vdCBiZSByZWFkIGFzIHdyaXR0ZW4uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0WmlwQXJjaGl2ZShwYXJhbXM6IEV4dHJhY3RaaXBBcmNoaXZlUGFyYW1zKTogdm9pZCB7XG4gIGNvbnN0IHtcbiAgICBhcmNoaXZlLFxuICAgIGZpbGVTeXN0ZW0sXG4gICAgdGFyZ2V0RGlyZWN0b3J5XG4gIH0gPSBwYXJhbXM7XG5cbiAgZmlsZVN5c3RlbS5ta2RpclN5bmModGFyZ2V0RGlyZWN0b3J5LCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcblxuICBmb3IgKGNvbnN0IGVudHJ5IG9mIHJlYWRDZW50cmFsRGlyZWN0b3J5KGFyY2hpdmUpKSB7XG4gICAgYXNzZXJ0U2FmZUVudHJ5TmFtZShlbnRyeS5uYW1lKTtcblxuICAgIGlmIChlbnRyeS5uYW1lLmVuZHNXaXRoKEVOVFJZX05BTUVfU0VQQVJBVE9SKSkge1xuICAgICAgLy8gTmFtZWQgd2l0aG91dCBpdHMgdHJhaWxpbmcgc2VwYXJhdG9yLCBzbyB0aGUgY3JlYXRlZCBwYXRoIHJlYWRzIHRoZSBzYW1lIGFzIGV2ZXJ5IG90aGVyIG9uZS5cbiAgICAgIGZpbGVTeXN0ZW0ubWtkaXJTeW5jKGpvaW4odGFyZ2V0RGlyZWN0b3J5LCBlbnRyeS5uYW1lLnNsaWNlKDAsIC0xKSksIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29uc3QgZW50cnlQYXRoID0gam9pbih0YXJnZXREaXJlY3RvcnksIGVudHJ5Lm5hbWUpO1xuICAgIGZpbGVTeXN0ZW0ubWtkaXJTeW5jKGRpcm5hbWUoZW50cnlQYXRoKSwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgZmlsZVN5c3RlbS53cml0ZUZpbGVTeW5jKGVudHJ5UGF0aCwgcmVhZEVudHJ5RGF0YShhcmNoaXZlLCBlbnRyeSkpO1xuICB9XG59XG5cbi8qKlxuICogUmVmdXNlcyBhbiBlbnRyeSBuYW1lIHRoYXQgd291bGQgcGxhY2UgdGhlIGV4dHJhY3RlZCBmaWxlIG91dHNpZGUgdGhlIHRhcmdldCBkaXJlY3RvcnkuXG4gKlxuICogQW4gYXJjaGl2ZSBpcyB1bnRydXN0ZWQgaW5wdXQgZXZlbiB3aGVuIHdlIHB1Ymxpc2hlZCBpdCBvdXJzZWx2ZXMsIGFuZCBldmVyeSBvbmUgb2YgdGhlc2Ugc2hhcGVzXG4gKiBlc2NhcGVzIHRoZSB0YXJnZXQ6IGFuIGFic29sdXRlIFBPU0lYIHBhdGgsIGEgV2luZG93cyBkcml2ZS1xdWFsaWZpZWQgcGF0aCwgYSBiYWNrc2xhc2ggKHdoaWNoIHRoZVxuICogWklQIHNwZWNpZmljYXRpb24gZm9yYmlkcyBhcyBhIHNlcGFyYXRvciwgc28gaXRzIG9ubHkgdXNlIGhlcmUgaXMgdG8gc211Z2dsZSBvbmUgcGFzdCBhXG4gKiBmb3J3YXJkLXNsYXNoIGNoZWNrKSwgYW5kIGEgYC4uYCBzZWdtZW50LlxuICpcbiAqIEBwYXJhbSBlbnRyeU5hbWUgLSBUaGUgZW50cnkgbmFtZSBhcyByZWNvcmRlZCBpbiB0aGUgYXJjaGl2ZS5cbiAqL1xuZnVuY3Rpb24gYXNzZXJ0U2FmZUVudHJ5TmFtZShlbnRyeU5hbWU6IHN0cmluZyk6IHZvaWQge1xuICBpZiAoZW50cnlOYW1lLnN0YXJ0c1dpdGgoRU5UUllfTkFNRV9TRVBBUkFUT1IpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBSZWZ1c2luZyB0byBleHRyYWN0IHRoZSBhYnNvbHV0ZSBhcmNoaXZlIGVudHJ5ICcke2VudHJ5TmFtZX0nLmApO1xuICB9XG5cbiAgaWYgKFdJTkRPV1NfRFJJVkVfUFJFRklYX1JFR19FWFAudGVzdChlbnRyeU5hbWUpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBSZWZ1c2luZyB0byBleHRyYWN0IHRoZSBkcml2ZS1xdWFsaWZpZWQgYXJjaGl2ZSBlbnRyeSAnJHtlbnRyeU5hbWV9Jy5gKTtcbiAgfVxuXG4gIGlmIChlbnRyeU5hbWUuaW5jbHVkZXMoJ1xcXFwnKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgUmVmdXNpbmcgdG8gZXh0cmFjdCB0aGUgYXJjaGl2ZSBlbnRyeSAnJHtlbnRyeU5hbWV9Jywgd2hpY2ggdXNlcyBhIGJhY2tzbGFzaCBzZXBhcmF0b3IuYCk7XG4gIH1cblxuICBpZiAoZW50cnlOYW1lLnNwbGl0KEVOVFJZX05BTUVfU0VQQVJBVE9SKS5pbmNsdWRlcygnLi4nKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgUmVmdXNpbmcgdG8gZXh0cmFjdCB0aGUgYXJjaGl2ZSBlbnRyeSAnJHtlbnRyeU5hbWV9Jywgd2hpY2ggcG9pbnRzIG91dHNpZGUgdGhlIHRhcmdldCBkaXJlY3RvcnkuYCk7XG4gIH1cbn1cblxuLyoqXG4gKiBMb2NhdGVzIHRoZSBlbmQtb2YtY2VudHJhbC1kaXJlY3RvcnkgcmVjb3JkIGFuZCByZXR1cm5zIGl0cyBvZmZzZXQuXG4gKlxuICogVGhlIHJlY29yZCBzaXRzIGF0IHRoZSB2ZXJ5IGVuZCBvZiB0aGUgYXJjaGl2ZSB1bmxlc3MgYSB0cmFpbGluZyBjb21tZW50IGZvbGxvd3MgaXQsIHNvIGl0IGlzIGZvdW5kXG4gKiBieSBzY2FubmluZyBiYWNrd2FyZHMgb3ZlciB0aGUgY29tbWVudCdzIG1heGltdW0gbGVuZ3RoIHJhdGhlciB0aGFuIGFzc3VtZWQgdG8gYmUgYXQgYSBmaXhlZCBwbGFjZS5cbiAqXG4gKiBAcGFyYW0gYXJjaGl2ZSAtIFRoZSByYXcgWklQIGFyY2hpdmUgYnl0ZXMuXG4gKiBAcmV0dXJucyBUaGUgcmVjb3JkJ3Mgb2Zmc2V0LlxuICovXG5mdW5jdGlvbiBmaW5kRW5kT2ZDZW50cmFsRGlyZWN0b3J5T2Zmc2V0KGFyY2hpdmU6IEJ1ZmZlcik6IG51bWJlciB7XG4gIGNvbnN0IGxhc3RQb3NzaWJsZU9mZnNldCA9IGFyY2hpdmUubGVuZ3RoIC0gRU5EX09GX0NFTlRSQUxfRElSRUNUT1JZX1NJWkU7XG4gIGNvbnN0IGZpcnN0UG9zc2libGVPZmZzZXQgPSBNYXRoLm1heCgwLCBsYXN0UG9zc2libGVPZmZzZXQgLSBNQVhfQVJDSElWRV9DT01NRU5UX0xFTkdUSCk7XG5cbiAgZm9yIChsZXQgb2Zmc2V0ID0gbGFzdFBvc3NpYmxlT2Zmc2V0OyBvZmZzZXQgPj0gZmlyc3RQb3NzaWJsZU9mZnNldDsgb2Zmc2V0LS0pIHtcbiAgICBpZiAoYXJjaGl2ZS5yZWFkVUludDMyTEUob2Zmc2V0KSA9PT0gRU5EX09GX0NFTlRSQUxfRElSRUNUT1JZX1NJR05BVFVSRSkge1xuICAgICAgcmV0dXJuIG9mZnNldDtcbiAgICB9XG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBhcmNoaXZlIGlzIG5vdCBhIFpJUCBmaWxlOiBpdHMgZW5kLW9mLWNlbnRyYWwtZGlyZWN0b3J5IHJlY29yZCBpcyBtaXNzaW5nLicpO1xufVxuXG4vKipcbiAqIFJlYWRzIHRoZSBjZW50cmFsIGRpcmVjdG9yeSwgd2hpY2ggaXMgdGhlIGFyY2hpdmUncyBhdXRob3JpdGF0aXZlIGluZGV4IG9mIGl0cyBlbnRyaWVzLlxuICpcbiAqIEBwYXJhbSBhcmNoaXZlIC0gVGhlIHJhdyBaSVAgYXJjaGl2ZSBieXRlcy5cbiAqIEByZXR1cm5zIE9uZSB7QGxpbmsgWmlwRW50cnl9IHBlciBlbnRyeSwgaW4gdGhlIG9yZGVyIHRoZSBhcmNoaXZlIGxpc3RzIHRoZW0uXG4gKi9cbmZ1bmN0aW9uIHJlYWRDZW50cmFsRGlyZWN0b3J5KGFyY2hpdmU6IEJ1ZmZlcik6IFppcEVudHJ5W10ge1xuICBjb25zdCBlbmRPZkNlbnRyYWxEaXJlY3RvcnlPZmZzZXQgPSBmaW5kRW5kT2ZDZW50cmFsRGlyZWN0b3J5T2Zmc2V0KGFyY2hpdmUpO1xuICBjb25zdCBlbnRyeUNvdW50ID0gYXJjaGl2ZS5yZWFkVUludDE2TEUoZW5kT2ZDZW50cmFsRGlyZWN0b3J5T2Zmc2V0ICsgQVJDSElWRV9FTlRSWV9DT1VOVF9PRkZTRVQpO1xuICBsZXQgZW50cnlPZmZzZXQgPSBhcmNoaXZlLnJlYWRVSW50MzJMRShlbmRPZkNlbnRyYWxEaXJlY3RvcnlPZmZzZXQgKyBDRU5UUkFMX0RJUkVDVE9SWV9TVEFSVF9PRkZTRVQpO1xuXG4gIGlmIChlbnRyeUNvdW50ID09PSBTQVRVUkFURURfVUlOVF8xNiB8fCBlbnRyeU9mZnNldCA9PT0gU0FUVVJBVEVEX1VJTlRfMzIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1pJUDY0IGFyY2hpdmVzIGFyZSBub3Qgc3VwcG9ydGVkLicpO1xuICB9XG5cbiAgY29uc3QgZW50cmllczogWmlwRW50cnlbXSA9IFtdO1xuICBmb3IgKGxldCBlbnRyeUluZGV4ID0gMDsgZW50cnlJbmRleCA8IGVudHJ5Q291bnQ7IGVudHJ5SW5kZXgrKykge1xuICAgIGlmIChhcmNoaXZlLnJlYWRVSW50MzJMRShlbnRyeU9mZnNldCkgIT09IENFTlRSQUxfRElSRUNUT1JZX0hFQURFUl9TSUdOQVRVUkUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlIGFyY2hpdmUncyBjZW50cmFsIGRpcmVjdG9yeSBpcyBjb3JydXB0IGF0IGVudHJ5ICR7U3RyaW5nKGVudHJ5SW5kZXgpfS5gKTtcbiAgICB9XG5cbiAgICBjb25zdCBmbGFncyA9IGFyY2hpdmUucmVhZFVJbnQxNkxFKGVudHJ5T2Zmc2V0ICsgQ0VOVFJBTF9ESVJFQ1RPUllfRkxBR1NfT0ZGU0VUKTtcbiAgICBpZiAoZmxhZ3MgJSBFTkNSWVBURURfRkxBR19ESVZJU09SID09PSAxKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0VuY3J5cHRlZCBaSVAgYXJjaGl2ZXMgYXJlIG5vdCBzdXBwb3J0ZWQuJyk7XG4gICAgfVxuXG4gICAgY29uc3QgY29tcHJlc3NlZFNpemUgPSBhcmNoaXZlLnJlYWRVSW50MzJMRShlbnRyeU9mZnNldCArIENFTlRSQUxfRElSRUNUT1JZX0NPTVBSRVNTRURfU0laRV9PRkZTRVQpO1xuICAgIGNvbnN0IGxvY2FsSGVhZGVyT2Zmc2V0ID0gYXJjaGl2ZS5yZWFkVUludDMyTEUoZW50cnlPZmZzZXQgKyBDRU5UUkFMX0RJUkVDVE9SWV9MT0NBTF9IRUFERVJfT0ZGU0VUX09GRlNFVCk7XG4gICAgaWYgKGNvbXByZXNzZWRTaXplID09PSBTQVRVUkFURURfVUlOVF8zMiB8fCBsb2NhbEhlYWRlck9mZnNldCA9PT0gU0FUVVJBVEVEX1VJTlRfMzIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignWklQNjQgYXJjaGl2ZXMgYXJlIG5vdCBzdXBwb3J0ZWQuJyk7XG4gICAgfVxuXG4gICAgY29uc3QgbmFtZUxlbmd0aCA9IGFyY2hpdmUucmVhZFVJbnQxNkxFKGVudHJ5T2Zmc2V0ICsgQ0VOVFJBTF9ESVJFQ1RPUllfTkFNRV9MRU5HVEhfT0ZGU0VUKTtcbiAgICBjb25zdCBuYW1lT2Zmc2V0ID0gZW50cnlPZmZzZXQgKyBDRU5UUkFMX0RJUkVDVE9SWV9IRUFERVJfU0laRTtcbiAgICBlbnRyaWVzLnB1c2goe1xuICAgICAgY29tcHJlc3NlZFNpemUsXG4gICAgICBjb21wcmVzc2lvbk1ldGhvZDogYXJjaGl2ZS5yZWFkVUludDE2TEUoZW50cnlPZmZzZXQgKyBDRU5UUkFMX0RJUkVDVE9SWV9DT01QUkVTU0lPTl9NRVRIT0RfT0ZGU0VUKSxcbiAgICAgIGxvY2FsSGVhZGVyT2Zmc2V0LFxuICAgICAgbmFtZTogYXJjaGl2ZS50b1N0cmluZygndXRmLTgnLCBuYW1lT2Zmc2V0LCBuYW1lT2Zmc2V0ICsgbmFtZUxlbmd0aClcbiAgICB9KTtcblxuICAgIGVudHJ5T2Zmc2V0ID0gbmFtZU9mZnNldFxuICAgICAgKyBuYW1lTGVuZ3RoXG4gICAgICArIGFyY2hpdmUucmVhZFVJbnQxNkxFKGVudHJ5T2Zmc2V0ICsgQ0VOVFJBTF9ESVJFQ1RPUllfRVhUUkFfTEVOR1RIX09GRlNFVClcbiAgICAgICsgYXJjaGl2ZS5yZWFkVUludDE2TEUoZW50cnlPZmZzZXQgKyBDRU5UUkFMX0RJUkVDVE9SWV9DT01NRU5UX0xFTkdUSF9PRkZTRVQpO1xuICB9XG5cbiAgcmV0dXJuIGVudHJpZXM7XG59XG5cbi8qKlxuICogUmVhZHMgYW5kIGRlY29tcHJlc3NlcyBvbmUgZW50cnkncyBieXRlcy5cbiAqXG4gKiBUaGUgZGF0YSdzIHN0YXJ0IGlzIGNvbXB1dGVkIGZyb20gdGhlIExPQ0FMIGhlYWRlciByYXRoZXIgdGhhbiB0aGUgY2VudHJhbCBvbmU6IHRoZSB0d28gY2FycnlcbiAqIGluZGVwZW5kZW50IG5hbWUgYW5kIGV4dHJhLWZpZWxkIGxlbmd0aHMsIGFuZCBvbmx5IHRoZSBsb2NhbCBwYWlyIGRlc2NyaWJlcyB3aGVyZSB0aGUgYnl0ZXNcbiAqIGFjdHVhbGx5IGJlZ2luLlxuICpcbiAqIEBwYXJhbSBhcmNoaXZlIC0gVGhlIHJhdyBaSVAgYXJjaGl2ZSBieXRlcy5cbiAqIEBwYXJhbSBlbnRyeSAtIFRoZSBlbnRyeSwgYXMgcmVhZCBmcm9tIHRoZSBjZW50cmFsIGRpcmVjdG9yeS5cbiAqIEByZXR1cm5zIFRoZSBlbnRyeSdzIHVuY29tcHJlc3NlZCBjb250ZW50LlxuICovXG5mdW5jdGlvbiByZWFkRW50cnlEYXRhKGFyY2hpdmU6IEJ1ZmZlciwgZW50cnk6IFppcEVudHJ5KTogQnVmZmVyIHtcbiAgaWYgKGFyY2hpdmUucmVhZFVJbnQzMkxFKGVudHJ5LmxvY2FsSGVhZGVyT2Zmc2V0KSAhPT0gTE9DQUxfRklMRV9IRUFERVJfU0lHTkFUVVJFKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgYXJjaGl2ZSBlbnRyeSAnJHtlbnRyeS5uYW1lfScgaGFzIGEgY29ycnVwdCBsb2NhbCBoZWFkZXIuYCk7XG4gIH1cblxuICBjb25zdCBkYXRhT2Zmc2V0ID0gZW50cnkubG9jYWxIZWFkZXJPZmZzZXRcbiAgICArIExPQ0FMX0hFQURFUl9TSVpFXG4gICAgKyBhcmNoaXZlLnJlYWRVSW50MTZMRShlbnRyeS5sb2NhbEhlYWRlck9mZnNldCArIExPQ0FMX0hFQURFUl9OQU1FX0xFTkdUSF9PRkZTRVQpXG4gICAgKyBhcmNoaXZlLnJlYWRVSW50MTZMRShlbnRyeS5sb2NhbEhlYWRlck9mZnNldCArIExPQ0FMX0hFQURFUl9FWFRSQV9MRU5HVEhfT0ZGU0VUKTtcbiAgY29uc3QgZGF0YUVuZCA9IGRhdGFPZmZzZXQgKyBlbnRyeS5jb21wcmVzc2VkU2l6ZTtcbiAgaWYgKGRhdGFFbmQgPiBhcmNoaXZlLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgVGhlIGFyY2hpdmUgaXMgdHJ1bmNhdGVkOiBlbnRyeSAnJHtlbnRyeS5uYW1lfScgcnVucyBwYXN0IGl0cyBlbmQuYCk7XG4gIH1cblxuICBjb25zdCBjb21wcmVzc2VkRGF0YSA9IGFyY2hpdmUuc3ViYXJyYXkoZGF0YU9mZnNldCwgZGF0YUVuZCk7XG4gIHN3aXRjaCAoZW50cnkuY29tcHJlc3Npb25NZXRob2QpIHtcbiAgICBjYXNlIENPTVBSRVNTSU9OX01FVEhPRF9ERUZMQVRFRDoge1xuICAgICAgcmV0dXJuIGluZmxhdGVSYXdTeW5jKGNvbXByZXNzZWREYXRhKTtcbiAgICB9XG4gICAgY2FzZSBDT01QUkVTU0lPTl9NRVRIT0RfU1RPUkVEOiB7XG4gICAgICByZXR1cm4gY29tcHJlc3NlZERhdGE7XG4gICAgfVxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlIGFyY2hpdmUgZW50cnkgJyR7ZW50cnkubmFtZX0nIHVzZXMgdW5zdXBwb3J0ZWQgY29tcHJlc3Npb24gbWV0aG9kICR7U3RyaW5nKGVudHJ5LmNvbXByZXNzaW9uTWV0aG9kKX0uYCk7XG4gICAgfVxuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBMEJBLFNBQVMsc0JBQXNCO0FBRy9CO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBeUVQLE1BQU0scUNB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
|