@mnaoumov/typescript-dev-toolkit 5.4.2 → 6.0.1
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/README.md +6 -0
- package/dist/lib/cjs/docs-site/docs-snippets.cjs +3 -3
- package/dist/lib/cjs/docs-site/link-check.cjs +4 -4
- package/dist/lib/cjs/docs-site/satteri-github-alerts.cjs +2 -5
- package/dist/lib/cjs/link-check-skip.cjs +2 -5
- package/dist/lib/cjs/linters/eslint-config.cjs +13 -1
- package/dist/lib/cjs/linters/eslint-rules/no-unresolved-jsdoc-link.cjs +1 -1
- package/dist/lib/cjs/linters/eslint-rules/no-used-underscore-variables.cjs +4 -7
- package/dist/lib/cjs/linters/eslint-rules/params-options-name-match.cjs +3 -6
- package/dist/lib/cjs/linters/eslint-rules/prefer-dedent.cjs +2 -5
- package/dist/lib/cjs/linters/eslint-rules/prefer-logical-operator-over-ternary.cjs +20 -2
- package/dist/lib/cjs/linters/eslint-rules/prefer-logical-operator-over-ternary.d.cts +6 -3
- package/dist/lib/cjs/linters/markdownlint.cjs +5 -3
- package/dist/lib/cjs/linters/over-exposure.cjs +2 -2
- package/dist/lib/cjs/root.cjs +1 -1
- package/dist/lib/cjs/test-runners/jest.cjs +3 -3
- package/dist/lib/cjs/upstream-sync.cjs +2 -2
- package/dist/lib/esm/docs-site/docs-snippets.mjs +3 -3
- package/dist/lib/esm/docs-site/link-check.mjs +4 -4
- package/dist/lib/esm/docs-site/satteri-github-alerts.mjs +2 -5
- package/dist/lib/esm/link-check-skip.mjs +2 -5
- package/dist/lib/esm/linters/eslint-config.mjs +13 -1
- package/dist/lib/esm/linters/eslint-rules/no-unresolved-jsdoc-link.mjs +1 -1
- package/dist/lib/esm/linters/eslint-rules/no-used-underscore-variables.mjs +4 -7
- package/dist/lib/esm/linters/eslint-rules/params-options-name-match.mjs +3 -6
- package/dist/lib/esm/linters/eslint-rules/prefer-dedent.mjs +2 -5
- package/dist/lib/esm/linters/eslint-rules/prefer-logical-operator-over-ternary.d.mts +6 -3
- package/dist/lib/esm/linters/eslint-rules/prefer-logical-operator-over-ternary.mjs +20 -2
- package/dist/lib/esm/linters/markdownlint.mjs +5 -3
- package/dist/lib/esm/linters/over-exposure.mjs +2 -2
- package/dist/lib/esm/root.mjs +1 -1
- package/dist/lib/esm/test-runners/jest.mjs +3 -3
- package/dist/lib/esm/upstream-sync.mjs +2 -2
- package/package.json +2 -2
|
@@ -265,4 +265,4 @@ export {
|
|
|
265
265
|
MESSAGE_ID,
|
|
266
266
|
noUnresolvedJsdocLink
|
|
267
267
|
};
|
|
268
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saW50ZXJzL2VzbGludC1ydWxlcy9uby11bnJlc29sdmVkLWpzZG9jLWxpbmsudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIEVTTGludCBydWxlOiBuby11bnJlc29sdmVkLWpzZG9jLWxpbmtcbiAqXG4gKiBSZXBvcnRzIGEgSlNEb2MgYGxpbmtgLCBgbGlua2NvZGVgIG9yIGBsaW5rcGxhaW5gIGlubGluZSB0YWcgd2hvc2UgdGFyZ2V0IG5vIGxvbmdlciByZXNvbHZlcyB0byBhIHN5bWJvbC5cbiAqXG4gKiBBIHJlbmFtZSBsZWF2ZXMgYHtAbGluayBPbGROYW1lfWAgYmVoaW5kIGFuZCBub3RoaW5nIGVsc2UgcmVwb3J0cyBpdDogYGpzZG9jL25vLXVuZGVmaW5lZC10eXBlc2AgZG9lcyBub3QgcmVzb2x2ZVxuICogbGluayB0YXJnZXRzLCBUU0RvYyBjaGVja3Mgb25seSB0aGUgdGFnIHN5bnRheCwgYW5kIGB0c2NgIHBhcnNlcyBKU0RvYyBsaW5rcyB3aXRob3V0IGV2ZXIgZGlhZ25vc2luZyB0aGVtLiBTbyBhIGRlYWRcbiAqIGxpbmsgc3Vydml2ZXMgdW50aWwgc29tZWJvZHkgaGFwcGVucyB0byBjbGljayBpdC5cbiAqXG4gKiBBIHRhcmdldCByZXNvbHZlcyB3aGVuIGFueSBvZiB0aGVzZSBmaW5kcyBpdCwgdHJpZWQgaW4gb3JkZXI6XG4gKlxuICogMS4gVGhlIHR5cGUgY2hlY2tlciwgYXQgdGhlIGNvbW1lbnQncyBvd24gbG9jYXRpb24sIGV4YWN0bHkgYXMgZWRpdG9yIGdvLXRvLWRlZmluaXRpb24gZG9lcyDigJQgc28gZXZlcnl0aGluZyBpblxuICogICAgc2NvcGUgdGhlcmUgcmVzb2x2ZXM6IHR5cGUgcGFyYW1ldGVycywgcGFyYW1ldGVycywgaW1wb3J0cywgYW5kIHRoZSBET00gLyBFUyBnbG9iYWxzLlxuICogMi4gQSBkZWNsYXJhdGlvbiBhbnl3aGVyZSBpbiB0aGUgc2FtZSBmaWxlIOKAlCBhIGZ1bmN0aW9uIG5lc3RlZCBpbiBhbm90aGVyLCBhIHByaXZhdGUgbWV0aG9kIOKAlCB3aGljaCBpcyBvdXQgb2ZcbiAqICAgIHNjb3BlIGF0IGEgYCpQYXJhbXNgIGludGVyZmFjZSBuYW1pbmcgaXQsIHlldCBpcyBleGFjdGx5IHdoYXQgYSByZW5hbWUgb2YgaXQgd291bGQgYnJlYWsuXG4gKiAzLiBUaGUgZXhwb3J0cyBvZiBhbnkgbW9kdWxlIGluIHRoZSBwcm9ncmFtLCBieSBuYW1lLiBBIGNvbW1lbnQgcm91dGluZWx5IG5hbWVzIGEgdHlwZSBpdHMgZmlsZSBuZXZlciBpbXBvcnRzIChhblxuICogICAgaW50ZWdyYXRpb24gdGVzdCBuYW1pbmcgdGhlIGNsYXNzIGl0IGRyaXZlcyB0aHJvdWdoIGBldmFsSW5PYnNpZGlhbmAsIGEgcmVtYXJrIG5hbWluZyBhbiBPYnNpZGlhbiBBUEkpLCBhbmQgdGhlXG4gKiAgICBBUEkgZG9jcyBnZW5lcmF0b3IgcmVzb2x2ZXMgc3VjaCBhIG5hbWUgbGlicmFyeS13aWRlIHRvby4gVGhpcyBrZWVwcyB0aGUgcnVsZSBhYm91dCBERUFEIGxpbmtzIHJhdGhlciB0aGFuXG4gKiAgICBhYm91dCBpbXBvcnRzOiBhIHJlbmFtZWQgb3IgcmVtb3ZlZCBkZWNsYXJhdGlvbiBpcyBleHBvcnRlZCBieSBubyBtb2R1bGUsIHNvIGl0IGlzIHN0aWxsIHJlcG9ydGVkLlxuICogNC4gQSBtb2R1bGUgbmFtZWQgYnkgaXRzIHNwZWNpZmllciBvciBpdHMgcGF0aCwgaW4gYm90aCBUU0RvYyBmb3JtczogYG9ic2lkaWFuI0V2ZW50cyNvbmAgKHRoZSBwYWNrYWdlIGFzIHRoZSBmaXJzdFxuICogICAgc2VnbWVudCkgYW5kIGBlcnJvciFlcnJvclRvU3RyaW5nYCAvIGBvYnNpZGlhbi9jb21wb25lbnRzL3BsdWdpbi1nYXRlLWNvbXBvbmVudCFQbHVnaW5Db25mbGljdFNldmVyaXR5Lldhcm5gXG4gKiAgICAoYSBtb2R1bGUgcGF0aCwgZW5kaW5nIHdpdGggYCFgKSDigJQgcGx1cyBUeXBlU2NyaXB0J3Mgb3duIGBpbXBvcnQoJy4vbW9kdWxlLnRzJykuTWVtYmVyYC4gQSBwYXRoIG1hdGNoZXMgYW55XG4gKiAgICBzb3VyY2UgZmlsZSBpbiB0aGUgcHJvZ3JhbSB3aG9zZSBwYXRoIGVuZHMgd2l0aCBpdC5cbiAqXG4gKiBBZnRlciB0aGUgZmlyc3Qgc2VnbWVudCwgZWFjaCBmdXJ0aGVyIGAuYCAvIGAjYCBzZWdtZW50IGlzIGxvb2tlZCB1cCBhcyBhIG1lbWJlcjogYSBuYW1lc3BhY2Ugb3IgbW9kdWxlIGV4cG9ydCwgYVxuICogc3RhdGljIG9yIGluc3RhbmNlIG1lbWJlciwgb3IgYSBwcm9wZXJ0eSBvZiB0aGUgcHJldmlvdXMgbWVtYmVyJ3MgdHlwZSDigJQgc28gYEFwcC52YXVsdC5hZGFwdGVyYCByZXNvbHZlcy5cbiAqXG4gKiBBIGxpbmsgdGhhdCBpcyBub3QgYSBjb2RlIHJlZmVyZW5jZSBpcyBza2lwcGVkOiBhIFVSTCAoYHtAbGluayBodHRwczovL2V4YW1wbGUuY29tfWApIGFuZCBhIEpTRG9jIG5hbWVwYXRoXG4gKiAoYHtAbGluayBtb2R1bGU6Zm9vfWApIGJvdGggcGFyc2UgYXMgYSBuYW1lIGZvbGxvd2VkIGJ5IHRleHQgc3RhcnRpbmcgd2l0aCBgOmAsIGFuZCBhIGxpbmsgd2l0aCBubyBuYW1lIGhhc1xuICogbm90aGluZyB0byByZXNvbHZlLlxuICovXG5pbXBvcnQgdHlwZSB7XG4gIFBhcnNlclNlcnZpY2VzV2l0aFR5cGVJbmZvcm1hdGlvbixcbiAgVFNFU1RyZWVcbn0gZnJvbSAnQHR5cGVzY3JpcHQtZXNsaW50L3V0aWxzJztcbmltcG9ydCB0eXBlIHsgUnVsZSB9IGZyb20gJ2VzbGludCc7XG5pbXBvcnQgdHlwZSB7XG4gIENsYXNzRGVjbGFyYXRpb24sXG4gIEVudGl0eU5hbWUsXG4gIEVudW1EZWNsYXJhdGlvbixcbiAgRnVuY3Rpb25EZWNsYXJhdGlvbixcbiAgR2V0QWNjZXNzb3JEZWNsYXJhdGlvbixcbiAgSWRlbnRpZmllcixcbiAgSW50ZXJmYWNlRGVjbGFyYXRpb24sXG4gIEpTRG9jTGluayxcbiAgSlNEb2NMaW5rQ29kZSxcbiAgSlNEb2NMaW5rUGxhaW4sXG4gIEpTRG9jTWVtYmVyTmFtZSxcbiAgTWV0aG9kRGVjbGFyYXRpb24sXG4gIE1ldGhvZFNpZ25hdHVyZSxcbiAgTW9kdWxlRGVjbGFyYXRpb24sXG4gIE5vZGUsXG4gIFByb2dyYW0sXG4gIFByb3BlcnR5RGVjbGFyYXRpb24sXG4gIFByb3BlcnR5U2lnbmF0dXJlLFxuICBTZXRBY2Nlc3NvckRlY2xhcmF0aW9uLFxuICBTeW1ib2wgYXMgVHNTeW1ib2wsXG4gIFR5cGVBbGlhc0RlY2xhcmF0aW9uLFxuICBUeXBlQ2hlY2tlcixcbiAgVmFyaWFibGVEZWNsYXJhdGlvblxufSBmcm9tICd0eXBlc2NyaXB0JztcblxuaW1wb3J0IHtcbiAgZXNjYXBlTGVhZGluZ1VuZGVyc2NvcmVzLFxuICBmb3JFYWNoQ2hpbGQsXG4gIGdldEpTRG9jQ29tbWVudHNBbmRUYWdzLFxuICBpc0NsYXNzRGVjbGFyYXRpb24sXG4gIGlzRW51bURlY2xhcmF0aW9uLFxuICBpc0Z1bmN0aW9uRGVjbGFyYXRpb24sXG4gIGlzR2V0QWNjZXNzb3JEZWNsYXJhdGlvbixcbiAgaXNJZGVudGlmaWVyLFxuICBpc0ludGVyZmFjZURlY2xhcmF0aW9uLFxuICBpc0pTRG9jTGluayxcbiAgaXNKU0RvY0xpbmtDb2RlLFxuICBpc0pTRG9jTGlua1BsYWluLFxuICBpc0pTRG9jTWVtYmVyTmFtZSxcbiAgaXNNZXRob2REZWNsYXJhdGlvbixcbiAgaXNNZXRob2RTaWduYXR1cmUsXG4gIGlzTW9kdWxlRGVjbGFyYXRpb24sXG4gIGlzUHJvcGVydHlEZWNsYXJhdGlvbixcbiAgaXNQcm9wZXJ0eVNpZ25hdHVyZSxcbiAgaXNTZXRBY2Nlc3NvckRlY2xhcmF0aW9uLFxuICBpc1R5cGVBbGlhc0RlY2xhcmF0aW9uLFxuICBpc1ZhcmlhYmxlRGVjbGFyYXRpb24sXG4gIHJlc29sdmVNb2R1bGVOYW1lLFxuICBTeW1ib2xGbGFncyxcbiAgc3lzXG59IGZyb20gJ3R5cGVzY3JpcHQnO1xuXG5pbXBvcnQgeyB0b1RTRVNUcmVlTm9kZSB9IGZyb20gJy4vdHMtZXN0cmVlLW5vZGUudHMnO1xuXG4vKipcbiAqIE1lc3NhZ2UgSUQgcmVwb3J0ZWQgd2hlbiBhIEpTRG9jIGxpbmsgdGFyZ2V0IGRvZXMgbm90IHJlc29sdmUgdG8gYSBzeW1ib2wuXG4gKi9cbmV4cG9ydCBjb25zdCBNRVNTQUdFX0lEID0gJ25vVW5yZXNvbHZlZEpzZG9jTGluayc7XG5cbmludGVyZmFjZSBJc1Jlc29sdmVkTmFtZVBhcmFtcyB7XG4gIHJlYWRvbmx5IGNoZWNrZXI6IFR5cGVDaGVja2VyO1xuICByZWFkb25seSBjb250YWluaW5nRmlsZU5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgbG9jYWxEZWNsYXJhdGlvbk5hbWVzQnlOYW1lOiBSZWFkb25seU1hcDxzdHJpbmcsIHJlYWRvbmx5IElkZW50aWZpZXJbXT47XG4gIHJlYWRvbmx5IG5hbWU6IEVudGl0eU5hbWUgfCBKU0RvY01lbWJlck5hbWU7XG4gIHJlYWRvbmx5IHByb2dyYW06IFByb2dyYW07XG59XG5cbnR5cGUgSlNEb2NMaW5rTGlrZSA9IEpTRG9jTGluayB8IEpTRG9jTGlua0NvZGUgfCBKU0RvY0xpbmtQbGFpbjtcblxudHlwZSBMb2NhbERlY2xhcmF0aW9uID1cbiAgfCBDbGFzc0RlY2xhcmF0aW9uXG4gIHwgRW51bURlY2xhcmF0aW9uXG4gIHwgRnVuY3Rpb25EZWNsYXJhdGlvblxuICB8IEdldEFjY2Vzc29yRGVjbGFyYXRpb25cbiAgfCBJbnRlcmZhY2VEZWNsYXJhdGlvblxuICB8IE1ldGhvZERlY2xhcmF0aW9uXG4gIHwgTWV0aG9kU2lnbmF0dXJlXG4gIHwgTW9kdWxlRGVjbGFyYXRpb25cbiAgfCBQcm9wZXJ0eURlY2xhcmF0aW9uXG4gIHwgUHJvcGVydHlTaWduYXR1cmVcbiAgfCBTZXRBY2Nlc3NvckRlY2xhcmF0aW9uXG4gIHwgVHlwZUFsaWFzRGVjbGFyYXRpb25cbiAgfCBWYXJpYWJsZURlY2xhcmF0aW9uO1xuXG50eXBlIE1vZHVsZVBhdGhNYXRjaEdyb3VwcyA9IFJlYWRvbmx5PFJlY29yZDwnbWVtYmVyUGF0aCcgfCAnbW9kdWxlUGF0aCcsIHN0cmluZz4+O1xuXG5pbnRlcmZhY2UgUHJvZ3JhbUluZGV4IHtcbiAgcmVhZG9ubHkgZXhwb3J0c0J5TmFtZTogTWFwPHN0cmluZywgVHNTeW1ib2xbXT47XG4gIHJlYWRvbmx5IG1vZHVsZXNCeVBhdGg6IE1hcDxzdHJpbmcsIFRzU3ltYm9sPjtcbn1cblxuY29uc3QgTU9EVUxFX1BBVEhfUkVHX0VYUCA9IC9eKD88bW9kdWxlUGF0aD5bXlxccyF8fV0qKSEoPzxtZW1iZXJQYXRoPltcXHckLiNdKykvO1xuY29uc3QgSU1QT1JUX1RZUEVfUkVHX0VYUCA9IC9eaW1wb3J0XFwoXFxzKig/PHF1b3RlPlsnXCJdKSg/PG1vZHVsZVBhdGg+W14nXCJdKylcXGs8cXVvdGU+XFxzKlxcKVxcLig/PG1lbWJlclBhdGg+W1xcdyQuI10rKS87XG5jb25zdCBSRUxBVElWRV9QQVRIX1BSRUZJWF9SRUdfRVhQID0gL14oPzpcXC5cXC4/XFwvKSsvO1xuY29uc3QgTUVNQkVSX1NFUEFSQVRPUl9SRUdfRVhQID0gL1suI10vO1xuY29uc3QgU09VUkNFX0ZJTEVfRVhURU5TSU9OX1JFR19FWFAgPSAvKD86XFwuZCk/XFwuW2NtXT90c3g/JC87XG5jb25zdCBJTkRFWF9TVUZGSVggPSAnL2luZGV4JztcblxuY29uc3QgcHJvZ3JhbUluZGV4Q2FjaGUgPSBuZXcgV2Vha01hcDxQcm9ncmFtLCBQcm9ncmFtSW5kZXg+KCk7XG5cbi8qKlxuICogVGhlIEVTTGludCBydWxlIHRoYXQgcmVwb3J0cyBKU0RvYyBsaW5rcyB3aG9zZSB0YXJnZXQgZG9lcyBub3QgcmVzb2x2ZS5cbiAqL1xuZXhwb3J0IGNvbnN0IG5vVW5yZXNvbHZlZEpzZG9jTGluazogUnVsZS5SdWxlTW9kdWxlID0ge1xuICBjcmVhdGUoY29udGV4dCkge1xuICAgIGNvbnN0IHNlcnZpY2VzID0gY29udGV4dC5zb3VyY2VDb2RlLnBhcnNlclNlcnZpY2VzIGFzIFBhcnNlclNlcnZpY2VzV2l0aFR5cGVJbmZvcm1hdGlvbjtcblxuICAgIHJldHVybiB7XG4gICAgICBQcm9ncmFtKG5vZGUpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcHJvZ3JhbSA9IHNlcnZpY2VzLnByb2dyYW07XG4gICAgICAgIGNvbnN0IGNoZWNrZXIgPSBwcm9ncmFtLmdldFR5cGVDaGVja2VyKCk7XG4gICAgICAgIGNvbnN0IHRzU291cmNlRmlsZSA9IHNlcnZpY2VzLmVzVHJlZU5vZGVUb1RTTm9kZU1hcC5nZXQodG9UU0VTVHJlZU5vZGUobm9kZSkgYXMgVFNFU1RyZWUuUHJvZ3JhbSk7XG5cbiAgICAgICAgLypcbiAgICAgICAgICogVGhlIHNhbWUgbGluayBpcyByZWFjaGFibGUgbW9yZSB0aGFuIG9uY2U6IGEgcGFyYW1ldGVyIHJldHVybnMgaXRzIG93biBgQHBhcmFtYCB0YWcsIHdoaWNoIGl0cyBmdW5jdGlvbidzXG4gICAgICAgICAqIEpTRG9jIGJsb2NrIGFsc28gY29udGFpbnMuIFNvIGRlZHVwbGljYXRlIG9uIHRoZSBsaW5rIGl0c2VsZiByYXRoZXIgdGhhbiBvbiB0aGUgSlNEb2Mgbm9kZS5cbiAgICAgICAgICovXG4gICAgICAgIGNvbnN0IGxpbmtzID0gbmV3IFNldDxKU0RvY0xpbmtMaWtlPigpO1xuXG4gICAgICAgIC8qXG4gICAgICAgICAqIEEgbGluayBtYXkgbmFtZSBhIGRlY2xhcmF0aW9uIGZ1cnRoZXIgZG93biB0aGUgZmlsZSwgc28gdGhlIHdob2xlIGZpbGUgaXMgd2Fsa2VkIGJlZm9yZSBhbnkgbGluayBpc1xuICAgICAgICAgKiByZXNvbHZlZC5cbiAgICAgICAgICovXG4gICAgICAgIGNvbnN0IGxvY2FsRGVjbGFyYXRpb25OYW1lc0J5TmFtZSA9IG5ldyBNYXA8c3RyaW5nLCBJZGVudGlmaWVyW10+KCk7XG5cbiAgICAgICAgZnVuY3Rpb24gdmlzaXRKc0RvY05vZGUoanNEb2NOb2RlOiBOb2RlKTogdm9pZCB7XG4gICAgICAgICAgaWYgKGlzSlNEb2NMaW5rTGlrZShqc0RvY05vZGUpKSB7XG4gICAgICAgICAgICBsaW5rcy5hZGQoanNEb2NOb2RlKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgZm9yRWFjaENoaWxkKGpzRG9jTm9kZSwgdmlzaXRKc0RvY05vZGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gdmlzaXROb2RlKHRzTm9kZTogTm9kZSk6IHZvaWQge1xuICAgICAgICAgIGNvbGxlY3RMb2NhbERlY2xhcmF0aW9uTmFtZSh0c05vZGUsIGxvY2FsRGVjbGFyYXRpb25OYW1lc0J5TmFtZSk7XG4gICAgICAgICAgZm9yIChjb25zdCBqc0RvY05vZGUgb2YgZ2V0SlNEb2NDb21tZW50c0FuZFRhZ3ModHNOb2RlKSkge1xuICAgICAgICAgICAgdmlzaXRKc0RvY05vZGUoanNEb2NOb2RlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZm9yRWFjaENoaWxkKHRzTm9kZSwgdmlzaXROb2RlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIHJlcG9ydElmVW5yZXNvbHZlZChsaW5rOiBKU0RvY0xpbmtMaWtlKTogdm9pZCB7XG4gICAgICAgICAgaWYgKCFsaW5rLm5hbWUgfHwgbGluay50ZXh0LnN0YXJ0c1dpdGgoJzonKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IG5hbWVUZXh0ID0gbGluay5uYW1lLmdldFRleHQoKTtcbiAgICAgICAgICBjb25zdCBmdWxsVGFyZ2V0ID0gbmFtZVRleHQgKyBsaW5rLnRleHQ7XG4gICAgICAgICAgY29uc3QgbW9kdWxlTWF0Y2ggPSBJTVBPUlRfVFlQRV9SRUdfRVhQLmV4ZWMoZnVsbFRhcmdldCkgPz8gTU9EVUxFX1BBVEhfUkVHX0VYUC5leGVjKGZ1bGxUYXJnZXQpO1xuICAgICAgICAgIGxldCByZXBvcnRlZE5hbWUgPSBuYW1lVGV4dDtcbiAgICAgICAgICBsZXQgaXNSZXNvbHZlZDogYm9vbGVhbjtcblxuICAgICAgICAgIGlmIChtb2R1bGVNYXRjaD8uZ3JvdXBzKSB7XG4gICAgICAgICAgICBjb25zdCB7IG1lbWJlclBhdGgsIG1vZHVsZVBhdGggfSA9IG1vZHVsZU1hdGNoLmdyb3VwcyBhcyBNb2R1bGVQYXRoTWF0Y2hHcm91cHM7XG4gICAgICAgICAgICByZXBvcnRlZE5hbWUgPSBtb2R1bGVNYXRjaFswXTtcbiAgICAgICAgICAgIGNvbnN0IG1vZHVsZVN5bWJvbCA9IGZpbmRNb2R1bGUocHJvZ3JhbSwgY2hlY2tlciwgbW9kdWxlUGF0aCwgdHNTb3VyY2VGaWxlLmZpbGVOYW1lKTtcbiAgICAgICAgICAgIGlzUmVzb2x2ZWQgPSAhIXJlc29sdmVNZW1iZXJQYXRoKGNoZWNrZXIsIG1vZHVsZVN5bWJvbCwgbWVtYmVyUGF0aC5zcGxpdChNRU1CRVJfU0VQQVJBVE9SX1JFR19FWFApKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaXNSZXNvbHZlZCA9IGlzUmVzb2x2ZWROYW1lKHtcbiAgICAgICAgICAgICAgY2hlY2tlcixcbiAgICAgICAgICAgICAgY29udGFpbmluZ0ZpbGVOYW1lOiB0c1NvdXJjZUZpbGUuZmlsZU5hbWUsXG4gICAgICAgICAgICAgIGxvY2FsRGVjbGFyYXRpb25OYW1lc0J5TmFtZSxcbiAgICAgICAgICAgICAgbmFtZTogbGluay5uYW1lLFxuICAgICAgICAgICAgICBwcm9ncmFtXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoaXNSZXNvbHZlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgbmFtZTogcmVwb3J0ZWROYW1lXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbG9jOiB7XG4gICAgICAgICAgICAgIGVuZDogY29udGV4dC5zb3VyY2VDb2RlLmdldExvY0Zyb21JbmRleChsaW5rLm5hbWUuZ2V0RW5kKCkpLFxuICAgICAgICAgICAgICBzdGFydDogY29udGV4dC5zb3VyY2VDb2RlLmdldExvY0Zyb21JbmRleChsaW5rLm5hbWUuZ2V0U3RhcnQoKSlcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBtZXNzYWdlSWQ6IE1FU1NBR0VfSURcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZpc2l0Tm9kZSh0c1NvdXJjZUZpbGUpO1xuICAgICAgICBmb3IgKGNvbnN0IGxpbmsgb2YgbGlua3MpIHtcbiAgICAgICAgICByZXBvcnRJZlVucmVzb2x2ZWQobGluayk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9LFxuICBtZXRhOiB7XG4gICAgZG9jczoge1xuICAgICAgZGVzY3JpcHRpb246ICdEaXNhbGxvdyBKU0RvYyBsaW5rIHRhZ3Mgd2hvc2UgdGFyZ2V0IGRvZXMgbm90IHJlc29sdmUgdG8gYSBzeW1ib2wnXG4gICAgfSxcbiAgICBtZXNzYWdlczoge1xuICAgICAgW01FU1NBR0VfSURdOiAnSlNEb2MgbGluayB0YXJnZXQgYHt7bmFtZX19YCBkb2VzIG5vdCByZXNvbHZlLiBXYXMgaXQgcmVuYW1lZCBvciByZW1vdmVkPydcbiAgICB9LFxuICAgIHNjaGVtYTogW10sXG4gICAgdHlwZTogJ3Byb2JsZW0nXG4gIH1cbn07XG5cbmZ1bmN0aW9uIGNvbGxlY3RMb2NhbERlY2xhcmF0aW9uTmFtZShub2RlOiBOb2RlLCBsb2NhbERlY2xhcmF0aW9uTmFtZXNCeU5hbWU6IE1hcDxzdHJpbmcsIElkZW50aWZpZXJbXT4pOiB2b2lkIHtcbiAgaWYgKCFpc0xvY2FsRGVjbGFyYXRpb24obm9kZSkgfHwgIW5vZGUubmFtZSB8fCAhaXNJZGVudGlmaWVyKG5vZGUubmFtZSkpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc3QgbmFtZXMgPSBsb2NhbERlY2xhcmF0aW9uTmFtZXNCeU5hbWUuZ2V0KG5vZGUubmFtZS50ZXh0KSA/PyBbXTtcbiAgbmFtZXMucHVzaChub2RlLm5hbWUpO1xuICBsb2NhbERlY2xhcmF0aW9uTmFtZXNCeU5hbWUuc2V0KG5vZGUubmFtZS50ZXh0LCBuYW1lcyk7XG59XG5cbmZ1bmN0aW9uIGZpbmRNb2R1bGUocHJvZ3JhbTogUHJvZ3JhbSwgY2hlY2tlcjogVHlwZUNoZWNrZXIsIHNwZWNpZmllcjogc3RyaW5nLCBjb250YWluaW5nRmlsZU5hbWU6IHN0cmluZyk6IFRzU3ltYm9sIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgYW1iaWVudE1vZHVsZSA9IGdldFByb2dyYW1JbmRleChwcm9ncmFtLCBjaGVja2VyKS5tb2R1bGVzQnlQYXRoLmdldChzcGVjaWZpZXIpO1xuICBpZiAoYW1iaWVudE1vZHVsZSkge1xuICAgIHJldHVybiBhbWJpZW50TW9kdWxlO1xuICB9XG5cbiAgY29uc3QgcmVzb2x2ZWRGaWxlTmFtZSA9IHJlc29sdmVNb2R1bGVOYW1lKHNwZWNpZmllciwgY29udGFpbmluZ0ZpbGVOYW1lLCBwcm9ncmFtLmdldENvbXBpbGVyT3B0aW9ucygpLCBzeXMpLnJlc29sdmVkTW9kdWxlPy5yZXNvbHZlZEZpbGVOYW1lO1xuICBjb25zdCByZXNvbHZlZFNvdXJjZUZpbGUgPSByZXNvbHZlZEZpbGVOYW1lID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBwcm9ncmFtLmdldFNvdXJjZUZpbGUocmVzb2x2ZWRGaWxlTmFtZSk7XG4gIGNvbnN0IHJlc29sdmVkTW9kdWxlID0gcmVzb2x2ZWRTb3VyY2VGaWxlICYmIGNoZWNrZXIuZ2V0U3ltYm9sQXRMb2NhdGlvbihyZXNvbHZlZFNvdXJjZUZpbGUpO1xuICByZXR1cm4gcmVzb2x2ZWRNb2R1bGUgPz8gZmluZE1vZHVsZUJ5UGF0aFN1ZmZpeChwcm9ncmFtLCBjaGVja2VyLCBzcGVjaWZpZXIpO1xufVxuXG5mdW5jdGlvbiBmaW5kTW9kdWxlQnlQYXRoU3VmZml4KHByb2dyYW06IFByb2dyYW0sIGNoZWNrZXI6IFR5cGVDaGVja2VyLCBtb2R1bGVQYXRoOiBzdHJpbmcpOiBUc1N5bWJvbCB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IG5vcm1hbGl6ZWRQYXRoID0gbW9kdWxlUGF0aC5yZXBsYWNlKFJFTEFUSVZFX1BBVEhfUFJFRklYX1JFR19FWFAsICcnKS5yZXBsYWNlKFNPVVJDRV9GSUxFX0VYVEVOU0lPTl9SRUdfRVhQLCAnJyk7XG4gIGNvbnN0IHN1ZmZpeGVzID0gW2AvJHtub3JtYWxpemVkUGF0aH1gLCBgLyR7bm9ybWFsaXplZFBhdGh9JHtJTkRFWF9TVUZGSVh9YF07XG4gIGZvciAoY29uc3Qgc291cmNlRmlsZSBvZiBwcm9ncmFtLmdldFNvdXJjZUZpbGVzKCkpIHtcbiAgICBjb25zdCBwYXRoV2l0aG91dEV4dGVuc2lvbiA9IHNvdXJjZUZpbGUuZmlsZU5hbWUucmVwbGFjZShTT1VSQ0VfRklMRV9FWFRFTlNJT05fUkVHX0VYUCwgJycpO1xuICAgIGlmIChzdWZmaXhlcy5ldmVyeSgoc3VmZml4KSA9PiAhcGF0aFdpdGhvdXRFeHRlbnNpb24uZW5kc1dpdGgoc3VmZml4KSkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjb25zdCBtb2R1bGVTeW1ib2wgPSBjaGVja2VyLmdldFN5bWJvbEF0TG9jYXRpb24oc291cmNlRmlsZSk7XG4gICAgaWYgKG1vZHVsZVN5bWJvbCkge1xuICAgICAgcmV0dXJuIG1vZHVsZVN5bWJvbDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gZmxhdHRlbk5hbWUobmFtZTogRW50aXR5TmFtZSB8IEpTRG9jTWVtYmVyTmFtZSk6IHN0cmluZ1tdIHtcbiAgcmV0dXJuIGlzSWRlbnRpZmllcihuYW1lKSA/IFtuYW1lLnRleHRdIDogWy4uLmZsYXR0ZW5OYW1lKG5hbWUubGVmdCksIG5hbWUucmlnaHQudGV4dF07XG59XG5cbmZ1bmN0aW9uIGdldE1lbWJlcihjaGVja2VyOiBUeXBlQ2hlY2tlciwgJHN5bWJvbDogVHNTeW1ib2wsIG1lbWJlck5hbWU6IHN0cmluZyk6IFRzU3ltYm9sIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgZXNjYXBlZE5hbWUgPSBlc2NhcGVMZWFkaW5nVW5kZXJzY29yZXMobWVtYmVyTmFtZSk7XG4gIGNvbnN0IHRhcmdldCA9IHJlc29sdmVBbGlhcyhjaGVja2VyLCAkc3ltYm9sKTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWJpdHdpc2UgLS0gQml0d2lzZSBmbGFnIHRlc3QgaXMgaWRpb21hdGljIGZvciB0aGUgVHlwZVNjcmlwdCBjb21waWxlciBBUEkuXG4gIGNvbnN0IG1vZHVsZUV4cG9ydCA9ICh0YXJnZXQuZmxhZ3MgJiBTeW1ib2xGbGFncy5Nb2R1bGUpID09PSAwID8gdW5kZWZpbmVkIDogY2hlY2tlci50cnlHZXRNZW1iZXJJbk1vZHVsZUV4cG9ydHMobWVtYmVyTmFtZSwgdGFyZ2V0KTtcbiAgcmV0dXJuIG1vZHVsZUV4cG9ydFxuICAgID8/IHRhcmdldC5leHBvcnRzPy5nZXQoZXNjYXBlZE5hbWUpXG4gICAgPz8gdGFyZ2V0Lm1lbWJlcnM/LmdldChlc2NhcGVkTmFtZSlcbiAgICA/PyBjaGVja2VyLmdldFByb3BlcnR5T2ZUeXBlKGNoZWNrZXIuZ2V0RGVjbGFyZWRUeXBlT2ZTeW1ib2wodGFyZ2V0KSwgbWVtYmVyTmFtZSlcbiAgICA/PyBjaGVja2VyLmdldFByb3BlcnR5T2ZUeXBlKGNoZWNrZXIuZ2V0VHlwZU9mU3ltYm9sKHRhcmdldCksIG1lbWJlck5hbWUpO1xufVxuXG5mdW5jdGlvbiBnZXRQcm9ncmFtSW5kZXgocHJvZ3JhbTogUHJvZ3JhbSwgY2hlY2tlcjogVHlwZUNoZWNrZXIpOiBQcm9ncmFtSW5kZXgge1xuICBsZXQgaW5kZXggPSBwcm9ncmFtSW5kZXhDYWNoZS5nZXQocHJvZ3JhbSk7XG4gIGlmIChpbmRleCkge1xuICAgIHJldHVybiBpbmRleDtcbiAgfVxuXG4gIGluZGV4ID0ge1xuICAgIGV4cG9ydHNCeU5hbWU6IG5ldyBNYXA8c3RyaW5nLCBUc1N5bWJvbFtdPigpLFxuICAgIG1vZHVsZXNCeVBhdGg6IG5ldyBNYXA8c3RyaW5nLCBUc1N5bWJvbD4oKVxuICB9O1xuXG4gIGNvbnN0IG1vZHVsZVN5bWJvbHM6IFRzU3ltYm9sW10gPSBbXTtcbiAgZm9yIChjb25zdCBhbWJpZW50TW9kdWxlIG9mIGNoZWNrZXIuZ2V0QW1iaWVudE1vZHVsZXMoKSkge1xuICAgIGluZGV4Lm1vZHVsZXNCeVBhdGguc2V0KGFtYmllbnRNb2R1bGUubmFtZS5yZXBsYWNlQWxsKCdcIicsICcnKSwgYW1iaWVudE1vZHVsZSk7XG4gICAgbW9kdWxlU3ltYm9scy5wdXNoKGFtYmllbnRNb2R1bGUpO1xuICB9XG4gIGZvciAoY29uc3Qgc291cmNlRmlsZSBvZiBwcm9ncmFtLmdldFNvdXJjZUZpbGVzKCkpIHtcbiAgICBjb25zdCBtb2R1bGVTeW1ib2wgPSBjaGVja2VyLmdldFN5bWJvbEF0TG9jYXRpb24oc291cmNlRmlsZSk7XG4gICAgaWYgKG1vZHVsZVN5bWJvbCkge1xuICAgICAgbW9kdWxlU3ltYm9scy5wdXNoKG1vZHVsZVN5bWJvbCk7XG4gICAgfVxuICB9XG5cbiAgZm9yIChjb25zdCBtb2R1bGVTeW1ib2wgb2YgbW9kdWxlU3ltYm9scykge1xuICAgIGZvciAoY29uc3QgZXhwb3J0U3ltYm9sIG9mIGNoZWNrZXIuZ2V0RXhwb3J0c09mTW9kdWxlKG1vZHVsZVN5bWJvbCkpIHtcbiAgICAgIGNvbnN0IHN5bWJvbHMgPSBpbmRleC5leHBvcnRzQnlOYW1lLmdldChleHBvcnRTeW1ib2wubmFtZSkgPz8gW107XG4gICAgICBzeW1ib2xzLnB1c2goZXhwb3J0U3ltYm9sKTtcbiAgICAgIGluZGV4LmV4cG9ydHNCeU5hbWUuc2V0KGV4cG9ydFN5bWJvbC5uYW1lLCBzeW1ib2xzKTtcbiAgICB9XG4gIH1cblxuICBwcm9ncmFtSW5kZXhDYWNoZS5zZXQocHJvZ3JhbSwgaW5kZXgpO1xuICByZXR1cm4gaW5kZXg7XG59XG5cbmZ1bmN0aW9uIGlzSlNEb2NMaW5rTGlrZShub2RlOiBOb2RlKTogbm9kZSBpcyBKU0RvY0xpbmtMaWtlIHtcbiAgcmV0dXJuIGlzSlNEb2NMaW5rKG5vZGUpIHx8IGlzSlNEb2NMaW5rQ29kZShub2RlKSB8fCBpc0pTRG9jTGlua1BsYWluKG5vZGUpO1xufVxuXG5mdW5jdGlvbiBpc0xvY2FsRGVjbGFyYXRpb24obm9kZTogTm9kZSk6IG5vZGUgaXMgTG9jYWxEZWNsYXJhdGlvbiB7XG4gIHJldHVybiBpc0NsYXNzRGVjbGFyYXRpb24obm9kZSlcbiAgICB8fCBpc0VudW1EZWNsYXJhdGlvbihub2RlKVxuICAgIHx8IGlzRnVuY3Rpb25EZWNsYXJhdGlvbihub2RlKVxuICAgIHx8IGlzR2V0QWNjZXNzb3JEZWNsYXJhdGlvbihub2RlKVxuICAgIHx8IGlzSW50ZXJmYWNlRGVjbGFyYXRpb24obm9kZSlcbiAgICB8fCBpc01ldGhvZERlY2xhcmF0aW9uKG5vZGUpXG4gICAgfHwgaXNNZXRob2RTaWduYXR1cmUobm9kZSlcbiAgICB8fCBpc01vZHVsZURlY2xhcmF0aW9uKG5vZGUpXG4gICAgfHwgaXNQcm9wZXJ0eURlY2xhcmF0aW9uKG5vZGUpXG4gICAgfHwgaXNQcm9wZXJ0eVNpZ25hdHVyZShub2RlKVxuICAgIHx8IGlzU2V0QWNjZXNzb3JEZWNsYXJhdGlvbihub2RlKVxuICAgIHx8IGlzVHlwZUFsaWFzRGVjbGFyYXRpb24obm9kZSlcbiAgICB8fCBpc1ZhcmlhYmxlRGVjbGFyYXRpb24obm9kZSk7XG59XG5cbmZ1bmN0aW9uIGlzUmVzb2x2ZWROYW1lKHBhcmFtczogSXNSZXNvbHZlZE5hbWVQYXJhbXMpOiBib29sZWFuIHtcbiAgY29uc3Qge1xuICAgIGNoZWNrZXIsXG4gICAgY29udGFpbmluZ0ZpbGVOYW1lLFxuICAgIGxvY2FsRGVjbGFyYXRpb25OYW1lc0J5TmFtZSxcbiAgICBuYW1lLFxuICAgIHByb2dyYW1cbiAgfSA9IHBhcmFtcztcblxuICBpZiAoY2hlY2tlci5nZXRTeW1ib2xBdExvY2F0aW9uKG5hbWUpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvLyBgRm9vI2JhcmAgaXMgYSBgSlNEb2NNZW1iZXJOYW1lYCwgd2hpY2ggdGhlIGNoZWNrZXIgcmVzb2x2ZXMgb25seSB0aHJvdWdoIGl0cyByaWdodC1oYW5kIG1lbWJlci5cbiAgaWYgKGlzSlNEb2NNZW1iZXJOYW1lKG5hbWUpICYmIGNoZWNrZXIuZ2V0U3ltYm9sQXRMb2NhdGlvbihuYW1lLnJpZ2h0KSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgY29uc3QgW3Jvb3ROYW1lID0gJycsIC4uLm1lbWJlck5hbWVzXSA9IGZsYXR0ZW5OYW1lKG5hbWUpO1xuICBjb25zdCBpbmRleCA9IGdldFByb2dyYW1JbmRleChwcm9ncmFtLCBjaGVja2VyKTtcbiAgY29uc3QgbG9jYWxSb290cyA9IChsb2NhbERlY2xhcmF0aW9uTmFtZXNCeU5hbWUuZ2V0KHJvb3ROYW1lKSA/PyBbXSkubWFwKChkZWNsYXJhdGlvbk5hbWUpID0+IGNoZWNrZXIuZ2V0U3ltYm9sQXRMb2NhdGlvbihkZWNsYXJhdGlvbk5hbWUpKTtcbiAgY29uc3Qgcm9vdHMgPSBbLi4ubG9jYWxSb290cywgLi4uaW5kZXguZXhwb3J0c0J5TmFtZS5nZXQocm9vdE5hbWUpID8/IFtdLCBmaW5kTW9kdWxlKHByb2dyYW0sIGNoZWNrZXIsIHJvb3ROYW1lLCBjb250YWluaW5nRmlsZU5hbWUpXTtcblxuICByZXR1cm4gcm9vdHMuc29tZSgocm9vdCkgPT4gISFyZXNvbHZlTWVtYmVyUGF0aChjaGVja2VyLCByb290LCBtZW1iZXJOYW1lcykpO1xufVxuXG5mdW5jdGlvbiByZXNvbHZlQWxpYXMoY2hlY2tlcjogVHlwZUNoZWNrZXIsICRzeW1ib2w6IFRzU3ltYm9sKTogVHNTeW1ib2wge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tYml0d2lzZSAtLSBCaXR3aXNlIGZsYWcgdGVzdCBpcyBpZGlvbWF0aWMgZm9yIHRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyIEFQSS5cbiAgcmV0dXJuICgkc3ltYm9sLmZsYWdzICYgU3ltYm9sRmxhZ3MuQWxpYXMpID09PSAwID8gJHN5bWJvbCA6IGNoZWNrZXIuZ2V0QWxpYXNlZFN5bWJvbCgkc3ltYm9sKTtcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZU1lbWJlclBhdGgoY2hlY2tlcjogVHlwZUNoZWNrZXIsIHJvb3Q6IFRzU3ltYm9sIHwgdW5kZWZpbmVkLCBtZW1iZXJOYW1lczogcmVhZG9ubHkgc3RyaW5nW10pOiBUc1N5bWJvbCB8IHVuZGVmaW5lZCB7XG4gIGxldCBjdXJyZW50OiBUc1N5bWJvbCB8IHVuZGVmaW5lZCA9IHJvb3Q7XG4gIGZvciAoY29uc3QgbWVtYmVyTmFtZSBvZiBtZW1iZXJOYW1lcykge1xuICAgIGlmICghY3VycmVudCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgY3VycmVudCA9IGdldE1lbWJlcihjaGVja2VyLCBjdXJyZW50LCBtZW1iZXJOYW1lKTtcbiAgfVxuICByZXR1cm4gY3VycmVudDtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFnRUE7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBRVAsU0FBUyxzQkFBc0I7QUFLeEIsTUFBTSxhQUFhO0FBa0MxQixNQUFNLHNCQUFzQjtBQUM1QixNQUFNLHNCQUFzQjtBQUM1QixN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
|
|
268
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saW50ZXJzL2VzbGludC1ydWxlcy9uby11bnJlc29sdmVkLWpzZG9jLWxpbmsudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIEVTTGludCBydWxlOiBuby11bnJlc29sdmVkLWpzZG9jLWxpbmtcbiAqXG4gKiBSZXBvcnRzIGEgSlNEb2MgYGxpbmtgLCBgbGlua2NvZGVgIG9yIGBsaW5rcGxhaW5gIGlubGluZSB0YWcgd2hvc2UgdGFyZ2V0IG5vIGxvbmdlciByZXNvbHZlcyB0byBhIHN5bWJvbC5cbiAqXG4gKiBBIHJlbmFtZSBsZWF2ZXMgYHtAbGluayBPbGROYW1lfWAgYmVoaW5kIGFuZCBub3RoaW5nIGVsc2UgcmVwb3J0cyBpdDogYGpzZG9jL25vLXVuZGVmaW5lZC10eXBlc2AgZG9lcyBub3QgcmVzb2x2ZVxuICogbGluayB0YXJnZXRzLCBUU0RvYyBjaGVja3Mgb25seSB0aGUgdGFnIHN5bnRheCwgYW5kIGB0c2NgIHBhcnNlcyBKU0RvYyBsaW5rcyB3aXRob3V0IGV2ZXIgZGlhZ25vc2luZyB0aGVtLiBTbyBhIGRlYWRcbiAqIGxpbmsgc3Vydml2ZXMgdW50aWwgc29tZWJvZHkgaGFwcGVucyB0byBjbGljayBpdC5cbiAqXG4gKiBBIHRhcmdldCByZXNvbHZlcyB3aGVuIGFueSBvZiB0aGVzZSBmaW5kcyBpdCwgdHJpZWQgaW4gb3JkZXI6XG4gKlxuICogMS4gVGhlIHR5cGUgY2hlY2tlciwgYXQgdGhlIGNvbW1lbnQncyBvd24gbG9jYXRpb24sIGV4YWN0bHkgYXMgZWRpdG9yIGdvLXRvLWRlZmluaXRpb24gZG9lcyDigJQgc28gZXZlcnl0aGluZyBpblxuICogICAgc2NvcGUgdGhlcmUgcmVzb2x2ZXM6IHR5cGUgcGFyYW1ldGVycywgcGFyYW1ldGVycywgaW1wb3J0cywgYW5kIHRoZSBET00gLyBFUyBnbG9iYWxzLlxuICogMi4gQSBkZWNsYXJhdGlvbiBhbnl3aGVyZSBpbiB0aGUgc2FtZSBmaWxlIOKAlCBhIGZ1bmN0aW9uIG5lc3RlZCBpbiBhbm90aGVyLCBhIHByaXZhdGUgbWV0aG9kIOKAlCB3aGljaCBpcyBvdXQgb2ZcbiAqICAgIHNjb3BlIGF0IGEgYCpQYXJhbXNgIGludGVyZmFjZSBuYW1pbmcgaXQsIHlldCBpcyBleGFjdGx5IHdoYXQgYSByZW5hbWUgb2YgaXQgd291bGQgYnJlYWsuXG4gKiAzLiBUaGUgZXhwb3J0cyBvZiBhbnkgbW9kdWxlIGluIHRoZSBwcm9ncmFtLCBieSBuYW1lLiBBIGNvbW1lbnQgcm91dGluZWx5IG5hbWVzIGEgdHlwZSBpdHMgZmlsZSBuZXZlciBpbXBvcnRzIChhblxuICogICAgaW50ZWdyYXRpb24gdGVzdCBuYW1pbmcgdGhlIGNsYXNzIGl0IGRyaXZlcyB0aHJvdWdoIGBldmFsSW5PYnNpZGlhbmAsIGEgcmVtYXJrIG5hbWluZyBhbiBPYnNpZGlhbiBBUEkpLCBhbmQgdGhlXG4gKiAgICBBUEkgZG9jcyBnZW5lcmF0b3IgcmVzb2x2ZXMgc3VjaCBhIG5hbWUgbGlicmFyeS13aWRlIHRvby4gVGhpcyBrZWVwcyB0aGUgcnVsZSBhYm91dCBERUFEIGxpbmtzIHJhdGhlciB0aGFuXG4gKiAgICBhYm91dCBpbXBvcnRzOiBhIHJlbmFtZWQgb3IgcmVtb3ZlZCBkZWNsYXJhdGlvbiBpcyBleHBvcnRlZCBieSBubyBtb2R1bGUsIHNvIGl0IGlzIHN0aWxsIHJlcG9ydGVkLlxuICogNC4gQSBtb2R1bGUgbmFtZWQgYnkgaXRzIHNwZWNpZmllciBvciBpdHMgcGF0aCwgaW4gYm90aCBUU0RvYyBmb3JtczogYG9ic2lkaWFuI0V2ZW50cyNvbmAgKHRoZSBwYWNrYWdlIGFzIHRoZSBmaXJzdFxuICogICAgc2VnbWVudCkgYW5kIGBlcnJvciFlcnJvclRvU3RyaW5nYCAvIGBvYnNpZGlhbi9jb21wb25lbnRzL3BsdWdpbi1nYXRlLWNvbXBvbmVudCFQbHVnaW5Db25mbGljdFNldmVyaXR5Lldhcm5gXG4gKiAgICAoYSBtb2R1bGUgcGF0aCwgZW5kaW5nIHdpdGggYCFgKSDigJQgcGx1cyBUeXBlU2NyaXB0J3Mgb3duIGBpbXBvcnQoJy4vbW9kdWxlLnRzJykuTWVtYmVyYC4gQSBwYXRoIG1hdGNoZXMgYW55XG4gKiAgICBzb3VyY2UgZmlsZSBpbiB0aGUgcHJvZ3JhbSB3aG9zZSBwYXRoIGVuZHMgd2l0aCBpdC5cbiAqXG4gKiBBZnRlciB0aGUgZmlyc3Qgc2VnbWVudCwgZWFjaCBmdXJ0aGVyIGAuYCAvIGAjYCBzZWdtZW50IGlzIGxvb2tlZCB1cCBhcyBhIG1lbWJlcjogYSBuYW1lc3BhY2Ugb3IgbW9kdWxlIGV4cG9ydCwgYVxuICogc3RhdGljIG9yIGluc3RhbmNlIG1lbWJlciwgb3IgYSBwcm9wZXJ0eSBvZiB0aGUgcHJldmlvdXMgbWVtYmVyJ3MgdHlwZSDigJQgc28gYEFwcC52YXVsdC5hZGFwdGVyYCByZXNvbHZlcy5cbiAqXG4gKiBBIGxpbmsgdGhhdCBpcyBub3QgYSBjb2RlIHJlZmVyZW5jZSBpcyBza2lwcGVkOiBhIFVSTCAoYHtAbGluayBodHRwczovL2V4YW1wbGUuY29tfWApIGFuZCBhIEpTRG9jIG5hbWVwYXRoXG4gKiAoYHtAbGluayBtb2R1bGU6Zm9vfWApIGJvdGggcGFyc2UgYXMgYSBuYW1lIGZvbGxvd2VkIGJ5IHRleHQgc3RhcnRpbmcgd2l0aCBgOmAsIGFuZCBhIGxpbmsgd2l0aCBubyBuYW1lIGhhc1xuICogbm90aGluZyB0byByZXNvbHZlLlxuICovXG5pbXBvcnQgdHlwZSB7XG4gIFBhcnNlclNlcnZpY2VzV2l0aFR5cGVJbmZvcm1hdGlvbixcbiAgVFNFU1RyZWVcbn0gZnJvbSAnQHR5cGVzY3JpcHQtZXNsaW50L3V0aWxzJztcbmltcG9ydCB0eXBlIHsgUnVsZSB9IGZyb20gJ2VzbGludCc7XG5pbXBvcnQgdHlwZSB7XG4gIENsYXNzRGVjbGFyYXRpb24sXG4gIEVudGl0eU5hbWUsXG4gIEVudW1EZWNsYXJhdGlvbixcbiAgRnVuY3Rpb25EZWNsYXJhdGlvbixcbiAgR2V0QWNjZXNzb3JEZWNsYXJhdGlvbixcbiAgSWRlbnRpZmllcixcbiAgSW50ZXJmYWNlRGVjbGFyYXRpb24sXG4gIEpTRG9jTGluayxcbiAgSlNEb2NMaW5rQ29kZSxcbiAgSlNEb2NMaW5rUGxhaW4sXG4gIEpTRG9jTWVtYmVyTmFtZSxcbiAgTWV0aG9kRGVjbGFyYXRpb24sXG4gIE1ldGhvZFNpZ25hdHVyZSxcbiAgTW9kdWxlRGVjbGFyYXRpb24sXG4gIE5vZGUsXG4gIFByb2dyYW0sXG4gIFByb3BlcnR5RGVjbGFyYXRpb24sXG4gIFByb3BlcnR5U2lnbmF0dXJlLFxuICBTZXRBY2Nlc3NvckRlY2xhcmF0aW9uLFxuICBTeW1ib2wgYXMgVHNTeW1ib2wsXG4gIFR5cGVBbGlhc0RlY2xhcmF0aW9uLFxuICBUeXBlQ2hlY2tlcixcbiAgVmFyaWFibGVEZWNsYXJhdGlvblxufSBmcm9tICd0eXBlc2NyaXB0JztcblxuaW1wb3J0IHtcbiAgZXNjYXBlTGVhZGluZ1VuZGVyc2NvcmVzLFxuICBmb3JFYWNoQ2hpbGQsXG4gIGdldEpTRG9jQ29tbWVudHNBbmRUYWdzLFxuICBpc0NsYXNzRGVjbGFyYXRpb24sXG4gIGlzRW51bURlY2xhcmF0aW9uLFxuICBpc0Z1bmN0aW9uRGVjbGFyYXRpb24sXG4gIGlzR2V0QWNjZXNzb3JEZWNsYXJhdGlvbixcbiAgaXNJZGVudGlmaWVyLFxuICBpc0ludGVyZmFjZURlY2xhcmF0aW9uLFxuICBpc0pTRG9jTGluayxcbiAgaXNKU0RvY0xpbmtDb2RlLFxuICBpc0pTRG9jTGlua1BsYWluLFxuICBpc0pTRG9jTWVtYmVyTmFtZSxcbiAgaXNNZXRob2REZWNsYXJhdGlvbixcbiAgaXNNZXRob2RTaWduYXR1cmUsXG4gIGlzTW9kdWxlRGVjbGFyYXRpb24sXG4gIGlzUHJvcGVydHlEZWNsYXJhdGlvbixcbiAgaXNQcm9wZXJ0eVNpZ25hdHVyZSxcbiAgaXNTZXRBY2Nlc3NvckRlY2xhcmF0aW9uLFxuICBpc1R5cGVBbGlhc0RlY2xhcmF0aW9uLFxuICBpc1ZhcmlhYmxlRGVjbGFyYXRpb24sXG4gIHJlc29sdmVNb2R1bGVOYW1lLFxuICBTeW1ib2xGbGFncyxcbiAgc3lzXG59IGZyb20gJ3R5cGVzY3JpcHQnO1xuXG5pbXBvcnQgeyB0b1RTRVNUcmVlTm9kZSB9IGZyb20gJy4vdHMtZXN0cmVlLW5vZGUudHMnO1xuXG4vKipcbiAqIE1lc3NhZ2UgSUQgcmVwb3J0ZWQgd2hlbiBhIEpTRG9jIGxpbmsgdGFyZ2V0IGRvZXMgbm90IHJlc29sdmUgdG8gYSBzeW1ib2wuXG4gKi9cbmV4cG9ydCBjb25zdCBNRVNTQUdFX0lEID0gJ25vVW5yZXNvbHZlZEpzZG9jTGluayc7XG5cbmludGVyZmFjZSBJc1Jlc29sdmVkTmFtZVBhcmFtcyB7XG4gIHJlYWRvbmx5IGNoZWNrZXI6IFR5cGVDaGVja2VyO1xuICByZWFkb25seSBjb250YWluaW5nRmlsZU5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgbG9jYWxEZWNsYXJhdGlvbk5hbWVzQnlOYW1lOiBSZWFkb25seU1hcDxzdHJpbmcsIHJlYWRvbmx5IElkZW50aWZpZXJbXT47XG4gIHJlYWRvbmx5IG5hbWU6IEVudGl0eU5hbWUgfCBKU0RvY01lbWJlck5hbWU7XG4gIHJlYWRvbmx5IHByb2dyYW06IFByb2dyYW07XG59XG5cbnR5cGUgSlNEb2NMaW5rTGlrZSA9IEpTRG9jTGluayB8IEpTRG9jTGlua0NvZGUgfCBKU0RvY0xpbmtQbGFpbjtcblxudHlwZSBMb2NhbERlY2xhcmF0aW9uID1cbiAgfCBDbGFzc0RlY2xhcmF0aW9uXG4gIHwgRW51bURlY2xhcmF0aW9uXG4gIHwgRnVuY3Rpb25EZWNsYXJhdGlvblxuICB8IEdldEFjY2Vzc29yRGVjbGFyYXRpb25cbiAgfCBJbnRlcmZhY2VEZWNsYXJhdGlvblxuICB8IE1ldGhvZERlY2xhcmF0aW9uXG4gIHwgTWV0aG9kU2lnbmF0dXJlXG4gIHwgTW9kdWxlRGVjbGFyYXRpb25cbiAgfCBQcm9wZXJ0eURlY2xhcmF0aW9uXG4gIHwgUHJvcGVydHlTaWduYXR1cmVcbiAgfCBTZXRBY2Nlc3NvckRlY2xhcmF0aW9uXG4gIHwgVHlwZUFsaWFzRGVjbGFyYXRpb25cbiAgfCBWYXJpYWJsZURlY2xhcmF0aW9uO1xuXG5pbnRlcmZhY2UgUHJvZ3JhbUluZGV4IHtcbiAgcmVhZG9ubHkgZXhwb3J0c0J5TmFtZTogTWFwPHN0cmluZywgVHNTeW1ib2xbXT47XG4gIHJlYWRvbmx5IG1vZHVsZXNCeVBhdGg6IE1hcDxzdHJpbmcsIFRzU3ltYm9sPjtcbn1cblxuY29uc3QgTU9EVUxFX1BBVEhfUkVHX0VYUCA9IC9eKD88bW9kdWxlUGF0aD5bXlxccyF8fV0qKSEoPzxtZW1iZXJQYXRoPltcXHckLiNdKykvO1xuY29uc3QgSU1QT1JUX1RZUEVfUkVHX0VYUCA9IC9eaW1wb3J0XFwoXFxzKig/PHF1b3RlPlsnXCJdKSg/PG1vZHVsZVBhdGg+W14nXCJdKylcXGs8cXVvdGU+XFxzKlxcKVxcLig/PG1lbWJlclBhdGg+W1xcdyQuI10rKS87XG5jb25zdCBSRUxBVElWRV9QQVRIX1BSRUZJWF9SRUdfRVhQID0gL14oPzpcXC5cXC4/XFwvKSsvO1xuY29uc3QgTUVNQkVSX1NFUEFSQVRPUl9SRUdfRVhQID0gL1suI10vO1xuY29uc3QgU09VUkNFX0ZJTEVfRVhURU5TSU9OX1JFR19FWFAgPSAvKD86XFwuZCk/XFwuW2NtXT90c3g/JC87XG5jb25zdCBJTkRFWF9TVUZGSVggPSAnL2luZGV4JztcblxuY29uc3QgcHJvZ3JhbUluZGV4Q2FjaGUgPSBuZXcgV2Vha01hcDxQcm9ncmFtLCBQcm9ncmFtSW5kZXg+KCk7XG5cbi8qKlxuICogVGhlIEVTTGludCBydWxlIHRoYXQgcmVwb3J0cyBKU0RvYyBsaW5rcyB3aG9zZSB0YXJnZXQgZG9lcyBub3QgcmVzb2x2ZS5cbiAqL1xuZXhwb3J0IGNvbnN0IG5vVW5yZXNvbHZlZEpzZG9jTGluazogUnVsZS5SdWxlTW9kdWxlID0ge1xuICBjcmVhdGUoY29udGV4dCkge1xuICAgIGNvbnN0IHNlcnZpY2VzID0gY29udGV4dC5zb3VyY2VDb2RlLnBhcnNlclNlcnZpY2VzIGFzIFBhcnNlclNlcnZpY2VzV2l0aFR5cGVJbmZvcm1hdGlvbjtcblxuICAgIHJldHVybiB7XG4gICAgICBQcm9ncmFtKG5vZGUpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcHJvZ3JhbSA9IHNlcnZpY2VzLnByb2dyYW07XG4gICAgICAgIGNvbnN0IGNoZWNrZXIgPSBwcm9ncmFtLmdldFR5cGVDaGVja2VyKCk7XG4gICAgICAgIGNvbnN0IHRzU291cmNlRmlsZSA9IHNlcnZpY2VzLmVzVHJlZU5vZGVUb1RTTm9kZU1hcC5nZXQodG9UU0VTVHJlZU5vZGUobm9kZSkgYXMgVFNFU1RyZWUuUHJvZ3JhbSk7XG5cbiAgICAgICAgLypcbiAgICAgICAgICogVGhlIHNhbWUgbGluayBpcyByZWFjaGFibGUgbW9yZSB0aGFuIG9uY2U6IGEgcGFyYW1ldGVyIHJldHVybnMgaXRzIG93biBgQHBhcmFtYCB0YWcsIHdoaWNoIGl0cyBmdW5jdGlvbidzXG4gICAgICAgICAqIEpTRG9jIGJsb2NrIGFsc28gY29udGFpbnMuIFNvIGRlZHVwbGljYXRlIG9uIHRoZSBsaW5rIGl0c2VsZiByYXRoZXIgdGhhbiBvbiB0aGUgSlNEb2Mgbm9kZS5cbiAgICAgICAgICovXG4gICAgICAgIGNvbnN0IGxpbmtzID0gbmV3IFNldDxKU0RvY0xpbmtMaWtlPigpO1xuXG4gICAgICAgIC8qXG4gICAgICAgICAqIEEgbGluayBtYXkgbmFtZSBhIGRlY2xhcmF0aW9uIGZ1cnRoZXIgZG93biB0aGUgZmlsZSwgc28gdGhlIHdob2xlIGZpbGUgaXMgd2Fsa2VkIGJlZm9yZSBhbnkgbGluayBpc1xuICAgICAgICAgKiByZXNvbHZlZC5cbiAgICAgICAgICovXG4gICAgICAgIGNvbnN0IGxvY2FsRGVjbGFyYXRpb25OYW1lc0J5TmFtZSA9IG5ldyBNYXA8c3RyaW5nLCBJZGVudGlmaWVyW10+KCk7XG5cbiAgICAgICAgZnVuY3Rpb24gdmlzaXRKc0RvY05vZGUoanNEb2NOb2RlOiBOb2RlKTogdm9pZCB7XG4gICAgICAgICAgaWYgKGlzSlNEb2NMaW5rTGlrZShqc0RvY05vZGUpKSB7XG4gICAgICAgICAgICBsaW5rcy5hZGQoanNEb2NOb2RlKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgZm9yRWFjaENoaWxkKGpzRG9jTm9kZSwgdmlzaXRKc0RvY05vZGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gdmlzaXROb2RlKHRzTm9kZTogTm9kZSk6IHZvaWQge1xuICAgICAgICAgIGNvbGxlY3RMb2NhbERlY2xhcmF0aW9uTmFtZSh0c05vZGUsIGxvY2FsRGVjbGFyYXRpb25OYW1lc0J5TmFtZSk7XG4gICAgICAgICAgZm9yIChjb25zdCBqc0RvY05vZGUgb2YgZ2V0SlNEb2NDb21tZW50c0FuZFRhZ3ModHNOb2RlKSkge1xuICAgICAgICAgICAgdmlzaXRKc0RvY05vZGUoanNEb2NOb2RlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZm9yRWFjaENoaWxkKHRzTm9kZSwgdmlzaXROb2RlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIHJlcG9ydElmVW5yZXNvbHZlZChsaW5rOiBKU0RvY0xpbmtMaWtlKTogdm9pZCB7XG4gICAgICAgICAgaWYgKCFsaW5rLm5hbWUgfHwgbGluay50ZXh0LnN0YXJ0c1dpdGgoJzonKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IG5hbWVUZXh0ID0gbGluay5uYW1lLmdldFRleHQoKTtcbiAgICAgICAgICBjb25zdCBmdWxsVGFyZ2V0ID0gbmFtZVRleHQgKyBsaW5rLnRleHQ7XG4gICAgICAgICAgY29uc3QgbW9kdWxlTWF0Y2ggPSBJTVBPUlRfVFlQRV9SRUdfRVhQLmV4ZWMoZnVsbFRhcmdldCkgPz8gTU9EVUxFX1BBVEhfUkVHX0VYUC5leGVjKGZ1bGxUYXJnZXQpO1xuICAgICAgICAgIGxldCByZXBvcnRlZE5hbWUgPSBuYW1lVGV4dDtcbiAgICAgICAgICBsZXQgaXNSZXNvbHZlZDogYm9vbGVhbjtcblxuICAgICAgICAgIGlmIChtb2R1bGVNYXRjaD8uZ3JvdXBzKSB7XG4gICAgICAgICAgICB0eXBlIE1vZHVsZVBhdGhNYXRjaEdyb3VwcyA9IFJlYWRvbmx5PFJlY29yZDwnbWVtYmVyUGF0aCcgfCAnbW9kdWxlUGF0aCcsIHN0cmluZz4+O1xuICAgICAgICAgICAgY29uc3QgeyBtZW1iZXJQYXRoLCBtb2R1bGVQYXRoIH0gPSBtb2R1bGVNYXRjaC5ncm91cHMgYXMgTW9kdWxlUGF0aE1hdGNoR3JvdXBzO1xuICAgICAgICAgICAgcmVwb3J0ZWROYW1lID0gbW9kdWxlTWF0Y2hbMF07XG4gICAgICAgICAgICBjb25zdCBtb2R1bGVTeW1ib2wgPSBmaW5kTW9kdWxlKHByb2dyYW0sIGNoZWNrZXIsIG1vZHVsZVBhdGgsIHRzU291cmNlRmlsZS5maWxlTmFtZSk7XG4gICAgICAgICAgICBpc1Jlc29sdmVkID0gISFyZXNvbHZlTWVtYmVyUGF0aChjaGVja2VyLCBtb2R1bGVTeW1ib2wsIG1lbWJlclBhdGguc3BsaXQoTUVNQkVSX1NFUEFSQVRPUl9SRUdfRVhQKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlzUmVzb2x2ZWQgPSBpc1Jlc29sdmVkTmFtZSh7XG4gICAgICAgICAgICAgIGNoZWNrZXIsXG4gICAgICAgICAgICAgIGNvbnRhaW5pbmdGaWxlTmFtZTogdHNTb3VyY2VGaWxlLmZpbGVOYW1lLFxuICAgICAgICAgICAgICBsb2NhbERlY2xhcmF0aW9uTmFtZXNCeU5hbWUsXG4gICAgICAgICAgICAgIG5hbWU6IGxpbmsubmFtZSxcbiAgICAgICAgICAgICAgcHJvZ3JhbVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGlzUmVzb2x2ZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgIG5hbWU6IHJlcG9ydGVkTmFtZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxvYzoge1xuICAgICAgICAgICAgICBlbmQ6IGNvbnRleHQuc291cmNlQ29kZS5nZXRMb2NGcm9tSW5kZXgobGluay5uYW1lLmdldEVuZCgpKSxcbiAgICAgICAgICAgICAgc3RhcnQ6IGNvbnRleHQuc291cmNlQ29kZS5nZXRMb2NGcm9tSW5kZXgobGluay5uYW1lLmdldFN0YXJ0KCkpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbWVzc2FnZUlkOiBNRVNTQUdFX0lEXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB2aXNpdE5vZGUodHNTb3VyY2VGaWxlKTtcbiAgICAgICAgZm9yIChjb25zdCBsaW5rIG9mIGxpbmtzKSB7XG4gICAgICAgICAgcmVwb3J0SWZVbnJlc29sdmVkKGxpbmspO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgfSxcbiAgbWV0YToge1xuICAgIGRvY3M6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnRGlzYWxsb3cgSlNEb2MgbGluayB0YWdzIHdob3NlIHRhcmdldCBkb2VzIG5vdCByZXNvbHZlIHRvIGEgc3ltYm9sJ1xuICAgIH0sXG4gICAgbWVzc2FnZXM6IHtcbiAgICAgIFtNRVNTQUdFX0lEXTogJ0pTRG9jIGxpbmsgdGFyZ2V0IGB7e25hbWV9fWAgZG9lcyBub3QgcmVzb2x2ZS4gV2FzIGl0IHJlbmFtZWQgb3IgcmVtb3ZlZD8nXG4gICAgfSxcbiAgICBzY2hlbWE6IFtdLFxuICAgIHR5cGU6ICdwcm9ibGVtJ1xuICB9XG59O1xuXG5mdW5jdGlvbiBjb2xsZWN0TG9jYWxEZWNsYXJhdGlvbk5hbWUobm9kZTogTm9kZSwgbG9jYWxEZWNsYXJhdGlvbk5hbWVzQnlOYW1lOiBNYXA8c3RyaW5nLCBJZGVudGlmaWVyW10+KTogdm9pZCB7XG4gIGlmICghaXNMb2NhbERlY2xhcmF0aW9uKG5vZGUpIHx8ICFub2RlLm5hbWUgfHwgIWlzSWRlbnRpZmllcihub2RlLm5hbWUpKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IG5hbWVzID0gbG9jYWxEZWNsYXJhdGlvbk5hbWVzQnlOYW1lLmdldChub2RlLm5hbWUudGV4dCkgPz8gW107XG4gIG5hbWVzLnB1c2gobm9kZS5uYW1lKTtcbiAgbG9jYWxEZWNsYXJhdGlvbk5hbWVzQnlOYW1lLnNldChub2RlLm5hbWUudGV4dCwgbmFtZXMpO1xufVxuXG5mdW5jdGlvbiBmaW5kTW9kdWxlKHByb2dyYW06IFByb2dyYW0sIGNoZWNrZXI6IFR5cGVDaGVja2VyLCBzcGVjaWZpZXI6IHN0cmluZywgY29udGFpbmluZ0ZpbGVOYW1lOiBzdHJpbmcpOiBUc1N5bWJvbCB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGFtYmllbnRNb2R1bGUgPSBnZXRQcm9ncmFtSW5kZXgocHJvZ3JhbSwgY2hlY2tlcikubW9kdWxlc0J5UGF0aC5nZXQoc3BlY2lmaWVyKTtcbiAgaWYgKGFtYmllbnRNb2R1bGUpIHtcbiAgICByZXR1cm4gYW1iaWVudE1vZHVsZTtcbiAgfVxuXG4gIGNvbnN0IHJlc29sdmVkRmlsZU5hbWUgPSByZXNvbHZlTW9kdWxlTmFtZShzcGVjaWZpZXIsIGNvbnRhaW5pbmdGaWxlTmFtZSwgcHJvZ3JhbS5nZXRDb21waWxlck9wdGlvbnMoKSwgc3lzKS5yZXNvbHZlZE1vZHVsZT8ucmVzb2x2ZWRGaWxlTmFtZTtcbiAgY29uc3QgcmVzb2x2ZWRTb3VyY2VGaWxlID0gcmVzb2x2ZWRGaWxlTmFtZSA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogcHJvZ3JhbS5nZXRTb3VyY2VGaWxlKHJlc29sdmVkRmlsZU5hbWUpO1xuICBjb25zdCByZXNvbHZlZE1vZHVsZSA9IHJlc29sdmVkU291cmNlRmlsZSAmJiBjaGVja2VyLmdldFN5bWJvbEF0TG9jYXRpb24ocmVzb2x2ZWRTb3VyY2VGaWxlKTtcbiAgcmV0dXJuIHJlc29sdmVkTW9kdWxlID8/IGZpbmRNb2R1bGVCeVBhdGhTdWZmaXgocHJvZ3JhbSwgY2hlY2tlciwgc3BlY2lmaWVyKTtcbn1cblxuZnVuY3Rpb24gZmluZE1vZHVsZUJ5UGF0aFN1ZmZpeChwcm9ncmFtOiBQcm9ncmFtLCBjaGVja2VyOiBUeXBlQ2hlY2tlciwgbW9kdWxlUGF0aDogc3RyaW5nKTogVHNTeW1ib2wgfCB1bmRlZmluZWQge1xuICBjb25zdCBub3JtYWxpemVkUGF0aCA9IG1vZHVsZVBhdGgucmVwbGFjZShSRUxBVElWRV9QQVRIX1BSRUZJWF9SRUdfRVhQLCAnJykucmVwbGFjZShTT1VSQ0VfRklMRV9FWFRFTlNJT05fUkVHX0VYUCwgJycpO1xuICBjb25zdCBzdWZmaXhlcyA9IFtgLyR7bm9ybWFsaXplZFBhdGh9YCwgYC8ke25vcm1hbGl6ZWRQYXRofSR7SU5ERVhfU1VGRklYfWBdO1xuICBmb3IgKGNvbnN0IHNvdXJjZUZpbGUgb2YgcHJvZ3JhbS5nZXRTb3VyY2VGaWxlcygpKSB7XG4gICAgY29uc3QgcGF0aFdpdGhvdXRFeHRlbnNpb24gPSBzb3VyY2VGaWxlLmZpbGVOYW1lLnJlcGxhY2UoU09VUkNFX0ZJTEVfRVhURU5TSU9OX1JFR19FWFAsICcnKTtcbiAgICBpZiAoc3VmZml4ZXMuZXZlcnkoKHN1ZmZpeCkgPT4gIXBhdGhXaXRob3V0RXh0ZW5zaW9uLmVuZHNXaXRoKHN1ZmZpeCkpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY29uc3QgbW9kdWxlU3ltYm9sID0gY2hlY2tlci5nZXRTeW1ib2xBdExvY2F0aW9uKHNvdXJjZUZpbGUpO1xuICAgIGlmIChtb2R1bGVTeW1ib2wpIHtcbiAgICAgIHJldHVybiBtb2R1bGVTeW1ib2w7XG4gICAgfVxuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGZsYXR0ZW5OYW1lKG5hbWU6IEVudGl0eU5hbWUgfCBKU0RvY01lbWJlck5hbWUpOiBzdHJpbmdbXSB7XG4gIHJldHVybiBpc0lkZW50aWZpZXIobmFtZSkgPyBbbmFtZS50ZXh0XSA6IFsuLi5mbGF0dGVuTmFtZShuYW1lLmxlZnQpLCBuYW1lLnJpZ2h0LnRleHRdO1xufVxuXG5mdW5jdGlvbiBnZXRNZW1iZXIoY2hlY2tlcjogVHlwZUNoZWNrZXIsICRzeW1ib2w6IFRzU3ltYm9sLCBtZW1iZXJOYW1lOiBzdHJpbmcpOiBUc1N5bWJvbCB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGVzY2FwZWROYW1lID0gZXNjYXBlTGVhZGluZ1VuZGVyc2NvcmVzKG1lbWJlck5hbWUpO1xuICBjb25zdCB0YXJnZXQgPSByZXNvbHZlQWxpYXMoY2hlY2tlciwgJHN5bWJvbCk7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1iaXR3aXNlIC0tIEJpdHdpc2UgZmxhZyB0ZXN0IGlzIGlkaW9tYXRpYyBmb3IgdGhlIFR5cGVTY3JpcHQgY29tcGlsZXIgQVBJLlxuICBjb25zdCBtb2R1bGVFeHBvcnQgPSAodGFyZ2V0LmZsYWdzICYgU3ltYm9sRmxhZ3MuTW9kdWxlKSA9PT0gMCA/IHVuZGVmaW5lZCA6IGNoZWNrZXIudHJ5R2V0TWVtYmVySW5Nb2R1bGVFeHBvcnRzKG1lbWJlck5hbWUsIHRhcmdldCk7XG4gIHJldHVybiBtb2R1bGVFeHBvcnRcbiAgICA/PyB0YXJnZXQuZXhwb3J0cz8uZ2V0KGVzY2FwZWROYW1lKVxuICAgID8/IHRhcmdldC5tZW1iZXJzPy5nZXQoZXNjYXBlZE5hbWUpXG4gICAgPz8gY2hlY2tlci5nZXRQcm9wZXJ0eU9mVHlwZShjaGVja2VyLmdldERlY2xhcmVkVHlwZU9mU3ltYm9sKHRhcmdldCksIG1lbWJlck5hbWUpXG4gICAgPz8gY2hlY2tlci5nZXRQcm9wZXJ0eU9mVHlwZShjaGVja2VyLmdldFR5cGVPZlN5bWJvbCh0YXJnZXQpLCBtZW1iZXJOYW1lKTtcbn1cblxuZnVuY3Rpb24gZ2V0UHJvZ3JhbUluZGV4KHByb2dyYW06IFByb2dyYW0sIGNoZWNrZXI6IFR5cGVDaGVja2VyKTogUHJvZ3JhbUluZGV4IHtcbiAgbGV0IGluZGV4ID0gcHJvZ3JhbUluZGV4Q2FjaGUuZ2V0KHByb2dyYW0pO1xuICBpZiAoaW5kZXgpIHtcbiAgICByZXR1cm4gaW5kZXg7XG4gIH1cblxuICBpbmRleCA9IHtcbiAgICBleHBvcnRzQnlOYW1lOiBuZXcgTWFwPHN0cmluZywgVHNTeW1ib2xbXT4oKSxcbiAgICBtb2R1bGVzQnlQYXRoOiBuZXcgTWFwPHN0cmluZywgVHNTeW1ib2w+KClcbiAgfTtcblxuICBjb25zdCBtb2R1bGVTeW1ib2xzOiBUc1N5bWJvbFtdID0gW107XG4gIGZvciAoY29uc3QgYW1iaWVudE1vZHVsZSBvZiBjaGVja2VyLmdldEFtYmllbnRNb2R1bGVzKCkpIHtcbiAgICBpbmRleC5tb2R1bGVzQnlQYXRoLnNldChhbWJpZW50TW9kdWxlLm5hbWUucmVwbGFjZUFsbCgnXCInLCAnJyksIGFtYmllbnRNb2R1bGUpO1xuICAgIG1vZHVsZVN5bWJvbHMucHVzaChhbWJpZW50TW9kdWxlKTtcbiAgfVxuICBmb3IgKGNvbnN0IHNvdXJjZUZpbGUgb2YgcHJvZ3JhbS5nZXRTb3VyY2VGaWxlcygpKSB7XG4gICAgY29uc3QgbW9kdWxlU3ltYm9sID0gY2hlY2tlci5nZXRTeW1ib2xBdExvY2F0aW9uKHNvdXJjZUZpbGUpO1xuICAgIGlmIChtb2R1bGVTeW1ib2wpIHtcbiAgICAgIG1vZHVsZVN5bWJvbHMucHVzaChtb2R1bGVTeW1ib2wpO1xuICAgIH1cbiAgfVxuXG4gIGZvciAoY29uc3QgbW9kdWxlU3ltYm9sIG9mIG1vZHVsZVN5bWJvbHMpIHtcbiAgICBmb3IgKGNvbnN0IGV4cG9ydFN5bWJvbCBvZiBjaGVja2VyLmdldEV4cG9ydHNPZk1vZHVsZShtb2R1bGVTeW1ib2wpKSB7XG4gICAgICBjb25zdCBzeW1ib2xzID0gaW5kZXguZXhwb3J0c0J5TmFtZS5nZXQoZXhwb3J0U3ltYm9sLm5hbWUpID8/IFtdO1xuICAgICAgc3ltYm9scy5wdXNoKGV4cG9ydFN5bWJvbCk7XG4gICAgICBpbmRleC5leHBvcnRzQnlOYW1lLnNldChleHBvcnRTeW1ib2wubmFtZSwgc3ltYm9scyk7XG4gICAgfVxuICB9XG5cbiAgcHJvZ3JhbUluZGV4Q2FjaGUuc2V0KHByb2dyYW0sIGluZGV4KTtcbiAgcmV0dXJuIGluZGV4O1xufVxuXG5mdW5jdGlvbiBpc0pTRG9jTGlua0xpa2Uobm9kZTogTm9kZSk6IG5vZGUgaXMgSlNEb2NMaW5rTGlrZSB7XG4gIHJldHVybiBpc0pTRG9jTGluayhub2RlKSB8fCBpc0pTRG9jTGlua0NvZGUobm9kZSkgfHwgaXNKU0RvY0xpbmtQbGFpbihub2RlKTtcbn1cblxuZnVuY3Rpb24gaXNMb2NhbERlY2xhcmF0aW9uKG5vZGU6IE5vZGUpOiBub2RlIGlzIExvY2FsRGVjbGFyYXRpb24ge1xuICByZXR1cm4gaXNDbGFzc0RlY2xhcmF0aW9uKG5vZGUpXG4gICAgfHwgaXNFbnVtRGVjbGFyYXRpb24obm9kZSlcbiAgICB8fCBpc0Z1bmN0aW9uRGVjbGFyYXRpb24obm9kZSlcbiAgICB8fCBpc0dldEFjY2Vzc29yRGVjbGFyYXRpb24obm9kZSlcbiAgICB8fCBpc0ludGVyZmFjZURlY2xhcmF0aW9uKG5vZGUpXG4gICAgfHwgaXNNZXRob2REZWNsYXJhdGlvbihub2RlKVxuICAgIHx8IGlzTWV0aG9kU2lnbmF0dXJlKG5vZGUpXG4gICAgfHwgaXNNb2R1bGVEZWNsYXJhdGlvbihub2RlKVxuICAgIHx8IGlzUHJvcGVydHlEZWNsYXJhdGlvbihub2RlKVxuICAgIHx8IGlzUHJvcGVydHlTaWduYXR1cmUobm9kZSlcbiAgICB8fCBpc1NldEFjY2Vzc29yRGVjbGFyYXRpb24obm9kZSlcbiAgICB8fCBpc1R5cGVBbGlhc0RlY2xhcmF0aW9uKG5vZGUpXG4gICAgfHwgaXNWYXJpYWJsZURlY2xhcmF0aW9uKG5vZGUpO1xufVxuXG5mdW5jdGlvbiBpc1Jlc29sdmVkTmFtZShwYXJhbXM6IElzUmVzb2x2ZWROYW1lUGFyYW1zKTogYm9vbGVhbiB7XG4gIGNvbnN0IHtcbiAgICBjaGVja2VyLFxuICAgIGNvbnRhaW5pbmdGaWxlTmFtZSxcbiAgICBsb2NhbERlY2xhcmF0aW9uTmFtZXNCeU5hbWUsXG4gICAgbmFtZSxcbiAgICBwcm9ncmFtXG4gIH0gPSBwYXJhbXM7XG5cbiAgaWYgKGNoZWNrZXIuZ2V0U3ltYm9sQXRMb2NhdGlvbihuYW1lKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLy8gYEZvbyNiYXJgIGlzIGEgYEpTRG9jTWVtYmVyTmFtZWAsIHdoaWNoIHRoZSBjaGVja2VyIHJlc29sdmVzIG9ubHkgdGhyb3VnaCBpdHMgcmlnaHQtaGFuZCBtZW1iZXIuXG4gIGlmIChpc0pTRG9jTWVtYmVyTmFtZShuYW1lKSAmJiBjaGVja2VyLmdldFN5bWJvbEF0TG9jYXRpb24obmFtZS5yaWdodCkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGNvbnN0IFtyb290TmFtZSA9ICcnLCAuLi5tZW1iZXJOYW1lc10gPSBmbGF0dGVuTmFtZShuYW1lKTtcbiAgY29uc3QgaW5kZXggPSBnZXRQcm9ncmFtSW5kZXgocHJvZ3JhbSwgY2hlY2tlcik7XG4gIGNvbnN0IGxvY2FsUm9vdHMgPSAobG9jYWxEZWNsYXJhdGlvbk5hbWVzQnlOYW1lLmdldChyb290TmFtZSkgPz8gW10pLm1hcCgoZGVjbGFyYXRpb25OYW1lKSA9PiBjaGVja2VyLmdldFN5bWJvbEF0TG9jYXRpb24oZGVjbGFyYXRpb25OYW1lKSk7XG4gIGNvbnN0IHJvb3RzID0gWy4uLmxvY2FsUm9vdHMsIC4uLmluZGV4LmV4cG9ydHNCeU5hbWUuZ2V0KHJvb3ROYW1lKSA/PyBbXSwgZmluZE1vZHVsZShwcm9ncmFtLCBjaGVja2VyLCByb290TmFtZSwgY29udGFpbmluZ0ZpbGVOYW1lKV07XG5cbiAgcmV0dXJuIHJvb3RzLnNvbWUoKHJvb3QpID0+ICEhcmVzb2x2ZU1lbWJlclBhdGgoY2hlY2tlciwgcm9vdCwgbWVtYmVyTmFtZXMpKTtcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZUFsaWFzKGNoZWNrZXI6IFR5cGVDaGVja2VyLCAkc3ltYm9sOiBUc1N5bWJvbCk6IFRzU3ltYm9sIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWJpdHdpc2UgLS0gQml0d2lzZSBmbGFnIHRlc3QgaXMgaWRpb21hdGljIGZvciB0aGUgVHlwZVNjcmlwdCBjb21waWxlciBBUEkuXG4gIHJldHVybiAoJHN5bWJvbC5mbGFncyAmIFN5bWJvbEZsYWdzLkFsaWFzKSA9PT0gMCA/ICRzeW1ib2wgOiBjaGVja2VyLmdldEFsaWFzZWRTeW1ib2woJHN5bWJvbCk7XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVNZW1iZXJQYXRoKGNoZWNrZXI6IFR5cGVDaGVja2VyLCByb290OiBUc1N5bWJvbCB8IHVuZGVmaW5lZCwgbWVtYmVyTmFtZXM6IHJlYWRvbmx5IHN0cmluZ1tdKTogVHNTeW1ib2wgfCB1bmRlZmluZWQge1xuICBsZXQgY3VycmVudDogVHNTeW1ib2wgfCB1bmRlZmluZWQgPSByb290O1xuICBmb3IgKGNvbnN0IG1lbWJlck5hbWUgb2YgbWVtYmVyTmFtZXMpIHtcbiAgICBpZiAoIWN1cnJlbnQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGN1cnJlbnQgPSBnZXRNZW1iZXIoY2hlY2tlciwgY3VycmVudCwgbWVtYmVyTmFtZSk7XG4gIH1cbiAgcmV0dXJuIGN1cnJlbnQ7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBZ0VBO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUVQLFNBQVMsc0JBQXNCO0FBS3hCLE1BQU0sYUFBYTtBQWdDMUIsTUFBTSxzQkFBc0I7QUFDNUIsTUFBTSxzQkFB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
|
|
@@ -52,12 +52,9 @@ const noUsedUnderscoreVariables = {
|
|
|
52
52
|
const functionBody = node.body;
|
|
53
53
|
const bodyRange = functionBody?.range;
|
|
54
54
|
const isParameter = definitionNode.type === "Parameter";
|
|
55
|
-
const hasBodyReferences = variable.references.some(
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
}
|
|
59
|
-
return !isParameter || !bodyRange || !reference.identifier.range || reference.identifier.range[0] >= bodyRange[0] && reference.identifier.range[1] <= bodyRange[1];
|
|
60
|
-
});
|
|
55
|
+
const hasBodyReferences = variable.references.some(
|
|
56
|
+
(reference) => reference.isRead() && (!isParameter || !bodyRange || !reference.identifier.range || reference.identifier.range[0] >= bodyRange[0] && reference.identifier.range[1] <= bodyRange[1])
|
|
57
|
+
);
|
|
61
58
|
if (hasBodyReferences) {
|
|
62
59
|
context.report({
|
|
63
60
|
data: { name: variable.name },
|
|
@@ -84,4 +81,4 @@ export {
|
|
|
84
81
|
MESSAGE_ID,
|
|
85
82
|
noUsedUnderscoreVariables
|
|
86
83
|
};
|
|
87
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saW50ZXJzL2VzbGludC1ydWxlcy9uby11c2VkLXVuZGVyc2NvcmUtdmFyaWFibGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBFU0xpbnQgcnVsZTogbm8tdXNlZC11bmRlcnNjb3JlLXZhcmlhYmxlc1xuICpcbiAqIFJlcG9ydHMgYW4gZXJyb3Igd2hlbiBhIHBhcmFtZXRlciBvciBsb2NhbCB2YXJpYWJsZSB3aXRoIGEgYF9gIHByZWZpeCBpc1xuICogYWN0dWFsbHkgcmVmZXJlbmNlZCBpbiB0aGUgZnVuY3Rpb24gYm9keS4gVGhlIGBfYCBwcmVmaXggY29udmVudGlvbiBzaWduYWxzXG4gKiBcInRoaXMgaWRlbnRpZmllciBpcyBpbnRlbnRpb25hbGx5IHVudXNlZFwiIOKAlCBpZiBpdCBJUyB1c2VkLCB0aGUgcHJlZml4IGlzXG4gKiBtaXNsZWFkaW5nIGFuZCBzaG91bGQgYmUgcmVtb3ZlZC5cbiAqL1xuaW1wb3J0IHR5cGUgeyBSdWxlIH0gZnJvbSAnZXNsaW50JztcblxuaW1wb3J0IHsgYXNzZXJ0Tm9uTnVsbGFibGUgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvdHlwZS1ndWFyZHMnO1xuXG5pbnRlcmZhY2UgTm9kZVdpdGhCb2R5IHtcbiAgcmVhZG9ubHkgYm9keT86IFJ1bGUuTm9kZTtcbn1cblxuLyoqXG5NZXNzYWdlIElEIHJlcG9ydGVkIHdoZW4gYSB2YXJpYWJsZSBjYXJyaWVzIGEgYF9gIHByZWZpeCAoc2lnbmFsbGluZyB1bnVzZWQpIGJ1dCBpcyBhY3R1YWxseSB1c2VkLlxuICovXG5leHBvcnQgY29uc3QgTUVTU0FHRV9JRCA9ICdub1VzZWRVbmRlcnNjb3JlVmFyaWFibGVzJztcblxuLyoqXG4gKiBFU0xpbnQgcnVsZSBkaXNhbGxvd2luZyBgX2AtcHJlZml4ZWQgcGFyYW1ldGVycyBhbmQgbG9jYWwgdmFyaWFibGVzIHRoYXQgYXJlIGFjdHVhbGx5IHVzZWQsIHNpbmNlIHRoZSBwcmVmaXggYWR2ZXJ0aXNlcyB0aGVtIGFzIHVudXNlZC5cbiAqL1xuZXhwb3J0IGNvbnN0IG5vVXNlZFVuZGVyc2NvcmVWYXJpYWJsZXM6IFJ1bGUuUnVsZU1vZHVsZSA9IHtcbiAgY3JlYXRlKGNvbnRleHQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgJzpmdW5jdGlvbicobm9kZTogUnVsZS5Ob2RlKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHNjb3BlID0gY29udGV4dC5zb3VyY2VDb2RlLmdldFNjb3BlKG5vZGUpO1xuXG4gICAgICAgIGZvciAoY29uc3QgdmFyaWFibGUgb2Ygc2NvcGUudmFyaWFibGVzKSB7XG4gICAgICAgICAgaWYgKCF2YXJpYWJsZS5uYW1lLnN0YXJ0c1dpdGgoJ18nKSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgZGVmaW5pdGlvbk5vZGUgPSB2YXJpYWJsZS5kZWZzWzBdO1xuICAgICAgICAgIGFzc2VydE5vbk51bGxhYmxlKGRlZmluaXRpb25Ob2RlLCAnVXNlci1kZWNsYXJlZCBfLXByZWZpeGVkIHZhcmlhYmxlcyBhbHdheXMgaGF2ZSBhdCBsZWFzdCBvbmUgZGVmaW5pdGlvbicpO1xuXG4gICAgICAgICAgLy8gRm9yIHBhcmFtZXRlcnMsIG9ubHkgY291bnQgcmVmZXJlbmNlcyBpbnNpZGUgdGhlIGZ1bmN0aW9uIGJvZHlcbiAgICAgICAgICAvLyAobm90IGluIHR5cGUgYW5ub3RhdGlvbnMgbGlrZSBgYXNzZXJ0cyBfb2JqIGlzIFRgKS5cbiAgICAgICAgICAvLyBGb3IgbG9jYWwgdmFyaWFibGVzLCBhbnkgcmVhZCByZWZlcmVuY2UgY291bnRzLlxuICAgICAgICAgIGNvbnN0IGZ1bmN0aW9uQm9keSA9IChub2RlIGFzIE5vZGVXaXRoQm9keSkuYm9keTtcbiAgICAgICAgICBjb25zdCBib2R5UmFuZ2UgPSBmdW5jdGlvbkJvZHk/
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saW50ZXJzL2VzbGludC1ydWxlcy9uby11c2VkLXVuZGVyc2NvcmUtdmFyaWFibGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBFU0xpbnQgcnVsZTogbm8tdXNlZC11bmRlcnNjb3JlLXZhcmlhYmxlc1xuICpcbiAqIFJlcG9ydHMgYW4gZXJyb3Igd2hlbiBhIHBhcmFtZXRlciBvciBsb2NhbCB2YXJpYWJsZSB3aXRoIGEgYF9gIHByZWZpeCBpc1xuICogYWN0dWFsbHkgcmVmZXJlbmNlZCBpbiB0aGUgZnVuY3Rpb24gYm9keS4gVGhlIGBfYCBwcmVmaXggY29udmVudGlvbiBzaWduYWxzXG4gKiBcInRoaXMgaWRlbnRpZmllciBpcyBpbnRlbnRpb25hbGx5IHVudXNlZFwiIOKAlCBpZiBpdCBJUyB1c2VkLCB0aGUgcHJlZml4IGlzXG4gKiBtaXNsZWFkaW5nIGFuZCBzaG91bGQgYmUgcmVtb3ZlZC5cbiAqL1xuaW1wb3J0IHR5cGUgeyBSdWxlIH0gZnJvbSAnZXNsaW50JztcblxuaW1wb3J0IHsgYXNzZXJ0Tm9uTnVsbGFibGUgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvdHlwZS1ndWFyZHMnO1xuXG5pbnRlcmZhY2UgTm9kZVdpdGhCb2R5IHtcbiAgcmVhZG9ubHkgYm9keT86IFJ1bGUuTm9kZTtcbn1cblxuLyoqXG5NZXNzYWdlIElEIHJlcG9ydGVkIHdoZW4gYSB2YXJpYWJsZSBjYXJyaWVzIGEgYF9gIHByZWZpeCAoc2lnbmFsbGluZyB1bnVzZWQpIGJ1dCBpcyBhY3R1YWxseSB1c2VkLlxuICovXG5leHBvcnQgY29uc3QgTUVTU0FHRV9JRCA9ICdub1VzZWRVbmRlcnNjb3JlVmFyaWFibGVzJztcblxuLyoqXG4gKiBFU0xpbnQgcnVsZSBkaXNhbGxvd2luZyBgX2AtcHJlZml4ZWQgcGFyYW1ldGVycyBhbmQgbG9jYWwgdmFyaWFibGVzIHRoYXQgYXJlIGFjdHVhbGx5IHVzZWQsIHNpbmNlIHRoZSBwcmVmaXggYWR2ZXJ0aXNlcyB0aGVtIGFzIHVudXNlZC5cbiAqL1xuZXhwb3J0IGNvbnN0IG5vVXNlZFVuZGVyc2NvcmVWYXJpYWJsZXM6IFJ1bGUuUnVsZU1vZHVsZSA9IHtcbiAgY3JlYXRlKGNvbnRleHQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgJzpmdW5jdGlvbicobm9kZTogUnVsZS5Ob2RlKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHNjb3BlID0gY29udGV4dC5zb3VyY2VDb2RlLmdldFNjb3BlKG5vZGUpO1xuXG4gICAgICAgIGZvciAoY29uc3QgdmFyaWFibGUgb2Ygc2NvcGUudmFyaWFibGVzKSB7XG4gICAgICAgICAgaWYgKCF2YXJpYWJsZS5uYW1lLnN0YXJ0c1dpdGgoJ18nKSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgZGVmaW5pdGlvbk5vZGUgPSB2YXJpYWJsZS5kZWZzWzBdO1xuICAgICAgICAgIGFzc2VydE5vbk51bGxhYmxlKGRlZmluaXRpb25Ob2RlLCAnVXNlci1kZWNsYXJlZCBfLXByZWZpeGVkIHZhcmlhYmxlcyBhbHdheXMgaGF2ZSBhdCBsZWFzdCBvbmUgZGVmaW5pdGlvbicpO1xuXG4gICAgICAgICAgLy8gRm9yIHBhcmFtZXRlcnMsIG9ubHkgY291bnQgcmVmZXJlbmNlcyBpbnNpZGUgdGhlIGZ1bmN0aW9uIGJvZHlcbiAgICAgICAgICAvLyAobm90IGluIHR5cGUgYW5ub3RhdGlvbnMgbGlrZSBgYXNzZXJ0cyBfb2JqIGlzIFRgKS5cbiAgICAgICAgICAvLyBGb3IgbG9jYWwgdmFyaWFibGVzLCBhbnkgcmVhZCByZWZlcmVuY2UgY291bnRzLlxuICAgICAgICAgIGNvbnN0IGZ1bmN0aW9uQm9keSA9IChub2RlIGFzIE5vZGVXaXRoQm9keSkuYm9keTtcbiAgICAgICAgICBjb25zdCBib2R5UmFuZ2UgPSBmdW5jdGlvbkJvZHk/LnJhbmdlO1xuICAgICAgICAgIGNvbnN0IGlzUGFyYW1ldGVyID0gZGVmaW5pdGlvbk5vZGUudHlwZSA9PT0gJ1BhcmFtZXRlcic7XG4gICAgICAgICAgLy8gTG9jYWwgdmFyaWFibGVzIG9yIGZhbGxiYWNrOiBjb3VudCBhbGwgcmVhZHNcbiAgICAgICAgICBjb25zdCBoYXNCb2R5UmVmZXJlbmNlcyA9IHZhcmlhYmxlLnJlZmVyZW5jZXMuc29tZSgocmVmZXJlbmNlKSA9PlxuICAgICAgICAgICAgcmVmZXJlbmNlLmlzUmVhZCgpXG4gICAgICAgICAgICAmJiAoIWlzUGFyYW1ldGVyIHx8ICFib2R5UmFuZ2UgfHwgIXJlZmVyZW5jZS5pZGVudGlmaWVyLnJhbmdlXG4gICAgICAgICAgICAgIHx8IChyZWZlcmVuY2UuaWRlbnRpZmllci5yYW5nZVswXSA+PSBib2R5UmFuZ2VbMF0gJiYgcmVmZXJlbmNlLmlkZW50aWZpZXIucmFuZ2VbMV0gPD0gYm9keVJhbmdlWzFdKSlcbiAgICAgICAgICApO1xuICAgICAgICAgIGlmIChoYXNCb2R5UmVmZXJlbmNlcykge1xuICAgICAgICAgICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgICAgICAgICBkYXRhOiB7IG5hbWU6IHZhcmlhYmxlLm5hbWUgfSxcbiAgICAgICAgICAgICAgbWVzc2FnZUlkOiBNRVNTQUdFX0lELFxuICAgICAgICAgICAgICBub2RlOiBkZWZpbml0aW9uTm9kZS5uYW1lXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9LFxuICBtZXRhOiB7XG4gICAgZG9jczoge1xuICAgICAgZGVzY3JpcHRpb246ICdEaXNhbGxvdyBgX2AtcHJlZml4ZWQgcGFyYW1ldGVycyBhbmQgbG9jYWwgdmFyaWFibGVzIHRoYXQgYXJlIGFjdHVhbGx5IHVzZWQnXG4gICAgfSxcbiAgICBtZXNzYWdlczoge1xuICAgICAgW01FU1NBR0VfSURdOiAnXCJ7eyBuYW1lIH19XCIgaGFzIGEgYF9gIHByZWZpeCBidXQgaXMgdXNlZC4gUmVtb3ZlIHRoZSBgX2AgcHJlZml4IHNpbmNlIGl0IGlzIG5vdCB1bnVzZWQuJ1xuICAgIH0sXG4gICAgc2NoZW1hOiBbXSxcbiAgICB0eXBlOiAncHJvYmxlbSdcbiAgfVxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFZQSxTQUFTLHlCQUF5QjtBQVMzQixNQUFNLGFBQWE7QUFLbkIsTUFBTSw0QkFBNkM7QUFBQSxFQUN4RCxPQUFPLFNBQVM7QUFDZCxXQUFPO0FBQUEsTUFDTCxZQUFZLE1BQXVCO0FBQ2pDLGNBQU0sUUFBUSxRQUFRLFdBQVcsU0FBUyxJQUFJO0FBRTlDLG1CQUFXLFlBQVksTUFBTSxXQUFXO0FBQ3RDLGNBQUksQ0FBQyxTQUFTLEtBQUssV0FBVyxHQUFHLEdBQUc7QUFDbEM7QUFBQSxVQUNGO0FBRUEsZ0JBQU0saUJBQWlCLFNBQVMsS0FBSyxDQUFDO0FBQ3RDLDRCQUFrQixnQkFBZ0Isd0VBQXdFO0FBSzFHLGdCQUFNLGVBQWdCLEtBQXNCO0FBQzVDLGdCQUFNLFlBQVksY0FBYztBQUNoQyxnQkFBTSxjQUFjLGVBQWUsU0FBUztBQUU1QyxnQkFBTSxvQkFBb0IsU0FBUyxXQUFXO0FBQUEsWUFBSyxDQUFDLGNBQ2xELFVBQVUsT0FBTyxNQUNiLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxVQUFVLFdBQVcsU0FDbEQsVUFBVSxXQUFXLE1BQU0sQ0FBQyxLQUFLLFVBQVUsQ0FBQyxLQUFLLFVBQVUsV0FBVyxNQUFNLENBQUMsS0FBSyxVQUFVLENBQUM7QUFBQSxVQUNyRztBQUNBLGNBQUksbUJBQW1CO0FBQ3JCLG9CQUFRLE9BQU87QUFBQSxjQUNiLE1BQU0sRUFBRSxNQUFNLFNBQVMsS0FBSztBQUFBLGNBQzVCLFdBQVc7QUFBQSxjQUNYLE1BQU0sZUFBZTtBQUFBLFlBQ3ZCLENBQUM7QUFBQSxVQUNIO0FBQUEsUUFDRjtBQUFBLE1BQ0Y7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUFBLEVBQ0EsTUFBTTtBQUFBLElBQ0osTUFBTTtBQUFBLE1BQ0osYUFBYTtBQUFBLElBQ2Y7QUFBQSxJQUNBLFVBQVU7QUFBQSxNQUNSLENBQUMsVUFBVSxHQUFHO0FBQUEsSUFDaEI7QUFBQSxJQUNBLFFBQVEsQ0FBQztBQUFBLElBQ1QsTUFBTTtBQUFBLEVBQ1I7QUFDRjsiLCJuYW1lcyI6W119
|
|
@@ -55,7 +55,7 @@ const paramsOptionsNameMatch = {
|
|
|
55
55
|
function getClassName(methodDefinition) {
|
|
56
56
|
const classBody = methodDefinition.parent;
|
|
57
57
|
const classNode = classBody?.parent;
|
|
58
|
-
return
|
|
58
|
+
return classNode && "id" in classNode && classNode.id && typeof classNode.id === "object" && "name" in classNode.id && typeof classNode.id.name === "string" ? classNode.id.name : void 0;
|
|
59
59
|
}
|
|
60
60
|
function getExpectedPrefix(node) {
|
|
61
61
|
const methodPrefix = getMethodExpectedPrefix(node);
|
|
@@ -69,10 +69,7 @@ function getFunctionExpectedPrefix(node) {
|
|
|
69
69
|
}
|
|
70
70
|
function getMethodExpectedPrefix(node) {
|
|
71
71
|
const methodDefinition = node.parent;
|
|
72
|
-
if (methodDefinition?.type !== "MethodDefinition") {
|
|
73
|
-
return void 0;
|
|
74
|
-
}
|
|
75
|
-
if (!("key" in methodDefinition) || !methodDefinition.key || typeof methodDefinition.key !== "object" || !("name" in methodDefinition.key) || typeof methodDefinition.key.name !== "string") {
|
|
72
|
+
if (methodDefinition?.type !== "MethodDefinition" || !("key" in methodDefinition) || !methodDefinition.key || typeof methodDefinition.key !== "object" || !("name" in methodDefinition.key) || typeof methodDefinition.key.name !== "string") {
|
|
76
73
|
return void 0;
|
|
77
74
|
}
|
|
78
75
|
const methodName = methodDefinition.key.name;
|
|
@@ -134,4 +131,4 @@ export {
|
|
|
134
131
|
MESSAGE_ID,
|
|
135
132
|
paramsOptionsNameMatch
|
|
136
133
|
};
|
|
137
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpbnRlcnMvZXNsaW50LXJ1bGVzL3BhcmFtcy1vcHRpb25zLW5hbWUtbWF0Y2gudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBFU0xpbnQgcnVsZTogcGFyYW1zLW9wdGlvbnMtbmFtZS1tYXRjaFxuICpcbiAqIEVuc3VyZXMgdGhhdCBwYXJhbWV0ZXItYmFnIHR5cGUgbmFtZXMgbWF0Y2ggdGhlIGZ1bmN0aW9uIG9yIGNvbnN0cnVjdG9yIHRoZXlcbiAqIGJlbG9uZyB0bywgb24gdHdvIGF4ZXMgXHUyMDE0IGEgcHJlZml4IGRlcml2ZWQgZnJvbSB0aGUgb3duZXIgYW5kIGEgc3VmZml4IGRlcml2ZWRcbiAqIGZyb20gaG93IHRoZSBiYWcgaXMgcGFzc2VkLlxuICpcbiAqIFByZWZpeCAob3duZXIpOlxuICogLSBgZm9vQmFyKHBhcmFtczogRm9vQmFyXHUyMDI2KWAgXHUyMDE0IFBhc2NhbENhc2Ugb2YgdGhlIGZ1bmN0aW9uIG5hbWVcbiAqIC0gYGNsYXNzIEJheiB7IGNvbnN0cnVjdG9yKHBhcmFtczogQmF6Q29uc3RydWN0b3JcdTIwMjYpIH1gIFx1MjAxNCBDbGFzc05hbWUgKyBgQ29uc3RydWN0b3JgXG4gKiAtIGBjbGFzcyBCYXogeyBtZXRob2QocGFyYW1zOiBCYXpNZXRob2RcdTIwMjYpIH1gIFx1MjAxNCBDbGFzc05hbWUgKyBQYXNjYWxDYXNlKG1ldGhvZE5hbWUpXG4gKlxuICogU3VmZml4ICh3aGV0aGVyIHRoZSBiYWcgaXMgYSByZXF1aXJlZCBzb2xlIGFyZ3VtZW50KTpcbiAqIC0gYFBhcmFtc2Agb25seSB3aGVuIHRoZSBiYWcgaXMgdGhlIFNPTEUgYW5kIFJFUVVJUkVEIHBhcmFtZXRlciBcdTIwMTRcbiAqICAgYGZvb0JhcihwYXJhbXM6IEZvb0JhclBhcmFtcylgXG4gKiAtIGBPcHRpb25zYCBvdGhlcndpc2UuIFRoYXQgaXM6IGFuIE9QVElPTkFMIGJhZyBcdTIwMTQgYGZvb0JhcihvcHRpb25zPzogRm9vQmFyT3B0aW9ucylgXG4gKiAgIG9yIGBmb29CYXIob3B0aW9uczogRm9vQmFyT3B0aW9ucyA9IHt9KWAgXHUyMDE0IG9yIGEgYmFnIFNVUFBMRU1FTlRBUlkgdG8gb3RoZXJcbiAqICAgcGFyYW1ldGVycyBcdTIwMTQgYGZvb0JhcihiYXo6IHN0cmluZywgb3B0aW9uczogRm9vQmFyT3B0aW9ucylgLlxuICpcbiAqIE9ubHkgY2hlY2tzIHBhcmFtZXRlcnMgd2hvc2UgdHlwZSBhbm5vdGF0aW9uIG5hbWUgZW5kcyB3aXRoIGBQYXJhbXNgIG9yXG4gKiBgT3B0aW9uc2AuIE9ubHkgY2hlY2tzIGV4cG9ydGVkIGZ1bmN0aW9ucyBhbmQgbWVtYmVycyBvZiBleHBvcnRlZCBjbGFzc2VzXG4gKiAocmVnYXJkbGVzcyBvZiBhY2Nlc3NpYmlsaXR5IFx1MjAxNCBgcHVibGljYCwgYHByb3RlY3RlZGAsIGFuZCBgcHJpdmF0ZWAgYXJlIGFsbFxuICogY2hlY2tlZCkgdG8gYXZvaWQgZmFsc2UgcG9zaXRpdmVzIGZyb20gaW50ZXJuYWwgb3B0aW9ucy1wYXNzdGhyb3VnaCBoZWxwZXJzLlxuICovXG5cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bm5lY2Vzc2FyeS1jb25kaXRpb24gLS0gUnVsZS5Ob2RlIHBhcmVudC9wcm9wZXJ0eSB0eXBlcyBhcmUgd2lkZXIgdGhhbiB3aGF0IHRoZSB0eXBlIGNoZWNrZXIgaW5mZXJzOyBkZWZlbnNpdmUgY2hlY2tzIGFyZSBhcHByb3ByaWF0ZSBmb3IgQVNUIHRyYXZlcnNhbC4gKi9cblxuaW1wb3J0IHR5cGUgeyBSdWxlIH0gZnJvbSAnZXNsaW50JztcblxuY29uc3QgUEFSQU1TX09QVElPTlNfU1VGRklYX1BBVFRFUk4gPSAvKD86UGFyYW1zfE9wdGlvbnMpJC87XG5jb25zdCBQQVJBTVNfU1VGRklYID0gJ1BhcmFtcyc7XG5jb25zdCBPUFRJT05TX1NVRkZJWCA9ICdPcHRpb25zJztcblxuLyoqXG5NZXNzYWdlIElEIHJlcG9ydGVkIHdoZW4gYSBwYXJhbWV0ZXItYmFnIHR5cGUncyBuYW1lIGRvZXMgbm90IG1hdGNoIHRoZSBleHBlY3RlZCBuYW1lIChwcmVmaXggYW5kIHJlcXVpcmVkL29wdGlvbmFsIHN1ZmZpeCkgZm9yIGl0cyBmdW5jdGlvbiBvciBjb25zdHJ1Y3Rvci5cbiAqL1xuZXhwb3J0IGNvbnN0IE1FU1NBR0VfSUQgPSAncGFyYW1zT3B0aW9uc05hbWVNYXRjaCc7XG5cbmludGVyZmFjZSBGdW5jdGlvbk5vZGVXaXRoUGFyYW1zIHtcbiAgcmVhZG9ubHkgcGFyYW1zOiBSdWxlLk5vZGVbXTtcbn1cblxuaW50ZXJmYWNlIE1heWJlT3B0aW9uYWxOb2RlIHtcbiAgcmVhZG9ubHkgb3B0aW9uYWw/OiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgVHlwZUFubm90YXRpb25JbmZvIHtcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICByZWFkb25seSBub2RlOiBSdWxlLk5vZGU7XG59XG5cbi8qKlxuICogRVNMaW50IHJ1bGUgcmVxdWlyaW5nIGAqUGFyYW1zYC9gKk9wdGlvbnNgIHR5cGUgbmFtZXMgdG8gbWF0Y2ggdGhlaXIgb3duaW5nIGZ1bmN0aW9uIG9yIGNvbnN0cnVjdG9yLCBhbmQgdG8gdXNlIHRoZSBzdWZmaXggdGhhdCBtYXRjaGVzIHRoZSBzb2xlLXZzLXN1cHBsZW1lbnRhcnkgYXJndW1lbnQgY29udmVudGlvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IHBhcmFtc09wdGlvbnNOYW1lTWF0Y2g6IFJ1bGUuUnVsZU1vZHVsZSA9IHtcbiAgY3JlYXRlKGNvbnRleHQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgJzpmdW5jdGlvbltwYXJhbXMubGVuZ3RoPjBdJyhub2RlOiBSdWxlLk5vZGUpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFpc0luRXhwb3J0ZWRTY29wZShub2RlKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZ1bmN0aW9uTm9kZSA9IG5vZGUgYXMgRnVuY3Rpb25Ob2RlV2l0aFBhcmFtcyAmIFJ1bGUuTm9kZTtcbiAgICAgICAgY29uc3QgZXhwZWN0ZWRQcmVmaXggPSBnZXRFeHBlY3RlZFByZWZpeChub2RlKTtcbiAgICAgICAgaWYgKCFleHBlY3RlZFByZWZpeCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGlzU29sZVBhcmFtZXRlciA9IGZ1bmN0aW9uTm9kZS5wYXJhbXMubGVuZ3RoID09PSAxO1xuXG4gICAgICAgIGZvciAoY29uc3QgcGFyYW1ldGVyIG9mIGZ1bmN0aW9uTm9kZS5wYXJhbXMpIHtcbiAgICAgICAgICBjb25zdCB0eXBlSW5mbyA9IGdldFR5cGVBbm5vdGF0aW9uSW5mbyhwYXJhbWV0ZXIpO1xuICAgICAgICAgIGlmICghdHlwZUluZm8gfHwgIVBBUkFNU19PUFRJT05TX1NVRkZJWF9QQVRURVJOLnRlc3QodHlwZUluZm8ubmFtZSkpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIEEgcmVxdWlyZWQgc29sZS1hcmd1bWVudCBiYWcgXHUyMTkyIGAqUGFyYW1zYC4gQW4gb3B0aW9uYWwgYmFnIChgP2Agb3IgYSBkZWZhdWx0XG4gICAgICAgICAgLy8gdmFsdWUpIG9yIGEgYmFnIHN1cHBsZW1lbnRhcnkgdG8gb3RoZXIgcGFyYW1ldGVycyBcdTIxOTIgYCpPcHRpb25zYC5cbiAgICAgICAgICBjb25zdCBleHBlY3RlZFN1ZmZpeCA9IGlzU29sZVBhcmFtZXRlciAmJiAhaXNPcHRpb25hbFBhcmFtZXRlcihwYXJhbWV0ZXIpID8gUEFSQU1TX1NVRkZJWCA6IE9QVElPTlNfU1VGRklYO1xuICAgICAgICAgIGNvbnN0IGV4cGVjdGVkTmFtZSA9IGAke2V4cGVjdGVkUHJlZml4fSR7ZXhwZWN0ZWRTdWZmaXh9YDtcblxuICAgICAgICAgIGlmICh0eXBlSW5mby5uYW1lICE9PSBleHBlY3RlZE5hbWUpIHtcbiAgICAgICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgIGFjdHVhbE5hbWU6IHR5cGVJbmZvLm5hbWUsXG4gICAgICAgICAgICAgICAgZXhwZWN0ZWROYW1lXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIG1lc3NhZ2VJZDogTUVTU0FHRV9JRCxcbiAgICAgICAgICAgICAgbm9kZTogdHlwZUluZm8ubm9kZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgfSxcbiAgbWV0YToge1xuICAgIGRvY3M6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnUmVxdWlyZSBgKlBhcmFtc2AvYCpPcHRpb25zYCB0eXBlIG5hbWVzIHRvIG1hdGNoIHRoZSBvd25pbmcgZnVuY3Rpb24vY29uc3RydWN0b3IgKHByZWZpeCkgYW5kIHRoZSBzb2xlLXZzLXN1cHBsZW1lbnRhcnkgYXJndW1lbnQgY29udmVudGlvbiAoc3VmZml4KSdcbiAgICB9LFxuICAgIG1lc3NhZ2VzOiB7XG4gICAgICBbTUVTU0FHRV9JRF06ICdUeXBlIFwie3sgYWN0dWFsTmFtZSB9fVwiIGRvZXMgbm90IG1hdGNoIHRoZSBleHBlY3RlZCBuYW1lIFwie3sgZXhwZWN0ZWROYW1lIH19XCIgZm9yIHRoaXMgZnVuY3Rpb24vY29uc3RydWN0b3IuJ1xuICAgIH0sXG4gICAgc2NoZW1hOiBbXSxcbiAgICB0eXBlOiAnc3VnZ2VzdGlvbidcbiAgfVxufTtcblxuZnVuY3Rpb24gZ2V0Q2xhc3NOYW1lKG1ldGhvZERlZmluaXRpb246IFJ1bGUuTm9kZSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGNsYXNzQm9keSA9IG1ldGhvZERlZmluaXRpb24ucGFyZW50O1xuICBjb25zdCBjbGFzc05vZGUgPSBjbGFzc0JvZHk/LnBhcmVudDtcbiAgcmV0dXJuICFjbGFzc05vZGUgfHwgISgnaWQnIGluIGNsYXNzTm9kZSkgfHwgIWNsYXNzTm9kZS5pZCB8fCB0eXBlb2YgY2xhc3NOb2RlLmlkICE9PSAnb2JqZWN0JyB8fCAhKCduYW1lJyBpbiBjbGFzc05vZGUuaWQpXG4gICAgICB8fCB0eXBlb2YgY2xhc3NOb2RlLmlkLm5hbWUgIT09ICdzdHJpbmcnXG4gICAgPyB1bmRlZmluZWRcbiAgICA6IGNsYXNzTm9kZS5pZC5uYW1lO1xufVxuXG5mdW5jdGlvbiBnZXRFeHBlY3RlZFByZWZpeChub2RlOiBSdWxlLk5vZGUpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBjb25zdCBtZXRob2RQcmVmaXggPSBnZXRNZXRob2RFeHBlY3RlZFByZWZpeChub2RlKTtcbiAgcmV0dXJuIG1ldGhvZFByZWZpeCA/PyBnZXRGdW5jdGlvbkV4cGVjdGVkUHJlZml4KG5vZGUpO1xufVxuXG5mdW5jdGlvbiBnZXRGdW5jdGlvbkV4cGVjdGVkUHJlZml4KG5vZGU6IFJ1bGUuTm9kZSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIC8vIE5hbWVkIGZ1bmN0aW9uIGRlY2xhcmF0aW9uOiBmdW5jdGlvbiBmb29CYXIocGFyYW1zOiBGb29CYXJQYXJhbXMpXG4gIGlmICgnaWQnIGluIG5vZGUgJiYgbm9kZS5pZCAmJiB0eXBlb2Ygbm9kZS5pZCA9PT0gJ29iamVjdCcgJiYgJ25hbWUnIGluIG5vZGUuaWQgJiYgdHlwZW9mIG5vZGUuaWQubmFtZSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gdG9QYXNjYWxDYXNlKG5vZGUuaWQubmFtZSk7XG4gIH1cblxuICAvLyBBcnJvdyBmdW5jdGlvbiBhc3NpZ25lZCB0byBhIHZhcmlhYmxlOiBjb25zdCBmb29CYXIgPSAocGFyYW1zOiBGb29CYXJQYXJhbXMpID0+IC4uLlxuICByZXR1cm4gbm9kZS5wYXJlbnQ/LnR5cGUgPT09ICdWYXJpYWJsZURlY2xhcmF0b3InICYmICdpZCcgaW4gbm9kZS5wYXJlbnQgJiYgbm9kZS5wYXJlbnQuaWQgJiYgdHlwZW9mIG5vZGUucGFyZW50LmlkID09PSAnb2JqZWN0JyAmJiAnbmFtZScgaW4gbm9kZS5wYXJlbnQuaWRcbiAgICAgICYmIHR5cGVvZiBub2RlLnBhcmVudC5pZC5uYW1lID09PSAnc3RyaW5nJ1xuICAgID8gdG9QYXNjYWxDYXNlKG5vZGUucGFyZW50LmlkLm5hbWUpXG4gICAgOiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGdldE1ldGhvZEV4cGVjdGVkUHJlZml4KG5vZGU6IFJ1bGUuTm9kZSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IG1ldGhvZERlZmluaXRpb24gPSBub2RlLnBhcmVudDtcbiAgaWYgKG1ldGhvZERlZmluaXRpb24/LnR5cGUgIT09ICdNZXRob2REZWZpbml0aW9uJykge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gRGVmZW5zaXZlIGd1YXJkOiBFU0xpbnQgQVNUIE1ldGhvZERlZmluaXRpb24gYWx3YXlzIGhhcyBhIG5hbWVkIGtleS4gKi9cbiAgaWYgKFxuICAgICEoJ2tleScgaW4gbWV0aG9kRGVmaW5pdGlvbikgfHwgIW1ldGhvZERlZmluaXRpb24ua2V5IHx8IHR5cGVvZiBtZXRob2REZWZpbml0aW9uLmtleSAhPT0gJ29iamVjdCcgfHwgISgnbmFtZScgaW4gbWV0aG9kRGVmaW5pdGlvbi5rZXkpIHx8IHR5cGVvZiBtZXRob2REZWZpbml0aW9uLmtleS5uYW1lICE9PSAnc3RyaW5nJ1xuICApIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIC8qIHY4IGlnbm9yZSBzdG9wICovXG5cbiAgY29uc3QgbWV0aG9kTmFtZSA9IG1ldGhvZERlZmluaXRpb24ua2V5Lm5hbWU7XG4gIGNvbnN0IGNsYXNzTmFtZSA9IGdldENsYXNzTmFtZShtZXRob2REZWZpbml0aW9uKTtcbiAgaWYgKCFjbGFzc05hbWUpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcmV0dXJuIG1ldGhvZE5hbWUgPT09ICdjb25zdHJ1Y3RvcicgPyBgJHtjbGFzc05hbWV9Q29uc3RydWN0b3JgIDogY2xhc3NOYW1lICsgdG9QYXNjYWxDYXNlKG1ldGhvZE5hbWUpO1xufVxuXG5mdW5jdGlvbiBnZXRUeXBlQW5ub3RhdGlvbkluZm8ocGFyYW1ldGVyOiBSdWxlLk5vZGUpOiBUeXBlQW5ub3RhdGlvbkluZm8gfCB1bmRlZmluZWQge1xuICAvLyBVbndyYXAgYSBkZWZhdWx0ZWQgcGFyYW1ldGVyIHN1Y2ggYXMgYG9wdGlvbnM6IEZvb09wdGlvbnMgPSB7fWAuXG4gIC8vIEl0cyB0eXBlIGFubm90YXRpb24gbGl2ZXMgb24gdGhlIEFzc2lnbm1lbnRQYXR0ZXJuJ3MgbGVmdC1oYW5kIGJpbmRpbmcuXG4gIGNvbnN0IHRhcmdldCA9IHBhcmFtZXRlci50eXBlID09PSAnQXNzaWdubWVudFBhdHRlcm4nID8gcGFyYW1ldGVyLmxlZnQgOiBwYXJhbWV0ZXI7XG5cbiAgLyogdjggaWdub3JlIHN0YXJ0IC0tIERlZmVuc2l2ZSBndWFyZDogVHlwZVNjcmlwdC1wYXJzZWQgcGFyYW1zIGFsd2F5cyBoYXZlIHR5cGVBbm5vdGF0aW9uIHdoZW4gdHlwZWQuICovXG4gIGlmICghKCd0eXBlQW5ub3RhdGlvbicgaW4gdGFyZ2V0KSB8fCAhdGFyZ2V0LnR5cGVBbm5vdGF0aW9uKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xuXG4gIGNvbnN0IGFubm90YXRpb24gPSB0YXJnZXQudHlwZUFubm90YXRpb24gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGNvbnN0IHR5cGVOb2RlID0gYW5ub3RhdGlvblsndHlwZUFubm90YXRpb24nXTtcbiAgLyogdjggaWdub3JlIHN0YXJ0IC0tIERlZmVuc2l2ZSBndWFyZDogdGhlIFR5cGVTY3JpcHQgcGFyc2VyIGFsd2F5cyBwcm9kdWNlcyBhbiBBU1Qgbm9kZSBmb3IgdHlwZUFubm90YXRpb24uICovXG4gIGlmICghdHlwZU5vZGUgfHwgdHlwZW9mIHR5cGVOb2RlICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgLyogdjggaWdub3JlIHN0b3AgKi9cblxuICBjb25zdCB0eXBlTm9kZU9iamVjdCA9IHR5cGVOb2RlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG4gIC8vIERpcmVjdCByZWZlcmVuY2U6IEZvb0JhclBhcmFtc1xuICBpZiAodHlwZU5vZGVPYmplY3RbJ3R5cGUnXSA9PT0gJ1RTVHlwZVJlZmVyZW5jZScgJiYgdHlwZU5vZGVPYmplY3RbJ3R5cGVOYW1lJ10gJiYgdHlwZW9mIHR5cGVOb2RlT2JqZWN0Wyd0eXBlTmFtZSddID09PSAnb2JqZWN0Jykge1xuICAgIGNvbnN0IHR5cGVOYW1lID0gdHlwZU5vZGVPYmplY3RbJ3R5cGVOYW1lJ10gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgLyogdjggaWdub3JlIHN0YXJ0IC0tIERlZmVuc2l2ZSBndWFyZDogVFNUeXBlUmVmZXJlbmNlIHR5cGVOYW1lIGlzIGFsd2F5cyBhbiBJZGVudGlmaWVyIHdpdGggYSBzdHJpbmcgbmFtZS4gKi9cbiAgICBpZiAodHlwZU5hbWVbJ3R5cGUnXSA9PT0gJ0lkZW50aWZpZXInICYmIHR5cGVvZiB0eXBlTmFtZVsnbmFtZSddID09PSAnc3RyaW5nJykge1xuICAgICAgLyogdjggaWdub3JlIHN0b3AgKi9cbiAgICAgIHJldHVybiB7IG5hbWU6IHR5cGVOYW1lWyduYW1lJ10sIG5vZGU6IHR5cGVOb2RlIGFzIFJ1bGUuTm9kZSB9O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGlzSW5FeHBvcnRlZFNjb3BlKG5vZGU6IFJ1bGUuTm9kZSk6IGJvb2xlYW4ge1xuICAvLyBDbGFzcyBtZXRob2Qgb3IgY29uc3RydWN0b3I6IGNoZWNrIHRoYXQgdGhlIGNsYXNzIGlzIGV4cG9ydGVkLCByZWdhcmRsZXNzIG9mIGFjY2Vzc2liaWxpdHlcbiAgLy8gKHB1YmxpYy9wcm90ZWN0ZWQvcHJpdmF0ZSBtZW1iZXJzIGFyZSBhbGwgY2hlY2tlZCkuXG4gIGNvbnN0IG1ldGhvZERlZmluaXRpb24gPSBub2RlLnBhcmVudDtcbiAgaWYgKG1ldGhvZERlZmluaXRpb24/LnR5cGUgPT09ICdNZXRob2REZWZpbml0aW9uJykge1xuICAgIC8vIENoZWNrIGlmIHRoZSBjbGFzcyBpdHNlbGYgaXMgZXhwb3J0ZWRcbiAgICBjb25zdCBjbGFzc0JvZHkgPSBtZXRob2REZWZpbml0aW9uLnBhcmVudDtcbiAgICBjb25zdCBjbGFzc05vZGUgPSBjbGFzc0JvZHk/LnBhcmVudDtcbiAgICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gRGVmZW5zaXZlIGd1YXJkOiBFU0xpbnQgQVNUIGFsd2F5cyBoYXMgcGFyZW50IGNoYWluIGZvciBjbGFzcyBtZXRob2RzLiAqL1xuICAgIGlmICghY2xhc3NOb2RlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIC8qIHY4IGlnbm9yZSBzdG9wICovXG4gICAgY29uc3QgY2xhc3NQYXJlbnQgPSBjbGFzc05vZGUucGFyZW50O1xuICAgIHJldHVybiBjbGFzc1BhcmVudD8udHlwZSA9PT0gJ0V4cG9ydE5hbWVkRGVjbGFyYXRpb24nIHx8IGNsYXNzUGFyZW50Py50eXBlID09PSAnRXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uJztcbiAgfVxuXG4gIC8vIFRvcC1sZXZlbCBmdW5jdGlvbjogY2hlY2sgaWYgZXhwb3J0ZWRcbiAgaWYgKG5vZGUudHlwZSA9PT0gJ0Z1bmN0aW9uRGVjbGFyYXRpb24nKSB7XG4gICAgY29uc3QgcGFyZW50Tm9kZSA9IG5vZGUucGFyZW50O1xuICAgIHJldHVybiBwYXJlbnROb2RlPy50eXBlID09PSAnRXhwb3J0TmFtZWREZWNsYXJhdGlvbicgfHwgcGFyZW50Tm9kZT8udHlwZSA9PT0gJ0V4cG9ydERlZmF1bHREZWNsYXJhdGlvbic7XG4gIH1cblxuICAvLyBBcnJvdyBmdW5jdGlvbiBpbiB2YXJpYWJsZTogY2hlY2sgaWYgdGhlIHZhcmlhYmxlIGRlY2xhcmF0aW9uIGlzIGV4cG9ydGVkXG4gIGlmIChub2RlLnBhcmVudD8udHlwZSA9PT0gJ1ZhcmlhYmxlRGVjbGFyYXRvcicpIHtcbiAgICBjb25zdCB2YXJpYWJsZURlY2xhcmF0aW9uID0gbm9kZS5wYXJlbnQucGFyZW50O1xuICAgIGlmICh2YXJpYWJsZURlY2xhcmF0aW9uPy5wYXJlbnQ/LnR5cGUgPT09ICdFeHBvcnROYW1lZERlY2xhcmF0aW9uJykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBpc09wdGlvbmFsUGFyYW1ldGVyKHBhcmFtZXRlcjogUnVsZS5Ob2RlKTogYm9vbGVhbiB7XG4gIC8vIGBvcHRpb25zOiBGb29PcHRpb25zID0ge31gIGlzIGFuIEFzc2lnbm1lbnRQYXR0ZXJuOyBgb3B0aW9ucz86IEZvb09wdGlvbnNgIGNhcnJpZXMgYW5cbiAgLy8gYG9wdGlvbmFsYCBmbGFnLiBCb3RoIG1ha2UgdGhlIGJhZyBvcHRpb25hbCBcdTIxOTIgYCpPcHRpb25zYC5cbiAgcmV0dXJuIHBhcmFtZXRlci50eXBlID09PSAnQXNzaWdubWVudFBhdHRlcm4nIHx8IChwYXJhbWV0ZXIgYXMgTWF5YmVPcHRpb25hbE5vZGUpLm9wdGlvbmFsID09PSB0cnVlO1xufVxuXG5mdW5jdGlvbiB0b1Bhc2NhbENhc2UobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIG5hbWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBuYW1lLnNsaWNlKDEpO1xufVxuXG4vKiBlc2xpbnQtZW5hYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bm5lY2Vzc2FyeS1jb25kaXRpb24gLS0gUmUtZW5hYmxlIGFmdGVyIEFTVCB0cmF2ZXJzYWwgY29kZSwgd2hpY2ggaXMgbm93IHRoZSB3aG9sZSBmaWxlOiB0aGUgcHJlZml4IGhlbHBlcnMgbW92ZWQgdG8gbW9kdWxlIHNjb3BlIGFuZCB3YWxrIHRo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
|
|
134
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpbnRlcnMvZXNsaW50LXJ1bGVzL3BhcmFtcy1vcHRpb25zLW5hbWUtbWF0Y2gudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBFU0xpbnQgcnVsZTogcGFyYW1zLW9wdGlvbnMtbmFtZS1tYXRjaFxuICpcbiAqIEVuc3VyZXMgdGhhdCBwYXJhbWV0ZXItYmFnIHR5cGUgbmFtZXMgbWF0Y2ggdGhlIGZ1bmN0aW9uIG9yIGNvbnN0cnVjdG9yIHRoZXlcbiAqIGJlbG9uZyB0bywgb24gdHdvIGF4ZXMgXHUyMDE0IGEgcHJlZml4IGRlcml2ZWQgZnJvbSB0aGUgb3duZXIgYW5kIGEgc3VmZml4IGRlcml2ZWRcbiAqIGZyb20gaG93IHRoZSBiYWcgaXMgcGFzc2VkLlxuICpcbiAqIFByZWZpeCAob3duZXIpOlxuICogLSBgZm9vQmFyKHBhcmFtczogRm9vQmFyXHUyMDI2KWAgXHUyMDE0IFBhc2NhbENhc2Ugb2YgdGhlIGZ1bmN0aW9uIG5hbWVcbiAqIC0gYGNsYXNzIEJheiB7IGNvbnN0cnVjdG9yKHBhcmFtczogQmF6Q29uc3RydWN0b3JcdTIwMjYpIH1gIFx1MjAxNCBDbGFzc05hbWUgKyBgQ29uc3RydWN0b3JgXG4gKiAtIGBjbGFzcyBCYXogeyBtZXRob2QocGFyYW1zOiBCYXpNZXRob2RcdTIwMjYpIH1gIFx1MjAxNCBDbGFzc05hbWUgKyBQYXNjYWxDYXNlKG1ldGhvZE5hbWUpXG4gKlxuICogU3VmZml4ICh3aGV0aGVyIHRoZSBiYWcgaXMgYSByZXF1aXJlZCBzb2xlIGFyZ3VtZW50KTpcbiAqIC0gYFBhcmFtc2Agb25seSB3aGVuIHRoZSBiYWcgaXMgdGhlIFNPTEUgYW5kIFJFUVVJUkVEIHBhcmFtZXRlciBcdTIwMTRcbiAqICAgYGZvb0JhcihwYXJhbXM6IEZvb0JhclBhcmFtcylgXG4gKiAtIGBPcHRpb25zYCBvdGhlcndpc2UuIFRoYXQgaXM6IGFuIE9QVElPTkFMIGJhZyBcdTIwMTQgYGZvb0JhcihvcHRpb25zPzogRm9vQmFyT3B0aW9ucylgXG4gKiAgIG9yIGBmb29CYXIob3B0aW9uczogRm9vQmFyT3B0aW9ucyA9IHt9KWAgXHUyMDE0IG9yIGEgYmFnIFNVUFBMRU1FTlRBUlkgdG8gb3RoZXJcbiAqICAgcGFyYW1ldGVycyBcdTIwMTQgYGZvb0JhcihiYXo6IHN0cmluZywgb3B0aW9uczogRm9vQmFyT3B0aW9ucylgLlxuICpcbiAqIE9ubHkgY2hlY2tzIHBhcmFtZXRlcnMgd2hvc2UgdHlwZSBhbm5vdGF0aW9uIG5hbWUgZW5kcyB3aXRoIGBQYXJhbXNgIG9yXG4gKiBgT3B0aW9uc2AuIE9ubHkgY2hlY2tzIGV4cG9ydGVkIGZ1bmN0aW9ucyBhbmQgbWVtYmVycyBvZiBleHBvcnRlZCBjbGFzc2VzXG4gKiAocmVnYXJkbGVzcyBvZiBhY2Nlc3NpYmlsaXR5IFx1MjAxNCBgcHVibGljYCwgYHByb3RlY3RlZGAsIGFuZCBgcHJpdmF0ZWAgYXJlIGFsbFxuICogY2hlY2tlZCkgdG8gYXZvaWQgZmFsc2UgcG9zaXRpdmVzIGZyb20gaW50ZXJuYWwgb3B0aW9ucy1wYXNzdGhyb3VnaCBoZWxwZXJzLlxuICovXG5cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bm5lY2Vzc2FyeS1jb25kaXRpb24gLS0gUnVsZS5Ob2RlIHBhcmVudC9wcm9wZXJ0eSB0eXBlcyBhcmUgd2lkZXIgdGhhbiB3aGF0IHRoZSB0eXBlIGNoZWNrZXIgaW5mZXJzOyBkZWZlbnNpdmUgY2hlY2tzIGFyZSBhcHByb3ByaWF0ZSBmb3IgQVNUIHRyYXZlcnNhbC4gKi9cblxuaW1wb3J0IHR5cGUgeyBSdWxlIH0gZnJvbSAnZXNsaW50JztcblxuY29uc3QgUEFSQU1TX09QVElPTlNfU1VGRklYX1BBVFRFUk4gPSAvKD86UGFyYW1zfE9wdGlvbnMpJC87XG5jb25zdCBQQVJBTVNfU1VGRklYID0gJ1BhcmFtcyc7XG5jb25zdCBPUFRJT05TX1NVRkZJWCA9ICdPcHRpb25zJztcblxuLyoqXG5NZXNzYWdlIElEIHJlcG9ydGVkIHdoZW4gYSBwYXJhbWV0ZXItYmFnIHR5cGUncyBuYW1lIGRvZXMgbm90IG1hdGNoIHRoZSBleHBlY3RlZCBuYW1lIChwcmVmaXggYW5kIHJlcXVpcmVkL29wdGlvbmFsIHN1ZmZpeCkgZm9yIGl0cyBmdW5jdGlvbiBvciBjb25zdHJ1Y3Rvci5cbiAqL1xuZXhwb3J0IGNvbnN0IE1FU1NBR0VfSUQgPSAncGFyYW1zT3B0aW9uc05hbWVNYXRjaCc7XG5cbmludGVyZmFjZSBGdW5jdGlvbk5vZGVXaXRoUGFyYW1zIHtcbiAgcmVhZG9ubHkgcGFyYW1zOiBSdWxlLk5vZGVbXTtcbn1cblxuaW50ZXJmYWNlIE1heWJlT3B0aW9uYWxOb2RlIHtcbiAgcmVhZG9ubHkgb3B0aW9uYWw/OiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgVHlwZUFubm90YXRpb25JbmZvIHtcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICByZWFkb25seSBub2RlOiBSdWxlLk5vZGU7XG59XG5cbi8qKlxuICogRVNMaW50IHJ1bGUgcmVxdWlyaW5nIGAqUGFyYW1zYC9gKk9wdGlvbnNgIHR5cGUgbmFtZXMgdG8gbWF0Y2ggdGhlaXIgb3duaW5nIGZ1bmN0aW9uIG9yIGNvbnN0cnVjdG9yLCBhbmQgdG8gdXNlIHRoZSBzdWZmaXggdGhhdCBtYXRjaGVzIHRoZSBzb2xlLXZzLXN1cHBsZW1lbnRhcnkgYXJndW1lbnQgY29udmVudGlvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IHBhcmFtc09wdGlvbnNOYW1lTWF0Y2g6IFJ1bGUuUnVsZU1vZHVsZSA9IHtcbiAgY3JlYXRlKGNvbnRleHQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgJzpmdW5jdGlvbltwYXJhbXMubGVuZ3RoPjBdJyhub2RlOiBSdWxlLk5vZGUpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFpc0luRXhwb3J0ZWRTY29wZShub2RlKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZ1bmN0aW9uTm9kZSA9IG5vZGUgYXMgRnVuY3Rpb25Ob2RlV2l0aFBhcmFtcyAmIFJ1bGUuTm9kZTtcbiAgICAgICAgY29uc3QgZXhwZWN0ZWRQcmVmaXggPSBnZXRFeHBlY3RlZFByZWZpeChub2RlKTtcbiAgICAgICAgaWYgKCFleHBlY3RlZFByZWZpeCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGlzU29sZVBhcmFtZXRlciA9IGZ1bmN0aW9uTm9kZS5wYXJhbXMubGVuZ3RoID09PSAxO1xuXG4gICAgICAgIGZvciAoY29uc3QgcGFyYW1ldGVyIG9mIGZ1bmN0aW9uTm9kZS5wYXJhbXMpIHtcbiAgICAgICAgICBjb25zdCB0eXBlSW5mbyA9IGdldFR5cGVBbm5vdGF0aW9uSW5mbyhwYXJhbWV0ZXIpO1xuICAgICAgICAgIGlmICghdHlwZUluZm8gfHwgIVBBUkFNU19PUFRJT05TX1NVRkZJWF9QQVRURVJOLnRlc3QodHlwZUluZm8ubmFtZSkpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIEEgcmVxdWlyZWQgc29sZS1hcmd1bWVudCBiYWcgXHUyMTkyIGAqUGFyYW1zYC4gQW4gb3B0aW9uYWwgYmFnIChgP2Agb3IgYSBkZWZhdWx0XG4gICAgICAgICAgLy8gdmFsdWUpIG9yIGEgYmFnIHN1cHBsZW1lbnRhcnkgdG8gb3RoZXIgcGFyYW1ldGVycyBcdTIxOTIgYCpPcHRpb25zYC5cbiAgICAgICAgICBjb25zdCBleHBlY3RlZFN1ZmZpeCA9IGlzU29sZVBhcmFtZXRlciAmJiAhaXNPcHRpb25hbFBhcmFtZXRlcihwYXJhbWV0ZXIpID8gUEFSQU1TX1NVRkZJWCA6IE9QVElPTlNfU1VGRklYO1xuICAgICAgICAgIGNvbnN0IGV4cGVjdGVkTmFtZSA9IGAke2V4cGVjdGVkUHJlZml4fSR7ZXhwZWN0ZWRTdWZmaXh9YDtcblxuICAgICAgICAgIGlmICh0eXBlSW5mby5uYW1lICE9PSBleHBlY3RlZE5hbWUpIHtcbiAgICAgICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgIGFjdHVhbE5hbWU6IHR5cGVJbmZvLm5hbWUsXG4gICAgICAgICAgICAgICAgZXhwZWN0ZWROYW1lXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIG1lc3NhZ2VJZDogTUVTU0FHRV9JRCxcbiAgICAgICAgICAgICAgbm9kZTogdHlwZUluZm8ubm9kZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgfSxcbiAgbWV0YToge1xuICAgIGRvY3M6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnUmVxdWlyZSBgKlBhcmFtc2AvYCpPcHRpb25zYCB0eXBlIG5hbWVzIHRvIG1hdGNoIHRoZSBvd25pbmcgZnVuY3Rpb24vY29uc3RydWN0b3IgKHByZWZpeCkgYW5kIHRoZSBzb2xlLXZzLXN1cHBsZW1lbnRhcnkgYXJndW1lbnQgY29udmVudGlvbiAoc3VmZml4KSdcbiAgICB9LFxuICAgIG1lc3NhZ2VzOiB7XG4gICAgICBbTUVTU0FHRV9JRF06ICdUeXBlIFwie3sgYWN0dWFsTmFtZSB9fVwiIGRvZXMgbm90IG1hdGNoIHRoZSBleHBlY3RlZCBuYW1lIFwie3sgZXhwZWN0ZWROYW1lIH19XCIgZm9yIHRoaXMgZnVuY3Rpb24vY29uc3RydWN0b3IuJ1xuICAgIH0sXG4gICAgc2NoZW1hOiBbXSxcbiAgICB0eXBlOiAnc3VnZ2VzdGlvbidcbiAgfVxufTtcblxuZnVuY3Rpb24gZ2V0Q2xhc3NOYW1lKG1ldGhvZERlZmluaXRpb246IFJ1bGUuTm9kZSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGNsYXNzQm9keSA9IG1ldGhvZERlZmluaXRpb24ucGFyZW50O1xuICBjb25zdCBjbGFzc05vZGUgPSBjbGFzc0JvZHk/LnBhcmVudDtcbiAgcmV0dXJuIGNsYXNzTm9kZSAmJiAoJ2lkJyBpbiBjbGFzc05vZGUpICYmIGNsYXNzTm9kZS5pZCAmJiB0eXBlb2YgY2xhc3NOb2RlLmlkID09PSAnb2JqZWN0JyAmJiAoJ25hbWUnIGluIGNsYXNzTm9kZS5pZClcbiAgICAgICYmIHR5cGVvZiBjbGFzc05vZGUuaWQubmFtZSA9PT0gJ3N0cmluZydcbiAgICA/IGNsYXNzTm9kZS5pZC5uYW1lXG4gICAgOiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGdldEV4cGVjdGVkUHJlZml4KG5vZGU6IFJ1bGUuTm9kZSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IG1ldGhvZFByZWZpeCA9IGdldE1ldGhvZEV4cGVjdGVkUHJlZml4KG5vZGUpO1xuICByZXR1cm4gbWV0aG9kUHJlZml4ID8/IGdldEZ1bmN0aW9uRXhwZWN0ZWRQcmVmaXgobm9kZSk7XG59XG5cbmZ1bmN0aW9uIGdldEZ1bmN0aW9uRXhwZWN0ZWRQcmVmaXgobm9kZTogUnVsZS5Ob2RlKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgLy8gTmFtZWQgZnVuY3Rpb24gZGVjbGFyYXRpb246IGZ1bmN0aW9uIGZvb0JhcihwYXJhbXM6IEZvb0JhclBhcmFtcylcbiAgaWYgKCdpZCcgaW4gbm9kZSAmJiBub2RlLmlkICYmIHR5cGVvZiBub2RlLmlkID09PSAnb2JqZWN0JyAmJiAnbmFtZScgaW4gbm9kZS5pZCAmJiB0eXBlb2Ygbm9kZS5pZC5uYW1lID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB0b1Bhc2NhbENhc2Uobm9kZS5pZC5uYW1lKTtcbiAgfVxuXG4gIC8vIEFycm93IGZ1bmN0aW9uIGFzc2lnbmVkIHRvIGEgdmFyaWFibGU6IGNvbnN0IGZvb0JhciA9IChwYXJhbXM6IEZvb0JhclBhcmFtcykgPT4gLi4uXG4gIHJldHVybiBub2RlLnBhcmVudD8udHlwZSA9PT0gJ1ZhcmlhYmxlRGVjbGFyYXRvcicgJiYgJ2lkJyBpbiBub2RlLnBhcmVudCAmJiBub2RlLnBhcmVudC5pZCAmJiB0eXBlb2Ygbm9kZS5wYXJlbnQuaWQgPT09ICdvYmplY3QnICYmICduYW1lJyBpbiBub2RlLnBhcmVudC5pZFxuICAgICAgJiYgdHlwZW9mIG5vZGUucGFyZW50LmlkLm5hbWUgPT09ICdzdHJpbmcnXG4gICAgPyB0b1Bhc2NhbENhc2Uobm9kZS5wYXJlbnQuaWQubmFtZSlcbiAgICA6IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gZ2V0TWV0aG9kRXhwZWN0ZWRQcmVmaXgobm9kZTogUnVsZS5Ob2RlKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgbWV0aG9kRGVmaW5pdGlvbiA9IG5vZGUucGFyZW50O1xuICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gVGhlIGtleSBjaGVja3MgYXJlIGEgZGVmZW5zaXZlIGd1YXJkOiBFU0xpbnQgQVNUIE1ldGhvZERlZmluaXRpb24gYWx3YXlzIGhhcyBhIG5hbWVkIGtleS4gKi9cbiAgaWYgKFxuICAgIG1ldGhvZERlZmluaXRpb24/LnR5cGUgIT09ICdNZXRob2REZWZpbml0aW9uJ1xuICAgIHx8ICEoJ2tleScgaW4gbWV0aG9kRGVmaW5pdGlvbikgfHwgIW1ldGhvZERlZmluaXRpb24ua2V5IHx8IHR5cGVvZiBtZXRob2REZWZpbml0aW9uLmtleSAhPT0gJ29iamVjdCcgfHwgISgnbmFtZScgaW4gbWV0aG9kRGVmaW5pdGlvbi5rZXkpIHx8IHR5cGVvZiBtZXRob2REZWZpbml0aW9uLmtleS5uYW1lICE9PSAnc3RyaW5nJ1xuICApIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIC8qIHY4IGlnbm9yZSBzdG9wICovXG5cbiAgY29uc3QgbWV0aG9kTmFtZSA9IG1ldGhvZERlZmluaXRpb24ua2V5Lm5hbWU7XG4gIGNvbnN0IGNsYXNzTmFtZSA9IGdldENsYXNzTmFtZShtZXRob2REZWZpbml0aW9uKTtcbiAgaWYgKCFjbGFzc05hbWUpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcmV0dXJuIG1ldGhvZE5hbWUgPT09ICdjb25zdHJ1Y3RvcicgPyBgJHtjbGFzc05hbWV9Q29uc3RydWN0b3JgIDogY2xhc3NOYW1lICsgdG9QYXNjYWxDYXNlKG1ldGhvZE5hbWUpO1xufVxuXG5mdW5jdGlvbiBnZXRUeXBlQW5ub3RhdGlvbkluZm8ocGFyYW1ldGVyOiBSdWxlLk5vZGUpOiBUeXBlQW5ub3RhdGlvbkluZm8gfCB1bmRlZmluZWQge1xuICAvLyBVbndyYXAgYSBkZWZhdWx0ZWQgcGFyYW1ldGVyIHN1Y2ggYXMgYG9wdGlvbnM6IEZvb09wdGlvbnMgPSB7fWAuXG4gIC8vIEl0cyB0eXBlIGFubm90YXRpb24gbGl2ZXMgb24gdGhlIEFzc2lnbm1lbnRQYXR0ZXJuJ3MgbGVmdC1oYW5kIGJpbmRpbmcuXG4gIGNvbnN0IHRhcmdldCA9IHBhcmFtZXRlci50eXBlID09PSAnQXNzaWdubWVudFBhdHRlcm4nID8gcGFyYW1ldGVyLmxlZnQgOiBwYXJhbWV0ZXI7XG5cbiAgLyogdjggaWdub3JlIHN0YXJ0IC0tIERlZmVuc2l2ZSBndWFyZDogVHlwZVNjcmlwdC1wYXJzZWQgcGFyYW1zIGFsd2F5cyBoYXZlIHR5cGVBbm5vdGF0aW9uIHdoZW4gdHlwZWQuICovXG4gIGlmICghKCd0eXBlQW5ub3RhdGlvbicgaW4gdGFyZ2V0KSB8fCAhdGFyZ2V0LnR5cGVBbm5vdGF0aW9uKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xuXG4gIGNvbnN0IGFubm90YXRpb24gPSB0YXJnZXQudHlwZUFubm90YXRpb24gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGNvbnN0IHR5cGVOb2RlID0gYW5ub3RhdGlvblsndHlwZUFubm90YXRpb24nXTtcbiAgLyogdjggaWdub3JlIHN0YXJ0IC0tIERlZmVuc2l2ZSBndWFyZDogdGhlIFR5cGVTY3JpcHQgcGFyc2VyIGFsd2F5cyBwcm9kdWNlcyBhbiBBU1Qgbm9kZSBmb3IgdHlwZUFubm90YXRpb24uICovXG4gIGlmICghdHlwZU5vZGUgfHwgdHlwZW9mIHR5cGVOb2RlICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgLyogdjggaWdub3JlIHN0b3AgKi9cblxuICBjb25zdCB0eXBlTm9kZU9iamVjdCA9IHR5cGVOb2RlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG4gIC8vIERpcmVjdCByZWZlcmVuY2U6IEZvb0JhclBhcmFtc1xuICBpZiAodHlwZU5vZGVPYmplY3RbJ3R5cGUnXSA9PT0gJ1RTVHlwZVJlZmVyZW5jZScgJiYgdHlwZU5vZGVPYmplY3RbJ3R5cGVOYW1lJ10gJiYgdHlwZW9mIHR5cGVOb2RlT2JqZWN0Wyd0eXBlTmFtZSddID09PSAnb2JqZWN0Jykge1xuICAgIGNvbnN0IHR5cGVOYW1lID0gdHlwZU5vZGVPYmplY3RbJ3R5cGVOYW1lJ10gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgLyogdjggaWdub3JlIHN0YXJ0IC0tIERlZmVuc2l2ZSBndWFyZDogVFNUeXBlUmVmZXJlbmNlIHR5cGVOYW1lIGlzIGFsd2F5cyBhbiBJZGVudGlmaWVyIHdpdGggYSBzdHJpbmcgbmFtZS4gKi9cbiAgICBpZiAodHlwZU5hbWVbJ3R5cGUnXSA9PT0gJ0lkZW50aWZpZXInICYmIHR5cGVvZiB0eXBlTmFtZVsnbmFtZSddID09PSAnc3RyaW5nJykge1xuICAgICAgLyogdjggaWdub3JlIHN0b3AgKi9cbiAgICAgIHJldHVybiB7IG5hbWU6IHR5cGVOYW1lWyduYW1lJ10sIG5vZGU6IHR5cGVOb2RlIGFzIFJ1bGUuTm9kZSB9O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGlzSW5FeHBvcnRlZFNjb3BlKG5vZGU6IFJ1bGUuTm9kZSk6IGJvb2xlYW4ge1xuICAvLyBDbGFzcyBtZXRob2Qgb3IgY29uc3RydWN0b3I6IGNoZWNrIHRoYXQgdGhlIGNsYXNzIGlzIGV4cG9ydGVkLCByZWdhcmRsZXNzIG9mIGFjY2Vzc2liaWxpdHlcbiAgLy8gKHB1YmxpYy9wcm90ZWN0ZWQvcHJpdmF0ZSBtZW1iZXJzIGFyZSBhbGwgY2hlY2tlZCkuXG4gIGNvbnN0IG1ldGhvZERlZmluaXRpb24gPSBub2RlLnBhcmVudDtcbiAgaWYgKG1ldGhvZERlZmluaXRpb24/LnR5cGUgPT09ICdNZXRob2REZWZpbml0aW9uJykge1xuICAgIC8vIENoZWNrIGlmIHRoZSBjbGFzcyBpdHNlbGYgaXMgZXhwb3J0ZWRcbiAgICBjb25zdCBjbGFzc0JvZHkgPSBtZXRob2REZWZpbml0aW9uLnBhcmVudDtcbiAgICBjb25zdCBjbGFzc05vZGUgPSBjbGFzc0JvZHk/LnBhcmVudDtcbiAgICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gRGVmZW5zaXZlIGd1YXJkOiBFU0xpbnQgQVNUIGFsd2F5cyBoYXMgcGFyZW50IGNoYWluIGZvciBjbGFzcyBtZXRob2RzLiAqL1xuICAgIGlmICghY2xhc3NOb2RlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIC8qIHY4IGlnbm9yZSBzdG9wICovXG4gICAgY29uc3QgY2xhc3NQYXJlbnQgPSBjbGFzc05vZGUucGFyZW50O1xuICAgIHJldHVybiBjbGFzc1BhcmVudD8udHlwZSA9PT0gJ0V4cG9ydE5hbWVkRGVjbGFyYXRpb24nIHx8IGNsYXNzUGFyZW50Py50eXBlID09PSAnRXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uJztcbiAgfVxuXG4gIC8vIFRvcC1sZXZlbCBmdW5jdGlvbjogY2hlY2sgaWYgZXhwb3J0ZWRcbiAgaWYgKG5vZGUudHlwZSA9PT0gJ0Z1bmN0aW9uRGVjbGFyYXRpb24nKSB7XG4gICAgY29uc3QgcGFyZW50Tm9kZSA9IG5vZGUucGFyZW50O1xuICAgIHJldHVybiBwYXJlbnROb2RlPy50eXBlID09PSAnRXhwb3J0TmFtZWREZWNsYXJhdGlvbicgfHwgcGFyZW50Tm9kZT8udHlwZSA9PT0gJ0V4cG9ydERlZmF1bHREZWNsYXJhdGlvbic7XG4gIH1cblxuICAvLyBBcnJvdyBmdW5jdGlvbiBpbiB2YXJpYWJsZTogY2hlY2sgaWYgdGhlIHZhcmlhYmxlIGRlY2xhcmF0aW9uIGlzIGV4cG9ydGVkXG4gIGlmIChub2RlLnBhcmVudD8udHlwZSA9PT0gJ1ZhcmlhYmxlRGVjbGFyYXRvcicpIHtcbiAgICBjb25zdCB2YXJpYWJsZURlY2xhcmF0aW9uID0gbm9kZS5wYXJlbnQucGFyZW50O1xuICAgIGlmICh2YXJpYWJsZURlY2xhcmF0aW9uPy5wYXJlbnQ/LnR5cGUgPT09ICdFeHBvcnROYW1lZERlY2xhcmF0aW9uJykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBpc09wdGlvbmFsUGFyYW1ldGVyKHBhcmFtZXRlcjogUnVsZS5Ob2RlKTogYm9vbGVhbiB7XG4gIC8vIGBvcHRpb25zOiBGb29PcHRpb25zID0ge31gIGlzIGFuIEFzc2lnbm1lbnRQYXR0ZXJuOyBgb3B0aW9ucz86IEZvb09wdGlvbnNgIGNhcnJpZXMgYW5cbiAgLy8gYG9wdGlvbmFsYCBmbGFnLiBCb3RoIG1ha2UgdGhlIGJhZyBvcHRpb25hbCBcdTIxOTIgYCpPcHRpb25zYC5cbiAgcmV0dXJuIHBhcmFtZXRlci50eXBlID09PSAnQXNzaWdubWVudFBhdHRlcm4nIHx8IChwYXJhbWV0ZXIgYXMgTWF5YmVPcHRpb25hbE5vZGUpLm9wdGlvbmFsID09PSB0cnVlO1xufVxuXG5mdW5jdGlvbiB0b1Bhc2NhbENhc2UobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIG5hbWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBuYW1lLnNsaWNlKDEpO1xufVxuXG4vKiBlc2xpbnQtZW5hYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bm5lY2Vzc2FyeS1jb25kaXRpb24gLS0gUmUtZW5hYmxlIGFmdGVyIEFTVCB0cmF2ZXJzYWwgY29kZSwgd2hpY2ggaXMgbm93IHRoZSB3aG9sZSBmaWxlOiB0aGUgcHJlZml4IGhlbHBlcnMgbW92ZWQgdG8gbW9kdWxlIHNjb3BlIGFuZCB3YWxrIHRoZSBzYW1lIG9wdGlvbmFs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
|
|
@@ -199,13 +199,10 @@ function toDedentLines(text) {
|
|
|
199
199
|
const leading = text.slice(0, text.length - rest.length);
|
|
200
200
|
const core = rest.replace(/[\r\n]+$/, "");
|
|
201
201
|
const trailing = rest.slice(core.length);
|
|
202
|
-
|
|
203
|
-
return null;
|
|
204
|
-
}
|
|
205
|
-
return `${escapeLineBreaks(leading)}${escapeTemplateText(core)}${escapeLineBreaks(trailing)}`.split("\n");
|
|
202
|
+
return core === "" || leading === "" && /^\s/.test(core) || trailing === "" && /\s$/.test(core) ? null : `${escapeLineBreaks(leading)}${escapeTemplateText(core)}${escapeLineBreaks(trailing)}`.split("\n");
|
|
206
203
|
}
|
|
207
204
|
export {
|
|
208
205
|
MESSAGE_ID,
|
|
209
206
|
preferDedent
|
|
210
207
|
};
|
|
211
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saW50ZXJzL2VzbGludC1ydWxlcy9wcmVmZXItZGVkZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBFU0xpbnQgcnVsZTogcHJlZmVyLWRlZGVudFxuICpcbiAqIFJlcG9ydHMgYW4gYXJyYXkgb2Ygc3RyaW5nIGxpdGVyYWxzIGpvaW5lZCB3aXRoIGEgbmV3bGluZSAoYFsnYScsICdiJ10uam9pbignXFxuJylgKSBhbmQgZml4ZXMgaXQgdG8gYSBgZGVkZW50YFxuICogdGVtcGxhdGUuIEFuIGFycmF5IGhvbGRpbmcgYW55dGhpbmcgYnV0IHN0cmluZyBhbmQgdGVtcGxhdGUgbGl0ZXJhbHMgaXMgbGVmdCBhbG9uZTogaXQgYnVpbGRzIGEgc3RyaW5nIGF0IHJ1bnRpbWUuXG4gKlxuICogVGhlIGZpeCByZXdyaXRlcyB0aGUgam9pbmVkIHRleHQgc28gdGhhdCBgZGVkZW50YCAoMS54LCB1c2VkIGFzIGEgdGFnKSByZXR1cm5zIGV4YWN0bHkgdGhlIHNhbWUgc3RyaW5nLiBJdCBydW5zIHRoZVxuICogc2FtZSBzdGVwcyBgZGVkZW50YCBkb2VzIGluIHJldmVyc2U6IGEgbGVhZGluZyBvciB0cmFpbGluZyBydW4gb2YgbGluZSBicmVha3MgYW5kIGV2ZXJ5IGNhcnJpYWdlIHJldHVybiBiZWNvbWVcbiAqIGBcXG5gIC8gYFxccmAgZXNjYXBlcywgd2hpY2ggYGRlZGVudGAgZGVjb2RlcyBvbmx5IGFmdGVyIGl0IHRyaW1zLCBhbmQgYmFja3RpY2tzIGFuZCBgJHtgIGFyZSBlc2NhcGVkLiBUZXh0IGl0IGNhbm5vdFxuICogcmVwcmVzZW50IHRoYXQgd2F5IGtlZXBzIHRoZSBkaWFnbm9zdGljIHdpdGhvdXQgYSBmaXg6IGEgYmFja3NsYXNoLCB3aGljaCBgZGVkZW50YCBwYXNzZXMgb24gcmF3OyBsZWFkaW5nIG9yIHRyYWlsaW5nXG4gKiB3aGl0ZXNwYWNlIHRoYXQgYGRlZGVudGAgd291bGQgdHJpbTsgYSB0ZW1wbGF0ZSBsaXRlcmFsIHdpdGggZXhwcmVzc2lvbnMsIHdob3NlIHZhbHVlcyBhcmUgdW5rbm93bjsgYW5kIGNvbW1lbnRzXG4gKiBpbnNpZGUgdGhlIGNhbGwuIFRoZSBmaXggcmV1c2VzIGEgdmlzaWJsZSBkZWZhdWx0IGltcG9ydCBvZiBgZGVkZW50YCwgb3IgYWRkcyBvbmUgdW5kZXIgYSBmcmVlIG5hbWUuXG4gKlxuICogVGhlIGBpZ25vcmVJbnNpZGVDYWxsc1RvYCBvcHRpb24gbmFtZXMgZnVuY3Rpb25zIHdob3NlIGNhbGxiYWNrIGFyZ3VtZW50cyBhcmUgc2VyaWFsaXplZCBhbmQgcnVuIGVsc2V3aGVyZSAoYW5cbiAqIE9ic2lkaWFuIHRlc3QncyBgZXZhbEluT2JzaWRpYW5gKSwgd2hlcmUgdGhlIG1vZHVsZSdzIGltcG9ydHMgYXJlIG5vdCBpbiBzY29wZS4gQSBqb2luIGluc2lkZSBhIGZ1bmN0aW9uIG5lc3RlZCBpblxuICogdGhlIGFyZ3VtZW50cyBvZiBzdWNoIGEgY2FsbCBpcyBub3QgcmVwb3J0ZWQsIGJlY2F1c2UgYGRlZGVudGAgY2Fubm90IGJlIHVzZWQgdGhlcmUuXG4gKi9cbmltcG9ydCB0eXBlIHsgVFNFU1RyZWUgfSBmcm9tICdAdHlwZXNjcmlwdC1lc2xpbnQvdXRpbHMnO1xuaW1wb3J0IHR5cGUgeyBSdWxlIH0gZnJvbSAnZXNsaW50JztcblxuaW1wb3J0IHsgZW5zdXJlTm9uTnVsbGFibGUgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvdHlwZS1ndWFyZHMnO1xuaW1wb3J0IHsgQVNUX05PREVfVFlQRVMgfSBmcm9tICdAdHlwZXNjcmlwdC1lc2xpbnQvdXRpbHMnO1xuXG5pbXBvcnQge1xuICBmaW5kVmlzaWJsZUltcG9ydE5hbWUsXG4gIGdldFVudXNlZE5hbWUsXG4gIGluc2VydEltcG9ydFxufSBmcm9tICcuL2ltcG9ydC1maXgudHMnO1xuaW1wb3J0IHsgdG9UU0VTVHJlZU5vZGUgfSBmcm9tICcuL3RzLWVzdHJlZS1ub2RlLnRzJztcblxuY29uc3QgREVERU5UX01PRFVMRSA9ICdkZWRlbnQnO1xuY29uc3QgRlVOQ1RJT05fTk9ERV9UWVBFUzogUmVhZG9ubHlTZXQ8QVNUX05PREVfVFlQRVM+ID0gbmV3IFNldChbXG4gIEFTVF9OT0RFX1RZUEVTLkFycm93RnVuY3Rpb25FeHByZXNzaW9uLFxuICBBU1RfTk9ERV9UWVBFUy5GdW5jdGlvbkRlY2xhcmF0aW9uLFxuICBBU1RfTk9ERV9UWVBFUy5GdW5jdGlvbkV4cHJlc3Npb25cbl0pO1xuY29uc3QgSU5ERU5UID0gJyAgJztcbmNvbnN0IExJTkVfQlJFQUtfU0VQQVJBVE9SUyA9IG5ldyBTZXQoWydcXG4nLCAnXFxyXFxuJ10pO1xuY29uc3QgTUlOSU1VTV9FTEVNRU5UU19XSVRIX0FfTElORV9CUkVBSyA9IDI7XG5cbi8qKlxuICogTWVzc2FnZSBJRCByZXBvcnRlZCB3aGVuIGFuIGFycmF5IG9mIHN0cmluZyBsaXRlcmFscyBpcyBqb2luZWQgd2l0aCBhIG5ld2xpbmUgaW5zdGVhZCBvZiB3cml0dGVuIGFzIGEgYGRlZGVudGAgdGVtcGxhdGUuXG4gKi9cbmV4cG9ydCBjb25zdCBNRVNTQUdFX0lEID0gJ3ByZWZlckRlZGVudCc7XG5cbnR5cGUgU3RyaW5nRWxlbWVudCA9IFRTRVNUcmVlLlN0cmluZ0xpdGVyYWwgfCBUU0VTVHJlZS5UZW1wbGF0ZUxpdGVyYWw7XG5cbi8qKlxuICogRVNMaW50IHJ1bGUgcHJlZmVycmluZyBhIGBkZWRlbnRgIHRlbXBsYXRlIG92ZXIgYW4gYXJyYXkgb2Ygc3RyaW5nIGxpdGVyYWxzIGpvaW5lZCB3aXRoIGEgbmV3bGluZS5cbiAqL1xuZXhwb3J0IGNvbnN0IHByZWZlckRlZGVudDogUnVsZS5SdWxlTW9kdWxlID0ge1xuICBjcmVhdGUoY29udGV4dCkge1xuICAgIGNvbnN0IG9wdGlvbnMgPSAoY29udGV4dC5vcHRpb25zWzBdID8/IHt9KSBhcyBQcmVmZXJEZWRlbnRPcHRpb25zO1xuICAgIGNvbnN0IGlnbm9yZWRDYWxsZWVOYW1lcyA9IG5ldyBTZXQob3B0aW9ucy5pZ25vcmVJbnNpZGVDYWxsc1RvKTtcbiAgICByZXR1cm4ge1xuICAgICAgJ0NhbGxFeHByZXNzaW9uJyhub2RlOiBSdWxlLk5vZGUpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY2FsbE5vZGUgPSB0b1RTRVNUcmVlTm9kZShub2RlKSBhcyBUU0VTVHJlZS5DYWxsRXhwcmVzc2lvbjtcbiAgICAgICAgY29uc3Qgam9pbmVkID0gZ2V0Sm9pbmVkU3RyaW5nRWxlbWVudHMoY2FsbE5vZGUpO1xuICAgICAgICBpZiAoIWpvaW5lZCB8fCBpc0luc2lkZUlnbm9yZWRDYWxsYmFjayhjYWxsTm9kZSwgaWdub3JlZENhbGxlZU5hbWVzKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICBmaXgoZml4ZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZUNvZGUgPSBjb250ZXh0LnNvdXJjZUNvZGU7XG4gICAgICAgICAgICBpZiAoc291cmNlQ29kZS5nZXRDb21tZW50c0luc2lkZShub2RlKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgdGV4dCA9IGdldEpvaW5lZFRleHQoam9pbmVkLmVsZW1lbnRzLCBqb2luZWQuc2VwYXJhdG9yKTtcbiAgICAgICAgICAgIGNvbnN0IGxpbmVzID0gdGV4dCA9PT0gbnVsbCA/IG51bGwgOiB0b0RlZGVudExpbmVzKHRleHQpO1xuICAgICAgICAgICAgaWYgKGxpbmVzID09PSBudWxsKSB7XG4gICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBmaXhlczogUnVsZS5GaXhbXSA9IFtdO1xuICAgICAgICAgICAgbGV0IG5hbWUgPSBmaW5kVmlzaWJsZUltcG9ydE5hbWUoeyBpbXBvcnRlZE5hbWU6ICdkZWZhdWx0JywgbW9kdWxlTmFtZTogREVERU5UX01PRFVMRSwgbm9kZSwgc291cmNlQ29kZSB9KTtcbiAgICAgICAgICAgIGlmIChuYW1lID09PSBudWxsKSB7XG4gICAgICAgICAgICAgIC8vIEEgc2NyaXB0IGNhbm5vdCBhY2NlcHQgYW4gRVNNIGltcG9ydC4gTGVhdmUgaXRzIGRpYWdub3N0aWMgZm9yIGEgbWFudWFsIGVkaXQuXG4gICAgICAgICAgICAgIGlmIChzb3VyY2VDb2RlLmFzdC5zb3VyY2VUeXBlICE9PSAnbW9kdWxlJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIG5hbWUgPSBnZXRVbnVzZWROYW1lKHNvdXJjZUNvZGUsICdkZWRlbnQnKTtcbiAgICAgICAgICAgICAgZml4ZXMucHVzaChpbnNlcnRJbXBvcnQoZml4ZXIsIHNvdXJjZUNvZGUsIGBpbXBvcnQgJHtuYW1lfSBmcm9tICcke0RFREVOVF9NT0RVTEV9JztgKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGxpbmVQcmVmaXggPSBzb3VyY2VDb2RlLnRleHQuc2xpY2Uoc291cmNlQ29kZS5nZXRJbmRleEZyb21Mb2MoeyBjb2x1bW46IDAsIGxpbmU6IGNhbGxOb2RlLmxvYy5zdGFydC5saW5lIH0pLCBjYWxsTm9kZS5yYW5nZVswXSk7XG4gICAgICAgICAgICBjb25zdCBsaW5lSW5kZW50ID0gbGluZVByZWZpeC5zbGljZSgwLCBsaW5lUHJlZml4Lmxlbmd0aCAtIGxpbmVQcmVmaXgudHJpbVN0YXJ0KCkubGVuZ3RoKTtcbiAgICAgICAgICAgIGNvbnN0IGJvZHkgPSBsaW5lcy5tYXAoKGxpbmUpID0+IGxpbmUgPT09ICcnID8gJycgOiBgJHtsaW5lSW5kZW50fSR7SU5ERU5UfSR7bGluZX1gKS5qb2luKCdcXG4nKTtcbiAgICAgICAgICAgIGZpeGVzLnB1c2goZml4ZXIucmVwbGFjZVRleHQobm9kZSwgYCR7bmFtZX1cXGBcXG4ke2JvZHl9XFxuJHtsaW5lSW5kZW50fVxcYGApKTtcbiAgICAgICAgICAgIHJldHVybiBmaXhlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIG1lc3NhZ2VJZDogTUVTU0FHRV9JRCxcbiAgICAgICAgICBub2RlXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH07XG4gIH0sXG4gIG1ldGE6IHtcbiAgICBkb2NzOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1ByZWZlciBhIGBkZWRlbnRgIHRlbXBsYXRlIG92ZXIgYW4gYXJyYXkgb2Ygc3RyaW5nIGxpdGVyYWxzIGpvaW5lZCB3aXRoIGEgbmV3bGluZSdcbiAgICB9LFxuICAgIGZpeGFibGU6ICdjb2RlJyxcbiAgICBtZXNzYWdlczoge1xuICAgICAgW01FU1NBR0VfSURdOiAnV3JpdGUgdGhpcyBtdWx0aWxpbmUgc3RyaW5nIGFzIGEgYGRlZGVudGAgdGVtcGxhdGUgaW5zdGVhZCBvZiBqb2luaW5nIGFuIGFycmF5IG9mIHN0cmluZyBsaXRlcmFscyB3aXRoIGEgbmV3bGluZS4nXG4gICAgfSxcbiAgICBzY2hlbWE6IFtcbiAgICAgIHtcbiAgICAgICAgYWRkaXRpb25hbFByb3BlcnRpZXM6IGZhbHNlLFxuICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgaWdub3JlSW5zaWRlQ2FsbHNUbzoge1xuICAgICAgICAgICAgaXRlbXM6IHsgdHlwZTogJ3N0cmluZycgfSxcbiAgICAgICAgICAgIHR5cGU6ICdhcnJheScsXG4gICAgICAgICAgICB1bmlxdWVJdGVtczogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgdHlwZTogJ29iamVjdCdcbiAgICAgIH1cbiAgICBdLFxuICAgIHR5cGU6ICdzdWdnZXN0aW9uJ1xuICB9XG59O1xuXG4vKipcbiAqIE9wdGlvbnMgb2YgdGhlIGBwcmVmZXItZGVkZW50YCBydWxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFByZWZlckRlZGVudE9wdGlvbnMge1xuICAvKipcbiAgICogTmFtZXMgb2YgZnVuY3Rpb25zIHdob3NlIGNhbGxiYWNrIGFyZ3VtZW50cyBydW4gd2hlcmUgdGhlIG1vZHVsZSdzIGltcG9ydHMgYXJlIG5vdCBpbiBzY29wZS4gQSBqb2luIGluc2lkZSBhXG4gICAqIGZ1bmN0aW9uIG5lc3RlZCBpbiB0aGUgYXJndW1lbnRzIG9mIGEgY2FsbCB0byBvbmUgb2YgdGhlbSBpcyBub3QgcmVwb3J0ZWQuIEEgbmFtZSBtYXRjaGVzIGEgYmFyZSBjYWxsZWVcbiAgICogKGBldmFsSW5PYnNpZGlhbiguLi4pYCkgYW5kIHRoZSBwcm9wZXJ0eSBvZiBhIG1lbWJlciBjYWxsZWUgKGBoZWxwZXJzLmV2YWxJbk9ic2lkaWFuKC4uLilgKS5cbiAgICovXG4gIHJlYWRvbmx5IGlnbm9yZUluc2lkZUNhbGxzVG8/OiByZWFkb25seSBzdHJpbmdbXTtcbn1cblxuaW50ZXJmYWNlIEpvaW5lZFN0cmluZ0VsZW1lbnRzIHtcbiAgcmVhZG9ubHkgZWxlbWVudHM6IHJlYWRvbmx5IFN0cmluZ0VsZW1lbnRbXTtcbiAgcmVhZG9ubHkgc2VwYXJhdG9yOiBzdHJpbmc7XG59XG5cbmZ1bmN0aW9uIGVzY2FwZUxpbmVCcmVha3ModGV4dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHRleHQucmVwbGFjZUFsbCgnXFxyJywgU3RyaW5nLnJhd2BcXHJgKS5yZXBsYWNlQWxsKCdcXG4nLCBTdHJpbmcucmF3YFxcbmApO1xufVxuXG5mdW5jdGlvbiBlc2NhcGVUZW1wbGF0ZVRleHQodGV4dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHRleHQucmVwbGFjZUFsbCgnYCcsICdcXFxcYCcpLnJlcGxhY2VBbGwoJyR7JywgJ1xcXFwkeycpLnJlcGxhY2VBbGwoJ1xccicsIFN0cmluZy5yYXdgXFxyYCk7XG59XG5cbmZ1bmN0aW9uIGdldENhbGxlZU5hbWUoY2FsbGVlOiBUU0VTVHJlZS5FeHByZXNzaW9uKTogbnVsbCB8IHN0cmluZyB7XG4gIGlmIChjYWxsZWUudHlwZSA9PT0gQVNUX05PREVfVFlQRVMuSWRlbnRpZmllcikge1xuICAgIHJldHVybiBjYWxsZWUubmFtZTtcbiAgfVxuICByZXR1cm4gY2FsbGVlLnR5cGUgPT09IEFTVF9OT0RFX1RZUEVTLk1lbWJlckV4cHJlc3Npb24gJiYgIWNhbGxlZS5jb21wdXRlZCAmJiBjYWxsZWUucHJvcGVydHkudHlwZSA9PT0gQVNUX05PREVfVFlQRVMuSWRlbnRpZmllclxuICAgID8gY2FsbGVlLnByb3BlcnR5Lm5hbWVcbiAgICA6IG51bGw7XG59XG5cbmZ1bmN0aW9uIGdldEpvaW5lZFN0cmluZ0VsZW1lbnRzKG5vZGU6IFRTRVNUcmVlLkNhbGxFeHByZXNzaW9uKTogSm9pbmVkU3RyaW5nRWxlbWVudHMgfCBudWxsIHtcbiAgY29uc3QgY2FsbGVlID0gbm9kZS5jYWxsZWU7XG4gIGlmIChcbiAgICBub2RlLm9wdGlvbmFsIHx8IG5vZGUuYXJndW1lbnRzLmxlbmd0aCAhPT0gMVxuICAgIHx8IGNhbGxlZS50eXBlICE9PSBBU1RfTk9ERV9UWVBFUy5NZW1iZXJFeHByZXNzaW9uIHx8IGNhbGxlZS5vcHRpb25hbCB8fCBjYWxsZWUuY29tcHV0ZWRcbiAgICB8fCBjYWxsZWUucHJvcGVydHkudHlwZSAhPT0gQVNUX05PREVfVFlQRVMuSWRlbnRpZmllciB8fCBjYWxsZWUucHJvcGVydHkubmFtZSAhPT0gJ2pvaW4nXG4gICAgfHwgY2FsbGVlLm9iamVjdC50eXBlICE9PSBBU1RfTk9ERV9UWVBFUy5BcnJheUV4cHJlc3Npb25cbiAgKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBzZXBhcmF0b3IgPSBnZXRTdGF0aWNTdHJpbmcoZW5zdXJlTm9uTnVsbGFibGUobm9kZS5hcmd1bWVudHNbMF0pKTtcbiAgaWYgKHNlcGFyYXRvciA9PT0gbnVsbCB8fCAhTElORV9CUkVBS19TRVBBUkFUT1JTLmhhcyhzZXBhcmF0b3IpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBlbGVtZW50czogU3RyaW5nRWxlbWVudFtdID0gW107XG4gIGZvciAoY29uc3QgZWxlbWVudCBvZiBjYWxsZWUub2JqZWN0LmVsZW1lbnRzKSB7XG4gICAgaWYgKCFpc1N0cmluZ0VsZW1lbnQoZWxlbWVudCkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBlbGVtZW50cy5wdXNoKGVsZW1lbnQpO1xuICB9XG4gIC8vIEEgc2luZ2xlIGVsZW1lbnQgam9pbnMgdG8gaXRzZWxmOyB0aGVyZSBpcyBubyBsaW5lIGJyZWFrIHRvIHJld3JpdGUuXG4gIHJldHVybiBlbGVtZW50cy5sZW5ndGggPCBNSU5JTVVNX0VMRU1FTlRTX1dJVEhfQV9MSU5FX0JSRUFLID8gbnVsbCA6IHsgZWxlbWVudHMsIHNlcGFyYXRvciB9O1xufVxuXG5mdW5jdGlvbiBnZXRKb2luZWRUZXh0KGVsZW1lbnRzOiByZWFkb25seSBTdHJpbmdFbGVtZW50W10sIHNlcGFyYXRvcjogc3RyaW5nKTogbnVsbCB8IHN0cmluZyB7XG4gIGNvbnN0IHZhbHVlczogc3RyaW5nW10gPSBbXTtcbiAgZm9yIChjb25zdCBlbGVtZW50IG9mIGVsZW1lbnRzKSB7XG4gICAgY29uc3QgdmFsdWUgPSBnZXRTdGF0aWNTdHJpbmcoZWxlbWVudCk7XG4gICAgaWYgKHZhbHVlID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgdmFsdWVzLnB1c2godmFsdWUpO1xuICB9XG4gIHJldHVybiB2YWx1ZXMuam9pbihzZXBhcmF0b3IpO1xufVxuXG5mdW5jdGlvbiBnZXRTdGF0aWNTdHJpbmcobm9kZTogVFNFU1RyZWUuTm9kZSk6IG51bGwgfCBzdHJpbmcge1xuICBpZiAobm9kZS50eXBlID09PSBBU1RfTk9ERV9UWVBFUy5MaXRlcmFsKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBub2RlLnZhbHVlID09PSAnc3RyaW5nJyA/IG5vZGUudmFsdWUgOiBudWxsO1xuICB9XG4gIC8vIEFuIHVudGFnZ2VkIHRlbXBsYXRlIHdpdGggYW4gaW52YWxpZCBlc2NhcGUgaXMgYSBzeW50YXggZXJyb3IsIHNvIGl0cyBjb29rZWQgdGV4dCBhbHdheXMgZXhpc3RzLlxuICByZXR1cm4gbm9kZS50eXBlID09PSBBU1RfTk9ERV9UWVBFUy5UZW1wbGF0ZUxpdGVyYWwgJiYgbm9kZS5leHByZXNzaW9ucy5sZW5ndGggPT09IDAgPyBlbnN1cmVOb25OdWxsYWJsZShub2RlLnF1YXNpc1swXSkudmFsdWUuY29va2VkIDogbnVsbDtcbn1cblxuZnVuY3Rpb24gaXNJbnNpZGVJZ25vcmVkQ2FsbGJhY2sobm9kZTogVFNFU1RyZWUuTm9kZSwgaWdub3JlZENhbGxlZU5hbWVzOiBSZWFkb25seVNldDxzdHJpbmc+KTogYm9vbGVhbiB7XG4gIGlmIChpZ25vcmVkQ2FsbGVlTmFtZXMuc2l6ZSA9PT0gMCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBsZXQgaXNJbnNpZGVGdW5jdGlvbiA9IGZhbHNlO1xuICBsZXQgY2hpbGQgPSBub2RlO1xuICBmb3IgKGxldCBwYXJlbnQgPSBub2RlLnBhcmVudDsgcGFyZW50OyBjaGlsZCA9IHBhcmVudCwgcGFyZW50ID0gcGFyZW50LnBhcmVudCkge1xuICAgIGlmIChGVU5DVElPTl9OT0RFX1RZUEVTLmhhcyhwYXJlbnQudHlwZSkpIHtcbiAgICAgIGlzSW5zaWRlRnVuY3Rpb24gPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAoaXNJbnNpZGVGdW5jdGlvbiAmJiBwYXJlbnQudHlwZSA9PT0gQVNUX05PREVfVFlQRVMuQ2FsbEV4cHJlc3Npb24gJiYgcGFyZW50LmNhbGxlZSAhPT0gY2hpbGQpIHtcbiAgICAgIGNvbnN0IG5hbWUgPSBnZXRDYWxsZWVOYW1lKHBhcmVudC5jYWxsZWUpO1xuICAgICAgaWYgKG5hbWUgIT09IG51bGwgJiYgaWdub3JlZENhbGxlZU5hbWVzLmhhcyhuYW1lKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBpc1N0cmluZ0VsZW1lbnQoZWxlbWVudDogbnVsbCB8IFRTRVNUcmVlLk5vZGUpOiBlbGVtZW50IGlzIFN0cmluZ0VsZW1lbnQge1xuICByZXR1cm4gZWxlbWVudD8udHlwZSA9PT0gQVNUX05PREVfVFlQRVMuVGVtcGxhdGVMaXRlcmFsXG4gICAgfHwgKGVsZW1lbnQ/LnR5cGUgPT09IEFTVF9OT0RFX1RZUEVTLkxpdGVyYWwgJiYgdHlwZW9mIGVsZW1lbnQudmFsdWUgPT09ICdzdHJpbmcnKTtcbn1cblxuLyoqXG4gKiBFbmNvZGVzIHRleHQgYXMgdGhlIGxpbmVzIG9mIGEgYGRlZGVudGAgdGVtcGxhdGUgYm9keSwgYmVmb3JlIGluZGVudGF0aW9uLlxuICpcbiAqIGBkZWRlbnRgIHRyaW1zIHRoZSB3aG9sZSByZXN1bHQgYW5kIG9ubHkgdGhlbiBkZWNvZGVzIGBcXG5gIGFuZCBgXFxyYCBlc2NhcGVzLCBzbyBhbiBlZGdlIHJ1biBvZiBsaW5lIGJyZWFrcyBzdXJ2aXZlc1xuICogd2hlbiB3cml0dGVuIGFzIGVzY2FwZXMsIGFuZCBhbnkgb3RoZXIgZWRnZSB3aGl0ZXNwYWNlIGRvZXMgbm90IHN1cnZpdmUgYXQgYWxsLiBJdCBzdHJpcHMgdGhlIHNtYWxsZXN0IGluZGVudGF0aW9uXG4gKiBvZiB0aGUgbGluZXMsIGFuZCB0aGUgZmlyc3QgbGluZSBoZXJlIGFsd2F5cyBzdGFydHMgd2l0aCBhIG5vbi1ibGFuayBjaGFyYWN0ZXIsIHNvIGV2ZXJ5IGxpbmUga2VlcHMgaXRzIG93bi5cbiAqXG4gKiBAcGFyYW0gdGV4dCAtIFRoZSB0ZXh0IHRoZSB0ZW1wbGF0ZSBtdXN0IHByb2R1Y2UuXG4gKiBAcmV0dXJucyBUaGUgYm9keSBsaW5lcywgb3IgYG51bGxgIHdoZW4gYGRlZGVudGAgY2Fubm90IHByb2R1Y2UgdGhlIHRleHQgZnJvbSBhIHBsYWluIHRlbXBsYXRlLlxuICovXG5mdW5jdGlvbiB0b0RlZGVudExpbmVzKHRleHQ6IHN0cmluZyk6IG51bGwgfCBzdHJpbmdbXSB7XG4gIGlmICh0ZXh0LmluY2x1ZGVzKCdcXFxcJykpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBjb25zdCByZXN0ID0gdGV4dC5yZXBsYWNlKC9eW1xcclxcbl0rLywgJycpO1xuICBjb25zdCBsZWFkaW5nID0gdGV4dC5zbGljZSgwLCB0ZXh0Lmxlbmd0aCAtIHJlc3QubGVuZ3RoKTtcbiAgY29uc3QgY29yZSA9IHJlc3QucmVwbGFjZSgvW1xcclxcbl0rJC8sICcnKTtcbiAgY29uc3QgdHJhaWxpbmcgPSByZXN0LnNsaWNlKGNvcmUubGVuZ3RoKTtcbiAgaWYgKGNvcmUgPT09ICcnIHx8IChsZWFkaW5nID09PSAnJyAmJiAvXlxccy8udGVzdChjb3JlKSkgfHwgKHRyYWlsaW5nID09PSAnJyAmJiAvXFxzJC8udGVzdChjb3JlKSkpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8vIFRoZSBlc2NhcGVzIGhvbGQgbm8gbGluZSBicmVhaywgc28gc3BsaXR0aW5nIGFmdGVyIGVzY2FwaW5nIHNwbGl0cyBvbmx5IHRoZSBsaW5lIGJyZWFrcyBvZiB0aGUgY29yZS5cbiAgcmV0dXJuIGAke2VzY2FwZUxpbmVCcmVha3MobGVhZGluZyl9JHtlc2NhcGVUZW1wbGF0ZVRleHQoY29yZSl9JHtlc2NhcGVMaW5lQnJlYWtzKHRyYWlsaW5nKX1gLnNwbGl0KCdcXG4nKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFzQkEsU0FBUyx5QkFBeUI7QUFDbEMsU0FBUyxzQkFBc0I7QUFFL0I7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1AsU0FBUyxzQkFBc0I7QUFFL0IsTUFBTSxnQkFBZ0I7QUFDdEIsTUFBTSxzQkFBbUQsb0JBQUksSUFBSTtBQUFBLEVBQy9ELGVBQWU7QUFBQSxFQUNmLGVBQWU7QUFBQSxFQUNmLGVBQWU7QUFDakIsQ0FBQztBQUNELE1BQU0sU0FBUztBQUNmLE1BQU0sd0JBQXdCLG9CQUFJLElBQUksQ0FB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
|
|
208
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saW50ZXJzL2VzbGludC1ydWxlcy9wcmVmZXItZGVkZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBFU0xpbnQgcnVsZTogcHJlZmVyLWRlZGVudFxuICpcbiAqIFJlcG9ydHMgYW4gYXJyYXkgb2Ygc3RyaW5nIGxpdGVyYWxzIGpvaW5lZCB3aXRoIGEgbmV3bGluZSAoYFsnYScsICdiJ10uam9pbignXFxuJylgKSBhbmQgZml4ZXMgaXQgdG8gYSBgZGVkZW50YFxuICogdGVtcGxhdGUuIEFuIGFycmF5IGhvbGRpbmcgYW55dGhpbmcgYnV0IHN0cmluZyBhbmQgdGVtcGxhdGUgbGl0ZXJhbHMgaXMgbGVmdCBhbG9uZTogaXQgYnVpbGRzIGEgc3RyaW5nIGF0IHJ1bnRpbWUuXG4gKlxuICogVGhlIGZpeCByZXdyaXRlcyB0aGUgam9pbmVkIHRleHQgc28gdGhhdCBgZGVkZW50YCAoMS54LCB1c2VkIGFzIGEgdGFnKSByZXR1cm5zIGV4YWN0bHkgdGhlIHNhbWUgc3RyaW5nLiBJdCBydW5zIHRoZVxuICogc2FtZSBzdGVwcyBgZGVkZW50YCBkb2VzIGluIHJldmVyc2U6IGEgbGVhZGluZyBvciB0cmFpbGluZyBydW4gb2YgbGluZSBicmVha3MgYW5kIGV2ZXJ5IGNhcnJpYWdlIHJldHVybiBiZWNvbWVcbiAqIGBcXG5gIC8gYFxccmAgZXNjYXBlcywgd2hpY2ggYGRlZGVudGAgZGVjb2RlcyBvbmx5IGFmdGVyIGl0IHRyaW1zLCBhbmQgYmFja3RpY2tzIGFuZCBgJHtgIGFyZSBlc2NhcGVkLiBUZXh0IGl0IGNhbm5vdFxuICogcmVwcmVzZW50IHRoYXQgd2F5IGtlZXBzIHRoZSBkaWFnbm9zdGljIHdpdGhvdXQgYSBmaXg6IGEgYmFja3NsYXNoLCB3aGljaCBgZGVkZW50YCBwYXNzZXMgb24gcmF3OyBsZWFkaW5nIG9yIHRyYWlsaW5nXG4gKiB3aGl0ZXNwYWNlIHRoYXQgYGRlZGVudGAgd291bGQgdHJpbTsgYSB0ZW1wbGF0ZSBsaXRlcmFsIHdpdGggZXhwcmVzc2lvbnMsIHdob3NlIHZhbHVlcyBhcmUgdW5rbm93bjsgYW5kIGNvbW1lbnRzXG4gKiBpbnNpZGUgdGhlIGNhbGwuIFRoZSBmaXggcmV1c2VzIGEgdmlzaWJsZSBkZWZhdWx0IGltcG9ydCBvZiBgZGVkZW50YCwgb3IgYWRkcyBvbmUgdW5kZXIgYSBmcmVlIG5hbWUuXG4gKlxuICogVGhlIGBpZ25vcmVJbnNpZGVDYWxsc1RvYCBvcHRpb24gbmFtZXMgZnVuY3Rpb25zIHdob3NlIGNhbGxiYWNrIGFyZ3VtZW50cyBhcmUgc2VyaWFsaXplZCBhbmQgcnVuIGVsc2V3aGVyZSAoYW5cbiAqIE9ic2lkaWFuIHRlc3QncyBgZXZhbEluT2JzaWRpYW5gKSwgd2hlcmUgdGhlIG1vZHVsZSdzIGltcG9ydHMgYXJlIG5vdCBpbiBzY29wZS4gQSBqb2luIGluc2lkZSBhIGZ1bmN0aW9uIG5lc3RlZCBpblxuICogdGhlIGFyZ3VtZW50cyBvZiBzdWNoIGEgY2FsbCBpcyBub3QgcmVwb3J0ZWQsIGJlY2F1c2UgYGRlZGVudGAgY2Fubm90IGJlIHVzZWQgdGhlcmUuXG4gKi9cbmltcG9ydCB0eXBlIHsgVFNFU1RyZWUgfSBmcm9tICdAdHlwZXNjcmlwdC1lc2xpbnQvdXRpbHMnO1xuaW1wb3J0IHR5cGUgeyBSdWxlIH0gZnJvbSAnZXNsaW50JztcblxuaW1wb3J0IHsgZW5zdXJlTm9uTnVsbGFibGUgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvdHlwZS1ndWFyZHMnO1xuaW1wb3J0IHsgQVNUX05PREVfVFlQRVMgfSBmcm9tICdAdHlwZXNjcmlwdC1lc2xpbnQvdXRpbHMnO1xuXG5pbXBvcnQge1xuICBmaW5kVmlzaWJsZUltcG9ydE5hbWUsXG4gIGdldFVudXNlZE5hbWUsXG4gIGluc2VydEltcG9ydFxufSBmcm9tICcuL2ltcG9ydC1maXgudHMnO1xuaW1wb3J0IHsgdG9UU0VTVHJlZU5vZGUgfSBmcm9tICcuL3RzLWVzdHJlZS1ub2RlLnRzJztcblxuY29uc3QgREVERU5UX01PRFVMRSA9ICdkZWRlbnQnO1xuY29uc3QgRlVOQ1RJT05fTk9ERV9UWVBFUzogUmVhZG9ubHlTZXQ8QVNUX05PREVfVFlQRVM+ID0gbmV3IFNldChbXG4gIEFTVF9OT0RFX1RZUEVTLkFycm93RnVuY3Rpb25FeHByZXNzaW9uLFxuICBBU1RfTk9ERV9UWVBFUy5GdW5jdGlvbkRlY2xhcmF0aW9uLFxuICBBU1RfTk9ERV9UWVBFUy5GdW5jdGlvbkV4cHJlc3Npb25cbl0pO1xuY29uc3QgSU5ERU5UID0gJyAgJztcbmNvbnN0IExJTkVfQlJFQUtfU0VQQVJBVE9SUyA9IG5ldyBTZXQoWydcXG4nLCAnXFxyXFxuJ10pO1xuY29uc3QgTUlOSU1VTV9FTEVNRU5UU19XSVRIX0FfTElORV9CUkVBSyA9IDI7XG5cbi8qKlxuICogTWVzc2FnZSBJRCByZXBvcnRlZCB3aGVuIGFuIGFycmF5IG9mIHN0cmluZyBsaXRlcmFscyBpcyBqb2luZWQgd2l0aCBhIG5ld2xpbmUgaW5zdGVhZCBvZiB3cml0dGVuIGFzIGEgYGRlZGVudGAgdGVtcGxhdGUuXG4gKi9cbmV4cG9ydCBjb25zdCBNRVNTQUdFX0lEID0gJ3ByZWZlckRlZGVudCc7XG5cbnR5cGUgU3RyaW5nRWxlbWVudCA9IFRTRVNUcmVlLlN0cmluZ0xpdGVyYWwgfCBUU0VTVHJlZS5UZW1wbGF0ZUxpdGVyYWw7XG5cbi8qKlxuICogRVNMaW50IHJ1bGUgcHJlZmVycmluZyBhIGBkZWRlbnRgIHRlbXBsYXRlIG92ZXIgYW4gYXJyYXkgb2Ygc3RyaW5nIGxpdGVyYWxzIGpvaW5lZCB3aXRoIGEgbmV3bGluZS5cbiAqL1xuZXhwb3J0IGNvbnN0IHByZWZlckRlZGVudDogUnVsZS5SdWxlTW9kdWxlID0ge1xuICBjcmVhdGUoY29udGV4dCkge1xuICAgIGNvbnN0IG9wdGlvbnMgPSAoY29udGV4dC5vcHRpb25zWzBdID8/IHt9KSBhcyBQcmVmZXJEZWRlbnRPcHRpb25zO1xuICAgIGNvbnN0IGlnbm9yZWRDYWxsZWVOYW1lcyA9IG5ldyBTZXQob3B0aW9ucy5pZ25vcmVJbnNpZGVDYWxsc1RvKTtcbiAgICByZXR1cm4ge1xuICAgICAgJ0NhbGxFeHByZXNzaW9uJyhub2RlOiBSdWxlLk5vZGUpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY2FsbE5vZGUgPSB0b1RTRVNUcmVlTm9kZShub2RlKSBhcyBUU0VTVHJlZS5DYWxsRXhwcmVzc2lvbjtcbiAgICAgICAgY29uc3Qgam9pbmVkID0gZ2V0Sm9pbmVkU3RyaW5nRWxlbWVudHMoY2FsbE5vZGUpO1xuICAgICAgICBpZiAoIWpvaW5lZCB8fCBpc0luc2lkZUlnbm9yZWRDYWxsYmFjayhjYWxsTm9kZSwgaWdub3JlZENhbGxlZU5hbWVzKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICBmaXgoZml4ZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZUNvZGUgPSBjb250ZXh0LnNvdXJjZUNvZGU7XG4gICAgICAgICAgICBpZiAoc291cmNlQ29kZS5nZXRDb21tZW50c0luc2lkZShub2RlKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgdGV4dCA9IGdldEpvaW5lZFRleHQoam9pbmVkLmVsZW1lbnRzLCBqb2luZWQuc2VwYXJhdG9yKTtcbiAgICAgICAgICAgIGNvbnN0IGxpbmVzID0gdGV4dCA9PT0gbnVsbCA/IG51bGwgOiB0b0RlZGVudExpbmVzKHRleHQpO1xuICAgICAgICAgICAgaWYgKGxpbmVzID09PSBudWxsKSB7XG4gICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBmaXhlczogUnVsZS5GaXhbXSA9IFtdO1xuICAgICAgICAgICAgbGV0IG5hbWUgPSBmaW5kVmlzaWJsZUltcG9ydE5hbWUoeyBpbXBvcnRlZE5hbWU6ICdkZWZhdWx0JywgbW9kdWxlTmFtZTogREVERU5UX01PRFVMRSwgbm9kZSwgc291cmNlQ29kZSB9KTtcbiAgICAgICAgICAgIGlmIChuYW1lID09PSBudWxsKSB7XG4gICAgICAgICAgICAgIC8vIEEgc2NyaXB0IGNhbm5vdCBhY2NlcHQgYW4gRVNNIGltcG9ydC4gTGVhdmUgaXRzIGRpYWdub3N0aWMgZm9yIGEgbWFudWFsIGVkaXQuXG4gICAgICAgICAgICAgIGlmIChzb3VyY2VDb2RlLmFzdC5zb3VyY2VUeXBlICE9PSAnbW9kdWxlJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIG5hbWUgPSBnZXRVbnVzZWROYW1lKHNvdXJjZUNvZGUsICdkZWRlbnQnKTtcbiAgICAgICAgICAgICAgZml4ZXMucHVzaChpbnNlcnRJbXBvcnQoZml4ZXIsIHNvdXJjZUNvZGUsIGBpbXBvcnQgJHtuYW1lfSBmcm9tICcke0RFREVOVF9NT0RVTEV9JztgKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGxpbmVQcmVmaXggPSBzb3VyY2VDb2RlLnRleHQuc2xpY2Uoc291cmNlQ29kZS5nZXRJbmRleEZyb21Mb2MoeyBjb2x1bW46IDAsIGxpbmU6IGNhbGxOb2RlLmxvYy5zdGFydC5saW5lIH0pLCBjYWxsTm9kZS5yYW5nZVswXSk7XG4gICAgICAgICAgICBjb25zdCBsaW5lSW5kZW50ID0gbGluZVByZWZpeC5zbGljZSgwLCBsaW5lUHJlZml4Lmxlbmd0aCAtIGxpbmVQcmVmaXgudHJpbVN0YXJ0KCkubGVuZ3RoKTtcbiAgICAgICAgICAgIGNvbnN0IGJvZHkgPSBsaW5lcy5tYXAoKGxpbmUpID0+IGxpbmUgPT09ICcnID8gJycgOiBgJHtsaW5lSW5kZW50fSR7SU5ERU5UfSR7bGluZX1gKS5qb2luKCdcXG4nKTtcbiAgICAgICAgICAgIGZpeGVzLnB1c2goZml4ZXIucmVwbGFjZVRleHQobm9kZSwgYCR7bmFtZX1cXGBcXG4ke2JvZHl9XFxuJHtsaW5lSW5kZW50fVxcYGApKTtcbiAgICAgICAgICAgIHJldHVybiBmaXhlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIG1lc3NhZ2VJZDogTUVTU0FHRV9JRCxcbiAgICAgICAgICBub2RlXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH07XG4gIH0sXG4gIG1ldGE6IHtcbiAgICBkb2NzOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1ByZWZlciBhIGBkZWRlbnRgIHRlbXBsYXRlIG92ZXIgYW4gYXJyYXkgb2Ygc3RyaW5nIGxpdGVyYWxzIGpvaW5lZCB3aXRoIGEgbmV3bGluZSdcbiAgICB9LFxuICAgIGZpeGFibGU6ICdjb2RlJyxcbiAgICBtZXNzYWdlczoge1xuICAgICAgW01FU1NBR0VfSURdOiAnV3JpdGUgdGhpcyBtdWx0aWxpbmUgc3RyaW5nIGFzIGEgYGRlZGVudGAgdGVtcGxhdGUgaW5zdGVhZCBvZiBqb2luaW5nIGFuIGFycmF5IG9mIHN0cmluZyBsaXRlcmFscyB3aXRoIGEgbmV3bGluZS4nXG4gICAgfSxcbiAgICBzY2hlbWE6IFtcbiAgICAgIHtcbiAgICAgICAgYWRkaXRpb25hbFByb3BlcnRpZXM6IGZhbHNlLFxuICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgaWdub3JlSW5zaWRlQ2FsbHNUbzoge1xuICAgICAgICAgICAgaXRlbXM6IHsgdHlwZTogJ3N0cmluZycgfSxcbiAgICAgICAgICAgIHR5cGU6ICdhcnJheScsXG4gICAgICAgICAgICB1bmlxdWVJdGVtczogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgdHlwZTogJ29iamVjdCdcbiAgICAgIH1cbiAgICBdLFxuICAgIHR5cGU6ICdzdWdnZXN0aW9uJ1xuICB9XG59O1xuXG4vKipcbiAqIE9wdGlvbnMgb2YgdGhlIGBwcmVmZXItZGVkZW50YCBydWxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFByZWZlckRlZGVudE9wdGlvbnMge1xuICAvKipcbiAgICogTmFtZXMgb2YgZnVuY3Rpb25zIHdob3NlIGNhbGxiYWNrIGFyZ3VtZW50cyBydW4gd2hlcmUgdGhlIG1vZHVsZSdzIGltcG9ydHMgYXJlIG5vdCBpbiBzY29wZS4gQSBqb2luIGluc2lkZSBhXG4gICAqIGZ1bmN0aW9uIG5lc3RlZCBpbiB0aGUgYXJndW1lbnRzIG9mIGEgY2FsbCB0byBvbmUgb2YgdGhlbSBpcyBub3QgcmVwb3J0ZWQuIEEgbmFtZSBtYXRjaGVzIGEgYmFyZSBjYWxsZWVcbiAgICogKGBldmFsSW5PYnNpZGlhbiguLi4pYCkgYW5kIHRoZSBwcm9wZXJ0eSBvZiBhIG1lbWJlciBjYWxsZWUgKGBoZWxwZXJzLmV2YWxJbk9ic2lkaWFuKC4uLilgKS5cbiAgICovXG4gIHJlYWRvbmx5IGlnbm9yZUluc2lkZUNhbGxzVG8/OiByZWFkb25seSBzdHJpbmdbXTtcbn1cblxuaW50ZXJmYWNlIEpvaW5lZFN0cmluZ0VsZW1lbnRzIHtcbiAgcmVhZG9ubHkgZWxlbWVudHM6IHJlYWRvbmx5IFN0cmluZ0VsZW1lbnRbXTtcbiAgcmVhZG9ubHkgc2VwYXJhdG9yOiBzdHJpbmc7XG59XG5cbmZ1bmN0aW9uIGVzY2FwZUxpbmVCcmVha3ModGV4dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHRleHQucmVwbGFjZUFsbCgnXFxyJywgU3RyaW5nLnJhd2BcXHJgKS5yZXBsYWNlQWxsKCdcXG4nLCBTdHJpbmcucmF3YFxcbmApO1xufVxuXG5mdW5jdGlvbiBlc2NhcGVUZW1wbGF0ZVRleHQodGV4dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHRleHQucmVwbGFjZUFsbCgnYCcsICdcXFxcYCcpLnJlcGxhY2VBbGwoJyR7JywgJ1xcXFwkeycpLnJlcGxhY2VBbGwoJ1xccicsIFN0cmluZy5yYXdgXFxyYCk7XG59XG5cbmZ1bmN0aW9uIGdldENhbGxlZU5hbWUoY2FsbGVlOiBUU0VTVHJlZS5FeHByZXNzaW9uKTogbnVsbCB8IHN0cmluZyB7XG4gIGlmIChjYWxsZWUudHlwZSA9PT0gQVNUX05PREVfVFlQRVMuSWRlbnRpZmllcikge1xuICAgIHJldHVybiBjYWxsZWUubmFtZTtcbiAgfVxuICByZXR1cm4gY2FsbGVlLnR5cGUgPT09IEFTVF9OT0RFX1RZUEVTLk1lbWJlckV4cHJlc3Npb24gJiYgIWNhbGxlZS5jb21wdXRlZCAmJiBjYWxsZWUucHJvcGVydHkudHlwZSA9PT0gQVNUX05PREVfVFlQRVMuSWRlbnRpZmllclxuICAgID8gY2FsbGVlLnByb3BlcnR5Lm5hbWVcbiAgICA6IG51bGw7XG59XG5cbmZ1bmN0aW9uIGdldEpvaW5lZFN0cmluZ0VsZW1lbnRzKG5vZGU6IFRTRVNUcmVlLkNhbGxFeHByZXNzaW9uKTogSm9pbmVkU3RyaW5nRWxlbWVudHMgfCBudWxsIHtcbiAgY29uc3QgY2FsbGVlID0gbm9kZS5jYWxsZWU7XG4gIGlmIChcbiAgICBub2RlLm9wdGlvbmFsIHx8IG5vZGUuYXJndW1lbnRzLmxlbmd0aCAhPT0gMVxuICAgIHx8IGNhbGxlZS50eXBlICE9PSBBU1RfTk9ERV9UWVBFUy5NZW1iZXJFeHByZXNzaW9uIHx8IGNhbGxlZS5vcHRpb25hbCB8fCBjYWxsZWUuY29tcHV0ZWRcbiAgICB8fCBjYWxsZWUucHJvcGVydHkudHlwZSAhPT0gQVNUX05PREVfVFlQRVMuSWRlbnRpZmllciB8fCBjYWxsZWUucHJvcGVydHkubmFtZSAhPT0gJ2pvaW4nXG4gICAgfHwgY2FsbGVlLm9iamVjdC50eXBlICE9PSBBU1RfTk9ERV9UWVBFUy5BcnJheUV4cHJlc3Npb25cbiAgKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBzZXBhcmF0b3IgPSBnZXRTdGF0aWNTdHJpbmcoZW5zdXJlTm9uTnVsbGFibGUobm9kZS5hcmd1bWVudHNbMF0pKTtcbiAgaWYgKHNlcGFyYXRvciA9PT0gbnVsbCB8fCAhTElORV9CUkVBS19TRVBBUkFUT1JTLmhhcyhzZXBhcmF0b3IpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBlbGVtZW50czogU3RyaW5nRWxlbWVudFtdID0gW107XG4gIGZvciAoY29uc3QgZWxlbWVudCBvZiBjYWxsZWUub2JqZWN0LmVsZW1lbnRzKSB7XG4gICAgaWYgKCFpc1N0cmluZ0VsZW1lbnQoZWxlbWVudCkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBlbGVtZW50cy5wdXNoKGVsZW1lbnQpO1xuICB9XG4gIC8vIEEgc2luZ2xlIGVsZW1lbnQgam9pbnMgdG8gaXRzZWxmOyB0aGVyZSBpcyBubyBsaW5lIGJyZWFrIHRvIHJld3JpdGUuXG4gIHJldHVybiBlbGVtZW50cy5sZW5ndGggPCBNSU5JTVVNX0VMRU1FTlRTX1dJVEhfQV9MSU5FX0JSRUFLID8gbnVsbCA6IHsgZWxlbWVudHMsIHNlcGFyYXRvciB9O1xufVxuXG5mdW5jdGlvbiBnZXRKb2luZWRUZXh0KGVsZW1lbnRzOiByZWFkb25seSBTdHJpbmdFbGVtZW50W10sIHNlcGFyYXRvcjogc3RyaW5nKTogbnVsbCB8IHN0cmluZyB7XG4gIGNvbnN0IHZhbHVlczogc3RyaW5nW10gPSBbXTtcbiAgZm9yIChjb25zdCBlbGVtZW50IG9mIGVsZW1lbnRzKSB7XG4gICAgY29uc3QgdmFsdWUgPSBnZXRTdGF0aWNTdHJpbmcoZWxlbWVudCk7XG4gICAgaWYgKHZhbHVlID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgdmFsdWVzLnB1c2godmFsdWUpO1xuICB9XG4gIHJldHVybiB2YWx1ZXMuam9pbihzZXBhcmF0b3IpO1xufVxuXG5mdW5jdGlvbiBnZXRTdGF0aWNTdHJpbmcobm9kZTogVFNFU1RyZWUuTm9kZSk6IG51bGwgfCBzdHJpbmcge1xuICBpZiAobm9kZS50eXBlID09PSBBU1RfTk9ERV9UWVBFUy5MaXRlcmFsKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBub2RlLnZhbHVlID09PSAnc3RyaW5nJyA/IG5vZGUudmFsdWUgOiBudWxsO1xuICB9XG4gIC8vIEFuIHVudGFnZ2VkIHRlbXBsYXRlIHdpdGggYW4gaW52YWxpZCBlc2NhcGUgaXMgYSBzeW50YXggZXJyb3IsIHNvIGl0cyBjb29rZWQgdGV4dCBhbHdheXMgZXhpc3RzLlxuICByZXR1cm4gbm9kZS50eXBlID09PSBBU1RfTk9ERV9UWVBFUy5UZW1wbGF0ZUxpdGVyYWwgJiYgbm9kZS5leHByZXNzaW9ucy5sZW5ndGggPT09IDAgPyBlbnN1cmVOb25OdWxsYWJsZShub2RlLnF1YXNpc1swXSkudmFsdWUuY29va2VkIDogbnVsbDtcbn1cblxuZnVuY3Rpb24gaXNJbnNpZGVJZ25vcmVkQ2FsbGJhY2sobm9kZTogVFNFU1RyZWUuTm9kZSwgaWdub3JlZENhbGxlZU5hbWVzOiBSZWFkb25seVNldDxzdHJpbmc+KTogYm9vbGVhbiB7XG4gIGlmIChpZ25vcmVkQ2FsbGVlTmFtZXMuc2l6ZSA9PT0gMCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBsZXQgaXNJbnNpZGVGdW5jdGlvbiA9IGZhbHNlO1xuICBsZXQgY2hpbGQgPSBub2RlO1xuICBmb3IgKGxldCBwYXJlbnQgPSBub2RlLnBhcmVudDsgcGFyZW50OyBjaGlsZCA9IHBhcmVudCwgcGFyZW50ID0gcGFyZW50LnBhcmVudCkge1xuICAgIGlmIChGVU5DVElPTl9OT0RFX1RZUEVTLmhhcyhwYXJlbnQudHlwZSkpIHtcbiAgICAgIGlzSW5zaWRlRnVuY3Rpb24gPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAoaXNJbnNpZGVGdW5jdGlvbiAmJiBwYXJlbnQudHlwZSA9PT0gQVNUX05PREVfVFlQRVMuQ2FsbEV4cHJlc3Npb24gJiYgcGFyZW50LmNhbGxlZSAhPT0gY2hpbGQpIHtcbiAgICAgIGNvbnN0IG5hbWUgPSBnZXRDYWxsZWVOYW1lKHBhcmVudC5jYWxsZWUpO1xuICAgICAgaWYgKG5hbWUgIT09IG51bGwgJiYgaWdub3JlZENhbGxlZU5hbWVzLmhhcyhuYW1lKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBpc1N0cmluZ0VsZW1lbnQoZWxlbWVudDogbnVsbCB8IFRTRVNUcmVlLk5vZGUpOiBlbGVtZW50IGlzIFN0cmluZ0VsZW1lbnQge1xuICByZXR1cm4gZWxlbWVudD8udHlwZSA9PT0gQVNUX05PREVfVFlQRVMuVGVtcGxhdGVMaXRlcmFsXG4gICAgfHwgKGVsZW1lbnQ/LnR5cGUgPT09IEFTVF9OT0RFX1RZUEVTLkxpdGVyYWwgJiYgdHlwZW9mIGVsZW1lbnQudmFsdWUgPT09ICdzdHJpbmcnKTtcbn1cblxuLyoqXG4gKiBFbmNvZGVzIHRleHQgYXMgdGhlIGxpbmVzIG9mIGEgYGRlZGVudGAgdGVtcGxhdGUgYm9keSwgYmVmb3JlIGluZGVudGF0aW9uLlxuICpcbiAqIGBkZWRlbnRgIHRyaW1zIHRoZSB3aG9sZSByZXN1bHQgYW5kIG9ubHkgdGhlbiBkZWNvZGVzIGBcXG5gIGFuZCBgXFxyYCBlc2NhcGVzLCBzbyBhbiBlZGdlIHJ1biBvZiBsaW5lIGJyZWFrcyBzdXJ2aXZlc1xuICogd2hlbiB3cml0dGVuIGFzIGVzY2FwZXMsIGFuZCBhbnkgb3RoZXIgZWRnZSB3aGl0ZXNwYWNlIGRvZXMgbm90IHN1cnZpdmUgYXQgYWxsLiBJdCBzdHJpcHMgdGhlIHNtYWxsZXN0IGluZGVudGF0aW9uXG4gKiBvZiB0aGUgbGluZXMsIGFuZCB0aGUgZmlyc3QgbGluZSBoZXJlIGFsd2F5cyBzdGFydHMgd2l0aCBhIG5vbi1ibGFuayBjaGFyYWN0ZXIsIHNvIGV2ZXJ5IGxpbmUga2VlcHMgaXRzIG93bi5cbiAqXG4gKiBAcGFyYW0gdGV4dCAtIFRoZSB0ZXh0IHRoZSB0ZW1wbGF0ZSBtdXN0IHByb2R1Y2UuXG4gKiBAcmV0dXJucyBUaGUgYm9keSBsaW5lcywgb3IgYG51bGxgIHdoZW4gYGRlZGVudGAgY2Fubm90IHByb2R1Y2UgdGhlIHRleHQgZnJvbSBhIHBsYWluIHRlbXBsYXRlLlxuICovXG5mdW5jdGlvbiB0b0RlZGVudExpbmVzKHRleHQ6IHN0cmluZyk6IG51bGwgfCBzdHJpbmdbXSB7XG4gIGlmICh0ZXh0LmluY2x1ZGVzKCdcXFxcJykpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBjb25zdCByZXN0ID0gdGV4dC5yZXBsYWNlKC9eW1xcclxcbl0rLywgJycpO1xuICBjb25zdCBsZWFkaW5nID0gdGV4dC5zbGljZSgwLCB0ZXh0Lmxlbmd0aCAtIHJlc3QubGVuZ3RoKTtcbiAgY29uc3QgY29yZSA9IHJlc3QucmVwbGFjZSgvW1xcclxcbl0rJC8sICcnKTtcbiAgY29uc3QgdHJhaWxpbmcgPSByZXN0LnNsaWNlKGNvcmUubGVuZ3RoKTtcbiAgLy8gVGhlIGVzY2FwZXMgaG9sZCBubyBsaW5lIGJyZWFrLCBzbyBzcGxpdHRpbmcgYWZ0ZXIgZXNjYXBpbmcgc3BsaXRzIG9ubHkgdGhlIGxpbmUgYnJlYWtzIG9mIHRoZSBjb3JlLlxuICByZXR1cm4gY29yZSA9PT0gJycgfHwgKGxlYWRpbmcgPT09ICcnICYmIC9eXFxzLy50ZXN0KGNvcmUpKSB8fCAodHJhaWxpbmcgPT09ICcnICYmIC9cXHMkLy50ZXN0KGNvcmUpKVxuICAgID8gbnVsbFxuICAgIDogYCR7ZXNjYXBlTGluZUJyZWFrcyhsZWFkaW5nKX0ke2VzY2FwZVRlbXBsYXRlVGV4dChjb3JlKX0ke2VzY2FwZUxpbmVCcmVha3ModHJhaWxpbmcpfWAuc3BsaXQoJ1xcbicpO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXNCQSxTQUFTLHlCQUF5QjtBQUNsQyxTQUFTLHNCQUFzQjtBQUUvQjtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUCxTQUFTLHNCQUFzQjtBQUUvQixNQUFNLGdCQUFnQjtBQUN0QixNQUFNLHNCQUFtRCxvQkFBSSxJQUFJO0FBQUEsRUFDL0QsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUNqQixDQUFDO0FBQ0QsTUFBTSxTQUFTO0FBQ2YsTUFBTSx3QkFBd0Isb0JBQUksSUFBSSxDQUFDLE1BQU0sTUFBTSxDQUFD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
|
|
@@ -10,9 +10,12 @@
|
|
|
10
10
|
* (`!a && b`), but only outside TypeScript. `unicorn/prefer-ternary` fixes `if (a) { return false; } return b;` into
|
|
11
11
|
* exactly that ternary, so in a TypeScript file `lint:fix` produced an error it then could not fix, and every site
|
|
12
12
|
* had to be rewritten by hand. This rule reports what unicorn reports and adds the fix where one branch is a boolean
|
|
13
|
-
* literal.
|
|
14
|
-
*
|
|
15
|
-
*
|
|
13
|
+
* literal. Unicorn reports the shape only when the other branch is boolean, and since unicorn 79 for a test of any
|
|
14
|
+
* type. The rewrite is exact at runtime: a negated test (`a ? false : b` → `!a && b`, `a ? b : true` → `!a || b`) is
|
|
15
|
+
* a boolean already, and otherwise (`a ? true : b` → `a || b`, `a ? b : false` → `a && b`) a test the type checker
|
|
16
|
+
* cannot prove boolean is coerced with `!!`, because `a && b` would return a falsy `a` itself (`null`, `0`, `''`)
|
|
17
|
+
* where the ternary returned `false`. Unicorn coerces with `Boolean(a)`; `!!a` is used here because TypeScript
|
|
18
|
+
* narrows on it, so `!!a && a.b` still type-checks.
|
|
16
19
|
*/
|
|
17
20
|
import type { Rule } from 'eslint';
|
|
18
21
|
/**
|
|
@@ -37,6 +37,8 @@ ensureBrowserProcess();
|
|
|
37
37
|
})();
|
|
38
38
|
|
|
39
39
|
import eslintPluginUnicorn from "eslint-plugin-unicorn";
|
|
40
|
+
import { TypeFlags } from "typescript";
|
|
41
|
+
import { toTSESTreeNode } from "./ts-estree-node.mjs";
|
|
40
42
|
const UNICORN_RULE_NAME = "prefer-logical-operator-over-ternary";
|
|
41
43
|
const MESSAGE_ID = "prefer-logical-operator-over-ternary/error";
|
|
42
44
|
const unicornRule = getUnicornRule();
|
|
@@ -68,6 +70,15 @@ function getUnicornRule() {
|
|
|
68
70
|
}
|
|
69
71
|
return rule;
|
|
70
72
|
}
|
|
73
|
+
function isProvenBoolean(node, sourceCode) {
|
|
74
|
+
const services = sourceCode.parserServices;
|
|
75
|
+
if (!services.program || !services.esTreeNodeToTSNodeMap) {
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
const type = services.program.getTypeChecker().getTypeAtLocation(services.esTreeNodeToTSNodeMap.get(toTSESTreeNode(node)));
|
|
79
|
+
const constituents = type.isUnion() ? type.types : [type];
|
|
80
|
+
return constituents.every((constituent) => (constituent.flags & TypeFlags.BooleanLike) !== 0);
|
|
81
|
+
}
|
|
71
82
|
function needsParentheses(node, operator) {
|
|
72
83
|
switch (node.type) {
|
|
73
84
|
case "ArrayExpression":
|
|
@@ -117,7 +128,14 @@ function withLiteralBranchFix(descriptor, sourceCode) {
|
|
|
117
128
|
const other = isConsequentLiteral ? alternate : consequent;
|
|
118
129
|
const shouldNegateTest = isConsequentLiteral !== literalValue;
|
|
119
130
|
const operator = literalValue ? "||" : "&&";
|
|
120
|
-
|
|
131
|
+
let testText;
|
|
132
|
+
if (shouldNegateTest) {
|
|
133
|
+
testText = `!${toOperandText(test, "!", sourceCode)}`;
|
|
134
|
+
} else if (isProvenBoolean(test, sourceCode)) {
|
|
135
|
+
testText = toOperandText(test, operator, sourceCode);
|
|
136
|
+
} else {
|
|
137
|
+
testText = `!!${toOperandText(test, "!", sourceCode)}`;
|
|
138
|
+
}
|
|
121
139
|
const otherText = toOperandText(other, operator, sourceCode);
|
|
122
140
|
return {
|
|
123
141
|
...descriptor,
|
|
@@ -131,4 +149,4 @@ export {
|
|
|
131
149
|
UNICORN_RULE_NAME,
|
|
132
150
|
preferLogicalOperatorOverTernary
|
|
133
151
|
};
|
|
134
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saW50ZXJzL2VzbGludC1ydWxlcy9wcmVmZXItbG9naWNhbC1vcGVyYXRvci1vdmVyLXRlcm5hcnkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIEVTTGludCBydWxlOiBwcmVmZXItbG9naWNhbC1vcGVyYXRvci1vdmVyLXRlcm5hcnlcbiAqXG4gKiBgdW5pY29ybi9wcmVmZXItbG9naWNhbC1vcGVyYXRvci1vdmVyLXRlcm5hcnlgLCB3aXRoIHRoZSBmaXggaXQgd2l0aGhvbGRzIGluIGEgVHlwZVNjcmlwdCBmaWxlLlxuICpcbiAqIFVuaWNvcm4gcmVwb3J0cyBhIHRlcm5hcnkgd2l0aCBvbmUgYm9vbGVhbiBicmFuY2ggKGBhID8gZmFsc2UgOiBiYCkgYW5kIGZpeGVzIGl0IHRvIGEgbG9naWNhbCBleHByZXNzaW9uXG4gKiAoYCFhICYmIGJgKSwgYnV0IG9ubHkgb3V0c2lkZSBUeXBlU2NyaXB0LiBgdW5pY29ybi9wcmVmZXItdGVybmFyeWAgZml4ZXMgYGlmIChhKSB7IHJldHVybiBmYWxzZTsgfSByZXR1cm4gYjtgIGludG9cbiAqIGV4YWN0bHkgdGhhdCB0ZXJuYXJ5LCBzbyBpbiBhIFR5cGVTY3JpcHQgZmlsZSBgbGludDpmaXhgIHByb2R1Y2VkIGFuIGVycm9yIGl0IHRoZW4gY291bGQgbm90IGZpeCwgYW5kIGV2ZXJ5IHNpdGVcbiAqIGhhZCB0byBiZSByZXdyaXR0ZW4gYnkgaGFuZC4gVGhpcyBydWxlIHJlcG9ydHMgd2hhdCB1bmljb3JuIHJlcG9ydHMgYW5kIGFkZHMgdGhlIGZpeCB3aGVyZSBvbmUgYnJhbmNoIGlzIGEgYm9vbGVhblxuICogbGl0ZXJhbC4gVGhlIHJld3JpdGUgaXMgZXhhY3QgYXQgcnVudGltZTogd2l0aCBhIG5lZ2F0ZWQgdGVzdCAoYGEgPyBmYWxzZSA6IGJgIOKGkiBgIWEgJiYgYmAsIGBhID8gYiA6IHRydWVgIOKGklxuICogYCFhIHx8IGJgKSBmb3IgYW55IHRlc3QsIGFuZCBvdGhlcndpc2UgKGBhID8gdHJ1ZSA6IGJgIOKGkiBgYSB8fCBiYCwgYGEgPyBiIDogZmFsc2VgIOKGkiBgYSAmJiBiYCkgYmVjYXVzZSB1bmljb3JuXG4gKiByZXBvcnRzIHRoYXQgc2hhcGUgb25seSBmb3IgYSB0ZXN0IGl0IGhhcyBwcm92ZW4gYm9vbGVhbi5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFJ1bGUgfSBmcm9tICdlc2xpbnQnO1xuaW1wb3J0IHR5cGUge1xuICBDb25kaXRpb25hbEV4cHJlc3Npb24sXG4gIEV4cHJlc3Npb24sXG4gIE5vZGVcbn0gZnJvbSAnZXN0cmVlJztcblxuaW1wb3J0IGVzbGludFBsdWdpblVuaWNvcm4gZnJvbSAnZXNsaW50LXBsdWdpbi11bmljb3JuJztcblxuLyoqXG4gKiBUaGUgaWQgb2YgdGhlIHVuaWNvcm4gcnVsZSB0aGlzIHJ1bGUgZGVsZWdhdGVzIHRvLCBpbnNpZGUgdGhlIGB1bmljb3JuYCBuYW1lc3BhY2UuXG4gKi9cbmV4cG9ydCBjb25zdCBVTklDT1JOX1JVTEVfTkFNRSA9ICdwcmVmZXItbG9naWNhbC1vcGVyYXRvci1vdmVyLXRlcm5hcnknO1xuXG4vKipcbiAqIFRoZSBtZXNzYWdlIGlkIHVuaWNvcm4gcmVwb3J0cyBhIHRlcm5hcnkgdW5kZXIgd2hlbiBhIGxvZ2ljYWwgb3BlcmF0b3IgY291bGQgcmVwbGFjZSBpdC5cbiAqL1xuZXhwb3J0IGNvbnN0IE1FU1NBR0VfSUQgPSAncHJlZmVyLWxvZ2ljYWwtb3BlcmF0b3Itb3Zlci10ZXJuYXJ5L2Vycm9yJztcblxudHlwZSBMb2dpY2FsT3BlcmF0b3IgPSAnJiYnIHwgJ3x8JztcblxudHlwZSBVbmljb3JuUmVwb3J0RGVzY3JpcHRvciA9IFJ1bGUuUmVwb3J0RGVzY3JpcHRvck9wdGlvbnMgJiBVbmljb3JuUmVwb3J0RGVzY3JpcHRvckZpZWxkcztcblxuaW50ZXJmYWNlIFVuaWNvcm5SZXBvcnREZXNjcmlwdG9yRmllbGRzIHtcbiAgcmVhZG9ubHkgbWVzc2FnZUlkPzogc3RyaW5nO1xuICByZWFkb25seSBub2RlOiBOb2RlO1xufVxuXG5jb25zdCB1bmljb3JuUnVsZSA9IGdldFVuaWNvcm5SdWxlKCk7XG5cbi8qKlxuICogRVNMaW50IHJ1bGUgcmVwb3J0aW5nIHdoYXQgYHVuaWNvcm4vcHJlZmVyLWxvZ2ljYWwtb3BlcmF0b3Itb3Zlci10ZXJuYXJ5YCByZXBvcnRzLCBmaXhpbmcgYSB0ZXJuYXJ5IHdpdGggYSBib29sZWFuXG4gKiBsaXRlcmFsIGJyYW5jaCBpbiBhIFR5cGVTY3JpcHQgZmlsZSB0b28uXG4gKi9cbmV4cG9ydCBjb25zdCBwcmVmZXJMb2dpY2FsT3BlcmF0b3JPdmVyVGVybmFyeTogUnVsZS5SdWxlTW9kdWxlID0ge1xuICBjcmVhdGUoY29udGV4dCkge1xuICAgIGNvbnN0IHJlcG9ydGluZ0NvbnRleHQ6IFJ1bGUuUnVsZUNvbnRleHQgPSBPYmplY3QuY3JlYXRlKGNvbnRleHQsIHtcbiAgICAgIHJlcG9ydDoge1xuICAgICAgICB2YWx1ZShkZXNjcmlwdG9yOiBSdWxlLlJlcG9ydERlc2NyaXB0b3IpOiB2b2lkIHtcbiAgICAgICAgICBjb250ZXh0LnJlcG9ydCh3aXRoTGl0ZXJhbEJyYW5jaEZpeChkZXNjcmlwdG9yLCBjb250ZXh0LnNvdXJjZUNvZGUpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHVuaWNvcm5SdWxlLmNyZWF0ZShyZXBvcnRpbmdDb250ZXh0KTtcbiAgfSxcbiAgbWV0YToge1xuICAgIC4uLnVuaWNvcm5SdWxlLm1ldGEsXG4gICAgZG9jczoge1xuICAgICAgZGVzY3JpcHRpb246ICdQcmVmZXIgYSBsb2dpY2FsIG9wZXJhdG9yIG92ZXIgYSB0ZXJuYXJ5LCBmaXhpbmcgYSBib29sZWFuIGxpdGVyYWwgYnJhbmNoIGluIFR5cGVTY3JpcHQgdG9vJ1xuICAgIH1cbiAgfVxufTtcblxuZnVuY3Rpb24gZ2V0Qm9vbGVhbkxpdGVyYWxWYWx1ZShub2RlOiBOb2RlKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBub2RlLnR5cGUgPT09ICdMaXRlcmFsJyAmJiB0eXBlb2Ygbm9kZS52YWx1ZSA9PT0gJ2Jvb2xlYW4nID8gbm9kZS52YWx1ZSA6IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gZ2V0VW5pY29yblJ1bGUoKTogUnVsZS5SdWxlTW9kdWxlIHtcbiAgY29uc3QgcnVsZSA9IGVzbGludFBsdWdpblVuaWNvcm4ucnVsZXM/LltVTklDT1JOX1JVTEVfTkFNRV07XG5cbiAgLyogdjggaWdub3JlIHN0YXJ0IC0tIEd1YXJkcyBhbiB1cGdyYWRlIG9mIGVzbGludC1wbHVnaW4tdW5pY29ybiB0aGF0IGRyb3BzIG9yIHJlbmFtZXMgdGhlIHJ1bGUuICovXG4gIGlmICghcnVsZSB8fCB0eXBlb2YgcnVsZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBFcnJvcihgZXNsaW50LXBsdWdpbi11bmljb3JuIG5vIGxvbmdlciBkZWZpbmVzIHRoZSAke1VOSUNPUk5fUlVMRV9OQU1FfSBydWxlLmApO1xuICB9XG4gIC8qIHY4IGlnbm9yZSBzdG9wICovXG5cbiAgcmV0dXJuIHJ1bGU7XG59XG5cbmZ1bmN0aW9uIG5lZWRzUGFyZW50aGVzZXMobm9kZTogRXhwcmVzc2lvbiwgb3BlcmF0b3I6ICchJyB8IExvZ2ljYWxPcGVyYXRvcik6IGJvb2xlYW4ge1xuICBzd2l0Y2ggKG5vZGUudHlwZSkge1xuICAgIGNhc2UgJ0FycmF5RXhwcmVzc2lvbic6XG4gICAgY2FzZSAnQXdhaXRFeHByZXNzaW9uJzpcbiAgICBjYXNlICdDYWxsRXhwcmVzc2lvbic6XG4gICAgY2FzZSAnQ2hhaW5FeHByZXNzaW9uJzpcbiAgICBjYXNlICdJZGVudGlmaWVyJzpcbiAgICBjYXNlICdMaXRlcmFsJzpcbiAgICBjYXNlICdNZW1iZXJFeHByZXNzaW9uJzpcbiAgICBjYXNlICdOZXdFeHByZXNzaW9uJzpcbiAgICBjYXNlICdPYmplY3RFeHByZXNzaW9uJzpcbiAgICBjYXNlICdUYWdnZWRUZW1wbGF0ZUV4cHJlc3Npb24nOlxuICAgIGNhc2UgJ1RlbXBsYXRlTGl0ZXJhbCc6XG4gICAgY2FzZSAnVGhpc0V4cHJlc3Npb24nOlxuICAgIGNhc2UgJ1VuYXJ5RXhwcmVzc2lvbic6IHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY2FzZSAnQmluYXJ5RXhwcmVzc2lvbic6IHtcbiAgICAgIHJldHVybiBvcGVyYXRvciA9PT0gJyEnO1xuICAgIH1cbiAgICBjYXNlICdMb2dpY2FsRXhwcmVzc2lvbic6IHtcbiAgICAgIHJldHVybiBvcGVyYXRvciA9PT0gJyEnIHx8IG5vZGUub3BlcmF0b3IgPT09ICc/PycgfHwgKG9wZXJhdG9yID09PSAnJiYnICYmIG5vZGUub3BlcmF0b3IgPT09ICd8fCcpO1xuICAgIH1cbiAgICBkZWZhdWx0OiB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gdG9PcGVyYW5kVGV4dChub2RlOiBFeHByZXNzaW9uLCBvcGVyYXRvcjogJyEnIHwgTG9naWNhbE9wZXJhdG9yLCBzb3VyY2VDb2RlOiBSdWxlLlJ1bGVDb250ZXh0Wydzb3VyY2VDb2RlJ10pOiBzdHJpbmcge1xuICBjb25zdCB0ZXh0ID0gc291cmNlQ29kZS5nZXRUZXh0KG5vZGUpO1xuICByZXR1cm4gbmVlZHNQYXJlbnRoZXNlcyhub2RlLCBvcGVyYXRvcikgPyBgKCR7dGV4dH0pYCA6IHRleHQ7XG59XG5cbmZ1bmN0aW9uIHdpdGhMaXRlcmFsQnJhbmNoRml4KGRlc2NyaXB0b3I6IFJ1bGUuUmVwb3J0RGVzY3JpcHRvciwgc291cmNlQ29kZTogUnVsZS5SdWxlQ29udGV4dFsnc291cmNlQ29kZSddKTogUnVsZS5SZXBvcnREZXNjcmlwdG9yIHtcbiAgY29uc3QgeyBmaXgsIG1lc3NhZ2VJZCwgbm9kZSwgc3VnZ2VzdCB9ID0gZGVzY3JpcHRvciBhcyBVbmljb3JuUmVwb3J0RGVzY3JpcHRvcjtcblxuICAvLyBVbmljb3JuIGZpeGVzIHRoZSBzaGFwZSBpdHNlbGYgb3V0c2lkZSBUeXBlU2NyaXB0LCBhbmQgb2ZmZXJzIHN1Z2dlc3Rpb25zIGZvciB0aGUgc2hhcGVzIGl0IGNhbm5vdCBmaXguXG4gIGlmIChtZXNzYWdlSWQgIT09IE1FU1NBR0VfSUQgfHwgZml4IHx8IHN1Z2dlc3QpIHtcbiAgICByZXR1cm4gZGVzY3JpcHRvcjtcbiAgfVxuXG4gIC8vIFVuaWNvcm4gcmVwb3J0cyB0aGlzIG1lc3NhZ2Ugb24gdGhlIHRlcm5hcnkgaXRzZWxmLlxuICBjb25zdCBjb25kaXRpb25hbEV4cHJlc3Npb24gPSBub2RlIGFzIENvbmRpdGlvbmFsRXhwcmVzc2lvbjtcbiAgY29uc3QgeyBhbHRlcm5hdGUsIGNvbnNlcXVlbnQsIHRlc3QgfSA9IGNvbmRpdGlvbmFsRXhwcmVzc2lvbjtcbiAgY29uc3QgY29uc2VxdWVudFZhbHVlID0gZ2V0Qm9vbGVhbkxpdGVyYWxWYWx1ZShjb25zZXF1ZW50KTtcbiAgY29uc3QgYWx0ZXJuYXRlVmFsdWUgPSBnZXRCb29sZWFuTGl0ZXJhbFZhbHVlKGFsdGVybmF0ZSk7XG4gIGNvbnN0IGxpdGVyYWxWYWx1ZSA9IGNvbnNlcXVlbnRWYWx1ZSA/PyBhbHRlcm5hdGVWYWx1ZTtcblxuICBpZiAoXG4gICAgbGl0ZXJhbFZhbHVlID09PSB1bmRlZmluZWRcbiAgICB8fCAoY29uc2VxdWVudFZhbHVlICE9PSB1bmRlZmluZWQgJiYgYWx0ZXJuYXRlVmFsdWUgIT09IHVuZGVmaW5lZClcbiAgICB8fCBzb3VyY2VDb2RlLmdldENvbW1lbnRzSW5zaWRlKGNvbmRpdGlvbmFsRXhwcmVzc2lvbikubGVuZ3RoID4gMFxuICApIHtcbiAgICByZXR1cm4gZGVzY3JpcHRvcjtcbiAgfVxuXG4gIGNvbnN0IGlzQ29uc2VxdWVudExpdGVyYWwgPSBjb25zZXF1ZW50VmFsdWUgIT09IHVuZGVmaW5lZDtcbiAgY29uc3Qgb3RoZXIgPSBpc0NvbnNlcXVlbnRMaXRlcmFsID8gYWx0ZXJuYXRlIDogY29uc2VxdWVudDtcbiAgY29uc3Qgc2hvdWxkTmVnYXRlVGVzdCA9IGlzQ29uc2VxdWVudExpdGVyYWwgIT09IGxpdGVyYWxWYWx1ZTtcbiAgY29uc3Qgb3BlcmF0b3I6IExvZ2ljYWxPcGVyYXRvciA9IGxpdGVyYWxWYWx1ZSA/ICd8fCcgOiAnJiYnO1xuICBjb25zdCB0ZXN0VGV4dCA9IHNob3VsZE5lZ2F0ZVRlc3QgPyBgISR7dG9PcGVyYW5kVGV4dCh0ZXN0LCAnIScsIHNvdXJjZUNvZGUpfWAgOiB0b09wZXJhbmRUZXh0KHRlc3QsIG9wZXJhdG9yLCBzb3VyY2VDb2RlKTtcbiAgY29uc3Qgb3RoZXJUZXh0ID0gdG9PcGVyYW5kVGV4dChvdGhlciwgb3BlcmF0b3IsIHNvdXJjZUNvZGUpO1xuXG4gIHJldHVybiB7XG4gICAgLi4uZGVzY3JpcHRvcixcbiAgICBmaXgoZml4ZXIpOiBSdWxlLkZpeCB7XG4gICAgICByZXR1cm4gZml4ZXIucmVwbGFjZVRleHQoY29uZGl0aW9uYWxFeHByZXNzaW9uLCBgJHt0ZXN0VGV4dH0gJHtvcGVyYXRvcn0gJHtvdGhlclRleHR9YCk7XG4gICAgfVxuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXVCQSxPQUFPLHlCQUF5QjtBQUt6QixNQUFNLG9CQUFvQjtBQUsxQixNQUFNLGFBQWE7QUFXMUIsTUFBTSxjQUFjLGVBQWU7QUFNNUIsTUFBTSxtQ0FBb0Q7QUFBQSxFQUMvRCxPQUFPLFNBQVM7QUFDZCxVQUFNLG1CQUFxQyxPQUFPLE9BQU8sU0FBUztBQUFBLE1BQ2hFLFFBQVE7QUFBQSxRQUNOLE1BQU0sWUFBeUM7QUFDN0Msa0JBQVEsT0FBTyxxQkFBcUIsWUFBWSxRQUFRLFVBQVUsQ0FBQztBQUFBLFFBQ3JFO0FBQUEsTUFDRjtBQUFBLElBQ0YsQ0FBQztBQUVELFdBQU8sWUFBWSxPQUFPLGdCQUFnQjtBQUFBLEVBQzVDO0FBQUEsRUFDQSxNQUFNO0FBQUEsSUFDSixHQUFHLFlBQVk7QUFBQSxJQUNmLE1BQU07QUFBQSxNQUNKLGFBQWE7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
|
|
152
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saW50ZXJzL2VzbGludC1ydWxlcy9wcmVmZXItbG9naWNhbC1vcGVyYXRvci1vdmVyLXRlcm5hcnkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIEVTTGludCBydWxlOiBwcmVmZXItbG9naWNhbC1vcGVyYXRvci1vdmVyLXRlcm5hcnlcbiAqXG4gKiBgdW5pY29ybi9wcmVmZXItbG9naWNhbC1vcGVyYXRvci1vdmVyLXRlcm5hcnlgLCB3aXRoIHRoZSBmaXggaXQgd2l0aGhvbGRzIGluIGEgVHlwZVNjcmlwdCBmaWxlLlxuICpcbiAqIFVuaWNvcm4gcmVwb3J0cyBhIHRlcm5hcnkgd2l0aCBvbmUgYm9vbGVhbiBicmFuY2ggKGBhID8gZmFsc2UgOiBiYCkgYW5kIGZpeGVzIGl0IHRvIGEgbG9naWNhbCBleHByZXNzaW9uXG4gKiAoYCFhICYmIGJgKSwgYnV0IG9ubHkgb3V0c2lkZSBUeXBlU2NyaXB0LiBgdW5pY29ybi9wcmVmZXItdGVybmFyeWAgZml4ZXMgYGlmIChhKSB7IHJldHVybiBmYWxzZTsgfSByZXR1cm4gYjtgIGludG9cbiAqIGV4YWN0bHkgdGhhdCB0ZXJuYXJ5LCBzbyBpbiBhIFR5cGVTY3JpcHQgZmlsZSBgbGludDpmaXhgIHByb2R1Y2VkIGFuIGVycm9yIGl0IHRoZW4gY291bGQgbm90IGZpeCwgYW5kIGV2ZXJ5IHNpdGVcbiAqIGhhZCB0byBiZSByZXdyaXR0ZW4gYnkgaGFuZC4gVGhpcyBydWxlIHJlcG9ydHMgd2hhdCB1bmljb3JuIHJlcG9ydHMgYW5kIGFkZHMgdGhlIGZpeCB3aGVyZSBvbmUgYnJhbmNoIGlzIGEgYm9vbGVhblxuICogbGl0ZXJhbC4gVW5pY29ybiByZXBvcnRzIHRoZSBzaGFwZSBvbmx5IHdoZW4gdGhlIG90aGVyIGJyYW5jaCBpcyBib29sZWFuLCBhbmQgc2luY2UgdW5pY29ybiA3OSBmb3IgYSB0ZXN0IG9mIGFueVxuICogdHlwZS4gVGhlIHJld3JpdGUgaXMgZXhhY3QgYXQgcnVudGltZTogYSBuZWdhdGVkIHRlc3QgKGBhID8gZmFsc2UgOiBiYCDihpIgYCFhICYmIGJgLCBgYSA/IGIgOiB0cnVlYCDihpIgYCFhIHx8IGJgKSBpc1xuICogYSBib29sZWFuIGFscmVhZHksIGFuZCBvdGhlcndpc2UgKGBhID8gdHJ1ZSA6IGJgIOKGkiBgYSB8fCBiYCwgYGEgPyBiIDogZmFsc2VgIOKGkiBgYSAmJiBiYCkgYSB0ZXN0IHRoZSB0eXBlIGNoZWNrZXJcbiAqIGNhbm5vdCBwcm92ZSBib29sZWFuIGlzIGNvZXJjZWQgd2l0aCBgISFgLCBiZWNhdXNlIGBhICYmIGJgIHdvdWxkIHJldHVybiBhIGZhbHN5IGBhYCBpdHNlbGYgKGBudWxsYCwgYDBgLCBgJydgKVxuICogd2hlcmUgdGhlIHRlcm5hcnkgcmV0dXJuZWQgYGZhbHNlYC4gVW5pY29ybiBjb2VyY2VzIHdpdGggYEJvb2xlYW4oYSlgOyBgISFhYCBpcyB1c2VkIGhlcmUgYmVjYXVzZSBUeXBlU2NyaXB0XG4gKiBuYXJyb3dzIG9uIGl0LCBzbyBgISFhICYmIGEuYmAgc3RpbGwgdHlwZS1jaGVja3MuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBQYXJzZXJTZXJ2aWNlc1dpdGhUeXBlSW5mb3JtYXRpb24gfSBmcm9tICdAdHlwZXNjcmlwdC1lc2xpbnQvdXRpbHMnO1xuaW1wb3J0IHR5cGUgeyBSdWxlIH0gZnJvbSAnZXNsaW50JztcbmltcG9ydCB0eXBlIHtcbiAgQ29uZGl0aW9uYWxFeHByZXNzaW9uLFxuICBFeHByZXNzaW9uLFxuICBOb2RlXG59IGZyb20gJ2VzdHJlZSc7XG5cbmltcG9ydCBlc2xpbnRQbHVnaW5Vbmljb3JuIGZyb20gJ2VzbGludC1wbHVnaW4tdW5pY29ybic7XG5pbXBvcnQgeyBUeXBlRmxhZ3MgfSBmcm9tICd0eXBlc2NyaXB0JztcblxuaW1wb3J0IHsgdG9UU0VTVHJlZU5vZGUgfSBmcm9tICcuL3RzLWVzdHJlZS1ub2RlLnRzJztcblxuLyoqXG4gKiBUaGUgaWQgb2YgdGhlIHVuaWNvcm4gcnVsZSB0aGlzIHJ1bGUgZGVsZWdhdGVzIHRvLCBpbnNpZGUgdGhlIGB1bmljb3JuYCBuYW1lc3BhY2UuXG4gKi9cbmV4cG9ydCBjb25zdCBVTklDT1JOX1JVTEVfTkFNRSA9ICdwcmVmZXItbG9naWNhbC1vcGVyYXRvci1vdmVyLXRlcm5hcnknO1xuXG4vKipcbiAqIFRoZSBtZXNzYWdlIGlkIHVuaWNvcm4gcmVwb3J0cyBhIHRlcm5hcnkgdW5kZXIgd2hlbiBhIGxvZ2ljYWwgb3BlcmF0b3IgY291bGQgcmVwbGFjZSBpdC5cbiAqL1xuZXhwb3J0IGNvbnN0IE1FU1NBR0VfSUQgPSAncHJlZmVyLWxvZ2ljYWwtb3BlcmF0b3Itb3Zlci10ZXJuYXJ5L2Vycm9yJztcblxudHlwZSBMb2dpY2FsT3BlcmF0b3IgPSAnJiYnIHwgJ3x8JztcblxuaW50ZXJmYWNlIFVuaWNvcm5SZXBvcnREZXNjcmlwdG9yRmllbGRzIHtcbiAgcmVhZG9ubHkgbWVzc2FnZUlkPzogc3RyaW5nO1xuICByZWFkb25seSBub2RlOiBOb2RlO1xufVxuXG5jb25zdCB1bmljb3JuUnVsZSA9IGdldFVuaWNvcm5SdWxlKCk7XG5cbi8qKlxuICogRVNMaW50IHJ1bGUgcmVwb3J0aW5nIHdoYXQgYHVuaWNvcm4vcHJlZmVyLWxvZ2ljYWwtb3BlcmF0b3Itb3Zlci10ZXJuYXJ5YCByZXBvcnRzLCBmaXhpbmcgYSB0ZXJuYXJ5IHdpdGggYSBib29sZWFuXG4gKiBsaXRlcmFsIGJyYW5jaCBpbiBhIFR5cGVTY3JpcHQgZmlsZSB0b28uXG4gKi9cbmV4cG9ydCBjb25zdCBwcmVmZXJMb2dpY2FsT3BlcmF0b3JPdmVyVGVybmFyeTogUnVsZS5SdWxlTW9kdWxlID0ge1xuICBjcmVhdGUoY29udGV4dCkge1xuICAgIGNvbnN0IHJlcG9ydGluZ0NvbnRleHQ6IFJ1bGUuUnVsZUNvbnRleHQgPSBPYmplY3QuY3JlYXRlKGNvbnRleHQsIHtcbiAgICAgIHJlcG9ydDoge1xuICAgICAgICB2YWx1ZShkZXNjcmlwdG9yOiBSdWxlLlJlcG9ydERlc2NyaXB0b3IpOiB2b2lkIHtcbiAgICAgICAgICBjb250ZXh0LnJlcG9ydCh3aXRoTGl0ZXJhbEJyYW5jaEZpeChkZXNjcmlwdG9yLCBjb250ZXh0LnNvdXJjZUNvZGUpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHVuaWNvcm5SdWxlLmNyZWF0ZShyZXBvcnRpbmdDb250ZXh0KTtcbiAgfSxcbiAgbWV0YToge1xuICAgIC4uLnVuaWNvcm5SdWxlLm1ldGEsXG4gICAgZG9jczoge1xuICAgICAgZGVzY3JpcHRpb246ICdQcmVmZXIgYSBsb2dpY2FsIG9wZXJhdG9yIG92ZXIgYSB0ZXJuYXJ5LCBmaXhpbmcgYSBib29sZWFuIGxpdGVyYWwgYnJhbmNoIGluIFR5cGVTY3JpcHQgdG9vJ1xuICAgIH1cbiAgfVxufTtcblxuZnVuY3Rpb24gZ2V0Qm9vbGVhbkxpdGVyYWxWYWx1ZShub2RlOiBOb2RlKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBub2RlLnR5cGUgPT09ICdMaXRlcmFsJyAmJiB0eXBlb2Ygbm9kZS52YWx1ZSA9PT0gJ2Jvb2xlYW4nID8gbm9kZS52YWx1ZSA6IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gZ2V0VW5pY29yblJ1bGUoKTogUnVsZS5SdWxlTW9kdWxlIHtcbiAgY29uc3QgcnVsZSA9IGVzbGludFBsdWdpblVuaWNvcm4ucnVsZXM/LltVTklDT1JOX1JVTEVfTkFNRV07XG5cbiAgLyogdjggaWdub3JlIHN0YXJ0IC0tIEd1YXJkcyBhbiB1cGdyYWRlIG9mIGVzbGludC1wbHVnaW4tdW5pY29ybiB0aGF0IGRyb3BzIG9yIHJlbmFtZXMgdGhlIHJ1bGUuICovXG4gIGlmICghcnVsZSB8fCB0eXBlb2YgcnVsZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBFcnJvcihgZXNsaW50LXBsdWdpbi11bmljb3JuIG5vIGxvbmdlciBkZWZpbmVzIHRoZSAke1VOSUNPUk5fUlVMRV9OQU1FfSBydWxlLmApO1xuICB9XG4gIC8qIHY4IGlnbm9yZSBzdG9wICovXG5cbiAgcmV0dXJuIHJ1bGU7XG59XG5cbmZ1bmN0aW9uIGlzUHJvdmVuQm9vbGVhbihub2RlOiBFeHByZXNzaW9uLCBzb3VyY2VDb2RlOiBSdWxlLlJ1bGVDb250ZXh0Wydzb3VyY2VDb2RlJ10pOiBib29sZWFuIHtcbiAgY29uc3Qgc2VydmljZXMgPSBzb3VyY2VDb2RlLnBhcnNlclNlcnZpY2VzIGFzIFBhcnRpYWw8UGFyc2VyU2VydmljZXNXaXRoVHlwZUluZm9ybWF0aW9uPjtcbiAgaWYgKCFzZXJ2aWNlcy5wcm9ncmFtIHx8ICFzZXJ2aWNlcy5lc1RyZWVOb2RlVG9UU05vZGVNYXApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCB0eXBlID0gc2VydmljZXMucHJvZ3JhbS5nZXRUeXBlQ2hlY2tlcigpLmdldFR5cGVBdExvY2F0aW9uKHNlcnZpY2VzLmVzVHJlZU5vZGVUb1RTTm9kZU1hcC5nZXQodG9UU0VTVHJlZU5vZGUobm9kZSkpKTtcbiAgY29uc3QgY29uc3RpdHVlbnRzID0gdHlwZS5pc1VuaW9uKCkgPyB0eXBlLnR5cGVzIDogW3R5cGVdO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tYml0d2lzZSAtLSBgVHlwZUZsYWdzYCBpcyBhIGJpdCBzZXQuXG4gIHJldHVybiBjb25zdGl0dWVudHMuZXZlcnkoKGNvbnN0aXR1ZW50KSA9PiAoY29uc3RpdHVlbnQuZmxhZ3MgJiBUeXBlRmxhZ3MuQm9vbGVhbkxpa2UpICE9PSAwKTtcbn1cblxuZnVuY3Rpb24gbmVlZHNQYXJlbnRoZXNlcyhub2RlOiBFeHByZXNzaW9uLCBvcGVyYXRvcjogJyEnIHwgTG9naWNhbE9wZXJhdG9yKTogYm9vbGVhbiB7XG4gIHN3aXRjaCAobm9kZS50eXBlKSB7XG4gICAgY2FzZSAnQXJyYXlFeHByZXNzaW9uJzpcbiAgICBjYXNlICdBd2FpdEV4cHJlc3Npb24nOlxuICAgIGNhc2UgJ0NhbGxFeHByZXNzaW9uJzpcbiAgICBjYXNlICdDaGFpbkV4cHJlc3Npb24nOlxuICAgIGNhc2UgJ0lkZW50aWZpZXInOlxuICAgIGNhc2UgJ0xpdGVyYWwnOlxuICAgIGNhc2UgJ01lbWJlckV4cHJlc3Npb24nOlxuICAgIGNhc2UgJ05ld0V4cHJlc3Npb24nOlxuICAgIGNhc2UgJ09iamVjdEV4cHJlc3Npb24nOlxuICAgIGNhc2UgJ1RhZ2dlZFRlbXBsYXRlRXhwcmVzc2lvbic6XG4gICAgY2FzZSAnVGVtcGxhdGVMaXRlcmFsJzpcbiAgICBjYXNlICdUaGlzRXhwcmVzc2lvbic6XG4gICAgY2FzZSAnVW5hcnlFeHByZXNzaW9uJzoge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjYXNlICdCaW5hcnlFeHByZXNzaW9uJzoge1xuICAgICAgcmV0dXJuIG9wZXJhdG9yID09PSAnISc7XG4gICAgfVxuICAgIGNhc2UgJ0xvZ2ljYWxFeHByZXNzaW9uJzoge1xuICAgICAgcmV0dXJuIG9wZXJhdG9yID09PSAnIScgfHwgbm9kZS5vcGVyYXRvciA9PT0gJz8/JyB8fCAob3BlcmF0b3IgPT09ICcmJicgJiYgbm9kZS5vcGVyYXRvciA9PT0gJ3x8Jyk7XG4gICAgfVxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiB0b09wZXJhbmRUZXh0KG5vZGU6IEV4cHJlc3Npb24sIG9wZXJhdG9yOiAnIScgfCBMb2dpY2FsT3BlcmF0b3IsIHNvdXJjZUNvZGU6IFJ1bGUuUnVsZUNvbnRleHRbJ3NvdXJjZUNvZGUnXSk6IHN0cmluZyB7XG4gIGNvbnN0IHRleHQgPSBzb3VyY2VDb2RlLmdldFRleHQobm9kZSk7XG4gIHJldHVybiBuZWVkc1BhcmVudGhlc2VzKG5vZGUsIG9wZXJhdG9yKSA/IGAoJHt0ZXh0fSlgIDogdGV4dDtcbn1cblxuZnVuY3Rpb24gd2l0aExpdGVyYWxCcmFuY2hGaXgoZGVzY3JpcHRvcjogUnVsZS5SZXBvcnREZXNjcmlwdG9yLCBzb3VyY2VDb2RlOiBSdWxlLlJ1bGVDb250ZXh0Wydzb3VyY2VDb2RlJ10pOiBSdWxlLlJlcG9ydERlc2NyaXB0b3Ige1xuICB0eXBlIFVuaWNvcm5SZXBvcnREZXNjcmlwdG9yID0gUnVsZS5SZXBvcnREZXNjcmlwdG9yT3B0aW9ucyAmIFVuaWNvcm5SZXBvcnREZXNjcmlwdG9yRmllbGRzO1xuICBjb25zdCB7IGZpeCwgbWVzc2FnZUlkLCBub2RlLCBzdWdnZXN0IH0gPSBkZXNjcmlwdG9yIGFzIFVuaWNvcm5SZXBvcnREZXNjcmlwdG9yO1xuXG4gIC8vIFVuaWNvcm4gZml4ZXMgdGhlIHNoYXBlIGl0c2VsZiBvdXRzaWRlIFR5cGVTY3JpcHQsIGFuZCBvZmZlcnMgc3VnZ2VzdGlvbnMgZm9yIHRoZSBzaGFwZXMgaXQgY2Fubm90IGZpeC5cbiAgaWYgKG1lc3NhZ2VJZCAhPT0gTUVTU0FHRV9JRCB8fCBmaXggfHwgc3VnZ2VzdCkge1xuICAgIHJldHVybiBkZXNjcmlwdG9yO1xuICB9XG5cbiAgLy8gVW5pY29ybiByZXBvcnRzIHRoaXMgbWVzc2FnZSBvbiB0aGUgdGVybmFyeSBpdHNlbGYuXG4gIGNvbnN0IGNvbmRpdGlvbmFsRXhwcmVzc2lvbiA9IG5vZGUgYXMgQ29uZGl0aW9uYWxFeHByZXNzaW9uO1xuICBjb25zdCB7IGFsdGVybmF0ZSwgY29uc2VxdWVudCwgdGVzdCB9ID0gY29uZGl0aW9uYWxFeHByZXNzaW9uO1xuICBjb25zdCBjb25zZXF1ZW50VmFsdWUgPSBnZXRCb29sZWFuTGl0ZXJhbFZhbHVlKGNvbnNlcXVlbnQpO1xuICBjb25zdCBhbHRlcm5hdGVWYWx1ZSA9IGdldEJvb2xlYW5MaXRlcmFsVmFsdWUoYWx0ZXJuYXRlKTtcbiAgY29uc3QgbGl0ZXJhbFZhbHVlID0gY29uc2VxdWVudFZhbHVlID8/IGFsdGVybmF0ZVZhbHVlO1xuXG4gIGlmIChcbiAgICBsaXRlcmFsVmFsdWUgPT09IHVuZGVmaW5lZFxuICAgIHx8IChjb25zZXF1ZW50VmFsdWUgIT09IHVuZGVmaW5lZCAmJiBhbHRlcm5hdGVWYWx1ZSAhPT0gdW5kZWZpbmVkKVxuICAgIHx8IHNvdXJjZUNvZGUuZ2V0Q29tbWVudHNJbnNpZGUoY29uZGl0aW9uYWxFeHByZXNzaW9uKS5sZW5ndGggPiAwXG4gICkge1xuICAgIHJldHVybiBkZXNjcmlwdG9yO1xuICB9XG5cbiAgY29uc3QgaXNDb25zZXF1ZW50TGl0ZXJhbCA9IGNvbnNlcXVlbnRWYWx1ZSAhPT0gdW5kZWZpbmVkO1xuICBjb25zdCBvdGhlciA9IGlzQ29uc2VxdWVudExpdGVyYWwgPyBhbHRlcm5hdGUgOiBjb25zZXF1ZW50O1xuICBjb25zdCBzaG91bGROZWdhdGVUZXN0ID0gaXNDb25zZXF1ZW50TGl0ZXJhbCAhPT0gbGl0ZXJhbFZhbHVlO1xuICBjb25zdCBvcGVyYXRvcjogTG9naWNhbE9wZXJhdG9yID0gbGl0ZXJhbFZhbHVlID8gJ3x8JyA6ICcmJic7XG4gIGxldCB0ZXN0VGV4dDogc3RyaW5nO1xuICBpZiAoc2hvdWxkTmVnYXRlVGVzdCkge1xuICAgIHRlc3RUZXh0ID0gYCEke3RvT3BlcmFuZFRleHQodGVzdCwgJyEnLCBzb3VyY2VDb2RlKX1gO1xuICB9IGVsc2UgaWYgKGlzUHJvdmVuQm9vbGVhbih0ZXN0LCBzb3VyY2VDb2RlKSkge1xuICAgIHRlc3RUZXh0ID0gdG9PcGVyYW5kVGV4dCh0ZXN0LCBvcGVyYXRvciwgc291cmNlQ29kZSk7XG4gIH0gZWxzZSB7XG4gICAgdGVzdFRleHQgPSBgISEke3RvT3BlcmFuZFRleHQodGVzdCwgJyEnLCBzb3VyY2VDb2RlKX1gO1xuICB9XG4gIGNvbnN0IG90aGVyVGV4dCA9IHRvT3BlcmFuZFRleHQob3RoZXIsIG9wZXJhdG9yLCBzb3VyY2VDb2RlKTtcblxuICByZXR1cm4ge1xuICAgIC4uLmRlc2NyaXB0b3IsXG4gICAgZml4KGZpeGVyKTogUnVsZS5GaXgge1xuICAgICAgcmV0dXJuIGZpeGVyLnJlcGxhY2VUZXh0KGNvbmRpdGlvbmFsRXhwcmVzc2lvbiwgYCR7dGVzdFRleHR9ICR7b3BlcmF0b3J9ICR7b3Ro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
|