UNPKG

obsidian-dev-utils

Version:

This is the collection of useful functions that you can use for your Obsidian plugin development

406 lines (403 loc) 39.2 kB
/* THIS IS A GENERATED/BUNDLED FILE BY ESBUILD if you want to view the source, please visit the github repository of this plugin */ (function initCjs(){const globalThisRecord=globalThis;globalThisRecord["__name"]??=name;const originalRequire=require;if(originalRequire&&!originalRequire.__isPatched){require=Object.assign(id=>requirePatched(id),originalRequire,{__isPatched:true})}const newFuncs={__extractDefault:__name(()=>extractDefault,"__extractDefault"),process:__name(()=>{const browserProcess={browser:true,cwd:__name(()=>"/","cwd"),env:{},platform:"android"};return browserProcess},"process")};for(const key of Object.keys(newFuncs)){globalThisRecord[key]??=newFuncs[key]?.()}function name(obj){return obj}__name(name,"name");function extractDefault(module){return module&&module.__esModule&&"default"in module?module.default:module}__name(extractDefault,"extractDefault");function requirePatched(id){const module=originalRequire?.(id);if(module){return extractDefault(module)}if(id==="process"||id==="node:process"){console.error(`Module not found: ${id}. Fake process object is returned instead.`);return globalThis.process}console.error(`Module not found: ${id}. Empty object is returned instead.`);return{}}__name(requirePatched,"requirePatched")})(); "use strict"; var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( // If the importer is in node compatibility mode or this is not an ESM // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); var eslint_config_exports = {}; __export(eslint_config_exports, { obsidianDevUtilsConfigs: () => obsidianDevUtilsConfigs }); module.exports = __toCommonJS(eslint_config_exports); var import_js = __toESM(__extractDefault(require('@eslint/js')), 1); var import_eslint_plugin = __toESM(__extractDefault(require('@stylistic/eslint-plugin')), 1); var import_eslint_plugin_import_x = require('eslint-plugin-import-x'); var import_eslint_plugin_modules_newlines = __toESM(__extractDefault(require('eslint-plugin-modules-newlines')), 1); var import_eslint_plugin_perfectionist = __toESM(__extractDefault(require('eslint-plugin-perfectionist')), 1); var import_typescript_eslint = __toESM(__extractDefault(require('typescript-eslint')), 1); var import_ObsidianPluginRepoPaths = require('../../obsidian/Plugin/ObsidianPluginRepoPaths.cjs'); var import_Path = require('../../Path.cjs'); var import_Root = require('../Root.cjs'); const obsidianDevUtilsConfigs = import_typescript_eslint.default.config( { files: [ (0, import_Path.join)(import_ObsidianPluginRepoPaths.ObsidianPluginRepoPaths.Src, import_ObsidianPluginRepoPaths.ObsidianPluginRepoPaths.AnyPath, import_ObsidianPluginRepoPaths.ObsidianPluginRepoPaths.AnyTs), (0, import_Path.join)(import_ObsidianPluginRepoPaths.ObsidianPluginRepoPaths.Src, import_ObsidianPluginRepoPaths.ObsidianPluginRepoPaths.AnyPath, import_ObsidianPluginRepoPaths.ObsidianPluginRepoPaths.AnyTsx), (0, import_Path.join)(import_ObsidianPluginRepoPaths.ObsidianPluginRepoPaths.Scripts, import_ObsidianPluginRepoPaths.ObsidianPluginRepoPaths.AnyPath, import_ObsidianPluginRepoPaths.ObsidianPluginRepoPaths.AnyTs), import_ObsidianPluginRepoPaths.ObsidianPluginRepoPaths.EslintConfigCts, import_ObsidianPluginRepoPaths.ObsidianPluginRepoPaths.EslintConfigTs, import_ObsidianPluginRepoPaths.ObsidianPluginRepoPaths.EslintConfigMts ] }, { ignores: [ (0, import_Path.join)(import_ObsidianPluginRepoPaths.ObsidianPluginRepoPaths.AnyPath, import_ObsidianPluginRepoPaths.ObsidianPluginRepoPaths.AnyCjs), (0, import_Path.join)(import_ObsidianPluginRepoPaths.ObsidianPluginRepoPaths.AnyPath, import_ObsidianPluginRepoPaths.ObsidianPluginRepoPaths.AnyJs), (0, import_Path.join)(import_ObsidianPluginRepoPaths.ObsidianPluginRepoPaths.AnyPath, import_ObsidianPluginRepoPaths.ObsidianPluginRepoPaths.AnyMjs), (0, import_Path.join)(import_ObsidianPluginRepoPaths.ObsidianPluginRepoPaths.Dist, import_ObsidianPluginRepoPaths.ObsidianPluginRepoPaths.AnyPath) ] }, ...getEslintConfigs(), ...getTseslintConfigs(), ...getStylisticConfigs(), ...getImportXConfigs(), ...getPerfectionistConfigs(), ...getModulesNewlinesConfigs(), ...getModulesNewlinesConfigs(), ...getEslintImportResolverTypescriptConfigs() ); function excludeFilesProperty(config) { const newConfig = { ...config }; delete newConfig.files; return newConfig; } function getEslintConfigs() { return [ import_js.default.configs.recommended, { rules: { "accessor-pairs": "error", "array-callback-return": "error", "camelcase": "error", "capitalized-comments": "error", "complexity": "error", "consistent-this": "error", "curly": "error", "default-case": "error", "default-case-last": "error", "default-param-last": "error", "eqeqeq": "error", "func-name-matching": "error", "func-names": "error", "func-style": [ "error", "declaration", { allowArrowFunctions: false } ], "grouped-accessor-pairs": [ "error", "getBeforeSet" ], "guard-for-in": "error", "no-alert": "error", "no-array-constructor": "error", "no-bitwise": "error", "no-caller": "error", "no-console": [ "error", { allow: [ "warn", "error" ] } ], "no-constructor-return": "error", "no-div-regex": "error", "no-else-return": [ "error", { allowElseIf: false } ], "no-empty-function": "error", "no-extend-native": "error", "no-extra-bind": "error", "no-extra-label": "error", "no-implicit-coercion": [ "error", { allow: [ "!!" ] } ], "no-implied-eval": "error", "no-inner-declarations": "error", "no-iterator": "error", "no-label-var": "error", "no-labels": "error", "no-lone-blocks": "error", "no-lonely-if": "error", "no-loop-func": "error", "no-magic-numbers": [ "error", { detectObjects: true, enforceConst: true, ignore: [ -1, 0, 1 ] } ], "no-multi-assign": "error", "no-multi-str": "error", "no-negated-condition": "error", "no-nested-ternary": "error", "no-new-func": "error", "no-new-wrappers": "error", "no-object-constructor": "error", "no-octal-escape": "error", "no-promise-executor-return": "error", "no-proto": "error", "no-return-assign": "error", "no-script-url": "error", "no-self-compare": "error", "no-sequences": "error", "no-shadow": "error", "no-template-curly-in-string": "error", "no-throw-literal": "error", "no-unmodified-loop-condition": "error", "no-unneeded-ternary": "error", "no-unreachable-loop": "error", "no-unused-expressions": "error", "no-useless-assignment": "error", "no-useless-call": "error", "no-useless-computed-key": "error", "no-useless-concat": "error", "no-useless-constructor": "error", "no-useless-rename": "error", "no-useless-return": "error", "no-var": "error", "no-void": "error", "object-shorthand": "error", "operator-assignment": "error", "prefer-arrow-callback": "error", "prefer-const": "error", "prefer-exponentiation-operator": "error", "prefer-named-capture-group": "error", "prefer-numeric-literals": "error", "prefer-object-has-own": "error", "prefer-object-spread": "error", "prefer-promise-reject-errors": "error", "prefer-regex-literals": "error", "prefer-rest-params": "error", "prefer-spread": "error", "prefer-template": "error", "radix": "error", "require-atomic-updates": "error", "require-await": "error", "symbol-description": "error", "unicode-bom": "error", "vars-on-top": "error", "yoda": "error" } } ]; } function getEslintImportResolverTypescriptConfigs() { return [ { settings: { "import/resolver": { typescript: { alwaysTryTypes: true } } } } ]; } function getImportXConfigs() { return [ import_eslint_plugin_import_x.flatConfigs.recommended, import_eslint_plugin_import_x.flatConfigs.typescript, import_eslint_plugin_import_x.flatConfigs.errors, import_eslint_plugin_import_x.flatConfigs.warnings, { rules: { "import-x/consistent-type-specifier-style": "error", "import-x/extensions": ["error", "ignorePackages"], "import-x/first": "error", "import-x/imports-first": "error", "import-x/newline-after-import": "error", "import-x/no-absolute-path": "error", "import-x/no-amd": "error", "import-x/no-anonymous-default-export": "error", "import-x/no-commonjs": "error", "import-x/no-cycle": "error", "import-x/no-default-export": "error", "import-x/no-deprecated": "error", "import-x/no-duplicates": "error", "import-x/no-dynamic-require": "error", "import-x/no-empty-named-blocks": "error", "import-x/no-extraneous-dependencies": "error", "import-x/no-import-module-exports": "error", "import-x/no-mutable-exports": "error", "import-x/no-named-default": "error", "import-x/no-namespace": "error", "import-x/no-nodejs-modules": "error", "import-x/no-relative-packages": "error", "import-x/no-restricted-paths": "error", "import-x/no-self-import": "error", "import-x/no-unassigned-import": [ "error", { allow: [ "**/*.css", "**/*.sass", "**/*.scss" ] } ], "import-x/no-unused-modules": "error", "import-x/no-useless-path-segments": "error", "import-x/no-webpack-loader-syntax": "error" } } ]; } function getModulesNewlinesConfigs() { return [ { plugins: { "modules-newlines": import_eslint_plugin_modules_newlines.default }, rules: { "modules-newlines/export-declaration-newline": "error", "modules-newlines/import-declaration-newline": "error" } } ]; } function getPerfectionistConfigs() { return [ import_eslint_plugin_perfectionist.default.configs["recommended-alphabetical"] ]; } function getStylisticConfigs() { return [ import_eslint_plugin.default.configs.recommended, import_eslint_plugin.default.configs.customize({ arrowParens: true, braceStyle: "1tbs", commaDangle: "never", semi: true }), { rules: { "@stylistic/indent": "off", "@stylistic/indent-binary-ops": "off", "@stylistic/jsx-one-expression-per-line": "off", "@stylistic/no-extra-semi": "error", "@stylistic/object-curly-newline": [ "error", { ExportDeclaration: { minProperties: 2, multiline: true }, ImportDeclaration: { minProperties: 2, multiline: true } } ], "@stylistic/operator-linebreak": [ "error", "before", { overrides: { "=": "after" } } ], "@stylistic/quotes": [ "error", "single", { allowTemplateLiterals: "never" } ] } } ]; } function getTseslintConfigs() { return [ // eslint-disable-next-line import-x/no-named-as-default-member ...import_typescript_eslint.default.configs.strictTypeChecked.map(excludeFilesProperty), // eslint-disable-next-line import-x/no-named-as-default-member ...import_typescript_eslint.default.configs.stylisticTypeChecked.map(excludeFilesProperty), { languageOptions: { parserOptions: { ecmaFeatures: { jsx: true }, projectService: true, tsconfigRootDir: (0, import_Root.getRootFolder)() ?? "" } } }, { rules: { "@typescript-eslint/explicit-function-return-type": "error", "@typescript-eslint/explicit-member-accessibility": "error", "@typescript-eslint/no-invalid-void-type": ["error", { allowAsThisParameter: true }], "@typescript-eslint/no-this-alias": ["error", { allowedNames: [ "that" ] }], "@typescript-eslint/no-unused-vars": [ "error", { args: "all", argsIgnorePattern: "^_", caughtErrors: "all", caughtErrorsIgnorePattern: "^_", destructuredArrayIgnorePattern: "^_", ignoreRestSiblings: true, varsIgnorePattern: "^_" } ] } }, { settings: { react: { version: "detect" } } } ]; } // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { obsidianDevUtilsConfigs }); //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL1NjcmlwdFV0aWxzL0VTTGludC9lc2xpbnQuY29uZmlnLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIEVTTGludCBjb25maWd1cmF0aW9uIGZvciBUeXBlU2NyaXB0IHByb2plY3RzIHdpdGggdmFyaW91cyBwbHVnaW5zLlxuICpcbiAqIFRoaXMgbW9kdWxlIGV4cG9ydHMgRVNMaW50IGNvbmZpZ3VyYXRpb25zIGZvciBUeXBlU2NyaXB0IHByb2plY3RzLCBpbnRlZ3JhdGluZyBtdWx0aXBsZSBFU0xpbnQgcGx1Z2luc1xuICogc3VjaCBhcyBgQHR5cGVzY3JpcHQtZXNsaW50L3BhcnNlcmAsIGBAdHlwZXNjcmlwdC1lc2xpbnQvZXNsaW50LXBsdWdpbmAsXG4gKiBgZXNsaW50LXBsdWdpbi1tb2R1bGVzLW5ld2xpbmVzYCwgYEBzdHlsaXN0aWMvZXNsaW50LXBsdWdpbmAuXG4gKiBJdCBzZXRzIHVwIHBhcnNlcnMsIHBsdWdpbnMsIGFuZCBydWxlcyBmb3IgbWFpbnRhaW5pbmcgY29kZSBxdWFsaXR5IGFuZCBjb25zaXN0ZW5jeS5cbiAqL1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1tYWdpYy1udW1iZXJzICovXG5cbmltcG9ydCB0eXBlIHsgTGludGVyIH0gZnJvbSAnZXNsaW50JztcbmltcG9ydCB0eXBlIHsgSW5maW5pdGVEZXB0aENvbmZpZ1dpdGhFeHRlbmRzIH0gZnJvbSAndHlwZXNjcmlwdC1lc2xpbnQnO1xuXG5pbXBvcnQgZXNsaW50IGZyb20gJ0Blc2xpbnQvanMnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC14L25vLXJlbmFtZS1kZWZhdWx0XG5pbXBvcnQgc3R5bGlzdGljIGZyb20gJ0BzdHlsaXN0aWMvZXNsaW50LXBsdWdpbic7XG5pbXBvcnQgeyBmbGF0Q29uZmlncyBhcyBlc2xpbnRQbHVnaW5JbXBvcnRYRmxhdENvbmZpZ3MgfSBmcm9tICdlc2xpbnQtcGx1Z2luLWltcG9ydC14JztcbmltcG9ydCBlc2xpbnRQbHVnaW5Nb2R1bGVzTmV3bGluZXMgZnJvbSAnZXNsaW50LXBsdWdpbi1tb2R1bGVzLW5ld2xpbmVzJztcbmltcG9ydCBwZXJmZWN0aW9uaXN0IGZyb20gJ2VzbGludC1wbHVnaW4tcGVyZmVjdGlvbmlzdCc7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0LXgvbm8tcmVuYW1lLWRlZmF1bHRcbmltcG9ydCB0c2VzbGludCBmcm9tICd0eXBlc2NyaXB0LWVzbGludCc7XG5cbmltcG9ydCB7IE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzIH0gZnJvbSAnLi4vLi4vb2JzaWRpYW4vUGx1Z2luL09ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLnRzJztcbmltcG9ydCB7IGpvaW4gfSBmcm9tICcuLi8uLi9QYXRoLnRzJztcbmltcG9ydCB7IGdldFJvb3RGb2xkZXIgfSBmcm9tICcuLi9Sb290LnRzJztcblxuLyoqXG4gKiBUaGUgRVNMaW50IGNvbmZpZ3VyYXRpb25zIGZvciBUeXBlU2NyaXB0IHByb2plY3RzLlxuICovXG5leHBvcnQgY29uc3Qgb2JzaWRpYW5EZXZVdGlsc0NvbmZpZ3M6IExpbnRlci5Db25maWdbXSA9IHRzZXNsaW50LmNvbmZpZyhcbiAge1xuICAgIGZpbGVzOiBbXG4gICAgICBqb2luKE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLlNyYywgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuQW55UGF0aCwgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuQW55VHMpLFxuICAgICAgam9pbihPYnNpZGlhblBsdWdpblJlcG9QYXRocy5TcmMsIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkFueVBhdGgsIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkFueVRzeCksXG4gICAgICBqb2luKE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLlNjcmlwdHMsIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkFueVBhdGgsIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkFueVRzKSxcbiAgICAgIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkVzbGludENvbmZpZ0N0cyxcbiAgICAgIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkVzbGludENvbmZpZ1RzLFxuICAgICAgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuRXNsaW50Q29uZmlnTXRzXG4gICAgXVxuICB9LFxuICB7XG4gICAgaWdub3JlczogW1xuICAgICAgam9pbihPYnNpZGlhblBsdWdpblJlcG9QYXRocy5BbnlQYXRoLCBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5BbnlDanMpLFxuICAgICAgam9pbihPYnNpZGlhblBsdWdpblJlcG9QYXRocy5BbnlQYXRoLCBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5BbnlKcyksXG4gICAgICBqb2luKE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkFueVBhdGgsIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkFueU1qcyksXG4gICAgICBqb2luKE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkRpc3QsIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkFueVBhdGgpXG4gICAgXVxuICB9LFxuICAuLi5nZXRFc2xpbnRDb25maWdzKCksXG4gIC4uLmdldFRzZXNsaW50Q29uZmlncygpLFxuICAuLi5nZXRTdHlsaXN0aWNDb25maWdzKCksXG4gIC4uLmdldEltcG9ydFhDb25maWdzKCksXG4gIC4uLmdldFBlcmZlY3Rpb25pc3RDb25maWdzKCksXG4gIC4uLmdldE1vZHVsZXNOZXdsaW5lc0NvbmZpZ3MoKSxcbiAgLi4uZ2V0TW9kdWxlc05ld2xpbmVzQ29uZmlncygpLFxuICAuLi5nZXRFc2xpbnRJbXBvcnRSZXNvbHZlclR5cGVzY3JpcHRDb25maWdzKClcbikgYXMgTGludGVyLkNvbmZpZ1tdO1xuXG5mdW5jdGlvbiBleGNsdWRlRmlsZXNQcm9wZXJ0eTxDb25maWcgZXh0ZW5kcyB7IGZpbGVzPzogdW5rbm93biB9Pihjb25maWc6IENvbmZpZyk6IENvbmZpZyB7XG4gIGNvbnN0IG5ld0NvbmZpZyA9IHsgLi4uY29uZmlnIH07XG4gIGRlbGV0ZSBuZXdDb25maWcuZmlsZXM7XG4gIHJldHVybiBuZXdDb25maWc7XG59XG5cbmZ1bmN0aW9uIGdldEVzbGludENvbmZpZ3MoKTogSW5maW5pdGVEZXB0aENvbmZpZ1dpdGhFeHRlbmRzW10ge1xuICByZXR1cm4gW1xuICAgIGVzbGludC5jb25maWdzLnJlY29tbWVuZGVkLFxuICAgIHtcbiAgICAgIHJ1bGVzOiB7XG4gICAgICAgICdhY2Nlc3Nvci1wYWlycyc6ICdlcnJvcicsXG4gICAgICAgICdhcnJheS1jYWxsYmFjay1yZXR1cm4nOiAnZXJyb3InLFxuICAgICAgICAnY2FtZWxjYXNlJzogJ2Vycm9yJyxcbiAgICAgICAgJ2NhcGl0YWxpemVkLWNvbW1lbnRzJzogJ2Vycm9yJyxcbiAgICAgICAgJ2NvbXBsZXhpdHknOiAnZXJyb3InLFxuICAgICAgICAnY29uc2lzdGVudC10aGlzJzogJ2Vycm9yJyxcbiAgICAgICAgJ2N1cmx5JzogJ2Vycm9yJyxcbiAgICAgICAgJ2RlZmF1bHQtY2FzZSc6ICdlcnJvcicsXG4gICAgICAgICdkZWZhdWx0LWNhc2UtbGFzdCc6ICdlcnJvcicsXG4gICAgICAgICdkZWZhdWx0LXBhcmFtLWxhc3QnOiAnZXJyb3InLFxuICAgICAgICAnZXFlcWVxJzogJ2Vycm9yJyxcbiAgICAgICAgJ2Z1bmMtbmFtZS1tYXRjaGluZyc6ICdlcnJvcicsXG4gICAgICAgICdmdW5jLW5hbWVzJzogJ2Vycm9yJyxcbiAgICAgICAgJ2Z1bmMtc3R5bGUnOiBbXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICAnZGVjbGFyYXRpb24nLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFsbG93QXJyb3dGdW5jdGlvbnM6IGZhbHNlXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICAnZ3JvdXBlZC1hY2Nlc3Nvci1wYWlycyc6IFtcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgICdnZXRCZWZvcmVTZXQnXG4gICAgICAgIF0sXG4gICAgICAgICdndWFyZC1mb3ItaW4nOiAnZXJyb3InLFxuICAgICAgICAnbm8tYWxlcnQnOiAnZXJyb3InLFxuICAgICAgICAnbm8tYXJyYXktY29uc3RydWN0b3InOiAnZXJyb3InLFxuICAgICAgICAnbm8tYml0d2lzZSc6ICdlcnJvcicsXG4gICAgICAgICduby1jYWxsZXInOiAnZXJyb3InLFxuICAgICAgICAnbm8tY29uc29sZSc6IFtcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFsbG93OiBbXG4gICAgICAgICAgICAgICd3YXJuJyxcbiAgICAgICAgICAgICAgJ2Vycm9yJ1xuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgJ25vLWNvbnN0cnVjdG9yLXJldHVybic6ICdlcnJvcicsXG4gICAgICAgICduby1kaXYtcmVnZXgnOiAnZXJyb3InLFxuICAgICAgICAnbm8tZWxzZS1yZXR1cm4nOiBbXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhbGxvd0Vsc2VJZjogZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgICduby1lbXB0eS1mdW5jdGlvbic6ICdlcnJvcicsXG4gICAgICAgICduby1leHRlbmQtbmF0aXZlJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLWV4dHJhLWJpbmQnOiAnZXJyb3InLFxuICAgICAgICAnbm8tZXh0cmEtbGFiZWwnOiAnZXJyb3InLFxuICAgICAgICAnbm8taW1wbGljaXQtY29lcmNpb24nOiBbXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhbGxvdzogW1xuICAgICAgICAgICAgICAnISEnXG4gICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICAnbm8taW1wbGllZC1ldmFsJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLWlubmVyLWRlY2xhcmF0aW9ucyc6ICdlcnJvcicsXG4gICAgICAgICduby1pdGVyYXRvcic6ICdlcnJvcicsXG4gICAgICAgICduby1sYWJlbC12YXInOiAnZXJyb3InLFxuICAgICAgICAnbm8tbGFiZWxzJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLWxvbmUtYmxvY2tzJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLWxvbmVseS1pZic6ICdlcnJvcicsXG4gICAgICAgICduby1sb29wLWZ1bmMnOiAnZXJyb3InLFxuICAgICAgICAnbm8tbWFnaWMtbnVtYmVycyc6IFtcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGRldGVjdE9iamVjdHM6IHRydWUsXG4gICAgICAgICAgICBlbmZvcmNlQ29uc3Q6IHRydWUsXG4gICAgICAgICAgICBpZ25vcmU6IFtcbiAgICAgICAgICAgICAgLTEsXG4gICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgIDFcbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgICduby1tdWx0aS1hc3NpZ24nOiAnZXJyb3InLFxuICAgICAgICAnbm8tbXVsdGktc3RyJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLW5lZ2F0ZWQtY29uZGl0aW9uJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLW5lc3RlZC10ZXJuYXJ5JzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLW5ldy1mdW5jJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLW5ldy13cmFwcGVycyc6ICdlcnJvcicsXG4gICAgICAgICduby1vYmplY3QtY29uc3RydWN0b3InOiAnZXJyb3InLFxuICAgICAgICAnbm8tb2N0YWwtZXNjYXBlJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXByb21pc2UtZXhlY3V0b3ItcmV0dXJuJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXByb3RvJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXJldHVybi1hc3NpZ24nOiAnZXJyb3InLFxuICAgICAgICAnbm8tc2NyaXB0LXVybCc6ICdlcnJvcicsXG4gICAgICAgICduby1zZWxmLWNvbXBhcmUnOiAnZXJyb3InLFxuICAgICAgICAnbm8tc2VxdWVuY2VzJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXNoYWRvdyc6ICdlcnJvcicsXG4gICAgICAgICduby10ZW1wbGF0ZS1jdXJseS1pbi1zdHJpbmcnOiAnZXJyb3InLFxuICAgICAgICAnbm8tdGhyb3ctbGl0ZXJhbCc6ICdlcnJvcicsXG4gICAgICAgICduby11bm1vZGlmaWVkLWxvb3AtY29uZGl0aW9uJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXVubmVlZGVkLXRlcm5hcnknOiAnZXJyb3InLFxuICAgICAgICAnbm8tdW5yZWFjaGFibGUtbG9vcCc6ICdlcnJvcicsXG4gICAgICAgICduby11bnVzZWQtZXhwcmVzc2lvbnMnOiAnZXJyb3InLFxuICAgICAgICAnbm8tdXNlbGVzcy1hc3NpZ25tZW50JzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXVzZWxlc3MtY2FsbCc6ICdlcnJvcicsXG4gICAgICAgICduby11c2VsZXNzLWNvbXB1dGVkLWtleSc6ICdlcnJvcicsXG4gICAgICAgICduby11c2VsZXNzLWNvbmNhdCc6ICdlcnJvcicsXG4gICAgICAgICduby11c2VsZXNzLWNvbnN0cnVjdG9yJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXVzZWxlc3MtcmVuYW1lJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXVzZWxlc3MtcmV0dXJuJzogJ2Vycm9yJyxcbiAgICAgICAgJ25vLXZhcic6ICdlcnJvcicsXG4gICAgICAgICduby12b2lkJzogJ2Vycm9yJyxcbiAgICAgICAgJ29iamVjdC1zaG9ydGhhbmQnOiAnZXJyb3InLFxuICAgICAgICAnb3BlcmF0b3ItYXNzaWdubWVudCc6ICdlcnJvcicsXG4gICAgICAgICdwcmVmZXItYXJyb3ctY2FsbGJhY2snOiAnZXJyb3InLFxuICAgICAgICAncHJlZmVyLWNvbnN0JzogJ2Vycm9yJyxcbiAgICAgICAgJ3ByZWZlci1leHBvbmVudGlhdGlvbi1vcGVyYXRvcic6ICdlcnJvcicsXG4gICAgICAgICdwcmVmZXItbmFtZWQtY2FwdHVyZS1ncm91cCc6ICdlcnJvcicsXG4gICAgICAgICdwcmVmZXItbnVtZXJpYy1saXRlcmFscyc6ICdlcnJvcicsXG4gICAgICAgICdwcmVmZXItb2JqZWN0LWhhcy1vd24nOiAnZXJyb3InLFxuICAgICAgICAncHJlZmVyLW9iamVjdC1zcHJlYWQnOiAnZXJyb3InLFxuICAgICAgICAncHJlZmVyLXByb21pc2UtcmVqZWN0LWVycm9ycyc6ICdlcnJvcicsXG4gICAgICAgICdwcmVmZXItcmVnZXgtbGl0ZXJhbHMnOiAnZXJyb3InLFxuICAgICAgICAncHJlZmVyLXJlc3QtcGFyYW1zJzogJ2Vycm9yJyxcbiAgICAgICAgJ3ByZWZlci1zcHJlYWQnOiAnZXJyb3InLFxuICAgICAgICAncHJlZmVyLXRlbXBsYXRlJzogJ2Vycm9yJyxcbiAgICAgICAgJ3JhZGl4JzogJ2Vycm9yJyxcbiAgICAgICAgJ3JlcXVpcmUtYXRvbWljLXVwZGF0ZXMnOiAnZXJyb3InLFxuICAgICAgICAncmVxdWlyZS1hd2FpdCc6ICdlcnJvcicsXG4gICAgICAgICdzeW1ib2wtZGVzY3JpcHRpb24nOiAnZXJyb3InLFxuICAgICAgICAndW5pY29kZS1ib20nOiAnZXJyb3InLFxuICAgICAgICAndmFycy1vbi10b3AnOiAnZXJyb3InLFxuICAgICAgICAneW9kYSc6ICdlcnJvcidcbiAgICAgIH1cbiAgICB9XG4gIF07XG59XG5cbmZ1bmN0aW9uIGdldEVzbGludEltcG9ydFJlc29sdmVyVHlwZXNjcmlwdENvbmZpZ3MoKTogSW5maW5pdGVEZXB0aENvbmZpZ1dpdGhFeHRlbmRzW10ge1xuICByZXR1cm4gW1xuICAgIHtcbiAgICAgIHNldHRpbmdzOiB7XG4gICAgICAgICdpbXBvcnQvcmVzb2x2ZXInOiB7XG4gICAgICAgICAgdHlwZXNjcmlwdDoge1xuICAgICAgICAgICAgYWx3YXlzVHJ5VHlwZXM6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIF07XG59XG5cbmZ1bmN0aW9uIGdldEltcG9ydFhDb25maWdzKCk6IEluZmluaXRlRGVwdGhDb25maWdXaXRoRXh0ZW5kc1tdIHtcbiAgcmV0dXJuIFtcbiAgICBlc2xpbnRQbHVnaW5JbXBvcnRYRmxhdENvbmZpZ3MucmVjb21tZW5kZWQsXG4gICAgZXNsaW50UGx1Z2luSW1wb3J0WEZsYXRDb25maWdzLnR5cGVzY3JpcHQsXG4gICAgZXNsaW50UGx1Z2luSW1wb3J0WEZsYXRDb25maWdzLmVycm9ycyxcbiAgICBlc2xpbnRQbHVnaW5JbXBvcnRYRmxhdENvbmZpZ3Mud2FybmluZ3MsXG4gICAge1xuICAgICAgcnVsZXM6IHtcbiAgICAgICAgJ2ltcG9ydC14L2NvbnNpc3RlbnQtdHlwZS1zcGVjaWZpZXItc3R5bGUnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvZXh0ZW5zaW9ucyc6IFsnZXJyb3InLCAnaWdub3JlUGFja2FnZXMnXSxcbiAgICAgICAgJ2ltcG9ydC14L2ZpcnN0JzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L2ltcG9ydHMtZmlyc3QnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbmV3bGluZS1hZnRlci1pbXBvcnQnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tYWJzb2x1dGUtcGF0aCc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby1hbWQnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tYW5vbnltb3VzLWRlZmF1bHQtZXhwb3J0JzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L25vLWNvbW1vbmpzJzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L25vLWN5Y2xlJzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L25vLWRlZmF1bHQtZXhwb3J0JzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L25vLWRlcHJlY2F0ZWQnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tZHVwbGljYXRlcyc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby1keW5hbWljLXJlcXVpcmUnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tZW1wdHktbmFtZWQtYmxvY2tzJzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzJzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L25vLWltcG9ydC1tb2R1bGUtZXhwb3J0cyc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby1tdXRhYmxlLWV4cG9ydHMnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tbmFtZWQtZGVmYXVsdCc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby1uYW1lc3BhY2UnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tbm9kZWpzLW1vZHVsZXMnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tcmVsYXRpdmUtcGFja2FnZXMnOiAnZXJyb3InLFxuICAgICAgICAnaW1wb3J0LXgvbm8tcmVzdHJpY3RlZC1wYXRocyc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby1zZWxmLWltcG9ydCc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby11bmFzc2lnbmVkLWltcG9ydCc6IFtcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFsbG93OiBbXG4gICAgICAgICAgICAgICcqKi8qLmNzcycsXG4gICAgICAgICAgICAgICcqKi8qLnNhc3MnLFxuICAgICAgICAgICAgICAnKiovKi5zY3NzJ1xuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgJ2ltcG9ydC14L25vLXVudXNlZC1tb2R1bGVzJzogJ2Vycm9yJyxcbiAgICAgICAgJ2ltcG9ydC14L25vLXVzZWxlc3MtcGF0aC1zZWdtZW50cyc6ICdlcnJvcicsXG4gICAgICAgICdpbXBvcnQteC9uby13ZWJwYWNrLWxvYWRlci1zeW50YXgnOiAnZXJyb3InXG4gICAgICB9XG4gICAgfVxuICBdO1xufVxuXG5mdW5jdGlvbiBnZXRNb2R1bGVzTmV3bGluZXNDb25maWdzKCk6IEluZmluaXRlRGVwdGhDb25maWdXaXRoRXh0ZW5kc1tdIHtcbiAgcmV0dXJuIFtcbiAgICB7XG4gICAgICBwbHVnaW5zOiB7XG4gICAgICAgICdtb2R1bGVzLW5ld2xpbmVzJzogZXNsaW50UGx1Z2luTW9kdWxlc05ld2xpbmVzXG4gICAgICB9LFxuICAgICAgcnVsZXM6IHtcbiAgICAgICAgJ21vZHVsZXMtbmV3bGluZXMvZXhwb3J0LWRlY2xhcmF0aW9uLW5ld2xpbmUnOiAnZXJyb3InLFxuICAgICAgICAnbW9kdWxlcy1uZXdsaW5lcy9pbXBvcnQtZGVjbGFyYXRpb24tbmV3bGluZSc6ICdlcnJvcidcbiAgICAgIH1cbiAgICB9XG4gIF07XG59XG5cbmZ1bmN0aW9uIGdldFBlcmZlY3Rpb25pc3RDb25maWdzKCk6IEluZmluaXRlRGVwdGhDb25maWdXaXRoRXh0ZW5kc1tdIHtcbiAgcmV0dXJuIFtcbiAgICBwZXJmZWN0aW9uaXN0LmNvbmZpZ3NbJ3JlY29tbWVuZGVkLWFscGhhYmV0aWNhbCddXG4gIF07XG59XG5cbmZ1bmN0aW9uIGdldFN0eWxpc3RpY0NvbmZpZ3MoKTogSW5maW5pdGVEZXB0aENvbmZpZ1dpdGhFeHRlbmRzW10ge1xuICByZXR1cm4gW1xuICAgIHN0eWxpc3RpYy5jb25maWdzLnJlY29tbWVuZGVkLFxuICAgIHN0eWxpc3RpYy5jb25maWdzLmN1c3RvbWl6ZSh7XG4gICAgICBhcnJvd1BhcmVuczogdHJ1ZSxcbiAgICAgIGJyYWNlU3R5bGU6ICcxdGJzJyxcbiAgICAgIGNvbW1hRGFuZ2xlOiAnbmV2ZXInLFxuICAgICAgc2VtaTogdHJ1ZVxuICAgIH0pLFxuICAgIHtcbiAgICAgIHJ1bGVzOiB7XG4gICAgICAgICdAc3R5bGlzdGljL2luZGVudCc6ICdvZmYnLFxuICAgICAgICAnQHN0eWxpc3RpYy9pbmRlbnQtYmluYXJ5LW9wcyc6ICdvZmYnLFxuICAgICAgICAnQHN0eWxpc3RpYy9qc3gtb25lLWV4cHJlc3Npb24tcGVyLWxpbmUnOiAnb2ZmJyxcbiAgICAgICAgJ0BzdHlsaXN0aWMvbm8tZXh0cmEtc2VtaSc6ICdlcnJvcicsXG4gICAgICAgICdAc3R5bGlzdGljL29iamVjdC1jdXJseS1uZXdsaW5lJzogW1xuICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAge1xuICAgICAgICAgICAgRXhwb3J0RGVjbGFyYXRpb246IHtcbiAgICAgICAgICAgICAgbWluUHJvcGVydGllczogMixcbiAgICAgICAgICAgICAgbXVsdGlsaW5lOiB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgSW1wb3J0RGVjbGFyYXRpb246IHtcbiAgICAgICAgICAgICAgbWluUHJvcGVydGllczogMixcbiAgICAgICAgICAgICAgbXVsdGlsaW5lOiB0cnVlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICAnQHN0eWxpc3RpYy9vcGVyYXRvci1saW5lYnJlYWsnOiBbXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICAnYmVmb3JlJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBvdmVycmlkZXM6IHtcbiAgICAgICAgICAgICAgJz0nOiAnYWZ0ZXInXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICAnQHN0eWxpc3RpYy9xdW90ZXMnOiBbXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICAnc2luZ2xlJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhbGxvd1RlbXBsYXRlTGl0ZXJhbHM6ICduZXZlcidcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH1cbiAgICB9XG4gIF07XG59XG5cbmZ1bmN0aW9uIGdldFRzZXNsaW50Q29uZmlncygpOiBJbmZpbml0ZURlcHRoQ29uZmlnV2l0aEV4dGVuZHNbXSB7XG4gIHJldHVybiBbXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC14L25vLW5hbWVkLWFzLWRlZmF1bHQtbWVtYmVyXG4gICAgLi4udHNlc2xpbnQuY29uZmlncy5zdHJpY3RUeXBlQ2hlY2tlZC5tYXAoZXhjbHVkZUZpbGVzUHJvcGVydHkpLFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQteC9uby1uYW1lZC1hcy1kZWZhdWx0LW1lbWJlclxuICAgIC4uLnRzZXNsaW50LmNvbmZpZ3Muc3R5bGlzdGljVHlwZUNoZWNrZWQubWFwKGV4Y2x1ZGVGaWxlc1Byb3BlcnR5KSxcbiAgICB7XG4gICAgICBsYW5ndWFnZU9wdGlvbnM6IHtcbiAgICAgICAgcGFyc2VyT3B0aW9uczoge1xuICAgICAgICAgIGVjbWFGZWF0dXJlczoge1xuICAgICAgICAgICAganN4OiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwcm9qZWN0U2VydmljZTogdHJ1ZSxcbiAgICAgICAgICB0c2NvbmZpZ1Jvb3REaXI6IGdldFJvb3RGb2xkZXIoKSA/PyAnJ1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBydWxlczoge1xuICAgICAgICAnQHR5cGVzY3JpcHQtZXNsaW50L2V4cGxpY2l0LWZ1bmN0aW9uLXJldHVybi10eXBlJzogJ2Vycm9yJyxcbiAgICAgICAgJ0B0eXBlc2NyaXB0LWVzbGludC9leHBsaWNpdC1tZW1iZXItYWNjZXNzaWJpbGl0eSc6ICdlcnJvcicsXG4gICAgICAgICdAdHlwZXNjcmlwdC1lc2xpbnQvbm8taW52YWxpZC12b2lkLXR5cGUnOiBbJ2Vycm9yJywge1xuICAgICAgICAgIGFsbG93QXNUaGlzUGFyYW1ldGVyOiB0cnVlXG4gICAgICAgIH1dLFxuICAgICAgICAnQHR5cGVzY3JpcHQtZXNsaW50L25vLXRoaXMtYWxpYXMnOiBbJ2Vycm9yJywge1xuICAgICAgICAgIGFsbG93ZWROYW1lczogW1xuICAgICAgICAgICAgJ3RoYXQnXG4gICAgICAgICAgXVxuICAgICAgICB9XSxcbiAgICAgICAgJ0B0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycyc6IFtcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFyZ3M6ICdhbGwnLFxuICAgICAgICAgICAgYXJnc0lnbm9yZVBhdHRlcm46ICdeXycsXG4gICAgICAgICAgICBjYXVnaHRFcnJvcnM6ICdhbGwnLFxuICAgICAgICAgICAgY2F1Z2h0RXJyb3JzSWdub3JlUGF0dGVybjogJ15fJyxcbiAgICAgICAgICAgIGRlc3RydWN0dXJlZEFycmF5SWdub3JlUGF0dGVybjogJ15fJyxcbiAgICAgICAgICAgIGlnbm9yZVJlc3RTaWJsaW5nczogdHJ1ZSxcbiAgICAgICAgICAgIHZhcnNJZ25vcmVQYXR0ZXJuOiAnXl8nXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBzZXR0aW5nczoge1xuICAgICAgICByZWFjdDoge1xuICAgICAgICAgIHZlcnNpb246ICdkZXRlY3QnXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIF07XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFnQkEsZ0JBQW1CO0FBRW5CLDJCQUFzQjtBQUN0QixvQ0FBOEQ7QUFDOUQsNENBQXdDO0FBQ3hDLHlDQUEwQjtBQUUxQiwrQkFBcUI7QUFFckIscUNBQXdDO0FBQ3hDLGtCQUFxQjtBQUNyQixrQkFBOEI7QUFLdkIsTUFBTSwwQkFBMkMseUJBQUFBLFFBQVM7QUFBQSxFQUMvRDtBQUFBLElBQ0UsT0FBTztBQUFBLFVBQ0wsa0JBQUssdURBQXdC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Y0FDVCxLQUFLO0FBQUEsWUFDUDtBQUFBLFVBQ0Y7QUFBQSxRQUNGO0FBQUEsUUFDQSxxQkFBcUI7QUFBQSxVQUNuQjtBQUFBLFVBQ0E7QUFBQSxVQUNBO0FBQUEsWUFDRSx1QkFBdUI7QUFBQSxVQUN6QjtBQUFBLFFBQ0Y7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFDRjtBQUVBLFNBQVMscUJBQXVEO0FBQzlELFNBQU87QUFBQTtBQUFBLElBRUwsR0FBRyx5QkFBQUwsUUFBUyxRQUFRLGtCQUFrQixJQUFJLG9CQUFvQjtBQUFBO0FBQUEsSUFFOUQsR0FBRyx5QkFBQUEsUUFBUyxRQUFRLHFCQUFxQixJQUFJLG9CQUFvQjtBQUFBLElBQ2pFO0FBQUEsTUFDRSxpQkFBaUI7QUFBQSxRQUNmLGVBQWU7QUFBQSxVQUNiLGNBQWM7QUFBQSxZQUNaLEtBQUs7QUFBQSxVQUNQO0FBQUEsVUFDQSxnQkFBZ0I7QUFBQSxVQUNoQixxQkFBaUIsMkJBQWMsS0FBSztBQUFBLFFBQ3RDO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFBQSxJQUNBO0FBQUEsTUFDRSxPQUFPO0FBQUEsUUFDTCxvREFBb0Q7QUFBQSxRQUNwRCxvREFBb0Q7QUFBQSxRQUNwRCwyQ0FBMkMsQ0FBQyxTQUFTO0FBQUEsVUFDbkQsc0JBQXNCO0FBQUEsUUFDeEIsQ0FBQztBQUFBLFFBQ0Qsb0NBQW9DLENBQUMsU0FBUztBQUFBLFVBQzVDLGNBQWM7QUFBQSxZQUNaO0FBQUEsVUFDRjtBQUFBLFFBQ0YsQ0FBQztBQUFBLFFBQ0QscUNBQXFDO0FBQUEsVUFDbkM7QUFBQSxVQUNBO0FBQUEsWUFDRSxNQUFNO0FBQUEsWUFDTixtQkFBbUI7QUFBQSxZQUNuQixjQUFjO0FBQUEsWUFDZCwyQkFBMkI7QUFBQSxZQUMzQixnQ0FBZ0M7QUFBQSxZQUNoQyxvQkFBb0I7QUFBQSxZQUNwQixtQkFBbUI7QUFBQSxVQUNyQjtBQUFBLFFBQ0Y7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUFBLElBQ0E7QUFBQSxNQUNFLFVBQVU7QUFBQSxRQUNSLE9BQU87QUFBQSxVQUNMLFNBQVM7QUFBQSxRQUNYO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQ0Y7IiwKICAibmFtZXMiOiBbInRzZXNsaW50IiwgImVzbGludCIsICJlc2xpbnRQbHVnaW5JbXBvcnRYRmxhdENvbmZpZ3MiLCAiZXNsaW50UGx1Z2luTW9kdWxlc05ld2xpbmVzIiwgInBlcmZlY3Rpb25pc3QiLCAic3R5bGlzdGljIl0KfQo=