footprintjs 9.0.0 → 9.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/README.md +2 -2
  2. package/dist/advanced.js +1 -1
  3. package/dist/esm/advanced.js +1 -1
  4. package/dist/esm/index.js +1 -1
  5. package/dist/esm/lib/decide/decide.js +12 -1
  6. package/dist/esm/lib/decide/evaluator.js +28 -2
  7. package/dist/esm/lib/engine/handlers/SubflowExecutor.js +14 -1
  8. package/dist/esm/lib/engine/narrative/FlowRecorderDispatcher.js +4 -4
  9. package/dist/esm/lib/engine/narrative/types.js +1 -1
  10. package/dist/esm/lib/memory/StageContext.js +201 -15
  11. package/dist/esm/lib/memory/TransactionBuffer.js +17 -7
  12. package/dist/esm/lib/memory/index.js +2 -1
  13. package/dist/esm/lib/memory/types.js +3 -2
  14. package/dist/esm/lib/recorder/CombinedRecorder.js +20 -10
  15. package/dist/esm/lib/runner/ExecutionRuntime.js +12 -1
  16. package/dist/esm/lib/runner/FlowChartExecutor.js +27 -4
  17. package/dist/esm/lib/scope/ScopeFacade.js +28 -1
  18. package/dist/esm/lib/scope/types.js +1 -1
  19. package/dist/index.js +1 -1
  20. package/dist/lib/decide/decide.js +12 -1
  21. package/dist/lib/decide/evaluator.js +28 -2
  22. package/dist/lib/engine/handlers/SubflowExecutor.js +14 -1
  23. package/dist/lib/engine/narrative/FlowRecorderDispatcher.js +4 -4
  24. package/dist/lib/engine/narrative/types.js +1 -1
  25. package/dist/lib/memory/StageContext.js +201 -15
  26. package/dist/lib/memory/TransactionBuffer.js +17 -7
  27. package/dist/lib/memory/index.js +4 -2
  28. package/dist/lib/memory/types.js +4 -1
  29. package/dist/lib/recorder/CombinedRecorder.js +20 -10
  30. package/dist/lib/runner/ExecutionRuntime.js +12 -1
  31. package/dist/lib/runner/FlowChartExecutor.js +27 -4
  32. package/dist/lib/scope/ScopeFacade.js +28 -1
  33. package/dist/lib/scope/types.js +1 -1
  34. package/dist/types/advanced.d.ts +1 -1
  35. package/dist/types/index.d.ts +10 -0
  36. package/dist/types/lib/decide/decide.d.ts +11 -0
  37. package/dist/types/lib/decide/evaluator.d.ts +17 -0
  38. package/dist/types/lib/engine/narrative/types.d.ts +11 -0
  39. package/dist/types/lib/memory/StageContext.d.ts +113 -5
  40. package/dist/types/lib/memory/TransactionBuffer.d.ts +16 -6
  41. package/dist/types/lib/memory/index.d.ts +2 -1
  42. package/dist/types/lib/memory/types.d.ts +45 -1
  43. package/dist/types/lib/recorder/CombinedRecorder.d.ts +15 -9
  44. package/dist/types/lib/runner/ExecutionRuntime.d.ts +10 -1
  45. package/dist/types/lib/runner/FlowChartExecutor.d.ts +25 -3
  46. package/dist/types/lib/scope/ScopeFacade.d.ts +24 -1
  47. package/dist/types/lib/scope/types.d.ts +11 -0
  48. package/package.json +1 -1
package/README.md CHANGED
@@ -40,7 +40,7 @@ Your LLM needs to explain why your code made a decision. Without structure, it r
40
40
  |---|---|---|
41
41
  | **LLM explains a decision** | Reconstruct from scattered logs | Read the causal trace directly |
42
42
  | **Tool descriptions for agents** | Write and maintain by hand | Auto-generated from the graph |
43
- | **State management** | Global/manual, race-prone | Transactional scope with atomic commits |
43
+ | **State management** | Global/manual, race-prone | Transactional scope with per-stage staged commits |
44
44
  | **Debugging** | `console.log` + guesswork | Time-travel replay to any stage |
45
45
 
46
46
  ---
@@ -159,7 +159,7 @@ The LLM calls the tool, gets back the decision and causal trace, and explains th
159
159
  | **TypedScope<T>** | Typed property access — `scope.creditScore = 750` instead of `scope.setValue('creditScore', 750)` |
160
160
  | **Auto Narrative** | Build-time descriptions for tool selection, runtime traces for explanation |
161
161
  | **7 Patterns** | Linear, parallel fork, conditional, multi-select, subflow, streaming, loops |
162
- | **Transactional State** | Atomic commits, safe merges, time-travel replay |
162
+ | **Transactional State** | Per-stage staged commits, safe merges, time-travel replay |
163
163
  | **PII Redaction** | Per-key or declarative `RedactionPolicy` with audit trail |
164
164
  | **Flow Recorders** | 8 narrative strategies for loop compression |
165
165
  | **Combined Recorders** | Single-hook observers that span data-flow + control-flow — `executor.attachCombinedRecorder(r)` |
package/dist/advanced.js CHANGED
@@ -103,4 +103,4 @@ var commitLogUtils_js_1 = require("./lib/memory/commitLogUtils.js");
103
103
  Object.defineProperty(exports, "findCommit", { enumerable: true, get: function () { return commitLogUtils_js_1.findCommit; } });
104
104
  Object.defineProperty(exports, "findCommits", { enumerable: true, get: function () { return commitLogUtils_js_1.findCommits; } });
105
105
  Object.defineProperty(exports, "findLastWriter", { enumerable: true, get: function () { return commitLogUtils_js_1.findLastWriter; } });
106
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWR2YW5jZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYWR2YW5jZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7R0FZRztBQUNIOzs7Ozs7O0dBT0c7Ozs7QUFjSCxrREFBcUQ7QUFBNUMsd0dBQUEsWUFBWSxPQUFBO0FBQ3JCLGtEQUFxRDtBQUE1Qyx3R0FBQSxZQUFZLE9BQUE7QUFDckIsa0RBQWlEO0FBQXhDLG9HQUFBLFFBQVEsT0FBQTtBQUNqQixrREFBMEQ7QUFBakQsNkdBQUEsaUJBQWlCLE9BQUE7QUFDMUIsa0RBQTREO0FBQW5ELCtHQUFBLG1CQUFtQixPQUFBO0FBQzVCLGtEQVUrQjtBQVQ3QiwyR0FBQSxlQUFlLE9BQUE7QUFDZiwwR0FBQSxjQUFjLE9BQUE7QUFDZCwwR0FBQSxjQUFjLE9BQUE7QUFDZCxnSEFBQSxvQkFBb0IsT0FBQTtBQUNwQix5R0FBQSxhQUFhLE9BQUE7QUFDYix1R0FBQSxXQUFXLE9BQUE7QUFDWCwwR0FBQSxjQUFjLE9BQUE7QUFDZCw2R0FBQSxpQkFBaUIsT0FBQTtBQUNqQix1R0FBQSxXQUFXLE9BQUE7QUF1QmIsbURBQXNHO0FBQTdGLDBHQUFBLGNBQWMsT0FBQTtBQUFFLHVHQUFBLFdBQVcsT0FBQTtBQUFFLDBHQUFBLGNBQWMsT0FBQTtBQUFFLDJHQUFBLGVBQWUsT0FBQTtBQUNyRSxxRUFBMEU7QUFBakUsNEhBQUEsdUJBQXVCLE9BQUE7QUFhaEMsaURBQTZGO0FBQXBGLDhHQUFBLGtCQUFrQixPQUFBO0FBQUUsZ0hBQUEsb0JBQW9CLE9BQUE7QUFBRSx1R0FBQSxXQUFXLE9BQUE7QUFDOUQsaURBVThCO0FBVDVCLDhHQUFBLGtCQUFrQixPQUFBO0FBQ2xCLG1IQUFBLHVCQUF1QixPQUFBO0FBQ3ZCLDhHQUFBLGtCQUFrQixPQUFBO0FBQ2xCLDRHQUFBLGdCQUFnQixPQUFBO0FBQ2hCLDZHQUFBLGlCQUFpQixPQUFBO0FBQ2pCLCtHQUFBLG1CQUFtQixPQUFBO0FBQ25CLGlIQUFBLHFCQUFxQixPQUFBO0FBQ3JCLGdIQUFBLG9CQUFvQixPQUFBO0FBQ3BCLDBHQUFBLGNBQWMsT0FBQTtBQXlCaEIsbURBQXlEO0FBQWhELDZHQUFBLGdCQUFnQixPQUFBO0FBT3pCLHFEQU9pQztBQU4vQix5R0FBQSxZQUFZLE9BQUE7QUFDWiw2R0FBQSxnQkFBZ0IsT0FBQTtBQUNoQiw2R0FBQSxnQkFBZ0IsT0FBQTtBQUNoQixxR0FBQSxRQUFRLE9BQUE7QUFDUiwrR0FBQSxrQkFBa0IsT0FBQTtBQUNsQixnSEFBQSxtQkFBbUIsT0FBQTtBQVNyQixtREFBMkQ7QUFBbEQsK0dBQUEsa0JBQWtCLE9BQUE7QUFDM0IsbURBQTBEO0FBQWpELDhHQUFBLGlCQUFpQixPQUFBO0FBbUIxQixtREFBMEU7QUFBakUsOEhBQUEsaUNBQWlDLE9BQUE7QUFJMUMsbURBZ0IrQjtBQWY3QiwrR0FBQSxrQkFBa0IsT0FBQTtBQUNsQiw2R0FBQSxnQkFBZ0IsT0FBQTtBQUNoQiw0R0FBQSxlQUFlLE9BQUE7QUFDZixpSEFBQSxvQkFBb0IsT0FBQTtBQUNwQixxSEFBQSx3QkFBd0IsT0FBQTtBQUN4QiwyR0FBQSxjQUFjLE9BQUE7QUFDZCxtSEFBQSxzQkFBc0IsT0FBQTtBQUN0QixxSEFBQSx3QkFBd0IsT0FBQTtBQUN4QixrSEFBQSxxQkFBcUIsT0FBQTtBQUNyQix5R0FBQSxZQUFZLE9BQUE7QUFDWixvSEFBQSx1QkFBdUIsT0FBQTtBQUN2QixtSEFBQSxzQkFBc0IsT0FBQTtBQUN0Qiw0R0FBQSxlQUFlLE9BQUE7QUFDZix3R0FBQSxXQUFXLE9BQUE7QUFDWCw0R0FBQSxlQUFlLE9BQUE7QUFLakIsb0VBQWtIO0FBQXpHLHdIQUFBLG1CQUFtQixPQUFBO0FBQUUsMkhBQUEsc0JBQXNCLE9BQUE7QUFBRSx3SEFBQSxtQkFBbUIsT0FBQTtBQUN6RSxvRUFBeUY7QUFBaEYsK0dBQUEsVUFBVSxPQUFBO0FBQUUsZ0hBQUEsV0FBVyxPQUFBO0FBQUUsbUhBQUEsY0FBYyxPQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBmb290cHJpbnRqcy9hZHZhbmNlZCDigJQgTG93LWxldmVsIGludGVybmFscyBmb3IgY3VzdG9tIGV4ZWN1dGlvbiBlbmdpbmVzIGFuZCB0ZXN0aW5nLlxuICpcbiAqIE1vc3QgdXNlcnMgbmV2ZXIgbmVlZCB0aGlzLiBVc2UgYGZvb3RwcmludGpzYCAobWFpbikgaW5zdGVhZC5cbiAqIFRoaXMgZW50cnkgcG9pbnQgZXhwb3NlcyBgU2hhcmVkTWVtb3J5YCwgYFN0YWdlQ29udGV4dGAsIGBGbG93Y2hhcnRUcmF2ZXJzZXJgLFxuICogYW5kIG90aGVyIHByaW1pdGl2ZXMgdGhhdCBwb3dlciB0aGUgZW5naW5lLlxuICpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBTaGFyZWRNZW1vcnksIFN0YWdlQ29udGV4dCB9IGZyb20gJ2Zvb3RwcmludGpzL2FkdmFuY2VkJztcbiAqIGBgYFxuICpcbiAqIEBtb2R1bGUgYWR2YW5jZWRcbiAqL1xuLyoqXG4gKiBGb290UHJpbnQg4oCUIEFkdmFuY2VkIC8gSW50ZXJuYWwgQVBJXG4gKlxuICogVGhlc2UgZXhwb3J0cyBhcmUgZm9yIGFkdmFuY2VkIHVzZSBjYXNlcywgdGVzdGluZywgYW5kIGJ1aWxkaW5nXG4gKiBjdXN0b20gZXhlY3V0aW9uIGVuZ2luZXMuIE1vc3QgdXNlcnMgc2hvdWxkIHVzZSB0aGUgbWFpbiAnZm9vdHByaW50JyBlbnRyeSBwb2ludC5cbiAqXG4gKiBJbXBvcnQgdmlhOiBpbXBvcnQgeyAuLi4gfSBmcm9tICdmb290cHJpbnQvYWR2YW5jZWQnXG4gKi9cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTWVtb3J5IOKAlCBMb3ctbGV2ZWwgdHJhbnNhY3Rpb25hbCBzdGF0ZSBwcmltaXRpdmVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCB0eXBlIHtcbiAgQ29tbWl0QnVuZGxlLFxuICBGbG93Q29udHJvbFR5cGUsXG4gIEZsb3dNZXNzYWdlLFxuICBNZW1vcnlQYXRjaCxcbiAgU3RhZ2VTbmFwc2hvdCxcbiAgVHJhY2VFbnRyeSxcbn0gZnJvbSAnLi9saWIvbWVtb3J5L2luZGV4LmpzJztcbmV4cG9ydCB7IFNoYXJlZE1lbW9yeSB9IGZyb20gJy4vbGliL21lbW9yeS9pbmRleC5qcyc7XG5leHBvcnQgeyBTdGFnZUNvbnRleHQgfSBmcm9tICcuL2xpYi9tZW1vcnkvaW5kZXguanMnO1xuZXhwb3J0IHsgRXZlbnRMb2cgfSBmcm9tICcuL2xpYi9tZW1vcnkvaW5kZXguanMnO1xuZXhwb3J0IHsgVHJhbnNhY3Rpb25CdWZmZXIgfSBmcm9tICcuL2xpYi9tZW1vcnkvaW5kZXguanMnO1xuZXhwb3J0IHsgRGlhZ25vc3RpY0NvbGxlY3RvciB9IGZyb20gJy4vbGliL21lbW9yeS9pbmRleC5qcyc7XG5leHBvcnQge1xuICBhcHBseVNtYXJ0TWVyZ2UsXG4gIGRlZXBTbWFydE1lcmdlLFxuICBnZXROZXN0ZWRWYWx1ZSxcbiAgZ2V0UnVuQW5kR2xvYmFsUGF0aHMsXG4gIG5vcm1hbGlzZVBhdGgsXG4gIHJlZGFjdFBhdGNoLFxuICBzZXROZXN0ZWRWYWx1ZSxcbiAgdXBkYXRlTmVzdGVkVmFsdWUsXG4gIHVwZGF0ZVZhbHVlLFxufSBmcm9tICcuL2xpYi9tZW1vcnkvaW5kZXguanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBCdWlsZGVyIOKAlCBUeXBlcyBhbmQgaW50ZXJuYWxzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCB0eXBlIHtcbiAgRXhlY09wdGlvbnMsXG4gIEZsb3dDaGFydE9wdGlvbnMsXG4gIEZsb3dDaGFydFNwZWMsXG4gIElMb2dnZXIsXG4gIFNjb3BlUHJvdGVjdGlvbk1vZGUsXG4gIFNlcmlhbGl6ZWRQaXBlbGluZVN0cnVjdHVyZSxcbiAgU2ltcGxpZmllZFBhcmFsbGVsU3BlYyxcbiAgU3RhZ2VGbixcbiAgU3RhZ2VOb2RlLFxuICBTdHJlYW1DYWxsYmFjayxcbiAgU3RyZWFtTGlmZWN5Y2xlSGFuZGxlcixcbiAgU3RyZWFtVG9rZW5IYW5kbGVyLFxuICBTdWJmbG93TW91bnRPcHRpb25zLFxuICBTdWJmbG93UmVmLFxufSBmcm9tICcuL2xpYi9idWlsZGVyL2luZGV4LmpzJztcbmV4cG9ydCB7IEFycmF5TWVyZ2VNb2RlLCBEZWNpZGVyTGlzdCwgU2VsZWN0b3JGbkxpc3QsIHNwZWNUb1N0YWdlTm9kZSB9IGZyb20gJy4vbGliL2J1aWxkZXIvaW5kZXguanMnO1xuZXhwb3J0IHsgY3JlYXRlVHlwZWRTY29wZUZhY3RvcnkgfSBmcm9tICcuL2xpYi9idWlsZGVyL3R5cGVkRmxvd0NoYXJ0LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU2NvcGUg4oCUIFByb3ZpZGVycywgcHJvdGVjdGlvbiwgcmVjb3JkZXIgb3B0aW9ucywgYW5kIGV2ZW50IHR5cGVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCB0eXBlIHtcbiAgUHJvdmlkZXJSZXNvbHZlcixcbiAgUmVzb2x2ZU9wdGlvbnMsXG4gIFNjb3BlUHJvdmlkZXIsXG4gIFN0YWdlQ29udGV4dExpa2UsXG4gIFN0cmljdE1vZGUsXG59IGZyb20gJy4vbGliL3Njb3BlL2luZGV4LmpzJztcbmV4cG9ydCB7IGNyZWF0ZUVycm9yTWVzc2FnZSwgY3JlYXRlUHJvdGVjdGVkU2NvcGUsIFNjb3BlRmFjYWRlIH0gZnJvbSAnLi9saWIvc2NvcGUvaW5kZXguanMnO1xuZXhwb3J0IHtcbiAgYXR0YWNoU2NvcGVNZXRob2RzLFxuICBpc1N1YmNsYXNzT2ZTY29wZUZhY2FkZSxcbiAgbG9va3NMaWtlQ2xhc3NDdG9yLFxuICBsb29rc0xpa2VGYWN0b3J5LFxuICBtYWtlQ2xhc3NQcm92aWRlcixcbiAgbWFrZUZhY3RvcnlQcm92aWRlcixcbiAgcmVnaXN0ZXJTY29wZVJlc29sdmVyLFxuICByZXNvbHZlU2NvcGVQcm92aWRlcixcbiAgdG9TY29wZUZhY3RvcnksXG59IGZyb20gJy4vbGliL3Njb3BlL2luZGV4LmpzJztcblxuLy8gU2NvcGVSZWNvcmRlciBjb25maWcvb3B0aW9uIHR5cGVzXG5leHBvcnQgdHlwZSB7XG4gIEFnZ3JlZ2F0ZWRNZXRyaWNzLFxuICBEZWJ1Z0VudHJ5LFxuICBEZWJ1Z1JlY29yZGVyT3B0aW9ucyxcbiAgRGVidWdWZXJib3NpdHksXG4gIFJlY29yZGVyQ29udGV4dCxcbiAgU3RhZ2VFdmVudCxcbiAgU3RhZ2VNZXRyaWNzLFxufSBmcm9tICcuL2xpYi9zY29wZS9pbmRleC5qcyc7XG4vLyBgRGVmaW5lU2NvcGVPcHRpb25zYCAoem9kIHNjb3BlIG9wdGlvbnMpIG1vdmVkIHRvICdmb290cHJpbnRqcy96b2QnLlxuXG4vLyBab2QgaW50ZXJuYWxzIG1vdmVkIHRvIHRoZSBvcHQtaW4gYGZvb3RwcmludGpzL3pvZGAgZW50cnkgKGtlZXBzIHpvZCDigJQgYW5cbi8vIG9wdGlvbmFsIHBlZXIg4oCUIG91dCBvZiB0aGUgYGZvb3RwcmludGpzL2FkdmFuY2VkYCBsb2FkIHBhdGgpLiBJbXBvcnRcbi8vIGNyZWF0ZVNjb3BlUHJveHlGcm9tWm9kIC8gZGVmaW5lU2NvcGVTY2hlbWEgLyBpc1Njb3BlU2NoZW1hIC8gWm9kU2NvcGVSZXNvbHZlclxuLy8gZnJvbSAnZm9vdHByaW50anMvem9kJy5cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUnVubmVyIOKAlCBJbnRlcm5hbHNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUgeyBSdW50aW1lU25hcHNob3QgfSBmcm9tICcuL2xpYi9ydW5uZXIvaW5kZXguanMnO1xuZXhwb3J0IHsgRXhlY3V0aW9uUnVudGltZSB9IGZyb20gJy4vbGliL3J1bm5lci9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFJlYWN0aXZlIOKAlCBUeXBlZFNjb3BlIGludGVybmFscyAoZm9yIGN1c3RvbSBwcm94eSBpbXBsZW1lbnRhdGlvbnMpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCB0eXBlIHsgUmVhY3RpdmVPcHRpb25zLCBSZWFjdGl2ZVRhcmdldCB9IGZyb20gJy4vbGliL3JlYWN0aXZlL2luZGV4LmpzJztcbmV4cG9ydCB7XG4gIEJSRUFLX1NFVFRFUixcbiAgYnVpbGROZXN0ZWRQYXRjaCxcbiAgY3JlYXRlQXJyYXlQcm94eSxcbiAgam9pblBhdGgsXG4gIFNDT1BFX01FVEhPRF9OQU1FUyxcbiAgc2hvdWxkV3JhcFdpdGhQcm94eSxcbn0gZnJvbSAnLi9saWIvcmVhY3RpdmUvaW5kZXguanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBFbmdpbmUg4oCUIERGUyBncmFwaCB0cmF2ZXJzYWwgaW50ZXJuYWxzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCB0eXBlIHsgVHJhdmVyc2VyT3B0aW9ucyB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5leHBvcnQgdHlwZSB7IERlY2lkZXIgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuZXhwb3J0IHsgRmxvd2NoYXJ0VHJhdmVyc2VyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcbmV4cG9ydCB7IGlzU3RhZ2VOb2RlUmV0dXJuIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLy8gTmFycmF0aXZlIGludGVybmFsc1xuZXhwb3J0IHR5cGUgeyBJQ29udHJvbEZsb3dOYXJyYXRpdmUgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuZXhwb3J0IHR5cGUgeyBDb21iaW5lZE5hcnJhdGl2ZUVudHJ5LCBDb21iaW5lZE5hcnJhdGl2ZU9wdGlvbnMgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuZXhwb3J0IHR5cGUge1xuICBCcmFuY2hSZXN1bHQsXG4gIEJyYW5jaFJlc3VsdHMsXG4gIFNlcmlhbGl6ZWRQaXBlbGluZVN0cnVjdHVyZSBhcyBFbmdpbmVTZXJpYWxpemVkUGlwZWxpbmVTdHJ1Y3R1cmUsXG4gIEhhbmRsZXJEZXBzLFxuICBJRXhlY3V0aW9uUnVudGltZSxcbiAgTm9kZVJlc3VsdFR5cGUsXG4gIFJ1bnRpbWVTdHJ1Y3R1cmVNZXRhZGF0YSxcbiAgU2NvcGVGYWN0b3J5LFxuICBTZXJpYWxpemVkUGlwZWxpbmVOb2RlLFxuICBTdGFnZUZ1bmN0aW9uLFxuICBTdWJmbG93UmVzdWx0LFxuICBUcmF2ZXJzYWxSZXN1bHQsXG59IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5leHBvcnQgeyBOdWxsQ29udHJvbEZsb3dOYXJyYXRpdmVHZW5lcmF0b3IgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vLyBIYW5kbGVycyAodGVzdGluZyAvIGN1c3RvbSBlbmdpbmVzKVxuZXhwb3J0IHR5cGUgeyBFeGVjdXRlTm9kZUZuLCBSdW5TdGFnZUZuIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcbmV4cG9ydCB7XG4gIGFwcGx5T3V0cHV0TWFwcGluZyxcbiAgQ2hpbGRyZW5FeGVjdXRvcixcbiAgY29tcHV0ZU5vZGVUeXBlLFxuICBDb250aW51YXRpb25SZXNvbHZlcixcbiAgY3JlYXRlU3ViZmxvd0hhbmRsZXJEZXBzLFxuICBEZWNpZGVySGFuZGxlcixcbiAgREVGQVVMVF9NQVhfSVRFUkFUSU9OUyxcbiAgZXh0cmFjdFBhcmVudFNjb3BlVmFsdWVzLFxuICBnZXRJbml0aWFsU2NvcGVWYWx1ZXMsXG4gIE5vZGVSZXNvbHZlcixcbiAgUnVudGltZVN0cnVjdHVyZU1hbmFnZXIsXG4gIHNlZWRTdWJmbG93R2xvYmFsU3RvcmUsXG4gIFNlbGVjdG9ySGFuZGxlcixcbiAgU3RhZ2VSdW5uZXIsXG4gIFN1YmZsb3dFeGVjdXRvcixcbn0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLy8gVHJhY2UgdXRpbGl0aWVzIOKAlCByZS1leHBvcnRlZCBoZXJlIGZvciBjb252ZW5pZW5jZS4gQ2Fub25pY2FsIHBhdGg6ICdmb290cHJpbnRqcy90cmFjZSdcbmV4cG9ydCB0eXBlIHsgRXhlY3V0aW9uQ291bnRlciB9IGZyb20gJy4vbGliL2VuZ2luZS9ydW50aW1lU3RhZ2VJZC5qcyc7XG5leHBvcnQgeyBidWlsZFJ1bnRpbWVTdGFnZUlkLCBjcmVhdGVFeGVjdXRpb25Db3VudGVyLCBwYXJzZVJ1bnRpbWVTdGFnZUlkIH0gZnJvbSAnLi9saWIvZW5naW5lL3J1bnRpbWVTdGFnZUlkLmpzJztcbmV4cG9ydCB7IGZpbmRDb21taXQsIGZpbmRDb21taXRzLCBmaW5kTGFzdFdyaXRlciB9IGZyb20gJy4vbGliL21lbW9yeS9jb21taXRMb2dVdGlscy5qcyc7XG4iXX0=
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWR2YW5jZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYWR2YW5jZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7R0FZRztBQUNIOzs7Ozs7O0dBT0c7Ozs7QUFnQkgsa0RBQXFEO0FBQTVDLHdHQUFBLFlBQVksT0FBQTtBQUNyQixrREFBcUQ7QUFBNUMsd0dBQUEsWUFBWSxPQUFBO0FBQ3JCLGtEQUFpRDtBQUF4QyxvR0FBQSxRQUFRLE9BQUE7QUFDakIsa0RBQTBEO0FBQWpELDZHQUFBLGlCQUFpQixPQUFBO0FBQzFCLGtEQUE0RDtBQUFuRCwrR0FBQSxtQkFBbUIsT0FBQTtBQUM1QixrREFVK0I7QUFUN0IsMkdBQUEsZUFBZSxPQUFBO0FBQ2YsMEdBQUEsY0FBYyxPQUFBO0FBQ2QsMEdBQUEsY0FBYyxPQUFBO0FBQ2QsZ0hBQUEsb0JBQW9CLE9BQUE7QUFDcEIseUdBQUEsYUFBYSxPQUFBO0FBQ2IsdUdBQUEsV0FBVyxPQUFBO0FBQ1gsMEdBQUEsY0FBYyxPQUFBO0FBQ2QsNkdBQUEsaUJBQWlCLE9BQUE7QUFDakIsdUdBQUEsV0FBVyxPQUFBO0FBdUJiLG1EQUFzRztBQUE3RiwwR0FBQSxjQUFjLE9BQUE7QUFBRSx1R0FBQSxXQUFXLE9BQUE7QUFBRSwwR0FBQSxjQUFjLE9BQUE7QUFBRSwyR0FBQSxlQUFlLE9BQUE7QUFDckUscUVBQTBFO0FBQWpFLDRIQUFBLHVCQUF1QixPQUFBO0FBYWhDLGlEQUE2RjtBQUFwRiw4R0FBQSxrQkFBa0IsT0FBQTtBQUFFLGdIQUFBLG9CQUFvQixPQUFBO0FBQUUsdUdBQUEsV0FBVyxPQUFBO0FBQzlELGlEQVU4QjtBQVQ1Qiw4R0FBQSxrQkFBa0IsT0FBQTtBQUNsQixtSEFBQSx1QkFBdUIsT0FBQTtBQUN2Qiw4R0FBQSxrQkFBa0IsT0FBQTtBQUNsQiw0R0FBQSxnQkFBZ0IsT0FBQTtBQUNoQiw2R0FBQSxpQkFBaUIsT0FBQTtBQUNqQiwrR0FBQSxtQkFBbUIsT0FBQTtBQUNuQixpSEFBQSxxQkFBcUIsT0FBQTtBQUNyQixnSEFBQSxvQkFBb0IsT0FBQTtBQUNwQiwwR0FBQSxjQUFjLE9BQUE7QUF5QmhCLG1EQUF5RDtBQUFoRCw2R0FBQSxnQkFBZ0IsT0FBQTtBQU96QixxREFPaUM7QUFOL0IseUdBQUEsWUFBWSxPQUFBO0FBQ1osNkdBQUEsZ0JBQWdCLE9BQUE7QUFDaEIsNkdBQUEsZ0JBQWdCLE9BQUE7QUFDaEIscUdBQUEsUUFBUSxPQUFBO0FBQ1IsK0dBQUEsa0JBQWtCLE9BQUE7QUFDbEIsZ0hBQUEsbUJBQW1CLE9BQUE7QUFTckIsbURBQTJEO0FBQWxELCtHQUFBLGtCQUFrQixPQUFBO0FBQzNCLG1EQUEwRDtBQUFqRCw4R0FBQSxpQkFBaUIsT0FBQTtBQW1CMUIsbURBQTBFO0FBQWpFLDhIQUFBLGlDQUFpQyxPQUFBO0FBSTFDLG1EQWdCK0I7QUFmN0IsK0dBQUEsa0JBQWtCLE9BQUE7QUFDbEIsNkdBQUEsZ0JBQWdCLE9BQUE7QUFDaEIsNEdBQUEsZUFBZSxPQUFBO0FBQ2YsaUhBQUEsb0JBQW9CLE9BQUE7QUFDcEIscUhBQUEsd0JBQXdCLE9BQUE7QUFDeEIsMkdBQUEsY0FBYyxPQUFBO0FBQ2QsbUhBQUEsc0JBQXNCLE9BQUE7QUFDdEIscUhBQUEsd0JBQXdCLE9BQUE7QUFDeEIsa0hBQUEscUJBQXFCLE9BQUE7QUFDckIseUdBQUEsWUFBWSxPQUFBO0FBQ1osb0hBQUEsdUJBQXVCLE9BQUE7QUFDdkIsbUhBQUEsc0JBQXNCLE9BQUE7QUFDdEIsNEdBQUEsZUFBZSxPQUFBO0FBQ2Ysd0dBQUEsV0FBVyxPQUFBO0FBQ1gsNEdBQUEsZUFBZSxPQUFBO0FBS2pCLG9FQUFrSDtBQUF6Ryx3SEFBQSxtQkFBbUIsT0FBQTtBQUFFLDJIQUFBLHNCQUFzQixPQUFBO0FBQUUsd0hBQUEsbUJBQW1CLE9BQUE7QUFDekUsb0VBQXlGO0FBQWhGLCtHQUFBLFVBQVUsT0FBQTtBQUFFLGdIQUFBLFdBQVcsT0FBQTtBQUFFLG1IQUFBLGNBQWMsT0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogZm9vdHByaW50anMvYWR2YW5jZWQg4oCUIExvdy1sZXZlbCBpbnRlcm5hbHMgZm9yIGN1c3RvbSBleGVjdXRpb24gZW5naW5lcyBhbmQgdGVzdGluZy5cbiAqXG4gKiBNb3N0IHVzZXJzIG5ldmVyIG5lZWQgdGhpcy4gVXNlIGBmb290cHJpbnRqc2AgKG1haW4pIGluc3RlYWQuXG4gKiBUaGlzIGVudHJ5IHBvaW50IGV4cG9zZXMgYFNoYXJlZE1lbW9yeWAsIGBTdGFnZUNvbnRleHRgLCBgRmxvd2NoYXJ0VHJhdmVyc2VyYCxcbiAqIGFuZCBvdGhlciBwcmltaXRpdmVzIHRoYXQgcG93ZXIgdGhlIGVuZ2luZS5cbiAqXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgU2hhcmVkTWVtb3J5LCBTdGFnZUNvbnRleHQgfSBmcm9tICdmb290cHJpbnRqcy9hZHZhbmNlZCc7XG4gKiBgYGBcbiAqXG4gKiBAbW9kdWxlIGFkdmFuY2VkXG4gKi9cbi8qKlxuICogRm9vdFByaW50IOKAlCBBZHZhbmNlZCAvIEludGVybmFsIEFQSVxuICpcbiAqIFRoZXNlIGV4cG9ydHMgYXJlIGZvciBhZHZhbmNlZCB1c2UgY2FzZXMsIHRlc3RpbmcsIGFuZCBidWlsZGluZ1xuICogY3VzdG9tIGV4ZWN1dGlvbiBlbmdpbmVzLiBNb3N0IHVzZXJzIHNob3VsZCB1c2UgdGhlIG1haW4gJ2Zvb3RwcmludCcgZW50cnkgcG9pbnQuXG4gKlxuICogSW1wb3J0IHZpYTogaW1wb3J0IHsgLi4uIH0gZnJvbSAnZm9vdHByaW50L2FkdmFuY2VkJ1xuICovXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE1lbW9yeSDigJQgTG93LWxldmVsIHRyYW5zYWN0aW9uYWwgc3RhdGUgcHJpbWl0aXZlc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgdHlwZSB7XG4gIENvbW1pdEJ1bmRsZSxcbiAgRmxvd0NvbnRyb2xUeXBlLFxuICBGbG93TWVzc2FnZSxcbiAgTWVtb3J5UGF0Y2gsXG4gIFJlYWRTdW1tYXJ5TWFya2VyLFxuICBSZWFkVHJhY2tpbmdNb2RlLFxuICBTdGFnZVNuYXBzaG90LFxuICBUcmFjZUVudHJ5LFxufSBmcm9tICcuL2xpYi9tZW1vcnkvaW5kZXguanMnO1xuZXhwb3J0IHsgU2hhcmVkTWVtb3J5IH0gZnJvbSAnLi9saWIvbWVtb3J5L2luZGV4LmpzJztcbmV4cG9ydCB7IFN0YWdlQ29udGV4dCB9IGZyb20gJy4vbGliL21lbW9yeS9pbmRleC5qcyc7XG5leHBvcnQgeyBFdmVudExvZyB9IGZyb20gJy4vbGliL21lbW9yeS9pbmRleC5qcyc7XG5leHBvcnQgeyBUcmFuc2FjdGlvbkJ1ZmZlciB9IGZyb20gJy4vbGliL21lbW9yeS9pbmRleC5qcyc7XG5leHBvcnQgeyBEaWFnbm9zdGljQ29sbGVjdG9yIH0gZnJvbSAnLi9saWIvbWVtb3J5L2luZGV4LmpzJztcbmV4cG9ydCB7XG4gIGFwcGx5U21hcnRNZXJnZSxcbiAgZGVlcFNtYXJ0TWVyZ2UsXG4gIGdldE5lc3RlZFZhbHVlLFxuICBnZXRSdW5BbmRHbG9iYWxQYXRocyxcbiAgbm9ybWFsaXNlUGF0aCxcbiAgcmVkYWN0UGF0Y2gsXG4gIHNldE5lc3RlZFZhbHVlLFxuICB1cGRhdGVOZXN0ZWRWYWx1ZSxcbiAgdXBkYXRlVmFsdWUsXG59IGZyb20gJy4vbGliL21lbW9yeS9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEJ1aWxkZXIg4oCUIFR5cGVzIGFuZCBpbnRlcm5hbHNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUge1xuICBFeGVjT3B0aW9ucyxcbiAgRmxvd0NoYXJ0T3B0aW9ucyxcbiAgRmxvd0NoYXJ0U3BlYyxcbiAgSUxvZ2dlcixcbiAgU2NvcGVQcm90ZWN0aW9uTW9kZSxcbiAgU2VyaWFsaXplZFBpcGVsaW5lU3RydWN0dXJlLFxuICBTaW1wbGlmaWVkUGFyYWxsZWxTcGVjLFxuICBTdGFnZUZuLFxuICBTdGFnZU5vZGUsXG4gIFN0cmVhbUNhbGxiYWNrLFxuICBTdHJlYW1MaWZlY3ljbGVIYW5kbGVyLFxuICBTdHJlYW1Ub2tlbkhhbmRsZXIsXG4gIFN1YmZsb3dNb3VudE9wdGlvbnMsXG4gIFN1YmZsb3dSZWYsXG59IGZyb20gJy4vbGliL2J1aWxkZXIvaW5kZXguanMnO1xuZXhwb3J0IHsgQXJyYXlNZXJnZU1vZGUsIERlY2lkZXJMaXN0LCBTZWxlY3RvckZuTGlzdCwgc3BlY1RvU3RhZ2VOb2RlIH0gZnJvbSAnLi9saWIvYnVpbGRlci9pbmRleC5qcyc7XG5leHBvcnQgeyBjcmVhdGVUeXBlZFNjb3BlRmFjdG9yeSB9IGZyb20gJy4vbGliL2J1aWxkZXIvdHlwZWRGbG93Q2hhcnQuanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTY29wZSDigJQgUHJvdmlkZXJzLCBwcm90ZWN0aW9uLCByZWNvcmRlciBvcHRpb25zLCBhbmQgZXZlbnQgdHlwZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUge1xuICBQcm92aWRlclJlc29sdmVyLFxuICBSZXNvbHZlT3B0aW9ucyxcbiAgU2NvcGVQcm92aWRlcixcbiAgU3RhZ2VDb250ZXh0TGlrZSxcbiAgU3RyaWN0TW9kZSxcbn0gZnJvbSAnLi9saWIvc2NvcGUvaW5kZXguanMnO1xuZXhwb3J0IHsgY3JlYXRlRXJyb3JNZXNzYWdlLCBjcmVhdGVQcm90ZWN0ZWRTY29wZSwgU2NvcGVGYWNhZGUgfSBmcm9tICcuL2xpYi9zY29wZS9pbmRleC5qcyc7XG5leHBvcnQge1xuICBhdHRhY2hTY29wZU1ldGhvZHMsXG4gIGlzU3ViY2xhc3NPZlNjb3BlRmFjYWRlLFxuICBsb29rc0xpa2VDbGFzc0N0b3IsXG4gIGxvb2tzTGlrZUZhY3RvcnksXG4gIG1ha2VDbGFzc1Byb3ZpZGVyLFxuICBtYWtlRmFjdG9yeVByb3ZpZGVyLFxuICByZWdpc3RlclNjb3BlUmVzb2x2ZXIsXG4gIHJlc29sdmVTY29wZVByb3ZpZGVyLFxuICB0b1Njb3BlRmFjdG9yeSxcbn0gZnJvbSAnLi9saWIvc2NvcGUvaW5kZXguanMnO1xuXG4vLyBTY29wZVJlY29yZGVyIGNvbmZpZy9vcHRpb24gdHlwZXNcbmV4cG9ydCB0eXBlIHtcbiAgQWdncmVnYXRlZE1ldHJpY3MsXG4gIERlYnVnRW50cnksXG4gIERlYnVnUmVjb3JkZXJPcHRpb25zLFxuICBEZWJ1Z1ZlcmJvc2l0eSxcbiAgUmVjb3JkZXJDb250ZXh0LFxuICBTdGFnZUV2ZW50LFxuICBTdGFnZU1ldHJpY3MsXG59IGZyb20gJy4vbGliL3Njb3BlL2luZGV4LmpzJztcbi8vIGBEZWZpbmVTY29wZU9wdGlvbnNgICh6b2Qgc2NvcGUgb3B0aW9ucykgbW92ZWQgdG8gJ2Zvb3RwcmludGpzL3pvZCcuXG5cbi8vIFpvZCBpbnRlcm5hbHMgbW92ZWQgdG8gdGhlIG9wdC1pbiBgZm9vdHByaW50anMvem9kYCBlbnRyeSAoa2VlcHMgem9kIOKAlCBhblxuLy8gb3B0aW9uYWwgcGVlciDigJQgb3V0IG9mIHRoZSBgZm9vdHByaW50anMvYWR2YW5jZWRgIGxvYWQgcGF0aCkuIEltcG9ydFxuLy8gY3JlYXRlU2NvcGVQcm94eUZyb21ab2QgLyBkZWZpbmVTY29wZVNjaGVtYSAvIGlzU2NvcGVTY2hlbWEgLyBab2RTY29wZVJlc29sdmVyXG4vLyBmcm9tICdmb290cHJpbnRqcy96b2QnLlxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBSdW5uZXIg4oCUIEludGVybmFsc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgdHlwZSB7IFJ1bnRpbWVTbmFwc2hvdCB9IGZyb20gJy4vbGliL3J1bm5lci9pbmRleC5qcyc7XG5leHBvcnQgeyBFeGVjdXRpb25SdW50aW1lIH0gZnJvbSAnLi9saWIvcnVubmVyL2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUmVhY3RpdmUg4oCUIFR5cGVkU2NvcGUgaW50ZXJuYWxzIChmb3IgY3VzdG9tIHByb3h5IGltcGxlbWVudGF0aW9ucylcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUgeyBSZWFjdGl2ZU9wdGlvbnMsIFJlYWN0aXZlVGFyZ2V0IH0gZnJvbSAnLi9saWIvcmVhY3RpdmUvaW5kZXguanMnO1xuZXhwb3J0IHtcbiAgQlJFQUtfU0VUVEVSLFxuICBidWlsZE5lc3RlZFBhdGNoLFxuICBjcmVhdGVBcnJheVByb3h5LFxuICBqb2luUGF0aCxcbiAgU0NPUEVfTUVUSE9EX05BTUVTLFxuICBzaG91bGRXcmFwV2l0aFByb3h5LFxufSBmcm9tICcuL2xpYi9yZWFjdGl2ZS9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEVuZ2luZSDigJQgREZTIGdyYXBoIHRyYXZlcnNhbCBpbnRlcm5hbHNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUgeyBUcmF2ZXJzZXJPcHRpb25zIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcbmV4cG9ydCB0eXBlIHsgRGVjaWRlciB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5leHBvcnQgeyBGbG93Y2hhcnRUcmF2ZXJzZXIgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuZXhwb3J0IHsgaXNTdGFnZU5vZGVSZXR1cm4gfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vLyBOYXJyYXRpdmUgaW50ZXJuYWxzXG5leHBvcnQgdHlwZSB7IElDb250cm9sRmxvd05hcnJhdGl2ZSB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5leHBvcnQgdHlwZSB7IENvbWJpbmVkTmFycmF0aXZlRW50cnksIENvbWJpbmVkTmFycmF0aXZlT3B0aW9ucyB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5leHBvcnQgdHlwZSB7XG4gIEJyYW5jaFJlc3VsdCxcbiAgQnJhbmNoUmVzdWx0cyxcbiAgU2VyaWFsaXplZFBpcGVsaW5lU3RydWN0dXJlIGFzIEVuZ2luZVNlcmlhbGl6ZWRQaXBlbGluZVN0cnVjdHVyZSxcbiAgSGFuZGxlckRlcHMsXG4gIElFeGVjdXRpb25SdW50aW1lLFxuICBOb2RlUmVzdWx0VHlwZSxcbiAgUnVudGltZVN0cnVjdHVyZU1ldGFkYXRhLFxuICBTY29wZUZhY3RvcnksXG4gIFNlcmlhbGl6ZWRQaXBlbGluZU5vZGUsXG4gIFN0YWdlRnVuY3Rpb24sXG4gIFN1YmZsb3dSZXN1bHQsXG4gIFRyYXZlcnNhbFJlc3VsdCxcbn0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcbmV4cG9ydCB7IE51bGxDb250cm9sRmxvd05hcnJhdGl2ZUdlbmVyYXRvciB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8vIEhhbmRsZXJzICh0ZXN0aW5nIC8gY3VzdG9tIGVuZ2luZXMpXG5leHBvcnQgdHlwZSB7IEV4ZWN1dGVOb2RlRm4sIFJ1blN0YWdlRm4gfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuZXhwb3J0IHtcbiAgYXBwbHlPdXRwdXRNYXBwaW5nLFxuICBDaGlsZHJlbkV4ZWN1dG9yLFxuICBjb21wdXRlTm9kZVR5cGUsXG4gIENvbnRpbnVhdGlvblJlc29sdmVyLFxuICBjcmVhdGVTdWJmbG93SGFuZGxlckRlcHMsXG4gIERlY2lkZXJIYW5kbGVyLFxuICBERUZBVUxUX01BWF9JVEVSQVRJT05TLFxuICBleHRyYWN0UGFyZW50U2NvcGVWYWx1ZXMsXG4gIGdldEluaXRpYWxTY29wZVZhbHVlcyxcbiAgTm9kZVJlc29sdmVyLFxuICBSdW50aW1lU3RydWN0dXJlTWFuYWdlcixcbiAgc2VlZFN1YmZsb3dHbG9iYWxTdG9yZSxcbiAgU2VsZWN0b3JIYW5kbGVyLFxuICBTdGFnZVJ1bm5lcixcbiAgU3ViZmxvd0V4ZWN1dG9yLFxufSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vLyBUcmFjZSB1dGlsaXRpZXMg4oCUIHJlLWV4cG9ydGVkIGhlcmUgZm9yIGNvbnZlbmllbmNlLiBDYW5vbmljYWwgcGF0aDogJ2Zvb3RwcmludGpzL3RyYWNlJ1xuZXhwb3J0IHR5cGUgeyBFeGVjdXRpb25Db3VudGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL3J1bnRpbWVTdGFnZUlkLmpzJztcbmV4cG9ydCB7IGJ1aWxkUnVudGltZVN0YWdlSWQsIGNyZWF0ZUV4ZWN1dGlvbkNvdW50ZXIsIHBhcnNlUnVudGltZVN0YWdlSWQgfSBmcm9tICcuL2xpYi9lbmdpbmUvcnVudGltZVN0YWdlSWQuanMnO1xuZXhwb3J0IHsgZmluZENvbW1pdCwgZmluZENvbW1pdHMsIGZpbmRMYXN0V3JpdGVyIH0gZnJvbSAnLi9saWIvbWVtb3J5L2NvbW1pdExvZ1V0aWxzLmpzJztcbiJdfQ==
@@ -37,4 +37,4 @@ export { NullControlFlowNarrativeGenerator } from './lib/engine/index.js';
37
37
  export { applyOutputMapping, ChildrenExecutor, computeNodeType, ContinuationResolver, createSubflowHandlerDeps, DeciderHandler, DEFAULT_MAX_ITERATIONS, extractParentScopeValues, getInitialScopeValues, NodeResolver, RuntimeStructureManager, seedSubflowGlobalStore, SelectorHandler, StageRunner, SubflowExecutor, } from './lib/engine/index.js';
38
38
  export { buildRuntimeStageId, createExecutionCounter, parseRuntimeStageId } from './lib/engine/runtimeStageId.js';
39
39
  export { findCommit, findCommits, findLastWriter } from './lib/memory/commitLogUtils.js';
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWR2YW5jZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWR2YW5jZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0g7Ozs7Ozs7R0FPRztBQWNILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVELE9BQU8sRUFDTCxlQUFlLEVBQ2YsY0FBYyxFQUNkLGNBQWMsRUFDZCxvQkFBb0IsRUFDcEIsYUFBYSxFQUNiLFdBQVcsRUFDWCxjQUFjLEVBQ2QsaUJBQWlCLEVBQ2pCLFdBQVcsR0FDWixNQUFNLHVCQUF1QixDQUFDO0FBc0IvQixPQUFPLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEcsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFhMUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLG9CQUFvQixFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzdGLE9BQU8sRUFDTCxrQkFBa0IsRUFDbEIsdUJBQXVCLEVBQ3ZCLGtCQUFrQixFQUNsQixnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLG1CQUFtQixFQUNuQixxQkFBcUIsRUFDckIsb0JBQW9CLEVBQ3BCLGNBQWMsR0FDZixNQUFNLHNCQUFzQixDQUFDO0FBd0I5QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQU96RCxPQUFPLEVBQ0wsWUFBWSxFQUNaLGdCQUFnQixFQUNoQixnQkFBZ0IsRUFDaEIsUUFBUSxFQUNSLGtCQUFrQixFQUNsQixtQkFBbUIsR0FDcEIsTUFBTSx5QkFBeUIsQ0FBQztBQVFqQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQW1CMUQsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFJMUUsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixnQkFBZ0IsRUFDaEIsZUFBZSxFQUNmLG9CQUFvQixFQUNwQix3QkFBd0IsRUFDeEIsY0FBYyxFQUNkLHNCQUFzQixFQUN0Qix3QkFBd0IsRUFDeEIscUJBQXFCLEVBQ3JCLFlBQVksRUFDWix1QkFBdUIsRUFDdkIsc0JBQXNCLEVBQ3RCLGVBQWUsRUFDZixXQUFXLEVBQ1gsZUFBZSxHQUNoQixNQUFNLHVCQUF1QixDQUFDO0FBSS9CLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxzQkFBc0IsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2xILE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBmb290cHJpbnRqcy9hZHZhbmNlZCDigJQgTG93LWxldmVsIGludGVybmFscyBmb3IgY3VzdG9tIGV4ZWN1dGlvbiBlbmdpbmVzIGFuZCB0ZXN0aW5nLlxuICpcbiAqIE1vc3QgdXNlcnMgbmV2ZXIgbmVlZCB0aGlzLiBVc2UgYGZvb3RwcmludGpzYCAobWFpbikgaW5zdGVhZC5cbiAqIFRoaXMgZW50cnkgcG9pbnQgZXhwb3NlcyBgU2hhcmVkTWVtb3J5YCwgYFN0YWdlQ29udGV4dGAsIGBGbG93Y2hhcnRUcmF2ZXJzZXJgLFxuICogYW5kIG90aGVyIHByaW1pdGl2ZXMgdGhhdCBwb3dlciB0aGUgZW5naW5lLlxuICpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBTaGFyZWRNZW1vcnksIFN0YWdlQ29udGV4dCB9IGZyb20gJ2Zvb3RwcmludGpzL2FkdmFuY2VkJztcbiAqIGBgYFxuICpcbiAqIEBtb2R1bGUgYWR2YW5jZWRcbiAqL1xuLyoqXG4gKiBGb290UHJpbnQg4oCUIEFkdmFuY2VkIC8gSW50ZXJuYWwgQVBJXG4gKlxuICogVGhlc2UgZXhwb3J0cyBhcmUgZm9yIGFkdmFuY2VkIHVzZSBjYXNlcywgdGVzdGluZywgYW5kIGJ1aWxkaW5nXG4gKiBjdXN0b20gZXhlY3V0aW9uIGVuZ2luZXMuIE1vc3QgdXNlcnMgc2hvdWxkIHVzZSB0aGUgbWFpbiAnZm9vdHByaW50JyBlbnRyeSBwb2ludC5cbiAqXG4gKiBJbXBvcnQgdmlhOiBpbXBvcnQgeyAuLi4gfSBmcm9tICdmb290cHJpbnQvYWR2YW5jZWQnXG4gKi9cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTWVtb3J5IOKAlCBMb3ctbGV2ZWwgdHJhbnNhY3Rpb25hbCBzdGF0ZSBwcmltaXRpdmVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCB0eXBlIHtcbiAgQ29tbWl0QnVuZGxlLFxuICBGbG93Q29udHJvbFR5cGUsXG4gIEZsb3dNZXNzYWdlLFxuICBNZW1vcnlQYXRjaCxcbiAgU3RhZ2VTbmFwc2hvdCxcbiAgVHJhY2VFbnRyeSxcbn0gZnJvbSAnLi9saWIvbWVtb3J5L2luZGV4LmpzJztcbmV4cG9ydCB7IFNoYXJlZE1lbW9yeSB9IGZyb20gJy4vbGliL21lbW9yeS9pbmRleC5qcyc7XG5leHBvcnQgeyBTdGFnZUNvbnRleHQgfSBmcm9tICcuL2xpYi9tZW1vcnkvaW5kZXguanMnO1xuZXhwb3J0IHsgRXZlbnRMb2cgfSBmcm9tICcuL2xpYi9tZW1vcnkvaW5kZXguanMnO1xuZXhwb3J0IHsgVHJhbnNhY3Rpb25CdWZmZXIgfSBmcm9tICcuL2xpYi9tZW1vcnkvaW5kZXguanMnO1xuZXhwb3J0IHsgRGlhZ25vc3RpY0NvbGxlY3RvciB9IGZyb20gJy4vbGliL21lbW9yeS9pbmRleC5qcyc7XG5leHBvcnQge1xuICBhcHBseVNtYXJ0TWVyZ2UsXG4gIGRlZXBTbWFydE1lcmdlLFxuICBnZXROZXN0ZWRWYWx1ZSxcbiAgZ2V0UnVuQW5kR2xvYmFsUGF0aHMsXG4gIG5vcm1hbGlzZVBhdGgsXG4gIHJlZGFjdFBhdGNoLFxuICBzZXROZXN0ZWRWYWx1ZSxcbiAgdXBkYXRlTmVzdGVkVmFsdWUsXG4gIHVwZGF0ZVZhbHVlLFxufSBmcm9tICcuL2xpYi9tZW1vcnkvaW5kZXguanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBCdWlsZGVyIOKAlCBUeXBlcyBhbmQgaW50ZXJuYWxzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCB0eXBlIHtcbiAgRXhlY09wdGlvbnMsXG4gIEZsb3dDaGFydE9wdGlvbnMsXG4gIEZsb3dDaGFydFNwZWMsXG4gIElMb2dnZXIsXG4gIFNjb3BlUHJvdGVjdGlvbk1vZGUsXG4gIFNlcmlhbGl6ZWRQaXBlbGluZVN0cnVjdHVyZSxcbiAgU2ltcGxpZmllZFBhcmFsbGVsU3BlYyxcbiAgU3RhZ2VGbixcbiAgU3RhZ2VOb2RlLFxuICBTdHJlYW1DYWxsYmFjayxcbiAgU3RyZWFtTGlmZWN5Y2xlSGFuZGxlcixcbiAgU3RyZWFtVG9rZW5IYW5kbGVyLFxuICBTdWJmbG93TW91bnRPcHRpb25zLFxuICBTdWJmbG93UmVmLFxufSBmcm9tICcuL2xpYi9idWlsZGVyL2luZGV4LmpzJztcbmV4cG9ydCB7IEFycmF5TWVyZ2VNb2RlLCBEZWNpZGVyTGlzdCwgU2VsZWN0b3JGbkxpc3QsIHNwZWNUb1N0YWdlTm9kZSB9IGZyb20gJy4vbGliL2J1aWxkZXIvaW5kZXguanMnO1xuZXhwb3J0IHsgY3JlYXRlVHlwZWRTY29wZUZhY3RvcnkgfSBmcm9tICcuL2xpYi9idWlsZGVyL3R5cGVkRmxvd0NoYXJ0LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU2NvcGUg4oCUIFByb3ZpZGVycywgcHJvdGVjdGlvbiwgcmVjb3JkZXIgb3B0aW9ucywgYW5kIGV2ZW50IHR5cGVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCB0eXBlIHtcbiAgUHJvdmlkZXJSZXNvbHZlcixcbiAgUmVzb2x2ZU9wdGlvbnMsXG4gIFNjb3BlUHJvdmlkZXIsXG4gIFN0YWdlQ29udGV4dExpa2UsXG4gIFN0cmljdE1vZGUsXG59IGZyb20gJy4vbGliL3Njb3BlL2luZGV4LmpzJztcbmV4cG9ydCB7IGNyZWF0ZUVycm9yTWVzc2FnZSwgY3JlYXRlUHJvdGVjdGVkU2NvcGUsIFNjb3BlRmFjYWRlIH0gZnJvbSAnLi9saWIvc2NvcGUvaW5kZXguanMnO1xuZXhwb3J0IHtcbiAgYXR0YWNoU2NvcGVNZXRob2RzLFxuICBpc1N1YmNsYXNzT2ZTY29wZUZhY2FkZSxcbiAgbG9va3NMaWtlQ2xhc3NDdG9yLFxuICBsb29rc0xpa2VGYWN0b3J5LFxuICBtYWtlQ2xhc3NQcm92aWRlcixcbiAgbWFrZUZhY3RvcnlQcm92aWRlcixcbiAgcmVnaXN0ZXJTY29wZVJlc29sdmVyLFxuICByZXNvbHZlU2NvcGVQcm92aWRlcixcbiAgdG9TY29wZUZhY3RvcnksXG59IGZyb20gJy4vbGliL3Njb3BlL2luZGV4LmpzJztcblxuLy8gU2NvcGVSZWNvcmRlciBjb25maWcvb3B0aW9uIHR5cGVzXG5leHBvcnQgdHlwZSB7XG4gIEFnZ3JlZ2F0ZWRNZXRyaWNzLFxuICBEZWJ1Z0VudHJ5LFxuICBEZWJ1Z1JlY29yZGVyT3B0aW9ucyxcbiAgRGVidWdWZXJib3NpdHksXG4gIFJlY29yZGVyQ29udGV4dCxcbiAgU3RhZ2VFdmVudCxcbiAgU3RhZ2VNZXRyaWNzLFxufSBmcm9tICcuL2xpYi9zY29wZS9pbmRleC5qcyc7XG4vLyBgRGVmaW5lU2NvcGVPcHRpb25zYCAoem9kIHNjb3BlIG9wdGlvbnMpIG1vdmVkIHRvICdmb290cHJpbnRqcy96b2QnLlxuXG4vLyBab2QgaW50ZXJuYWxzIG1vdmVkIHRvIHRoZSBvcHQtaW4gYGZvb3RwcmludGpzL3pvZGAgZW50cnkgKGtlZXBzIHpvZCDigJQgYW5cbi8vIG9wdGlvbmFsIHBlZXIg4oCUIG91dCBvZiB0aGUgYGZvb3RwcmludGpzL2FkdmFuY2VkYCBsb2FkIHBhdGgpLiBJbXBvcnRcbi8vIGNyZWF0ZVNjb3BlUHJveHlGcm9tWm9kIC8gZGVmaW5lU2NvcGVTY2hlbWEgLyBpc1Njb3BlU2NoZW1hIC8gWm9kU2NvcGVSZXNvbHZlclxuLy8gZnJvbSAnZm9vdHByaW50anMvem9kJy5cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUnVubmVyIOKAlCBJbnRlcm5hbHNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUgeyBSdW50aW1lU25hcHNob3QgfSBmcm9tICcuL2xpYi9ydW5uZXIvaW5kZXguanMnO1xuZXhwb3J0IHsgRXhlY3V0aW9uUnVudGltZSB9IGZyb20gJy4vbGliL3J1bm5lci9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFJlYWN0aXZlIOKAlCBUeXBlZFNjb3BlIGludGVybmFscyAoZm9yIGN1c3RvbSBwcm94eSBpbXBsZW1lbnRhdGlvbnMpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCB0eXBlIHsgUmVhY3RpdmVPcHRpb25zLCBSZWFjdGl2ZVRhcmdldCB9IGZyb20gJy4vbGliL3JlYWN0aXZlL2luZGV4LmpzJztcbmV4cG9ydCB7XG4gIEJSRUFLX1NFVFRFUixcbiAgYnVpbGROZXN0ZWRQYXRjaCxcbiAgY3JlYXRlQXJyYXlQcm94eSxcbiAgam9pblBhdGgsXG4gIFNDT1BFX01FVEhPRF9OQU1FUyxcbiAgc2hvdWxkV3JhcFdpdGhQcm94eSxcbn0gZnJvbSAnLi9saWIvcmVhY3RpdmUvaW5kZXguanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBFbmdpbmUg4oCUIERGUyBncmFwaCB0cmF2ZXJzYWwgaW50ZXJuYWxzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCB0eXBlIHsgVHJhdmVyc2VyT3B0aW9ucyB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5leHBvcnQgdHlwZSB7IERlY2lkZXIgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuZXhwb3J0IHsgRmxvd2NoYXJ0VHJhdmVyc2VyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcbmV4cG9ydCB7IGlzU3RhZ2VOb2RlUmV0dXJuIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLy8gTmFycmF0aXZlIGludGVybmFsc1xuZXhwb3J0IHR5cGUgeyBJQ29udHJvbEZsb3dOYXJyYXRpdmUgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuZXhwb3J0IHR5cGUgeyBDb21iaW5lZE5hcnJhdGl2ZUVudHJ5LCBDb21iaW5lZE5hcnJhdGl2ZU9wdGlvbnMgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuZXhwb3J0IHR5cGUge1xuICBCcmFuY2hSZXN1bHQsXG4gIEJyYW5jaFJlc3VsdHMsXG4gIFNlcmlhbGl6ZWRQaXBlbGluZVN0cnVjdHVyZSBhcyBFbmdpbmVTZXJpYWxpemVkUGlwZWxpbmVTdHJ1Y3R1cmUsXG4gIEhhbmRsZXJEZXBzLFxuICBJRXhlY3V0aW9uUnVudGltZSxcbiAgTm9kZVJlc3VsdFR5cGUsXG4gIFJ1bnRpbWVTdHJ1Y3R1cmVNZXRhZGF0YSxcbiAgU2NvcGVGYWN0b3J5LFxuICBTZXJpYWxpemVkUGlwZWxpbmVOb2RlLFxuICBTdGFnZUZ1bmN0aW9uLFxuICBTdWJmbG93UmVzdWx0LFxuICBUcmF2ZXJzYWxSZXN1bHQsXG59IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5leHBvcnQgeyBOdWxsQ29udHJvbEZsb3dOYXJyYXRpdmVHZW5lcmF0b3IgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vLyBIYW5kbGVycyAodGVzdGluZyAvIGN1c3RvbSBlbmdpbmVzKVxuZXhwb3J0IHR5cGUgeyBFeGVjdXRlTm9kZUZuLCBSdW5TdGFnZUZuIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcbmV4cG9ydCB7XG4gIGFwcGx5T3V0cHV0TWFwcGluZyxcbiAgQ2hpbGRyZW5FeGVjdXRvcixcbiAgY29tcHV0ZU5vZGVUeXBlLFxuICBDb250aW51YXRpb25SZXNvbHZlcixcbiAgY3JlYXRlU3ViZmxvd0hhbmRsZXJEZXBzLFxuICBEZWNpZGVySGFuZGxlcixcbiAgREVGQVVMVF9NQVhfSVRFUkFUSU9OUyxcbiAgZXh0cmFjdFBhcmVudFNjb3BlVmFsdWVzLFxuICBnZXRJbml0aWFsU2NvcGVWYWx1ZXMsXG4gIE5vZGVSZXNvbHZlcixcbiAgUnVudGltZVN0cnVjdHVyZU1hbmFnZXIsXG4gIHNlZWRTdWJmbG93R2xvYmFsU3RvcmUsXG4gIFNlbGVjdG9ySGFuZGxlcixcbiAgU3RhZ2VSdW5uZXIsXG4gIFN1YmZsb3dFeGVjdXRvcixcbn0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLy8gVHJhY2UgdXRpbGl0aWVzIOKAlCByZS1leHBvcnRlZCBoZXJlIGZvciBjb252ZW5pZW5jZS4gQ2Fub25pY2FsIHBhdGg6ICdmb290cHJpbnRqcy90cmFjZSdcbmV4cG9ydCB0eXBlIHsgRXhlY3V0aW9uQ291bnRlciB9IGZyb20gJy4vbGliL2VuZ2luZS9ydW50aW1lU3RhZ2VJZC5qcyc7XG5leHBvcnQgeyBidWlsZFJ1bnRpbWVTdGFnZUlkLCBjcmVhdGVFeGVjdXRpb25Db3VudGVyLCBwYXJzZVJ1bnRpbWVTdGFnZUlkIH0gZnJvbSAnLi9saWIvZW5naW5lL3J1bnRpbWVTdGFnZUlkLmpzJztcbmV4cG9ydCB7IGZpbmRDb21taXQsIGZpbmRDb21taXRzLCBmaW5kTGFzdFdyaXRlciB9IGZyb20gJy4vbGliL21lbW9yeS9jb21taXRMb2dVdGlscy5qcyc7XG4iXX0=
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWR2YW5jZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWR2YW5jZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0g7Ozs7Ozs7R0FPRztBQWdCSCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RCxPQUFPLEVBQ0wsZUFBZSxFQUNmLGNBQWMsRUFDZCxjQUFjLEVBQ2Qsb0JBQW9CLEVBQ3BCLGFBQWEsRUFDYixXQUFXLEVBQ1gsY0FBYyxFQUNkLGlCQUFpQixFQUNqQixXQUFXLEdBQ1osTUFBTSx1QkFBdUIsQ0FBQztBQXNCL0IsT0FBTyxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBYTFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxvQkFBb0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RixPQUFPLEVBQ0wsa0JBQWtCLEVBQ2xCLHVCQUF1QixFQUN2QixrQkFBa0IsRUFDbEIsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixtQkFBbUIsRUFDbkIscUJBQXFCLEVBQ3JCLG9CQUFvQixFQUNwQixjQUFjLEdBQ2YsTUFBTSxzQkFBc0IsQ0FBQztBQXdCOUIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFPekQsT0FBTyxFQUNMLFlBQVksRUFDWixnQkFBZ0IsRUFDaEIsZ0JBQWdCLEVBQ2hCLFFBQVEsRUFDUixrQkFBa0IsRUFDbEIsbUJBQW1CLEdBQ3BCLE1BQU0seUJBQXlCLENBQUM7QUFRakMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFtQjFELE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBSTFFLE9BQU8sRUFDTCxrQkFBa0IsRUFDbEIsZ0JBQWdCLEVBQ2hCLGVBQWUsRUFDZixvQkFBb0IsRUFDcEIsd0JBQXdCLEVBQ3hCLGNBQWMsRUFDZCxzQkFBc0IsRUFDdEIsd0JBQXdCLEVBQ3hCLHFCQUFxQixFQUNyQixZQUFZLEVBQ1osdUJBQXVCLEVBQ3ZCLHNCQUFzQixFQUN0QixlQUFlLEVBQ2YsV0FBVyxFQUNYLGVBQWUsR0FDaEIsTUFBTSx1QkFBdUIsQ0FBQztBQUkvQixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsc0JBQXNCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsSCxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogZm9vdHByaW50anMvYWR2YW5jZWQg4oCUIExvdy1sZXZlbCBpbnRlcm5hbHMgZm9yIGN1c3RvbSBleGVjdXRpb24gZW5naW5lcyBhbmQgdGVzdGluZy5cbiAqXG4gKiBNb3N0IHVzZXJzIG5ldmVyIG5lZWQgdGhpcy4gVXNlIGBmb290cHJpbnRqc2AgKG1haW4pIGluc3RlYWQuXG4gKiBUaGlzIGVudHJ5IHBvaW50IGV4cG9zZXMgYFNoYXJlZE1lbW9yeWAsIGBTdGFnZUNvbnRleHRgLCBgRmxvd2NoYXJ0VHJhdmVyc2VyYCxcbiAqIGFuZCBvdGhlciBwcmltaXRpdmVzIHRoYXQgcG93ZXIgdGhlIGVuZ2luZS5cbiAqXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgU2hhcmVkTWVtb3J5LCBTdGFnZUNvbnRleHQgfSBmcm9tICdmb290cHJpbnRqcy9hZHZhbmNlZCc7XG4gKiBgYGBcbiAqXG4gKiBAbW9kdWxlIGFkdmFuY2VkXG4gKi9cbi8qKlxuICogRm9vdFByaW50IOKAlCBBZHZhbmNlZCAvIEludGVybmFsIEFQSVxuICpcbiAqIFRoZXNlIGV4cG9ydHMgYXJlIGZvciBhZHZhbmNlZCB1c2UgY2FzZXMsIHRlc3RpbmcsIGFuZCBidWlsZGluZ1xuICogY3VzdG9tIGV4ZWN1dGlvbiBlbmdpbmVzLiBNb3N0IHVzZXJzIHNob3VsZCB1c2UgdGhlIG1haW4gJ2Zvb3RwcmludCcgZW50cnkgcG9pbnQuXG4gKlxuICogSW1wb3J0IHZpYTogaW1wb3J0IHsgLi4uIH0gZnJvbSAnZm9vdHByaW50L2FkdmFuY2VkJ1xuICovXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE1lbW9yeSDigJQgTG93LWxldmVsIHRyYW5zYWN0aW9uYWwgc3RhdGUgcHJpbWl0aXZlc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgdHlwZSB7XG4gIENvbW1pdEJ1bmRsZSxcbiAgRmxvd0NvbnRyb2xUeXBlLFxuICBGbG93TWVzc2FnZSxcbiAgTWVtb3J5UGF0Y2gsXG4gIFJlYWRTdW1tYXJ5TWFya2VyLFxuICBSZWFkVHJhY2tpbmdNb2RlLFxuICBTdGFnZVNuYXBzaG90LFxuICBUcmFjZUVudHJ5LFxufSBmcm9tICcuL2xpYi9tZW1vcnkvaW5kZXguanMnO1xuZXhwb3J0IHsgU2hhcmVkTWVtb3J5IH0gZnJvbSAnLi9saWIvbWVtb3J5L2luZGV4LmpzJztcbmV4cG9ydCB7IFN0YWdlQ29udGV4dCB9IGZyb20gJy4vbGliL21lbW9yeS9pbmRleC5qcyc7XG5leHBvcnQgeyBFdmVudExvZyB9IGZyb20gJy4vbGliL21lbW9yeS9pbmRleC5qcyc7XG5leHBvcnQgeyBUcmFuc2FjdGlvbkJ1ZmZlciB9IGZyb20gJy4vbGliL21lbW9yeS9pbmRleC5qcyc7XG5leHBvcnQgeyBEaWFnbm9zdGljQ29sbGVjdG9yIH0gZnJvbSAnLi9saWIvbWVtb3J5L2luZGV4LmpzJztcbmV4cG9ydCB7XG4gIGFwcGx5U21hcnRNZXJnZSxcbiAgZGVlcFNtYXJ0TWVyZ2UsXG4gIGdldE5lc3RlZFZhbHVlLFxuICBnZXRSdW5BbmRHbG9iYWxQYXRocyxcbiAgbm9ybWFsaXNlUGF0aCxcbiAgcmVkYWN0UGF0Y2gsXG4gIHNldE5lc3RlZFZhbHVlLFxuICB1cGRhdGVOZXN0ZWRWYWx1ZSxcbiAgdXBkYXRlVmFsdWUsXG59IGZyb20gJy4vbGliL21lbW9yeS9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEJ1aWxkZXIg4oCUIFR5cGVzIGFuZCBpbnRlcm5hbHNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUge1xuICBFeGVjT3B0aW9ucyxcbiAgRmxvd0NoYXJ0T3B0aW9ucyxcbiAgRmxvd0NoYXJ0U3BlYyxcbiAgSUxvZ2dlcixcbiAgU2NvcGVQcm90ZWN0aW9uTW9kZSxcbiAgU2VyaWFsaXplZFBpcGVsaW5lU3RydWN0dXJlLFxuICBTaW1wbGlmaWVkUGFyYWxsZWxTcGVjLFxuICBTdGFnZUZuLFxuICBTdGFnZU5vZGUsXG4gIFN0cmVhbUNhbGxiYWNrLFxuICBTdHJlYW1MaWZlY3ljbGVIYW5kbGVyLFxuICBTdHJlYW1Ub2tlbkhhbmRsZXIsXG4gIFN1YmZsb3dNb3VudE9wdGlvbnMsXG4gIFN1YmZsb3dSZWYsXG59IGZyb20gJy4vbGliL2J1aWxkZXIvaW5kZXguanMnO1xuZXhwb3J0IHsgQXJyYXlNZXJnZU1vZGUsIERlY2lkZXJMaXN0LCBTZWxlY3RvckZuTGlzdCwgc3BlY1RvU3RhZ2VOb2RlIH0gZnJvbSAnLi9saWIvYnVpbGRlci9pbmRleC5qcyc7XG5leHBvcnQgeyBjcmVhdGVUeXBlZFNjb3BlRmFjdG9yeSB9IGZyb20gJy4vbGliL2J1aWxkZXIvdHlwZWRGbG93Q2hhcnQuanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTY29wZSDigJQgUHJvdmlkZXJzLCBwcm90ZWN0aW9uLCByZWNvcmRlciBvcHRpb25zLCBhbmQgZXZlbnQgdHlwZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUge1xuICBQcm92aWRlclJlc29sdmVyLFxuICBSZXNvbHZlT3B0aW9ucyxcbiAgU2NvcGVQcm92aWRlcixcbiAgU3RhZ2VDb250ZXh0TGlrZSxcbiAgU3RyaWN0TW9kZSxcbn0gZnJvbSAnLi9saWIvc2NvcGUvaW5kZXguanMnO1xuZXhwb3J0IHsgY3JlYXRlRXJyb3JNZXNzYWdlLCBjcmVhdGVQcm90ZWN0ZWRTY29wZSwgU2NvcGVGYWNhZGUgfSBmcm9tICcuL2xpYi9zY29wZS9pbmRleC5qcyc7XG5leHBvcnQge1xuICBhdHRhY2hTY29wZU1ldGhvZHMsXG4gIGlzU3ViY2xhc3NPZlNjb3BlRmFjYWRlLFxuICBsb29rc0xpa2VDbGFzc0N0b3IsXG4gIGxvb2tzTGlrZUZhY3RvcnksXG4gIG1ha2VDbGFzc1Byb3ZpZGVyLFxuICBtYWtlRmFjdG9yeVByb3ZpZGVyLFxuICByZWdpc3RlclNjb3BlUmVzb2x2ZXIsXG4gIHJlc29sdmVTY29wZVByb3ZpZGVyLFxuICB0b1Njb3BlRmFjdG9yeSxcbn0gZnJvbSAnLi9saWIvc2NvcGUvaW5kZXguanMnO1xuXG4vLyBTY29wZVJlY29yZGVyIGNvbmZpZy9vcHRpb24gdHlwZXNcbmV4cG9ydCB0eXBlIHtcbiAgQWdncmVnYXRlZE1ldHJpY3MsXG4gIERlYnVnRW50cnksXG4gIERlYnVnUmVjb3JkZXJPcHRpb25zLFxuICBEZWJ1Z1ZlcmJvc2l0eSxcbiAgUmVjb3JkZXJDb250ZXh0LFxuICBTdGFnZUV2ZW50LFxuICBTdGFnZU1ldHJpY3MsXG59IGZyb20gJy4vbGliL3Njb3BlL2luZGV4LmpzJztcbi8vIGBEZWZpbmVTY29wZU9wdGlvbnNgICh6b2Qgc2NvcGUgb3B0aW9ucykgbW92ZWQgdG8gJ2Zvb3RwcmludGpzL3pvZCcuXG5cbi8vIFpvZCBpbnRlcm5hbHMgbW92ZWQgdG8gdGhlIG9wdC1pbiBgZm9vdHByaW50anMvem9kYCBlbnRyeSAoa2VlcHMgem9kIOKAlCBhblxuLy8gb3B0aW9uYWwgcGVlciDigJQgb3V0IG9mIHRoZSBgZm9vdHByaW50anMvYWR2YW5jZWRgIGxvYWQgcGF0aCkuIEltcG9ydFxuLy8gY3JlYXRlU2NvcGVQcm94eUZyb21ab2QgLyBkZWZpbmVTY29wZVNjaGVtYSAvIGlzU2NvcGVTY2hlbWEgLyBab2RTY29wZVJlc29sdmVyXG4vLyBmcm9tICdmb290cHJpbnRqcy96b2QnLlxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBSdW5uZXIg4oCUIEludGVybmFsc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgdHlwZSB7IFJ1bnRpbWVTbmFwc2hvdCB9IGZyb20gJy4vbGliL3J1bm5lci9pbmRleC5qcyc7XG5leHBvcnQgeyBFeGVjdXRpb25SdW50aW1lIH0gZnJvbSAnLi9saWIvcnVubmVyL2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUmVhY3RpdmUg4oCUIFR5cGVkU2NvcGUgaW50ZXJuYWxzIChmb3IgY3VzdG9tIHByb3h5IGltcGxlbWVudGF0aW9ucylcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUgeyBSZWFjdGl2ZU9wdGlvbnMsIFJlYWN0aXZlVGFyZ2V0IH0gZnJvbSAnLi9saWIvcmVhY3RpdmUvaW5kZXguanMnO1xuZXhwb3J0IHtcbiAgQlJFQUtfU0VUVEVSLFxuICBidWlsZE5lc3RlZFBhdGNoLFxuICBjcmVhdGVBcnJheVByb3h5LFxuICBqb2luUGF0aCxcbiAgU0NPUEVfTUVUSE9EX05BTUVTLFxuICBzaG91bGRXcmFwV2l0aFByb3h5LFxufSBmcm9tICcuL2xpYi9yZWFjdGl2ZS9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEVuZ2luZSDigJQgREZTIGdyYXBoIHRyYXZlcnNhbCBpbnRlcm5hbHNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUgeyBUcmF2ZXJzZXJPcHRpb25zIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcbmV4cG9ydCB0eXBlIHsgRGVjaWRlciB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5leHBvcnQgeyBGbG93Y2hhcnRUcmF2ZXJzZXIgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuZXhwb3J0IHsgaXNTdGFnZU5vZGVSZXR1cm4gfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vLyBOYXJyYXRpdmUgaW50ZXJuYWxzXG5leHBvcnQgdHlwZSB7IElDb250cm9sRmxvd05hcnJhdGl2ZSB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5leHBvcnQgdHlwZSB7IENvbWJpbmVkTmFycmF0aXZlRW50cnksIENvbWJpbmVkTmFycmF0aXZlT3B0aW9ucyB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5leHBvcnQgdHlwZSB7XG4gIEJyYW5jaFJlc3VsdCxcbiAgQnJhbmNoUmVzdWx0cyxcbiAgU2VyaWFsaXplZFBpcGVsaW5lU3RydWN0dXJlIGFzIEVuZ2luZVNlcmlhbGl6ZWRQaXBlbGluZVN0cnVjdHVyZSxcbiAgSGFuZGxlckRlcHMsXG4gIElFeGVjdXRpb25SdW50aW1lLFxuICBOb2RlUmVzdWx0VHlwZSxcbiAgUnVudGltZVN0cnVjdHVyZU1ldGFkYXRhLFxuICBTY29wZUZhY3RvcnksXG4gIFNlcmlhbGl6ZWRQaXBlbGluZU5vZGUsXG4gIFN0YWdlRnVuY3Rpb24sXG4gIFN1YmZsb3dSZXN1bHQsXG4gIFRyYXZlcnNhbFJlc3VsdCxcbn0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcbmV4cG9ydCB7IE51bGxDb250cm9sRmxvd05hcnJhdGl2ZUdlbmVyYXRvciB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8vIEhhbmRsZXJzICh0ZXN0aW5nIC8gY3VzdG9tIGVuZ2luZXMpXG5leHBvcnQgdHlwZSB7IEV4ZWN1dGVOb2RlRm4sIFJ1blN0YWdlRm4gfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuZXhwb3J0IHtcbiAgYXBwbHlPdXRwdXRNYXBwaW5nLFxuICBDaGlsZHJlbkV4ZWN1dG9yLFxuICBjb21wdXRlTm9kZVR5cGUsXG4gIENvbnRpbnVhdGlvblJlc29sdmVyLFxuICBjcmVhdGVTdWJmbG93SGFuZGxlckRlcHMsXG4gIERlY2lkZXJIYW5kbGVyLFxuICBERUZBVUxUX01BWF9JVEVSQVRJT05TLFxuICBleHRyYWN0UGFyZW50U2NvcGVWYWx1ZXMsXG4gIGdldEluaXRpYWxTY29wZVZhbHVlcyxcbiAgTm9kZVJlc29sdmVyLFxuICBSdW50aW1lU3RydWN0dXJlTWFuYWdlcixcbiAgc2VlZFN1YmZsb3dHbG9iYWxTdG9yZSxcbiAgU2VsZWN0b3JIYW5kbGVyLFxuICBTdGFnZVJ1bm5lcixcbiAgU3ViZmxvd0V4ZWN1dG9yLFxufSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vLyBUcmFjZSB1dGlsaXRpZXMg4oCUIHJlLWV4cG9ydGVkIGhlcmUgZm9yIGNvbnZlbmllbmNlLiBDYW5vbmljYWwgcGF0aDogJ2Zvb3RwcmludGpzL3RyYWNlJ1xuZXhwb3J0IHR5cGUgeyBFeGVjdXRpb25Db3VudGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL3J1bnRpbWVTdGFnZUlkLmpzJztcbmV4cG9ydCB7IGJ1aWxkUnVudGltZVN0YWdlSWQsIGNyZWF0ZUV4ZWN1dGlvbkNvdW50ZXIsIHBhcnNlUnVudGltZVN0YWdlSWQgfSBmcm9tICcuL2xpYi9lbmdpbmUvcnVudGltZVN0YWdlSWQuanMnO1xuZXhwb3J0IHsgZmluZENvbW1pdCwgZmluZENvbW1pdHMsIGZpbmRMYXN0V3JpdGVyIH0gZnJvbSAnLi9saWIvbWVtb3J5L2NvbW1pdExvZ1V0aWxzLmpzJztcbiJdfQ==
package/dist/esm/index.js CHANGED
@@ -81,4 +81,4 @@ export { disableDevMode, enableDevMode, isDevMode } from './lib/scope/detectCirc
81
81
  // `defineScopeFromZod` and the other zod-based scope helpers moved to the opt-in
82
82
  // `footprintjs/zod` entry — keeping zod out of the core load path (it is an
83
83
  // optional peer). Import them from 'footprintjs/zod'.
84
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFTSCw0QkFBNEI7QUFDNUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBbUJ4Riw0QkFBNEI7QUFDNUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBbUIzQyxtQ0FBbUM7QUFDbkMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQVl2RCxvQkFBb0I7QUFDcEIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFMUQsb0JBQW9CO0FBQ3BCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQXFCbkQsK0JBQStCO0FBQy9CLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV0RCwrQkFBK0I7QUFDL0IsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXJELG9DQUFvQztBQUNwQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUk1RCxxRUFBcUU7QUFDckUsT0FBTyxFQUNMLHNCQUFzQixFQUN0QixzQkFBc0IsRUFDdEIsa0JBQWtCLEVBQ2xCLFdBQVcsR0FDWixNQUFNLHlCQUF5QixDQUFDO0FBZ0RqQywrQkFBK0I7QUFDL0IsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFLOUQsK0JBQStCO0FBQy9CLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTdELCtCQUErQjtBQUMvQixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV0RSwrQkFBK0I7QUFDL0IsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFdkUsK0JBQStCO0FBQy9CLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXpFLCtCQUErQjtBQUMvQixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVqRSwrQkFBK0I7QUFDL0IsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFdEUsK0JBQStCO0FBQy9CLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXBFLCtCQUErQjtBQUMvQixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQXlCdEUsdUNBQXVDO0FBQ3ZDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTdFLCtFQUErRTtBQUMvRSw0RUFBNEU7QUFDNUUsK0VBQStFO0FBRS9FLDhCQUE4QjtBQUM5QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQThCNUQsc0NBQXNDO0FBQ3RDLE9BQU8sRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTNFLHNDQUFzQztBQUN0QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUscUJBQXFCLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFTckcsZ0NBQWdDO0FBQ2hDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUUxRSwrRUFBK0U7QUFDL0UsaURBQWlEO0FBQ2pELCtFQUErRTtBQUUvRTs7Ozs7Ozs7Ozs7R0FXRztBQUNILE9BQU8sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRXpGLGlGQUFpRjtBQUNqRiw0RUFBNEU7QUFDNUUsc0RBQXNEIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBGb290UHJpbnQg4oCUIFB1YmxpYyBBUEkgKHYzKVxuICpcbiAqIFRoZSBmbG93Y2hhcnQgcGF0dGVybiBmb3IgYmFja2VuZCBjb2RlLlxuICogQnVpbGQg4oaSIFJ1biDihpIgT2JzZXJ2ZS5cbiAqXG4gKiAqKlRocmVlIGltcG9ydCBwYXRoczoqKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IGZsb3dDaGFydCwgZGVjaWRlLCBuYXJyYXRpdmUgfSBmcm9tICdmb290cHJpbnRqcyc7ICAgICAgICAgICAvLyBtYWluIOKAlCBzdGFydCBoZXJlXG4gKiBpbXBvcnQgeyBtZXRyaWNzLCBkZWJ1ZywgbWFuaWZlc3QgfSAgICAgZnJvbSAnZm9vdHByaW50anMvcmVjb3JkZXJzJzsgLy8gcmVjb3JkZXIgZmFjdG9yaWVzXG4gKiBpbXBvcnQgeyBTaGFyZWRNZW1vcnksIFN0YWdlQ29udGV4dCB9ICAgZnJvbSAnZm9vdHByaW50anMvYWR2YW5jZWQnOyAgLy8gaW50ZXJuYWxzXG4gKiBgYGBcbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUXVpY2sgU3RhcnQg4oCUIEV2ZXJ5dGhpbmcgeW91IG5lZWQgZm9yIDkwJSBvZiB1c2UgY2FzZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqIEBjYXRlZ29yeSBRdWljayBTdGFydCAqL1xuZXhwb3J0IHR5cGUgeyBGbG93Q2hhcnQsIFN0YWdlRnVuY3Rpb24gYXMgU3RhZ2VIYW5kbGVyLCBTdHJlYW1IYW5kbGVycyB9IGZyb20gJy4vbGliL2J1aWxkZXIvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IFF1aWNrIFN0YXJ0ICovXG5leHBvcnQgeyBmbG93Q2hhcnQsIEZsb3dDaGFydEJ1aWxkZXIsIGZsb3dDaGFydFNlbGVjdG9yIH0gZnJvbSAnLi9saWIvYnVpbGRlci9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgUXVpY2sgU3RhcnQg4oCUIGJ1aWxkLXRpbWUgb2JzZXJ2ZXIgKHR3aW4gb2YgRmxvd1JlY29yZGVyKSAqL1xuZXhwb3J0IHR5cGUge1xuICBTdHJ1Y3R1cmVEZWNpZGVyQ29tcGxldGVFdmVudCxcbiAgU3RydWN0dXJlRWRnZUFkZGVkRXZlbnQsXG4gIFN0cnVjdHVyZUVkZ2VLaW5kLFxuICBTdHJ1Y3R1cmVMb29wRWRnZUFkZGVkRXZlbnQsXG4gIFN0cnVjdHVyZVJlY29yZGVyLFxuICBTdHJ1Y3R1cmVTdGFnZUFkZGVkRXZlbnQsXG4gIFN0cnVjdHVyZVN1YmZsb3dNb3VudGVkRXZlbnQsXG59IGZyb20gJy4vbGliL2J1aWxkZXIvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IFF1aWNrIFN0YXJ0ICovXG5leHBvcnQgdHlwZSB7IFR5cGVkU3RhZ2VGdW5jdGlvbiB9IGZyb20gJy4vbGliL2J1aWxkZXIvdHlwZWRGbG93Q2hhcnQuanMnO1xuXG4vKiogQGNhdGVnb3J5IFF1aWNrIFN0YXJ0ICovXG5leHBvcnQgdHlwZSB7IFNjb3BlTWV0aG9kcywgVHlwZWRTY29wZSB9IGZyb20gJy4vbGliL3JlYWN0aXZlL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBRdWljayBTdGFydCAqL1xuZXhwb3J0IHsgbmFycmF0aXZlIH0gZnJvbSAnLi9yZWNvcmRlcnMuanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEZWNpc2lvbiBCcmFuY2hpbmcg4oCUIGRlY2lkZSgpIC8gc2VsZWN0KCkgd2l0aCBldmlkZW5jZSBjYXB0dXJlXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKiBAY2F0ZWdvcnkgRGVjaXNpb24gQnJhbmNoaW5nICovXG5leHBvcnQgdHlwZSB7XG4gIERlY2lkZVJ1bGUsXG4gIERlY2lzaW9uRXZpZGVuY2UsXG4gIERlY2lzaW9uUmVzdWx0LFxuICBGaWx0ZXJPcHMsXG4gIFJ1bGVFdmlkZW5jZSxcbiAgU2VsZWN0aW9uRXZpZGVuY2UsXG4gIFNlbGVjdGlvblJlc3VsdCxcbiAgV2hlbkNsYXVzZSxcbiAgV2hlcmVGaWx0ZXIsXG59IGZyb20gJy4vbGliL2RlY2lkZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgRGVjaXNpb24gQnJhbmNoaW5nICovXG5leHBvcnQgeyBkZWNpZGUsIHNlbGVjdCB9IGZyb20gJy4vbGliL2RlY2lkZS9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFJ1biDigJQgRXhlY3V0ZSBjaGFydHMgYW5kIGNvbGxlY3QgcmVzdWx0c1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKiogQGNhdGVnb3J5IFJ1biAqL1xuZXhwb3J0IHR5cGUgeyBSdW5SZXN1bHQgfSBmcm9tICcuL2xpYi9ydW5uZXIvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IFJ1biAqL1xuZXhwb3J0IHR5cGUgeyBGbG93Q2hhcnRFeGVjdXRvck9wdGlvbnMgfSBmcm9tICcuL2xpYi9ydW5uZXIvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IFJ1biAqL1xuZXhwb3J0IHsgRmxvd0NoYXJ0RXhlY3V0b3IgfSBmcm9tICcuL2xpYi9ydW5uZXIvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IFJ1biAqL1xuZXhwb3J0IHsgUnVuQ29udGV4dCB9IGZyb20gJy4vbGliL3J1bm5lci9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgUnVuICovXG5leHBvcnQgdHlwZSB7IENoYXJ0T3BlbkFQSU9wdGlvbnMsIE1DUFRvb2xEZXNjcmlwdGlvbiwgUnVubmFibGVGbG93Q2hhcnQgfSBmcm9tICcuL2xpYi9ydW5uZXIvUnVubmFibGVDaGFydC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE9ic2VydmUg4oCUIERhdGEgKHNjb3BlIHJlY29yZGVycywgZmlyZSBkdXJpbmcgc3RhZ2UgZXhlY3V0aW9uKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIERhdGEgKi9cbmV4cG9ydCB0eXBlIHtcbiAgQ29tbWl0RXZlbnQsXG4gIEVycm9yRXZlbnQsXG4gIFJlYWRFdmVudCxcbiAgUmVkYWN0aW9uUG9saWN5LFxuICBSZWRhY3Rpb25SZXBvcnQsXG4gIFNjb3BlUmVjb3JkZXIsXG4gIFN0YWdlRXZlbnQsXG4gIFdyaXRlRXZlbnQsXG59IGZyb20gJy4vbGliL3Njb3BlL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBEYXRhICovXG5leHBvcnQgeyBNZXRyaWNSZWNvcmRlciB9IGZyb20gJy4vbGliL3Njb3BlL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBEYXRhICovXG5leHBvcnQgeyBEZWJ1Z1JlY29yZGVyIH0gZnJvbSAnLi9saWIvc2NvcGUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIE9wZXJhdGlvbiAqL1xuZXhwb3J0IHsgUmVjb3JkZXJPcGVyYXRpb24gfSBmcm9tICcuL2xpYi9yZWNvcmRlci9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgQ29tYmluZWQgKGJvdGggZGF0YS1mbG93IGFuZCBjb250cm9sLWZsb3cpICovXG5leHBvcnQgdHlwZSB7IENvbWJpbmVkUmVjb3JkZXIgfSBmcm9tICcuL2xpYi9yZWNvcmRlci9pbmRleC5qcyc7XG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIENvbWJpbmVkIChib3RoIGRhdGEtZmxvdyBhbmQgY29udHJvbC1mbG93KSAqL1xuZXhwb3J0IHtcbiAgaGFzRW1pdFJlY29yZGVyTWV0aG9kcyxcbiAgaGFzRmxvd1JlY29yZGVyTWV0aG9kcyxcbiAgaGFzUmVjb3JkZXJNZXRob2RzLFxuICBpc0Zsb3dFdmVudCxcbn0gZnJvbSAnLi9saWIvcmVjb3JkZXIvaW5kZXguanMnO1xuXG4vKipcbiAqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBFbWl0ICh1c2VyLWF1dGhvcmVkIHN0cnVjdHVyZWQgZXZlbnRzKVxuICpcbiAqIFRoaXJkIG9ic2VydmVyIGNoYW5uZWwgKGFsb25nc2lkZSBgU2NvcGVSZWNvcmRlcmAgYW5kIGBGbG93UmVjb3JkZXJgKS4gQ29uc3VtZXJcbiAqIGNvZGUgY2FsbHMgYHNjb3BlLiRlbWl0KG5hbWUsIHBheWxvYWQpYCBmcm9tIGluc2lkZSBhIHN0YWdlOyBldmVyeSBhdHRhY2hlZFxuICogYEVtaXRSZWNvcmRlci5vbkVtaXQoZXZlbnQpYCBmaXJlcyBzeW5jaHJvbm91c2x5IHdpdGggc3RhZ2UtY29udGV4dFxuICogZW5yaWNobWVudC4gUGFzcy10aHJvdWdoIOKAlCBubyBidWZmZXJpbmcsIHplcm8gYWxsb2NhdGlvbiB3aGVuIG5vIHJlY29yZGVyXG4gKiBpcyBhdHRhY2hlZC5cbiAqL1xuZXhwb3J0IHR5cGUgeyBFbWl0RXZlbnQsIEVtaXRSZWNvcmRlciB9IGZyb20gJy4vbGliL3JlY29yZGVyL2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gT2JzZXJ2ZSDigJQgRmxvdyAoRmxvd1JlY29yZGVyLCBmaXJlcyBhZnRlciBzdGFnZSBleGVjdXRpb24pXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRmxvdyAqL1xuZXhwb3J0IHR5cGUge1xuICBGbG93QnJlYWtFdmVudCxcbiAgRmxvd0RlY2lzaW9uRXZlbnQsXG4gIEZsb3dFcnJvckV2ZW50LFxuICBGbG93Rm9ya0V2ZW50LFxuICBGbG93TG9vcEV2ZW50LFxuICBGbG93TmV4dEV2ZW50LFxuICBGbG93UmVjb3JkZXIsXG4gIEZsb3dSdW5FdmVudCxcbiAgRmxvd1J1bkZhaWxlZEV2ZW50LFxuICBGbG93U2VsZWN0ZWRFdmVudCxcbiAgRmxvd1N0YWdlRXZlbnQsXG4gIEZsb3dTdWJmbG93RXZlbnQsXG4gIEZsb3dTdWJmbG93UmVnaXN0ZXJlZEV2ZW50LFxuICBUcmF2ZXJzYWxDb250ZXh0LFxufSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEZsb3cgKi9cbmV4cG9ydCB0eXBlIHsgQ29tYmluZWROYXJyYXRpdmVFbnRyeSB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKlxuICogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEZsb3dcbiAqXG4gKiBgTmFycmF0aXZlRm9ybWF0dGVyYCDigJQgcGx1Z2dhYmxlIGZvcm1hdHRlciB0aGF0IGNvbnZlcnRzIGV2ZW50IGNvbnRleHRcbiAqIG9iamVjdHMgaW50byB0aGUgdGV4dCBsaW5lcyBvZiB0aGUgbmFycmF0aXZlLiBQcmVmZXIgdGhpcyBuYW1lIGluIG5ld1xuICogY29kZTsgYE5hcnJhdGl2ZVJlbmRlcmVyYCBpcyBhIGRlcHJlY2F0ZWQgYWxpYXMgdGhhdCB3aWxsIGJlIHJlbW92ZWQgaW5cbiAqIHRoZSBuZXh0IG1ham9yIHJlbGVhc2UuXG4gKi9cbmV4cG9ydCB0eXBlIHsgTmFycmF0aXZlRm9ybWF0dGVyLCBOYXJyYXRpdmVSZW5kZXJlciB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRmxvdyAqL1xuZXhwb3J0IHsgTmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBGbG93ICovXG5leHBvcnQgdHlwZSB7IE1hbmlmZXN0RW50cnkgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEZsb3cgKi9cbmV4cG9ydCB7IE1hbmlmZXN0Rmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBGbG93ICovXG5leHBvcnQgeyBBZGFwdGl2ZU5hcnJhdGl2ZUZsb3dSZWNvcmRlciB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRmxvdyAqL1xuZXhwb3J0IHsgTWlsZXN0b25lTmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBGbG93ICovXG5leHBvcnQgeyBQcm9ncmVzc2l2ZU5hcnJhdGl2ZUZsb3dSZWNvcmRlciB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRmxvdyAqL1xuZXhwb3J0IHsgUkxFTmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBGbG93ICovXG5leHBvcnQgeyBTZXBhcmF0ZU5hcnJhdGl2ZUZsb3dSZWNvcmRlciB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRmxvdyAqL1xuZXhwb3J0IHsgU2lsZW50TmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBGbG93ICovXG5leHBvcnQgeyBXaW5kb3dlZE5hcnJhdGl2ZUZsb3dSZWNvcmRlciB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNlbGYtRGVzY3JpYmluZyDigJQgLmNvbnRyYWN0KCksIHRvT3BlbkFQSSgpLCB0b01DUFRvb2woKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKiogQGNhdGVnb3J5IFNlbGYtRGVzY3JpYmluZyAqL1xuZXhwb3J0IHR5cGUge1xuICBGbG93Q2hhcnRDb250cmFjdCxcbiAgRmxvd0NoYXJ0Q29udHJhY3RPcHRpb25zLFxuICBKc29uU2NoZW1hLFxuICBPcGVuQVBJT3B0aW9ucyxcbiAgT3BlbkFQSVNwZWMsXG59IGZyb20gJy4vbGliL2NvbnRyYWN0L2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU25hcHNob3QgJiBDb21wb3NpdGlvbiDigJQgU3ViZmxvdyBuYXZpZ2F0aW9uIGFuZCBDb21wb3NhYmxlUnVubmVyXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKiBAY2F0ZWdvcnkgU25hcHNob3QgJiBDb21wb3NpdGlvbiAqL1xuZXhwb3J0IHR5cGUgeyBDb21wb3NhYmxlUnVubmVyIH0gZnJvbSAnLi9saWIvcnVubmVyL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBTbmFwc2hvdCAmIENvbXBvc2l0aW9uICovXG5leHBvcnQgdHlwZSB7IFJlY29yZGVyU25hcHNob3QsIFJ1bnRpbWVTbmFwc2hvdCwgU3VidHJlZVNuYXBzaG90IH0gZnJvbSAnLi9saWIvcnVubmVyL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBTbmFwc2hvdCAmIENvbXBvc2l0aW9uICovXG5leHBvcnQgeyBnZXRTdWJ0cmVlU25hcHNob3QsIGxpc3RTdWJmbG93UGF0aHMgfSBmcm9tICcuL2xpYi9ydW5uZXIvaW5kZXguanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTY29wZVJlY29yZGVyIENvbXBvc2l0aW9uIOKAlCBCdW5kbGUgbXVsdGlwbGUgcmVjb3JkZXJzIGludG8gZG9tYWluIHByZXNldHNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqIEBjYXRlZ29yeSBTY29wZVJlY29yZGVyICovXG5leHBvcnQgeyBDb21wb3NpdGVSZWNvcmRlciB9IGZyb20gJy4vbGliL3JlY29yZGVyL2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUGF1c2UvUmVzdW1lIOKAlCBTZXJpYWxpemFibGUgY2hlY2twb2ludHMgZm9yIGxvbmctcnVubmluZyBvciBodW1hbi1pbi10aGUtbG9vcCBmbG93c1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKiogQGNhdGVnb3J5IFBhdXNlL1Jlc3VtZSAqL1xuLyoqIEBjYXRlZ29yeSBQYXVzZS9SZXN1bWUgKi9cbmV4cG9ydCB0eXBlIHsgRmxvd2NoYXJ0Q2hlY2twb2ludCwgUGF1c2FibGVIYW5kbGVyIH0gZnJvbSAnLi9saWIvcGF1c2UvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IFNjb3BlUmVjb3JkZXIgKi9cbmV4cG9ydCB0eXBlIHsgQ29tcG9zaXRlU25hcHNob3QgfSBmcm9tICcuL2xpYi9yZWNvcmRlci9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENvbmZpZ3VyYXRpb24g4oCUIFR5cGVzIHBhc3NlZCB0byBGbG93Q2hhcnRFeGVjdXRvciBhbmQgcnVuKClcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqIEBjYXRlZ29yeSBDb25maWd1cmF0aW9uICovXG5leHBvcnQgdHlwZSB7IEV4ZWN1dGlvbkVudiwgRXhlY3V0b3JSZXN1bHQsIFBhdXNlZFJlc3VsdCwgUnVuT3B0aW9ucyB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgQ29uZmlndXJhdGlvbiAqL1xuZXhwb3J0IHR5cGUgeyBTY29wZUZhY3RvcnkgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDb250cmFjdCAmIFZhbGlkYXRpb25cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqIEBjYXRlZ29yeSBDb250cmFjdCAmIFZhbGlkYXRpb24gKi9cbmV4cG9ydCB0eXBlIHsgU2NoZW1hS2luZCwgVmFsaWRhdGlvbklzc3VlLCBWYWxpZGF0aW9uUmVzdWx0IH0gZnJvbSAnLi9saWIvc2NoZW1hL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBDb250cmFjdCAmIFZhbGlkYXRpb24gKi9cbmV4cG9ydCB7IGRldGVjdFNjaGVtYSwgaXNWYWxpZGF0YWJsZSwgaXNab2QgfSBmcm9tICcuL2xpYi9zY2hlbWEvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IENvbnRyYWN0ICYgVmFsaWRhdGlvbiAqL1xuZXhwb3J0IHsgSW5wdXRWYWxpZGF0aW9uRXJyb3IsIHZhbGlkYXRlQWdhaW5zdFNjaGVtYSwgdmFsaWRhdGVPclRocm93IH0gZnJvbSAnLi9saWIvc2NoZW1hL2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRXJyb3IgVXRpbGl0aWVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKiBAY2F0ZWdvcnkgRXJyb3IgVXRpbGl0aWVzICovXG5leHBvcnQgdHlwZSB7IFN0cnVjdHVyZWRFcnJvckluZm8gfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IEVycm9yIFV0aWxpdGllcyAqL1xuZXhwb3J0IHsgZXh0cmFjdEVycm9ySW5mbywgZm9ybWF0RXJyb3JJbmZvIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRGV2IFRvb2xzIOKAlCBNb2RlIGZsYWdzIGFuZCBab2Qgc2NvcGUgdXRpbGl0aWVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogQGNhdGVnb3J5IERldiBUb29sc1xuICpcbiAqIEdsb2JhbCBkZXYtbW9kZSBmbGFnLiBDYWxsIGBlbmFibGVEZXZNb2RlKClgIGF0IGFwcGxpY2F0aW9uIHN0YXJ0dXAgdG9cbiAqIHR1cm4gb24gZGV2ZWxvcGVyLW9ubHkgZGlhZ25vc3RpY3MgYWNyb3NzIHRoZSBsaWJyYXJ5IOKAlCBjaXJjdWxhci1yZWZlcmVuY2VcbiAqIGRldGVjdGlvbiBpbiBzY29wZSB3cml0ZXMsIHdhcm5pbmdzIHdoZW4gYSByZWNvcmRlciBoYXMgbm8gb2JzZXJ2ZXJcbiAqIG1ldGhvZHMsIHN1c3BpY2lvdXMtcHJlZGljYXRlIHdhcm5pbmdzIGluIGRlY2lkZS9zZWxlY3QsIHN0cnVjdHVyYWxcbiAqIGNoZWNrcyBpbiBgZ2V0U3VidHJlZVNuYXBzaG90YCwgYW5kIGFueSBmdXR1cmUgZGV2LW9ubHkgZGlhZ25vc3RpYy5cbiAqXG4gKiBQcm9kdWN0aW9uIGxlYXZlcyBpdCBPRkYgYnkgZGVmYXVsdCAoemVybyBvdmVyaGVhZCkuIFNlZSB0aGUgSlNEb2Mgb25cbiAqIGBlbmFibGVEZXZNb2RlYCBmb3IgdGhlIGZ1bGwgbGlzdCBhbmQgdXNhZ2UgZXhhbXBsZS5cbiAqL1xuZXhwb3J0IHsgZGlzYWJsZURldk1vZGUsIGVuYWJsZURldk1vZGUsIGlzRGV2TW9kZSB9IGZyb20gJy4vbGliL3Njb3BlL2RldGVjdENpcmN1bGFyLmpzJztcblxuLy8gYGRlZmluZVNjb3BlRnJvbVpvZGAgYW5kIHRoZSBvdGhlciB6b2QtYmFzZWQgc2NvcGUgaGVscGVycyBtb3ZlZCB0byB0aGUgb3B0LWluXG4vLyBgZm9vdHByaW50anMvem9kYCBlbnRyeSDigJQga2VlcGluZyB6b2Qgb3V0IG9mIHRoZSBjb3JlIGxvYWQgcGF0aCAoaXQgaXMgYW5cbi8vIG9wdGlvbmFsIHBlZXIpLiBJbXBvcnQgdGhlbSBmcm9tICdmb290cHJpbnRqcy96b2QnLlxuIl19
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFTSCw0QkFBNEI7QUFDNUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBbUJ4Riw0QkFBNEI7QUFDNUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBbUIzQyxtQ0FBbUM7QUFDbkMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQVl2RCxvQkFBb0I7QUFDcEIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFMUQsb0JBQW9CO0FBQ3BCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQXFCbkQsK0JBQStCO0FBQy9CLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV0RCwrQkFBK0I7QUFDL0IsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXJELG9DQUFvQztBQUNwQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUk1RCxxRUFBcUU7QUFDckUsT0FBTyxFQUNMLHNCQUFzQixFQUN0QixzQkFBc0IsRUFDdEIsa0JBQWtCLEVBQ2xCLFdBQVcsR0FDWixNQUFNLHlCQUF5QixDQUFDO0FBZ0RqQywrQkFBK0I7QUFDL0IsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFLOUQsK0JBQStCO0FBQy9CLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTdELCtCQUErQjtBQUMvQixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV0RSwrQkFBK0I7QUFDL0IsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFdkUsK0JBQStCO0FBQy9CLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXpFLCtCQUErQjtBQUMvQixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVqRSwrQkFBK0I7QUFDL0IsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFdEUsK0JBQStCO0FBQy9CLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXBFLCtCQUErQjtBQUMvQixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQXlCdEUsdUNBQXVDO0FBQ3ZDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTdFLCtFQUErRTtBQUMvRSw0RUFBNEU7QUFDNUUsK0VBQStFO0FBRS9FLDhCQUE4QjtBQUM5QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQXlDNUQsc0NBQXNDO0FBQ3RDLE9BQU8sRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTNFLHNDQUFzQztBQUN0QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUscUJBQXFCLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFTckcsZ0NBQWdDO0FBQ2hDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUUxRSwrRUFBK0U7QUFDL0UsaURBQWlEO0FBQ2pELCtFQUErRTtBQUUvRTs7Ozs7Ozs7Ozs7R0FXRztBQUNILE9BQU8sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRXpGLGlGQUFpRjtBQUNqRiw0RUFBNEU7QUFDNUUsc0RBQXNEIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBGb290UHJpbnQg4oCUIFB1YmxpYyBBUEkgKHYzKVxuICpcbiAqIFRoZSBmbG93Y2hhcnQgcGF0dGVybiBmb3IgYmFja2VuZCBjb2RlLlxuICogQnVpbGQg4oaSIFJ1biDihpIgT2JzZXJ2ZS5cbiAqXG4gKiAqKlRocmVlIGltcG9ydCBwYXRoczoqKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IGZsb3dDaGFydCwgZGVjaWRlLCBuYXJyYXRpdmUgfSBmcm9tICdmb290cHJpbnRqcyc7ICAgICAgICAgICAvLyBtYWluIOKAlCBzdGFydCBoZXJlXG4gKiBpbXBvcnQgeyBtZXRyaWNzLCBkZWJ1ZywgbWFuaWZlc3QgfSAgICAgZnJvbSAnZm9vdHByaW50anMvcmVjb3JkZXJzJzsgLy8gcmVjb3JkZXIgZmFjdG9yaWVzXG4gKiBpbXBvcnQgeyBTaGFyZWRNZW1vcnksIFN0YWdlQ29udGV4dCB9ICAgZnJvbSAnZm9vdHByaW50anMvYWR2YW5jZWQnOyAgLy8gaW50ZXJuYWxzXG4gKiBgYGBcbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUXVpY2sgU3RhcnQg4oCUIEV2ZXJ5dGhpbmcgeW91IG5lZWQgZm9yIDkwJSBvZiB1c2UgY2FzZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqIEBjYXRlZ29yeSBRdWljayBTdGFydCAqL1xuZXhwb3J0IHR5cGUgeyBGbG93Q2hhcnQsIFN0YWdlRnVuY3Rpb24gYXMgU3RhZ2VIYW5kbGVyLCBTdHJlYW1IYW5kbGVycyB9IGZyb20gJy4vbGliL2J1aWxkZXIvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IFF1aWNrIFN0YXJ0ICovXG5leHBvcnQgeyBmbG93Q2hhcnQsIEZsb3dDaGFydEJ1aWxkZXIsIGZsb3dDaGFydFNlbGVjdG9yIH0gZnJvbSAnLi9saWIvYnVpbGRlci9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgUXVpY2sgU3RhcnQg4oCUIGJ1aWxkLXRpbWUgb2JzZXJ2ZXIgKHR3aW4gb2YgRmxvd1JlY29yZGVyKSAqL1xuZXhwb3J0IHR5cGUge1xuICBTdHJ1Y3R1cmVEZWNpZGVyQ29tcGxldGVFdmVudCxcbiAgU3RydWN0dXJlRWRnZUFkZGVkRXZlbnQsXG4gIFN0cnVjdHVyZUVkZ2VLaW5kLFxuICBTdHJ1Y3R1cmVMb29wRWRnZUFkZGVkRXZlbnQsXG4gIFN0cnVjdHVyZVJlY29yZGVyLFxuICBTdHJ1Y3R1cmVTdGFnZUFkZGVkRXZlbnQsXG4gIFN0cnVjdHVyZVN1YmZsb3dNb3VudGVkRXZlbnQsXG59IGZyb20gJy4vbGliL2J1aWxkZXIvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IFF1aWNrIFN0YXJ0ICovXG5leHBvcnQgdHlwZSB7IFR5cGVkU3RhZ2VGdW5jdGlvbiB9IGZyb20gJy4vbGliL2J1aWxkZXIvdHlwZWRGbG93Q2hhcnQuanMnO1xuXG4vKiogQGNhdGVnb3J5IFF1aWNrIFN0YXJ0ICovXG5leHBvcnQgdHlwZSB7IFNjb3BlTWV0aG9kcywgVHlwZWRTY29wZSB9IGZyb20gJy4vbGliL3JlYWN0aXZlL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBRdWljayBTdGFydCAqL1xuZXhwb3J0IHsgbmFycmF0aXZlIH0gZnJvbSAnLi9yZWNvcmRlcnMuanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEZWNpc2lvbiBCcmFuY2hpbmcg4oCUIGRlY2lkZSgpIC8gc2VsZWN0KCkgd2l0aCBldmlkZW5jZSBjYXB0dXJlXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKiBAY2F0ZWdvcnkgRGVjaXNpb24gQnJhbmNoaW5nICovXG5leHBvcnQgdHlwZSB7XG4gIERlY2lkZVJ1bGUsXG4gIERlY2lzaW9uRXZpZGVuY2UsXG4gIERlY2lzaW9uUmVzdWx0LFxuICBGaWx0ZXJPcHMsXG4gIFJ1bGVFdmlkZW5jZSxcbiAgU2VsZWN0aW9uRXZpZGVuY2UsXG4gIFNlbGVjdGlvblJlc3VsdCxcbiAgV2hlbkNsYXVzZSxcbiAgV2hlcmVGaWx0ZXIsXG59IGZyb20gJy4vbGliL2RlY2lkZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgRGVjaXNpb24gQnJhbmNoaW5nICovXG5leHBvcnQgeyBkZWNpZGUsIHNlbGVjdCB9IGZyb20gJy4vbGliL2RlY2lkZS9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFJ1biDigJQgRXhlY3V0ZSBjaGFydHMgYW5kIGNvbGxlY3QgcmVzdWx0c1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKiogQGNhdGVnb3J5IFJ1biAqL1xuZXhwb3J0IHR5cGUgeyBSdW5SZXN1bHQgfSBmcm9tICcuL2xpYi9ydW5uZXIvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IFJ1biAqL1xuZXhwb3J0IHR5cGUgeyBGbG93Q2hhcnRFeGVjdXRvck9wdGlvbnMgfSBmcm9tICcuL2xpYi9ydW5uZXIvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IFJ1biAqL1xuZXhwb3J0IHsgRmxvd0NoYXJ0RXhlY3V0b3IgfSBmcm9tICcuL2xpYi9ydW5uZXIvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IFJ1biAqL1xuZXhwb3J0IHsgUnVuQ29udGV4dCB9IGZyb20gJy4vbGliL3J1bm5lci9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgUnVuICovXG5leHBvcnQgdHlwZSB7IENoYXJ0T3BlbkFQSU9wdGlvbnMsIE1DUFRvb2xEZXNjcmlwdGlvbiwgUnVubmFibGVGbG93Q2hhcnQgfSBmcm9tICcuL2xpYi9ydW5uZXIvUnVubmFibGVDaGFydC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE9ic2VydmUg4oCUIERhdGEgKHNjb3BlIHJlY29yZGVycywgZmlyZSBkdXJpbmcgc3RhZ2UgZXhlY3V0aW9uKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIERhdGEgKi9cbmV4cG9ydCB0eXBlIHtcbiAgQ29tbWl0RXZlbnQsXG4gIEVycm9yRXZlbnQsXG4gIFJlYWRFdmVudCxcbiAgUmVkYWN0aW9uUG9saWN5LFxuICBSZWRhY3Rpb25SZXBvcnQsXG4gIFNjb3BlUmVjb3JkZXIsXG4gIFN0YWdlRXZlbnQsXG4gIFdyaXRlRXZlbnQsXG59IGZyb20gJy4vbGliL3Njb3BlL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBEYXRhICovXG5leHBvcnQgeyBNZXRyaWNSZWNvcmRlciB9IGZyb20gJy4vbGliL3Njb3BlL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBEYXRhICovXG5leHBvcnQgeyBEZWJ1Z1JlY29yZGVyIH0gZnJvbSAnLi9saWIvc2NvcGUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIE9wZXJhdGlvbiAqL1xuZXhwb3J0IHsgUmVjb3JkZXJPcGVyYXRpb24gfSBmcm9tICcuL2xpYi9yZWNvcmRlci9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgQ29tYmluZWQgKGJvdGggZGF0YS1mbG93IGFuZCBjb250cm9sLWZsb3cpICovXG5leHBvcnQgdHlwZSB7IENvbWJpbmVkUmVjb3JkZXIgfSBmcm9tICcuL2xpYi9yZWNvcmRlci9pbmRleC5qcyc7XG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIENvbWJpbmVkIChib3RoIGRhdGEtZmxvdyBhbmQgY29udHJvbC1mbG93KSAqL1xuZXhwb3J0IHtcbiAgaGFzRW1pdFJlY29yZGVyTWV0aG9kcyxcbiAgaGFzRmxvd1JlY29yZGVyTWV0aG9kcyxcbiAgaGFzUmVjb3JkZXJNZXRob2RzLFxuICBpc0Zsb3dFdmVudCxcbn0gZnJvbSAnLi9saWIvcmVjb3JkZXIvaW5kZXguanMnO1xuXG4vKipcbiAqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBFbWl0ICh1c2VyLWF1dGhvcmVkIHN0cnVjdHVyZWQgZXZlbnRzKVxuICpcbiAqIFRoaXJkIG9ic2VydmVyIGNoYW5uZWwgKGFsb25nc2lkZSBgU2NvcGVSZWNvcmRlcmAgYW5kIGBGbG93UmVjb3JkZXJgKS4gQ29uc3VtZXJcbiAqIGNvZGUgY2FsbHMgYHNjb3BlLiRlbWl0KG5hbWUsIHBheWxvYWQpYCBmcm9tIGluc2lkZSBhIHN0YWdlOyBldmVyeSBhdHRhY2hlZFxuICogYEVtaXRSZWNvcmRlci5vbkVtaXQoZXZlbnQpYCBmaXJlcyBzeW5jaHJvbm91c2x5IHdpdGggc3RhZ2UtY29udGV4dFxuICogZW5yaWNobWVudC4gUGFzcy10aHJvdWdoIOKAlCBubyBidWZmZXJpbmcsIHplcm8gYWxsb2NhdGlvbiB3aGVuIG5vIHJlY29yZGVyXG4gKiBpcyBhdHRhY2hlZC5cbiAqL1xuZXhwb3J0IHR5cGUgeyBFbWl0RXZlbnQsIEVtaXRSZWNvcmRlciB9IGZyb20gJy4vbGliL3JlY29yZGVyL2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gT2JzZXJ2ZSDigJQgRmxvdyAoRmxvd1JlY29yZGVyLCBmaXJlcyBhZnRlciBzdGFnZSBleGVjdXRpb24pXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRmxvdyAqL1xuZXhwb3J0IHR5cGUge1xuICBGbG93QnJlYWtFdmVudCxcbiAgRmxvd0RlY2lzaW9uRXZlbnQsXG4gIEZsb3dFcnJvckV2ZW50LFxuICBGbG93Rm9ya0V2ZW50LFxuICBGbG93TG9vcEV2ZW50LFxuICBGbG93TmV4dEV2ZW50LFxuICBGbG93UmVjb3JkZXIsXG4gIEZsb3dSdW5FdmVudCxcbiAgRmxvd1J1bkZhaWxlZEV2ZW50LFxuICBGbG93U2VsZWN0ZWRFdmVudCxcbiAgRmxvd1N0YWdlRXZlbnQsXG4gIEZsb3dTdWJmbG93RXZlbnQsXG4gIEZsb3dTdWJmbG93UmVnaXN0ZXJlZEV2ZW50LFxuICBUcmF2ZXJzYWxDb250ZXh0LFxufSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEZsb3cgKi9cbmV4cG9ydCB0eXBlIHsgQ29tYmluZWROYXJyYXRpdmVFbnRyeSB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKlxuICogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEZsb3dcbiAqXG4gKiBgTmFycmF0aXZlRm9ybWF0dGVyYCDigJQgcGx1Z2dhYmxlIGZvcm1hdHRlciB0aGF0IGNvbnZlcnRzIGV2ZW50IGNvbnRleHRcbiAqIG9iamVjdHMgaW50byB0aGUgdGV4dCBsaW5lcyBvZiB0aGUgbmFycmF0aXZlLiBQcmVmZXIgdGhpcyBuYW1lIGluIG5ld1xuICogY29kZTsgYE5hcnJhdGl2ZVJlbmRlcmVyYCBpcyBhIGRlcHJlY2F0ZWQgYWxpYXMgdGhhdCB3aWxsIGJlIHJlbW92ZWQgaW5cbiAqIHRoZSBuZXh0IG1ham9yIHJlbGVhc2UuXG4gKi9cbmV4cG9ydCB0eXBlIHsgTmFycmF0aXZlRm9ybWF0dGVyLCBOYXJyYXRpdmVSZW5kZXJlciB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRmxvdyAqL1xuZXhwb3J0IHsgTmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBGbG93ICovXG5leHBvcnQgdHlwZSB7IE1hbmlmZXN0RW50cnkgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEZsb3cgKi9cbmV4cG9ydCB7IE1hbmlmZXN0Rmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBGbG93ICovXG5leHBvcnQgeyBBZGFwdGl2ZU5hcnJhdGl2ZUZsb3dSZWNvcmRlciB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRmxvdyAqL1xuZXhwb3J0IHsgTWlsZXN0b25lTmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBGbG93ICovXG5leHBvcnQgeyBQcm9ncmVzc2l2ZU5hcnJhdGl2ZUZsb3dSZWNvcmRlciB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRmxvdyAqL1xuZXhwb3J0IHsgUkxFTmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBGbG93ICovXG5leHBvcnQgeyBTZXBhcmF0ZU5hcnJhdGl2ZUZsb3dSZWNvcmRlciB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRmxvdyAqL1xuZXhwb3J0IHsgU2lsZW50TmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBGbG93ICovXG5leHBvcnQgeyBXaW5kb3dlZE5hcnJhdGl2ZUZsb3dSZWNvcmRlciB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNlbGYtRGVzY3JpYmluZyDigJQgLmNvbnRyYWN0KCksIHRvT3BlbkFQSSgpLCB0b01DUFRvb2woKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKiogQGNhdGVnb3J5IFNlbGYtRGVzY3JpYmluZyAqL1xuZXhwb3J0IHR5cGUge1xuICBGbG93Q2hhcnRDb250cmFjdCxcbiAgRmxvd0NoYXJ0Q29udHJhY3RPcHRpb25zLFxuICBKc29uU2NoZW1hLFxuICBPcGVuQVBJT3B0aW9ucyxcbiAgT3BlbkFQSVNwZWMsXG59IGZyb20gJy4vbGliL2NvbnRyYWN0L2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU25hcHNob3QgJiBDb21wb3NpdGlvbiDigJQgU3ViZmxvdyBuYXZpZ2F0aW9uIGFuZCBDb21wb3NhYmxlUnVubmVyXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKiBAY2F0ZWdvcnkgU25hcHNob3QgJiBDb21wb3NpdGlvbiAqL1xuZXhwb3J0IHR5cGUgeyBDb21wb3NhYmxlUnVubmVyIH0gZnJvbSAnLi9saWIvcnVubmVyL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBTbmFwc2hvdCAmIENvbXBvc2l0aW9uICovXG5leHBvcnQgdHlwZSB7IFJlY29yZGVyU25hcHNob3QsIFJ1bnRpbWVTbmFwc2hvdCwgU3VidHJlZVNuYXBzaG90IH0gZnJvbSAnLi9saWIvcnVubmVyL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBTbmFwc2hvdCAmIENvbXBvc2l0aW9uICovXG5leHBvcnQgeyBnZXRTdWJ0cmVlU25hcHNob3QsIGxpc3RTdWJmbG93UGF0aHMgfSBmcm9tICcuL2xpYi9ydW5uZXIvaW5kZXguanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTY29wZVJlY29yZGVyIENvbXBvc2l0aW9uIOKAlCBCdW5kbGUgbXVsdGlwbGUgcmVjb3JkZXJzIGludG8gZG9tYWluIHByZXNldHNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqIEBjYXRlZ29yeSBTY29wZVJlY29yZGVyICovXG5leHBvcnQgeyBDb21wb3NpdGVSZWNvcmRlciB9IGZyb20gJy4vbGliL3JlY29yZGVyL2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUGF1c2UvUmVzdW1lIOKAlCBTZXJpYWxpemFibGUgY2hlY2twb2ludHMgZm9yIGxvbmctcnVubmluZyBvciBodW1hbi1pbi10aGUtbG9vcCBmbG93c1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKiogQGNhdGVnb3J5IFBhdXNlL1Jlc3VtZSAqL1xuLyoqIEBjYXRlZ29yeSBQYXVzZS9SZXN1bWUgKi9cbmV4cG9ydCB0eXBlIHsgRmxvd2NoYXJ0Q2hlY2twb2ludCwgUGF1c2FibGVIYW5kbGVyIH0gZnJvbSAnLi9saWIvcGF1c2UvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IFNjb3BlUmVjb3JkZXIgKi9cbmV4cG9ydCB0eXBlIHsgQ29tcG9zaXRlU25hcHNob3QgfSBmcm9tICcuL2xpYi9yZWNvcmRlci9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENvbmZpZ3VyYXRpb24g4oCUIFR5cGVzIHBhc3NlZCB0byBGbG93Q2hhcnRFeGVjdXRvciBhbmQgcnVuKClcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqIEBjYXRlZ29yeSBDb25maWd1cmF0aW9uICovXG5leHBvcnQgdHlwZSB7IEV4ZWN1dGlvbkVudiwgRXhlY3V0b3JSZXN1bHQsIFBhdXNlZFJlc3VsdCwgUnVuT3B0aW9ucyB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgQ29uZmlndXJhdGlvbiAqL1xuZXhwb3J0IHR5cGUgeyBTY29wZUZhY3RvcnkgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vKipcbiAqIEBjYXRlZ29yeSBDb25maWd1cmF0aW9uXG4gKlxuICogUmVhZC10cmFja2luZyBwb2xpY3kgZm9yIGBTdGFnZVNuYXBzaG90LnN0YWdlUmVhZHNgICgjMTQpOlxuICogYCdmdWxsJ2AgKGRlZmF1bHQg4oCUIHBlci1yZWFkIHZhbHVlIGNsb25lLCBoaXN0b3JpY2FsIGJlaGF2aW9yKSAvXG4gKiBgJ3N1bW1hcnknYCAoY2hlYXAgYFJlYWRTdW1tYXJ5TWFya2VyYCBwZXIgcmVhZCkgLyBgJ29mZidgIChubyB0cmFja2luZyxcbiAqIHplcm8gcGVyLXJlYWQgY2xvbmUpLiBQYXNzIGFzIGBuZXcgRmxvd0NoYXJ0RXhlY3V0b3IoY2hhcnQsIHsgcmVhZFRyYWNraW5nIH0pYFxuICogb3IgY2FsbCBgZXhlY3V0b3Iuc2V0UmVhZFRyYWNraW5nKG1vZGUpYCBiZWZvcmUgYHJ1bigpYC5cbiAqL1xuZXhwb3J0IHR5cGUgeyBSZWFkU3VtbWFyeU1hcmtlciwgUmVhZFRyYWNraW5nTW9kZSB9IGZyb20gJy4vbGliL21lbW9yeS9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENvbnRyYWN0ICYgVmFsaWRhdGlvblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKiogQGNhdGVnb3J5IENvbnRyYWN0ICYgVmFsaWRhdGlvbiAqL1xuZXhwb3J0IHR5cGUgeyBTY2hlbWFLaW5kLCBWYWxpZGF0aW9uSXNzdWUsIFZhbGlkYXRpb25SZXN1bHQgfSBmcm9tICcuL2xpYi9zY2hlbWEvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IENvbnRyYWN0ICYgVmFsaWRhdGlvbiAqL1xuZXhwb3J0IHsgZGV0ZWN0U2NoZW1hLCBpc1ZhbGlkYXRhYmxlLCBpc1pvZCB9IGZyb20gJy4vbGliL3NjaGVtYS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgQ29udHJhY3QgJiBWYWxpZGF0aW9uICovXG5leHBvcnQgeyBJbnB1dFZhbGlkYXRpb25FcnJvciwgdmFsaWRhdGVBZ2FpbnN0U2NoZW1hLCB2YWxpZGF0ZU9yVGhyb3cgfSBmcm9tICcuL2xpYi9zY2hlbWEvaW5kZXguanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBFcnJvciBVdGlsaXRpZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqIEBjYXRlZ29yeSBFcnJvciBVdGlsaXRpZXMgKi9cbmV4cG9ydCB0eXBlIHsgU3RydWN0dXJlZEVycm9ySW5mbyB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgRXJyb3IgVXRpbGl0aWVzICovXG5leHBvcnQgeyBleHRyYWN0RXJyb3JJbmZvLCBmb3JtYXRFcnJvckluZm8gfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEZXYgVG9vbHMg4oCUIE1vZGUgZmxhZ3MgYW5kIFpvZCBzY29wZSB1dGlsaXRpZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBAY2F0ZWdvcnkgRGV2IFRvb2xzXG4gKlxuICogR2xvYmFsIGRldi1tb2RlIGZsYWcuIENhbGwgYGVuYWJsZURldk1vZGUoKWAgYXQgYXBwbGljYXRpb24gc3RhcnR1cCB0b1xuICogdHVybiBvbiBkZXZlbG9wZXItb25seSBkaWFnbm9zdGljcyBhY3Jvc3MgdGhlIGxpYnJhcnkg4oCUIGNpcmN1bGFyLXJlZmVyZW5jZVxuICogZGV0ZWN0aW9uIGluIHNjb3BlIHdyaXRlcywgd2FybmluZ3Mgd2hlbiBhIHJlY29yZGVyIGhhcyBubyBvYnNlcnZlclxuICogbWV0aG9kcywgc3VzcGljaW91cy1wcmVkaWNhdGUgd2FybmluZ3MgaW4gZGVjaWRlL3NlbGVjdCwgc3RydWN0dXJhbFxuICogY2hlY2tzIGluIGBnZXRTdWJ0cmVlU25hcHNob3RgLCBhbmQgYW55IGZ1dHVyZSBkZXYtb25seSBkaWFnbm9zdGljLlxuICpcbiAqIFByb2R1Y3Rpb24gbGVhdmVzIGl0IE9GRiBieSBkZWZhdWx0ICh6ZXJvIG92ZXJoZWFkKS4gU2VlIHRoZSBKU0RvYyBvblxuICogYGVuYWJsZURldk1vZGVgIGZvciB0aGUgZnVsbCBsaXN0IGFuZCB1c2FnZSBleGFtcGxlLlxuICovXG5leHBvcnQgeyBkaXNhYmxlRGV2TW9kZSwgZW5hYmxlRGV2TW9kZSwgaXNEZXZNb2RlIH0gZnJvbSAnLi9saWIvc2NvcGUvZGV0ZWN0Q2lyY3VsYXIuanMnO1xuXG4vLyBgZGVmaW5lU2NvcGVGcm9tWm9kYCBhbmQgdGhlIG90aGVyIHpvZC1iYXNlZCBzY29wZSBoZWxwZXJzIG1vdmVkIHRvIHRoZSBvcHQtaW5cbi8vIGBmb290cHJpbnRqcy96b2RgIGVudHJ5IOKAlCBrZWVwaW5nIHpvZCBvdXQgb2YgdGhlIGNvcmUgbG9hZCBwYXRoIChpdCBpcyBhblxuLy8gb3B0aW9uYWwgcGVlcikuIEltcG9ydCB0aGVtIGZyb20gJ2Zvb3RwcmludGpzL3pvZCcuXG4iXX0=
@@ -137,6 +137,12 @@ function evaluateRule(scope, rule, index, attachFn, detachFn, valueFn, redactedF
137
137
  * treated as non-matching (`matched: false`) and the error message is captured in
138
138
  * `matchError` on that rule's `RuleEvidence` entry. Execution continues with
139
139
  * subsequent rules; errors do not propagate to the caller.
140
+ *
141
+ * **Empty-filter behavior (anti-vacuous-truth):** a filter rule whose `when` is
142
+ * `{}` (no evaluable conditions) NEVER matches. This deliberately inverts the
143
+ * Prisma/SQL `where: {}` intuition ("match everything") — a rule that asserts
144
+ * nothing must not win a branch on vacuous truth. Use `defaultBranch` for the
145
+ * catch-all instead. Unknown filter operators also never match (dev mode warns).
140
146
  */
141
147
  export function decide(scope, rules, defaultBranch) {
142
148
  const attachFn = getAttachFn(scope);
@@ -175,6 +181,11 @@ export function decide(scope, rules, defaultBranch) {
175
181
  * treated as non-matching (`matched: false`) and the error message is captured in
176
182
  * `matchError` on that rule's `RuleEvidence` entry. Evaluation continues with
177
183
  * remaining rules; errors do not propagate to the caller.
184
+ *
185
+ * **Empty-filter behavior (anti-vacuous-truth):** a filter rule whose `when` is
186
+ * `{}` (no evaluable conditions) NEVER matches — same rule as `decide()`; an
187
+ * always-selected branch must be expressed explicitly, not via an empty filter.
188
+ * Unknown filter operators also never match (dev mode warns).
178
189
  */
179
190
  export function select(scope, rules) {
180
191
  const attachFn = getAttachFn(scope);
@@ -196,4 +207,4 @@ export function select(scope, rules) {
196
207
  };
197
208
  return { branches: selectedBranches, [DECISION_RESULT]: true, evidence };
198
209
  }
199
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjaWRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9kZWNpZGUvZGVjaWRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7R0FTRztBQUVILE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUV2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBYWxELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFN0MsK0VBQStFO0FBRS9FLFNBQVMsV0FBVyxDQUFDLEtBQWM7SUFDakMsTUFBTSxDQUFDLEdBQUcsS0FBZ0MsQ0FBQztJQUMzQyxJQUFJLE9BQU8sQ0FBQyxDQUFDLG9CQUFvQixLQUFLLFVBQVU7UUFBRSxPQUFPLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEYsSUFBSSxPQUFPLENBQUMsQ0FBQyxtQkFBbUIsS0FBSyxVQUFVO1FBQUUsT0FBTyxDQUFDLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RGLE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUM7QUFFRCxTQUFTLFdBQVcsQ0FBQyxLQUFjO0lBQ2pDLE1BQU0sQ0FBQyxHQUFHLEtBQWdDLENBQUM7SUFDM0MsSUFBSSxPQUFPLENBQUMsQ0FBQyxvQkFBb0IsS0FBSyxVQUFVO1FBQUUsT0FBTyxDQUFDLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hGLElBQUksT0FBTyxDQUFDLENBQUMsbUJBQW1CLEtBQUssVUFBVTtRQUFFLE9BQU8sQ0FBQyxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RixPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFD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QUMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1FBQzVDLE1BQU0sWUFBWSxHQUFHLFlBQVksQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQztRQUMvRixjQUFjLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRWxDLElBQUksWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3pCLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkMsQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNLFFBQVEsR0FBc0I7UUFDbEMsS0FBSyxFQUFFLGNBQWM7UUFDckIsUUFBUSxFQUFFLGdCQUFnQjtLQUMzQixDQUFDO0lBQ0YsT0FBTyxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLGVBQWUsQ0FBQyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQztBQUMzRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBkZWNpZGUvZGVjaWRlIC0tIENvcmUgZGVjaWRlKCkgYW5kIHNlbGVjdCgpIGhlbHBlciBmdW5jdGlvbnMuXG4gKlxuICogZGVjaWRlKCkgZXZhbHVhdGVzIHJ1bGVzIGluIG9yZGVyIChmaXJzdC1tYXRjaCkgYW5kIHJldHVybnMgYSBEZWNpc2lvblJlc3VsdC5cbiAqIHNlbGVjdCgpIGV2YWx1YXRlcyBBTEwgcnVsZXMgYW5kIHJldHVybnMgYSBTZWxlY3Rpb25SZXN1bHQgd2l0aCBhbGwgbWF0Y2hlcy5cbiAqXG4gKiBFYWNoIHJ1bGUncyBgd2hlbmAgY2FuIGJlOlxuICogLSBBIGZ1bmN0aW9uOiAocykgPT4gcy5jcmVkaXRTY29yZSA+IDcwMCAgKGF1dG8tY2FwdHVyZXMgcmVhZHMgdmlhIHRlbXAgcmVjb3JkZXIpXG4gKiAtIEEgZmlsdGVyOiAgIHsgY3JlZGl0U2NvcmU6IHsgZ3Q6IDcwMCB9IH0gKGNhcHR1cmVzIHJlYWRzICsgb3BlcmF0b3JzICsgdGhyZXNob2xkcylcbiAqL1xuXG5pbXBvcnQgeyBpc0Rldk1vZGUgfSBmcm9tICcuLi9zY29wZS9kZXRlY3RDaXJjdWxhci5qcyc7XG5pbXBvcnQgdHlwZSB7IFNjb3BlUmVjb3JkZXIgfSBmcm9tICcuLi9zY29wZS90eXBlcy5qcyc7XG5pbXBvcnQgeyBldmFsdWF0ZUZpbHRlciB9IGZyb20gJy4vZXZhbHVhdG9yLmpzJztcbmltcG9ydCB7IEV2aWRlbmNlQ29sbGVjdG9yIH0gZnJvbSAnLi9ldmlkZW5jZS5qcyc7XG5pbXBvcnQgdHlwZSB7XG4gIERlY2lkZVJ1bGUsXG4gIERlY2lzaW9uRXZpZGVuY2UsXG4gIERlY2lzaW9uUmVzdWx0LFxuICBGaWx0ZXJDb25kaXRpb24sXG4gIEZpbHRlclJ1bGVFdmlkZW5jZSxcbiAgRnVuY3Rpb25SdWxlRXZpZGVuY2UsXG4gIFJ1bGVFdmlkZW5jZSxcbiAgU2VsZWN0aW9uRXZpZGVuY2UsXG4gIFNlbGVjdGlvblJlc3VsdCxcbiAgV2hlcmVGaWx0ZXIsXG59IGZyb20gJy4vdHlwZXMuanMnO1xuaW1wb3J0IHsgREVDSVNJT05fUkVTVUxUIH0gZnJvbSAnLi90eXBlcy5qcyc7XG5cbi8vIC0tIFNjb3BlIGFjY2Vzc29yIGhlbHBlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZnVuY3Rpb24gZ2V0QXR0YWNoRm4oc2NvcGU6IHVua25vd24pOiAoKHI6IFNjb3BlUmVjb3JkZXIpID0+IHZvaWQpIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgcyA9IHNjb3BlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBpZiAodHlwZW9mIHMuJGF0dGFjaFNjb3BlUmVjb3JkZXIgPT09ICdmdW5jdGlvbicpIHJldHVybiBzLiRhdHRhY2hTY29wZVJlY29yZGVyLmJpbmQocyk7XG4gIGlmICh0eXBlb2Ygcy5hdHRhY2hTY29wZVJlY29yZGVyID09PSAnZnVuY3Rpb24nKSByZXR1cm4gcy5hdHRhY2hTY29wZVJlY29yZGVyLmJpbmQocyk7XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGdldERldGFjaEZuKHNjb3BlOiB1bmtub3duKTogKChpZDogc3RyaW5nKSA9PiB2b2lkKSB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHMgPSBzY29wZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgaWYgKHR5cGVvZiBzLiRkZXRhY2hTY29wZVJlY29yZGVyID09PSAnZnVuY3Rpb24nKSByZXR1cm4gcy4kZGV0YWNoU2NvcGVSZWNvcmRlci5iaW5kKHMpO1xuICBpZiAodHlwZW9mIHMuZGV0YWNoU2NvcGVSZWNvcmRlciA9PT0gJ2Z1bmN0aW9uJykgcmV0dXJuIHMuZGV0YWNoU2NvcGVSZWNvcmRlci5iaW5kKHMpO1xuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBnZXRWYWx1ZUZuKHNjb3BlOiB1bmtub3duKTogKGtleTogc3RyaW5nKSA9PiB1bmtub3duIHtcbiAgY29uc3QgcyA9IHNjb3BlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAvLyBDaGVjayAkZ2V0VmFsdWUgZmlyc3Q6IG9uIFR5cGVkU2NvcGUsIGFjY2Vzc2luZyAuZ2V0VmFsdWUgdHJpZ2dlcnMgYSBzcHVyaW91c1xuICAvLyBvblJlYWQgZm9yIGtleSBcImdldFZhbHVlXCIgdmlhIHRoZSBQcm94eSBnZXQgdHJhcC4gJGdldFZhbHVlIHJvdXRlcyB0aHJvdWdoXG4gIC8vIFNDT1BFX01FVEhPRF9OQU1FUyBhbmQgYXZvaWRzIHRoZSBzdGF0ZS1yZWFkIHBhdGguXG4gIGlmICh0eXBlb2Ygcy4kZ2V0VmFsdWUgPT09ICdmdW5jdGlvbicpIHJldHVybiBzLiRnZXRWYWx1ZS5iaW5kKHMpO1xuICBpZiAodHlwZW9mIHMuZ2V0VmFsdWUgPT09ICdmdW5jdGlvbicpIHJldHVybiBzLmdldFZhbHVlLmJpbmQocyk7XG4gIHJldHVybiAoKSA9PiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGdldFJlZGFjdGVkRm4oc2NvcGU6IHVua25vd24pOiAoa2V5OiBzdHJpbmcpID0+IGJvb2xlYW4ge1xuICBjb25zdCBzID0gc2NvcGUgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIC8vIFRyeSAkdG9SYXcoKSBmaXJzdCAoVHlwZWRTY29wZSksIHRoZW4gZGlyZWN0XG4gIGNvbnN0IHJhdyA9IHR5cGVvZiBzLiR0b1JhdyA9PT0gJ2Z1bmN0aW9uJyA/IHMuJHRvUmF3KCkgOiBzO1xuICBjb25zdCByID0gcmF3IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBpZiAodHlwZW9mIHIuZ2V0UmVkYWN0ZWRLZXlzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY29uc3Qga2V5cyA9IHIuZ2V0UmVkYWN0ZWRLZXlzKCkgYXMgU2V0PHN0cmluZz47XG4gICAgcmV0dXJuIChrZXk6IHN0cmluZykgPT4ga2V5cy5oYXMoa2V5KTtcbiAgfVxuICByZXR1cm4gKCkgPT4gZmFsc2U7XG59XG5cbi8vIC0tIGV2YWx1YXRlIGEgc2luZ2xlIHJ1bGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZnVuY3Rpb24gZXZhbHVhdGVSdWxlPFMgZXh0ZW5kcyBvYmplY3Q+KFxuICBzY29wZTogUyxcbiAgcnVsZTogRGVjaWRlUnVsZTxTPixcbiAgaW5kZXg6IG51bWJlcixcbiAgYXR0YWNoRm4/OiAocjogU2NvcGVSZWNvcmRlcikgPT4gdm9pZCxcbiAgZGV0YWNoRm4/OiAoaWQ6IHN0cmluZykgPT4gdm9pZCxcbiAgdmFsdWVGbj86IChrZXk6IHN0cmluZykgPT4gdW5rbm93bixcbiAgcmVkYWN0ZWRGbj86IChrZXk6IHN0cmluZykgPT4gYm9vbGVhbixcbik6IFJ1bGVFdmlkZW5jZSB7XG4gIGlmICh0eXBlb2YgcnVsZS53aGVuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgLy8gRlVOQ1RJT04gUEFUSDogdGVtcCByZWNvcmRlciBjYXB0dXJlcyByZWFkcyAobGF6eSDigJQgc2tpcCBpZiBubyByZWNvcmRlciBzdXBwb3J0KVxuICAgIGNvbnN0IGhhc1JlY29yZGVyU3VwcG9ydCA9IEJvb2xlYW4oYXR0YWNoRm4pO1xuICAgIGNvbnN0IGNvbGxlY3RvciA9IGhhc1JlY29yZGVyU3VwcG9ydCA/IG5ldyBFdmlkZW5jZUNvbGxlY3RvcigpIDogdW5kZWZpbmVkO1xuICAgIGlmIChjb2xsZWN0b3IgJiYgYXR0YWNoRm4pIGF0dGFjaEZuKGNvbGxlY3Rvcik7XG5cbiAgICBsZXQgbWF0Y2hlZDogYm9vbGVhbjtcbiAgICBsZXQgbWF0Y2hFcnJvcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIHRyeSB7XG4gICAgICBtYXRjaGVkID0gcnVsZS53aGVuKHNjb3BlKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBtYXRjaGVkID0gZmFsc2U7XG4gICAgICAvLyBDYXB0dXJlIHRoZSBlcnJvciBmb3IgZGVidWdnaW5nIOKAlCBzdXJmYWNlIGl0IGluIGV2aWRlbmNlIGluc3RlYWQgb2Ygc3dhbGxvd2luZyBzaWxlbnRseVxuICAgICAgbWF0Y2hFcnJvciA9IGUgaW5zdGFuY2VvZiBFcnJvciA/IGUubWVzc2FnZSA6IFN0cmluZyhlKTtcbiAgICAgIGlmIChpc0Rldk1vZGUoKSkge1xuICAgICAgICBjb25zdCBsYWJlbCA9IHJ1bGUubGFiZWwgPyBgICgnJHtydWxlLmxhYmVsfScpYCA6ICcnO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICBjb25zb2xlLndhcm4oYFtmb290cHJpbnRdIGRlY2lkZSgpIHJ1bGUgJHtpbmRleH0ke2xhYmVsfSB0aHJldyBkdXJpbmcgZXZhbHVhdGlvbjogJHttYXRjaEVycm9yfWApO1xuICAgICAgfVxuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAoY29sbGVjdG9yICYmIGRldGFjaEZuKSBkZXRhY2hGbihjb2xsZWN0b3IuaWQpO1xuICAgIH1cblxuICAgIGNvbnN0IGV2aWRlbmNlOiBGdW5jdGlvblJ1bGVFdmlkZW5jZSA9IHtcbiAgICAgIHR5cGU6ICdmdW5jdGlvbicsXG4gICAgICBydWxlSW5kZXg6IGluZGV4LFxuICAgICAgYnJhbmNoOiBydWxlLnRoZW4sXG4gICAgICBtYXRjaGVkLFxuICAgICAgbGFiZWw6IHJ1bGUubGFiZWwsXG4gICAgICAvLyBQYXJ0aWFsIHJlYWRzOiBpZiBydWxlIHRocmV3IGFmdGVyIHNvbWUgZ2V0VmFsdWUoKSBjYWxscywgY29sbGVjdG9yIGhvbGRzIHJlYWRzIHVwIHRvIHRoZSB0aHJvdyBwb2ludFxuICAgICAgaW5wdXRzOiBjb2xsZWN0b3I/LmdldElucHV0cygpID8/IFtdLFxuICAgICAgLi4uKG1hdGNoRXJyb3IgIT09IHVuZGVmaW5lZCAmJiB7IG1hdGNoRXJyb3IgfSksXG4gICAgfTtcbiAgICByZXR1cm4gZXZpZGVuY2U7XG4gIH0gZWxzZSB7XG4gICAgLy8gRklMVEVSIFBBVEg6IHJlYWRzIHZhbHVlcyBkaXJlY3RseSB2aWEgY2FsbGJhY2tzIChubyByZWNvcmRlcik7IGV4Y2VwdGlvbnMgdHJlYXRlZCBhcyBub24tbWF0Y2hcbiAgICBjb25zdCByZXNvbHZlZFZhbHVlRm4gPSB2YWx1ZUZuID8/ICgoKSA9PiB1bmRlZmluZWQpO1xuICAgIGNvbnN0IHJlc29sdmVkUmVkYWN0ZWRGbiA9IHJlZGFjdGVkRm4gPz8gKCgpID0+IGZhbHNlKTtcbiAgICBsZXQgZmlsdGVyTWF0Y2hlZCA9IGZhbHNlO1xuICAgIGxldCBmaWx0ZXJDb25kaXRpb25zOiBGaWx0ZXJDb25kaXRpb25bXSA9IFtdO1xuICAgIGxldCBtYXRjaEVycm9yOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGV2YWx1YXRlRmlsdGVyKHJlc29sdmVkVmFsdWVGbiwgcmVzb2x2ZWRSZWRhY3RlZEZuLCBydWxlLndoZW4gYXMgV2hlcmVGaWx0ZXI8Uz4pO1xuICAgICAgZmlsdGVyTWF0Y2hlZCA9IHJlc3VsdC5tYXRjaGVkO1xuICAgICAgZmlsdGVyQ29uZGl0aW9ucyA9IHJlc3VsdC5jb25kaXRpb25zO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGZpbHRlck1hdGNoZWQgPSBmYWxzZTtcbiAgICAgIGZpbHRlckNvbmRpdGlvbnMgPSBbXTtcbiAgICAgIC8vIENhcHR1cmUgdGhlIGVycm9yIGZvciBkZWJ1Z2dpbmcg4oCUIHN1cmZhY2UgaXQgaW4gZXZpZGVuY2UgaW5zdGVhZCBvZiBzd2FsbG93aW5nIHNpbGVudGx5XG4gICAgICBtYXRjaEVycm9yID0gZSBpbnN0YW5jZW9mIEVycm9yID8gZS5tZXNzYWdlIDogU3RyaW5nKGUpO1xuICAgICAgaWYgKGlzRGV2TW9kZSgpKSB7XG4gICAgICAgIGNvbnN0IGxhYmVsID0gcnVsZS5sYWJlbCA/IGAgKCcke3J1bGUubGFiZWx9JylgIDogJyc7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgIGNvbnNvbGUud2FybihgW2Zvb3RwcmludF0gZGVjaWRlKCkgZmlsdGVyIHJ1bGUgJHtpbmRleH0ke2xhYmVsfSB0aHJldyBkdXJpbmcgZXZhbHVhdGlvbjogJHttYXRjaEVycm9yfWApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGV2aWRlbmNlOiBGaWx0ZXJSdWxlRXZpZGVuY2UgPSB7XG4gICAgICB0eXBlOiAnZmlsdGVyJyxcbiAgICAgIHJ1bGVJbmRleDogaW5kZXgsXG4gICAgICBicmFuY2g6IHJ1bGUudGhlbixcbiAgICAgIG1hdGNoZWQ6IGZpbHRlck1hdGNoZWQsXG4gICAgICBsYWJlbDogcnVsZS5sYWJlbCxcbiAgICAgIGNvbmRpdGlvbnM6IGZpbHRlckNvbmRpdGlvbnMsXG4gICAgICAuLi4obWF0Y2hFcnJvciAhPT0gdW5kZWZpbmVkICYmIHsgbWF0Y2hFcnJvciB9KSxcbiAgICB9O1xuICAgIHJldHVybiBldmlkZW5jZTtcbiAgfVxufVxuXG4vLyAtLSBkZWNpZGUoKSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICogRXZhbHVhdGVzIHJ1bGVzIGluIG9yZGVyIChmaXJzdC1tYXRjaCkuIFJldHVybnMgYSBicmFuZGVkIERlY2lzaW9uUmVzdWx0LlxuICpcbiAqIEBwYXJhbSBzY29wZSAtIFR5cGVkU2NvcGUgb3IgU2NvcGVGYWNhZGVcbiAqIEBwYXJhbSBydWxlcyAtIEFycmF5IG9mIERlY2lkZVJ1bGUgKGZ1bmN0aW9uIG9yIGZpbHRlciB3aGVuIGNsYXVzZXMpXG4gKiBAcGFyYW0gZGVmYXVsdEJyYW5jaCAtIEJyYW5jaCBJRCBpZiBubyBydWxlIG1hdGNoZXNcbiAqXG4gKiAqKkVycm9yIGJlaGF2aW9yOioqIElmIGEgYHdoZW5gIGZ1bmN0aW9uIHRocm93cyBkdXJpbmcgZXZhbHVhdGlvbiwgdGhlIHJ1bGUgaXNcbiAqIHRyZWF0ZWQgYXMgbm9uLW1hdGNoaW5nIChgbWF0Y2hlZDogZmFsc2VgKSBhbmQgdGhlIGVycm9yIG1lc3NhZ2UgaXMgY2FwdHVyZWQgaW5cbiAqIGBtYXRjaEVycm9yYCBvbiB0aGF0IHJ1bGUncyBgUnVsZUV2aWRlbmNlYCBlbnRyeS4gRXhlY3V0aW9uIGNvbnRpbnVlcyB3aXRoXG4gKiBzdWJzZXF1ZW50IHJ1bGVzOyBlcnJvcnMgZG8gbm90IHByb3BhZ2F0ZSB0byB0aGUgY2FsbGVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVjaWRlPFMgZXh0ZW5kcyBvYmplY3Q+KHNjb3BlOiBTLCBydWxlczogRGVjaWRlUnVsZTxTPltdLCBkZWZhdWx0QnJhbmNoOiBzdHJpbmcpOiBEZWNpc2lvblJlc3VsdCB7XG4gIGNvbnN0IGF0dGFjaEZuID0gZ2V0QXR0YWNoRm4oc2NvcGUpO1xuICBjb25zdCBkZXRhY2hGbiA9IGdldERldGFjaEZuKHNjb3BlKTtcbiAgY29uc3QgdmFsdWVGbiA9IGdldFZhbHVlRm4oc2NvcGUpO1xuICBjb25zdCByZWRhY3RlZEZuID0gZ2V0UmVkYWN0ZWRGbihzY29wZSk7XG5cbiAgY29uc3QgZXZhbHVhdGVkUnVsZXM6IFJ1bGVFdmlkZW5jZVtdID0gW107XG5cbiAgZm9yIChjb25zdCBbaW5kZXgsIHJ1bGVdIG9mIHJ1bGVzLmVudHJpZXMoKSkge1xuICAgIGNvbnN0IHJ1bGVFdmlkZW5jZSA9IGV2YWx1YXRlUnVsZShzY29wZSwgcnVsZSwgaW5kZXgsIGF0dGFjaEZuLCBkZXRhY2hGbiwgdmFsdWVGbiwgcmVkYWN0ZWRGbik7XG4gICAgZXZhbHVhdGVkUnVsZXMucHVzaChydWxlRXZpZGVuY2UpO1xuXG4gICAgaWYgKHJ1bGVFdmlkZW5jZS5tYXRjaGVkKSB7XG4gICAgICBjb25zdCBldmlkZW5jZTogRGVjaXNpb25FdmlkZW5jZSA9IHtcbiAgICAgICAgcnVsZXM6IGV2YWx1YXRlZFJ1bGVzLFxuICAgICAgICBjaG9zZW46IHJ1bGUudGhlbixcbiAgICAgICAgZGVmYXVsdDogZGVmYXVsdEJyYW5jaCxcbiAgICAgIH07XG4gICAgICByZXR1cm4geyBicmFuY2g6IHJ1bGUudGhlbiwgW0RFQ0lTSU9OX1JFU1VMVF06IHRydWUsIGV2aWRlbmNlIH07XG4gICAgfVxuICB9XG5cbiAgLy8gRGVmYXVsdDogbm8gcnVsZSBtYXRjaGVkXG4gIGNvbnN0IGV2aWRlbmNlOiBEZWNpc2lvbkV2aWRlbmNlID0ge1xuICAgIHJ1bGVzOiBldmFsdWF0ZWRSdWxlcyxcbiAgICBjaG9zZW46IGRlZmF1bHRCcmFuY2gsXG4gICAgZGVmYXVsdDogZGVmYXVsdEJyYW5jaCxcbiAgfTtcbiAgcmV0dXJuIHsgYnJhbmNoOiBkZWZhdWx0QnJhbmNoLCBbREVDSVNJT05fUkVTVUxUXTogdHJ1ZSwgZXZpZGVuY2UgfTtcbn1cblxuLy8gLS0gc2VsZWN0KCkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKipcbiAqIEV2YWx1YXRlcyBBTEwgcnVsZXMgKG5vdCBmaXJzdC1tYXRjaCkuIFJldHVybnMgYSBicmFuZGVkIFNlbGVjdGlvblJlc3VsdC5cbiAqXG4gKiBAcGFyYW0gc2NvcGUgLSBUeXBlZFNjb3BlIG9yIFNjb3BlRmFjYWRlXG4gKiBAcGFyYW0gcnVsZXMgLSBBcnJheSBvZiBEZWNpZGVSdWxlIChmdW5jdGlvbiBvciBmaWx0ZXIgd2hlbiBjbGF1c2VzKVxuICpcbiAqICoqRXJyb3IgYmVoYXZpb3I6KiogSWYgYSBgd2hlbmAgZnVuY3Rpb24gdGhyb3dzIGR1cmluZyBldmFsdWF0aW9uLCB0aGUgcnVsZSBpc1xuICogdHJlYXRlZCBhcyBub24tbWF0Y2hpbmcgKGBtYXRjaGVkOiBmYWxzZWApIGFuZCB0aGUgZXJyb3IgbWVzc2FnZSBpcyBjYXB0dXJlZCBpblxuICogYG1hdGNoRXJyb3JgIG9uIHRoYXQgcnVsZSdzIGBSdWxlRXZpZGVuY2VgIGVudHJ5LiBFdmFsdWF0aW9uIGNvbnRpbnVlcyB3aXRoXG4gKiByZW1haW5pbmcgcnVsZXM7IGVycm9ycyBkbyBub3QgcHJvcGFnYXRlIHRvIHRoZSBjYWxsZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZWxlY3Q8UyBleHRlbmRzIG9iamVjdD4oc2NvcGU6IFMsIHJ1bGVzOiBEZWNpZGVSdWxlPFM+W10pOiBTZWxlY3Rpb25SZXN1bHQge1xuICBjb25zdCBhdHRhY2hGbiA9IGdldEF0dGFjaEZuKHNjb3BlKTtcbiAgY29uc3QgZGV0YWNoRm4gPSBnZXREZXRhY2hGbihzY29wZSk7XG4gIGNvbnN0IHZhbHVlRm4gPSBnZXRWYWx1ZUZuKHNjb3BlKTtcbiAgY29uc3QgcmVkYWN0ZWRGbiA9IGdldFJlZGFjdGVkRm4oc2NvcGUpO1xuXG4gIGNvbnN0IGV2YWx1YXRlZFJ1bGVzOiBSdWxlRXZpZGVuY2VbXSA9IFtdO1xuICBjb25zdCBzZWxlY3RlZEJyYW5jaGVzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgW2luZGV4LCBydWxlXSBvZiBydWxlcy5lbnRyaWVzKCkpIHtcbiAgICBjb25zdCBydWxlRXZpZGVuY2UgPSBldmFsdWF0ZVJ1bGUoc2NvcGUsIHJ1bGUsIGluZGV4LCBhdHRhY2hGbiwgZGV0YWNoRm4sIHZhbHVlRm4sIHJlZGFjdGVkRm4pO1xuICAgIGV2YWx1YXRlZFJ1bGVzLnB1c2gocnVsZUV2aWRlbmNlKTtcblxuICAgIGlmIChydWxlRXZpZGVuY2UubWF0Y2hlZCkge1xuICAgICAgc2VsZWN0ZWRCcmFuY2hlcy5wdXNoKHJ1bGUudGhlbik7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgZXZpZGVuY2U6IFNlbGVjdGlvbkV2aWRlbmNlID0ge1xuICAgIHJ1bGVzOiBldmFsdWF0ZWRSdWxlcyxcbiAgICBzZWxlY3RlZDogc2VsZWN0ZWRCcmFuY2hlcyxcbiAgfTtcbiAgcmV0dXJuIHsgYnJhbmNoZXM6IHNlbGVjdGVkQnJhbmNoZXMsIFtERUNJU0lPTl9SRVNVTFRdOiB0cnVlLCBldmlkZW5jZSB9O1xufVxuIl19
210
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjaWRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9kZWNpZGUvZGVjaWRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7R0FTRztBQUVILE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUV2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBYWxELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFN0MsK0VBQStFO0FBRS9FLFNBQVMsV0FBVyxDQUFDLEtBQWM7SUFDakMsTUFBTSxDQUFDLEdBQUcsS0FBZ0MsQ0FBQztJQUMzQyxJQUFJLE9BQU8sQ0FBQyxDQUFDLG9CQUFvQixLQUFLLFVBQVU7UUFBRSxPQUFPLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEYsSUFBSSxPQUFPLENBQUMsQ0FBQyxtQkFBbUIsS0FBSyxVQUFVO1FBQUUsT0FBTyxDQUFDLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RGLE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUM7QUFFRCxTQUFTLFdBQVcsQ0FBQyxLQUFjO0lBQ2pDLE1BQU0sQ0FBQyxHQUFHLEtBQWdDLENBQUM7SUFDM0MsSUFBSSxPQUFPLENBQUMsQ0FBQyxvQkFBb0IsS0FBSyxVQUFVO1FBQUUsT0FBTyxDQUFDLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hGLElBQUksT0FBTyxDQUFDLENBQUMsbUJBQW1CLEtBQUssVUFBVTtRQUFFLE9BQU8sQ0FBQyxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RixPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFD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S0FBSyxNQUFNLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1FBQzVDLE1BQU0sWUFBWSxHQUFHLFlBQVksQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQztRQUMvRixjQUFjLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRWxDLElBQUksWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3pCLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkMsQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNLFFBQVEsR0FBc0I7UUFDbEMsS0FBSyxFQUFFLGNBQWM7UUFDckIsUUFBUSxFQUFFLGdCQUFnQjtLQUMzQixDQUFDO0lBQ0YsT0FBTyxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLGVBQWUsQ0FBQyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQztBQUMzRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBkZWNpZGUvZGVjaWRlIC0tIENvcmUgZGVjaWRlKCkgYW5kIHNlbGVjdCgpIGhlbHBlciBmdW5jdGlvbnMuXG4gKlxuICogZGVjaWRlKCkgZXZhbHVhdGVzIHJ1bGVzIGluIG9yZGVyIChmaXJzdC1tYXRjaCkgYW5kIHJldHVybnMgYSBEZWNpc2lvblJlc3VsdC5cbiAqIHNlbGVjdCgpIGV2YWx1YXRlcyBBTEwgcnVsZXMgYW5kIHJldHVybnMgYSBTZWxlY3Rpb25SZXN1bHQgd2l0aCBhbGwgbWF0Y2hlcy5cbiAqXG4gKiBFYWNoIHJ1bGUncyBgd2hlbmAgY2FuIGJlOlxuICogLSBBIGZ1bmN0aW9uOiAocykgPT4gcy5jcmVkaXRTY29yZSA+IDcwMCAgKGF1dG8tY2FwdHVyZXMgcmVhZHMgdmlhIHRlbXAgcmVjb3JkZXIpXG4gKiAtIEEgZmlsdGVyOiAgIHsgY3JlZGl0U2NvcmU6IHsgZ3Q6IDcwMCB9IH0gKGNhcHR1cmVzIHJlYWRzICsgb3BlcmF0b3JzICsgdGhyZXNob2xkcylcbiAqL1xuXG5pbXBvcnQgeyBpc0Rldk1vZGUgfSBmcm9tICcuLi9zY29wZS9kZXRlY3RDaXJjdWxhci5qcyc7XG5pbXBvcnQgdHlwZSB7IFNjb3BlUmVjb3JkZXIgfSBmcm9tICcuLi9zY29wZS90eXBlcy5qcyc7XG5pbXBvcnQgeyBldmFsdWF0ZUZpbHRlciB9IGZyb20gJy4vZXZhbHVhdG9yLmpzJztcbmltcG9ydCB7IEV2aWRlbmNlQ29sbGVjdG9yIH0gZnJvbSAnLi9ldmlkZW5jZS5qcyc7XG5pbXBvcnQgdHlwZSB7XG4gIERlY2lkZVJ1bGUsXG4gIERlY2lzaW9uRXZpZGVuY2UsXG4gIERlY2lzaW9uUmVzdWx0LFxuICBGaWx0ZXJDb25kaXRpb24sXG4gIEZpbHRlclJ1bGVFdmlkZW5jZSxcbiAgRnVuY3Rpb25SdWxlRXZpZGVuY2UsXG4gIFJ1bGVFdmlkZW5jZSxcbiAgU2VsZWN0aW9uRXZpZGVuY2UsXG4gIFNlbGVjdGlvblJlc3VsdCxcbiAgV2hlcmVGaWx0ZXIsXG59IGZyb20gJy4vdHlwZXMuanMnO1xuaW1wb3J0IHsgREVDSVNJT05fUkVTVUxUIH0gZnJvbSAnLi90eXBlcy5qcyc7XG5cbi8vIC0tIFNjb3BlIGFjY2Vzc29yIGhlbHBlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZnVuY3Rpb24gZ2V0QXR0YWNoRm4oc2NvcGU6IHVua25vd24pOiAoKHI6IFNjb3BlUmVjb3JkZXIpID0+IHZvaWQpIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgcyA9IHNjb3BlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBpZiAodHlwZW9mIHMuJGF0dGFjaFNjb3BlUmVjb3JkZXIgPT09ICdmdW5jdGlvbicpIHJldHVybiBzLiRhdHRhY2hTY29wZVJlY29yZGVyLmJpbmQocyk7XG4gIGlmICh0eXBlb2Ygcy5hdHRhY2hTY29wZVJlY29yZGVyID09PSAnZnVuY3Rpb24nKSByZXR1cm4gcy5hdHRhY2hTY29wZVJlY29yZGVyLmJpbmQocyk7XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGdldERldGFjaEZuKHNjb3BlOiB1bmtub3duKTogKChpZDogc3RyaW5nKSA9PiB2b2lkKSB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHMgPSBzY29wZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgaWYgKHR5cGVvZiBzLiRkZXRhY2hTY29wZVJlY29yZGVyID09PSAnZnVuY3Rpb24nKSByZXR1cm4gcy4kZGV0YWNoU2NvcGVSZWNvcmRlci5iaW5kKHMpO1xuICBpZiAodHlwZW9mIHMuZGV0YWNoU2NvcGVSZWNvcmRlciA9PT0gJ2Z1bmN0aW9uJykgcmV0dXJuIHMuZGV0YWNoU2NvcGVSZWNvcmRlci5iaW5kKHMpO1xuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBnZXRWYWx1ZUZuKHNjb3BlOiB1bmtub3duKTogKGtleTogc3RyaW5nKSA9PiB1bmtub3duIHtcbiAgY29uc3QgcyA9IHNjb3BlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAvLyBDaGVjayAkZ2V0VmFsdWUgZmlyc3Q6IG9uIFR5cGVkU2NvcGUsIGFjY2Vzc2luZyAuZ2V0VmFsdWUgdHJpZ2dlcnMgYSBzcHVyaW91c1xuICAvLyBvblJlYWQgZm9yIGtleSBcImdldFZhbHVlXCIgdmlhIHRoZSBQcm94eSBnZXQgdHJhcC4gJGdldFZhbHVlIHJvdXRlcyB0aHJvdWdoXG4gIC8vIFNDT1BFX01FVEhPRF9OQU1FUyBhbmQgYXZvaWRzIHRoZSBzdGF0ZS1yZWFkIHBhdGguXG4gIGlmICh0eXBlb2Ygcy4kZ2V0VmFsdWUgPT09ICdmdW5jdGlvbicpIHJldHVybiBzLiRnZXRWYWx1ZS5iaW5kKHMpO1xuICBpZiAodHlwZW9mIHMuZ2V0VmFsdWUgPT09ICdmdW5jdGlvbicpIHJldHVybiBzLmdldFZhbHVlLmJpbmQocyk7XG4gIHJldHVybiAoKSA9PiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGdldFJlZGFjdGVkRm4oc2NvcGU6IHVua25vd24pOiAoa2V5OiBzdHJpbmcpID0+IGJvb2xlYW4ge1xuICBjb25zdCBzID0gc2NvcGUgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIC8vIFRyeSAkdG9SYXcoKSBmaXJzdCAoVHlwZWRTY29wZSksIHRoZW4gZGlyZWN0XG4gIGNvbnN0IHJhdyA9IHR5cGVvZiBzLiR0b1JhdyA9PT0gJ2Z1bmN0aW9uJyA/IHMuJHRvUmF3KCkgOiBzO1xuICBjb25zdCByID0gcmF3IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBpZiAodHlwZW9mIHIuZ2V0UmVkYWN0ZWRLZXlzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY29uc3Qga2V5cyA9IHIuZ2V0UmVkYWN0ZWRLZXlzKCkgYXMgU2V0PHN0cmluZz47XG4gICAgcmV0dXJuIChrZXk6IHN0cmluZykgPT4ga2V5cy5oYXMoa2V5KTtcbiAgfVxuICByZXR1cm4gKCkgPT4gZmFsc2U7XG59XG5cbi8vIC0tIGV2YWx1YXRlIGEgc2luZ2xlIHJ1bGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZnVuY3Rpb24gZXZhbHVhdGVSdWxlPFMgZXh0ZW5kcyBvYmplY3Q+KFxuICBzY29wZTogUyxcbiAgcnVsZTogRGVjaWRlUnVsZTxTPixcbiAgaW5kZXg6IG51bWJlcixcbiAgYXR0YWNoRm4/OiAocjogU2NvcGVSZWNvcmRlcikgPT4gdm9pZCxcbiAgZGV0YWNoRm4/OiAoaWQ6IHN0cmluZykgPT4gdm9pZCxcbiAgdmFsdWVGbj86IChrZXk6IHN0cmluZykgPT4gdW5rbm93bixcbiAgcmVkYWN0ZWRGbj86IChrZXk6IHN0cmluZykgPT4gYm9vbGVhbixcbik6IFJ1bGVFdmlkZW5jZSB7XG4gIGlmICh0eXBlb2YgcnVsZS53aGVuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgLy8gRlVOQ1RJT04gUEFUSDogdGVtcCByZWNvcmRlciBjYXB0dXJlcyByZWFkcyAobGF6eSDigJQgc2tpcCBpZiBubyByZWNvcmRlciBzdXBwb3J0KVxuICAgIGNvbnN0IGhhc1JlY29yZGVyU3VwcG9ydCA9IEJvb2xlYW4oYXR0YWNoRm4pO1xuICAgIGNvbnN0IGNvbGxlY3RvciA9IGhhc1JlY29yZGVyU3VwcG9ydCA/IG5ldyBFdmlkZW5jZUNvbGxlY3RvcigpIDogdW5kZWZpbmVkO1xuICAgIGlmIChjb2xsZWN0b3IgJiYgYXR0YWNoRm4pIGF0dGFjaEZuKGNvbGxlY3Rvcik7XG5cbiAgICBsZXQgbWF0Y2hlZDogYm9vbGVhbjtcbiAgICBsZXQgbWF0Y2hFcnJvcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIHRyeSB7XG4gICAgICBtYXRjaGVkID0gcnVsZS53aGVuKHNjb3BlKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBtYXRjaGVkID0gZmFsc2U7XG4gICAgICAvLyBDYXB0dXJlIHRoZSBlcnJvciBmb3IgZGVidWdnaW5nIOKAlCBzdXJmYWNlIGl0IGluIGV2aWRlbmNlIGluc3RlYWQgb2Ygc3dhbGxvd2luZyBzaWxlbnRseVxuICAgICAgbWF0Y2hFcnJvciA9IGUgaW5zdGFuY2VvZiBFcnJvciA/IGUubWVzc2FnZSA6IFN0cmluZyhlKTtcbiAgICAgIGlmIChpc0Rldk1vZGUoKSkge1xuICAgICAgICBjb25zdCBsYWJlbCA9IHJ1bGUubGFiZWwgPyBgICgnJHtydWxlLmxhYmVsfScpYCA6ICcnO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICBjb25zb2xlLndhcm4oYFtmb290cHJpbnRdIGRlY2lkZSgpIHJ1bGUgJHtpbmRleH0ke2xhYmVsfSB0aHJldyBkdXJpbmcgZXZhbHVhdGlvbjogJHttYXRjaEVycm9yfWApO1xuICAgICAgfVxuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAoY29sbGVjdG9yICYmIGRldGFjaEZuKSBkZXRhY2hGbihjb2xsZWN0b3IuaWQpO1xuICAgIH1cblxuICAgIGNvbnN0IGV2aWRlbmNlOiBGdW5jdGlvblJ1bGVFdmlkZW5jZSA9IHtcbiAgICAgIHR5cGU6ICdmdW5jdGlvbicsXG4gICAgICBydWxlSW5kZXg6IGluZGV4LFxuICAgICAgYnJhbmNoOiBydWxlLnRoZW4sXG4gICAgICBtYXRjaGVkLFxuICAgICAgbGFiZWw6IHJ1bGUubGFiZWwsXG4gICAgICAvLyBQYXJ0aWFsIHJlYWRzOiBpZiBydWxlIHRocmV3IGFmdGVyIHNvbWUgZ2V0VmFsdWUoKSBjYWxscywgY29sbGVjdG9yIGhvbGRzIHJlYWRzIHVwIHRvIHRoZSB0aHJvdyBwb2ludFxuICAgICAgaW5wdXRzOiBjb2xsZWN0b3I/LmdldElucHV0cygpID8/IFtdLFxuICAgICAgLi4uKG1hdGNoRXJyb3IgIT09IHVuZGVmaW5lZCAmJiB7IG1hdGNoRXJyb3IgfSksXG4gICAgfTtcbiAgICByZXR1cm4gZXZpZGVuY2U7XG4gIH0gZWxzZSB7XG4gICAgLy8gRklMVEVSIFBBVEg6IHJlYWRzIHZhbHVlcyBkaXJlY3RseSB2aWEgY2FsbGJhY2tzIChubyByZWNvcmRlcik7IGV4Y2VwdGlvbnMgdHJlYXRlZCBhcyBub24tbWF0Y2hcbiAgICBjb25zdCByZXNvbHZlZFZhbHVlRm4gPSB2YWx1ZUZuID8/ICgoKSA9PiB1bmRlZmluZWQpO1xuICAgIGNvbnN0IHJlc29sdmVkUmVkYWN0ZWRGbiA9IHJlZGFjdGVkRm4gPz8gKCgpID0+IGZhbHNlKTtcbiAgICBsZXQgZmlsdGVyTWF0Y2hlZCA9IGZhbHNlO1xuICAgIGxldCBmaWx0ZXJDb25kaXRpb25zOiBGaWx0ZXJDb25kaXRpb25bXSA9IFtdO1xuICAgIGxldCBtYXRjaEVycm9yOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGV2YWx1YXRlRmlsdGVyKHJlc29sdmVkVmFsdWVGbiwgcmVzb2x2ZWRSZWRhY3RlZEZuLCBydWxlLndoZW4gYXMgV2hlcmVGaWx0ZXI8Uz4pO1xuICAgICAgZmlsdGVyTWF0Y2hlZCA9IHJlc3VsdC5tYXRjaGVkO1xuICAgICAgZmlsdGVyQ29uZGl0aW9ucyA9IHJlc3VsdC5jb25kaXRpb25zO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGZpbHRlck1hdGNoZWQgPSBmYWxzZTtcbiAgICAgIGZpbHRlckNvbmRpdGlvbnMgPSBbXTtcbiAgICAgIC8vIENhcHR1cmUgdGhlIGVycm9yIGZvciBkZWJ1Z2dpbmcg4oCUIHN1cmZhY2UgaXQgaW4gZXZpZGVuY2UgaW5zdGVhZCBvZiBzd2FsbG93aW5nIHNpbGVudGx5XG4gICAgICBtYXRjaEVycm9yID0gZSBpbnN0YW5jZW9mIEVycm9yID8gZS5tZXNzYWdlIDogU3RyaW5nKGUpO1xuICAgICAgaWYgKGlzRGV2TW9kZSgpKSB7XG4gICAgICAgIGNvbnN0IGxhYmVsID0gcnVsZS5sYWJlbCA/IGAgKCcke3J1bGUubGFiZWx9JylgIDogJyc7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgIGNvbnNvbGUud2FybihgW2Zvb3RwcmludF0gZGVjaWRlKCkgZmlsdGVyIHJ1bGUgJHtpbmRleH0ke2xhYmVsfSB0aHJldyBkdXJpbmcgZXZhbHVhdGlvbjogJHttYXRjaEVycm9yfWApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGV2aWRlbmNlOiBGaWx0ZXJSdWxlRXZpZGVuY2UgPSB7XG4gICAgICB0eXBlOiAnZmlsdGVyJyxcbiAgICAgIHJ1bGVJbmRleDogaW5kZXgsXG4gICAgICBicmFuY2g6IHJ1bGUudGhlbixcbiAgICAgIG1hdGNoZWQ6IGZpbHRlck1hdGNoZWQsXG4gICAgICBsYWJlbDogcnVsZS5sYWJlbCxcbiAgICAgIGNvbmRpdGlvbnM6IGZpbHRlckNvbmRpdGlvbnMsXG4gICAgICAuLi4obWF0Y2hFcnJvciAhPT0gdW5kZWZpbmVkICYmIHsgbWF0Y2hFcnJvciB9KSxcbiAgICB9O1xuICAgIHJldHVybiBldmlkZW5jZTtcbiAgfVxufVxuXG4vLyAtLSBkZWNpZGUoKSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICogRXZhbHVhdGVzIHJ1bGVzIGluIG9yZGVyIChmaXJzdC1tYXRjaCkuIFJldHVybnMgYSBicmFuZGVkIERlY2lzaW9uUmVzdWx0LlxuICpcbiAqIEBwYXJhbSBzY29wZSAtIFR5cGVkU2NvcGUgb3IgU2NvcGVGYWNhZGVcbiAqIEBwYXJhbSBydWxlcyAtIEFycmF5IG9mIERlY2lkZVJ1bGUgKGZ1bmN0aW9uIG9yIGZpbHRlciB3aGVuIGNsYXVzZXMpXG4gKiBAcGFyYW0gZGVmYXVsdEJyYW5jaCAtIEJyYW5jaCBJRCBpZiBubyBydWxlIG1hdGNoZXNcbiAqXG4gKiAqKkVycm9yIGJlaGF2aW9yOioqIElmIGEgYHdoZW5gIGZ1bmN0aW9uIHRocm93cyBkdXJpbmcgZXZhbHVhdGlvbiwgdGhlIHJ1bGUgaXNcbiAqIHRyZWF0ZWQgYXMgbm9uLW1hdGNoaW5nIChgbWF0Y2hlZDogZmFsc2VgKSBhbmQgdGhlIGVycm9yIG1lc3NhZ2UgaXMgY2FwdHVyZWQgaW5cbiAqIGBtYXRjaEVycm9yYCBvbiB0aGF0IHJ1bGUncyBgUnVsZUV2aWRlbmNlYCBlbnRyeS4gRXhlY3V0aW9uIGNvbnRpbnVlcyB3aXRoXG4gKiBzdWJzZXF1ZW50IHJ1bGVzOyBlcnJvcnMgZG8gbm90IHByb3BhZ2F0ZSB0byB0aGUgY2FsbGVyLlxuICpcbiAqICoqRW1wdHktZmlsdGVyIGJlaGF2aW9yIChhbnRpLXZhY3VvdXMtdHJ1dGgpOioqIGEgZmlsdGVyIHJ1bGUgd2hvc2UgYHdoZW5gIGlzXG4gKiBge31gIChubyBldmFsdWFibGUgY29uZGl0aW9ucykgTkVWRVIgbWF0Y2hlcy4gVGhpcyBkZWxpYmVyYXRlbHkgaW52ZXJ0cyB0aGVcbiAqIFByaXNtYS9TUUwgYHdoZXJlOiB7fWAgaW50dWl0aW9uIChcIm1hdGNoIGV2ZXJ5dGhpbmdcIikg4oCUIGEgcnVsZSB0aGF0IGFzc2VydHNcbiAqIG5vdGhpbmcgbXVzdCBub3Qgd2luIGEgYnJhbmNoIG9uIHZhY3VvdXMgdHJ1dGguIFVzZSBgZGVmYXVsdEJyYW5jaGAgZm9yIHRoZVxuICogY2F0Y2gtYWxsIGluc3RlYWQuIFVua25vd24gZmlsdGVyIG9wZXJhdG9ycyBhbHNvIG5ldmVyIG1hdGNoIChkZXYgbW9kZSB3YXJucykuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNpZGU8UyBleHRlbmRzIG9iamVjdD4oc2NvcGU6IFMsIHJ1bGVzOiBEZWNpZGVSdWxlPFM+W10sIGRlZmF1bHRCcmFuY2g6IHN0cmluZyk6IERlY2lzaW9uUmVzdWx0IHtcbiAgY29uc3QgYXR0YWNoRm4gPSBnZXRBdHRhY2hGbihzY29wZSk7XG4gIGNvbnN0IGRldGFjaEZuID0gZ2V0RGV0YWNoRm4oc2NvcGUpO1xuICBjb25zdCB2YWx1ZUZuID0gZ2V0VmFsdWVGbihzY29wZSk7XG4gIGNvbnN0IHJlZGFjdGVkRm4gPSBnZXRSZWRhY3RlZEZuKHNjb3BlKTtcblxuICBjb25zdCBldmFsdWF0ZWRSdWxlczogUnVsZUV2aWRlbmNlW10gPSBbXTtcblxuICBmb3IgKGNvbnN0IFtpbmRleCwgcnVsZV0gb2YgcnVsZXMuZW50cmllcygpKSB7XG4gICAgY29uc3QgcnVsZUV2aWRlbmNlID0gZXZhbHVhdGVSdWxlKHNjb3BlLCBydWxlLCBpbmRleCwgYXR0YWNoRm4sIGRldGFjaEZuLCB2YWx1ZUZuLCByZWRhY3RlZEZuKTtcbiAgICBldmFsdWF0ZWRSdWxlcy5wdXNoKHJ1bGVFdmlkZW5jZSk7XG5cbiAgICBpZiAocnVsZUV2aWRlbmNlLm1hdGNoZWQpIHtcbiAgICAgIGNvbnN0IGV2aWRlbmNlOiBEZWNpc2lvbkV2aWRlbmNlID0ge1xuICAgICAgICBydWxlczogZXZhbHVhdGVkUnVsZXMsXG4gICAgICAgIGNob3NlbjogcnVsZS50aGVuLFxuICAgICAgICBkZWZhdWx0OiBkZWZhdWx0QnJhbmNoLFxuICAgICAgfTtcbiAgICAgIHJldHVybiB7IGJyYW5jaDogcnVsZS50aGVuLCBbREVDSVNJT05fUkVTVUxUXTogdHJ1ZSwgZXZpZGVuY2UgfTtcbiAgICB9XG4gIH1cblxuICAvLyBEZWZhdWx0OiBubyBydWxlIG1hdGNoZWRcbiAgY29uc3QgZXZpZGVuY2U6IERlY2lzaW9uRXZpZGVuY2UgPSB7XG4gICAgcnVsZXM6IGV2YWx1YXRlZFJ1bGVzLFxuICAgIGNob3NlbjogZGVmYXVsdEJyYW5jaCxcbiAgICBkZWZhdWx0OiBkZWZhdWx0QnJhbmNoLFxuICB9O1xuICByZXR1cm4geyBicmFuY2g6IGRlZmF1bHRCcmFuY2gsIFtERUNJU0lPTl9SRVNVTFRdOiB0cnVlLCBldmlkZW5jZSB9O1xufVxuXG4vLyAtLSBzZWxlY3QoKSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICogRXZhbHVhdGVzIEFMTCBydWxlcyAobm90IGZpcnN0LW1hdGNoKS4gUmV0dXJucyBhIGJyYW5kZWQgU2VsZWN0aW9uUmVzdWx0LlxuICpcbiAqIEBwYXJhbSBzY29wZSAtIFR5cGVkU2NvcGUgb3IgU2NvcGVGYWNhZGVcbiAqIEBwYXJhbSBydWxlcyAtIEFycmF5IG9mIERlY2lkZVJ1bGUgKGZ1bmN0aW9uIG9yIGZpbHRlciB3aGVuIGNsYXVzZXMpXG4gKlxuICogKipFcnJvciBiZWhhdmlvcjoqKiBJZiBhIGB3aGVuYCBmdW5jdGlvbiB0aHJvd3MgZHVyaW5nIGV2YWx1YXRpb24sIHRoZSBydWxlIGlzXG4gKiB0cmVhdGVkIGFzIG5vbi1tYXRjaGluZyAoYG1hdGNoZWQ6IGZhbHNlYCkgYW5kIHRoZSBlcnJvciBtZXNzYWdlIGlzIGNhcHR1cmVkIGluXG4gKiBgbWF0Y2hFcnJvcmAgb24gdGhhdCBydWxlJ3MgYFJ1bGVFdmlkZW5jZWAgZW50cnkuIEV2YWx1YXRpb24gY29udGludWVzIHdpdGhcbiAqIHJlbWFpbmluZyBydWxlczsgZXJyb3JzIGRvIG5vdCBwcm9wYWdhdGUgdG8gdGhlIGNhbGxlci5cbiAqXG4gKiAqKkVtcHR5LWZpbHRlciBiZWhhdmlvciAoYW50aS12YWN1b3VzLXRydXRoKToqKiBhIGZpbHRlciBydWxlIHdob3NlIGB3aGVuYCBpc1xuICogYHt9YCAobm8gZXZhbHVhYmxlIGNvbmRpdGlvbnMpIE5FVkVSIG1hdGNoZXMg4oCUIHNhbWUgcnVsZSBhcyBgZGVjaWRlKClgOyBhblxuICogYWx3YXlzLXNlbGVjdGVkIGJyYW5jaCBtdXN0IGJlIGV4cHJlc3NlZCBleHBsaWNpdGx5LCBub3QgdmlhIGFuIGVtcHR5IGZpbHRlci5cbiAqIFVua25vd24gZmlsdGVyIG9wZXJhdG9ycyBhbHNvIG5ldmVyIG1hdGNoIChkZXYgbW9kZSB3YXJucykuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZWxlY3Q8UyBleHRlbmRzIG9iamVjdD4oc2NvcGU6IFMsIHJ1bGVzOiBEZWNpZGVSdWxlPFM+W10pOiBTZWxlY3Rpb25SZXN1bHQge1xuICBjb25zdCBhdHRhY2hGbiA9IGdldEF0dGFjaEZuKHNjb3BlKTtcbiAgY29uc3QgZGV0YWNoRm4gPSBnZXREZXRhY2hGbihzY29wZSk7XG4gIGNvbnN0IHZhbHVlRm4gPSBnZXRWYWx1ZUZuKHNjb3BlKTtcbiAgY29uc3QgcmVkYWN0ZWRGbiA9IGdldFJlZGFjdGVkRm4oc2NvcGUpO1xuXG4gIGNvbnN0IGV2YWx1YXRlZFJ1bGVzOiBSdWxlRXZpZGVuY2VbXSA9IFtdO1xuICBjb25zdCBzZWxlY3RlZEJyYW5jaGVzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgW2luZGV4LCBydWxlXSBvZiBydWxlcy5lbnRyaWVzKCkpIHtcbiAgICBjb25zdCBydWxlRXZpZGVuY2UgPSBldmFsdWF0ZVJ1bGUoc2NvcGUsIHJ1bGUsIGluZGV4LCBhdHRhY2hGbiwgZGV0YWNoRm4sIHZhbHVlRm4sIHJlZGFjdGVkRm4pO1xuICAgIGV2YWx1YXRlZFJ1bGVzLnB1c2gocnVsZUV2aWRlbmNlKTtcblxuICAgIGlmIChydWxlRXZpZGVuY2UubWF0Y2hlZCkge1xuICAgICAgc2VsZWN0ZWRCcmFuY2hlcy5wdXNoKHJ1bGUudGhlbik7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgZXZpZGVuY2U6IFNlbGVjdGlvbkV2aWRlbmNlID0ge1xuICAgIHJ1bGVzOiBldmFsdWF0ZWRSdWxlcyxcbiAgICBzZWxlY3RlZDogc2VsZWN0ZWRCcmFuY2hlcyxcbiAgfTtcbiAgcmV0dXJuIHsgYnJhbmNoZXM6IHNlbGVjdGVkQnJhbmNoZXMsIFtERUNJU0lPTl9SRVNVTFRdOiB0cnVlLCBldmlkZW5jZSB9O1xufVxuIl19
@@ -7,6 +7,7 @@
7
7
  * All keys in the filter are ANDed (all must match for the rule to match).
8
8
  * Decoupled from ScopeFacade — receives callbacks, not scope.
9
9
  */
10
+ import { isDevMode } from '../scope/detectCircular.js';
10
11
  import { summarizeValue } from '../scope/recorders/summarizeValue.js';
11
12
  const OPERATOR_HANDLERS = {
12
13
  eq: (a, t) => a === t,
@@ -54,6 +55,23 @@ const MAX_VALUE_LEN = 80;
54
55
  /**
55
56
  * Evaluates a Prisma-style filter against scope values.
56
57
  *
58
+ * ## Empty filter → NO match (anti-vacuous-truth — inverts Prisma/SQL)
59
+ *
60
+ * A filter with no evaluable conditions (`{}`, or only denied/non-object
61
+ * keys) returns `matched: false`. This deliberately INVERTS the Prisma/SQL
62
+ * intuition where `where: {}` matches everything: in a decision rule, a rule
63
+ * that asserts nothing should never win a branch — "all zero conditions
64
+ * passed" is vacuous truth, and silently routing on it would fabricate
65
+ * decision evidence. Want a catch-all? Use the explicit `defaultBranch`
66
+ * argument of `decide()` instead of an empty `when`.
67
+ *
68
+ * ## Unknown operators → condition fails (+ dev-mode warning)
69
+ *
70
+ * An operator outside the supported set (`eq, ne, gt, gte, lt, lte, in,
71
+ * notIn`) records a failed condition — the rule can never spuriously match
72
+ * through a typo (`gte` misspelled `gle`). With dev mode enabled
73
+ * (`enableDevMode()`), a console warning names the unknown operator and key.
74
+ *
57
75
  * @param getValueFn - Reads a value from scope by key (raw, for comparison)
58
76
  * @param isRedactedFn - Checks if a key is redacted (for evidence display)
59
77
  * @param filter - The WhereFilter to evaluate
@@ -78,6 +96,11 @@ export function evaluateFilter(getValueFn, isRedactedFn, filter) {
78
96
  const handler = OPERATOR_HANDLERS[op];
79
97
  if (!handler) {
80
98
  // Unknown operator: treat as failed condition so rule doesn't spuriously match
99
+ if (isDevMode()) {
100
+ // eslint-disable-next-line no-console
101
+ console.warn(`[footprint] decide()/select() filter: unknown operator "${op}" on key "${key}" — ` +
102
+ `condition never matches (valid operators: ${Object.keys(OPERATOR_HANDLERS).join(', ')})`);
103
+ }
81
104
  conditions.push({ key, op, threshold, actualSummary: displayValue, result: false, redacted });
82
105
  allMatched = false;
83
106
  continue;
@@ -95,9 +118,12 @@ export function evaluateFilter(getValueFn, isRedactedFn, filter) {
95
118
  allMatched = false;
96
119
  }
97
120
  }
98
- // Empty filter (no evaluable conditions) should NOT match — prevents vacuous truth
121
+ // Empty filter (no evaluable conditions) should NOT match — prevents vacuous
122
+ // truth. NOTE: this deliberately inverts Prisma/SQL `where: {}` ("match
123
+ // everything") — see the function JSDoc. Catch-alls belong in decide()'s
124
+ // explicit defaultBranch, not in an empty rule.
99
125
  if (conditions.length === 0)
100
126
  return { matched: false, conditions };
101
127
  return { matched: allMatched, conditions };
102
128
  }
103
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZhbHVhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9kZWNpZGUvZXZhbHVhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBT3RFLE1BQU0saUJBQWlCLEdBQStCO0lBQ3BELEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ3JCLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ3JCLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFFLENBQVksR0FBSSxDQUFZO0lBQzNDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFFLENBQVksSUFBSyxDQUFZO0lBQzdDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFFLENBQVksR0FBSSxDQUFZO0lBQzNDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFFLENBQVksSUFBSyxDQUFZO0lBQzdDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUNYLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxDQUFDLE1BQU0sR0FBRyxpQkFBaUIsRUFBRSxDQUFDO1lBQ2pDLE1BQU0sSUFBSSxLQUFLLENBQUMsMENBQTBDLGlCQUFpQixFQUFFLENBQUMsQ0FBQztRQUNqRixDQUFDO1FBQ0QsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFDRCxLQUFLLEVB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QU0sS0FBSyxDQUFDO1FBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLENBQUM7SUFFbkUsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLENBQUM7QUFDN0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogZGVjaWRlL2V2YWx1YXRvciAtLSBQcmlzbWEtc3R5bGUgZmlsdGVyIGV2YWx1YXRvciBmb3IgZGVjaXNpb24gcnVsZXMuXG4gKlxuICogUHVyZSBmdW5jdGlvbi4gVGFrZXMgYSBXaGVyZUZpbHRlciwgYSB2YWx1ZSBnZXR0ZXIsIGFuZCBhIHJlZGFjdGlvbiBjaGVja2VyLlxuICogRXZhbHVhdGVzIGVhY2ggY29uZGl0aW9uLCByZWNvcmRzIHRoZSByZXN1bHQsIHJldHVybnMgbWF0Y2hlZC9jb25kaXRpb25zLlxuICpcbiAqIEFsbCBrZXlzIGluIHRoZSBmaWx0ZXIgYXJlIEFORGVkIChhbGwgbXVzdCBtYXRjaCBmb3IgdGhlIHJ1bGUgdG8gbWF0Y2gpLlxuICogRGVjb3VwbGVkIGZyb20gU2NvcGVGYWNhZGUg4oCUIHJlY2VpdmVzIGNhbGxiYWNrcywgbm90IHNjb3BlLlxuICovXG5cbmltcG9ydCB7IHN1bW1hcml6ZVZhbHVlIH0gZnJvbSAnLi4vc2NvcGUvcmVjb3JkZXJzL3N1bW1hcml6ZVZhbHVlLmpzJztcbmltcG9ydCB0eXBlIHsgRmlsdGVyQ29uZGl0aW9uLCBXaGVyZUZpbHRlciB9IGZyb20gJy4vdHlwZXMuanMnO1xuXG4vLyAtLSBPcGVyYXRvciBkaXNwYXRjaCB0YWJsZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbnR5cGUgT3BlcmF0b3JGbiA9IChhY3R1YWw6IHVua25vd24sIHRocmVzaG9sZDogdW5rbm93bikgPT4gYm9vbGVhbjtcblxuY29uc3QgT1BFUkFUT1JfSEFORExFUlM6IFJlY29yZDxzdHJpbmcsIE9wZXJhdG9yRm4+ID0ge1xuICBlcTogKGEsIHQpID0+IGEgPT09IHQsXG4gIG5lOiAoYSwgdCkgPT4gYSAhPT0gdCxcbiAgZ3Q6IChhLCB0KSA9PiAoYSBhcyBudW1iZXIpID4gKHQgYXMgbnVtYmVyKSxcbiAgZ3RlOiAoYSwgdCkgPT4gKGEgYXMgbnVtYmVyKSA+PSAodCBhcyBudW1iZXIpLFxuICBsdDogKGEsIHQpID0+IChhIGFzIG51bWJlcikgPCAodCBhcyBudW1iZXIpLFxuICBsdGU6IChhLCB0KSA9PiAoYSBhcyBudW1iZXIpIDw9ICh0IGFzIG51bWJlciksXG4gIGluOiAoYSwgdCkgPT4ge1xuICAgIGlmICghQXJyYXkuaXNBcnJheSh0KSkgcmV0dXJuIGZhbHNlO1xuICAgIGlmICh0Lmxlbmd0aCA+IE1BWF9JTl9BUlJBWV9TSVpFKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGluL25vdEluIGFycmF5IGV4Y2VlZHMgbWF4aW11bSBzaXplIG9mICR7TUFYX0lOX0FSUkFZX1NJWkV9YCk7XG4gICAgfVxuICAgIHJldHVybiB0LmluY2x1ZGVzKGEpO1xuICB9LFxuICBub3RJbjogKGEsIHQpID0+IHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkodCkpIHJldHVybiB0cnVlOyAvLyBub3QgaW4gYSBub24tYXJyYXkgPSB2YWN1b3VzbHkgdHJ1ZVxuICAgIGlmICh0Lmxlbmd0aCA+IE1BWF9JTl9BUlJBWV9TSVpFKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGluL25vdEluIGFycmF5IGV4Y2VlZHMgbWF4aW11bSBzaXplIG9mICR7TUFYX0lOX0FSUkFZX1NJWkV9YCk7XG4gICAgfVxuICAgIHJldHVybiAhdC5pbmNsdWRlcyhhKTtcbiAgfSxcbn07XG5cbi8vIC0tIFNlY3VyaXR5OiBwcm90b3R5cGUgcG9sbHV0aW9uIGRlbnlsaXN0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuY29uc3QgREVOSUVEX0tFWVMgPSBuZXcgU2V0KFtcbiAgJ19fcHJvdG9fXycsXG4gICdjb25zdHJ1Y3RvcicsXG4gICdwcm90b3R5cGUnLFxuICAndG9TdHJpbmcnLFxuICAndmFsdWVPZicsXG4gICdoYXNPd25Qcm9wZXJ0eScsXG4gICdpc1Byb3RvdHlwZU9mJyxcbiAgJ3Byb3BlcnR5SXNFbnVtZXJhYmxlJyxcbiAgJ19fZGVmaW5lR2V0dGVyX18nLFxuICAnX19kZWZpbmVTZXR0ZXJfXycsXG4gICdfX2xvb2t1cEdldHRlcl9fJyxcbiAgJ19fbG9va3VwU2V0dGVyX18nLFxuXSk7XG5cbi8vIC0tIENvbnN0YW50cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuY29uc3QgTUFYX0lOX0FSUkFZX1NJWkUgPSAxMDAwO1xuY29uc3QgTUFYX1ZBTFVFX0xFTiA9IDgwO1xuXG4vLyAtLSBFdmFsdWF0b3IgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICogRXZhbHVhdGVzIGEgUHJpc21hLXN0eWxlIGZpbHRlciBhZ2FpbnN0IHNjb3BlIHZhbHVlcy5cbiAqXG4gKiBAcGFyYW0gZ2V0VmFsdWVGbiAtIFJlYWRzIGEgdmFsdWUgZnJvbSBzY29wZSBieSBrZXkgKHJhdywgZm9yIGNvbXBhcmlzb24pXG4gKiBAcGFyYW0gaXNSZWRhY3RlZEZuIC0gQ2hlY2tzIGlmIGEga2V5IGlzIHJlZGFjdGVkIChmb3IgZXZpZGVuY2UgZGlzcGxheSlcbiAqIEBwYXJhbSBmaWx0ZXIgLSBUaGUgV2hlcmVGaWx0ZXIgdG8gZXZhbHVhdGVcbiAqIEByZXR1cm5zIHsgbWF0Y2hlZCwgY29uZGl0aW9ucyB9IOKAlCBtYXRjaGVkID0gYWxsIGNvbmRpdGlvbnMgcGFzc2VkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBldmFsdWF0ZUZpbHRlcjxUIGV4dGVuZHMgb2JqZWN0PihcbiAgZ2V0VmFsdWVGbjogKGtleTogc3RyaW5nKSA9PiB1bmtub3duLFxuICBpc1JlZGFjdGVkRm46IChrZXk6IHN0cmluZykgPT4gYm9vbGVhbixcbiAgZmlsdGVyOiBXaGVyZUZpbHRlcjxUPixcbik6IHsgbWF0Y2hlZDogYm9vbGVhbjsgY29uZGl0aW9uczogRmlsdGVyQ29uZGl0aW9uW10gfSB7XG4gIGNvbnN0IGNvbmRpdGlvbnM6IEZpbHRlckNvbmRpdGlvbltdID0gW107XG4gIGxldCBhbGxNYXRjaGVkID0gdHJ1ZTtcblxuICBmb3IgKGNvbnN0IFtrZXksIG9wc10gb2YgT2JqZWN0LmVudHJpZXMoZmlsdGVyKSkge1xuICAgIC8vIFNlY3VyaXR5OiBkZW5pZWQga2V5cyBjYXVzZSBydWxlIHRvIGZhaWwgKGNvbnNpc3RlbnQgd2l0aCB1bmtub3duIG9wZXJhdG9yIGJlaGF2aW9yKVxuICAgIGlmIChERU5JRURfS0VZUy5oYXMoa2V5KSkge1xuICAgICAgYWxsTWF0Y2hlZCA9IGZhbHNlO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmICghb3BzIHx8IHR5cGVvZiBvcHMgIT09ICdvYmplY3QnKSBjb250aW51ZTtcblxuICAgIGNvbnN0IGFjdHVhbCA9IGdldFZhbHVlRm4oa2V5KTtcbiAgICBjb25zdCByZWRhY3RlZCA9IGlzUmVkYWN0ZWRGbihrZXkpO1xuICAgIGNvbnN0IGRpc3BsYXlWYWx1ZSA9IHJlZGFjdGVkID8gJ1tSRURBQ1RFRF0nIDogc3VtbWFyaXplVmFsdWUoYWN0dWFsLCBNQVhfVkFMVUVfTEVOKTtcblxuICAgIC8vIEV2YWx1YXRlIGVhY2ggb3BlcmF0b3IgaW4gdGhlIEZpbHRlck9wcyBmb3IgdGhpcyBrZXlcbiAgICBmb3IgKGNvbnN0IFtvcCwgdGhyZXNob2xkXSBvZiBPYmplY3QuZW50cmllcyhvcHMgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pKSB7XG4gICAgICBjb25zdCBoYW5kbGVyID0gT1BFUkFUT1JfSEFORExFUlNbb3BdO1xuICAgICAgaWYgKCFoYW5kbGVyKSB7XG4gICAgICAgIC8vIFVua25vd24gb3BlcmF0b3I6IHRyZWF0IGFzIGZhaWxlZCBjb25kaXRpb24gc28gcnVsZSBkb2Vzbid0IHNwdXJpb3VzbHkgbWF0Y2hcbiAgICAgICAgY29uZGl0aW9ucy5wdXNoKHsga2V5LCBvcCwgdGhyZXNob2xkLCBhY3R1YWxTdW1tYXJ5OiBkaXNwbGF5VmFsdWUsIHJlc3VsdDogZmFsc2UsIHJlZGFjdGVkIH0pO1xuICAgICAgICBhbGxNYXRjaGVkID0gZmFsc2U7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCByZXN1bHQgPSBoYW5kbGVyKGFjdHVhbCwgdGhyZXNob2xkKTtcbiAgICAgIGNvbmRpdGlvbnMucHVzaCh7XG4gICAgICAgIGtleSxcbiAgICAgICAgb3AsXG4gICAgICAgIHRocmVzaG9sZCxcbiAgICAgICAgYWN0dWFsU3VtbWFyeTogZGlzcGxheVZhbHVlLFxuICAgICAgICByZXN1bHQsXG4gICAgICAgIHJlZGFjdGVkLFxuICAgICAgfSk7XG5cbiAgICAgIGlmICghcmVzdWx0KSBhbGxNYXRjaGVkID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLy8gRW1wdHkgZmlsdGVyIChubyBldmFsdWFibGUgY29uZGl0aW9ucykgc2hvdWxkIE5PVCBtYXRjaCDigJQgcHJldmVudHMgdmFjdW91cyB0cnV0aFxuICBpZiAoY29uZGl0aW9ucy5sZW5ndGggPT09IDApIHJldHVybiB7IG1hdGNoZWQ6IGZhbHNlLCBjb25kaXRpb25zIH07XG5cbiAgcmV0dXJuIHsgbWF0Y2hlZDogYWxsTWF0Y2hlZCwgY29uZGl0aW9ucyB9O1xufVxuIl19
129
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZhbHVhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9kZWNpZGUvZXZhbHVhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQU90RSxNQUFNLGlCQUFpQixHQUErQjtJQUNwRCxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUNyQixFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUNyQixFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBRSxDQUFZLEdBQUksQ0FBWTtJQUMzQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBRSxDQUFZLElBQUssQ0FBWTtJQUM3QyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBRSxDQUFZLEdBQUksQ0FBWTtJQUMzQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBRSxDQUFZLElBQUssQ0FBWTtJQUM3QyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDWCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUNwQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEdBQUcsaUJBQWlCLEVBQUUsQ0FBQztZQUNqQyxNQUFNLElBQUksS0FBSyxDQUFDLDBDQUEwQyxpQkFBaUIsRUFBRSxDQUFDLENBQUM7UUFDakYsQ0FBQztRQUNELE9BQU8sQ0FBQyxDQUFDLFFBQVEs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QUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQztZQUMxQyxVQUFVLENBQUMsSUFBSSxDQUFDO2dCQUNkLEdBQUc7Z0JBQ0gsRUFBRTtnQkFDRixTQUFTO2dCQUNULGFBQWEsRUFBRSxZQUFZO2dCQUMzQixNQUFNO2dCQUNOLFFBQVE7YUFDVCxDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMsTUFBTTtnQkFBRSxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ2xDLENBQUM7SUFDSCxDQUFDO0lBRUQsNkVBQTZFO0lBQzdFLHdFQUF3RTtJQUN4RSx5RUFBeUU7SUFDekUsZ0RBQWdEO0lBQ2hELElBQUksVUFBVSxDQUFDLE1BQU0sS0FBSyxDQUFDO1FBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLENBQUM7SUFFbkUsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLENBQUM7QUFDN0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogZGVjaWRlL2V2YWx1YXRvciAtLSBQcmlzbWEtc3R5bGUgZmlsdGVyIGV2YWx1YXRvciBmb3IgZGVjaXNpb24gcnVsZXMuXG4gKlxuICogUHVyZSBmdW5jdGlvbi4gVGFrZXMgYSBXaGVyZUZpbHRlciwgYSB2YWx1ZSBnZXR0ZXIsIGFuZCBhIHJlZGFjdGlvbiBjaGVja2VyLlxuICogRXZhbHVhdGVzIGVhY2ggY29uZGl0aW9uLCByZWNvcmRzIHRoZSByZXN1bHQsIHJldHVybnMgbWF0Y2hlZC9jb25kaXRpb25zLlxuICpcbiAqIEFsbCBrZXlzIGluIHRoZSBmaWx0ZXIgYXJlIEFORGVkIChhbGwgbXVzdCBtYXRjaCBmb3IgdGhlIHJ1bGUgdG8gbWF0Y2gpLlxuICogRGVjb3VwbGVkIGZyb20gU2NvcGVGYWNhZGUg4oCUIHJlY2VpdmVzIGNhbGxiYWNrcywgbm90IHNjb3BlLlxuICovXG5cbmltcG9ydCB7IGlzRGV2TW9kZSB9IGZyb20gJy4uL3Njb3BlL2RldGVjdENpcmN1bGFyLmpzJztcbmltcG9ydCB7IHN1bW1hcml6ZVZhbHVlIH0gZnJvbSAnLi4vc2NvcGUvcmVjb3JkZXJzL3N1bW1hcml6ZVZhbHVlLmpzJztcbmltcG9ydCB0eXBlIHsgRmlsdGVyQ29uZGl0aW9uLCBXaGVyZUZpbHRlciB9IGZyb20gJy4vdHlwZXMuanMnO1xuXG4vLyAtLSBPcGVyYXRvciBkaXNwYXRjaCB0YWJsZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbnR5cGUgT3BlcmF0b3JGbiA9IChhY3R1YWw6IHVua25vd24sIHRocmVzaG9sZDogdW5rbm93bikgPT4gYm9vbGVhbjtcblxuY29uc3QgT1BFUkFUT1JfSEFORExFUlM6IFJlY29yZDxzdHJpbmcsIE9wZXJhdG9yRm4+ID0ge1xuICBlcTogKGEsIHQpID0+IGEgPT09IHQsXG4gIG5lOiAoYSwgdCkgPT4gYSAhPT0gdCxcbiAgZ3Q6IChhLCB0KSA9PiAoYSBhcyBudW1iZXIpID4gKHQgYXMgbnVtYmVyKSxcbiAgZ3RlOiAoYSwgdCkgPT4gKGEgYXMgbnVtYmVyKSA+PSAodCBhcyBudW1iZXIpLFxuICBsdDogKGEsIHQpID0+IChhIGFzIG51bWJlcikgPCAodCBhcyBudW1iZXIpLFxuICBsdGU6IChhLCB0KSA9PiAoYSBhcyBudW1iZXIpIDw9ICh0IGFzIG51bWJlciksXG4gIGluOiAoYSwgdCkgPT4ge1xuICAgIGlmICghQXJyYXkuaXNBcnJheSh0KSkgcmV0dXJuIGZhbHNlO1xuICAgIGlmICh0Lmxlbmd0aCA+IE1BWF9JTl9BUlJBWV9TSVpFKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGluL25vdEluIGFycmF5IGV4Y2VlZHMgbWF4aW11bSBzaXplIG9mICR7TUFYX0lOX0FSUkFZX1NJWkV9YCk7XG4gICAgfVxuICAgIHJldHVybiB0LmluY2x1ZGVzKGEpO1xuICB9LFxuICBub3RJbjogKGEsIHQpID0+IHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkodCkpIHJldHVybiB0cnVlOyAvLyBub3QgaW4gYSBub24tYXJyYXkgPSB2YWN1b3VzbHkgdHJ1ZVxuICAgIGlmICh0Lmxlbmd0aCA+IE1BWF9JTl9BUlJBWV9TSVpFKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGluL25vdEluIGFycmF5IGV4Y2VlZHMgbWF4aW11bSBzaXplIG9mICR7TUFYX0lOX0FSUkFZX1NJWkV9YCk7XG4gICAgfVxuICAgIHJldHVybiAhdC5pbmNsdWRlcyhhKTtcbiAgfSxcbn07XG5cbi8vIC0tIFNlY3VyaXR5OiBwcm90b3R5cGUgcG9sbHV0aW9uIGRlbnlsaXN0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuY29uc3QgREVOSUVEX0tFWVMgPSBuZXcgU2V0KFtcbiAgJ19fcHJvdG9fXycsXG4gICdjb25zdHJ1Y3RvcicsXG4gICdwcm90b3R5cGUnLFxuICAndG9TdHJpbmcnLFxuICAndmFsdWVPZicsXG4gICdoYXNPd25Qcm9wZXJ0eScsXG4gICdpc1Byb3RvdHlwZU9mJyxcbiAgJ3Byb3BlcnR5SXNFbnVtZXJhYmxlJyxcbiAgJ19fZGVmaW5lR2V0dGVyX18nLFxuICAnX19kZWZpbmVTZXR0ZXJfXycsXG4gICdfX2xvb2t1cEdldHRlcl9fJyxcbiAgJ19fbG9va3VwU2V0dGVyX18nLFxuXSk7XG5cbi8vIC0tIENvbnN0YW50cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuY29uc3QgTUFYX0lOX0FSUkFZX1NJWkUgPSAxMDAwO1xuY29uc3QgTUFYX1ZBTFVFX0xFTiA9IDgwO1xuXG4vLyAtLSBFdmFsdWF0b3IgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICogRXZhbHVhdGVzIGEgUHJpc21hLXN0eWxlIGZpbHRlciBhZ2FpbnN0IHNjb3BlIHZhbHVlcy5cbiAqXG4gKiAjIyBFbXB0eSBmaWx0ZXIg4oaSIE5PIG1hdGNoIChhbnRpLXZhY3VvdXMtdHJ1dGgg4oCUIGludmVydHMgUHJpc21hL1NRTClcbiAqXG4gKiBBIGZpbHRlciB3aXRoIG5vIGV2YWx1YWJsZSBjb25kaXRpb25zIChge31gLCBvciBvbmx5IGRlbmllZC9ub24tb2JqZWN0XG4gKiBrZXlzKSByZXR1cm5zIGBtYXRjaGVkOiBmYWxzZWAuIFRoaXMgZGVsaWJlcmF0ZWx5IElOVkVSVFMgdGhlIFByaXNtYS9TUUxcbiAqIGludHVpdGlvbiB3aGVyZSBgd2hlcmU6IHt9YCBtYXRjaGVzIGV2ZXJ5dGhpbmc6IGluIGEgZGVjaXNpb24gcnVsZSwgYSBydWxlXG4gKiB0aGF0IGFzc2VydHMgbm90aGluZyBzaG91bGQgbmV2ZXIgd2luIGEgYnJhbmNoIOKAlCBcImFsbCB6ZXJvIGNvbmRpdGlvbnNcbiAqIHBhc3NlZFwiIGlzIHZhY3VvdXMgdHJ1dGgsIGFuZCBzaWxlbnRseSByb3V0aW5nIG9uIGl0IHdvdWxkIGZhYnJpY2F0ZVxuICogZGVjaXNpb24gZXZpZGVuY2UuIFdhbnQgYSBjYXRjaC1hbGw/IFVzZSB0aGUgZXhwbGljaXQgYGRlZmF1bHRCcmFuY2hgXG4gKiBhcmd1bWVudCBvZiBgZGVjaWRlKClgIGluc3RlYWQgb2YgYW4gZW1wdHkgYHdoZW5gLlxuICpcbiAqICMjIFVua25vd24gb3BlcmF0b3JzIOKGkiBjb25kaXRpb24gZmFpbHMgKCsgZGV2LW1vZGUgd2FybmluZylcbiAqXG4gKiBBbiBvcGVyYXRvciBvdXRzaWRlIHRoZSBzdXBwb3J0ZWQgc2V0IChgZXEsIG5lLCBndCwgZ3RlLCBsdCwgbHRlLCBpbixcbiAqIG5vdEluYCkgcmVjb3JkcyBhIGZhaWxlZCBjb25kaXRpb24g4oCUIHRoZSBydWxlIGNhbiBuZXZlciBzcHVyaW91c2x5IG1hdGNoXG4gKiB0aHJvdWdoIGEgdHlwbyAoYGd0ZWAgbWlzc3BlbGxlZCBgZ2xlYCkuIFdpdGggZGV2IG1vZGUgZW5hYmxlZFxuICogKGBlbmFibGVEZXZNb2RlKClgKSwgYSBjb25zb2xlIHdhcm5pbmcgbmFtZXMgdGhlIHVua25vd24gb3BlcmF0b3IgYW5kIGtleS5cbiAqXG4gKiBAcGFyYW0gZ2V0VmFsdWVGbiAtIFJlYWRzIGEgdmFsdWUgZnJvbSBzY29wZSBieSBrZXkgKHJhdywgZm9yIGNvbXBhcmlzb24pXG4gKiBAcGFyYW0gaXNSZWRhY3RlZEZuIC0gQ2hlY2tzIGlmIGEga2V5IGlzIHJlZGFjdGVkIChmb3IgZXZpZGVuY2UgZGlzcGxheSlcbiAqIEBwYXJhbSBmaWx0ZXIgLSBUaGUgV2hlcmVGaWx0ZXIgdG8gZXZhbHVhdGVcbiAqIEByZXR1cm5zIHsgbWF0Y2hlZCwgY29uZGl0aW9ucyB9IOKAlCBtYXRjaGVkID0gYWxsIGNvbmRpdGlvbnMgcGFzc2VkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBldmFsdWF0ZUZpbHRlcjxUIGV4dGVuZHMgb2JqZWN0PihcbiAgZ2V0VmFsdWVGbjogKGtleTogc3RyaW5nKSA9PiB1bmtub3duLFxuICBpc1JlZGFjdGVkRm46IChrZXk6IHN0cmluZykgPT4gYm9vbGVhbixcbiAgZmlsdGVyOiBXaGVyZUZpbHRlcjxUPixcbik6IHsgbWF0Y2hlZDogYm9vbGVhbjsgY29uZGl0aW9uczogRmlsdGVyQ29uZGl0aW9uW10gfSB7XG4gIGNvbnN0IGNvbmRpdGlvbnM6IEZpbHRlckNvbmRpdGlvbltdID0gW107XG4gIGxldCBhbGxNYXRjaGVkID0gdHJ1ZTtcblxuICBmb3IgKGNvbnN0IFtrZXksIG9wc10gb2YgT2JqZWN0LmVudHJpZXMoZmlsdGVyKSkge1xuICAgIC8vIFNlY3VyaXR5OiBkZW5pZWQga2V5cyBjYXVzZSBydWxlIHRvIGZhaWwgKGNvbnNpc3RlbnQgd2l0aCB1bmtub3duIG9wZXJhdG9yIGJlaGF2aW9yKVxuICAgIGlmIChERU5JRURfS0VZUy5oYXMoa2V5KSkge1xuICAgICAgYWxsTWF0Y2hlZCA9IGZhbHNlO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmICghb3BzIHx8IHR5cGVvZiBvcHMgIT09ICdvYmplY3QnKSBjb250aW51ZTtcblxuICAgIGNvbnN0IGFjdHVhbCA9IGdldFZhbHVlRm4oa2V5KTtcbiAgICBjb25zdCByZWRhY3RlZCA9IGlzUmVkYWN0ZWRGbihrZXkpO1xuICAgIGNvbnN0IGRpc3BsYXlWYWx1ZSA9IHJlZGFjdGVkID8gJ1tSRURBQ1RFRF0nIDogc3VtbWFyaXplVmFsdWUoYWN0dWFsLCBNQVhfVkFMVUVfTEVOKTtcblxuICAgIC8vIEV2YWx1YXRlIGVhY2ggb3BlcmF0b3IgaW4gdGhlIEZpbHRlck9wcyBmb3IgdGhpcyBrZXlcbiAgICBmb3IgKGNvbnN0IFtvcCwgdGhyZXNob2xkXSBvZiBPYmplY3QuZW50cmllcyhvcHMgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pKSB7XG4gICAgICBjb25zdCBoYW5kbGVyID0gT1BFUkFUT1JfSEFORExFUlNbb3BdO1xuICAgICAgaWYgKCFoYW5kbGVyKSB7XG4gICAgICAgIC8vIFVua25vd24gb3BlcmF0b3I6IHRyZWF0IGFzIGZhaWxlZCBjb25kaXRpb24gc28gcnVsZSBkb2Vzbid0IHNwdXJpb3VzbHkgbWF0Y2hcbiAgICAgICAgaWYgKGlzRGV2TW9kZSgpKSB7XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICBgW2Zvb3RwcmludF0gZGVjaWRlKCkvc2VsZWN0KCkgZmlsdGVyOiB1bmtub3duIG9wZXJhdG9yIFwiJHtvcH1cIiBvbiBrZXkgXCIke2tleX1cIiDigJQgYCArXG4gICAgICAgICAgICAgIGBjb25kaXRpb24gbmV2ZXIgbWF0Y2hlcyAodmFsaWQgb3BlcmF0b3JzOiAke09iamVjdC5rZXlzKE9QRVJBVE9SX0hBTkRMRVJTKS5qb2luKCcsICcpfSlgLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgY29uZGl0aW9ucy5wdXNoKHsga2V5LCBvcCwgdGhyZXNob2xkLCBhY3R1YWxTdW1tYXJ5OiBkaXNwbGF5VmFsdWUsIHJlc3VsdDogZmFsc2UsIHJlZGFjdGVkIH0pO1xuICAgICAgICBhbGxNYXRjaGVkID0gZmFsc2U7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCByZXN1bHQgPSBoYW5kbGVyKGFjdHVhbCwgdGhyZXNob2xkKTtcbiAgICAgIGNvbmRpdGlvbnMucHVzaCh7XG4gICAgICAgIGtleSxcbiAgICAgICAgb3AsXG4gICAgICAgIHRocmVzaG9sZCxcbiAgICAgICAgYWN0dWFsU3VtbWFyeTogZGlzcGxheVZhbHVlLFxuICAgICAgICByZXN1bHQsXG4gICAgICAgIHJlZGFjdGVkLFxuICAgICAgfSk7XG5cbiAgICAgIGlmICghcmVzdWx0KSBhbGxNYXRjaGVkID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLy8gRW1wdHkgZmlsdGVyIChubyBldmFsdWFibGUgY29uZGl0aW9ucykgc2hvdWxkIE5PVCBtYXRjaCDigJQgcHJldmVudHMgdmFjdW91c1xuICAvLyB0cnV0aC4gTk9URTogdGhpcyBkZWxpYmVyYXRlbHkgaW52ZXJ0cyBQcmlzbWEvU1FMIGB3aGVyZToge31gIChcIm1hdGNoXG4gIC8vIGV2ZXJ5dGhpbmdcIikg4oCUIHNlZSB0aGUgZnVuY3Rpb24gSlNEb2MuIENhdGNoLWFsbHMgYmVsb25nIGluIGRlY2lkZSgpJ3NcbiAgLy8gZXhwbGljaXQgZGVmYXVsdEJyYW5jaCwgbm90IGluIGFuIGVtcHR5IHJ1bGUuXG4gIGlmIChjb25kaXRpb25zLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHsgbWF0Y2hlZDogZmFsc2UsIGNvbmRpdGlvbnMgfTtcblxuICByZXR1cm4geyBtYXRjaGVkOiBhbGxNYXRjaGVkLCBjb25kaXRpb25zIH07XG59XG4iXX0=
@@ -93,6 +93,19 @@ export class SubflowExecutor {
93
93
  nestedRootContext = new StageContextClass('', nestedRootContext.stageName, nestedRootContext.stageId, nestedRuntime.globalStore, '', nestedRuntime.executionHistory);
94
94
  nestedRuntime.rootStageContext = nestedRootContext;
95
95
  }
96
+ // Read-tracking policy (#14): subflows get an ISOLATED runtime, so the
97
+ // executor-level policy doesn't reach them via the root context chain.
98
+ // Inherit it from the parent-mount context (which inherited it from ITS
99
+ // root via createNext/createChild) — applied to the FINAL nested root,
100
+ // after the seeding block above may have replaced it. Nested subflows
101
+ // chain the same way, one hop per mount. Optional-chained because this
102
+ // section is duck-typed by design (dynamic construction to avoid the
103
+ // circular import) — and skipped at the default 'full', where the fresh
104
+ // nested context is already correct, so the default path does zero work.
105
+ const parentReadTracking = parentContext.getReadTracking?.();
106
+ if (parentReadTracking !== undefined && parentReadTracking !== 'full') {
107
+ nestedRootContext.useReadTracking(parentReadTracking);
108
+ }
96
109
  // Prepare subflow root node — strip isSubflowRoot to prevent re-delegation.
97
110
  //
98
111
  // PRESERVE `next`. Earlier revisions stripped `next` whenever the
@@ -245,4 +258,4 @@ export class SubflowExecutor {
245
258
  return subflowOutput;
246
259
  }
247
260
  }
248
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3ViZmxvd0V4ZWN1dG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9lbmdpbmUvaGFuZGxlcnMvU3ViZmxvd0V4ZWN1dG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFHSCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFVckQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLHFCQUFxQixFQUFFLHNCQUFzQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFHNUcsTUFBTSxPQUFPLGVBQWU7SUFFaEI7SUFDQTtJQUZWLFlBQ1UsSUFBK0IsRUFDL0IsZ0JBQXVEO1FBRHZELFNBQUksR0FBSixJQUFJLENBQTJCO1FBQy9CLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBdUM7SUFDOUQsQ0FBQztJQUVKOzs7Ozs7OztPQVFHO0lBQ0gsS0FBSyxDQUFDLGNBQWMsQ0FDbEIsSUFBNkIsRUFDN0IsYUFBMkIsRUFDM0IsU0FBb0IsRUFDcEIsVUFBOEIsRUFDOUIsaUJBQTZDLEVBQzdDLHNCQUF5QztRQUV6QyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBVSxDQUFDO1FBQ2xDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQztRQUVsRCxhQUFhLENBQUMsbUJBQW1CLENBQUMsU0FBUyxFQUFFLFlBQVksV0FBVyxVQUFVLEVBQUU7WUFDOUUsV0FBVyxFQUFFLFNBQVM7U0FDdkIsQ0FBQyxDQUFDO1FBRUgsd0JBQXdCO1FBQ3hCLEVBQUU7UUFDRixpRUFBaUU7UUFDakUsaUVBQWlFO1FBQ2pFLCtEQUErRDtRQUMvRCx5REFBeUQ7UUFDekQsbUVBQW1FO1FBQ25FLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztRQUM5QyxJQUFJLFdBQVcsR0FBNEIsRUFBRSxDQUFDO1FBQzlDLE1BQU0sYUFB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QWtCLENBQUMsYUFBYSxDQUN4QyxXQUFXLEVBQ1gsU0FBUyxFQUNULHNCQUFzQixFQUN0QixhQUFhLENBQUMsV0FBVyxFQUFFLGFBQWEsQ0FDekMsQ0FBQztRQUVGLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUV2QixJQUFJLFlBQVksRUFBRSxDQUFDO1lBQ2pCLE1BQU0sWUFBWSxDQUFDO1FBQ3JCLENBQUM7UUFFRCxPQUFPLGFBQWEsQ0FBQztJQUN2QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFN1YmZsb3dFeGVjdXRvciDigJQgSXNvbGF0aW9uIGJvdW5kYXJ5IGZvciBzdWJmbG93IGV4ZWN1dGlvbi5cbiAqXG4gKiBSZXNwb25zaWJpbGl0aWVzOlxuICogLSBDcmVhdGUgaXNvbGF0ZWQgRXhlY3V0aW9uUnVudGltZSBmb3IgZWFjaCBzdWJmbG93XG4gKiAtIEFwcGx5IGlucHV0L291dHB1dCBtYXBwaW5nIHZpYSBTdWJmbG93SW5wdXRNYXBwZXJcbiAqIC0gRGVsZWdhdGUgdHJhdmVyc2FsIHRvIGEgZmFjdG9yeS1jcmVhdGVkIEZsb3djaGFydFRyYXZlcnNlclxuICogLSBUcmFjayBzdWJmbG93IHJlc3VsdHMgZm9yIGRlYnVnZ2luZy92aXN1YWxpemF0aW9uXG4gKlxuICogRWFjaCBzdWJmbG93IGdldHMgaXRzIG93biBHbG9iYWxTdG9yZSBmb3IgaXNvbGF0aW9uLlxuICogVHJhdmVyc2FsIHVzZXMgdGhlIFNBTUUgNy1waGFzZSBhbGdvcml0aG0gYXMgdGhlIHRvcC1sZXZlbCB0cmF2ZXJzZXJcbiAqICh2aWEgU3ViZmxvd1RyYXZlcnNlckZhY3RvcnkpLCBzbyBkZWNpZGVycywgc2VsZWN0b3JzLCBsb29wcywgbGF6eSBzdWJmbG93cyxcbiAqIGFuZCBhYm9ydCBzaWduYWxzIGFsbCB3b3JrIGluc2lkZSBzdWJmbG93cyBhdXRvbWF0aWNhbGx5LlxuICovXG5cbmltcG9ydCB0eXBlIHsgU3RhZ2VDb250ZXh0IH0gZnJvbSAnLi4vLi4vbWVtb3J5L1N0YWdlQ29udGV4dC5qcyc7XG5pbXBvcnQgeyBpc1BhdXNlU2lnbmFsIH0gZnJvbSAnLi4vLi4vcGF1c2UvdHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBTdGFnZU5vZGUgfSBmcm9tICcuLi9ncmFwaC9TdGFnZU5vZGUuanMnO1xuaW1wb3J0IHR5cGUgeyBUcmF2ZXJzYWxDb250ZXh0IH0gZnJvbSAnLi4vbmFycmF0aXZlL3R5cGVzLmpzJztcbmltcG9ydCB0eXBlIHtcbiAgSGFuZGxlckRlcHMsXG4gIElFeGVjdXRpb25SdW50aW1lLFxuICBTdWJmbG93UmVzdWx0LFxuICBTdWJmbG93VHJhdmVyc2VyRmFjdG9yeSxcbiAgU3ViZmxvd1RyYXZlcnNlckhhbmRsZSxcbn0gZnJvbSAnLi4vdHlwZXMuanMnO1xuaW1wb3J0IHsgYXBwbHlPdXRwdXRNYXBwaW5nLCBnZXRJbml0aWFsU2NvcGVWYWx1ZXMsIHNlZWRTdWJmbG93R2xvYmFsU3RvcmUgfSBmcm9tICcuL1N1YmZsb3dJbnB1dE1hcHBlci5qcyc7XG5pbXBvcnQgdHlwZSB7IEJyZWFrRmxhZyB9IGZyb20gJy4vdHlwZXMuanMnO1xuXG5leHBvcnQgY2xhc3MgU3ViZmxvd0V4ZWN1dG9yPFRPdXQgPSBhbnksIFRTY29wZSA9IGFueT4ge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGRlcHM6IEhhbmRsZXJEZXBzPFRPdXQsIFRTY29wZT4sXG4gICAgcHJpdmF0ZSB0cmF2ZXJzZXJGYWN0b3J5OiBTdWJmbG93VHJhdmVyc2VyRmFjdG9yeTxUT3V0LCBUU2NvcGU+LFxuICApIHt9XG5cbiAgLyoqXG4gICAqIEV4ZWN1dGUgYSBzdWJmbG93IHdpdGggaXNvbGF0ZWQgY29udGV4dC5cbiAgICpcbiAgICogMS4gQ3JlYXRlcyBhIGZyZXNoIEV4ZWN1dGlvblJ1bnRpbWUgZm9yIHRoZSBzdWJmbG93XG4gICAqIDIuIEFwcGxpZXMgaW5wdXQgbWFwcGluZyB0byBzZWVkIHRoZSBzdWJmbG93J3MgR2xvYmFsU3RvcmVcbiAgICogMy4gRGVsZWdhdGVzIHRyYXZlcnNhbCB0byBhIGZhY3RvcnktY3JlYXRlZCBGbG93Y2hhcnRUcmF2ZXJzZXJcbiAgICogNC4gQXBwbGllcyBvdXRwdXQgbWFwcGluZyB0byB3cml0ZSByZXN1bHRzIGJhY2sgdG8gcGFyZW50IHNjb3BlXG4gICAqIDUuIFN0b3JlcyBleGVjdXRpb24gZGF0YSBmb3IgZGVidWdnaW5nL3Zpc3VhbGl6YXRpb25cbiAgICovXG4gIGFzeW5jIGV4ZWN1dGVTdWJmbG93KFxuICAgIG5vZGU6IFN0YWdlTm9kZTxUT3V0LCBUU2NvcGU+LFxuICAgIHBhcmVudENvbnRleHQ6IFN0YWdlQ29udGV4dCxcbiAgICBicmVha0ZsYWc6IEJyZWFrRmxhZyxcbiAgICBicmFuY2hQYXRoOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgc3ViZmxvd1Jlc3VsdHNNYXA6IE1hcDxzdHJpbmcsIFN1YmZsb3dSZXN1bHQ+LFxuICAgIHBhcmVudFRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0LFxuICApOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IHN1YmZsb3dJZCA9IG5vZGUuc3ViZmxvd0lkITtcbiAgICBjb25zdCBzdWJmbG93TmFtZSA9IG5vZGUuc3ViZmxvd05hbWUgPz8gbm9kZS5uYW1lO1xuXG4gICAgcGFyZW50Q29udGV4dC5hZGRGbG93RGVidWdNZXNzYWdlKCdzdWJmbG93JywgYEVudGVyaW5nICR7c3ViZmxvd05hbWV9IHN1YmZsb3dgLCB7XG4gICAgICB0YXJnZXRTdGFnZTogc3ViZmxvd0lkLFxuICAgIH0pO1xuXG4gICAgLy8g4pSA4pSA4pSAIElucHV0IE1hcHBpbmcg4pSA4pSA4pSAXG4gICAgLy9cbiAgICAvLyBSRVNVTUUgUEFUSCBOT1RFOiB3aGVuIGBkZXBzLnN1YmZsb3dTdGF0ZXNGb3JSZXN1bWVgIGNhcnJpZXMgYVxuICAgIC8vIGNhcHR1cmUgZm9yIFRISVMgc3ViZmxvdyBpZCwgd2UgU0tJUCB0aGUgaW5wdXRNYXBwZXIgZW50aXJlbHkuXG4gICAgLy8gVGhlIGNhcHR1cmUgaXMgdGhlIHBvc3QtaW5wdXQgcHJlLXBhdXNlIG1lbW9yeSDigJQgcnVubmluZyB0aGVcbiAgICAvLyBtYXBwZXIgYWdhaW4gd291bGQgY2xvYmJlciBwb3N0LWlucHV0IHdyaXRlcyAoaGlzdG9yeSxcbiAgICAvLyBwYXVzZWRUb29sQ2FsbElkLCBldGMuKSB3aXRoIHRoZSBwYXJlbnQncyBzdGFydC1vZi1zdWJmbG93IHZpZXcuXG4gICAgY29uc3QgbW91bnRPcHRpb25zID0gbm9kZS5zdWJmbG93TW91bnRPcHRpb25zO1xuICAgIGxldCBtYXBwZWRJbnB1dDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcbiAgICBjb25zdCByZXN1bWVDYXB0dXJlID0gdGhpcy5kZXBzLnN1YmZsb3dTdGF0ZXNGb3JSZXN1bWU/LltzdWJmbG93SWRdO1xuICAgIGNvbnN0IGlzUmVzdW1lRm9yVGhpc1N1YmZsb3cgPSByZXN1bWVDYXB0dXJlICE9PSB1bmRlZmluZWQ7XG5cbiAgICBpZiAobW91bnRPcHRpb25zICYmICFpc1Jlc3VtZUZvclRoaXNTdWJmbG93KSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBwYXJlbnRTY29wZSA9IHBhcmVudENvbnRleHQuZ2V0U2NvcGUoKTtcbiAgICAgICAgbWFwcGVkSW5wdXQgPSBnZXRJbml0aWFsU2NvcGVWYWx1ZXMocGFyZW50U2NvcGUsIG1vdW50T3B0aW9ucyk7XG4gICAgICAgIGlmIChPYmplY3Qua2V5cyhtYXBwZWRJbnB1dCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgIC8vIG1hcHBlZElucHV0IGlzIGNhcHR1cmVkIGluIFN1YmZsb3dSZXN1bHQudHJlZUNvbnRleHQgZm9yIGRlYnVnZ2luZ1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICAgIHBhcmVudENvbnRleHQuYWRkRXJyb3IoJ2lucHV0TWFwcGVyRXJyb3InLCBlcnJvci50b1N0cmluZygpKTtcbiAgICAgICAgdGhpcy5kZXBzLmxvZ2dlci5lcnJvcihgRXJyb3IgaW4gaW5wdXRNYXBwZXIgZm9yIHN1YmZsb3cgKCR7c3ViZmxvd0lkfSk6YCwgeyBlcnJvciB9KTtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gTmFycmF0aXZlIHJlY2VpdmVzIG1hcHBlZCBpbnB1dC4gaW5wdXRNYXBwZXIgaXMgYSBjb25zdW1lciBmdW5jdGlvbiB0aGF0IG1heSBpbmplY3RcbiAgICAvLyB2YWx1ZXMgbm90IGZyb20gdGhlIHNjb3BlIChieXBhc3NpbmcgcmVkYWN0aW9uKS4gVGhlIHJlY29yZGVyIHJlbmRlcnMgcGVyIGluY2x1ZGVWYWx1ZXMuXG4gICAgY29uc3QgbmFycmF0aXZlSW5wdXQgPSBtYXBwZWRJbnB1dDtcbiAgICAvLyBgRmxvd1N1YmZsb3dFdmVudC5kZXNjcmlwdGlvbmAgaXMgc2VtYW50aWNhbGx5IFwid2hhdCB0aGlzIHN1YmZsb3cgZG9lc1wiIOKAlCBzb3VyY2VkIGZyb21cbiAgICAvLyB0aGUgc3ViZmxvdydzIG93biByb290IHN0YWdlLCBub3QgdGhlIHBhcmVudCBtb3VudCBwb2ludC4gVGhlIG1vdW50IG5vZGUgbmV2ZXIgY2Fycmllc1xuICAgIC8vIGEgZGVzY3JpcHRpb24gKGJ1aWxkZXJzIGRvbid0IGNvcHkgaXQpLCBzbyByZWFkaW5nIGBub2RlLmRlc2NyaXB0aW9uYCBoZXJlIHJldHVybnNcbiAgICAvLyBgdW5kZWZpbmVkYCBhbmQgdGF4b25vbXkgbWFya2VycyBzZXQgb24gdGhlIHN1YmZsb3cgcm9vdCAoZS5nLiBhZ2VudGZvb3RwcmludCdzXG4gICAgLy8gYCdBZ2VudDogUmVBY3QgbG9vcCdgIC8gYCdMTE1DYWxsOiBvbmUtc2hvdCdgKSBuZXZlciByZWFjaCBkb3duc3RyZWFtIGNvbnN1bWVycy5cbiAgICBjb25zdCByb290RGVzY3JpcHRpb24gPSB0aGlzLmRlcHMuc3ViZmxvd3M/LltzdWJmbG93SWRdPy5yb290Py5kZXNjcmlwdGlvbjtcbiAgICB0aGlzLmRlcHMubmFycmF0aXZlR2VuZXJhdG9yLm9uU3ViZmxvd0VudHJ5KFxuICAgICAgc3ViZmxvd05hbWUsXG4gICAgICBzdWJmbG93SWQsXG4gICAgICByb290RGVzY3JpcHRpb24gPz8gbm9kZS5kZXNjcmlwdGlvbixcbiAgICAgIHBhcmVudFRyYXZlcnNhbENvbnRleHQsXG4gICAgICBuYXJyYXRpdmVJbnB1dCxcbiAgICApO1xuICAgIC8vIFByb3Bvc2FsICMwMDM6IGZpcmUgb25TdGFnZUV4ZWN1dGVkIGZvciB0aGUgbW91bnQgbm9kZSBBRlRFUlxuICAgIC8vIG9uU3ViZmxvd0VudHJ5IHNvIGNvbnN1bWVycyB0cmFja2luZyBcImRpZCB0aGlzIHN0YWdlIHJ1blwiIHdvcmtcbiAgICAvLyB1bmlmb3JtbHkgYWNyb3NzIGxpbmVhciAvIGRlY2lkZXIgLyBmb3JrIC8gc2VsZWN0b3IgLyBzdWJmbG93LW1vdW50LlxuICAgIC8vIEZpcmVzIG9uIEVOVFJZIChub3QgZXhpdCkg4oCUIGVudHJ5ID0gXCJ0aGlzIG1vdW50IHJhblwiOyB0aGVcbiAgICAvLyBzdWJmbG93J3MgY2hpbGRyZW4gZXhlY3V0ZSBhZnRlciBhcyBzZXBhcmF0ZSBzdGFnZXMuXG4gICAgdGhpcy5kZXBzLm5hcnJhdGl2ZUdlbmVyYXRvci5vblN0YWdlRXhlY3V0ZWQoXG4gICAgICBub2RlLm5hbWUsXG4gICAgICByb290RGVzY3JpcHRpb24gPz8gbm9kZS5kZXNjcmlwdGlvbixcbiAgICAgIHBhcmVudFRyYXZlcnNhbENvbnRleHQsXG4gICAgICAnc3ViZmxvdy1tb3VudCcsXG4gICAgKTtcblxuICAgIC8vIENyZWF0ZSBpc29sYXRlZCBydW50aW1lIHZpYSBkeW5hbWljIGNvbnN0cnVjdGlvbiAoYXZvaWRzIGNpcmN1bGFyIGltcG9ydClcbiAgICBjb25zdCBFeGVjdXRpb25SdW50aW1lQ2xhc3MgPSB0aGlzLmRlcHMuZXhlY3V0aW9uUnVudGltZS5jb25zdHJ1Y3RvciBhcyBuZXcgKFxuICAgICAgbmFtZTogc3RyaW5nLFxuICAgICAgaWQ6IHN0cmluZyxcbiAgICApID0+IElFeGVjdXRpb25SdW50aW1lO1xuICAgIGNvbnN0IG5lc3RlZFJ1bnRpbWUgPSBuZXcgRXhlY3V0aW9uUnVudGltZUNsYXNzKG5vZGUubmFtZSwgbm9kZS5pZCk7XG4gICAgbGV0IG5lc3RlZFJvb3RDb250ZXh0ID0gbmVzdGVkUnVudGltZS5yb290U3RhZ2VDb250ZXh0O1xuXG4gICAgLy8gU2VlZCBHbG9iYWxTdG9yZSB3aXRoIHRoZSByaWdodCBzaGFwZSBmb3IgdGhlIHBhdGg6XG4gICAgLy8gICDigKIgUmVzdW1lIGludG8gVEhJUyBzdWJmbG93IOKGkiBzZWVkIGZyb20gdGhlIGNhcHR1cmVkIHByZS1wYXVzZVxuICAgIC8vICAgICBzY29wZSBzbyByZXN1bWUgaGFuZGxlcnMgc2VlIGhpc3RvcnksIHBhdXNlZFRvb2xDYWxsSWQsIGV0Yy5cbiAgICAvLyAgIOKAoiBOb3JtYWwgZW50cnkg4oaSIHNlZWQgZnJvbSB0aGUgaW5wdXRNYXBwZXIncyBtYXBwZWRJbnB1dC5cbiAgICBjb25zdCBzZWVkVmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IGlzUmVzdW1lRm9yVGhpc1N1YmZsb3cgPyByZXN1bWVDYXB0dXJlISA6IG1hcHBlZElucHV0O1xuICAgIGlmIChPYmplY3Qua2V5cyhzZWVkVmFsdWVzKS5sZW5ndGggPiAwKSB7XG4gICAgICBzZWVkU3ViZmxvd0dsb2JhbFN0b3JlKG5lc3RlZFJ1bnRpbWUsIHNlZWRWYWx1ZXMpO1xuICAgICAgLy8gUmVmcmVzaCByb290U3RhZ2VDb250ZXh0IHNvIFdyaXRlQnVmZmVyIHNlZXMgY29tbWl0dGVkIGRhdGFcbiAgICAgIGNvbnN0IFN0YWdlQ29udGV4dENsYXNzID0gbmVzdGVkUm9vdENvbnRleHQuY29uc3RydWN0b3IgYXMgbmV3ICguLi5hcmdzOiBhbnlbXSkgPT4gU3RhZ2VDb250ZXh0O1xuICAgICAgbmVzdGVkUm9vdENvbnRleHQgPSBuZXcgU3RhZ2VDb250ZXh0Q2xhc3MoXG4gICAgICAgICcnLFxuICAgICAgICBuZXN0ZWRSb290Q29udGV4dC5zdGFnZU5hbWUsXG4gICAgICAgIG5lc3RlZFJvb3RDb250ZXh0LnN0YWdlSWQsXG4gICAgICAgIG5lc3RlZFJ1bnRpbWUuZ2xvYmFsU3RvcmUsXG4gICAgICAgICcnLFxuICAgICAgICBuZXN0ZWRSdW50aW1lLmV4ZWN1dGlvbkhpc3RvcnksXG4gICAgICApO1xuICAgICAgbmVzdGVkUnVudGltZS5yb290U3RhZ2VDb250ZXh0ID0gbmVzdGVkUm9vdENvbnRleHQ7XG4gICAgfVxuXG4gICAgLy8gUHJlcGFyZSBzdWJmbG93IHJvb3Qgbm9kZSDigJQgc3RyaXAgaXNTdWJmbG93Um9vdCB0byBwcmV2ZW50IHJlLWRlbGVnYXRpb24uXG4gICAgLy9cbiAgICAvLyBQUkVTRVJWRSBgbmV4dGAuIEVhcmxpZXIgcmV2aXNpb25zIHN0cmlwcGVkIGBuZXh0YCB3aGVuZXZlciB0aGVcbiAgICAvLyBzdWJmbG93IHJvb3QgaGFkIGNoaWxkcmVuLCBvbiB0aGUgYXNzdW1wdGlvbiB0aGF0IGBuZXh0YCB3YXNcbiAgICAvLyBhbHdheXMgdGhlIE9VVEVSIG1vdW50J3MgY29udGludWF0aW9uIGxlYWtpbmcgaW50byB0aGUgaW5uZXJcbiAgICAvLyB0cmVlLiBUaGF0IGFzc3VtcHRpb24gd2FzIHdyb25nOiB0aGUgcmVzb2x2ZWQgc3ViZmxvdyByb290J3NcbiAgICAvLyBgbmV4dGAgaXMgdGhlIElOTkVSIGpvaW4gc3RhZ2UgKGUuZy4sIFBhcmFsbGVsJ3MgTWVyZ2UgYWZ0ZXIgYVxuICAgIC8vIGZhbi1vdXQsIFRvVCdzIFBydW5lcikuIFN0cmlwcGluZyBpdCBicm9rZSBjb21wb3NpdGUgc3ViZmxvd3Mg4oCUXG4gICAgLy8gdGhlIGpvaW4gc3RhZ2UgbmV2ZXIgcmFuLCBzbyB0aGUgc3ViZmxvdyByZXR1cm5lZCBwYXJ0aWFsIHN0YXRlLlxuICAgIC8vXG4gICAgLy8gVGhlIG91dGVyIG1vdW50J3MgcG9zdC1zdWJmbG93IGNvbnRpbnVhdGlvbiBpcyBoYW5kbGVkIHNlcGFyYXRlbHlcbiAgICAvLyBieSB0aGUgcGFyZW50IHRyYXZlcnNlciB2aWEgYHBhcmVudENvbnRleHQubmV4dE5vZGVgIGFuZCBpcyBuZXZlclxuICAgIC8vIGNvbmZsYXRlZCB3aXRoIHRoZSBpbm5lciBzdWJmbG93J3MgYG5leHRgIGNoYWluLlxuICAgIGNvbnN0IHN1YmZsb3dOb2RlOiBTdGFnZU5vZGU8VE91dCwgVFNjb3BlPiA9IHtcbiAgICAgIC4uLm5vZGUsXG4gICAgICBpc1N1YmZsb3dSb290OiBmYWxzZSxcbiAgICB9O1xuXG4gICAgLy8g4pSA4pSA4pSAIEV4ZWN1dGUgdmlhIGZhY3RvcnkgdHJhdmVyc2VyIOKUgOKUgOKUgFxuICAgIC8vIFRoZSBmYWN0b3J5IGNyZWF0ZXMgYSBmdWxsIEZsb3djaGFydFRyYXZlcnNlciB3aXRoIHRoZSBzYW1lIDctcGhhc2UgYWxnb3JpdGhtLFxuICAgIC8vIHNoYXJpbmcgdGhlIHBhcmVudCdzIHN0YWdlTWFwLCBzdWJmbG93cyBkaWN0LCBhbmQgbmFycmF0aXZlIGdlbmVyYXRvci5cbiAgICBsZXQgc3ViZmxvd091dHB1dDogYW55O1xuICAgIGxldCBzdWJmbG93RXJyb3I6IEVycm9yIHwgdW5kZWZpbmVkO1xuICAgIGxldCB0cmF2ZXJzZXJIYW5kbGU6IFN1YmZsb3dUcmF2ZXJzZXJIYW5kbGU8VE91dCwgVFNjb3BlPiB8IHVuZGVmaW5lZDtcblxuICAgIHRyeSB7XG4gICAgICB0cmF2ZXJzZXJIYW5kbGUgPSB0aGlzLnRyYXZlcnNlckZhY3Rvcnkoe1xuICAgICAgICByb290OiBzdWJmbG93Tm9kZSxcbiAgICAgICAgZXhlY3V0aW9uUnVudGltZTogbmVzdGVkUnVudGltZSxcbiAgICAgICAgcmVhZE9ubHlDb250ZXh0OiBtYXBwZWRJbnB1dCxcbiAgICAgICAgc3ViZmxvd0lkLFxuICAgICAgfSk7XG5cbiAgICAgIHN1YmZsb3dPdXRwdXQgPSBhd2FpdCB0cmF2ZXJzZXJIYW5kbGUuZXhlY3V0ZSgpO1xuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgIC8vIFBhdXNlU2lnbmFsIGlzIG5vdCBhbiBlcnJvciDigJQgcHJlcGVuZCBzdWJmbG93IElEIGFuZCByZS10aHJvd1xuICAgICAgLy8gaW1tZWRpYXRlbHkuIE5vIGVycm9yIGxvZ2dpbmcsIG5vIHN1YmZsb3dSZXN1bHQgcmVjb3JkaW5nIOKAlFxuICAgICAgLy8gdGhlIHBhdXNlIGlzIGNvbnRyb2wgZmxvdy5cbiAgICAgIC8vXG4gICAgICAvLyBCRUZPUkUgcmUtdGhyb3csIHNuYXBzaG90IHRoZSBuZXN0ZWQgcnVudGltZSdzIGBzaGFyZWRTdGF0ZWBcbiAgICAgIC8vIG9udG8gdGhlIHNpZ25hbC4gVGhpcyBpcyB0aGUgb25seSBjaGFuY2Ug4oCUIG9uY2Ugd2UgcmUtdGhyb3csXG4gICAgICAvLyB0aGUgb3V0ZXIgdHJhdmVyc2VyIHVud2luZHMgYW5kIHRoZSBuZXN0ZWQgcnVudGltZSBpcyBHQydkLiBPblxuICAgICAgLy8gcmVzdW1lLCB3ZSdsbCByZS1zZWVkIGEgZnJlc2ggbmVzdGVkIHJ1bnRpbWUgZnJvbSB0aGlzIGNhcHR1cmVcbiAgICAgIC8vIHNvIHJlc3VtZSBoYW5kbGVycyBjYW4gcmVhZCB0aGUgcHJlLXBhdXNlIHN1YmZsb3cgc2NvcGUuXG4gICAgICAvL1xuICAgICAgLy8gQ2FwdHVyZSBpcyBrZXllZCBieSB0aGUgU0FNRSBwYXRoLXByZWZpeGVkIGBzdWJmbG93SWRgIHVzZWQgaW5cbiAgICAgIC8vIGBzdWJmbG93UGF0aGAsIHNvIHJlc3VtZSBjYW4gbG9vayB1cCBcInNjb3BlIGZvciBzZi1mb29cIiBieSBpZC5cbiAgICAgIGlmIChpc1BhdXNlU2lnbmFsKGVycm9yKSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHNuYXAgPSBuZXN0ZWRSdW50aW1lLmdldFNuYXBzaG90KCk7XG4gICAgICAgICAgLy8gYHNoYXJlZFN0YXRlYCBpcyB0aGUgc3ViZmxvdydzIHdvcmtpbmcgbWVtb3J5IGF0IHBhdXNlXG4gICAgICAgICAgLy8gdGltZSAoYWZ0ZXIgZXZlcnkgY29tbWl0dGVkIHdyaXRlIHVwIHRvIHRoZSBwYXVzZSkuIENhc3RcbiAgICAgICAgICAvLyBpcyBzYWZlIOKAlCBTaGFyZWRNZW1vcnkgc25hcHNob3QgcmV0dXJucyBhIHBsYWluIG9iamVjdC5cbiAgICAgICAgICBlcnJvci5jYXB0dXJlU3ViZmxvd1Njb3BlKHN1YmZsb3dJZCwgc25hcC5zaGFyZWRTdGF0ZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik7XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIC8vIFNuYXBzaG90IGZhaWx1cmUgc2hvdWxkbid0IG1hc2sgdGhlIHBhdXNlIOKAlCBsZXQgdGhlIHBhdXNlXG4gICAgICAgICAgLy8gYnViYmxlIHVwOyByZXN1bWUgd2lsbCBmYWxsIGJhY2sgdG8gY2hlY2twb2ludC5zaGFyZWRTdGF0ZVxuICAgICAgICAgIC8vICh0aGUgcGFyZW50IHNjb3BlKSBmb3IgdGhpcyBzdWJmbG93J3Mga2V5cy5cbiAgICAgICAgfVxuICAgICAgICBlcnJvci5wcmVwZW5kU3ViZmxvdyhzdWJmbG93SWQpO1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cbiAgICAgIHN1YmZsb3dFcnJvciA9IGVycm9yO1xuICAgICAgcGFyZW50Q29udGV4dC5hZGRFcnJvcignc3ViZmxvd0Vycm9yJywgZXJyb3IudG9TdHJpbmcoKSk7XG4gICAgICB0aGlzLmRlcHMubG9nZ2VyLmVycm9yKGBFcnJvciBpbiBzdWJmbG93ICgke3N1YmZsb3dJZH0pOmAsIHsgZXJyb3IgfSk7XG4gICAgfVxuXG4gICAgLy8gQWx3YXlzIG1lcmdlIG5lc3RlZCBzdWJmbG93IHJlc3VsdHMgKGV2ZW4gb24gZXJyb3Ig4oCUIHBhcnRpYWwgcmVzdWx0cyBhaWQgZGVidWdnaW5nKVxuICAgIGlmICh0cmF2ZXJzZXJIYW5kbGUpIHtcbiAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIHRyYXZlcnNlckhhbmRsZS5nZXRTdWJmbG93UmVzdWx0cygpKSB7XG4gICAgICAgIHN1YmZsb3dSZXN1bHRzTWFwLnNldChrZXksIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyDilIDilIDilIAgQnJlYWsgcHJvcGFnYXRpb24gKG9wdC1pbiB2aWEgU3ViZmxvd01vdW50T3B0aW9ucy5wcm9wYWdhdGVCcmVhaykg4pSA4pSAXG4gICAgLy9cbiAgICAvLyBJZiB0aGUgc3ViZmxvdydzIGlubmVyIHRyYXZlcnNhbCBicm9rZSAoYmVjYXVzZSBhIHN0YWdlIGNhbGxlZFxuICAgIC8vIGBzY29wZS4kYnJlYWsocmVhc29uKWApIEFORCB0aGUgbW91bnQgZGVjbGFyZWQgYHByb3BhZ2F0ZUJyZWFrOiB0cnVlYCxcbiAgICAvLyBmb3J3YXJkIHRoZSBicmVhayBzdGF0ZSB0byB0aGUgUEFSRU5UJ3MgYnJlYWtGbGFnLiBUaGUgcGFyZW50XG4gICAgLy8gdHJhdmVyc2VyIHdpbGwgc2VlIGBzaG91bGRCcmVha2Agb24gaXRzIG5leHQgc3RlcCBhbmQgc3RvcC5cbiAgICAvL1xuICAgIC8vIFdpdGhvdXQgdGhpcywgaW5uZXIgYnJlYWtzIGFyZSBsb2NhbGx5IHNjb3BlZCB0byB0aGUgc3ViZmxvdyDigJQgdGhlXG4gICAgLy8gcGFyZW50IGNvbnRpbnVlcyBhcyBpZiB0aGUgc3ViZmxvdyByZXR1cm5lZCBub3JtYWxseS5cbiAgICAvL1xuICAgIC8vIElNUE9SVEFOVDogdGhpcyBydW5zIEJFRk9SRSBgb3V0cHV0TWFwcGluZ2AgYmVsb3csIGludGVudGlvbmFsbHkuIFRoZVxuICAgIC8vIG91dHB1dE1hcHBlciBzdGlsbCBleGVjdXRlcywgc28gdGhlIHN1YmZsb3cncyBwYXJ0aWFsIHJlc3VsdCBzdGlsbFxuICAgIC8vIGxhbmRzIGluIHRoZSBwYXJlbnQgc2NvcGUuIENvbnN1bWVycyB3aG8gbmVlZCB0byBzdXBwcmVzcyBvdXRwdXQgb25cbiAgICAvLyBicmVhayBjaGVjayB0aGUgYnJlYWsgc3RhdGUgaW5zaWRlIHRoZWlyIG91dHB1dE1hcHBlciBhbmQgZWFybHktcmV0dXJuLlxuICAgIC8vIFNlZSBgU3ViZmxvd01vdW50T3B0aW9ucy5wcm9wYWdhdGVCcmVha2AgSlNEb2MgZm9yIHJhdGlvbmFsZS5cbiAgICBpZiAodHJhdmVyc2VySGFuZGxlICYmIG1vdW50T3B0aW9ucz8ucHJvcGFnYXRlQnJlYWsgPT09IHRydWUpIHtcbiAgICAgIGNvbnN0IGlubmVyQnJlYWsgPSB0cmF2ZXJzZXJIYW5kbGUuZ2V0QnJlYWtTdGF0ZSgpO1xuICAgICAgaWYgKGlubmVyQnJlYWsuc2hvdWxkQnJlYWspIHtcbiAgICAgICAgYnJlYWtGbGFnLnNob3VsZEJyZWFrID0gdHJ1ZTtcbiAgICAgICAgaWYgKGlubmVyQnJlYWsucmVhc29uICE9PSB1bmRlZmluZWQgJiYgYnJlYWtGbGFnLnJlYXNvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgYnJlYWtGbGFnLnJlYXNvbiA9IGlubmVyQnJlYWsucmVhc29uO1xuICAgICAgICB9XG4gICAgICAgIC8vIFJhaXNlIGEgcGFyZW50LWxldmVsIG9uQnJlYWsgZXZlbnQgc28gcmVjb3JkZXJzIGNhbiBkaXN0aW5ndWlzaFxuICAgICAgICAvLyB0aGUgaW5uZXIgb3JpZ2luYXRpbmcgYnJlYWsgKGZpcmVkIGluc2lkZSB0aGUgc3ViZmxvdykgZnJvbSB0aGlzXG4gICAgICAgIC8vIHByb3BhZ2F0ZWQgb25lIChmaXJlZCBhdCB0aGUgbW91bnQgbGV2ZWwgb24gdGhlIHBhcmVudCkuXG4gICAgICAgIHRoaXMuZGVwcy5uYXJyYXRpdmVHZW5lcmF0b3Iub25CcmVhayhzdWJmbG93TmFtZSwgcGFyZW50VHJhdmVyc2FsQ29udGV4dCwgaW5uZXJCcmVhay5yZWFzb24sIHN1YmZsb3dJZCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qgc3ViZmxvd1RyZWVDb250ZXh0ID0gbmVzdGVkUnVudGltZS5nZXRTbmFwc2hvdCgpO1xuXG4gICAgLy8g4pSA4pSA4pSAIE91dHB1dCBNYXBwaW5nIOKUgOKUgOKUgFxuICAgIGlmICghc3ViZmxvd0Vycm9yICYmIG1vdW50T3B0aW9ucz8ub3V0cHV0TWFwcGVyKSB7XG4gICAgICB0cnkge1xuICAgICAgICBsZXQgb3V0cHV0Q29udGV4dCA9IHBhcmVudENvbnRleHQ7XG4gICAgICAgIGlmIChwYXJlbnRDb250ZXh0LmJyYW5jaElkICYmIHBhcmVudENvbnRleHQuYnJhbmNoSWQgIT09ICcnICYmIHBhcmVudENvbnRleHQucGFyZW50KSB7XG4gICAgICAgICAgb3V0cHV0Q29udGV4dCA9IHBhcmVudENvbnRleHQucGFyZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcGFyZW50U2NvcGUgPSBvdXRwdXRDb250ZXh0LmdldFNjb3BlKCk7XG4gICAgICAgIC8vIEZvciBUeXBlZFNjb3BlIHN1YmZsb3dzLCBzdGFnZSBmdW5jdGlvbnMgcmV0dXJuIHZvaWQg4oCUIGZhbGwgYmFjayB0byBhIHNoYWxsb3cgY2xvbmVcbiAgICAgICAgLy8gb2YgdGhlIHN1YmZsb3cncyBzaGFyZWQgc3RhdGUgc28gb3V0cHV0TWFwcGVyIGNhbiBhY2Nlc3MgYWxsIHNjb3BlIHZhbHVlcyB3cml0dGVuXG4gICAgICAgIC8vIGR1cmluZyB0aGUgc3ViZmxvdy4gV2Ugc2hhbGxvdy1jbG9uZSB0byBhdm9pZCBhbGlhc2luZyB0aGUgbGl2ZSBTaGFyZWRNZW1vcnkgY29udGV4dC5cbiAgICAgICAgLy8gTk9URTogdGhlIGZ1bGwgc2NvcGUgaXMgcGFzc2VkIChub3QganVzdCBkZWNsYXJlZCBvdXRwdXRzKSDigJQgb3V0cHV0TWFwcGVyIG11c3RcbiAgICAgICAgLy8gZXhwbGljaXRseSBzZWxlY3Qgd2hhdCB0byBwcm9wYWdhdGUgdG8gdGhlIHBhcmVudC5cbiAgICAgICAgLy8gUmVkYWN0aW9uOiB0aGUgc3ViZmxvdyBzaGFyZXMgdGhlIHBhcmVudCdzIF9yZWRhY3RlZEtleXMgU2V0ICh2aWEgdGhlIHNhbWUgU2NvcGVGYWN0b3J5KSxcbiAgICAgICAgLy8gc28gYW55IGtleSBtYXJrZWQgcmVkYWN0ZWQgaW4gdGhlIHN1YmZsb3cgaXMgYWxyZWFkeSB2aXNpYmxlIGluIHRoZSBwYXJlbnQncyBzY29wZS5cbiAgICAgICAgLy8gU2NvcGVGYWNhZGUuc2V0VmFsdWUgY2hlY2tzIF9yZWRhY3RlZEtleXMuaGFzKGtleSksIHNvIHdyaXRlcyB2aWEgb3V0cHV0TWFwcGVyXG4gICAgICAgIC8vIGF1dG9tYXRpY2FsbHkgaW5oZXJpdCB0aGUgc3ViZmxvdydzIGR5bmFtaWMgcmVkYWN0aW9uIHN0YXRlLlxuICAgICAgICBjb25zdCBlZmZlY3RpdmVPdXRwdXQgPSBzdWJmbG93T3V0cHV0ID8/IHsgLi4uc3ViZmxvd1RyZWVDb250ZXh0LnNoYXJlZFN0YXRlIH07XG4gICAgICAgIGNvbnN0IG1hcHBlZE91dHB1dCA9IGFwcGx5T3V0cHV0TWFwcGluZyhlZmZlY3RpdmVPdXRwdXQsIHBhcmVudFNjb3BlLCBvdXRwdXRDb250ZXh0LCBtb3VudE9wdGlvbnMpO1xuXG4gICAgICAgIG91dHB1dENvbnRleHQuY29tbWl0KCk7XG4gICAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICAgIHBhcmVudENvbnRleHQuYWRkRXJyb3IoJ291dHB1dE1hcHBlckVycm9yJywgZXJyb3IudG9TdHJpbmcoKSk7XG4gICAgICAgIHRoaXMuZGVwcy5sb2dnZXIuZXJyb3IoYEVycm9yIGluIG91dHB1dE1hcHBlciBmb3Igc3ViZmxvdyAoJHtzdWJmbG93SWR9KTpgLCB7IGVycm9yIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHN1YmZsb3dSZXN1bHQ6IFN1YmZsb3dSZXN1bHQgPSB7XG4gICAgICBzdWJmbG93SWQsXG4gICAgICBzdWJmbG93TmFtZSxcbiAgICAgIHRyZWVDb250ZXh0OiB7XG4gICAgICAgIGdsb2JhbENvbnRleHQ6IHN1YmZsb3dUcmVlQ29udGV4dC5zaGFyZWRTdGF0ZSxcbiAgICAgICAgc3RhZ2VDb250ZXh0czogc3ViZmxvd1RyZWVDb250ZXh0LmV4ZWN1dGlvblRyZWUgYXMgdW5rbm93biBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICAgICAgaGlzdG9yeTogc3ViZmxvd1RyZWVDb250ZXh0LmNvbW1pdExvZyxcbiAgICAgIH0sXG4gICAgICBwYXJlbnRTdGFnZUlkOiBwYXJlbnRDb250ZXh0LmdldFN0YWdlSWQoKSxcbiAgICB9O1xuXG4gICAgY29uc3Qgc3ViZmxvd0RlZiA9IHRoaXMuZGVwcy5zdWJmbG93cz8uW3N1YmZsb3dJZF07XG4gICAgaWYgKHN1YmZsb3dEZWYgJiYgKHN1YmZsb3dEZWYgYXMgYW55KS5idWlsZFRpbWVTdHJ1Y3R1cmUpIHtcbiAgICAgIHN1YmZsb3dSZXN1bHQucGlwZWxpbmVTdHJ1Y3R1cmUgPSAoc3ViZmxvd0RlZiBhcyBhbnkpLmJ1aWxkVGltZVN0cnVjdHVyZTtcbiAgICB9XG5cbiAgICBzdWJmbG93UmVzdWx0c01hcC5zZXQoc3ViZmxvd0lkLCBzdWJmbG93UmVzdWx0KTtcblxuICAgIHBhcmVudENvbnRleHQuYWRkRmxvd0RlYnVnTWVzc2FnZSgnc3ViZmxvdycsIGBFeGl0aW5nICR7c3ViZmxvd05hbWV9IHN1YmZsb3dgLCB7XG4gICAgICB0YXJnZXRTdGFnZTogc3ViZmxvd0lkLFxuICAgIH0pO1xuICAgIHRoaXMuZGVwcy5uYXJyYXRpdmVHZW5lcmF0b3Iub25TdWJmbG93RXhpdChcbiAgICAgIHN1YmZsb3dOYW1lLFxuICAgICAgc3ViZmxvd0lkLFxuICAgICAgcGFyZW50VHJhdmVyc2FsQ29udGV4dCxcbiAgICAgIHN1YmZsb3dSZXN1bHQudHJlZUNvbnRleHQ/Lmdsb2JhbENvbnRleHQsXG4gICAgKTtcblxuICAgIHBhcmVudENvbnRleHQuY29tbWl0KCk7XG5cbiAgICBpZiAoc3ViZmxvd0Vycm9yKSB7XG4gICAgICB0aHJvdyBzdWJmbG93RXJyb3I7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1YmZsb3dPdXRwdXQ7XG4gIH1cbn1cbiJdfQ==
261
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3ViZmxvd0V4ZWN1dG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9lbmdpbmUvaGFuZGxlcnMvU3ViZmxvd0V4ZWN1dG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFHSCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFVckQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLHFCQUFxQixFQUFFLHNCQUFzQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFHNUcsTUFBTSxPQUFPLGVBQWU7SUFFaEI7SUFDQTtJQUZWLFlBQ1UsSUFBK0IsRUFDL0IsZ0JBQXVEO1FBRHZELFNBQUksR0FBSixJQUFJLENBQTJCO1FBQy9CLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBdUM7SUFDOUQsQ0FBQztJQUVKOzs7Ozs7OztPQVFHO0lBQ0gsS0FBSyxDQUFDLGNBQWMsQ0FDbEIsSUFBNkIsRUFDN0IsYUFBMkIsRUFDM0IsU0FBb0IsRUFDcEIsVUFBOEIsRUFDOUIsaUJBQTZDLEVBQzdDLHNCQUF5QztRQUV6QyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBVSxDQUFDO1FBQ2xDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQztRQUVsRCxhQUFhLENBQUMsbUJBQW1CLENBQUMsU0FBUyxFQUFFLFlBQVksV0FBVyxVQUFVLEVBQUU7WUFDOUUsV0FBVyxFQUFFLFNBQVM7U0FDdkIsQ0FBQyxDQUFDO1FBRUgsd0JBQXdCO1FBQ3hCLEVBQUU7UUFDRixpRUFBaUU7UUFDakUsaUVBQWlFO1FBQ2pFLCtEQUErRDtRQUMvRCx5REFBeUQ7UUFDekQsbUVBQW1FO1FBQ25FLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztRQUM5QyxJQUFJLFdBQVcsR0FBNEIsRUFBRSxDQUFDO1FBQzlDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNwRSxNQUFNLHNCQUFzQixHQUFHLGFBQWEsS0FBSyxTQUFTLENBQUM7UUFFM0QsSUFBSSxZQUFZLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1lBQzVDLElBQUksQ0FBQztnQkFDSCxNQUFNLFdBQVcsR0FBRyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQzdDLFdBQVcsR0FBRyxxQkFBcUIsQ0FBQyxXQUFXLEVBQUUsWUFBWSxDQUFDLENBQUM7Z0JBQy9ELElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQ3hDLHFFQUFxRTtnQkFDdkUsQ0FBQztZQUNILENBQUM7WUFBQyxPQUFPLEtBQVUsRUFBRSxDQUFDO2dCQUNwQixhQUFhLENBQUMsUUFBUSxDQUFDLGtCQUFrQixFQUFFLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO2dCQUM3RCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMscUNBQXFDLFNBQVMsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztnQkFDdEYsTUFBTSxLQUFLLENBQUM7WUFDZCxDQUFDO1FBQ0gsQ0FBQztRQUVELHNGQUFzRjtRQUN0RiwyRkFBMkY7UUFDM0YsTUFBTSxjQUFjLEdBQUcsV0FBVyxDQUFDO1FBQ25DLHlGQUF5RjtRQUN6Rix5RkFBeUY7UUFDekYscUZBQXFGO1FBQ3JGLGtGQUFrRjtRQUNsRixtRkFBbUY7UUFDbkYsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxJQUFJLEVBQUUsV0FBVyxDQUFDO1FBQzNFLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsY0FBYyxDQUN6QyxXQUFXLEVBQ1gsU0FBUyxFQUNULGVBQWUsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUNuQyxzQkFBc0IsRUFDdEIsY0FBYyxDQUNmLENBQUM7UUFDRiwrREFBK0Q7UUFDL0QsaUVBQWlFO1FBQ2pFLHVFQUF1RTtRQUN2RSw0REFBNEQ7UUFDNUQsdURBQXVEO1FBQ3ZELElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsZUFBZSxDQUMxQyxJQUFJLENBQUMsSUFBSSxFQUNULGVBQWUsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUNuQyxzQkFBc0IsRUFDdEIsZUFBZSxDQUNoQixDQUFDO1FBRUYsNEVBQTRFO1FBQzVFLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUduQyxDQUFDO1FBQ3ZCLE1BQU0sYUFBYSxHQUFHLElBQUkscUJBQXFCLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDcEUsSUFBSSxpQkFBaUIsR0FBRyxhQUFhLENBQUMsZ0JBQWdCLENBQUM7UUFFdkQsc0RBQXNEO1FBQ3RELGtFQUFrRTtRQUNsRSxtRUFBbUU7UUFDbkUsOERBQThEO1FBQzlELE1BQU0sVUFBVSxHQUE0QixzQkFBc0IsQ0FBQyxDQUFDLENBQUMsYUFBYyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUM7UUFDbEcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN2QyxzQkFBc0IsQ0FBQyxhQUFhLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDbEQsOERBQThEO1lBQzlELE1BQU0saUJBQWlCLEdBQUcsaUJBQWlCLENBQUMsV0FBbUQsQ0FBQztZQUNoRyxpQkFBaUIsR0FBRyxJQUFJLGlCQUFpQixDQUN2QyxFQUFFLEVBQ0YsaUJBQWlCLENBQUMsU0FBUyxFQUMzQixpQkFBaUIsQ0FBQyxPQUFPLEVBQ3pCLGFBQWEsQ0FBQyxXQUFXLEVBQ3pCLEVBQUUsRUFDRixhQUFhLENBQUMsZ0JBQWdCLENBQy9CLENBQUM7WUFDRixhQUFhLENBQUMsZ0JBQWdCLEdBQUcsaUJBQWlCLENBQUM7UUFDckQsQ0FBQztRQUVELHVFQUF1RTtRQUN2RSx1RUFBdUU7UUFDdkUsd0VBQXdFO1FBQ3hFLHVFQUF1RTtRQUN2RSxzRUFBc0U7UUFDdEUsdUVBQXVFO1FBQ3ZFLHFFQUFxRTtRQUNyRSx3RUFBd0U7UUFDeEUseUVBQXlFO1FBQ3pFLE1BQU0sa0JBQWtCLEdBQUcsYUFBYSxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUM7UUFDN0QsSUFBSSxrQkFBa0IsS0FBSyxTQUFTLElBQUksa0JBQWtCLEtBQUssTUFBTSxFQUFFLENBQUM7WUFDdEUsaUJBQWlCLENBQUMsZUFBZSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDeEQsQ0FBQztRQUVELDRFQUE0RTtRQUM1RSxFQUFFO1FBQ0Ysa0VBQWtFO1FBQ2xFLCtEQUErRDtRQUMvRCwrREFBK0Q7UUFDL0QsK0RBQStEO1FBQy9ELGlFQUFpRTtRQUNqRSxrRUFBa0U7UUFDbEUsbUVBQW1FO1FBQ25FLEVBQUU7UUFDRixvRUFBb0U7UUFDcEUsb0VBQW9FO1FBQ3BFLG1EQUFtRDtRQUNuRCxNQUFNLFdBQVcsR0FBNEI7WUFDM0MsR0FBRyxJQUFJO1lBQ1AsYUFBYSxFQUFFLEtBQUs7U0FDckIsQ0FBQztRQUVGLHdDQUF3QztRQUN4QyxpRkFBaUY7UUFDakYseUVBQXlFO1FBQ3pFLElBQUksYUFBa0IsQ0FBQztRQUN2QixJQUFJLFlBQStCLENBQUM7UUFDcEMsSUFBSSxlQUFpRSxDQUFDO1FBRXRFLElBQUksQ0FBQztZQUNILGVBQWUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7Z0JBQ3RDLElBQUksRUFBRSxXQUFXO2dCQUNqQixnQkFBZ0IsRUFBRSxhQUFhO2dCQUMvQixlQUFlLEVBQUUsV0FBVztnQkFDNUIsU0FBUzthQUNWLENBQUMsQ0FBQztZQUVILGFBQWEsR0FBRyxNQUFNLGVBQWUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNsRCxDQUFDO1FBQUMsT0FBTyxLQUFVLEVBQUUsQ0FBQztZQUNwQixnRUFBZ0U7WUFDaEUsOERBQThEO1lBQzlELDZCQUE2QjtZQUM3QixFQUFFO1lBQ0YsK0RBQStEO1lBQy9ELCtEQUErRDtZQUMvRCxpRUFBaUU7WUFDakUsaUVBQWlFO1lBQ2pFLDJEQUEyRDtZQUMzRCxFQUFFO1lBQ0YsaUVBQWlFO1lBQ2pFLGlFQUFpRTtZQUNqRSxJQUFJLGFBQWEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUN6QixJQUFJLENBQUM7b0JBQ0gsTUFBTSxJQUFJLEdBQUcsYUFBYSxDQUFDLFdBQVcsRUFBRSxDQUFDO29CQUN6Qyx5REFBeUQ7b0JBQ3pELDJEQUEyRDtvQkFDM0QsMERBQTBEO29CQUMxRCxLQUFLLENBQUMsbUJBQW1CLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxXQUFzQyxDQUFDLENBQUM7Z0JBQ3BGLENBQUM7Z0JBQUMsTUFBTSxDQUFDO29CQUNQLDREQUE0RDtvQkFDNUQsNkRBQTZEO29CQUM3RCw4Q0FBOEM7Z0JBQ2hELENBQUM7Z0JBQ0QsS0FBSyxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDaEMsTUFBTSxLQUFLLENBQUM7WUFDZCxDQUFDO1lBQ0QsWUFBWSxHQUFHLEtBQUssQ0FBQztZQUNyQixhQUFhLENBQUMsUUFBUSxDQUFDLGNBQWMsRUFBRSxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztZQUN6RCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMscUJBQXFCLFNBQVMsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUN4RSxDQUFDO1FBRUQsc0ZBQXNGO1FBQ3RGLElBQUksZUFBZSxFQUFFLENBQUM7WUFDcEIsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLGVBQWUsQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLENBQUM7Z0JBQy9ELGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDcEMsQ0FBQztRQUNILENBQUM7UUFFRCwyRUFBMkU7UUFDM0UsRUFBRTtRQUNGLGlFQUFpRTtRQUNqRSx5RUFBeUU7UUFDekUsZ0VBQWdFO1FBQ2hFLDhEQUE4RDtRQUM5RCxFQUFFO1FBQ0YscUVBQXFFO1FBQ3JFLHdEQUF3RDtRQUN4RCxFQUFFO1FBQ0Ysd0VBQXdFO1FBQ3hFLHFFQUFxRTtRQUNyRSxzRUFBc0U7UUFDdEUsMEVBQTBFO1FBQzFFLGdFQUFnRTtRQUNoRSxJQUFJLGVBQWUsSUFBSSxZQUFZLEVBQUUsY0FBYyxLQUFLLElBQUksRUFBRSxDQUFDO1lBQzdELE1BQU0sVUFBVSxHQUFHLGVBQWUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNuRCxJQUFJLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDM0IsU0FBUyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7Z0JBQzdCLElBQUksVUFBVSxDQUFDLE1BQU0sS0FBSyxTQUFTLElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxTQUFTLEVBQUUsQ0FBQztvQkFDdEUsU0FBUyxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDO2dCQUN2QyxDQUFDO2dCQUNELGtFQUFrRTtnQkFDbEUsbUVBQW1FO2dCQUNuRSwyREFBMkQ7Z0JBQzNELElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxzQkFBc0IsRUFBRSxVQUFVLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQzFHLENBQUM7UUFDSCxDQUFDO1FBRUQsTUFBTSxrQkFBa0IsR0FBRyxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFdkQseUJBQXlCO1FBQ3pCLElBQUksQ0FBQyxZQUFZLElBQUksWUFBWSxFQUFFLFlBQVksRUFBRSxDQUFDO1lBQ2hELElBQUksQ0FBQztnQkFDSCxJQUFJLGFBQWEsR0FBRyxhQUFhLENBQUM7Z0JBQ2xDLElBQUksYUFBYSxDQUFDLFFBQVEsSUFBSSxhQUFhLENBQUMsUUFBUSxLQUFLLEVBQUUsSUFBSSxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQ3BGLGFBQWEsR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDO2dCQUN2QyxDQUFDO2dCQUVELE1BQU0sV0FBVyxHQUFHLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDN0Msc0ZBQXNGO2dCQUN0RixvRkFBb0Y7Z0JBQ3BGLHdGQUF3RjtnQkFDeEYsaUZBQWlGO2dCQUNqRixxREFBcUQ7Z0JBQ3JELDRGQUE0RjtnQkFDNUYsc0ZBQXNGO2dCQUN0RixpRkFBaUY7Z0JBQ2pGLCtEQUErRDtnQkFDL0QsTUFBTSxlQUFlLEdBQUcsYUFBYSxJQUFJLEVBQUUsR0FBRyxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDL0UsTUFBTSxZQUFZLEdBQUcsa0JBQWtCLENBQUMsZUFBZSxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsWUFBWSxDQUFDLENBQUM7Z0JBRW5HLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN6QixDQUFDO1lBQUMsT0FBTyxLQUFVLEVBQUUsQ0FBQztnQkFDcEIsYUFBYSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsRUFBRSxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztnQkFDOUQsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLHNDQUFzQyxTQUFTLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDekYsQ0FBQztRQUNILENBQUM7UUFFRCxNQUFNLGFBQWEsR0FBa0I7WUFDbkMsU0FBUztZQUNULFdBQVc7WUFDWCxXQUFXLEVBQUU7Z0JBQ1gsYUFBYSxFQUFFLGtCQUFrQixDQUFDLFdBQVc7Z0JBQzdDLGFBQWEsRUFBRSxrQkFBa0IsQ0FBQyxhQUFtRDtnQkFDckYsT0FBTyxFQUFFLGtCQUFrQixDQUFDLFNBQVM7YUFDdEM7WUFDRCxhQUFhLEVBQUUsYUFBYSxDQUFDLFVBQVUsRUFBRTtTQUMxQyxDQUFDO1FBRUYsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNuRCxJQUFJLFVBQVUsSUFBSyxVQUFrQixDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDekQsYUFBYSxDQUFDLGlCQUFpQixHQUFJLFVBQWtCLENBQUMsa0JBQWtCLENBQUM7UUFDM0UsQ0FBQztRQUVELGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFFaEQsYUFBYSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsRUFBRSxXQUFXLFdBQVcsVUFBVSxFQUFFO1lBQzdFLFdBQVcsRUFBRSxTQUFTO1NBQ3ZCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxDQUN4QyxXQUFXLEVBQ1gsU0FBUyxFQUNULHNCQUFzQixFQUN0QixhQUFhLENBQUMsV0FBVyxFQUFFLGFBQWEsQ0FDekMsQ0FBQztRQUVGLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUV2QixJQUFJLFlBQVksRUFBRSxDQUFDO1lBQ2pCLE1BQU0sWUFBWSxDQUFDO1FBQ3JCLENBQUM7UUFFRCxPQUFPLGFBQWEsQ0FBQztJQUN2QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFN1YmZsb3dFeGVjdXRvciDigJQgSXNvbGF0aW9uIGJvdW5kYXJ5IGZvciBzdWJmbG93IGV4ZWN1dGlvbi5cbiAqXG4gKiBSZXNwb25zaWJpbGl0aWVzOlxuICogLSBDcmVhdGUgaXNvbGF0ZWQgRXhlY3V0aW9uUnVudGltZSBmb3IgZWFjaCBzdWJmbG93XG4gKiAtIEFwcGx5IGlucHV0L291dHB1dCBtYXBwaW5nIHZpYSBTdWJmbG93SW5wdXRNYXBwZXJcbiAqIC0gRGVsZWdhdGUgdHJhdmVyc2FsIHRvIGEgZmFjdG9yeS1jcmVhdGVkIEZsb3djaGFydFRyYXZlcnNlclxuICogLSBUcmFjayBzdWJmbG93IHJlc3VsdHMgZm9yIGRlYnVnZ2luZy92aXN1YWxpemF0aW9uXG4gKlxuICogRWFjaCBzdWJmbG93IGdldHMgaXRzIG93biBHbG9iYWxTdG9yZSBmb3IgaXNvbGF0aW9uLlxuICogVHJhdmVyc2FsIHVzZXMgdGhlIFNBTUUgNy1waGFzZSBhbGdvcml0aG0gYXMgdGhlIHRvcC1sZXZlbCB0cmF2ZXJzZXJcbiAqICh2aWEgU3ViZmxvd1RyYXZlcnNlckZhY3RvcnkpLCBzbyBkZWNpZGVycywgc2VsZWN0b3JzLCBsb29wcywgbGF6eSBzdWJmbG93cyxcbiAqIGFuZCBhYm9ydCBzaWduYWxzIGFsbCB3b3JrIGluc2lkZSBzdWJmbG93cyBhdXRvbWF0aWNhbGx5LlxuICovXG5cbmltcG9ydCB0eXBlIHsgU3RhZ2VDb250ZXh0IH0gZnJvbSAnLi4vLi4vbWVtb3J5L1N0YWdlQ29udGV4dC5qcyc7XG5pbXBvcnQgeyBpc1BhdXNlU2lnbmFsIH0gZnJvbSAnLi4vLi4vcGF1c2UvdHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBTdGFnZU5vZGUgfSBmcm9tICcuLi9ncmFwaC9TdGFnZU5vZGUuanMnO1xuaW1wb3J0IHR5cGUgeyBUcmF2ZXJzYWxDb250ZXh0IH0gZnJvbSAnLi4vbmFycmF0aXZlL3R5cGVzLmpzJztcbmltcG9ydCB0eXBlIHtcbiAgSGFuZGxlckRlcHMsXG4gIElFeGVjdXRpb25SdW50aW1lLFxuICBTdWJmbG93UmVzdWx0LFxuICBTdWJmbG93VHJhdmVyc2VyRmFjdG9yeSxcbiAgU3ViZmxvd1RyYXZlcnNlckhhbmRsZSxcbn0gZnJvbSAnLi4vdHlwZXMuanMnO1xuaW1wb3J0IHsgYXBwbHlPdXRwdXRNYXBwaW5nLCBnZXRJbml0aWFsU2NvcGVWYWx1ZXMsIHNlZWRTdWJmbG93R2xvYmFsU3RvcmUgfSBmcm9tICcuL1N1YmZsb3dJbnB1dE1hcHBlci5qcyc7XG5pbXBvcnQgdHlwZSB7IEJyZWFrRmxhZyB9IGZyb20gJy4vdHlwZXMuanMnO1xuXG5leHBvcnQgY2xhc3MgU3ViZmxvd0V4ZWN1dG9yPFRPdXQgPSBhbnksIFRTY29wZSA9IGFueT4ge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGRlcHM6IEhhbmRsZXJEZXBzPFRPdXQsIFRTY29wZT4sXG4gICAgcHJpdmF0ZSB0cmF2ZXJzZXJGYWN0b3J5OiBTdWJmbG93VHJhdmVyc2VyRmFjdG9yeTxUT3V0LCBUU2NvcGU+LFxuICApIHt9XG5cbiAgLyoqXG4gICAqIEV4ZWN1dGUgYSBzdWJmbG93IHdpdGggaXNvbGF0ZWQgY29udGV4dC5cbiAgICpcbiAgICogMS4gQ3JlYXRlcyBhIGZyZXNoIEV4ZWN1dGlvblJ1bnRpbWUgZm9yIHRoZSBzdWJmbG93XG4gICAqIDIuIEFwcGxpZXMgaW5wdXQgbWFwcGluZyB0byBzZWVkIHRoZSBzdWJmbG93J3MgR2xvYmFsU3RvcmVcbiAgICogMy4gRGVsZWdhdGVzIHRyYXZlcnNhbCB0byBhIGZhY3RvcnktY3JlYXRlZCBGbG93Y2hhcnRUcmF2ZXJzZXJcbiAgICogNC4gQXBwbGllcyBvdXRwdXQgbWFwcGluZyB0byB3cml0ZSByZXN1bHRzIGJhY2sgdG8gcGFyZW50IHNjb3BlXG4gICAqIDUuIFN0b3JlcyBleGVjdXRpb24gZGF0YSBmb3IgZGVidWdnaW5nL3Zpc3VhbGl6YXRpb25cbiAgICovXG4gIGFzeW5jIGV4ZWN1dGVTdWJmbG93KFxuICAgIG5vZGU6IFN0YWdlTm9kZTxUT3V0LCBUU2NvcGU+LFxuICAgIHBhcmVudENvbnRleHQ6IFN0YWdlQ29udGV4dCxcbiAgICBicmVha0ZsYWc6IEJyZWFrRmxhZyxcbiAgICBicmFuY2hQYXRoOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgc3ViZmxvd1Jlc3VsdHNNYXA6IE1hcDxzdHJpbmcsIFN1YmZsb3dSZXN1bHQ+LFxuICAgIHBhcmVudFRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0LFxuICApOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IHN1YmZsb3dJZCA9IG5vZGUuc3ViZmxvd0lkITtcbiAgICBjb25zdCBzdWJmbG93TmFtZSA9IG5vZGUuc3ViZmxvd05hbWUgPz8gbm9kZS5uYW1lO1xuXG4gICAgcGFyZW50Q29udGV4dC5hZGRGbG93RGVidWdNZXNzYWdlKCdzdWJmbG93JywgYEVudGVyaW5nICR7c3ViZmxvd05hbWV9IHN1YmZsb3dgLCB7XG4gICAgICB0YXJnZXRTdGFnZTogc3ViZmxvd0lkLFxuICAgIH0pO1xuXG4gICAgLy8g4pSA4pSA4pSAIElucHV0IE1hcHBpbmcg4pSA4pSA4pSAXG4gICAgLy9cbiAgICAvLyBSRVNVTUUgUEFUSCBOT1RFOiB3aGVuIGBkZXBzLnN1YmZsb3dTdGF0ZXNGb3JSZXN1bWVgIGNhcnJpZXMgYVxuICAgIC8vIGNhcHR1cmUgZm9yIFRISVMgc3ViZmxvdyBpZCwgd2UgU0tJUCB0aGUgaW5wdXRNYXBwZXIgZW50aXJlbHkuXG4gICAgLy8gVGhlIGNhcHR1cmUgaXMgdGhlIHBvc3QtaW5wdXQgcHJlLXBhdXNlIG1lbW9yeSDigJQgcnVubmluZyB0aGVcbiAgICAvLyBtYXBwZXIgYWdhaW4gd291bGQgY2xvYmJlciBwb3N0LWlucHV0IHdyaXRlcyAoaGlzdG9yeSxcbiAgICAvLyBwYXVzZWRUb29sQ2FsbElkLCBldGMuKSB3aXRoIHRoZSBwYXJlbnQncyBzdGFydC1vZi1zdWJmbG93IHZpZXcuXG4gICAgY29uc3QgbW91bnRPcHRpb25zID0gbm9kZS5zdWJmbG93TW91bnRPcHRpb25zO1xuICAgIGxldCBtYXBwZWRJbnB1dDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcbiAgICBjb25zdCByZXN1bWVDYXB0dXJlID0gdGhpcy5kZXBzLnN1YmZsb3dTdGF0ZXNGb3JSZXN1bWU/LltzdWJmbG93SWRdO1xuICAgIGNvbnN0IGlzUmVzdW1lRm9yVGhpc1N1YmZsb3cgPSByZXN1bWVDYXB0dXJlICE9PSB1bmRlZmluZWQ7XG5cbiAgICBpZiAobW91bnRPcHRpb25zICYmICFpc1Jlc3VtZUZvclRoaXNTdWJmbG93KSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBwYXJlbnRTY29wZSA9IHBhcmVudENvbnRleHQuZ2V0U2NvcGUoKTtcbiAgICAgICAgbWFwcGVkSW5wdXQgPSBnZXRJbml0aWFsU2NvcGVWYWx1ZXMocGFyZW50U2NvcGUsIG1vdW50T3B0aW9ucyk7XG4gICAgICAgIGlmIChPYmplY3Qua2V5cyhtYXBwZWRJbnB1dCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgIC8vIG1hcHBlZElucHV0IGlzIGNhcHR1cmVkIGluIFN1YmZsb3dSZXN1bHQudHJlZUNvbnRleHQgZm9yIGRlYnVnZ2luZ1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICAgIHBhcmVudENvbnRleHQuYWRkRXJyb3IoJ2lucHV0TWFwcGVyRXJyb3InLCBlcnJvci50b1N0cmluZygpKTtcbiAgICAgICAgdGhpcy5kZXBzLmxvZ2dlci5lcnJvcihgRXJyb3IgaW4gaW5wdXRNYXBwZXIgZm9yIHN1YmZsb3cgKCR7c3ViZmxvd0lkfSk6YCwgeyBlcnJvciB9KTtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gTmFycmF0aXZlIHJlY2VpdmVzIG1hcHBlZCBpbnB1dC4gaW5wdXRNYXBwZXIgaXMgYSBjb25zdW1lciBmdW5jdGlvbiB0aGF0IG1heSBpbmplY3RcbiAgICAvLyB2YWx1ZXMgbm90IGZyb20gdGhlIHNjb3BlIChieXBhc3NpbmcgcmVkYWN0aW9uKS4gVGhlIHJlY29yZGVyIHJlbmRlcnMgcGVyIGluY2x1ZGVWYWx1ZXMuXG4gICAgY29uc3QgbmFycmF0aXZlSW5wdXQgPSBtYXBwZWRJbnB1dDtcbiAgICAvLyBgRmxvd1N1YmZsb3dFdmVudC5kZXNjcmlwdGlvbmAgaXMgc2VtYW50aWNhbGx5IFwid2hhdCB0aGlzIHN1YmZsb3cgZG9lc1wiIOKAlCBzb3VyY2VkIGZyb21cbiAgICAvLyB0aGUgc3ViZmxvdydzIG93biByb290IHN0YWdlLCBub3QgdGhlIHBhcmVudCBtb3VudCBwb2ludC4gVGhlIG1vdW50IG5vZGUgbmV2ZXIgY2Fycmllc1xuICAgIC8vIGEgZGVzY3JpcHRpb24gKGJ1aWxkZXJzIGRvbid0IGNvcHkgaXQpLCBzbyByZWFkaW5nIGBub2RlLmRlc2NyaXB0aW9uYCBoZXJlIHJldHVybnNcbiAgICAvLyBgdW5kZWZpbmVkYCBhbmQgdGF4b25vbXkgbWFya2VycyBzZXQgb24gdGhlIHN1YmZsb3cgcm9vdCAoZS5nLiBhZ2VudGZvb3RwcmludCdzXG4gICAgLy8gYCdBZ2VudDogUmVBY3QgbG9vcCdgIC8gYCdMTE1DYWxsOiBvbmUtc2hvdCdgKSBuZXZlciByZWFjaCBkb3duc3RyZWFtIGNvbnN1bWVycy5cbiAgICBjb25zdCByb290RGVzY3JpcHRpb24gPSB0aGlzLmRlcHMuc3ViZmxvd3M/LltzdWJmbG93SWRdPy5yb290Py5kZXNjcmlwdGlvbjtcbiAgICB0aGlzLmRlcHMubmFycmF0aXZlR2VuZXJhdG9yLm9uU3ViZmxvd0VudHJ5KFxuICAgICAgc3ViZmxvd05hbWUsXG4gICAgICBzdWJmbG93SWQsXG4gICAgICByb290RGVzY3JpcHRpb24gPz8gbm9kZS5kZXNjcmlwdGlvbixcbiAgICAgIHBhcmVudFRyYXZlcnNhbENvbnRleHQsXG4gICAgICBuYXJyYXRpdmVJbnB1dCxcbiAgICApO1xuICAgIC8vIFByb3Bvc2FsICMwMDM6IGZpcmUgb25TdGFnZUV4ZWN1dGVkIGZvciB0aGUgbW91bnQgbm9kZSBBRlRFUlxuICAgIC8vIG9uU3ViZmxvd0VudHJ5IHNvIGNvbnN1bWVycyB0cmFja2luZyBcImRpZCB0aGlzIHN0YWdlIHJ1blwiIHdvcmtcbiAgICAvLyB1bmlmb3JtbHkgYWNyb3NzIGxpbmVhciAvIGRlY2lkZXIgLyBmb3JrIC8gc2VsZWN0b3IgLyBzdWJmbG93LW1vdW50LlxuICAgIC8vIEZpcmVzIG9uIEVOVFJZIChub3QgZXhpdCkg4oCUIGVudHJ5ID0gXCJ0aGlzIG1vdW50IHJhblwiOyB0aGVcbiAgICAvLyBzdWJmbG93J3MgY2hpbGRyZW4gZXhlY3V0ZSBhZnRlciBhcyBzZXBhcmF0ZSBzdGFnZXMuXG4gICAgdGhpcy5kZXBzLm5hcnJhdGl2ZUdlbmVyYXRvci5vblN0YWdlRXhlY3V0ZWQoXG4gICAgICBub2RlLm5hbWUsXG4gICAgICByb290RGVzY3JpcHRpb24gPz8gbm9kZS5kZXNjcmlwdGlvbixcbiAgICAgIHBhcmVudFRyYXZlcnNhbENvbnRleHQsXG4gICAgICAnc3ViZmxvdy1tb3VudCcsXG4gICAgKTtcblxuICAgIC8vIENyZWF0ZSBpc29sYXRlZCBydW50aW1lIHZpYSBkeW5hbWljIGNvbnN0cnVjdGlvbiAoYXZvaWRzIGNpcmN1bGFyIGltcG9ydClcbiAgICBjb25zdCBFeGVjdXRpb25SdW50aW1lQ2xhc3MgPSB0aGlzLmRlcHMuZXhlY3V0aW9uUnVudGltZS5jb25zdHJ1Y3RvciBhcyBuZXcgKFxuICAgICAgbmFtZTogc3RyaW5nLFxuICAgICAgaWQ6IHN0cmluZyxcbiAgICApID0+IElFeGVjdXRpb25SdW50aW1lO1xuICAgIGNvbnN0IG5lc3RlZFJ1bnRpbWUgPSBuZXcgRXhlY3V0aW9uUnVudGltZUNsYXNzKG5vZGUubmFtZSwgbm9kZS5pZCk7XG4gICAgbGV0IG5lc3RlZFJvb3RDb250ZXh0ID0gbmVzdGVkUnVudGltZS5yb290U3RhZ2VDb250ZXh0O1xuXG4gICAgLy8gU2VlZCBHbG9iYWxTdG9yZSB3aXRoIHRoZSByaWdodCBzaGFwZSBmb3IgdGhlIHBhdGg6XG4gICAgLy8gICDigKIgUmVzdW1lIGludG8gVEhJUyBzdWJmbG93IOKGkiBzZWVkIGZyb20gdGhlIGNhcHR1cmVkIHByZS1wYXVzZVxuICAgIC8vICAgICBzY29wZSBzbyByZXN1bWUgaGFuZGxlcnMgc2VlIGhpc3RvcnksIHBhdXNlZFRvb2xDYWxsSWQsIGV0Yy5cbiAgICAvLyAgIOKAoiBOb3JtYWwgZW50cnkg4oaSIHNlZWQgZnJvbSB0aGUgaW5wdXRNYXBwZXIncyBtYXBwZWRJbnB1dC5cbiAgICBjb25zdCBzZWVkVmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IGlzUmVzdW1lRm9yVGhpc1N1YmZsb3cgPyByZXN1bWVDYXB0dXJlISA6IG1hcHBlZElucHV0O1xuICAgIGlmIChPYmplY3Qua2V5cyhzZWVkVmFsdWVzKS5sZW5ndGggPiAwKSB7XG4gICAgICBzZWVkU3ViZmxvd0dsb2JhbFN0b3JlKG5lc3RlZFJ1bnRpbWUsIHNlZWRWYWx1ZXMpO1xuICAgICAgLy8gUmVmcmVzaCByb290U3RhZ2VDb250ZXh0IHNvIFdyaXRlQnVmZmVyIHNlZXMgY29tbWl0dGVkIGRhdGFcbiAgICAgIGNvbnN0IFN0YWdlQ29udGV4dENsYXNzID0gbmVzdGVkUm9vdENvbnRleHQuY29uc3RydWN0b3IgYXMgbmV3ICguLi5hcmdzOiBhbnlbXSkgPT4gU3RhZ2VDb250ZXh0O1xuICAgICAgbmVzdGVkUm9vdENvbnRleHQgPSBuZXcgU3RhZ2VDb250ZXh0Q2xhc3MoXG4gICAgICAgICcnLFxuICAgICAgICBuZXN0ZWRSb290Q29udGV4dC5zdGFnZU5hbWUsXG4gICAgICAgIG5lc3RlZFJvb3RDb250ZXh0LnN0YWdlSWQsXG4gICAgICAgIG5lc3RlZFJ1bnRpbWUuZ2xvYmFsU3RvcmUsXG4gICAgICAgICcnLFxuICAgICAgICBuZXN0ZWRSdW50aW1lLmV4ZWN1dGlvbkhpc3RvcnksXG4gICAgICApO1xuICAgICAgbmVzdGVkUnVudGltZS5yb290U3RhZ2VDb250ZXh0ID0gbmVzdGVkUm9vdENvbnRleHQ7XG4gICAgfVxuXG4gICAgLy8gUmVhZC10cmFja2luZyBwb2xpY3kgKCMxNCk6IHN1YmZsb3dzIGdldCBhbiBJU09MQVRFRCBydW50aW1lLCBzbyB0aGVcbiAgICAvLyBleGVjdXRvci1sZXZlbCBwb2xpY3kgZG9lc24ndCByZWFjaCB0aGVtIHZpYSB0aGUgcm9vdCBjb250ZXh0IGNoYWluLlxuICAgIC8vIEluaGVyaXQgaXQgZnJvbSB0aGUgcGFyZW50LW1vdW50IGNvbnRleHQgKHdoaWNoIGluaGVyaXRlZCBpdCBmcm9tIElUU1xuICAgIC8vIHJvb3QgdmlhIGNyZWF0ZU5leHQvY3JlYXRlQ2hpbGQpIOKAlCBhcHBsaWVkIHRvIHRoZSBGSU5BTCBuZXN0ZWQgcm9vdCxcbiAgICAvLyBhZnRlciB0aGUgc2VlZGluZyBibG9jayBhYm92ZSBtYXkgaGF2ZSByZXBsYWNlZCBpdC4gTmVzdGVkIHN1YmZsb3dzXG4gICAgLy8gY2hhaW4gdGhlIHNhbWUgd2F5LCBvbmUgaG9wIHBlciBtb3VudC4gT3B0aW9uYWwtY2hhaW5lZCBiZWNhdXNlIHRoaXNcbiAgICAvLyBzZWN0aW9uIGlzIGR1Y2stdHlwZWQgYnkgZGVzaWduIChkeW5hbWljIGNvbnN0cnVjdGlvbiB0byBhdm9pZCB0aGVcbiAgICAvLyBjaXJjdWxhciBpbXBvcnQpIOKAlCBhbmQgc2tpcHBlZCBhdCB0aGUgZGVmYXVsdCAnZnVsbCcsIHdoZXJlIHRoZSBmcmVzaFxuICAgIC8vIG5lc3RlZCBjb250ZXh0IGlzIGFscmVhZHkgY29ycmVjdCwgc28gdGhlIGRlZmF1bHQgcGF0aCBkb2VzIHplcm8gd29yay5cbiAgICBjb25zdCBwYXJlbnRSZWFkVHJhY2tpbmcgPSBwYXJlbnRDb250ZXh0LmdldFJlYWRUcmFja2luZz8uKCk7XG4gICAgaWYgKHBhcmVudFJlYWRUcmFja2luZyAhPT0gdW5kZWZpbmVkICYmIHBhcmVudFJlYWRUcmFja2luZyAhPT0gJ2Z1bGwnKSB7XG4gICAgICBuZXN0ZWRSb290Q29udGV4dC51c2VSZWFkVHJhY2tpbmcocGFyZW50UmVhZFRyYWNraW5nKTtcbiAgICB9XG5cbiAgICAvLyBQcmVwYXJlIHN1YmZsb3cgcm9vdCBub2RlIOKAlCBzdHJpcCBpc1N1YmZsb3dSb290IHRvIHByZXZlbnQgcmUtZGVsZWdhdGlvbi5cbiAgICAvL1xuICAgIC8vIFBSRVNFUlZFIGBuZXh0YC4gRWFybGllciByZXZpc2lvbnMgc3RyaXBwZWQgYG5leHRgIHdoZW5ldmVyIHRoZVxuICAgIC8vIHN1YmZsb3cgcm9vdCBoYWQgY2hpbGRyZW4sIG9uIHRoZSBhc3N1bXB0aW9uIHRoYXQgYG5leHRgIHdhc1xuICAgIC8vIGFsd2F5cyB0aGUgT1VURVIgbW91bnQncyBjb250aW51YXRpb24gbGVha2luZyBpbnRvIHRoZSBpbm5lclxuICAgIC8vIHRyZWUuIFRoYXQgYXNzdW1wdGlvbiB3YXMgd3Jvbmc6IHRoZSByZXNvbHZlZCBzdWJmbG93IHJvb3Qnc1xuICAgIC8vIGBuZXh0YCBpcyB0aGUgSU5ORVIgam9pbiBzdGFnZSAoZS5nLiwgUGFyYWxsZWwncyBNZXJnZSBhZnRlciBhXG4gICAgLy8gZmFuLW91dCwgVG9UJ3MgUHJ1bmVyKS4gU3RyaXBwaW5nIGl0IGJyb2tlIGNvbXBvc2l0ZSBzdWJmbG93cyDigJRcbiAgICAvLyB0aGUgam9pbiBzdGFnZSBuZXZlciByYW4sIHNvIHRoZSBzdWJmbG93IHJldHVybmVkIHBhcnRpYWwgc3RhdGUuXG4gICAgLy9cbiAgICAvLyBUaGUgb3V0ZXIgbW91bnQncyBwb3N0LXN1YmZsb3cgY29udGludWF0aW9uIGlzIGhhbmRsZWQgc2VwYXJhdGVseVxuICAgIC8vIGJ5IHRoZSBwYXJlbnQgdHJhdmVyc2VyIHZpYSBgcGFyZW50Q29udGV4dC5uZXh0Tm9kZWAgYW5kIGlzIG5ldmVyXG4gICAgLy8gY29uZmxhdGVkIHdpdGggdGhlIGlubmVyIHN1YmZsb3cncyBgbmV4dGAgY2hhaW4uXG4gICAgY29uc3Qgc3ViZmxvd05vZGU6IFN0YWdlTm9kZTxUT3V0LCBUU2NvcGU+ID0ge1xuICAgICAgLi4ubm9kZSxcbiAgICAgIGlzU3ViZmxvd1Jvb3Q6IGZhbHNlLFxuICAgIH07XG5cbiAgICAvLyDilIDilIDilIAgRXhlY3V0ZSB2aWEgZmFjdG9yeSB0cmF2ZXJzZXIg4pSA4pSA4pSAXG4gICAgLy8gVGhlIGZhY3RvcnkgY3JlYXRlcyBhIGZ1bGwgRmxvd2NoYXJ0VHJhdmVyc2VyIHdpdGggdGhlIHNhbWUgNy1waGFzZSBhbGdvcml0aG0sXG4gICAgLy8gc2hhcmluZyB0aGUgcGFyZW50J3Mgc3RhZ2VNYXAsIHN1YmZsb3dzIGRpY3QsIGFuZCBuYXJyYXRpdmUgZ2VuZXJhdG9yLlxuICAgIGxldCBzdWJmbG93T3V0cHV0OiBhbnk7XG4gICAgbGV0IHN1YmZsb3dFcnJvcjogRXJyb3IgfCB1bmRlZmluZWQ7XG4gICAgbGV0IHRyYXZlcnNlckhhbmRsZTogU3ViZmxvd1RyYXZlcnNlckhhbmRsZTxUT3V0LCBUU2NvcGU+IHwgdW5kZWZpbmVkO1xuXG4gICAgdHJ5IHtcbiAgICAgIHRyYXZlcnNlckhhbmRsZSA9IHRoaXMudHJhdmVyc2VyRmFjdG9yeSh7XG4gICAgICAgIHJvb3Q6IHN1YmZsb3dOb2RlLFxuICAgICAgICBleGVjdXRpb25SdW50aW1lOiBuZXN0ZWRSdW50aW1lLFxuICAgICAgICByZWFkT25seUNvbnRleHQ6IG1hcHBlZElucHV0LFxuICAgICAgICBzdWJmbG93SWQsXG4gICAgICB9KTtcblxuICAgICAgc3ViZmxvd091dHB1dCA9IGF3YWl0IHRyYXZlcnNlckhhbmRsZS5leGVjdXRlKCk7XG4gICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgLy8gUGF1c2VTaWduYWwgaXMgbm90IGFuIGVycm9yIOKAlCBwcmVwZW5kIHN1YmZsb3cgSUQgYW5kIHJlLXRocm93XG4gICAgICAvLyBpbW1lZGlhdGVseS4gTm8gZXJyb3IgbG9nZ2luZywgbm8gc3ViZmxvd1Jlc3VsdCByZWNvcmRpbmcg4oCUXG4gICAgICAvLyB0aGUgcGF1c2UgaXMgY29udHJvbCBmbG93LlxuICAgICAgLy9cbiAgICAgIC8vIEJFRk9SRSByZS10aHJvdywgc25hcHNob3QgdGhlIG5lc3RlZCBydW50aW1lJ3MgYHNoYXJlZFN0YXRlYFxuICAgICAgLy8gb250byB0aGUgc2lnbmFsLiBUaGlzIGlzIHRoZSBvbmx5IGNoYW5jZSDigJQgb25jZSB3ZSByZS10aHJvdyxcbiAgICAgIC8vIHRoZSBvdXRlciB0cmF2ZXJzZXIgdW53aW5kcyBhbmQgdGhlIG5lc3RlZCBydW50aW1lIGlzIEdDJ2QuIE9uXG4gICAgICAvLyByZXN1bWUsIHdlJ2xsIHJlLXNlZWQgYSBmcmVzaCBuZXN0ZWQgcnVudGltZSBmcm9tIHRoaXMgY2FwdHVyZVxuICAgICAgLy8gc28gcmVzdW1lIGhhbmRsZXJzIGNhbiByZWFkIHRoZSBwcmUtcGF1c2Ugc3ViZmxvdyBzY29wZS5cbiAgICAgIC8vXG4gICAgICAvLyBDYXB0dXJlIGlzIGtleWVkIGJ5IHRoZSBTQU1FIHBhdGgtcHJlZml4ZWQgYHN1YmZsb3dJZGAgdXNlZCBpblxuICAgICAgLy8gYHN1YmZsb3dQYXRoYCwgc28gcmVzdW1lIGNhbiBsb29rIHVwIFwic2NvcGUgZm9yIHNmLWZvb1wiIGJ5IGlkLlxuICAgICAgaWYgKGlzUGF1c2VTaWduYWwoZXJyb3IpKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3Qgc25hcCA9IG5lc3RlZFJ1bnRpbWUuZ2V0U25hcHNob3QoKTtcbiAgICAgICAgICAvLyBgc2hhcmVkU3RhdGVgIGlzIHRoZSBzdWJmbG93J3Mgd29ya2luZyBtZW1vcnkgYXQgcGF1c2VcbiAgICAgICAgICAvLyB0aW1lIChhZnRlciBldmVyeSBjb21taXR0ZWQgd3JpdGUgdXAgdG8gdGhlIHBhdXNlKS4gQ2FzdFxuICAgICAgICAgIC8vIGlzIHNhZmUg4oCUIFNoYXJlZE1lbW9yeSBzbmFwc2hvdCByZXR1cm5zIGEgcGxhaW4gb2JqZWN0LlxuICAgICAgICAgIGVycm9yLmNhcHR1cmVTdWJmbG93U2NvcGUoc3ViZmxvd0lkLCBzbmFwLnNoYXJlZFN0YXRlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KTtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgLy8gU25hcHNob3QgZmFpbHVyZSBzaG91bGRuJ3QgbWFzayB0aGUgcGF1c2Ug4oCUIGxldCB0aGUgcGF1c2VcbiAgICAgICAgICAvLyBidWJibGUgdXA7IHJlc3VtZSB3aWxsIGZhbGwgYmFjayB0byBjaGVja3BvaW50LnNoYXJlZFN0YXRlXG4gICAgICAgICAgLy8gKHRoZSBwYXJlbnQgc2NvcGUpIGZvciB0aGlzIHN1YmZsb3cncyBrZXlzLlxuICAgICAgICB9XG4gICAgICAgIGVycm9yLnByZXBlbmRTdWJmbG93KHN1YmZsb3dJZCk7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgICAgc3ViZmxvd0Vycm9yID0gZXJyb3I7XG4gICAgICBwYXJlbnRDb250ZXh0LmFkZEVycm9yKCdzdWJmbG93RXJyb3InLCBlcnJvci50b1N0cmluZygpKTtcbiAgICAgIHRoaXMuZGVwcy5sb2dnZXIuZXJyb3IoYEVycm9yIGluIHN1YmZsb3cgKCR7c3ViZmxvd0lkfSk6YCwgeyBlcnJvciB9KTtcbiAgICB9XG5cbiAgICAvLyBBbHdheXMgbWVyZ2UgbmVzdGVkIHN1YmZsb3cgcmVzdWx0cyAoZXZlbiBvbiBlcnJvciDigJQgcGFydGlhbCByZXN1bHRzIGFpZCBkZWJ1Z2dpbmcpXG4gICAgaWYgKHRyYXZlcnNlckhhbmRsZSkge1xuICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgdHJhdmVyc2VySGFuZGxlLmdldFN1YmZsb3dSZXN1bHRzKCkpIHtcbiAgICAgICAgc3ViZmxvd1Jlc3VsdHNNYXAuc2V0KGtleSwgdmFsdWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIOKUgOKUgOKUgCBCcmVhayBwcm9wYWdhdGlvbiAob3B0LWluIHZpYSBTdWJmbG93TW91bnRPcHRpb25zLnByb3BhZ2F0ZUJyZWFrKSDilIDilIBcbiAgICAvL1xuICAgIC8vIElmIHRoZSBzdWJmbG93J3MgaW5uZXIgdHJhdmVyc2FsIGJyb2tlIChiZWNhdXNlIGEgc3RhZ2UgY2FsbGVkXG4gICAgLy8gYHNjb3BlLiRicmVhayhyZWFzb24pYCkgQU5EIHRoZSBtb3VudCBkZWNsYXJlZCBgcHJvcGFnYXRlQnJlYWs6IHRydWVgLFxuICAgIC8vIGZvcndhcmQgdGhlIGJyZWFrIHN0YXRlIHRvIHRoZSBQQVJFTlQncyBicmVha0ZsYWcuIFRoZSBwYXJlbnRcbiAgICAvLyB0cmF2ZXJzZXIgd2lsbCBzZWUgYHNob3VsZEJyZWFrYCBvbiBpdHMgbmV4dCBzdGVwIGFuZCBzdG9wLlxuICAgIC8vXG4gICAgLy8gV2l0aG91dCB0aGlzLCBpbm5lciBicmVha3MgYXJlIGxvY2FsbHkgc2NvcGVkIHRvIHRoZSBzdWJmbG93IOKAlCB0aGVcbiAgICAvLyBwYXJlbnQgY29udGludWVzIGFzIGlmIHRoZSBzdWJmbG93IHJldHVybmVkIG5vcm1hbGx5LlxuICAgIC8vXG4gICAgLy8gSU1QT1JUQU5UOiB0aGlzIHJ1bnMgQkVGT1JFIGBvdXRwdXRNYXBwaW5nYCBiZWxvdywgaW50ZW50aW9uYWxseS4gVGhlXG4gICAgLy8gb3V0cHV0TWFwcGVyIHN0aWxsIGV4ZWN1dGVzLCBzbyB0aGUgc3ViZmxvdydzIHBhcnRpYWwgcmVzdWx0IHN0aWxsXG4gICAgLy8gbGFuZHMgaW4gdGhlIHBhcmVudCBzY29wZS4gQ29uc3VtZXJzIHdobyBuZWVkIHRvIHN1cHByZXNzIG91dHB1dCBvblxuICAgIC8vIGJyZWFrIGNoZWNrIHRoZSBicmVhayBzdGF0ZSBpbnNpZGUgdGhlaXIgb3V0cHV0TWFwcGVyIGFuZCBlYXJseS1yZXR1cm4uXG4gICAgLy8gU2VlIGBTdWJmbG93TW91bnRPcHRpb25zLnByb3BhZ2F0ZUJyZWFrYCBKU0RvYyBmb3IgcmF0aW9uYWxlLlxuICAgIGlmICh0cmF2ZXJzZXJIYW5kbGUgJiYgbW91bnRPcHRpb25zPy5wcm9wYWdhdGVCcmVhayA9PT0gdHJ1ZSkge1xuICAgICAgY29uc3QgaW5uZXJCcmVhayA9IHRyYXZlcnNlckhhbmRsZS5nZXRCcmVha1N0YXRlKCk7XG4gICAgICBpZiAoaW5uZXJCcmVhay5zaG91bGRCcmVhaykge1xuICAgICAgICBicmVha0ZsYWcuc2hvdWxkQnJlYWsgPSB0cnVlO1xuICAgICAgICBpZiAoaW5uZXJCcmVhay5yZWFzb24gIT09IHVuZGVmaW5lZCAmJiBicmVha0ZsYWcucmVhc29uID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBicmVha0ZsYWcucmVhc29uID0gaW5uZXJCcmVhay5yZWFzb247XG4gICAgICAgIH1cbiAgICAgICAgLy8gUmFpc2UgYSBwYXJlbnQtbGV2ZWwgb25CcmVhayBldmVudCBzbyByZWNvcmRlcnMgY2FuIGRpc3Rpbmd1aXNoXG4gICAgICAgIC8vIHRoZSBpbm5lciBvcmlnaW5hdGluZyBicmVhayAoZmlyZWQgaW5zaWRlIHRoZSBzdWJmbG93KSBmcm9tIHRoaXNcbiAgICAgICAgLy8gcHJvcGFnYXRlZCBvbmUgKGZpcmVkIGF0IHRoZSBtb3VudCBsZXZlbCBvbiB0aGUgcGFyZW50KS5cbiAgICAgICAgdGhpcy5kZXBzLm5hcnJhdGl2ZUdlbmVyYXRvci5vbkJyZWFrKHN1YmZsb3dOYW1lLCBwYXJlbnRUcmF2ZXJzYWxDb250ZXh0LCBpbm5lckJyZWFrLnJlYXNvbiwgc3ViZmxvd0lkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBzdWJmbG93VHJlZUNvbnRleHQgPSBuZXN0ZWRSdW50aW1lLmdldFNuYXBzaG90KCk7XG5cbiAgICAvLyDilIDilIDilIAgT3V0cHV0IE1hcHBpbmcg4pSA4pSA4pSAXG4gICAgaWYgKCFzdWJmbG93RXJyb3IgJiYgbW91bnRPcHRpb25zPy5vdXRwdXRNYXBwZXIpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGxldCBvdXRwdXRDb250ZXh0ID0gcGFyZW50Q29udGV4dDtcbiAgICAgICAgaWYgKHBhcmVudENvbnRleHQuYnJhbmNoSWQgJiYgcGFyZW50Q29udGV4dC5icmFuY2hJZCAhPT0gJycgJiYgcGFyZW50Q29udGV4dC5wYXJlbnQpIHtcbiAgICAgICAgICBvdXRwdXRDb250ZXh0ID0gcGFyZW50Q29udGV4dC5wYXJlbnQ7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwYXJlbnRTY29wZSA9IG91dHB1dENvbnRleHQuZ2V0U2NvcGUoKTtcbiAgICAgICAgLy8gRm9yIFR5cGVkU2NvcGUgc3ViZmxvd3MsIHN0YWdlIGZ1bmN0aW9ucyByZXR1cm4gdm9pZCDigJQgZmFsbCBiYWNrIHRvIGEgc2hhbGxvdyBjbG9uZVxuICAgICAgICAvLyBvZiB0aGUgc3ViZmxvdydzIHNoYXJlZCBzdGF0ZSBzbyBvdXRwdXRNYXBwZXIgY2FuIGFjY2VzcyBhbGwgc2NvcGUgdmFsdWVzIHdyaXR0ZW5cbiAgICAgICAgLy8gZHVyaW5nIHRoZSBzdWJmbG93LiBXZSBzaGFsbG93LWNsb25lIHRvIGF2b2lkIGFsaWFzaW5nIHRoZSBsaXZlIFNoYXJlZE1lbW9yeSBjb250ZXh0LlxuICAgICAgICAvLyBOT1RFOiB0aGUgZnVsbCBzY29wZSBpcyBwYXNzZWQgKG5vdCBqdXN0IGRlY2xhcmVkIG91dHB1dHMpIOKAlCBvdXRwdXRNYXBwZXIgbXVzdFxuICAgICAgICAvLyBleHBsaWNpdGx5IHNlbGVjdCB3aGF0IHRvIHByb3BhZ2F0ZSB0byB0aGUgcGFyZW50LlxuICAgICAgICAvLyBSZWRhY3Rpb246IHRoZSBzdWJmbG93IHNoYXJlcyB0aGUgcGFyZW50J3MgX3JlZGFjdGVkS2V5cyBTZXQgKHZpYSB0aGUgc2FtZSBTY29wZUZhY3RvcnkpLFxuICAgICAgICAvLyBzbyBhbnkga2V5IG1hcmtlZCByZWRhY3RlZCBpbiB0aGUgc3ViZmxvdyBpcyBhbHJlYWR5IHZpc2libGUgaW4gdGhlIHBhcmVudCdzIHNjb3BlLlxuICAgICAgICAvLyBTY29wZUZhY2FkZS5zZXRWYWx1ZSBjaGVja3MgX3JlZGFjdGVkS2V5cy5oYXMoa2V5KSwgc28gd3JpdGVzIHZpYSBvdXRwdXRNYXBwZXJcbiAgICAgICAgLy8gYXV0b21hdGljYWxseSBpbmhlcml0IHRoZSBzdWJmbG93J3MgZHluYW1pYyByZWRhY3Rpb24gc3RhdGUuXG4gICAgICAgIGNvbnN0IGVmZmVjdGl2ZU91dHB1dCA9IHN1YmZsb3dPdXRwdXQgPz8geyAuLi5zdWJmbG93VHJlZUNvbnRleHQuc2hhcmVkU3RhdGUgfTtcbiAgICAgICAgY29uc3QgbWFwcGVkT3V0cHV0ID0gYXBwbHlPdXRwdXRNYXBwaW5nKGVmZmVjdGl2ZU91dHB1dCwgcGFyZW50U2NvcGUsIG91dHB1dENvbnRleHQsIG1vdW50T3B0aW9ucyk7XG5cbiAgICAgICAgb3V0cHV0Q29udGV4dC5jb21taXQoKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgICAgcGFyZW50Q29udGV4dC5hZGRFcnJvcignb3V0cHV0TWFwcGVyRXJyb3InLCBlcnJvci50b1N0cmluZygpKTtcbiAgICAgICAgdGhpcy5kZXBzLmxvZ2dlci5lcnJvcihgRXJyb3IgaW4gb3V0cHV0TWFwcGVyIGZvciBzdWJmbG93ICgke3N1YmZsb3dJZH0pOmAsIHsgZXJyb3IgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qgc3ViZmxvd1Jlc3VsdDogU3ViZmxvd1Jlc3VsdCA9IHtcbiAgICAgIHN1YmZsb3dJZCxcbiAgICAgIHN1YmZsb3dOYW1lLFxuICAgICAgdHJlZUNvbnRleHQ6IHtcbiAgICAgICAgZ2xvYmFsQ29udGV4dDogc3ViZmxvd1RyZWVDb250ZXh0LnNoYXJlZFN0YXRlLFxuICAgICAgICBzdGFnZUNvbnRleHRzOiBzdWJmbG93VHJlZUNvbnRleHQuZXhlY3V0aW9uVHJlZSBhcyB1bmtub3duIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgICAgICBoaXN0b3J5OiBzdWJmbG93VHJlZUNvbnRleHQuY29tbWl0TG9nLFxuICAgICAgfSxcbiAgICAgIHBhcmVudFN0YWdlSWQ6IHBhcmVudENvbnRleHQuZ2V0U3RhZ2VJZCgpLFxuICAgIH07XG5cbiAgICBjb25zdCBzdWJmbG93RGVmID0gdGhpcy5kZXBzLnN1YmZsb3dzPy5bc3ViZmxvd0lkXTtcbiAgICBpZiAoc3ViZmxvd0RlZiAmJiAoc3ViZmxvd0RlZiBhcyBhbnkpLmJ1aWxkVGltZVN0cnVjdHVyZSkge1xuICAgICAgc3ViZmxvd1Jlc3VsdC5waXBlbGluZVN0cnVjdHVyZSA9IChzdWJmbG93RGVmIGFzIGFueSkuYnVpbGRUaW1lU3RydWN0dXJlO1xuICAgIH1cblxuICAgIHN1YmZsb3dSZXN1bHRzTWFwLnNldChzdWJmbG93SWQsIHN1YmZsb3dSZXN1bHQpO1xuXG4gICAgcGFyZW50Q29udGV4dC5hZGRGbG93RGVidWdNZXNzYWdlKCdzdWJmbG93JywgYEV4aXRpbmcgJHtzdWJmbG93TmFtZX0gc3ViZmxvd2AsIHtcbiAgICAgIHRhcmdldFN0YWdlOiBzdWJmbG93SWQsXG4gICAgfSk7XG4gICAgdGhpcy5kZXBzLm5hcnJhdGl2ZUdlbmVyYXRvci5vblN1YmZsb3dFeGl0KFxuICAgICAgc3ViZmxvd05hbWUsXG4gICAgICBzdWJmbG93SWQsXG4gICAgICBwYXJlbnRUcmF2ZXJzYWxDb250ZXh0LFxuICAgICAgc3ViZmxvd1Jlc3VsdC50cmVlQ29udGV4dD8uZ2xvYmFsQ29udGV4dCxcbiAgICApO1xuXG4gICAgcGFyZW50Q29udGV4dC5jb21taXQoKTtcblxuICAgIGlmIChzdWJmbG93RXJyb3IpIHtcbiAgICAgIHRocm93IHN1YmZsb3dFcnJvcjtcbiAgICB9XG5cbiAgICByZXR1cm4gc3ViZmxvd091dHB1dDtcbiAgfVxufVxuIl19