@mnaoumov/typescript-lib 1.5.0 → 1.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -141,4 +141,4 @@ function waitForAbort(abortSignal, shouldRejectOnAbort) {
141
141
  onAbort,
142
142
  waitForAbort
143
143
  });
144
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2Fib3J0LWNvbnRyb2xsZXIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBBYm9ydENvbnRyb2xsZXIgdXRpbGl0aWVzLlxuICovXG5cbmltcG9ydCB7XG4gIENhbGxiYWNrRGlzcG9zYWJsZSxcbiAgQ29tYmluZURpc3Bvc2FibGVcbn0gZnJvbSAnLi9kaXNwb3NhYmxlLnRzJztcbmltcG9ydCB7IG5vb3AgfSBmcm9tICcuL2Z1bmN0aW9uLnRzJztcbmltcG9ydCB7IGdldFR5cGVzY3JpcHRMaWJTdGF0ZSB9IGZyb20gJy4vdHlwZXNjcmlwdC1saWItc3RhdGUudHMnO1xuXG4vKipcbiAqIEEgY29uc3RhbnQgcmVwcmVzZW50aW5nIGFuIGluZmluaXRlIHRpbWVvdXQuXG4gKi9cbmV4cG9ydCBjb25zdCBJTkZJTklURV9USU1FT1VUID0gSW5maW5pdHk7XG5cbi8qKlxuICogQW4ge0BsaW5rIEFib3J0Q29udHJvbGxlcn0gdGhhdCBjYW4gYmUgYWJvcnRlZCBtb3JlIHRoYW4gb25jZS5cbiAqXG4gKiBBIHBsYWluIHtAbGluayBBYm9ydENvbnRyb2xsZXJ9IGlzIHNpbmdsZS11c2U6IG9uY2UgYWJvcnRlZCwgaXRzIHNpZ25hbCBzdGF5cyBhYm9ydGVkIGZvcmV2ZXIsIHNvIGl0XG4gKiBjYW5ub3QgYmFjayBhIGNhbmNlbCBidXR0b24gdGhhdCB0aGUgdXNlciBtYXkgcHJlc3MgbW9yZSB0aGFuIG9uY2UuIFRoaXMgb25lIGFib3J0cyB0aGUgY3VycmVudCBzaWduYWxcbiAqIGFuZCBpbW1lZGlhdGVseSByZXBsYWNlcyBpdCwgc28gdGhlIG5leHQgb3BlcmF0aW9uIHN0YXJ0cyB3aXRoIGEgZnJlc2gsIG5vbi1hYm9ydGVkIHNpZ25hbCB3aGlsZSB0aGUgd29ya1xuICogdGhhdCBjYXB0dXJlZCB0aGUgcHJldmlvdXMgc2lnbmFsIHN0aWxsIG9ic2VydmVzIHRoZSBhYm9ydC5cbiAqXG4gKiBSZWFkIHtAbGluayBSZXNldHRhYmxlQWJvcnRDb250cm9sbGVyLnNpZ25hbH0gYXQgdGhlIHN0YXJ0IG9mIGVhY2ggb3BlcmF0aW9uLiBOZXZlciBjYWNoZSBpdCwgb3IgdGhlXG4gKiBvcGVyYXRpb24gYWZ0ZXIgdGhlIGZpcnN0IGFib3J0IHN0YXJ0cyBhbHJlYWR5IGFib3J0ZWQuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHJlc2V0dGFibGVBYm9ydENvbnRyb2xsZXIgPSBuZXcgUmVzZXR0YWJsZUFib3J0Q29udHJvbGxlcigpO1xuICpcbiAqIGF3YWl0IGxvb3Aoe1xuICogICBhYm9ydFNpZ25hbDogcmVzZXR0YWJsZUFib3J0Q29udHJvbGxlci5zaWduYWwsXG4gKiAgIGJ1aWxkTm90aWNlTWVzc2FnZTogKGZpbGUpID0+IGBQcm9jZXNzaW5nICR7ZmlsZS5wYXRofWAsXG4gKiAgIGl0ZW1zOiBhcHAudmF1bHQuZ2V0TWFya2Rvd25GaWxlcygpLFxuICogICBwcm9jZXNzSXRlbTogYXN5bmMgKGZpbGUpID0+IHsgYXdhaXQgcHJvY2Vzc0ZpbGUoZmlsZSk7IH1cbiAqIH0pO1xuICpcbiAqIC8vIEZyb20gYSBjYW5jZWwgYnV0dG9uLCBhIGNvbW1hbmQsIG9yIHRoZSBkZXZ0b29scyBjb25zb2xlLlxuICogcmVzZXR0YWJsZUFib3J0Q29udHJvbGxlci5hYm9ydCgpO1xuICogYGBgXG4gKlxuICogQHNlZSB7QGxpbmsgZ2V0U2hhcmVkQWJvcnRDb250cm9sbGVyfSBmb3IgdGhlIGFwcC13aWRlIGluc3RhbmNlLlxuICovXG5leHBvcnQgY2xhc3MgUmVzZXR0YWJsZUFib3J0Q29udHJvbGxlciB7XG4gIC8qKlxuICAgKiBUaGUgY3VycmVudCBhYm9ydCBzaWduYWwuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSB7QGxpbmsgQWJvcnRTaWduYWx9IHRoYXQgYWJvcnRzIG9uIHRoZSBuZXh0IHtAbGluayBSZXNldHRhYmxlQWJvcnRDb250cm9sbGVyLmFib3J0fSBjYWxsLlxuICAgKi9cbiAgcHVibGljIGdldCBzaWduYWwoKTogQWJvcnRTaWduYWwge1xuICAgIHJldHVybiB0aGlzLmFib3J0Q29udHJvbGxlci5zaWduYWw7XG4gIH1cblxuICBwcml2YXRlIGFib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcblxuICAvKipcbiAgICogQWJvcnRzIHRoZSBjdXJyZW50IHNpZ25hbCBhbmQgcmVwbGFjZXMgaXQgd2l0aCBhIGZyZXNoLCBub24tYWJvcnRlZCBvbmUuXG4gICAqXG4gICAqIEBwYXJhbSByZWFzb24gLSBUaGUgcmVhc29uIHRvIGFib3J0IHdpdGguIFdoZW4gb21pdHRlZCwgdGhlIHNpZ25hbCBpcyBhYm9ydGVkIHdpdGggdGhlIG5hdGl2ZVxuICAgKiBgQWJvcnRFcnJvcmAge0BsaW5rIERPTUV4Y2VwdGlvbn0sIGV4YWN0bHkgYXMge0BsaW5rIEFib3J0Q29udHJvbGxlci5hYm9ydH0gZG9lcy5cbiAgICovXG4gIHB1YmxpYyBhYm9ydChyZWFzb24/OiB1bmtub3duKTogdm9pZCB7XG4gICAgdGhpcy5hYm9ydENvbnRyb2xsZXIuYWJvcnQocmVhc29uKTtcbiAgICB0aGlzLmFib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgfVxufVxuXG4vKipcbiAqIEFuIGFib3J0IHNpZ25hbCB0aGF0IGFib3J0cyB3aGVuIGFueSBvZiB0aGUgZ2l2ZW4gYWJvcnQgc2lnbmFscyBhYm9ydC5cbiAqXG4gKiBAcGFyYW0gbWF5YmVBYm9ydFNpZ25hbHMgLSBUaGUgYWJvcnQgc2lnbmFscyB0byBhYm9ydCB3aGVuIGFueSBvZiB0aGVtIGFib3J0LlxuICogQHJldHVybnMgVGhlIGFib3J0IHNpZ25hbCB0aGF0IGFib3J0cyB3aGVuIGFueSBvZiB0aGUgZ2l2ZW4gYWJvcnQgc2lnbmFscyBhYm9ydC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFib3J0U2lnbmFsQW55KC4uLm1heWJlQWJvcnRTaWduYWxzOiAoQWJvcnRTaWduYWwgfCB1bmRlZmluZWQpW10pOiBBYm9ydFNpZ25hbCB7XG4gIGNvbnN0IGFib3J0U2lnbmFscyA9IG1heWJlQWJvcnRTaWduYWxzLmZpbHRlcigoYWJvcnRTaWduYWwpID0+ICEhYWJvcnRTaWduYWwpO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuL25vLXVuc3VwcG9ydGVkLWZlYXR1cmVzL25vZGUtYnVpbHRpbnMgLS0gYEFib3J0U2lnbmFsLmFueWAgaXMgZmVhdHVyZS1kZXRlY3RlZCBoZXJlIHdpdGggYSBtYW51YWwgZmFsbGJhY2sgYmVsb3csIHNvIGl0IGlzIG5vdCByZXF1aXJlZCBvbiBvbGRlciBPYnNpZGlhbi9FbGVjdHJvbiAoQ2hyb21pdW0pIHZlcnNpb25zIHRoYXQgbGFjayBpdC5cbiAgaWYgKHR5cGVvZiBBYm9ydFNpZ25hbC5hbnkgPT09ICdmdW5jdGlvbicpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbi9uby11bnN1cHBvcnRlZC1mZWF0dXJlcy9ub2RlLWJ1aWx0aW5zIC0tIGBBYm9ydFNpZ25hbC5hbnlgIGlzIGZlYXR1cmUtZGV0ZWN0ZWQgYnkgdGhlIGd1YXJkIGFib3ZlIHdpdGggYSBtYW51YWwgZmFsbGJhY2sgYmVsb3csIHNvIGl0IGlzIG5vdCByZXF1aXJlZCBvbiBvbGRlciBPYnNpZGlhbi9FbGVjdHJvbiAoQ2hyb21pdW0pIHZlcnNpb25zIHRoYXQgbGFjayBpdC5cbiAgICByZXR1cm4gQWJvcnRTaWduYWwuYW55KGFib3J0U2lnbmFscyk7XG4gIH1cblxuICBpZiAoYWJvcnRTaWduYWxzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBhYm9ydFNpZ25hbE5ldmVyKCk7XG4gIH1cblxuICBpZiAoYWJvcnRTaWduYWxzLmxlbmd0aCA9PT0gMSAmJiBhYm9ydFNpZ25hbHNbMF0pIHtcbiAgICByZXR1cm4gYWJvcnRTaWduYWxzWzBdO1xuICB9XG5cbiAgY29uc3QgYWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuXG4gIGZvciAoY29uc3QgYWJvcnRTaWduYWwgb2YgYWJvcnRTaWduYWxzKSB7XG4gICAgaWYgKGFib3J0U2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgIHJldHVybiBhYm9ydFNpZ25hbDtcbiAgICB9XG4gIH1cblxuICBjb25zdCBhYm9ydEhhbmRsZXJEaXNwb3NhYmxlczogRGlzcG9zYWJsZVtdID0gQXJyYXkuZnJvbShhYm9ydFNpZ25hbHMsIChhYm9ydFNpZ25hbCkgPT4gb25BYm9ydChhYm9ydFNpZ25hbCwgaGFuZGxlQWJvcnQpKTtcblxuICBjb25zdCBjb21iaW5lZEFib3J0SGFuZGxlckRpc3Bvc2FibGUgPSBuZXcgQ29tYmluZURpc3Bvc2FibGUoeyBkaXNwb3NhYmxlczogYWJvcnRIYW5kbGVyRGlzcG9zYWJsZXMgfSk7XG5cbiAgcmV0dXJuIGFib3J0Q29udHJvbGxlci5zaWduYWw7XG5cbiAgZnVuY3Rpb24gaGFuZGxlQWJvcnQoYWJvcnRTaWduYWw6IEFib3J0U2lnbmFsKTogdm9pZCB7XG4gICAgY29tYmluZWRBYm9ydEhhbmRsZXJEaXNwb3NhYmxlLmRpc3Bvc2UoKTtcbiAgICBhYm9ydENvbnRyb2xsZXIuYWJvcnQoYWJvcnRTaWduYWwucmVhc29uKTtcbiAgfVxufVxuXG4vKipcbiAqIEFuIGFib3J0IHNpZ25hbCB0aGF0IG5ldmVyIGFib3J0cy5cbiAqXG4gKiBAcmV0dXJucyBUaGUgYWJvcnQgc2lnbmFsIHRoYXQgbmV2ZXIgYWJvcnRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYWJvcnRTaWduYWxOZXZlcigpOiBBYm9ydFNpZ25hbCB7XG4gIHJldHVybiBuZXcgQWJvcnRDb250cm9sbGVyKCkuc2lnbmFsO1xufVxuXG4vKipcbiAqIEFuIGFib3J0IHNpZ25hbCB0aGF0IGFib3J0cyBhZnRlciBhIHRpbWVvdXQuXG4gKlxuICogQHBhcmFtIHRpbWVvdXRJbk1pbGxpc2Vjb25kcyAtIFRoZSB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcy5cbiAqIEByZXR1cm5zIFRoZSBhYm9ydCBzaWduYWwgdGhhdCBhYm9ydHMgYWZ0ZXIgYSB0aW1lb3V0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gYWJvcnRTaWduYWxUaW1lb3V0KHRpbWVvdXRJbk1pbGxpc2Vjb25kczogbnVtYmVyKTogQWJvcnRTaWduYWwge1xuICBpZiAodGltZW91dEluTWlsbGlzZWNvbmRzID09PSBJTkZJTklURV9USU1FT1VUKSB7XG4gICAgcmV0dXJuIGFib3J0U2lnbmFsTmV2ZXIoKTtcbiAgfVxuXG4gIC8vIEludGVudGlvbmFsbHkgTk9UIHRoZSBuYXRpdmUgYEFib3J0U2lnbmFsLnRpbWVvdXRgLCB3aG9zZSBpbnRlcm5hbCB0aW1lciBjYW5ub3QgYmUgYWR2YW5jZWQgYnlcbiAgLy8gYHZpLnVzZUZha2VUaW1lcnMoKWAsIHNvIGBzbGVlcGAgKGl0cyBzb2xlIGNvbnN1bWVyKSB3b3VsZCBiZSB1bmNvbnRyb2xsYWJsZSBpbiB0ZXN0cy4gQnVpbGRpbmdcbiAgLy8gYHNsZWVwYCdzIHNpZ25hbCBvZmYgYGdsb2JhbFRoaXMuc2V0VGltZW91dGAga2VlcHMgaXQgZmFrZS10aW1lciBjb250cm9sbGFibGUgKGxpa2VcbiAgLy8gYHNldFRpbWVvdXRBc3luY2ApIGFuZCBhbHNvIHdvcmtzIGluIGEgTm9kZSBlbnZpcm9ubWVudCB3aGVyZSBgd2luZG93YCBpcyB1bmRlZmluZWQsIHNpbmNlXG4gIC8vIGBnbG9iYWxUaGlzYCBleGlzdHMgaW4gTm9kZSB0b28uIENvbnN1bWVyIGludGVncmF0aW9uLXRlc3QgcHJvamVjdHMgcnVuIHZpdGVzdCB1bmRlclxuICAvLyBgZW52aXJvbm1lbnQ6ICdub2RlJ2AsIGluIHdoaWNoIGEgYHdpbmRvd2AtYmFzZWQgcHJpbWl0aXZlIHRocm93cyBhIGBSZWZlcmVuY2VFcnJvcmAuXG4gIC8vIFRoZSBhYm9ydCByZWFzb24gbWlycm9ycyB0aGUgbmF0aXZlIG9uZSAtLSBhIGBET01FeGNlcHRpb25gIG5hbWVkIGBUaW1lb3V0RXJyb3JgIC0tIG1hdGNoaW5nXG4gIC8vIGBBYm9ydFNpZ25hbC50aW1lb3V0YCBmb3IgYHJlYXNvbi5uYW1lYCBjaGVja3MuXG4gIGNvbnN0IGFib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcblxuICBnbG9iYWxUaGlzLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuL25vLXVuc3VwcG9ydGVkLWZlYXR1cmVzL25vZGUtYnVpbHRpbnMgLS0gYERPTUV4Y2VwdGlvbmAgaXMgYSBET00gZ2xvYmFsIGFsd2F5cyBwcmVzZW50IGluIHRoZSBPYnNpZGlhbi9FbGVjdHJvbiAoQ2hyb21pdW0pIHJ1bnRpbWUgdGhpcyBjb2RlIHRhcmdldHMsIGFuZCBpcyBhbHNvIGEgTm9kZSBnbG9iYWwgZnJvbSBOb2RlIDE3IG9ud2FyZC5cbiAgICBhYm9ydENvbnRyb2xsZXIuYWJvcnQobmV3IERPTUV4Y2VwdGlvbihgVGltZWQgb3V0IGluICR7U3RyaW5nKHRpbWVvdXRJbk1pbGxpc2Vjb25kcyl9IG1pbGxpc2Vjb25kc2AsICdUaW1lb3V0RXJyb3InKSk7XG4gIH0sIHRpbWVvdXRJbk1pbGxpc2Vjb25kcyk7XG4gIHJldHVybiBhYm9ydENvbnRyb2xsZXIuc2lnbmFsO1xufVxuXG4vKipcbiAqIFRoZSBhcHAtd2lkZSBzaGFyZWQge0BsaW5rIFJlc2V0dGFibGVBYm9ydENvbnRyb2xsZXJ9LlxuICpcbiAqIEV2ZXJ5IHBsdWdpbiBidWlsdCBvbiB0aGlzIGxpYnJhcnkgc2hhcmVzIG9uZSBpbnN0YW5jZSwgc28gYSBzaW5nbGUge0BsaW5rIFJlc2V0dGFibGVBYm9ydENvbnRyb2xsZXIuYWJvcnR9XG4gKiBjYWxsIGNhbmNlbHMgd2hhdGV2ZXIgbG9uZy1ydW5uaW5nIG9wZXJhdGlvbiBpcyBpbiBmbGlnaHQsIHdoaWNoZXZlciBwbHVnaW4gc3RhcnRlZCBpdC4gQSBwbHVnaW4gdGhhdCBuZWVkc1xuICogYSBjYW5jZWwgYnV0dG9uIG9mIGl0cyBvd24gc2NvcGUgY29uc3RydWN0cyBpdHMgb3duIHtAbGluayBSZXNldHRhYmxlQWJvcnRDb250cm9sbGVyfSBpbnN0ZWFkLlxuICpcbiAqIEl0IGxpdmVzIGluIHRoZSBzaGFyZWQgc3RhdGUsIHNvIGl0IGlzIHJlYWNoYWJsZSBmcm9tIHRoZSBkZXZ0b29scyBjb25zb2xlOlxuICpcbiAqIGBgYGphdmFzY3JpcHRcbiAqIGdsb2JhbFRoaXNbU3ltYm9sLmZvcignQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3N0YXRlJyldLnZhbHVlcy5zaGFyZWRBYm9ydENvbnRyb2xsZXIudmFsdWUuYWJvcnQoKTtcbiAqIGBgYFxuICpcbiAqIEluIGFuIE9ic2lkaWFuIHBsdWdpbiB0aGUgc2FtZSBpbnN0YW5jZSBpcyBhbHNvIHJlYWNoYWJsZSBhcyBgX19vYnNpZGlhbkRldlV0aWxzLnNoYXJlZEFib3J0Q29udHJvbGxlci52YWx1ZWAuXG4gKlxuICogQHJldHVybnMgVGhlIHNoYXJlZCB7QGxpbmsgUmVzZXR0YWJsZUFib3J0Q29udHJvbGxlcn0uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTaGFyZWRBYm9ydENvbnRyb2xsZXIoKTogUmVzZXR0YWJsZUFib3J0Q29udHJvbGxlciB7XG4gIHJldHVybiBnZXRUeXBlc2NyaXB0TGliU3RhdGUoJ3NoYXJlZEFib3J0Q29udHJvbGxlcicsIG5ldyBSZXNldHRhYmxlQWJvcnRDb250cm9sbGVyKCkpLnZhbHVlO1xufVxuXG4vKipcbiAqIFRoZSBzaWduYWwgb2YgdGhlIGFwcC13aWRlIHNoYXJlZCB7QGxpbmsgUmVzZXR0YWJsZUFib3J0Q29udHJvbGxlcn0uXG4gKlxuICogQ2FsbCBpdCBhdCB0aGUgc3RhcnQgb2YgZWFjaCBvcGVyYXRpb24uIE5ldmVyIGNhY2hlIGl0LCBvciB0aGUgb3BlcmF0aW9uIGFmdGVyIHRoZSBmaXJzdCBhYm9ydCBzdGFydHNcbiAqIGFscmVhZHkgYWJvcnRlZC5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogYXdhaXQgbG9vcCh7XG4gKiAgIGFib3J0U2lnbmFsOiBnZXRTaGFyZWRBYm9ydFNpZ25hbCgpLFxuICogICBidWlsZE5vdGljZU1lc3NhZ2U6IChmaWxlKSA9PiBgUHJvY2Vzc2luZyAke2ZpbGUucGF0aH1gLFxuICogICBpdGVtczogYXBwLnZhdWx0LmdldE1hcmtkb3duRmlsZXMoKSxcbiAqICAgcHJvY2Vzc0l0ZW06IGFzeW5jIChmaWxlKSA9PiB7IGF3YWl0IHByb2Nlc3NGaWxlKGZpbGUpOyB9XG4gKiB9KTtcbiAqIGBgYFxuICpcbiAqIEByZXR1cm5zIFRoZSB7QGxpbmsgQWJvcnRTaWduYWx9IG9mIHRoZSBzaGFyZWQge0BsaW5rIFJlc2V0dGFibGVBYm9ydENvbnRyb2xsZXJ9LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2hhcmVkQWJvcnRTaWduYWwoKTogQWJvcnRTaWduYWwge1xuICByZXR1cm4gZ2V0U2hhcmVkQWJvcnRDb250cm9sbGVyKCkuc2lnbmFsO1xufVxuXG4vKipcbiAqIEFkZHMgYW4gYWJvcnQgbGlzdGVuZXIgdG8gYW4gYWJvcnQgc2lnbmFsIGFuZCBjYWxscyB0aGUgY2FsbGJhY2sgaWYgdGhlIGFib3J0IHNpZ25hbCBpcyBhbHJlYWR5IGFib3J0ZWQuXG4gKlxuICogQHBhcmFtIGFib3J0U2lnbmFsIC0gVGhlIGFib3J0IHNpZ25hbCB0byBhZGQgdGhlIGxpc3RlbmVyIHRvLlxuICogQHBhcmFtIGNhbGxiYWNrIC0gVGhlIGNhbGxiYWNrIHRvIGNhbGwgd2hlbiB0aGUgYWJvcnQgc2lnbmFsIGFib3J0cy5cbiAqIEByZXR1cm5zIEEge0BsaW5rIERpc3Bvc2FibGV9IHRoYXQgcmVtb3ZlcyB0aGUgYWJvcnQgbGlzdGVuZXIgd2hlbiBkaXNwb3NlZCwgZm9yIHVzZSB3aXRoIGB1c2luZ2AuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvbkFib3J0KGFib3J0U2lnbmFsOiBBYm9ydFNpZ25hbCwgY2FsbGJhY2s6IChhYm9ydFNpZ25hbDogQWJvcnRTaWduYWwpID0+IHZvaWQpOiBEaXNwb3NhYmxlIHtcbiAgaWYgKGFib3J0U2lnbmFsLmFib3J0ZWQpIHtcbiAgICBjYWxsYmFjayhhYm9ydFNpZ25hbCk7XG4gICAgcmV0dXJuIG5ldyBDYWxsYmFja0Rpc3Bvc2FibGUoeyBjYWxsYmFjazogbm9vcCB9KTtcbiAgfVxuXG4gIGFib3J0U2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0Jywgd3JhcHBlZENhbGxiYWNrLCB7IG9uY2U6IHRydWUgfSk7XG4gIHJldHVybiBuZXcgQ2FsbGJhY2tEaXNwb3NhYmxlKHtcbiAgICBjYWxsYmFjazogKCk6IHZvaWQgPT4ge1xuICAgICAgYWJvcnRTaWduYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcignYWJvcnQnLCB3cmFwcGVkQ2FsbGJhY2spO1xuICAgIH1cbiAgfSk7XG5cbiAgZnVuY3Rpb24gd3JhcHBlZENhbGxiYWNrKCRldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjYWxsYmFjaygkZXZlbnQudGFyZ2V0IGFzIEFib3J0U2lnbmFsKTtcbiAgfVxufVxuXG4vKipcbiAqIFdhaXRzIGZvciBhbiBhYm9ydCBzaWduYWwgdG8gYWJvcnQgYW5kIHJlc29sdmVzIHdpdGggaXRzIHJlYXNvbi5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBFeHBlY3RlZCB0eXBlIG9mIGBhYm9ydFNpZ25hbC5yZWFzb25gLlxuICogQHBhcmFtIGFib3J0U2lnbmFsIC0gVGhlIGFib3J0IHNpZ25hbCB0byB3YWl0IGZvci5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgcmVhc29uIG9mIHRoZSBhYm9ydCBzaWduYWwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3YWl0Rm9yQWJvcnQ8VCA9IHVua25vd24+KGFib3J0U2lnbmFsOiBBYm9ydFNpZ25hbCk6IFByb21pc2U8VD47XG4vKipcbiAqIFdhaXRzIGZvciBhbiBhYm9ydCBzaWduYWwgdG8gYWJvcnQgYW5kIHJlamVjdHMgd2l0aCBpdHMgcmVhc29uLlxuICpcbiAqIEBwYXJhbSBhYm9ydFNpZ25hbCAtIFRoZSBhYm9ydCBzaWduYWwgdG8gd2FpdCBmb3IuXG4gKiBAcGFyYW0gc2hvdWxkUmVqZWN0T25BYm9ydCAtIFdoZXRoZXIgdG8gcmVqZWN0IHRoZSBwcm9taXNlIGlmIHRoZSBhYm9ydCBzaWduYWwgaXMgYWJvcnRlZC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVqZWN0cyB3aXRoIHRoZSByZWFzb24gb2YgdGhlIGFib3J0IHNpZ25hbC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdhaXRGb3JBYm9ydChhYm9ydFNpZ25hbDogQWJvcnRTaWduYWwsIHNob3VsZFJlamVjdE9uQWJvcnQ6IHRydWUpOiBQcm9taXNlPG5ldmVyPjtcbi8qKlxuICogV2FpdHMgZm9yIGFuIGFib3J0IHNpZ25hbCB0byBhYm9ydCBhbmQgcmVzb2x2ZXMgd2l0aCBpdHMgcmVhc29uLlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIEV4cGVjdGVkIHR5cGUgb2YgYGFib3J0U2lnbmFsLnJlYXNvbmAuXG4gKiBAcGFyYW0gYWJvcnRTaWduYWwgLSBUaGUgYWJvcnQgc2lnbmFsIHRvIHdhaXQgZm9yLlxuICogQHBhcmFtIHNob3VsZFJlamVjdE9uQWJvcnQgLSBXaGV0aGVyIHRvIHJlamVjdCB0aGUgcHJvbWlzZSBpZiB0aGUgYWJvcnQgc2lnbmFsIGlzIGFib3J0ZWQuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIHJlYXNvbiBvZiB0aGUgYWJvcnQgc2lnbmFsLlxuICovXG5leHBvcnQgZnVuY3Rpb24gd2FpdEZvckFib3J0PFQgPSB1bmtub3duPihhYm9ydFNpZ25hbDogQWJvcnRTaWduYWwsIHNob3VsZFJlamVjdE9uQWJvcnQ/OiBib29sZWFuKTogUHJvbWlzZTxUPiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZTxUPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgb25BYm9ydChhYm9ydFNpZ25hbCwgKCkgPT4ge1xuICAgICAgaWYgKHNob3VsZFJlamVjdE9uQWJvcnQpIHtcbiAgICAgICAgcmVqZWN0KGFib3J0U2lnbmFsLnJlYXNvbiBhcyBFcnJvcik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKGFib3J0U2lnbmFsLnJlYXNvbiBhcyBUKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBTUEsd0JBR087QUFDUCxzQkFBcUI7QUFDckIsa0NBQXNDO0FBSy9CLE1BQU0sbUJBQW1CO0FBOEJ6QixNQUFNLDBCQUEwQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU1yQyxJQUFXLFNBQXNCO0FBQy9CLFdBQU8sS0FBSyxnQkFBZ0I7QUFBQSxFQUM5QjtBQUFBLEVBRVEsa0JBQWtCLElBQUksZ0JBQWdCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRdkMsTUFBTSxRQUF3QjtBQUNuQyxTQUFLLGdCQUFnQixNQUFNLE1BQU07QUFDakMsU0FBSyxrQkFBa0IsSUFBSSxnQkFBZ0I7QUFBQSxFQUM3QztBQUNGO0FBUU8sU0FBUyxrQkFBa0IsbUJBQTZEO0FBQzdGLFFBQU0sZUFBZSxrQkFBa0IsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUMsV0FBVztBQUc1RSxNQUFJLE9BQU8sWUFBWSxRQUFRLFlBQVk7QUFFekMsV0FBTyxZQUFZLElBQUksWUFBWTtBQUFBLEVBQ3JDO0FBRUEsTUFBSSxhQUFhLFdBQVcsR0FBRztBQUM3QixXQUFPLGlCQUFpQjtBQUFBLEVBQzFCO0FBRUEsTUFBSSxhQUFhLFdBQVcsS0FBSyxhQUFhLENBQUMsR0FBRztBQUNoRCxXQUFPLGFBQWEsQ0FBQztBQUFBLEVBQ3ZCO0FBRUEsUUFBTSxrQkFBa0IsSUFBSSxnQkFBZ0I7QUFFNUMsYUFBVyxlQUFlLGNBQWM7QUFDdEMsUUFBSSxZQUFZLFNBQVM7QUFDdkIsYUFBTztBQUFBLElBQ1Q7QUFBQSxFQUNGO0FBRUEsUUFBTSwwQkFBd0MsTUFBTSxLQUFLLGNBQWMsQ0FBQyxnQkFBZ0IsUUFBUSxhQUFhLFdBQVcsQ0FBQztBQUV6SCxRQUFNLGlDQUFpQyxJQUFJLG9DQUFrQixFQUFFLGFBQWEsd0JBQXdCLENBQUM7QUFFckcsU0FBTyxnQkFBZ0I7QUFFdkIsV0FBUyxZQUFZLGFBQWdDO0FBQ25ELG1DQUErQixRQUFRO0FBQ3ZDLG9CQUFnQixNQUFNLFlBQVksTUFBTTtBQUFBLEVBQzFDO0FBQ0Y7QUFPTyxTQUFTLG1CQUFnQztBQUM5QyxTQUFPLElBQUksZ0JBQWdCLEVBQUU7QUFDL0I7QUFRTyxTQUFTLG1CQUFtQix1QkFBNEM7QUFDN0UsTUFBSSwwQkFBMEIsa0JBQWtCO0FBQzlDLFdBQU8saUJBQWlCO0FBQUEsRUFDMUI7QUFVQSxRQUFNLGtCQUFrQixJQUFJLGdCQUFnQjtBQUU1QyxhQUFXLFdBQVcsTUFBTTtBQUUxQixvQkFBZ0IsTUFBTSxJQUFJLGFBQWEsZ0JBQWdCLE9BQU8scUJBQXFCLENBQUMsaUJBQWlCLGNBQWMsQ0FBQztBQUFBLEVBQ3RILEdBQUcscUJBQXFCO0FBQ3hCLFNBQU8sZ0JBQWdCO0FBQ3pCO0FBbUJPLFNBQVMsMkJBQXNEO0FBQ3BFLGFBQU8sbURBQXNCLHlCQUF5QixJQUFJLDBCQUEwQixDQUFDLEVBQUU7QUFDekY7QUFvQk8sU0FBUyx1QkFBb0M7QUFDbEQsU0FBTyx5QkFBeUIsRUFBRTtBQUNwQztBQVNPLFNBQVMsUUFBUSxhQUEwQixVQUEwRDtBQUMxRyxNQUFJLFlBQVksU0FBUztBQUN2QixhQUFTLFdBQVc7QUFDcEIsV0FBTyxJQUFJLHFDQUFtQixFQUFFLFVBQVUscUJBQUssQ0FBQztBQUFBLEVBQ2xEO0FBRUEsY0FBWSxpQkFBaUIsU0FBUyxpQkFBaUIsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUNyRSxTQUFPLElBQUkscUNBQW1CO0FBQUEsSUFDNUIsVUFBVSxNQUFZO0FBQ3BCLGtCQUFZLG9CQUFvQixTQUFTLGVBQWU7QUFBQSxJQUMxRDtBQUFBLEVBQ0YsQ0FBQztBQUVELFdBQVMsZ0JBQWdCLFFBQXFCO0FBQzVDLGFBQVMsT0FBTyxNQUFxQjtBQUFBLEVBQ3ZDO0FBQ0Y7QUEwQk8sU0FBUyxhQUEwQixhQUEwQixxQkFBMkM7QUFDN0csU0FBTyxJQUFJLFFBQVcsQ0FBQyxTQUFTLFdBQVc7QUFDekMsWUFBUSxhQUFhLE1BQU07QUFDekIsVUFBSSxxQkFBcUI7QUFDdkIsZUFBTyxZQUFZLE1BQWU7QUFBQSxNQUNwQyxPQUFPO0FBQ0wsZ0JBQVEsWUFBWSxNQUFXO0FBQUEsTUFDakM7QUFBQSxJQUNGLENBQUM7QUFBQSxFQUNILENBQUM7QUFDSDsiLAogICJuYW1lcyI6IFtdCn0K
144
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2Fib3J0LWNvbnRyb2xsZXIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBBYm9ydENvbnRyb2xsZXIgdXRpbGl0aWVzLlxuICovXG5cbmltcG9ydCB7XG4gIENhbGxiYWNrRGlzcG9zYWJsZSxcbiAgQ29tYmluZURpc3Bvc2FibGVcbn0gZnJvbSAnLi9kaXNwb3NhYmxlLnRzJztcbmltcG9ydCB7IG5vb3AgfSBmcm9tICcuL2Z1bmN0aW9uLnRzJztcbmltcG9ydCB7IGdldFR5cGVzY3JpcHRMaWJTdGF0ZSB9IGZyb20gJy4vdHlwZXNjcmlwdC1saWItc3RhdGUudHMnO1xuXG4vKipcbiAqIEEgY29uc3RhbnQgcmVwcmVzZW50aW5nIGFuIGluZmluaXRlIHRpbWVvdXQuXG4gKi9cbmV4cG9ydCBjb25zdCBJTkZJTklURV9USU1FT1VUID0gSW5maW5pdHk7XG5cbi8qKlxuICogQW4ge0BsaW5rIEFib3J0Q29udHJvbGxlcn0gdGhhdCBjYW4gYmUgYWJvcnRlZCBtb3JlIHRoYW4gb25jZS5cbiAqXG4gKiBBIHBsYWluIHtAbGluayBBYm9ydENvbnRyb2xsZXJ9IGlzIHNpbmdsZS11c2U6IG9uY2UgYWJvcnRlZCwgaXRzIHNpZ25hbCBzdGF5cyBhYm9ydGVkIGZvcmV2ZXIsIHNvIGl0XG4gKiBjYW5ub3QgYmFjayBhIGNhbmNlbCBidXR0b24gdGhhdCB0aGUgdXNlciBtYXkgcHJlc3MgbW9yZSB0aGFuIG9uY2UuIFRoaXMgb25lIGFib3J0cyB0aGUgY3VycmVudCBzaWduYWxcbiAqIGFuZCBpbW1lZGlhdGVseSByZXBsYWNlcyBpdCwgc28gdGhlIG5leHQgb3BlcmF0aW9uIHN0YXJ0cyB3aXRoIGEgZnJlc2gsIG5vbi1hYm9ydGVkIHNpZ25hbCB3aGlsZSB0aGUgd29ya1xuICogdGhhdCBjYXB0dXJlZCB0aGUgcHJldmlvdXMgc2lnbmFsIHN0aWxsIG9ic2VydmVzIHRoZSBhYm9ydC5cbiAqXG4gKiBSZWFkIHtAbGluayBSZXNldHRhYmxlQWJvcnRDb250cm9sbGVyLnNpZ25hbH0gYXQgdGhlIHN0YXJ0IG9mIGVhY2ggb3BlcmF0aW9uLiBOZXZlciBjYWNoZSBpdCwgb3IgdGhlXG4gKiBvcGVyYXRpb24gYWZ0ZXIgdGhlIGZpcnN0IGFib3J0IHN0YXJ0cyBhbHJlYWR5IGFib3J0ZWQuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHJlc2V0dGFibGVBYm9ydENvbnRyb2xsZXIgPSBuZXcgUmVzZXR0YWJsZUFib3J0Q29udHJvbGxlcigpO1xuICpcbiAqIGF3YWl0IGxvb3Aoe1xuICogICBhYm9ydFNpZ25hbDogcmVzZXR0YWJsZUFib3J0Q29udHJvbGxlci5zaWduYWwsXG4gKiAgIGJ1aWxkTm90aWNlTWVzc2FnZTogKGZpbGUpID0+IGBQcm9jZXNzaW5nICR7ZmlsZS5wYXRofWAsXG4gKiAgIGl0ZW1zOiBhcHAudmF1bHQuZ2V0TWFya2Rvd25GaWxlcygpLFxuICogICBwcm9jZXNzSXRlbTogYXN5bmMgKGZpbGUpID0+IHsgYXdhaXQgcHJvY2Vzc0ZpbGUoZmlsZSk7IH1cbiAqIH0pO1xuICpcbiAqIC8vIEZyb20gYSBjYW5jZWwgYnV0dG9uLCBhIGNvbW1hbmQsIG9yIHRoZSBkZXZ0b29scyBjb25zb2xlLlxuICogcmVzZXR0YWJsZUFib3J0Q29udHJvbGxlci5hYm9ydCgpO1xuICogYGBgXG4gKlxuICogQHNlZSB7QGxpbmsgZ2V0U2hhcmVkQWJvcnRDb250cm9sbGVyfSBmb3IgdGhlIGFwcC13aWRlIGluc3RhbmNlLlxuICovXG5leHBvcnQgY2xhc3MgUmVzZXR0YWJsZUFib3J0Q29udHJvbGxlciB7XG4gIC8qKlxuICAgKiBUaGUgY3VycmVudCBhYm9ydCBzaWduYWwuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSB7QGxpbmsgQWJvcnRTaWduYWx9IHRoYXQgYWJvcnRzIG9uIHRoZSBuZXh0IHtAbGluayBSZXNldHRhYmxlQWJvcnRDb250cm9sbGVyLmFib3J0fSBjYWxsLlxuICAgKi9cbiAgcHVibGljIGdldCBzaWduYWwoKTogQWJvcnRTaWduYWwge1xuICAgIHJldHVybiB0aGlzLmFib3J0Q29udHJvbGxlci5zaWduYWw7XG4gIH1cblxuICBwcml2YXRlIGFib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcblxuICAvKipcbiAgICogQWJvcnRzIHRoZSBjdXJyZW50IHNpZ25hbCBhbmQgcmVwbGFjZXMgaXQgd2l0aCBhIGZyZXNoLCBub24tYWJvcnRlZCBvbmUuXG4gICAqXG4gICAqIEBwYXJhbSByZWFzb24gLSBUaGUgcmVhc29uIHRvIGFib3J0IHdpdGguIFdoZW4gb21pdHRlZCwgdGhlIHNpZ25hbCBpcyBhYm9ydGVkIHdpdGggdGhlIG5hdGl2ZVxuICAgKiBgQWJvcnRFcnJvcmAge0BsaW5rIERPTUV4Y2VwdGlvbn0sIGV4YWN0bHkgYXMge0BsaW5rIEFib3J0Q29udHJvbGxlci5hYm9ydH0gZG9lcy5cbiAgICovXG4gIHB1YmxpYyBhYm9ydChyZWFzb24/OiB1bmtub3duKTogdm9pZCB7XG4gICAgdGhpcy5hYm9ydENvbnRyb2xsZXIuYWJvcnQocmVhc29uKTtcbiAgICB0aGlzLmFib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgfVxufVxuXG4vKipcbiAqIEFuIGFib3J0IHNpZ25hbCB0aGF0IGFib3J0cyB3aGVuIGFueSBvZiB0aGUgZ2l2ZW4gYWJvcnQgc2lnbmFscyBhYm9ydC5cbiAqXG4gKiBAcGFyYW0gbWF5YmVBYm9ydFNpZ25hbHMgLSBUaGUgYWJvcnQgc2lnbmFscyB0byBhYm9ydCB3aGVuIGFueSBvZiB0aGVtIGFib3J0LlxuICogQHJldHVybnMgVGhlIGFib3J0IHNpZ25hbCB0aGF0IGFib3J0cyB3aGVuIGFueSBvZiB0aGUgZ2l2ZW4gYWJvcnQgc2lnbmFscyBhYm9ydC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFib3J0U2lnbmFsQW55KC4uLm1heWJlQWJvcnRTaWduYWxzOiAoQWJvcnRTaWduYWwgfCB1bmRlZmluZWQpW10pOiBBYm9ydFNpZ25hbCB7XG4gIGNvbnN0IGFib3J0U2lnbmFscyA9IG1heWJlQWJvcnRTaWduYWxzLmZpbHRlcigoYWJvcnRTaWduYWwpID0+ICEhYWJvcnRTaWduYWwpO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuL25vLXVuc3VwcG9ydGVkLWZlYXR1cmVzL25vZGUtYnVpbHRpbnMgLS0gYEFib3J0U2lnbmFsLmFueWAgaXMgZmVhdHVyZS1kZXRlY3RlZCBoZXJlIHdpdGggYSBtYW51YWwgZmFsbGJhY2sgYmVsb3csIHNvIGl0IGlzIG5vdCByZXF1aXJlZCBvbiBvbGRlciBPYnNpZGlhbi9FbGVjdHJvbiAoQ2hyb21pdW0pIHZlcnNpb25zIHRoYXQgbGFjayBpdC5cbiAgaWYgKHR5cGVvZiBBYm9ydFNpZ25hbC5hbnkgPT09ICdmdW5jdGlvbicpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbi9uby11bnN1cHBvcnRlZC1mZWF0dXJlcy9ub2RlLWJ1aWx0aW5zIC0tIGBBYm9ydFNpZ25hbC5hbnlgIGlzIGZlYXR1cmUtZGV0ZWN0ZWQgYnkgdGhlIGd1YXJkIGFib3ZlIHdpdGggYSBtYW51YWwgZmFsbGJhY2sgYmVsb3csIHNvIGl0IGlzIG5vdCByZXF1aXJlZCBvbiBvbGRlciBPYnNpZGlhbi9FbGVjdHJvbiAoQ2hyb21pdW0pIHZlcnNpb25zIHRoYXQgbGFjayBpdC5cbiAgICByZXR1cm4gQWJvcnRTaWduYWwuYW55KGFib3J0U2lnbmFscyk7XG4gIH1cblxuICBpZiAoYWJvcnRTaWduYWxzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBhYm9ydFNpZ25hbE5ldmVyKCk7XG4gIH1cblxuICBpZiAoYWJvcnRTaWduYWxzLmxlbmd0aCA9PT0gMSAmJiBhYm9ydFNpZ25hbHNbMF0pIHtcbiAgICByZXR1cm4gYWJvcnRTaWduYWxzWzBdO1xuICB9XG5cbiAgY29uc3QgYWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuXG4gIGZvciAoY29uc3QgYWJvcnRTaWduYWwgb2YgYWJvcnRTaWduYWxzKSB7XG4gICAgaWYgKGFib3J0U2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgIHJldHVybiBhYm9ydFNpZ25hbDtcbiAgICB9XG4gIH1cblxuICBjb25zdCBhYm9ydEhhbmRsZXJEaXNwb3NhYmxlczogRGlzcG9zYWJsZVtdID0gQXJyYXkuZnJvbShhYm9ydFNpZ25hbHMsIChhYm9ydFNpZ25hbCkgPT4gb25BYm9ydChhYm9ydFNpZ25hbCwgaGFuZGxlQWJvcnQpKTtcblxuICBjb25zdCBjb21iaW5lZEFib3J0SGFuZGxlckRpc3Bvc2FibGUgPSBuZXcgQ29tYmluZURpc3Bvc2FibGUoeyBkaXNwb3NhYmxlczogYWJvcnRIYW5kbGVyRGlzcG9zYWJsZXMgfSk7XG5cbiAgcmV0dXJuIGFib3J0Q29udHJvbGxlci5zaWduYWw7XG5cbiAgZnVuY3Rpb24gaGFuZGxlQWJvcnQoYWJvcnRTaWduYWw6IEFib3J0U2lnbmFsKTogdm9pZCB7XG4gICAgY29tYmluZWRBYm9ydEhhbmRsZXJEaXNwb3NhYmxlLmRpc3Bvc2UoKTtcbiAgICBhYm9ydENvbnRyb2xsZXIuYWJvcnQoYWJvcnRTaWduYWwucmVhc29uKTtcbiAgfVxufVxuXG4vKipcbiAqIEFuIGFib3J0IHNpZ25hbCB0aGF0IG5ldmVyIGFib3J0cy5cbiAqXG4gKiBAcmV0dXJucyBUaGUgYWJvcnQgc2lnbmFsIHRoYXQgbmV2ZXIgYWJvcnRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYWJvcnRTaWduYWxOZXZlcigpOiBBYm9ydFNpZ25hbCB7XG4gIHJldHVybiBuZXcgQWJvcnRDb250cm9sbGVyKCkuc2lnbmFsO1xufVxuXG4vKipcbiAqIEFuIGFib3J0IHNpZ25hbCB0aGF0IGFib3J0cyBhZnRlciBhIHRpbWVvdXQuXG4gKlxuICogQHBhcmFtIHRpbWVvdXRJbk1pbGxpc2Vjb25kcyAtIFRoZSB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcy5cbiAqIEByZXR1cm5zIFRoZSBhYm9ydCBzaWduYWwgdGhhdCBhYm9ydHMgYWZ0ZXIgYSB0aW1lb3V0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gYWJvcnRTaWduYWxUaW1lb3V0KHRpbWVvdXRJbk1pbGxpc2Vjb25kczogbnVtYmVyKTogQWJvcnRTaWduYWwge1xuICBpZiAodGltZW91dEluTWlsbGlzZWNvbmRzID09PSBJTkZJTklURV9USU1FT1VUKSB7XG4gICAgcmV0dXJuIGFib3J0U2lnbmFsTmV2ZXIoKTtcbiAgfVxuXG4gIC8vIEludGVudGlvbmFsbHkgTk9UIHRoZSBuYXRpdmUgYEFib3J0U2lnbmFsLnRpbWVvdXRgLCB3aG9zZSBpbnRlcm5hbCB0aW1lciBjYW5ub3QgYmUgYWR2YW5jZWQgYnlcbiAgLy8gYHZpLnVzZUZha2VUaW1lcnMoKWAsIHNvIGBzbGVlcGAgKGl0cyBzb2xlIGNvbnN1bWVyKSB3b3VsZCBiZSB1bmNvbnRyb2xsYWJsZSBpbiB0ZXN0cy4gQnVpbGRpbmdcbiAgLy8gYHNsZWVwYCdzIHNpZ25hbCBvZmYgYGdsb2JhbFRoaXMuc2V0VGltZW91dGAga2VlcHMgaXQgZmFrZS10aW1lciBjb250cm9sbGFibGUgKGxpa2VcbiAgLy8gYHNldFRpbWVvdXRBc3luY2ApIGFuZCBhbHNvIHdvcmtzIGluIGEgTm9kZSBlbnZpcm9ubWVudCB3aGVyZSBgd2luZG93YCBpcyB1bmRlZmluZWQsIHNpbmNlXG4gIC8vIGBnbG9iYWxUaGlzYCBleGlzdHMgaW4gTm9kZSB0b28uIENvbnN1bWVyIGludGVncmF0aW9uLXRlc3QgcHJvamVjdHMgcnVuIHZpdGVzdCB1bmRlclxuICAvLyBgZW52aXJvbm1lbnQ6ICdub2RlJ2AsIGluIHdoaWNoIGEgYHdpbmRvd2AtYmFzZWQgcHJpbWl0aXZlIHRocm93cyBhIGBSZWZlcmVuY2VFcnJvcmAuXG4gIC8vIFRoZSBhYm9ydCByZWFzb24gbWlycm9ycyB0aGUgbmF0aXZlIG9uZSAtLSBhIGBET01FeGNlcHRpb25gIG5hbWVkIGBUaW1lb3V0RXJyb3JgIC0tIG1hdGNoaW5nXG4gIC8vIGBBYm9ydFNpZ25hbC50aW1lb3V0YCBmb3IgYHJlYXNvbi5uYW1lYCBjaGVja3MuXG4gIGNvbnN0IGFib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcblxuICBnbG9iYWxUaGlzLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuL25vLXVuc3VwcG9ydGVkLWZlYXR1cmVzL25vZGUtYnVpbHRpbnMgLS0gYERPTUV4Y2VwdGlvbmAgaXMgYSBET00gZ2xvYmFsIGFsd2F5cyBwcmVzZW50IGluIHRoZSBPYnNpZGlhbi9FbGVjdHJvbiAoQ2hyb21pdW0pIHJ1bnRpbWUgdGhpcyBjb2RlIHRhcmdldHMsIGFuZCBpcyBhbHNvIGEgTm9kZSBnbG9iYWwgZnJvbSBOb2RlIDE3IG9ud2FyZC5cbiAgICBhYm9ydENvbnRyb2xsZXIuYWJvcnQobmV3IERPTUV4Y2VwdGlvbihgVGltZWQgb3V0IGluICR7U3RyaW5nKHRpbWVvdXRJbk1pbGxpc2Vjb25kcyl9IG1pbGxpc2Vjb25kc2AsICdUaW1lb3V0RXJyb3InKSk7XG4gIH0sIHRpbWVvdXRJbk1pbGxpc2Vjb25kcyk7XG4gIHJldHVybiBhYm9ydENvbnRyb2xsZXIuc2lnbmFsO1xufVxuXG4vKipcbiAqIFRoZSBhcHAtd2lkZSBzaGFyZWQge0BsaW5rIFJlc2V0dGFibGVBYm9ydENvbnRyb2xsZXJ9LlxuICpcbiAqIEV2ZXJ5IHBsdWdpbiBidWlsdCBvbiB0aGlzIGxpYnJhcnkgc2hhcmVzIG9uZSBpbnN0YW5jZSwgc28gYSBzaW5nbGUge0BsaW5rIFJlc2V0dGFibGVBYm9ydENvbnRyb2xsZXIuYWJvcnR9XG4gKiBjYWxsIGNhbmNlbHMgd2hhdGV2ZXIgbG9uZy1ydW5uaW5nIG9wZXJhdGlvbiBpcyBpbiBmbGlnaHQsIHdoaWNoZXZlciBwbHVnaW4gc3RhcnRlZCBpdC4gQSBwbHVnaW4gdGhhdCBuZWVkc1xuICogYSBjYW5jZWwgYnV0dG9uIG9mIGl0cyBvd24gc2NvcGUgY29uc3RydWN0cyBpdHMgb3duIHtAbGluayBSZXNldHRhYmxlQWJvcnRDb250cm9sbGVyfSBpbnN0ZWFkLlxuICpcbiAqIEl0IGxpdmVzIGluIHRoZSBzaGFyZWQgc3RhdGUsIHNvIGl0IGlzIHJlYWNoYWJsZSBmcm9tIHRoZSBkZXZ0b29scyBjb25zb2xlOlxuICpcbiAqIGBgYGphdmFzY3JpcHRcbiAqIGdsb2JhbFRoaXNbU3ltYm9sLmZvcignQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3N0YXRlJyldLnZhbHVlcy5zaGFyZWRBYm9ydENvbnRyb2xsZXIudmFsdWUuYWJvcnQoKTtcbiAqIGBgYFxuICpcbiAqIEZyb20gY29kZSwgY2FsbCB7QGxpbmsgZ2V0U2hhcmVkQWJvcnRDb250cm9sbGVyfSAob3Ige0BsaW5rIGdldFNoYXJlZEFib3J0U2lnbmFsfSkgcmF0aGVyIHRoYW4gcmVhZGluZyB0aGUgc2xvdC5cbiAqIGBAbW5hb3Vtb3Yvb2JzaWRpYW4tbGliYCBhbHNvIG1pcnJvcnMgdGhlIGluc3RhbmNlIHVuZGVyIHRoZSBsZWdhY3kgYF9fb2JzaWRpYW5EZXZVdGlsc2AgZ2xvYmFsLCBidXQgb25seSBzbyB0aGF0XG4gKiBwbHVnaW5zIGJ1bmRsaW5nIGFuIG9sZGVyIGBvYnNpZGlhbi1kZXYtdXRpbHNgIGNvcHkgc2hhcmUgaXQ7IG5ldyBjb2RlIGFuZCBuZXcgY29uc29sZSByZWNpcGVzIHNob3VsZCBub3QgdXNlIGl0LlxuICpcbiAqIEByZXR1cm5zIFRoZSBzaGFyZWQge0BsaW5rIFJlc2V0dGFibGVBYm9ydENvbnRyb2xsZXJ9LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2hhcmVkQWJvcnRDb250cm9sbGVyKCk6IFJlc2V0dGFibGVBYm9ydENvbnRyb2xsZXIge1xuICByZXR1cm4gZ2V0VHlwZXNjcmlwdExpYlN0YXRlKCdzaGFyZWRBYm9ydENvbnRyb2xsZXInLCBuZXcgUmVzZXR0YWJsZUFib3J0Q29udHJvbGxlcigpKS52YWx1ZTtcbn1cblxuLyoqXG4gKiBUaGUgc2lnbmFsIG9mIHRoZSBhcHAtd2lkZSBzaGFyZWQge0BsaW5rIFJlc2V0dGFibGVBYm9ydENvbnRyb2xsZXJ9LlxuICpcbiAqIENhbGwgaXQgYXQgdGhlIHN0YXJ0IG9mIGVhY2ggb3BlcmF0aW9uLiBOZXZlciBjYWNoZSBpdCwgb3IgdGhlIG9wZXJhdGlvbiBhZnRlciB0aGUgZmlyc3QgYWJvcnQgc3RhcnRzXG4gKiBhbHJlYWR5IGFib3J0ZWQuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGFib3J0U2lnbmFsID0gZ2V0U2hhcmVkQWJvcnRTaWduYWwoKTtcbiAqIGZvciAoY29uc3QgdXJsIG9mIHVybHMpIHtcbiAqICAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAqICAgYXdhaXQgZmV0Y2godXJsLCB7IHNpZ25hbDogYWJvcnRTaWduYWwgfSk7XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBAcmV0dXJucyBUaGUge0BsaW5rIEFib3J0U2lnbmFsfSBvZiB0aGUgc2hhcmVkIHtAbGluayBSZXNldHRhYmxlQWJvcnRDb250cm9sbGVyfS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNoYXJlZEFib3J0U2lnbmFsKCk6IEFib3J0U2lnbmFsIHtcbiAgcmV0dXJuIGdldFNoYXJlZEFib3J0Q29udHJvbGxlcigpLnNpZ25hbDtcbn1cblxuLyoqXG4gKiBBZGRzIGFuIGFib3J0IGxpc3RlbmVyIHRvIGFuIGFib3J0IHNpZ25hbCBhbmQgY2FsbHMgdGhlIGNhbGxiYWNrIGlmIHRoZSBhYm9ydCBzaWduYWwgaXMgYWxyZWFkeSBhYm9ydGVkLlxuICpcbiAqIEBwYXJhbSBhYm9ydFNpZ25hbCAtIFRoZSBhYm9ydCBzaWduYWwgdG8gYWRkIHRoZSBsaXN0ZW5lciB0by5cbiAqIEBwYXJhbSBjYWxsYmFjayAtIFRoZSBjYWxsYmFjayB0byBjYWxsIHdoZW4gdGhlIGFib3J0IHNpZ25hbCBhYm9ydHMuXG4gKiBAcmV0dXJucyBBIHtAbGluayBEaXNwb3NhYmxlfSB0aGF0IHJlbW92ZXMgdGhlIGFib3J0IGxpc3RlbmVyIHdoZW4gZGlzcG9zZWQsIGZvciB1c2Ugd2l0aCBgdXNpbmdgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gb25BYm9ydChhYm9ydFNpZ25hbDogQWJvcnRTaWduYWwsIGNhbGxiYWNrOiAoYWJvcnRTaWduYWw6IEFib3J0U2lnbmFsKSA9PiB2b2lkKTogRGlzcG9zYWJsZSB7XG4gIGlmIChhYm9ydFNpZ25hbC5hYm9ydGVkKSB7XG4gICAgY2FsbGJhY2soYWJvcnRTaWduYWwpO1xuICAgIHJldHVybiBuZXcgQ2FsbGJhY2tEaXNwb3NhYmxlKHsgY2FsbGJhY2s6IG5vb3AgfSk7XG4gIH1cblxuICBhYm9ydFNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsIHdyYXBwZWRDYWxsYmFjaywgeyBvbmNlOiB0cnVlIH0pO1xuICByZXR1cm4gbmV3IENhbGxiYWNrRGlzcG9zYWJsZSh7XG4gICAgY2FsbGJhY2s6ICgpOiB2b2lkID0+IHtcbiAgICAgIGFib3J0U2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Fib3J0Jywgd3JhcHBlZENhbGxiYWNrKTtcbiAgICB9XG4gIH0pO1xuXG4gIGZ1bmN0aW9uIHdyYXBwZWRDYWxsYmFjaygkZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgY2FsbGJhY2soJGV2ZW50LnRhcmdldCBhcyBBYm9ydFNpZ25hbCk7XG4gIH1cbn1cblxuLyoqXG4gKiBXYWl0cyBmb3IgYW4gYWJvcnQgc2lnbmFsIHRvIGFib3J0IGFuZCByZXNvbHZlcyB3aXRoIGl0cyByZWFzb24uXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gRXhwZWN0ZWQgdHlwZSBvZiBgYWJvcnRTaWduYWwucmVhc29uYC5cbiAqIEBwYXJhbSBhYm9ydFNpZ25hbCAtIFRoZSBhYm9ydCBzaWduYWwgdG8gd2FpdCBmb3IuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIHJlYXNvbiBvZiB0aGUgYWJvcnQgc2lnbmFsLlxuICovXG5leHBvcnQgZnVuY3Rpb24gd2FpdEZvckFib3J0PFQgPSB1bmtub3duPihhYm9ydFNpZ25hbDogQWJvcnRTaWduYWwpOiBQcm9taXNlPFQ+O1xuLyoqXG4gKiBXYWl0cyBmb3IgYW4gYWJvcnQgc2lnbmFsIHRvIGFib3J0IGFuZCByZWplY3RzIHdpdGggaXRzIHJlYXNvbi5cbiAqXG4gKiBAcGFyYW0gYWJvcnRTaWduYWwgLSBUaGUgYWJvcnQgc2lnbmFsIHRvIHdhaXQgZm9yLlxuICogQHBhcmFtIHNob3VsZFJlamVjdE9uQWJvcnQgLSBXaGV0aGVyIHRvIHJlamVjdCB0aGUgcHJvbWlzZSBpZiB0aGUgYWJvcnQgc2lnbmFsIGlzIGFib3J0ZWQuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlamVjdHMgd2l0aCB0aGUgcmVhc29uIG9mIHRoZSBhYm9ydCBzaWduYWwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3YWl0Rm9yQWJvcnQoYWJvcnRTaWduYWw6IEFib3J0U2lnbmFsLCBzaG91bGRSZWplY3RPbkFib3J0OiB0cnVlKTogUHJvbWlzZTxuZXZlcj47XG4vKipcbiAqIFdhaXRzIGZvciBhbiBhYm9ydCBzaWduYWwgdG8gYWJvcnQgYW5kIHJlc29sdmVzIHdpdGggaXRzIHJlYXNvbi5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBFeHBlY3RlZCB0eXBlIG9mIGBhYm9ydFNpZ25hbC5yZWFzb25gLlxuICogQHBhcmFtIGFib3J0U2lnbmFsIC0gVGhlIGFib3J0IHNpZ25hbCB0byB3YWl0IGZvci5cbiAqIEBwYXJhbSBzaG91bGRSZWplY3RPbkFib3J0IC0gV2hldGhlciB0byByZWplY3QgdGhlIHByb21pc2UgaWYgdGhlIGFib3J0IHNpZ25hbCBpcyBhYm9ydGVkLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aXRoIHRoZSByZWFzb24gb2YgdGhlIGFib3J0IHNpZ25hbC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdhaXRGb3JBYm9ydDxUID0gdW5rbm93bj4oYWJvcnRTaWduYWw6IEFib3J0U2lnbmFsLCBzaG91bGRSZWplY3RPbkFib3J0PzogYm9vbGVhbik6IFByb21pc2U8VD4ge1xuICByZXR1cm4gbmV3IFByb21pc2U8VD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIG9uQWJvcnQoYWJvcnRTaWduYWwsICgpID0+IHtcbiAgICAgIGlmIChzaG91bGRSZWplY3RPbkFib3J0KSB7XG4gICAgICAgIHJlamVjdChhYm9ydFNpZ25hbC5yZWFzb24gYXMgRXJyb3IpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzb2x2ZShhYm9ydFNpZ25hbC5yZWFzb24gYXMgVCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQU1BLHdCQUdPO0FBQ1Asc0JBQXFCO0FBQ3JCLGtDQUFzQztBQUsvQixNQUFNLG1CQUFtQjtBQThCekIsTUFBTSwwQkFBMEI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFNckMsSUFBVyxTQUFzQjtBQUMvQixXQUFPLEtBQUssZ0JBQWdCO0FBQUEsRUFDOUI7QUFBQSxFQUVRLGtCQUFrQixJQUFJLGdCQUFnQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUXZDLE1BQU0sUUFBd0I7QUFDbkMsU0FBSyxnQkFBZ0IsTUFBTSxNQUFNO0FBQ2pDLFNBQUssa0JBQWtCLElBQUksZ0JBQWdCO0FBQUEsRUFDN0M7QUFDRjtBQVFPLFNBQVMsa0JBQWtCLG1CQUE2RDtBQUM3RixRQUFNLGVBQWUsa0JBQWtCLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLFdBQVc7QUFHNUUsTUFBSSxPQUFPLFlBQVksUUFBUSxZQUFZO0FBRXpDLFdBQU8sWUFBWSxJQUFJLFlBQVk7QUFBQSxFQUNyQztBQUVBLE1BQUksYUFBYSxXQUFXLEdBQUc7QUFDN0IsV0FBTyxpQkFBaUI7QUFBQSxFQUMxQjtBQUVBLE1BQUksYUFBYSxXQUFXLEtBQUssYUFBYSxDQUFDLEdBQUc7QUFDaEQsV0FBTyxhQUFhLENBQUM7QUFBQSxFQUN2QjtBQUVBLFFBQU0sa0JBQWtCLElBQUksZ0JBQWdCO0FBRTVDLGFBQVcsZUFBZSxjQUFjO0FBQ3RDLFFBQUksWUFBWSxTQUFTO0FBQ3ZCLGFBQU87QUFBQSxJQUNUO0FBQUEsRUFDRjtBQUVBLFFBQU0sMEJBQXdDLE1BQU0sS0FBSyxjQUFjLENBQUMsZ0JBQWdCLFFBQVEsYUFBYSxXQUFXLENBQUM7QUFFekgsUUFBTSxpQ0FBaUMsSUFBSSxvQ0FBa0IsRUFBRSxhQUFhLHdCQUF3QixDQUFDO0FBRXJHLFNBQU8sZ0JBQWdCO0FBRXZCLFdBQVMsWUFBWSxhQUFnQztBQUNuRCxtQ0FBK0IsUUFBUTtBQUN2QyxvQkFBZ0IsTUFBTSxZQUFZLE1BQU07QUFBQSxFQUMxQztBQUNGO0FBT08sU0FBUyxtQkFBZ0M7QUFDOUMsU0FBTyxJQUFJLGdCQUFnQixFQUFFO0FBQy9CO0FBUU8sU0FBUyxtQkFBbUIsdUJBQTRDO0FBQzdFLE1BQUksMEJBQTBCLGtCQUFrQjtBQUM5QyxXQUFPLGlCQUFpQjtBQUFBLEVBQzFCO0FBVUEsUUFBTSxrQkFBa0IsSUFBSSxnQkFBZ0I7QUFFNUMsYUFBVyxXQUFXLE1BQU07QUFFMUIsb0JBQWdCLE1BQU0sSUFBSSxhQUFhLGdCQUFnQixPQUFPLHFCQUFxQixDQUFDLGlCQUFpQixjQUFjLENBQUM7QUFBQSxFQUN0SCxHQUFHLHFCQUFxQjtBQUN4QixTQUFPLGdCQUFnQjtBQUN6QjtBQXFCTyxTQUFTLDJCQUFzRDtBQUNwRSxhQUFPLG1EQUFzQix5QkFBeUIsSUFBSSwwQkFBMEIsQ0FBQyxFQUFFO0FBQ3pGO0FBbUJPLFNBQVMsdUJBQW9DO0FBQ2xELFNBQU8seUJBQXlCLEVBQUU7QUFDcEM7QUFTTyxTQUFTLFFBQVEsYUFBMEIsVUFBMEQ7QUFDMUcsTUFBSSxZQUFZLFNBQVM7QUFDdkIsYUFBUyxXQUFXO0FBQ3BCLFdBQU8sSUFBSSxxQ0FBbUIsRUFBRSxVQUFVLHFCQUFLLENBQUM7QUFBQSxFQUNsRDtBQUVBLGNBQVksaUJBQWlCLFNBQVMsaUJBQWlCLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFDckUsU0FBTyxJQUFJLHFDQUFtQjtBQUFBLElBQzVCLFVBQVUsTUFBWTtBQUNwQixrQkFBWSxvQkFBb0IsU0FBUyxlQUFlO0FBQUEsSUFDMUQ7QUFBQSxFQUNGLENBQUM7QUFFRCxXQUFTLGdCQUFnQixRQUFxQjtBQUM1QyxhQUFTLE9BQU8sTUFBcUI7QUFBQSxFQUN2QztBQUNGO0FBMEJPLFNBQVMsYUFBMEIsYUFBMEIscUJBQTJDO0FBQzdHLFNBQU8sSUFBSSxRQUFXLENBQUMsU0FBUyxXQUFXO0FBQ3pDLFlBQVEsYUFBYSxNQUFNO0FBQ3pCLFVBQUkscUJBQXFCO0FBQ3ZCLGVBQU8sWUFBWSxNQUFlO0FBQUEsTUFDcEMsT0FBTztBQUNMLGdCQUFRLFlBQVksTUFBVztBQUFBLE1BQ2pDO0FBQUEsSUFDRixDQUFDO0FBQUEsRUFDSCxDQUFDO0FBQ0g7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -86,7 +86,9 @@ export declare function abortSignalTimeout(timeoutInMilliseconds: number): Abort
86
86
  * globalThis[Symbol.for('@mnaoumov/typescript-lib/state')].values.sharedAbortController.value.abort();
87
87
  * ```
88
88
  *
89
- * In an Obsidian plugin the same instance is also reachable as `__obsidianDevUtils.sharedAbortController.value`.
89
+ * From code, call {@link getSharedAbortController} (or {@link getSharedAbortSignal}) rather than reading the slot.
90
+ * `@mnaoumov/obsidian-lib` also mirrors the instance under the legacy `__obsidianDevUtils` global, but only so that
91
+ * plugins bundling an older `obsidian-dev-utils` copy share it; new code and new console recipes should not use it.
90
92
  *
91
93
  * @returns The shared {@link ResettableAbortController}.
92
94
  */
@@ -99,12 +101,11 @@ export declare function getSharedAbortController(): ResettableAbortController;
99
101
  *
100
102
  * @example
101
103
  * ```typescript
102
- * await loop({
103
- * abortSignal: getSharedAbortSignal(),
104
- * buildNoticeMessage: (file) => `Processing ${file.path}`,
105
- * items: app.vault.getMarkdownFiles(),
106
- * processItem: async (file) => { await processFile(file); }
107
- * });
104
+ * const abortSignal = getSharedAbortSignal();
105
+ * for (const url of urls) {
106
+ * abortSignal.throwIfAborted();
107
+ * await fetch(url, { signal: abortSignal });
108
+ * }
108
109
  * ```
109
110
  *
110
111
  * @returns The {@link AbortSignal} of the shared {@link ResettableAbortController}.
@@ -19,4 +19,4 @@ var __copyProps = (to, from, except, desc) => {
19
19
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
20
  var debug_controller_exports = {};
21
21
  module.exports = __toCommonJS(debug_controller_exports);
22
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RlYnVnLWNvbnRyb2xsZXIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBQcm92aWRlcyB0aGUgaW50ZXJmYWNlIGZvciBjb250cm9sbGluZyBkZWJ1ZyBvdXRwdXQgdGhyb3VnaCBuYW1lc3BhY2UgbWFuYWdlbWVudC5cbiAqXG4gKiBEZWJ1ZyBuYW1lc3BhY2VzIGZvbGxvdyB0aGUgcGF0dGVybiAnbG9yZW0nLCBgbG9yZW06aXBzdW1gLCBgbG9yZW06aXBzdW06ZG9sb3JgLCBldGMsIGFuZCBjYW4gdXNlIHdpbGRjYXJkcyAoYCpgKS5cbiAqXG4gKiBAZXhhbXBsZVxuICogLSBgbG9yZW06KmAgbWF0Y2hlcyBhbGwgc3VibW9kdWxlcyBvZiAnbG9yZW0nXG4gKiAtIGAqOmlwc3VtYCBtYXRjaGVzIGFsbCBwbHVnaW5zJyBgaXBzdW1gIHN1Ym1vZHVsZXNcbiAqIC0gYCpgIG1hdGNoZXMgZXZlcnl0aGluZ1xuICpcbiAqIFNwZWNpYWwgc3ludGF4OlxuICogLSBOYW1lc3BhY2VzIHByZWZpeGVkIHdpdGggJy0nIGFyZSBleHBsaWNpdGx5IGRpc2FibGVkXG4gKiAtIE11bHRpcGxlIG5hbWVzcGFjZXMgY2FuIGJlIGNvbWJpbmVkIHdpdGggY29tbWFzOiBgbG9yZW0sLWxvcmVtOmlwc3VtLGRvbG9yOipgXG4gKlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9tbmFvdW1vdi5kZXYvdHlwZXNjcmlwdC1saWIvZ3VpZGVzL2RlYnVnZ2luZy99XG4gKi9cblxuLyogdjggaWdub3JlIHN0YXJ0IC0tIEludGVyZmFjZS1vbmx5IG1vZHVsZTsgbm8gcnVudGltZSBjb2RlIHRvIHRlc3QuICovXG5cbi8qKlxuICogQ29udHJvbHMgZGVidWcgb3V0cHV0IGJ5IG1hbmFnaW5nIGRlYnVnIG5hbWVzcGFjZXMuXG4gKiBFeHBvc2VkIGdsb2JhbGx5IGFzIGB3aW5kb3cuREVCVUdgLlxuICpcbiAqIEByZW1hcmtzXG4gKiBEZWJ1ZyBzZXR0aW5ncyBwZXJzaXN0IGFjcm9zcyBwbHVnaW4gcmVsb2FkcyBpbiBsb2NhbFN0b3JhZ2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVidWdDb250cm9sbGVyIHtcbiAgLyoqXG4gICAqIERpc2FibGUgc3BlY2lmaWMgZGVidWcgbmFtZXNwYWNlcy4gRGlzYWJsZWQgbmFtZXNwYWNlcyB0YWtlIHByZWNlZGVuY2VcbiAgICogb3ZlciBlbmFibGVkIG9uZXMgd2hlbiB0aGVyZSdzIGEgY29uZmxpY3QuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogd2luZG93LkRFQlVHLmRpc2FibGUoJ2Zvby1iYXInKTsgLy8gaGlkZSBhbGwgZGVidWcgbWVzc2FnZXMgZnJvbSB0aGUgYGZvby1iYXJgIHBsdWdpblxuICAgKiB3aW5kb3cuREVCVUcuZGlzYWJsZSgnZm9vLWJhcjoqJyk7IC8vIGhpZGUgYWxsIGRlYnVnIG1lc3NhZ2VzIGZyb20gdGhlIGBmb28tYmFyYCBwbHVnaW4gc3VibW9kdWxlc1xuICAgKiB3aW5kb3cuREVCVUcuZGlzYWJsZShbJ2Zvby1iYXInLCAnYmF6LXF1eCddKTsgLy8gZGlzYWJsZSBtdWx0aXBsZSBuYW1lc3BhY2VzXG4gICAqIHdpbmRvdy5ERUJVRy5kaXNhYmxlKCdmb28tYmFyLGJhei1xdXgnKTsgLy8gZGlzYWJsZSBtdWx0aXBsZSBuYW1lc3BhY2VzIHVzaW5nIGNvbW1hLXNlcGFyYXRlZCBzdHJpbmdcbiAgICogd2luZG93LkRFQlVHLmRpc2FibGUoJyonKTsgLy8gZGlzYWJsZSBhbGwgZGVidWcgbWVzc2FnZXNcbiAgICogYGBgXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lc3BhY2VzIC0gU2luZ2xlIG5hbWVzcGFjZSBzdHJpbmcgb3IgYXJyYXkgb2YgbmFtZXNwYWNlIHN0cmluZ3MgdG8gZGlzYWJsZVxuICAgKi9cbiAgZGlzYWJsZTogKG5hbWVzcGFjZXM6IHN0cmluZyB8IHN0cmluZ1tdKSA9PiB2b2lkO1xuXG4gIC8qKlxuICAgKiBFbmFibGUgc3BlY2lmaWMgZGVidWcgbmFtZXNwYWNlcy4gTm90ZSB0aGF0IGV4cGxpY2l0bHkgZGlzYWJsZWRcbiAgICogbmFtZXNwYWNlcyAocHJlZml4ZWQgd2l0aCAnLScpIHdpbGwgcmVtYWluIGRpc2FibGVkLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIHdpbmRvdy5ERUJVRy5lbmFibGUoJ2Zvby1iYXInKTsgLy8gc2hvdyBhbGwgZGVidWcgbWVzc2FnZXMgZnJvbSB0aGUgYGZvby1iYXJgIHBsdWdpblxuICAgKiB3aW5kb3cuREVCVUcuZW5hYmxlKCdmb28tYmFyOm9ic2lkaWFuLWRldi11dGlsczoqJyk7IC8vIHNob3cgYWxsIGRlYnVnIG1lc3NhZ2VzIGZyb20gdGhlIGBvYnNpZGlhbi1kZXYtdXRpbHNgIGxpYnJhcnkgd2l0aGluIHRoZSBgZm9vLWJhcmAgcGx1Z2luXG4gICAqIHdpbmRvdy5ERUJVRy5lbmFibGUoJ2Zvby1iYXI6KicpOyAvLyBzaG93IGFsbCBkZWJ1ZyBtZXNzYWdlcyBmcm9tIHRoZSBgZm9vLWJhcmAgcGx1Z2luIGFuZCBpdHMgc3VibW9kdWxlc1xuICAgKiB3aW5kb3cuREVCVUcuZW5hYmxlKCcqOm9ic2lkaWFuLWRldi11dGlsczoqJyk7IC8vIHNob3cgYWxsIGRlYnVnIG1lc3NhZ2VzIGZvciB0aGUgYG9ic2lkaWFuLWRldi11dGlsc2AgbGlicmFyeSB3aXRoaW4gYW55IHBsdWdpblxuICAgKiB3aW5kb3cuREVCVUcuZW5hYmxlKFsnZm9vLWJhcicsICdiYXotcXV4J10pOyAvLyBlbmFibGUgbXVsdGlwbGUgbmFtZXNwYWNlc1xuICAgKiB3aW5kb3cuREVCVUcuZW5hYmxlKCdmb28tYmFyLGJhei1xdXgnKTsgLy8gZW5hYmxlIG11bHRpcGxlIG5hbWVzcGFjZXMgdXNpbmcgY29tbWEtc2VwYXJhdGVkIHN0cmluZ1xuICAgKiB3aW5kb3cuREVCVUcuZW5hYmxlKCcqJyk7IC8vIHNob3cgYWxsIGRlYnVnIG1lc3NhZ2VzXG4gICAqIGBgYFxuICAgKlxuICAgKiBAcGFyYW0gbmFtZXNwYWNlcyAtIFNpbmdsZSBuYW1lc3BhY2Ugc3RyaW5nIG9yIGFycmF5IG9mIG5hbWVzcGFjZSBzdHJpbmdzIHRvIGVuYWJsZVxuICAgKi9cbiAgZW5hYmxlOiAobmFtZXNwYWNlczogc3RyaW5nIHwgc3RyaW5nW10pID0+IHZvaWQ7XG5cbiAgLyoqXG4gICAqIEdldCBjdXJyZW50bHkgY29uZmlndXJlZCBkZWJ1ZyBuYW1lc3BhY2VzLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIHdpbmRvdy5ERUJVRy5nZXQoKTsgLy8gcmV0dXJucyBbJ2Zvby1iYXInLCAnYmF6LXF1eDoqJywgJy1sb3JlbS1pcHN1bSddXG4gICAqIGBgYFxuICAgKlxuICAgKiBAcmV0dXJucyBBcnJheSBvZiBlbmFibGVkIGFuZCBkaXNhYmxlZCAocHJlZml4ZWQgd2l0aCBgLWApIGRlYnVnIG5hbWVzcGFjZXNcbiAgICovXG4gIGdldDogKCkgPT4gc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFNldCBkZWJ1ZyBuYW1lc3BhY2VzLCByZXBsYWNpbmcgYWxsIHByZXZpb3VzIGNvbmZpZ3VyYXRpb25zLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIHdpbmRvdy5ERUJVRy5zZXQoWydmb28tYmFyJywgJ2Jhei1xdXg6KicsICctbG9yZW0taXBzdW0nXSk7IC8vIEVuYWJsZSAnZm9vLWJhcicgYW5kICdiYXotcXV4OionLCBleHBsaWNpdGx5IGRpc2FibGUgJ2xvcmVtLWlwc3VtJ1xuICAgKiB3aW5kb3cuREVCVUcuc2V0KCdmb28tYmFyLGJhei1xdXg6KiwtbG9yZW0taXBzdW0nKTsgLy8gU2FtZSB0aGluZyB1c2luZyBjb21tYS1zZXBhcmF0ZWQgc3RyaW5nXG4gICAqIHdpbmRvdy5ERUJVRy5zZXQoJyonKTsgLy8gRW5hYmxlIGFsbCBkZWJ1ZyBtZXNzYWdlc1xuICAgKiB3aW5kb3cuREVCVUcuc2V0KCcnKTsgLy8gRGlzYWJsZSBhbGwgZGVidWcgbWVzc2FnZXNcbiAgICogYGBgXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lc3BhY2VzIC0gU3RyaW5nIG9yIGFycmF5IG9mIG5hbWVzcGFjZSBwYXR0ZXJuc1xuICAgKi9cbiAgc2V0OiAobmFtZXNwYWNlczogc3RyaW5nIHwgc3RyaW5nW10pID0+IHZvaWQ7XG59XG5cbi8qIHY4IGlnbm9yZSBzdG9wICovXG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTsiLAogICJuYW1lcyI6IFtdCn0K
22
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RlYnVnLWNvbnRyb2xsZXIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBQcm92aWRlcyB0aGUgaW50ZXJmYWNlIGZvciBjb250cm9sbGluZyBkZWJ1ZyBvdXRwdXQgdGhyb3VnaCBuYW1lc3BhY2UgbWFuYWdlbWVudC5cbiAqXG4gKiBEZWJ1ZyBuYW1lc3BhY2VzIGZvbGxvdyB0aGUgcGF0dGVybiAnbG9yZW0nLCBgbG9yZW06aXBzdW1gLCBgbG9yZW06aXBzdW06ZG9sb3JgLCBldGMsIGFuZCBjYW4gdXNlIHdpbGRjYXJkcyAoYCpgKS5cbiAqXG4gKiBAZXhhbXBsZVxuICogLSBgbG9yZW06KmAgbWF0Y2hlcyBhbGwgc3VibW9kdWxlcyBvZiAnbG9yZW0nXG4gKiAtIGAqOmlwc3VtYCBtYXRjaGVzIGFsbCBwbHVnaW5zJyBgaXBzdW1gIHN1Ym1vZHVsZXNcbiAqIC0gYCpgIG1hdGNoZXMgZXZlcnl0aGluZ1xuICpcbiAqIFNwZWNpYWwgc3ludGF4OlxuICogLSBOYW1lc3BhY2VzIHByZWZpeGVkIHdpdGggJy0nIGFyZSBleHBsaWNpdGx5IGRpc2FibGVkXG4gKiAtIE11bHRpcGxlIG5hbWVzcGFjZXMgY2FuIGJlIGNvbWJpbmVkIHdpdGggY29tbWFzOiBgbG9yZW0sLWxvcmVtOmlwc3VtLGRvbG9yOipgXG4gKlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9tbmFvdW1vdi5kZXYvdHlwZXNjcmlwdC1saWIvZ3VpZGVzL2RlYnVnZ2luZy99XG4gKi9cblxuLyogdjggaWdub3JlIHN0YXJ0IC0tIEludGVyZmFjZS1vbmx5IG1vZHVsZTsgbm8gcnVudGltZSBjb2RlIHRvIHRlc3QuICovXG5cbi8qKlxuICogQ29udHJvbHMgZGVidWcgb3V0cHV0IGJ5IG1hbmFnaW5nIGRlYnVnIG5hbWVzcGFjZXMuXG4gKiBFeHBvc2VkIGdsb2JhbGx5IGFzIGB3aW5kb3cuREVCVUdgLlxuICpcbiAqIEByZW1hcmtzXG4gKiBEZWJ1ZyBzZXR0aW5ncyBwZXJzaXN0IGFjcm9zcyBwbHVnaW4gcmVsb2FkcyBpbiBsb2NhbFN0b3JhZ2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVidWdDb250cm9sbGVyIHtcbiAgLyoqXG4gICAqIERpc2FibGUgc3BlY2lmaWMgZGVidWcgbmFtZXNwYWNlcy4gRGlzYWJsZWQgbmFtZXNwYWNlcyB0YWtlIHByZWNlZGVuY2VcbiAgICogb3ZlciBlbmFibGVkIG9uZXMgd2hlbiB0aGVyZSdzIGEgY29uZmxpY3QuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogd2luZG93LkRFQlVHLmRpc2FibGUoJ2Zvby1iYXInKTsgLy8gaGlkZSBhbGwgZGVidWcgbWVzc2FnZXMgZnJvbSB0aGUgYGZvby1iYXJgIHBsdWdpblxuICAgKiB3aW5kb3cuREVCVUcuZGlzYWJsZSgnZm9vLWJhcjoqJyk7IC8vIGhpZGUgYWxsIGRlYnVnIG1lc3NhZ2VzIGZyb20gdGhlIGBmb28tYmFyYCBwbHVnaW4gc3VibW9kdWxlc1xuICAgKiB3aW5kb3cuREVCVUcuZGlzYWJsZShbJ2Zvby1iYXInLCAnYmF6LXF1eCddKTsgLy8gZGlzYWJsZSBtdWx0aXBsZSBuYW1lc3BhY2VzXG4gICAqIHdpbmRvdy5ERUJVRy5kaXNhYmxlKCdmb28tYmFyLGJhei1xdXgnKTsgLy8gZGlzYWJsZSBtdWx0aXBsZSBuYW1lc3BhY2VzIHVzaW5nIGNvbW1hLXNlcGFyYXRlZCBzdHJpbmdcbiAgICogd2luZG93LkRFQlVHLmRpc2FibGUoJyonKTsgLy8gZGlzYWJsZSBhbGwgZGVidWcgbWVzc2FnZXNcbiAgICogYGBgXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lc3BhY2VzIC0gU2luZ2xlIG5hbWVzcGFjZSBzdHJpbmcgb3IgYXJyYXkgb2YgbmFtZXNwYWNlIHN0cmluZ3MgdG8gZGlzYWJsZVxuICAgKi9cbiAgZGlzYWJsZTogKG5hbWVzcGFjZXM6IHN0cmluZyB8IHN0cmluZ1tdKSA9PiB2b2lkO1xuXG4gIC8qKlxuICAgKiBFbmFibGUgc3BlY2lmaWMgZGVidWcgbmFtZXNwYWNlcy4gTm90ZSB0aGF0IGV4cGxpY2l0bHkgZGlzYWJsZWRcbiAgICogbmFtZXNwYWNlcyAocHJlZml4ZWQgd2l0aCAnLScpIHdpbGwgcmVtYWluIGRpc2FibGVkLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIHdpbmRvdy5ERUJVRy5lbmFibGUoJ2Zvby1iYXInKTsgLy8gc2hvdyBhbGwgZGVidWcgbWVzc2FnZXMgZnJvbSB0aGUgYGZvby1iYXJgIHBsdWdpblxuICAgKiB3aW5kb3cuREVCVUcuZW5hYmxlKCdmb28tYmFyOm9ic2lkaWFuLWRldi11dGlsczoqJyk7IC8vIHNob3cgYWxsIGRlYnVnIG1lc3NhZ2VzIGZyb20gYEBtbmFvdW1vdi9vYnNpZGlhbi1saWJgIHdpdGhpbiB0aGUgYGZvby1iYXJgIHBsdWdpbiAoaXQga2VlcHMgaXRzIGxlZ2FjeSBgb2JzaWRpYW4tZGV2LXV0aWxzYCBuYW1lc3BhY2UpXG4gICAqIHdpbmRvdy5ERUJVRy5lbmFibGUoJ2Zvby1iYXI6KicpOyAvLyBzaG93IGFsbCBkZWJ1ZyBtZXNzYWdlcyBmcm9tIHRoZSBgZm9vLWJhcmAgcGx1Z2luIGFuZCBpdHMgc3VibW9kdWxlc1xuICAgKiB3aW5kb3cuREVCVUcuZW5hYmxlKCcqOm9ic2lkaWFuLWRldi11dGlsczoqJyk7IC8vIHNob3cgYWxsIGRlYnVnIG1lc3NhZ2VzIGZyb20gYEBtbmFvdW1vdi9vYnNpZGlhbi1saWJgIHdpdGhpbiBhbnkgcGx1Z2luXG4gICAqIHdpbmRvdy5ERUJVRy5lbmFibGUoWydmb28tYmFyJywgJ2Jhei1xdXgnXSk7IC8vIGVuYWJsZSBtdWx0aXBsZSBuYW1lc3BhY2VzXG4gICAqIHdpbmRvdy5ERUJVRy5lbmFibGUoJ2Zvby1iYXIsYmF6LXF1eCcpOyAvLyBlbmFibGUgbXVsdGlwbGUgbmFtZXNwYWNlcyB1c2luZyBjb21tYS1zZXBhcmF0ZWQgc3RyaW5nXG4gICAqIHdpbmRvdy5ERUJVRy5lbmFibGUoJyonKTsgLy8gc2hvdyBhbGwgZGVidWcgbWVzc2FnZXNcbiAgICogYGBgXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lc3BhY2VzIC0gU2luZ2xlIG5hbWVzcGFjZSBzdHJpbmcgb3IgYXJyYXkgb2YgbmFtZXNwYWNlIHN0cmluZ3MgdG8gZW5hYmxlXG4gICAqL1xuICBlbmFibGU6IChuYW1lc3BhY2VzOiBzdHJpbmcgfCBzdHJpbmdbXSkgPT4gdm9pZDtcblxuICAvKipcbiAgICogR2V0IGN1cnJlbnRseSBjb25maWd1cmVkIGRlYnVnIG5hbWVzcGFjZXMuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogd2luZG93LkRFQlVHLmdldCgpOyAvLyByZXR1cm5zIFsnZm9vLWJhcicsICdiYXotcXV4OionLCAnLWxvcmVtLWlwc3VtJ11cbiAgICogYGBgXG4gICAqXG4gICAqIEByZXR1cm5zIEFycmF5IG9mIGVuYWJsZWQgYW5kIGRpc2FibGVkIChwcmVmaXhlZCB3aXRoIGAtYCkgZGVidWcgbmFtZXNwYWNlc1xuICAgKi9cbiAgZ2V0OiAoKSA9PiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogU2V0IGRlYnVnIG5hbWVzcGFjZXMsIHJlcGxhY2luZyBhbGwgcHJldmlvdXMgY29uZmlndXJhdGlvbnMuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogd2luZG93LkRFQlVHLnNldChbJ2Zvby1iYXInLCAnYmF6LXF1eDoqJywgJy1sb3JlbS1pcHN1bSddKTsgLy8gRW5hYmxlICdmb28tYmFyJyBhbmQgJ2Jhei1xdXg6KicsIGV4cGxpY2l0bHkgZGlzYWJsZSAnbG9yZW0taXBzdW0nXG4gICAqIHdpbmRvdy5ERUJVRy5zZXQoJ2Zvby1iYXIsYmF6LXF1eDoqLC1sb3JlbS1pcHN1bScpOyAvLyBTYW1lIHRoaW5nIHVzaW5nIGNvbW1hLXNlcGFyYXRlZCBzdHJpbmdcbiAgICogd2luZG93LkRFQlVHLnNldCgnKicpOyAvLyBFbmFibGUgYWxsIGRlYnVnIG1lc3NhZ2VzXG4gICAqIHdpbmRvdy5ERUJVRy5zZXQoJycpOyAvLyBEaXNhYmxlIGFsbCBkZWJ1ZyBtZXNzYWdlc1xuICAgKiBgYGBcbiAgICpcbiAgICogQHBhcmFtIG5hbWVzcGFjZXMgLSBTdHJpbmcgb3IgYXJyYXkgb2YgbmFtZXNwYWNlIHBhdHRlcm5zXG4gICAqL1xuICBzZXQ6IChuYW1lc3BhY2VzOiBzdHJpbmcgfCBzdHJpbmdbXSkgPT4gdm9pZDtcbn1cblxuLyogdjggaWdub3JlIHN0b3AgKi9cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -48,9 +48,9 @@ export interface DebugController {
48
48
  * @example
49
49
  * ```typescript
50
50
  * window.DEBUG.enable('foo-bar'); // show all debug messages from the `foo-bar` plugin
51
- * window.DEBUG.enable('foo-bar:obsidian-dev-utils:*'); // show all debug messages from the `obsidian-dev-utils` library within the `foo-bar` plugin
51
+ * window.DEBUG.enable('foo-bar:obsidian-dev-utils:*'); // show all debug messages from `@mnaoumov/obsidian-lib` within the `foo-bar` plugin (it keeps its legacy `obsidian-dev-utils` namespace)
52
52
  * window.DEBUG.enable('foo-bar:*'); // show all debug messages from the `foo-bar` plugin and its submodules
53
- * window.DEBUG.enable('*:obsidian-dev-utils:*'); // show all debug messages for the `obsidian-dev-utils` library within any plugin
53
+ * window.DEBUG.enable('*:obsidian-dev-utils:*'); // show all debug messages from `@mnaoumov/obsidian-lib` within any plugin
54
54
  * window.DEBUG.enable(['foo-bar', 'baz-qux']); // enable multiple namespaces
55
55
  * window.DEBUG.enable('foo-bar,baz-qux'); // enable multiple namespaces using comma-separated string
56
56
  * window.DEBUG.enable('*'); // show all debug messages
@@ -72,6 +72,7 @@ var import_debug = __toESM(((module) => module && module.__esModule && 'default'
72
72
  var import_error = require('./error.cjs');
73
73
  var import_library = require('./library.cjs');
74
74
  var import_typescript_lib_state = require('./typescript-lib-state.cjs');
75
+ const ALIAS_FRAMES_TO_SKIP = 1;
75
76
  const NAMESPACE_SEPARATOR = ",";
76
77
  const NEGATED_NAMESPACE_PREFIX = "-";
77
78
  function enableLibraryDebuggers() {
@@ -104,7 +105,25 @@ function getDebugger(namespace, framesToSkip = 0) {
104
105
  return debuggerEx;
105
106
  }
106
107
  function getLibDebugger(namespace) {
107
- return getDebugger(`${import_library.Library.debugPrefixNamespace}${import_library.Library.debugNamespace}:${namespace}`);
108
+ const aliases = import_library.Library.debugNamespaceAliases;
109
+ if (aliases.length === 0) {
110
+ return getDebugger(`${import_library.Library.debugPrefixNamespace}${import_library.Library.debugNamespace}:${namespace}`);
111
+ }
112
+ const currentDebugger = getDebugger(`${import_library.Library.debugPrefixNamespace}${import_library.Library.debugNamespace}:${namespace}`, ALIAS_FRAMES_TO_SKIP);
113
+ const aliasDebuggers = aliases.map((alias) => getDebugger(`${import_library.Library.debugPrefixNamespace}${alias}:${namespace}`, ALIAS_FRAMES_TO_SKIP));
114
+ const allDebuggers = [currentDebugger, ...aliasDebuggers];
115
+ return new Proxy(currentDebugger, {
116
+ apply(_target, _thisArgument, $arguments) {
117
+ allDebuggers.find((debuggerInstance) => debuggerInstance.enabled)?.(...$arguments);
118
+ },
119
+ get(target, property, receiver) {
120
+ if (property === "enabled") {
121
+ return allDebuggers.some((debuggerInstance) => debuggerInstance.enabled);
122
+ }
123
+ const value = Reflect.get(target, property, receiver);
124
+ return value;
125
+ }
126
+ });
108
127
  }
109
128
  function printWithStackTrace(params) {
110
129
  const {
@@ -201,4 +220,4 @@ function toArray(namespaces) {
201
220
  printWithStackTrace,
202
221
  showInitialDebugMessage
203
222
  });
204
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kZWJ1Zy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29udGFpbnMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIGRlYnVnZ2luZy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IERlYnVnZ2VyIH0gZnJvbSAnZGVidWcnO1xuXG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuXG5pbXBvcnQgdHlwZSB7IERlYnVnQ29udHJvbGxlciB9IGZyb20gJy4vZGVidWctY29udHJvbGxlci50cyc7XG5cbmltcG9ydCB7XG4gIEN1c3RvbVN0YWNrVHJhY2VFcnJvcixcbiAgZ2V0U3RhY2tUcmFjZVxufSBmcm9tICcuL2Vycm9yLnRzJztcbmltcG9ydCB7IExpYnJhcnkgfSBmcm9tICcuL2xpYnJhcnkudHMnO1xuaW1wb3J0IHsgZ2V0VHlwZXNjcmlwdExpYlN0YXRlIH0gZnJvbSAnLi90eXBlc2NyaXB0LWxpYi1zdGF0ZS50cyc7XG5cbmNvbnN0IE5BTUVTUEFDRV9TRVBBUkFUT1IgPSAnLCc7XG5jb25zdCBORUdBVEVEX05BTUVTUEFDRV9QUkVGSVggPSAnLSc7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIHByaW50V2l0aFN0YWNrVHJhY2V9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFByaW50V2l0aFN0YWNrVHJhY2VQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGFyZ3VtZW50cyB0byBwcmludC5cbiAgICovXG4gIHJlYWRvbmx5ICRhcmd1bWVudHM6IHVua25vd25bXTtcblxuICAvKipcbiAgICogVGhlIGRlYnVnZ2VyIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVidWdnZXJJbnN0YW5jZTogRGVidWdnZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBtZXNzYWdlIHRvIHByaW50LlxuICAgKi9cbiAgcmVhZG9ubHkgbWVzc2FnZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc3RhY2sgdHJhY2UgdG8gcHJpbnQuXG4gICAqL1xuICByZWFkb25seSBzdGFja1RyYWNlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGxvZ1dpdGhDYWxsZXJ9LlxuICovXG5pbnRlcmZhY2UgTG9nV2l0aENhbGxlclBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgYXJndW1lbnRzIHRvIHByaW50LlxuICAgKi9cbiAgcmVhZG9ubHkgJGFyZ3VtZW50czogdW5rbm93bltdO1xuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIGZyYW1lcyB0byBza2lwIGluIHRoZSBzdGFjayB0cmFjZS5cbiAgICovXG4gIHJlYWRvbmx5IGZyYW1lc1RvU2tpcDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgbWVzc2FnZSB0byBwcmludC5cbiAgICovXG4gIHJlYWRvbmx5IG1lc3NhZ2U6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWVzcGFjZSBmb3IgdGhlIGRlYnVnZ2VyIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZXNwYWNlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogRW5hYmxlcyB0aGUgZGVidWdnZXJzIGZvciB0aGUgbGlicmFyeSAodW5kZXIgaXRzIGRlYnVnIG5hbWVzcGFjZSwgc2VlIGBMaWJyYXJ5LmRlYnVnTmFtZXNwYWNlYCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbmFibGVMaWJyYXJ5RGVidWdnZXJzKCk6IHZvaWQge1xuICBlbmFibGVOYW1lc3BhY2VzKFtMaWJyYXJ5LmRlYnVnTmFtZXNwYWNlLCBgJHtMaWJyYXJ5LmRlYnVnTmFtZXNwYWNlfToqYF0pO1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBkZWJ1ZyBjb250cm9sbGVyLlxuICpcbiAqIEByZXR1cm5zIEEgZGVidWcgY29udHJvbGxlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldERlYnVnQ29udHJvbGxlcigpOiBEZWJ1Z0NvbnRyb2xsZXIge1xuICByZXR1cm4ge1xuICAgIGRpc2FibGU6IGRpc2FibGVOYW1lc3BhY2VzLFxuICAgIGVuYWJsZTogZW5hYmxlTmFtZXNwYWNlcyxcbiAgICBnZXQ6IGdldE5hbWVzcGFjZXMsXG4gICAgc2V0OiBzZXROYW1lc3BhY2VzXG4gIH07XG59XG5cbi8qKlxuICogUmV0dXJucyBhIGRlYnVnZ2VyIGluc3RhbmNlIHdpdGggYSBsb2cgZnVuY3Rpb24gdGhhdCBpbmNsdWRlcyB0aGUgY2FsbGVyJ3MgZmlsZSBuYW1lIGFuZCBsaW5lIG51bWJlci5cbiAqXG4gKiBAcGFyYW0gbmFtZXNwYWNlIC0gVGhlIG5hbWVzcGFjZSBmb3IgdGhlIGRlYnVnZ2VyIGluc3RhbmNlLlxuICogQHBhcmFtIGZyYW1lc1RvU2tpcCAtIFRoZSBudW1iZXIgb2YgZnJhbWVzIHRvIHNraXAgaW4gdGhlIHN0YWNrIHRyYWNlLlxuICogQHJldHVybnMgQSBkZWJ1Z2dlciBpbnN0YW5jZSB3aXRoIGEgbG9nIGZ1bmN0aW9uIHRoYXQgaW5jbHVkZXMgdGhlIGNhbGxlcidzIGZpbGUgbmFtZSBhbmQgbGluZSBudW1iZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWJ1Z2dlcihuYW1lc3BhY2U6IHN0cmluZywgZnJhbWVzVG9Ta2lwID0gMCk6IERlYnVnZ2VyIHtcbiAgY29uc3Qga2V5ID0gYCR7bmFtZXNwYWNlfToke1N0cmluZyhmcmFtZXNUb1NraXApfWA7XG4gIGNvbnN0IGRlYnVnZ2Vyc01hcCA9IGdldFR5cGVzY3JpcHRMaWJTdGF0ZSgnZGVidWdnZXJzJywgbmV3IE1hcDxzdHJpbmcsIERlYnVnZ2VyPigpKS52YWx1ZTtcbiAgbGV0IGRlYnVnZ2VyRXggPSBkZWJ1Z2dlcnNNYXAuZ2V0KGtleSk7XG4gIGlmICghZGVidWdnZXJFeCkge1xuICAgIGRlYnVnZ2VyRXggPSBnZXRTaGFyZWREZWJ1Z0xpYkluc3RhbmNlKCkobmFtZXNwYWNlKTtcbiAgICBkZWJ1Z2dlckV4LmxvZyA9IChtZXNzYWdlOiBzdHJpbmcsIC4uLiRhcmd1bWVudHM6IHVua25vd25bXSk6IHZvaWQgPT4ge1xuICAgICAgbG9nV2l0aENhbGxlcih7XG4gICAgICAgICRhcmd1bWVudHMsXG4gICAgICAgIGZyYW1lc1RvU2tpcCxcbiAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgbmFtZXNwYWNlXG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgZGVidWdnZXJzTWFwLnNldChrZXksIGRlYnVnZ2VyRXgpO1xuICB9XG5cbiAgcmV0dXJuIGRlYnVnZ2VyRXg7XG59XG5cbi8qKlxuICogUmV0dXJucyBhIGRlYnVnZ2VyIGluc3RhbmNlIGZvciB0aGUgbGlicmFyeSAodW5kZXIgaXRzIGRlYnVnIG5hbWVzcGFjZSwgc2VlIGBMaWJyYXJ5LmRlYnVnTmFtZXNwYWNlYCkuXG4gKlxuICogQHBhcmFtIG5hbWVzcGFjZSAtIFRoZSBuYW1lc3BhY2UgZm9yIHRoZSBkZWJ1Z2dlciBpbnN0YW5jZS5cbiAqIEByZXR1cm5zIEEgZGVidWdnZXIgaW5zdGFuY2UgZm9yIHRoZSBsaWJyYXJ5ICh1bmRlciBpdHMgZGVidWcgbmFtZXNwYWNlLCBzZWUgYExpYnJhcnkuZGVidWdOYW1lc3BhY2VgKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldExpYkRlYnVnZ2VyKG5hbWVzcGFjZTogc3RyaW5nKTogRGVidWdnZXIge1xuICByZXR1cm4gZ2V0RGVidWdnZXIoYCR7TGlicmFyeS5kZWJ1Z1ByZWZpeE5hbWVzcGFjZX0ke0xpYnJhcnkuZGVidWdOYW1lc3BhY2V9OiR7bmFtZXNwYWNlfWApO1xufVxuXG4vKipcbiAqIFByaW50cyBhIG1lc3NhZ2Ugd2l0aCBhIHN0YWNrIHRyYWNlLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgcHJpbnRpbmcgdGhlIG1lc3NhZ2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcmludFdpdGhTdGFja1RyYWNlKHBhcmFtczogUHJpbnRXaXRoU3RhY2tUcmFjZVBhcmFtcyk6IHZvaWQge1xuICBjb25zdCB7XG4gICAgJGFyZ3VtZW50cyxcbiAgICBkZWJ1Z2dlckluc3RhbmNlLFxuICAgIG1lc3NhZ2UsXG4gICAgc3RhY2tUcmFjZVxuICB9ID0gcGFyYW1zO1xuICBpZiAoIUxpYnJhcnkuc2hvdWxkUHJpbnRTdGFja1RyYWNlKSB7XG4gICAgZGVidWdnZXJJbnN0YW5jZShtZXNzYWdlLCAuLi4kYXJndW1lbnRzKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBkZWJ1Z2dlckluc3RhbmNlKG1lc3NhZ2UsIC4uLiRhcmd1bWVudHMsICdcXG5cXG4tLS1cXG5Db250ZXh0IHN0YWNrIHRyYWNlOlxcbicsIG1ha2VTdGFja1RyYWNlRXJyb3Ioc3RhY2tUcmFjZSkpO1xufVxuXG4vKipcbiAqIFNob3dzIGFuIGluaXRpYWwgZGVidWcgbWVzc2FnZS5cbiAqXG4gKiBAcGFyYW0gcGx1Z2luSWQgLSBUaGUgcGx1Z2luIElELlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2hvd0luaXRpYWxEZWJ1Z01lc3NhZ2UocGx1Z2luSWQ6IHN0cmluZyk6IHZvaWQge1xuICBjb25zdCBpc0VuYWJsZWQgPSBnZXRTaGFyZWREZWJ1Z0xpYkluc3RhbmNlKCkuZW5hYmxlZChwbHVnaW5JZCk7XG4gIGNvbnN0IHN0YXRlID0gaXNFbmFibGVkID8gJ2VuYWJsZWQnIDogJ2Rpc2FibGVkJztcbiAgY29uc3QgY2hhbmdlQWN0aW9uID0gaXNFbmFibGVkID8gJ2Rpc2FibGUnIDogJ2VuYWJsZSc7XG4gIGNvbnN0IG5hbWVzcGFjZXMgPSBnZXROYW1lc3BhY2VzKCk7XG4gIHNldE5hbWVzcGFjZXMocGx1Z2luSWQpO1xuICBnZXREZWJ1Z2dlcihwbHVnaW5JZCkoXG4gICAgYERlYnVnIG1lc3NhZ2VzIGZvciBwbHVnaW4gJHtwbHVnaW5JZH0gYXJlICR7c3RhdGV9LiR7Zm9ybWF0R3VpZGVSZWZlcmVuY2UoYCBob3cgdG8gJHtjaGFuZ2VBY3Rpb259IHRoZW1gKX1gXG4gICk7XG4gIHNldE5hbWVzcGFjZXMobmFtZXNwYWNlcyk7XG59XG5cbmZ1bmN0aW9uIGRpc2FibGVOYW1lc3BhY2VzKG5hbWVzcGFjZXM6IHN0cmluZyB8IHN0cmluZ1tdKTogdm9pZCB7XG4gIGNvbnN0IHNldCA9IG5ldyBTZXQoZ2V0TmFtZXNwYWNlcygpKTtcbiAgZm9yIChjb25zdCBuYW1lc3BhY2Ugb2YgdG9BcnJheShuYW1lc3BhY2VzKSkge1xuICAgIGlmIChuYW1lc3BhY2Uuc3RhcnRzV2l0aChORUdBVEVEX05BTUVTUEFDRV9QUkVGSVgpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY29uc3QgbmVnYXRlZE5hbWVzcGFjZSA9IE5FR0FURURfTkFNRVNQQUNFX1BSRUZJWCArIG5hbWVzcGFjZTtcbiAgICBzZXQuZGVsZXRlKG5hbWVzcGFjZSk7XG4gICAgc2V0LmFkZChuZWdhdGVkTmFtZXNwYWNlKTtcbiAgfVxuICBzZXROYW1lc3BhY2VzKFsuLi5zZXRdKTtcbn1cblxuZnVuY3Rpb24gZW5hYmxlTmFtZXNwYWNlcyhuYW1lc3BhY2VzOiBzdHJpbmcgfCBzdHJpbmdbXSk6IHZvaWQge1xuICBjb25zdCBzZXQgPSBuZXcgU2V0KGdldE5hbWVzcGFjZXMoKSk7XG4gIGZvciAoY29uc3QgbmFtZXNwYWNlIG9mIHRvQXJyYXkobmFtZXNwYWNlcykpIHtcbiAgICBpZiAoIW5hbWVzcGFjZS5zdGFydHNXaXRoKE5FR0FURURfTkFNRVNQQUNFX1BSRUZJWCkpIHtcbiAgICAgIGNvbnN0IG5lZ2F0ZWROYW1lc3BhY2UgPSBORUdBVEVEX05BTUVTUEFDRV9QUkVGSVggKyBuYW1lc3BhY2U7XG4gICAgICBzZXQuZGVsZXRlKG5lZ2F0ZWROYW1lc3BhY2UpO1xuICAgIH1cbiAgICBzZXQuYWRkKG5hbWVzcGFjZSk7XG4gIH1cbiAgc2V0TmFtZXNwYWNlcyhbLi4uc2V0XSk7XG59XG5cbmZ1bmN0aW9uIGZvcm1hdEd1aWRlUmVmZXJlbmNlKHN1ZmZpeDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIExpYnJhcnkuZGVidWdHdWlkZVVybCA/IGAgU2VlICR7TGlicmFyeS5kZWJ1Z0d1aWRlVXJsfSR7c3VmZml4fS5gIDogJyc7XG59XG5cbmZ1bmN0aW9uIGdldE5hbWVzcGFjZXMoKTogc3RyaW5nW10ge1xuICByZXR1cm4gdG9BcnJheShnZXRTaGFyZWREZWJ1Z0xpYkluc3RhbmNlKCkubG9hZCgpID8/ICcnKTtcbn1cblxuZnVuY3Rpb24gZ2V0U2hhcmVkRGVidWdMaWJJbnN0YW5jZSgpOiB0eXBlb2YgZGVidWcge1xuICByZXR1cm4gZ2V0VHlwZXNjcmlwdExpYlN0YXRlKCdkZWJ1ZycsIGRlYnVnKS52YWx1ZTtcbn1cblxuZnVuY3Rpb24gbG9nV2l0aENhbGxlcihwYXJhbXM6IExvZ1dpdGhDYWxsZXJQYXJhbXMpOiB2b2lkIHtcbiAgY29uc3Qge1xuICAgICRhcmd1bWVudHMsXG4gICAgZnJhbWVzVG9Ta2lwLFxuICAgIG1lc3NhZ2UsXG4gICAgbmFtZXNwYWNlXG4gIH0gPSBwYXJhbXM7XG4gIGlmICghZ2V0U2hhcmVkRGVidWdMaWJJbnN0YW5jZSgpLmVuYWJsZWQobmFtZXNwYWNlKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmICghTGlicmFyeS5zaG91bGRQcmludFN0YWNrVHJhY2UpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZSAtLSBWYWxpZCB1c2FnZS5cbiAgICBjb25zb2xlLmRlYnVnKG1lc3NhZ2UsIC4uLiRhcmd1bWVudHMpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgY2FsbGVyIGlzIDMgZnJhbWVzIGFib3ZlIHRoaXMgb25lLCBiZWNhdXNlIHRoZSBjYWxsIHN0YWNrIGlzIGFzIGZvbGxvd3M6XG4gICAqXG4gICAqIDA6IGxvZ1dpdGhDYWxsZXJcbiAgICogMTogZGVidWdJbnN0YW5jZS5sb2dcbiAgICogMjogZGVidWdcbiAgICogMzogZnVuY3Rpb25OYW1lICh0aGUgY2FsbGVyKVxuICAgKlxuICAgKiBgZ2V0U3RhY2tUcmFjZWAgZHJvcHMgaXRzIG93biBmcmFtZSBhbmQsIG9uIGFuIGVuZ2luZSB0aGF0IHdyaXRlcyBvbmUsIHRoZSBgRXJyb3JgIGhlYWRlciBsaW5lLlxuICAgKi9cbiAgY29uc3QgQ0FMTEVSX0ZSQU1FX0lOREVYID0gMztcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZSAtLSBWYWxpZCB1c2FnZS5cbiAgY29uc29sZS5kZWJ1ZyhtZXNzYWdlLCAuLi4kYXJndW1lbnRzLCAnXFxuXFxuLS0tXFxuTG9nZ2VyIHN0YWNrIHRyYWNlOlxcbicsIG1ha2VTdGFja1RyYWNlRXJyb3IoZ2V0U3RhY2tUcmFjZShDQUxMRVJfRlJBTUVfSU5ERVggKyBmcmFtZXNUb1NraXApKSk7XG59XG5cbmZ1bmN0aW9uIG1ha2VTdGFja1RyYWNlRXJyb3Ioc3RhY2tUcmFjZTogc3RyaW5nKTogQ3VzdG9tU3RhY2tUcmFjZUVycm9yIHtcbiAgcmV0dXJuIG5ldyBDdXN0b21TdGFja1RyYWNlRXJyb3Ioe1xuICAgIGNhdXNlOiB1bmRlZmluZWQsXG4gICAgbWVzc2FnZTogYERlYnVnIG1vZGU6IGludGVudGlvbmFsIHBsYWNlaG9sZGVyIGVycm9yLiR7Zm9ybWF0R3VpZGVSZWZlcmVuY2UoJycpfWAsXG4gICAgc3RhY2tUcmFjZVxuICB9KTtcbn1cblxuLyoqXG4gKiBTZXRzIHRoZSBuYW1lc3BhY2VzIHRvIGVuYWJsZS5cbiAqXG4gKiBAcGFyYW0gbmFtZXNwYWNlcyAtIFRoZSBuYW1lc3BhY2VzIHRvIGVuYWJsZS5cbiAqL1xuZnVuY3Rpb24gc2V0TmFtZXNwYWNlcyhuYW1lc3BhY2VzOiBzdHJpbmcgfCBzdHJpbmdbXSk6IHZvaWQge1xuICBnZXRTaGFyZWREZWJ1Z0xpYkluc3RhbmNlKCkuZW5hYmxlKHRvQXJyYXkobmFtZXNwYWNlcykuam9pbihOQU1FU1BBQ0VfU0VQQVJBVE9SKSk7XG59XG5cbmZ1bmN0aW9uIHRvQXJyYXkobmFtZXNwYWNlczogc3RyaW5nIHwgc3RyaW5nW10pOiBzdHJpbmdbXSB7XG4gIHJldHVybiB0eXBlb2YgbmFtZXNwYWNlcyA9PT0gJ3N0cmluZycgPyBuYW1lc3BhY2VzLnNwbGl0KE5BTUVTUEFDRV9TRVBBUkFUT1IpLmZpbHRlcihCb29sZWFuKSA6IG5hbWVzcGFjZXMuZmxhdE1hcCgobmFtZXNwYWNlKSA9PiB0b0FycmF5KG5hbWVzcGFjZSkpO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVFBLG1CQUFrQjtBQUlsQixtQkFHTztBQUNQLHFCQUF3QjtBQUN4QixrQ0FBc0M7QUFFdEMsTUFBTSxzQkFBc0I7QUFDNUIsTUFBTSwyQkFBMkI7QUF1RDFCLFNBQVMseUJBQStCO0FBQzdDLG1CQUFpQixDQUFDLHVCQUFRLGdCQUFnQixHQUFHLHVCQUFRLGNBQWMsSUFBSSxDQUFDO0FBQzFFO0FBT08sU0FBUyxxQkFBc0M7QUFDcEQsU0FBTztBQUFBLElBQ0wsU0FBUztBQUFBLElBQ1QsUUFBUTtBQUFBLElBQ1IsS0FBSztBQUFBLElBQ0wsS0FBSztBQUFBLEVBQ1A7QUFDRjtBQVNPLFNBQVMsWUFBWSxXQUFtQixlQUFlLEdBQWE7QUFDekUsUUFBTSxNQUFNLEdBQUcsU0FBUyxJQUFJLE9BQU8sWUFBWSxDQUFDO0FBQ2hELFFBQU0sbUJBQWUsbURBQXNCLGFBQWEsb0JBQUksSUFBc0IsQ0FBQyxFQUFFO0FBQ3JGLE1BQUksYUFBYSxhQUFhLElBQUksR0FBRztBQUNyQyxNQUFJLENBQUMsWUFBWTtBQUNmLGlCQUFhLDBCQUEwQixFQUFFLFNBQVM7QUFDbEQsZUFBVyxNQUFNLENBQUMsWUFBb0IsZUFBZ0M7QUFDcEUsb0JBQWM7QUFBQSxRQUNaO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsTUFDRixDQUFDO0FBQUEsSUFDSDtBQUVBLGlCQUFhLElBQUksS0FBSyxVQUFVO0FBQUEsRUFDbEM7QUFFQSxTQUFPO0FBQ1Q7QUFRTyxTQUFTLGVBQWUsV0FBNkI7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
223
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kZWJ1Zy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29udGFpbnMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIGRlYnVnZ2luZy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IERlYnVnZ2VyIH0gZnJvbSAnZGVidWcnO1xuXG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuXG5pbXBvcnQgdHlwZSB7IERlYnVnQ29udHJvbGxlciB9IGZyb20gJy4vZGVidWctY29udHJvbGxlci50cyc7XG5cbmltcG9ydCB7XG4gIEN1c3RvbVN0YWNrVHJhY2VFcnJvcixcbiAgZ2V0U3RhY2tUcmFjZVxufSBmcm9tICcuL2Vycm9yLnRzJztcbmltcG9ydCB7IExpYnJhcnkgfSBmcm9tICcuL2xpYnJhcnkudHMnO1xuaW1wb3J0IHsgZ2V0VHlwZXNjcmlwdExpYlN0YXRlIH0gZnJvbSAnLi90eXBlc2NyaXB0LWxpYi1zdGF0ZS50cyc7XG5cbi8qKlxuICogVGhlIGFsaWFzaW5nIGRlYnVnZ2VyJ3Mgb3duIGZyYW1lIGJldHdlZW4gdGhlIGNhbGxlciBhbmQgdGhlIGBkZWJ1Z2AgcGFja2FnZTogdGhlIGBhcHBseWAgdHJhcCBvZiBpdHMgcHJveHkuXG4gKi9cbmNvbnN0IEFMSUFTX0ZSQU1FU19UT19TS0lQID0gMTtcbmNvbnN0IE5BTUVTUEFDRV9TRVBBUkFUT1IgPSAnLCc7XG5jb25zdCBORUdBVEVEX05BTUVTUEFDRV9QUkVGSVggPSAnLSc7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIHByaW50V2l0aFN0YWNrVHJhY2V9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFByaW50V2l0aFN0YWNrVHJhY2VQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGFyZ3VtZW50cyB0byBwcmludC5cbiAgICovXG4gIHJlYWRvbmx5ICRhcmd1bWVudHM6IHVua25vd25bXTtcblxuICAvKipcbiAgICogVGhlIGRlYnVnZ2VyIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVidWdnZXJJbnN0YW5jZTogRGVidWdnZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBtZXNzYWdlIHRvIHByaW50LlxuICAgKi9cbiAgcmVhZG9ubHkgbWVzc2FnZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc3RhY2sgdHJhY2UgdG8gcHJpbnQuXG4gICAqL1xuICByZWFkb25seSBzdGFja1RyYWNlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGxvZ1dpdGhDYWxsZXJ9LlxuICovXG5pbnRlcmZhY2UgTG9nV2l0aENhbGxlclBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgYXJndW1lbnRzIHRvIHByaW50LlxuICAgKi9cbiAgcmVhZG9ubHkgJGFyZ3VtZW50czogdW5rbm93bltdO1xuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIGZyYW1lcyB0byBza2lwIGluIHRoZSBzdGFjayB0cmFjZS5cbiAgICovXG4gIHJlYWRvbmx5IGZyYW1lc1RvU2tpcDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgbWVzc2FnZSB0byBwcmludC5cbiAgICovXG4gIHJlYWRvbmx5IG1lc3NhZ2U6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWVzcGFjZSBmb3IgdGhlIGRlYnVnZ2VyIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZXNwYWNlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogRW5hYmxlcyB0aGUgZGVidWdnZXJzIGZvciB0aGUgbGlicmFyeSAodW5kZXIgaXRzIGRlYnVnIG5hbWVzcGFjZSwgc2VlIGBMaWJyYXJ5LmRlYnVnTmFtZXNwYWNlYCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbmFibGVMaWJyYXJ5RGVidWdnZXJzKCk6IHZvaWQge1xuICBlbmFibGVOYW1lc3BhY2VzKFtMaWJyYXJ5LmRlYnVnTmFtZXNwYWNlLCBgJHtMaWJyYXJ5LmRlYnVnTmFtZXNwYWNlfToqYF0pO1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBkZWJ1ZyBjb250cm9sbGVyLlxuICpcbiAqIEByZXR1cm5zIEEgZGVidWcgY29udHJvbGxlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldERlYnVnQ29udHJvbGxlcigpOiBEZWJ1Z0NvbnRyb2xsZXIge1xuICByZXR1cm4ge1xuICAgIGRpc2FibGU6IGRpc2FibGVOYW1lc3BhY2VzLFxuICAgIGVuYWJsZTogZW5hYmxlTmFtZXNwYWNlcyxcbiAgICBnZXQ6IGdldE5hbWVzcGFjZXMsXG4gICAgc2V0OiBzZXROYW1lc3BhY2VzXG4gIH07XG59XG5cbi8qKlxuICogUmV0dXJucyBhIGRlYnVnZ2VyIGluc3RhbmNlIHdpdGggYSBsb2cgZnVuY3Rpb24gdGhhdCBpbmNsdWRlcyB0aGUgY2FsbGVyJ3MgZmlsZSBuYW1lIGFuZCBsaW5lIG51bWJlci5cbiAqXG4gKiBAcGFyYW0gbmFtZXNwYWNlIC0gVGhlIG5hbWVzcGFjZSBmb3IgdGhlIGRlYnVnZ2VyIGluc3RhbmNlLlxuICogQHBhcmFtIGZyYW1lc1RvU2tpcCAtIFRoZSBudW1iZXIgb2YgZnJhbWVzIHRvIHNraXAgaW4gdGhlIHN0YWNrIHRyYWNlLlxuICogQHJldHVybnMgQSBkZWJ1Z2dlciBpbnN0YW5jZSB3aXRoIGEgbG9nIGZ1bmN0aW9uIHRoYXQgaW5jbHVkZXMgdGhlIGNhbGxlcidzIGZpbGUgbmFtZSBhbmQgbGluZSBudW1iZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWJ1Z2dlcihuYW1lc3BhY2U6IHN0cmluZywgZnJhbWVzVG9Ta2lwID0gMCk6IERlYnVnZ2VyIHtcbiAgY29uc3Qga2V5ID0gYCR7bmFtZXNwYWNlfToke1N0cmluZyhmcmFtZXNUb1NraXApfWA7XG4gIGNvbnN0IGRlYnVnZ2Vyc01hcCA9IGdldFR5cGVzY3JpcHRMaWJTdGF0ZSgnZGVidWdnZXJzJywgbmV3IE1hcDxzdHJpbmcsIERlYnVnZ2VyPigpKS52YWx1ZTtcbiAgbGV0IGRlYnVnZ2VyRXggPSBkZWJ1Z2dlcnNNYXAuZ2V0KGtleSk7XG4gIGlmICghZGVidWdnZXJFeCkge1xuICAgIGRlYnVnZ2VyRXggPSBnZXRTaGFyZWREZWJ1Z0xpYkluc3RhbmNlKCkobmFtZXNwYWNlKTtcbiAgICBkZWJ1Z2dlckV4LmxvZyA9IChtZXNzYWdlOiBzdHJpbmcsIC4uLiRhcmd1bWVudHM6IHVua25vd25bXSk6IHZvaWQgPT4ge1xuICAgICAgbG9nV2l0aENhbGxlcih7XG4gICAgICAgICRhcmd1bWVudHMsXG4gICAgICAgIGZyYW1lc1RvU2tpcCxcbiAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgbmFtZXNwYWNlXG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgZGVidWdnZXJzTWFwLnNldChrZXksIGRlYnVnZ2VyRXgpO1xuICB9XG5cbiAgcmV0dXJuIGRlYnVnZ2VyRXg7XG59XG5cbi8qKlxuICogUmV0dXJucyBhIGRlYnVnZ2VyIGluc3RhbmNlIGZvciB0aGUgbGlicmFyeSAodW5kZXIgaXRzIGRlYnVnIG5hbWVzcGFjZSwgc2VlIGBMaWJyYXJ5LmRlYnVnTmFtZXNwYWNlYCkuXG4gKlxuICogV2hlbiB0aGUgaG9zdCBzdXBwbGllZCBgTGlicmFyeS5kZWJ1Z05hbWVzcGFjZUFsaWFzZXNgLCBhIGZpbHRlciB3cml0dGVuIGZvciBhbiBhbGlhcyBzdGlsbCBzaG93cyB0aGUgbWVzc2FnZXMuXG4gKiBFYWNoIG1lc3NhZ2UgcHJpbnRzIE9OQ0U6IHVuZGVyIHRoZSBjdXJyZW50IG5hbWVzcGFjZSB3aGVuIGEgZmlsdGVyIGVuYWJsZXMgaXQsIG90aGVyd2lzZSB1bmRlciB0aGUgZmlyc3QgYWxpYXMgYVxuICogZmlsdGVyIGVuYWJsZXMuIFByaW50aW5nIHVuZGVyIGV2ZXJ5IGVuYWJsZWQgb25lIHdvdWxkIGRvdWJsZSBlYWNoIG1lc3NhZ2UgdW5kZXIgdGhlIG1vc3QgY29tbW9uIGZpbHRlciBvZiBhbGwsXG4gKiBgPHByZWZpeD4qYCwgd2hpY2ggZW5hYmxlcyB0aGVtIGFsbC5cbiAqXG4gKiBAcGFyYW0gbmFtZXNwYWNlIC0gVGhlIG5hbWVzcGFjZSBmb3IgdGhlIGRlYnVnZ2VyIGluc3RhbmNlLlxuICogQHJldHVybnMgQSBkZWJ1Z2dlciBpbnN0YW5jZSBmb3IgdGhlIGxpYnJhcnkgKHVuZGVyIGl0cyBkZWJ1ZyBuYW1lc3BhY2UsIHNlZSBgTGlicmFyeS5kZWJ1Z05hbWVzcGFjZWApLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TGliRGVidWdnZXIobmFtZXNwYWNlOiBzdHJpbmcpOiBEZWJ1Z2dlciB7XG4gIGNvbnN0IGFsaWFzZXMgPSBMaWJyYXJ5LmRlYnVnTmFtZXNwYWNlQWxpYXNlcztcbiAgaWYgKGFsaWFzZXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIGdldERlYnVnZ2VyKGAke0xpYnJhcnkuZGVidWdQcmVmaXhOYW1lc3BhY2V9JHtMaWJyYXJ5LmRlYnVnTmFtZXNwYWNlfToke25hbWVzcGFjZX1gKTtcbiAgfVxuXG4gIC8vIEV2ZXJ5IGRlYnVnZ2VyIGNvbWVzIGZyb20gdGhlIHNoYXJlZCBjYWNoZSBgZ2V0RGVidWdnZXJgIGtlZXBzLCBzbyBvbmx5IHRoZSBjaGVhcCBwcm94eSBpcyBuZXcgb24gZWFjaCBjYWxsLCBhbmQgYVxuICAvLyBzcHkgaW5zdGFsbGVkIG9uIG9uZSBjYWxsJ3MgYGxvZ2AgaXMgdGhlIG9uZSB0aGUgbmV4dCBjYWxsIHJlYWNoZXMuXG4gIGNvbnN0IGN1cnJlbnREZWJ1Z2dlciA9IGdldERlYnVnZ2VyKGAke0xpYnJhcnkuZGVidWdQcmVmaXhOYW1lc3BhY2V9JHtMaWJyYXJ5LmRlYnVnTmFtZXNwYWNlfToke25hbWVzcGFjZX1gLCBBTElBU19GUkFNRVNfVE9fU0tJUCk7XG4gIGNvbnN0IGFsaWFzRGVidWdnZXJzID0gYWxpYXNlcy5tYXAoKGFsaWFzKSA9PiBnZXREZWJ1Z2dlcihgJHtMaWJyYXJ5LmRlYnVnUHJlZml4TmFtZXNwYWNlfSR7YWxpYXN9OiR7bmFtZXNwYWNlfWAsIEFMSUFTX0ZSQU1FU19UT19TS0lQKSk7XG4gIGNvbnN0IGFsbERlYnVnZ2VycyA9IFtjdXJyZW50RGVidWdnZXIsIC4uLmFsaWFzRGVidWdnZXJzXTtcbiAgcmV0dXJuIG5ldyBQcm94eShjdXJyZW50RGVidWdnZXIsIHtcbiAgICBhcHBseShfdGFyZ2V0LCBfdGhpc0FyZ3VtZW50LCAkYXJndW1lbnRzOiBQYXJhbWV0ZXJzPERlYnVnZ2VyPik6IHZvaWQge1xuICAgICAgYWxsRGVidWdnZXJzLmZpbmQoKGRlYnVnZ2VySW5zdGFuY2UpID0+IGRlYnVnZ2VySW5zdGFuY2UuZW5hYmxlZCk/LiguLi4kYXJndW1lbnRzKTtcbiAgICB9LFxuICAgIGdldCh0YXJnZXQsIHByb3BlcnR5LCByZWNlaXZlcik6IHVua25vd24ge1xuICAgICAgaWYgKHByb3BlcnR5ID09PSAnZW5hYmxlZCcpIHtcbiAgICAgICAgcmV0dXJuIGFsbERlYnVnZ2Vycy5zb21lKChkZWJ1Z2dlckluc3RhbmNlKSA9PiBkZWJ1Z2dlckluc3RhbmNlLmVuYWJsZWQpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB2YWx1ZTogdW5rbm93biA9IFJlZmxlY3QuZ2V0KHRhcmdldCwgcHJvcGVydHksIHJlY2VpdmVyKTtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gIH0pO1xufVxuXG4vKipcbiAqIFByaW50cyBhIG1lc3NhZ2Ugd2l0aCBhIHN0YWNrIHRyYWNlLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgcHJpbnRpbmcgdGhlIG1lc3NhZ2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcmludFdpdGhTdGFja1RyYWNlKHBhcmFtczogUHJpbnRXaXRoU3RhY2tUcmFjZVBhcmFtcyk6IHZvaWQge1xuICBjb25zdCB7XG4gICAgJGFyZ3VtZW50cyxcbiAgICBkZWJ1Z2dlckluc3RhbmNlLFxuICAgIG1lc3NhZ2UsXG4gICAgc3RhY2tUcmFjZVxuICB9ID0gcGFyYW1zO1xuICBpZiAoIUxpYnJhcnkuc2hvdWxkUHJpbnRTdGFja1RyYWNlKSB7XG4gICAgZGVidWdnZXJJbnN0YW5jZShtZXNzYWdlLCAuLi4kYXJndW1lbnRzKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBkZWJ1Z2dlckluc3RhbmNlKG1lc3NhZ2UsIC4uLiRhcmd1bWVudHMsICdcXG5cXG4tLS1cXG5Db250ZXh0IHN0YWNrIHRyYWNlOlxcbicsIG1ha2VTdGFja1RyYWNlRXJyb3Ioc3RhY2tUcmFjZSkpO1xufVxuXG4vKipcbiAqIFNob3dzIGFuIGluaXRpYWwgZGVidWcgbWVzc2FnZS5cbiAqXG4gKiBAcGFyYW0gcGx1Z2luSWQgLSBUaGUgcGx1Z2luIElELlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2hvd0luaXRpYWxEZWJ1Z01lc3NhZ2UocGx1Z2luSWQ6IHN0cmluZyk6IHZvaWQge1xuICBjb25zdCBpc0VuYWJsZWQgPSBnZXRTaGFyZWREZWJ1Z0xpYkluc3RhbmNlKCkuZW5hYmxlZChwbHVnaW5JZCk7XG4gIGNvbnN0IHN0YXRlID0gaXNFbmFibGVkID8gJ2VuYWJsZWQnIDogJ2Rpc2FibGVkJztcbiAgY29uc3QgY2hhbmdlQWN0aW9uID0gaXNFbmFibGVkID8gJ2Rpc2FibGUnIDogJ2VuYWJsZSc7XG4gIGNvbnN0IG5hbWVzcGFjZXMgPSBnZXROYW1lc3BhY2VzKCk7XG4gIHNldE5hbWVzcGFjZXMocGx1Z2luSWQpO1xuICBnZXREZWJ1Z2dlcihwbHVnaW5JZCkoXG4gICAgYERlYnVnIG1lc3NhZ2VzIGZvciBwbHVnaW4gJHtwbHVnaW5JZH0gYXJlICR7c3RhdGV9LiR7Zm9ybWF0R3VpZGVSZWZlcmVuY2UoYCBob3cgdG8gJHtjaGFuZ2VBY3Rpb259IHRoZW1gKX1gXG4gICk7XG4gIHNldE5hbWVzcGFjZXMobmFtZXNwYWNlcyk7XG59XG5cbmZ1bmN0aW9uIGRpc2FibGVOYW1lc3BhY2VzKG5hbWVzcGFjZXM6IHN0cmluZyB8IHN0cmluZ1tdKTogdm9pZCB7XG4gIGNvbnN0IHNldCA9IG5ldyBTZXQoZ2V0TmFtZXNwYWNlcygpKTtcbiAgZm9yIChjb25zdCBuYW1lc3BhY2Ugb2YgdG9BcnJheShuYW1lc3BhY2VzKSkge1xuICAgIGlmIChuYW1lc3BhY2Uuc3RhcnRzV2l0aChORUdBVEVEX05BTUVTUEFDRV9QUkVGSVgpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY29uc3QgbmVnYXRlZE5hbWVzcGFjZSA9IE5FR0FURURfTkFNRVNQQUNFX1BSRUZJWCArIG5hbWVzcGFjZTtcbiAgICBzZXQuZGVsZXRlKG5hbWVzcGFjZSk7XG4gICAgc2V0LmFkZChuZWdhdGVkTmFtZXNwYWNlKTtcbiAgfVxuICBzZXROYW1lc3BhY2VzKFsuLi5zZXRdKTtcbn1cblxuZnVuY3Rpb24gZW5hYmxlTmFtZXNwYWNlcyhuYW1lc3BhY2VzOiBzdHJpbmcgfCBzdHJpbmdbXSk6IHZvaWQge1xuICBjb25zdCBzZXQgPSBuZXcgU2V0KGdldE5hbWVzcGFjZXMoKSk7XG4gIGZvciAoY29uc3QgbmFtZXNwYWNlIG9mIHRvQXJyYXkobmFtZXNwYWNlcykpIHtcbiAgICBpZiAoIW5hbWVzcGFjZS5zdGFydHNXaXRoKE5FR0FURURfTkFNRVNQQUNFX1BSRUZJWCkpIHtcbiAgICAgIGNvbnN0IG5lZ2F0ZWROYW1lc3BhY2UgPSBORUdBVEVEX05BTUVTUEFDRV9QUkVGSVggKyBuYW1lc3BhY2U7XG4gICAgICBzZXQuZGVsZXRlKG5lZ2F0ZWROYW1lc3BhY2UpO1xuICAgIH1cbiAgICBzZXQuYWRkKG5hbWVzcGFjZSk7XG4gIH1cbiAgc2V0TmFtZXNwYWNlcyhbLi4uc2V0XSk7XG59XG5cbmZ1bmN0aW9uIGZvcm1hdEd1aWRlUmVmZXJlbmNlKHN1ZmZpeDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIExpYnJhcnkuZGVidWdHdWlkZVVybCA/IGAgU2VlICR7TGlicmFyeS5kZWJ1Z0d1aWRlVXJsfSR7c3VmZml4fS5gIDogJyc7XG59XG5cbmZ1bmN0aW9uIGdldE5hbWVzcGFjZXMoKTogc3RyaW5nW10ge1xuICByZXR1cm4gdG9BcnJheShnZXRTaGFyZWREZWJ1Z0xpYkluc3RhbmNlKCkubG9hZCgpID8/ICcnKTtcbn1cblxuZnVuY3Rpb24gZ2V0U2hhcmVkRGVidWdMaWJJbnN0YW5jZSgpOiB0eXBlb2YgZGVidWcge1xuICByZXR1cm4gZ2V0VHlwZXNjcmlwdExpYlN0YXRlKCdkZWJ1ZycsIGRlYnVnKS52YWx1ZTtcbn1cblxuZnVuY3Rpb24gbG9nV2l0aENhbGxlcihwYXJhbXM6IExvZ1dpdGhDYWxsZXJQYXJhbXMpOiB2b2lkIHtcbiAgY29uc3Qge1xuICAgICRhcmd1bWVudHMsXG4gICAgZnJhbWVzVG9Ta2lwLFxuICAgIG1lc3NhZ2UsXG4gICAgbmFtZXNwYWNlXG4gIH0gPSBwYXJhbXM7XG4gIGlmICghZ2V0U2hhcmVkRGVidWdMaWJJbnN0YW5jZSgpLmVuYWJsZWQobmFtZXNwYWNlKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmICghTGlicmFyeS5zaG91bGRQcmludFN0YWNrVHJhY2UpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZSAtLSBWYWxpZCB1c2FnZS5cbiAgICBjb25zb2xlLmRlYnVnKG1lc3NhZ2UsIC4uLiRhcmd1bWVudHMpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgY2FsbGVyIGlzIDMgZnJhbWVzIGFib3ZlIHRoaXMgb25lLCBiZWNhdXNlIHRoZSBjYWxsIHN0YWNrIGlzIGFzIGZvbGxvd3M6XG4gICAqXG4gICAqIDA6IGxvZ1dpdGhDYWxsZXJcbiAgICogMTogZGVidWdJbnN0YW5jZS5sb2dcbiAgICogMjogZGVidWdcbiAgICogMzogZnVuY3Rpb25OYW1lICh0aGUgY2FsbGVyKVxuICAgKlxuICAgKiBgZ2V0U3RhY2tUcmFjZWAgZHJvcHMgaXRzIG93biBmcmFtZSBhbmQsIG9uIGFuIGVuZ2luZSB0aGF0IHdyaXRlcyBvbmUsIHRoZSBgRXJyb3JgIGhlYWRlciBsaW5lLlxuICAgKi9cbiAgY29uc3QgQ0FMTEVSX0ZSQU1FX0lOREVYID0gMztcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZSAtLSBWYWxpZCB1c2FnZS5cbiAgY29uc29sZS5kZWJ1ZyhtZXNzYWdlLCAuLi4kYXJndW1lbnRzLCAnXFxuXFxuLS0tXFxuTG9nZ2VyIHN0YWNrIHRyYWNlOlxcbicsIG1ha2VTdGFja1RyYWNlRXJyb3IoZ2V0U3RhY2tUcmFjZShDQUxMRVJfRlJBTUVfSU5ERVggKyBmcmFtZXNUb1NraXApKSk7XG59XG5cbmZ1bmN0aW9uIG1ha2VTdGFja1RyYWNlRXJyb3Ioc3RhY2tUcmFjZTogc3RyaW5nKTogQ3VzdG9tU3RhY2tUcmFjZUVycm9yIHtcbiAgcmV0dXJuIG5ldyBDdXN0b21TdGFja1RyYWNlRXJyb3Ioe1xuICAgIGNhdXNlOiB1bmRlZmluZWQsXG4gICAgbWVzc2FnZTogYERlYnVnIG1vZGU6IGludGVudGlvbmFsIHBsYWNlaG9sZGVyIGVycm9yLiR7Zm9ybWF0R3VpZGVSZWZlcmVuY2UoJycpfWAsXG4gICAgc3RhY2tUcmFjZVxuICB9KTtcbn1cblxuLyoqXG4gKiBTZXRzIHRoZSBuYW1lc3BhY2VzIHRvIGVuYWJsZS5cbiAqXG4gKiBAcGFyYW0gbmFtZXNwYWNlcyAtIFRoZSBuYW1lc3BhY2VzIHRvIGVuYWJsZS5cbiAqL1xuZnVuY3Rpb24gc2V0TmFtZXNwYWNlcyhuYW1lc3BhY2VzOiBzdHJpbmcgfCBzdHJpbmdbXSk6IHZvaWQge1xuICBnZXRTaGFyZWREZWJ1Z0xpYkluc3RhbmNlKCkuZW5hYmxlKHRvQXJyYXkobmFtZXNwYWNlcykuam9pbihOQU1FU1BBQ0VfU0VQQVJBVE9SKSk7XG59XG5cbmZ1bmN0aW9uIHRvQXJyYXkobmFtZXNwYWNlczogc3RyaW5nIHwgc3RyaW5nW10pOiBzdHJpbmdbXSB7XG4gIHJldHVybiB0eXBlb2YgbmFtZXNwYWNlcyA9PT0gJ3N0cmluZycgPyBuYW1lc3BhY2VzLnNwbGl0KE5BTUVTUEFDRV9TRVBBUkFUT1IpLmZpbHRlcihCb29sZWFuKSA6IG5hbWVzcGFjZXMuZmxhdE1hcCgobmFtZXNwYWNlKSA9PiB0b0FycmF5KG5hbWVzcGFjZSkpO1xufVxuIl0sIm1hcHBpbmdz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
@@ -48,6 +48,11 @@ export declare function getDebugger(namespace: string, framesToSkip?: number): D
48
48
  /**
49
49
  * Returns a debugger instance for the library (under its debug namespace, see `Library.debugNamespace`).
50
50
  *
51
+ * When the host supplied `Library.debugNamespaceAliases`, a filter written for an alias still shows the messages.
52
+ * Each message prints ONCE: under the current namespace when a filter enables it, otherwise under the first alias a
53
+ * filter enables. Printing under every enabled one would double each message under the most common filter of all,
54
+ * `<prefix>*`, which enables them all.
55
+ *
51
56
  * @param namespace - The namespace for the debugger instance.
52
57
  * @returns A debugger instance for the library (under its debug namespace, see `Library.debugNamespace`).
53
58
  */
@@ -126,7 +126,11 @@ function emitAsyncErrorEvent(asyncError, shouldIgnore = false) {
126
126
  errorAsyncEvents.trigger("asyncError", asyncError);
127
127
  }
128
128
  function errorToString(error) {
129
- return getErrorLines(error).map((line) => line.text).join("\n");
129
+ try {
130
+ return getErrorLines(error).map((line) => line.text).join("\n");
131
+ } catch (formattingError) {
132
+ return getFallbackErrorString(error, formattingError);
133
+ }
130
134
  }
131
135
  function getStackTrace(framesToSkip = 0) {
132
136
  const GET_STACK_TRACE_FRAME_COUNT = 1;
@@ -189,14 +193,21 @@ function getErrorLines(error) {
189
193
  if (error.cause !== void 0) {
190
194
  lines.push(...generateNestedErrorLines(error.cause, "Caused by:"));
191
195
  }
192
- if (error instanceof AggregateError) {
193
- const aggregatedErrors = error.errors;
196
+ const aggregatedErrors = error instanceof AggregateError ? error.errors : void 0;
197
+ if (Array.isArray(aggregatedErrors)) {
194
198
  for (const [index, aggregatedError] of aggregatedErrors.entries()) {
195
199
  lines.push(...generateNestedErrorLines(aggregatedError, `Aggregated error #${String(index + 1)}:`));
196
200
  }
197
201
  }
198
202
  return lines;
199
203
  }
204
+ function getFallbackErrorString(error, formattingError) {
205
+ const errorString = safeToString(() => String(error));
206
+ const stack = safeToString(() => error instanceof Error ? error.stack ?? "" : "");
207
+ const lines = stack.startsWith(errorString) ? [stack] : [errorString, stack];
208
+ lines.push(`(errorToString could not format this error: ${safeToString(() => String(formattingError))})`);
209
+ return lines.filter((line) => line !== "").join("\n");
210
+ }
200
211
  function getOwnErrorLines(error) {
201
212
  const headerLines = getErrorHeader(error).split("\n").map((text) => toTitleLine(text));
202
213
  if (error.stack === void 0) {
@@ -215,6 +226,13 @@ function hasStackHeader() {
215
226
  const firstLine = new Error(STACK_HEADER_PROBE_MESSAGE).stack?.split("\n", 1)[0];
216
227
  return firstLine === `Error: ${STACK_HEADER_PROBE_MESSAGE}`;
217
228
  }
229
+ function safeToString(toString) {
230
+ try {
231
+ return toString();
232
+ } catch {
233
+ return "<unprintable>";
234
+ }
235
+ }
218
236
  function toTitleLine(text) {
219
237
  return { isFrame: false, text };
220
238
  }
@@ -236,4 +254,4 @@ function toTitleLine(text) {
236
254
  stopCollectingUnhandledAsyncErrors,
237
255
  throwExpression
238
256
  });
239
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2Vycm9yLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29udGFpbnMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIGVycm9yIGhhbmRsaW5nLlxuICovXG5cbmltcG9ydCB7IEFzeW5jRXZlbnRzIH0gZnJvbSAnLi9hc3luYy1ldmVudHMudHMnO1xuaW1wb3J0IHtcbiAgQ2FsbGJhY2tEaXNwb3NhYmxlLFxuICBNdWx0aXBsZURpc3Bvc2VCZWhhdmlvclxufSBmcm9tICcuL2Rpc3Bvc2FibGUudHMnO1xuaW1wb3J0IHsgZW5zdXJlTm9uTnVsbGFibGUgfSBmcm9tICcuL3R5cGUtZ3VhcmRzLnRzJztcblxuaW50ZXJmYWNlIEVycm9yQXN5bmNFdmVudE1hcCB7XG4gIGFzeW5jRXJyb3I6IFtlcnJvcjogdW5rbm93bl07XG59XG5cbmNvbnN0IGVycm9yQXN5bmNFdmVudHMgPSBuZXcgQXN5bmNFdmVudHM8RXJyb3JBc3luY0V2ZW50TWFwPigpO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vbm8tdG9wLWxldmVsLXNpZGUtZWZmZWN0cyAtLSBJbnN0YWxsaW5nIHRoZSBkZWZhdWx0IGhhbmRsZXIgb24gaW1wb3J0IGlzIHdoYXQgdGhpcyBtb2R1bGUgaXMgZm9yLiBEZWZlcnJpbmcgaXQgYmVoaW5kIGEgY2FsbCB3b3VsZCBtZWFuIGV2ZXJ5IGNvbnN1bWVyIGhhZCB0byByZW1lbWJlciB0byBtYWtlIHRoYXQgY2FsbCBiZWZvcmUgdGhlIGZpcnN0IGFzeW5jIGVycm9yLCB3aGljaCBpcyBwcmVjaXNlbHkgdGhlIG1vbWVudCB0aGUgaGFuZGxlciBuZWVkcyB0byBhbHJlYWR5IGV4aXN0LlxuZXJyb3JBc3luY0V2ZW50cy5vbignYXN5bmNFcnJvcicsIGhhbmRsZUFzeW5jRXJyb3IpO1xuXG5pbnRlcmZhY2UgTW9kdWxlU3RhdGUge1xuICAvKipcbiAgICogVGhlIG5lc3RpbmcgZGVwdGggb2YgYWN0aXZlIHtAbGluayBzdGFydEFzeW5jRXJyb3JJZ25vcmVDb250ZXh0fSBzY29wZXMuIFdoaWxlIGdyZWF0ZXIgdGhhbiBgMGAsIGFuXG4gICAqIGFzeW5jIGVycm9yIGVtaXR0ZWQgKG9yIGEgZmlyZS1hbmQtZm9yZ2V0IG9wZXJhdGlvbiB3aG9zZSByZWplY3Rpb24gd2FzIGNhcHR1cmVkKSB3aXRoaW4gdGhlIHNjb3BlIGlzXG4gICAqIHRyZWF0ZWQgYXMgZXhwZWN0ZWQgYW5kIG5vdCBjb2xsZWN0ZWQgYXMgdW5oYW5kbGVkLlxuICAgKi9cbiAgYXN5bmNFcnJvcklnbm9yZUNvbnRleHREZXB0aDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgYnVmZmVyIHRoYXQgY29sbGVjdHMgdW5oYW5kbGVkIGFzeW5jIGVycm9ycyB3aGlsZSBhIGNvbGxlY3Rpb24gd2luZG93IGlzIG9wZW4sIG9yIGBudWxsYCB3aGVuXG4gICAqIG5vIHdpbmRvdyBpcyBvcGVuICh0aGUgZGVmYXVsdCBpbiBwcm9kdWN0aW9uKS4gT3BlbmVkIGJ5IHtAbGluayBzdGFydENvbGxlY3RpbmdVbmhhbmRsZWRBc3luY0Vycm9yc30sXG4gICAqIGVtcHRpZWQgd2l0aG91dCBjbG9zaW5nIGJ5IHtAbGluayBkcmFpbkNvbGxlY3RlZFVuaGFuZGxlZEFzeW5jRXJyb3JzfSwgYW5kIGRyYWluZWQtYW5kLWNsb3NlZCBieVxuICAgKiB7QGxpbmsgc3RvcENvbGxlY3RpbmdVbmhhbmRsZWRBc3luY0Vycm9yc30gXHUyMDE0IHVzZWQgYnkgdGhlIHRlc3QgaGFybmVzcyB0byBmYWlsIGEgdGVzdCB0aGF0IHN3YWxsb3dlZFxuICAgKiBhbiBhc3luYyBlcnJvci5cbiAgICovXG4gIGNvbGxlY3RlZFVuaGFuZGxlZEFzeW5jRXJyb3JzOiBudWxsIHwgdW5rbm93bltdO1xufVxuXG4vKipcbk1vZHVsZS1sZXZlbCBtdXRhYmxlIHN0YXRlLCBoZWxkIGluIG9uZSBvYmplY3Qgc28gZWFjaCBtdXRhdGlvbiBuYW1lcyBpdCBleHBsaWNpdGx5LlxuICovXG5jb25zdCBtb2R1bGVTdGF0ZTogTW9kdWxlU3RhdGUgPSB7XG4gIGFzeW5jRXJyb3JJZ25vcmVDb250ZXh0RGVwdGg6IDAsXG4gIGNvbGxlY3RlZFVuaGFuZGxlZEFzeW5jRXJyb3JzOiBudWxsXG59O1xuLyoqXG4gKiBBIG1lc3NhZ2Ugb2YgdGhlIEFzeW5jV3JhcHBlckVycm9yLlxuICovXG5leHBvcnQgY29uc3QgQVNZTkNfV1JBUFBFUl9FUlJPUl9NRVNTQUdFID0gJ0FuIHVuaGFuZGxlZCBlcnJvciBvY2N1cnJlZCBleGVjdXRpbmcgYXN5bmMgb3BlcmF0aW9uJztcblxuY29uc3QgU1RBQ0tfVFJBQ0VfUFJFRklYID0gJyAgICBhdCc7XG5cbmNvbnN0IEVSUk9SX0hFQURFUl9SRUdfRVhQID0gL15cXHcqRXJyb3IoPzo6IHwkKS87XG5cbmNvbnN0IFNUQUNLX0hFQURFUl9QUk9CRV9NRVNTQUdFID0gJ3N0YWNrIGhlYWRlciBwcm9iZSc7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3IgdGhlIHtAbGluayBDdXN0b21TdGFja1RyYWNlRXJyb3J9IGNvbnN0cnVjdG9yLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEN1c3RvbVN0YWNrVHJhY2VFcnJvckNvbnN0cnVjdG9yUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBjYXVzZSBvZiB0aGUgZXJyb3IuXG4gICAqL1xuICByZWFkb25seSBjYXVzZTogdW5rbm93bjtcblxuICAvKipcbiAgICogVGhlIG1lc3NhZ2Ugb2YgdGhlIGVycm9yLlxuICAgKi9cbiAgcmVhZG9ubHkgbWVzc2FnZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc3RhY2sgdHJhY2Ugb2YgdGhlIGVycm9yLlxuICAgKi9cbiAgcmVhZG9ubHkgc3RhY2tUcmFjZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIE9uZSBsaW5lIG9mIGFuIGVycm9yJ3Mgc3RyaW5nIGZvcm0sIHRhZ2dlZCB3aXRoIHdoZXRoZXIgaXQgaXMgYSBzdGFjayBmcmFtZS5cbiAqXG4gKiBBIHRpdGxlIChhbiBlcnJvciBoZWFkZXIsIGEgYENhdXNlZCBieTpgIG1hcmtlciwgYSBsaW5lIG9mIGEgbXVsdGktbGluZSBtZXNzYWdlKSBpcyB3cmFwcGVkIGludG9cbiAqIHtAbGluayBnZW5lcmF0ZVN0YWNrVHJhY2VMaW5lfSdzIGZvcm0gd2hlbiB0aGUgZXJyb3IgaXQgYmVsb25ncyB0byBpcyBuZXN0ZWQ7IGEgZnJhbWUgaXMga2VwdCB2ZXJiYXRpbS5cbiAqL1xuaW50ZXJmYWNlIEVycm9yTGluZSB7XG4gIHJlYWRvbmx5IGlzRnJhbWU6IGJvb2xlYW47XG4gIHJlYWRvbmx5IHRleHQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBBbiBlcnJvciB0aGF0IHdyYXBzIGFuIGVycm9yIHdpdGggYSBjdXN0b20gc3RhY2sgdHJhY2UuXG4gKi9cbmV4cG9ydCBjbGFzcyBDdXN0b21TdGFja1RyYWNlRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IEN1c3RvbVN0YWNrVHJhY2VFcnJvci5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZXJyb3IuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IocGFyYW1zOiBDdXN0b21TdGFja1RyYWNlRXJyb3JDb25zdHJ1Y3RvclBhcmFtcykge1xuICAgIGNvbnN0IHsgY2F1c2UsIG1lc3NhZ2UsIHN0YWNrVHJhY2UgfSA9IHBhcmFtcztcbiAgICBzdXBlcihtZXNzYWdlLCB7IGNhdXNlIH0pO1xuICAgIHRoaXMubmFtZSA9ICdDdXN0b21TdGFja1RyYWNlRXJyb3InO1xuXG4gICAgbGV0IHJvb3RDYXVzZSA9IGNhdXNlO1xuICAgIGNvbnN0IHBhcmVudENhdXNlcyA9IG5ldyBTZXQ8Q3VzdG9tU3RhY2tUcmFjZUVycm9yPigpO1xuICAgIHdoaWxlIChyb290Q2F1c2UgaW5zdGFuY2VvZiBDdXN0b21TdGFja1RyYWNlRXJyb3IpIHtcbiAgICAgIGlmIChwYXJlbnRDYXVzZXMuaGFzKHJvb3RDYXVzZSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDaXJjdWxhciBjYXVzZSBkZXRlY3RlZCcpO1xuICAgICAgfVxuICAgICAgcGFyZW50Q2F1c2VzLmFkZChyb290Q2F1c2UpO1xuICAgICAgcm9vdENhdXNlID0gcm9vdENhdXNlLmNhdXNlO1xuICAgIH1cblxuICAgIGNvbnN0IHN0YWNrTGluZXMgPSBzdGFja1RyYWNlLnNwbGl0KCdcXG4nKTtcbiAgICBpZiAoRVJST1JfSEVBREVSX1JFR19FWFAudGVzdChlbnN1cmVOb25OdWxsYWJsZShzdGFja0xpbmVzWzBdKSkpIHtcbiAgICAgIHN0YWNrTGluZXMuc2hpZnQoKTtcbiAgICB9XG4gICAgLy8gS2VlcCB0aGUgZW5naW5lJ3Mgb3duIGAuc3RhY2tgIHNoYXBlOiBhIGhlYWRlciBvbmx5IHdoZXJlIHRoZSBlbmdpbmUgd3JpdGVzIG9uZSAoVjgpLCBmcmFtZXMgb25seSB3aGVyZSBpdCBkb2VzIG5vdCAoSmF2YVNjcmlwdENvcmUsIFNwaWRlck1vbmtleSkuXG4gICAgaWYgKGhhc1N0YWNrSGVhZGVyKCkpIHtcbiAgICAgIHN0YWNrTGluZXMudW5zaGlmdChnZXRFcnJvckhlYWRlcih0aGlzKSk7XG4gICAgfVxuICAgIHRoaXMuc3RhY2sgPSBzdGFja0xpbmVzLmpvaW4oJ1xcbicpO1xuICB9XG59XG5cbi8qKlxuICogQW4gZXJyb3IgdGhhdCB3cmFwcyBhIG5vbi1gRXJyb3JgIHZhbHVlIHRoYXQgd2FzIHRocm93biwgcHJlc2VydmluZyB0aGUgb3JpZ2luYWwgdmFsdWUgaW4gYGNhdXNlYC5cbiAqL1xuZXhwb3J0IGNsYXNzIEVycm9yV3JhcHBlciBleHRlbmRzIEVycm9yIHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgRXJyb3JXcmFwcGVyLlxuICAgKlxuICAgKiBAcGFyYW0gdGhyb3duVmFsdWUgLSBUaGUgb3JpZ2luYWwgbm9uLWBFcnJvcmAgdmFsdWUgdGhhdCB3YXMgdGhyb3duLlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKHRocm93blZhbHVlOiB1bmtub3duKSB7XG4gICAgc3VwZXIoYEEgbm9uLUVycm9yIHZhbHVlIHdhcyB0aHJvd246ICR7U3RyaW5nKHRocm93blZhbHVlKX1gLCB7IGNhdXNlOiB0aHJvd25WYWx1ZSB9KTtcbiAgICB0aGlzLm5hbWUgPSAnRXJyb3JXcmFwcGVyJztcbiAgfVxuXG4gIC8qKlxuICAgKiBOb3JtYWxpemVzIGFueSB0aHJvd24gdmFsdWUgdG8gYW4gYEVycm9yYC5cbiAgICpcbiAgICogUmV0dXJucyB0aGUgdmFsdWUgdW5jaGFuZ2VkIGlmIGl0IGlzIGFscmVhZHkgYW4gYEVycm9yYCwgb3RoZXJ3aXNlIHdyYXBzIGl0IGluIGFuIHtAbGluayBFcnJvcldyYXBwZXJ9LlxuICAgKlxuICAgKiBAcGFyYW0gdGhyb3duVmFsdWUgLSBUaGUgdGhyb3duIHZhbHVlIHRvIG5vcm1hbGl6ZS5cbiAgICogQHJldHVybnMgQW4gYEVycm9yYCBpbnN0YW5jZTogdGhlIG9yaWdpbmFsIHZhbHVlIGlmIGl0IGlzIGFscmVhZHkgYW4gYEVycm9yYCwgb3RoZXJ3aXNlIGFuIHtAbGluayBFcnJvcldyYXBwZXJ9LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBjcmVhdGUodGhyb3duVmFsdWU6IHVua25vd24pOiBFcnJvciB7XG4gICAgcmV0dXJuIHRocm93blZhbHVlIGluc3RhbmNlb2YgRXJyb3IgPyB0aHJvd25WYWx1ZSA6IG5ldyBFcnJvcldyYXBwZXIodGhyb3duVmFsdWUpO1xuICB9XG59XG5cbi8qKlxuICogQW4gZXJyb3IgdGhhdCBpcyBub3QgcHJpbnRlZCB0byB0aGUgY29uc29sZS5cbiAqL1xuZXhwb3J0IGNsYXNzIFNpbGVudEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBTaWxlbnRFcnJvci5cbiAgICpcbiAgICogQHBhcmFtIG1lc3NhZ2UgLSBUaGUgbWVzc2FnZSBvZiB0aGUgZXJyb3IuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gICAgdGhpcy5uYW1lID0gJ1NpbGVudEVycm9yJztcbiAgfVxufVxuXG4vKipcbiAqIEVtcHRpZXMgdGhlIGNvbGxlY3Rpb24gd2luZG93IG9wZW5lZCBieSB7QGxpbmsgc3RhcnRDb2xsZWN0aW5nVW5oYW5kbGVkQXN5bmNFcnJvcnN9IGFuZCByZXR1cm5zIHdoYXQgaXRcbiAqIGhlbGQsIGxlYXZpbmcgdGhlIHdpbmRvdyAqKm9wZW4qKiBzbyBlcnJvcnMgZW1pdHRlZCBhZnRlcndhcmRzIGtlZXAgYmVpbmcgY29sbGVjdGVkLlxuICpcbiAqIFRoaXMgaXMgd2hhdCB0aGUgdGVzdCBzZXR1cCdzIChgQG1uYW91bW92L3R5cGVzY3JpcHQtdGVzdC10b29sa2l0L3NldHVwYCkgYGJlZm9yZUVhY2hgIC8gYGFmdGVyRWFjaGAgdXNlLCByYXRoZXIgdGhhblxuICoge0BsaW5rIHN0b3BDb2xsZWN0aW5nVW5oYW5kbGVkQXN5bmNFcnJvcnN9OiBhbiBhc3luYyBlcnJvciBlbWl0dGVkIGluIHRoZSBnYXAgYmV0d2VlbiB0d28gdGVzdHMgKGUuZy4gYnkgYVxuICogYHNldFRpbWVvdXRgIHRoZSB0ZXN0IGxlZnQgcGVuZGluZykgd291bGQgb3RoZXJ3aXNlIGxhbmQgb24gYSBjbG9zZWQgd2luZG93IGFuZCB2YW5pc2ggdW5yZXBvcnRlZC5cbiAqXG4gKiBAcmV0dXJucyBUaGUgdW5oYW5kbGVkIGFzeW5jIGVycm9ycyBjb2xsZWN0ZWQgc28gZmFyLCBvciBhbiBlbXB0eSBhcnJheSBpZiBubyB3aW5kb3cgaXMgb3Blbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRyYWluQ29sbGVjdGVkVW5oYW5kbGVkQXN5bmNFcnJvcnMoKTogdW5rbm93bltdIHtcbiAgcmV0dXJuIG1vZHVsZVN0YXRlLmNvbGxlY3RlZFVuaGFuZGxlZEFzeW5jRXJyb3JzPy5zcGxpY2UoMCkgPz8gW107XG59XG5cbi8qKlxuICogRW1pdHMgYW4gYXN5bmNocm9ub3VzIGVycm9yIGV2ZW50LlxuICpcbiAqIFdoZW4gYSBjb2xsZWN0aW9uIHdpbmRvdyBpcyBvcGVuIChzZWUge0BsaW5rIHN0YXJ0Q29sbGVjdGluZ1VuaGFuZGxlZEFzeW5jRXJyb3JzfSkgdGhlIGVycm9yIGlzXG4gKiBjb2xsZWN0ZWQgYXMgdW5oYW5kbGVkIHVubGVzcyBpdCBpcyBpZ25vcmVkIFx1MjAxNCBlaXRoZXIgYmVjYXVzZSBgc2hvdWxkSWdub3JlYCBpcyBgdHJ1ZWAgb3IgYW5cbiAqIHtAbGluayBzdGFydEFzeW5jRXJyb3JJZ25vcmVDb250ZXh0fSBzY29wZSBpcyBhY3RpdmUuIEEgcmVnaXN0ZXJlZCBjb25zdW1lciBoYW5kbGVyIGRlbGliZXJhdGVseSBkb2VzXG4gKiAqKm5vdCoqIGV4ZW1wdCB0aGUgZXJyb3I6IGluIHByb2R1Y3Rpb24gaXQgc2hvd3MgdGhlIHVzZXIgYSBOb3RpY2UsIHdoaWNoIGlzIG5vdCBhIHRlc3QgYXNzZXJ0aW5nIHRoYXRcbiAqIHRoZSBlcnJvciB3YXMgZXhwZWN0ZWQuIHtAbGluayBzdGFydEFzeW5jRXJyb3JJZ25vcmVDb250ZXh0fSBpcyB0aGUgc2luZ2xlLCBleHBsaWNpdCBvcHQtb3V0LlxuICpcbiAqIEBwYXJhbSBhc3luY0Vycm9yIC0gVGhlIGVycm9yIHRvIGVtaXQgYXMgYW4gYXN5bmNocm9ub3VzIGVycm9yIGV2ZW50LlxuICogQHBhcmFtIHNob3VsZElnbm9yZSAtIFdoZXRoZXIgdG8gdHJlYXQgdGhlIGVycm9yIGFzIGV4cGVjdGVkIGFuZCBuZXZlciBjb2xsZWN0IGl0IGFzIHVuaGFuZGxlZCwgcmVnYXJkbGVzcyBvZiB0aGUgYWN0aXZlIGlnbm9yZSBjb250ZXh0LiBVc2VkIHRvIGNhcnJ5IHRoZSBzY2hlZHVsZS10aW1lIGlnbm9yZSBkZWNpc2lvbiBvZiBhIGRlZmVycmVkIGZpcmUtYW5kLWZvcmdldCByZWplY3Rpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbWl0QXN5bmNFcnJvckV2ZW50KGFzeW5jRXJyb3I6IHVua25vd24sIHNob3VsZElnbm9yZSA9IGZhbHNlKTogdm9pZCB7XG4gIGNvbnN0IGlzSWdub3JlZCA9IHNob3VsZElnbm9yZSB8fCBtb2R1bGVTdGF0ZS5hc3luY0Vycm9ySWdub3JlQ29udGV4dERlcHRoID4gMDtcbiAgaWYgKG1vZHVsZVN0YXRlLmNvbGxlY3RlZFVuaGFuZGxlZEFzeW5jRXJyb3JzICYmICFpc0lnbm9yZWQpIHtcbiAgICBtb2R1bGVTdGF0ZS5jb2xsZWN0ZWRVbmhhbmRsZWRBc3luY0Vycm9ycy5wdXNoKGFzeW5jRXJyb3IpO1xuICB9XG4gIGVycm9yQXN5bmNFdmVudHMudHJpZ2dlcignYXN5bmNFcnJvcicsIGFzeW5jRXJyb3IpO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIGVycm9yIHRvIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uLCBpbmNsdWRpbmcgbmVzdGVkIGNhdXNlcyBhbmQgdGhlIGFnZ3JlZ2F0ZWQgZXJyb3JzIG9mXG4gKiBhbiBgQWdncmVnYXRlRXJyb3JgLCB3aXRoIGluZGVudGF0aW9uLlxuICpcbiAqIEBwYXJhbSBlcnJvciAtIFRoZSBlcnJvciB0byBjb252ZXJ0IHRvIGEgc3RyaW5nLlxuICogQHJldHVybnMgVGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgZXJyb3IuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlcnJvclRvU3RyaW5nKGVycm9yOiB1bmtub3duKTogc3RyaW5nIHtcbiAgcmV0dXJuIGdldEVycm9yTGluZXMoZXJyb3IpLm1hcCgobGluZSkgPT4gbGluZS50ZXh0KS5qb2luKCdcXG4nKTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBjdXJyZW50IHN0YWNrIHRyYWNlIGFzIGEgc3RyaW5nLCBleGNsdWRpbmcgdGhlIGN1cnJlbnQgZnVuY3Rpb24gY2FsbC5cbiAqXG4gKiBAcGFyYW0gZnJhbWVzVG9Ta2lwIC0gVGhlIG51bWJlciBvZiBmcmFtZXMgdG8gc2tpcCBpbiB0aGUgc3RhY2sgdHJhY2UuXG4gKiBAcmV0dXJucyBBIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgY3VycmVudCBzdGFjayB0cmFjZSwgZXhjbHVkaW5nIHRoZSBjdXJyZW50IGZ1bmN0aW9uIGNhbGwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdGFja1RyYWNlKGZyYW1lc1RvU2tpcCA9IDApOiBzdHJpbmcge1xuICAvLyBTa2lwcGluZyB0aGUgYGdldFN0YWNrVHJhY2VgIGZyYW1lIGl0c2VsZiwgcGx1cyB0aGUgYEVycm9yYCBoZWFkZXIgbGluZSBvbiBhbiBlbmdpbmUgdGhhdCB3cml0ZXMgb25lLlxuICBjb25zdCBHRVRfU1RBQ0tfVFJBQ0VfRlJBTUVfQ09VTlQgPSAxO1xuICBjb25zdCBhZGRpdGlvbmFsTGluZXNUb1NraXAgPSBHRVRfU1RBQ0tfVFJBQ0VfRlJBTUVfQ09VTlQgKyAoaGFzU3RhY2tIZWFkZXIoKSA/IDEgOiAwKTtcbiAgY29uc3Qgc3RhY2sgPSBlbnN1cmVOb25OdWxsYWJsZShuZXcgRXJyb3IoKS5zdGFjayk7XG4gIGNvbnN0IGxpbmVzID0gc3RhY2suc3BsaXQoJ1xcbicpO1xuICByZXR1cm4gbGluZXMuc2xpY2UoZnJhbWVzVG9Ta2lwICsgYWRkaXRpb25hbExpbmVzVG9Ta2lwKS5qb2luKCdcXG4nKTtcbn1cblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBhbiB7QGxpbmsgc3RhcnRBc3luY0Vycm9ySWdub3JlQ29udGV4dH0gc2NvcGUgaXMgY3VycmVudGx5IGFjdGl2ZS5cbiAqXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgYXQgbGVhc3Qgb25lIGlnbm9yZSBjb250ZXh0IGlzIGFjdGl2ZSwgYGZhbHNlYCBvdGhlcndpc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0FzeW5jRXJyb3JJZ25vcmVDb250ZXh0QWN0aXZlKCk6IGJvb2xlYW4ge1xuICByZXR1cm4gbW9kdWxlU3RhdGUuYXN5bmNFcnJvcklnbm9yZUNvbnRleHREZXB0aCA+IDA7XG59XG5cbi8qKlxuICogUHJpbnRzIGFuIGVycm9yIHRvIHRoZSBjb25zb2xlLCBpbmNsdWRpbmcgbmVzdGVkIGNhdXNlcyBhbmQgb3B0aW9uYWwgQU5TSSBzZXF1ZW5jZSBjbGVhcmluZy5cbiAqXG4gKiBAcGFyYW0gZXJyb3IgLSBUaGUgZXJyb3IgdG8gcHJpbnQuXG4gKiBAcGFyYW0gY29uc29sZSAtIFRoZSBjb25zb2xlIHRvIHByaW50IHRvIChkZWZhdWx0OiBgZ2xvYmFsVGhpcy5jb25zb2xlYCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcmludEVycm9yKGVycm9yOiB1bmtub3duLCBjb25zb2xlPzogQ29uc29sZSk6IHZvaWQge1xuICBjb25zb2xlID8/PSBnbG9iYWxUaGlzLmNvbnNvbGU7XG4gIGNvbnNvbGUuZXJyb3IoZXJyb3JUb1N0cmluZyhlcnJvcikpO1xufVxuXG4vKipcbiAqIFJlZ2lzdGVycyBhbiBldmVudCBoYW5kbGVyIGZvciBhc3luY2hyb25vdXMgZXJyb3JzLlxuICpcbiAqIFJlZ2lzdGVyaW5nIGEgaGFuZGxlciBkb2VzIG5vdCBtYXJrIHRoZSBlcnJvcnMgaXQgcmVjZWl2ZXMgYXMgZXhwZWN0ZWQgXHUyMDE0IHNlZVxuICoge0BsaW5rIGVtaXRBc3luY0Vycm9yRXZlbnR9LiBBIHRlc3QgdGhhdCBkZWxpYmVyYXRlbHkgdHJpZ2dlcnMgYW4gYXN5bmMgZXJyb3Igb3BlbnMgYVxuICoge0BsaW5rIHN0YXJ0QXN5bmNFcnJvcklnbm9yZUNvbnRleHR9IHNjb3BlIHJlZ2FyZGxlc3Mgb2Ygd2hvIGlzIGxpc3RlbmluZy5cbiAqXG4gKiBAcGFyYW0gaGFuZGxlciAtIFRoZSBoYW5kbGVyIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIGFuIGFzeW5jaHJvbm91cyBlcnJvciBldmVudCBvY2N1cnMuXG4gKiBAcmV0dXJucyBBIHtAbGluayBEaXNwb3NhYmxlfSB0aGF0IHVucmVnaXN0ZXJzIHRoZSBoYW5kbGVyIHdoZW4gZGlzcG9zZWQsIGZvciB1c2Ugd2l0aCBgdXNpbmdgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJBc3luY0Vycm9yRXZlbnRIYW5kbGVyKGhhbmRsZXI6IChhc3luY0Vycm9yOiB1bmtub3duKSA9PiB2b2lkKTogRGlzcG9zYWJsZSB7XG4gIGNvbnN0IGV2ZW50UmVmID0gZXJyb3JBc3luY0V2ZW50cy5vbignYXN5bmNFcnJvcicsIGhhbmRsZXIpO1xuICByZXR1cm4gbmV3IENhbGxiYWNrRGlzcG9zYWJsZSh7XG4gICAgY2FsbGJhY2s6ICgpOiB2b2lkID0+IHtcbiAgICAgIGVycm9yQXN5bmNFdmVudHMub2ZmcmVmKGV2ZW50UmVmKTtcbiAgICB9LFxuICAgIG11bHRpcGxlRGlzcG9zZUJlaGF2aW9yOiBNdWx0aXBsZURpc3Bvc2VCZWhhdmlvci5JZ25vcmVcbiAgfSk7XG59XG5cbi8qKlxuICogT3BlbnMgYW4gaWdub3JlIGNvbnRleHQgaW4gd2hpY2ggYXN5bmMgZXJyb3JzIGFyZSB0cmVhdGVkIGFzIGV4cGVjdGVkIHJhdGhlciB0aGFuIHVuaGFuZGxlZCwgc28gdGhlXG4gKiB0ZXN0IGhhcm5lc3MgZG9lcyBub3QgZmFpbCB0aGUgdGVzdC5cbiAqXG4gKiBXaGlsZSB0aGUgcmV0dXJuZWQgZGlzcG9zYWJsZSBpcyBoZWxkLCBhbiBhc3luYyBlcnJvciBlbWl0dGVkIGRpcmVjdGx5IChzZWVcbiAqIHtAbGluayBlbWl0QXN5bmNFcnJvckV2ZW50fSkgaXMgbm90IGNvbGxlY3RlZCBhcyB1bmhhbmRsZWQuIENydWNpYWxseSwgYSBmaXJlLWFuZC1mb3JnZXQgb3BlcmF0aW9uXG4gKiBzY2hlZHVsZWQgd2l0aGluIHRoZSBzY29wZSAoZS5nLiB2aWEge0BsaW5rIGFzeW5jIWludm9rZUFzeW5jU2FmZWx5fSkgaXMgYWxzbyBpZ25vcmVkIHdoZW4gaXQgbGF0ZXJcbiAqIHJlamVjdHMgXHUyMDE0IGV2ZW4gYWZ0ZXIgdGhlIHNjb3BlIGhhcyBleGl0ZWQgXHUyMDE0IGJlY2F1c2Uge0BsaW5rIGFzeW5jIWFkZEVycm9ySGFuZGxlcn0gY2FwdHVyZXMgdGhlIGFjdGl2ZVxuICogaWdub3JlIGNvbnRleHQgYXQgc2NoZWR1bGUgdGltZS4gQSB0ZXN0IHRoZXJlZm9yZSBkb2VzIG5vdCBuZWVkIHRvIGRyYWluIHRoZSBvcGVyYXRpb24gaXRzZWxmOlxuICpcbiAqIGBgYHRzXG4gKiBpdCgnZG9lcyBub3QgZmFpbCcsICgpID0+IHtcbiAqICAgdXNpbmcgXyA9IHN0YXJ0QXN5bmNFcnJvcklnbm9yZUNvbnRleHQoKTtcbiAqICAgaW52b2tlQXN5bmNTYWZlbHkoKCkgPT4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCdkZWxpYmVyYXRlbHkgc3dhbGxvd2VkJykpKTtcbiAqIH0pO1xuICogYGBgXG4gKlxuICogQ29udGV4dHMgbmVzdDsgdGhlIGlnbm9yZSBvbmx5IGVuZHMgb25jZSBldmVyeSBvcGVuIGNvbnRleHQgaGFzIGJlZW4gZGlzcG9zZWQuXG4gKlxuICogQHJldHVybnMgQSB7QGxpbmsgRGlzcG9zYWJsZX0gdGhhdCBjbG9zZXMgdGhlIGlnbm9yZSBjb250ZXh0IHdoZW4gZGlzcG9zZWQsIGZvciB1c2Ugd2l0aCBgdXNpbmdgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RhcnRBc3luY0Vycm9ySWdub3JlQ29udGV4dCgpOiBEaXNwb3NhYmxlIHtcbiAgbW9kdWxlU3RhdGUuYXN5bmNFcnJvcklnbm9yZUNvbnRleHREZXB0aCsrO1xuICByZXR1cm4gbmV3IENhbGxiYWNrRGlzcG9zYWJsZSh7XG4gICAgY2FsbGJhY2s6ICgpOiB2b2lkID0+IHtcbiAgICAgIG1vZHVsZVN0YXRlLmFzeW5jRXJyb3JJZ25vcmVDb250ZXh0RGVwdGgtLTtcbiAgICB9LFxuICAgIG11bHRpcGxlRGlzcG9zZUJlaGF2aW9yOiBNdWx0aXBsZURpc3Bvc2VCZWhhdmlvci5JZ25vcmVcbiAgfSk7XG59XG5cbi8qKlxuICogT3BlbnMgYSB3aW5kb3cgaW4gd2hpY2ggYXN5bmMgZXJyb3JzIGVtaXR0ZWQgb3V0c2lkZSBhbiBpZ25vcmUgY29udGV4dCBhcmUgY29sbGVjdGVkIGFzIHVuaGFuZGxlZFxuICogKHNlZSB7QGxpbmsgZW1pdEFzeW5jRXJyb3JFdmVudH0pLCBkaXNjYXJkaW5nIGFueXRoaW5nIGNvbGxlY3RlZCBieSBhIHByZXZpb3VzIHdpbmRvdy5cbiAqXG4gKiBJbnRlbmRlZCBmb3IgdGhlIHRlc3QgaGFybmVzcyBvbmx5OiB0aGUgcGVyLXRlc3Qgc2V0dXAgb3BlbnMgYSB3aW5kb3cgYmVmb3JlIGVhY2ggdGVzdCBhbmQgZW1wdGllcyBpdFxuICogYWZ0ZXIgZWFjaCB0ZXN0IHZpYSB7QGxpbmsgZHJhaW5Db2xsZWN0ZWRVbmhhbmRsZWRBc3luY0Vycm9yc30sIGNsb3NpbmcgaXQgZm9yIGdvb2Qgd2l0aFxuICoge0BsaW5rIHN0b3BDb2xsZWN0aW5nVW5oYW5kbGVkQXN5bmNFcnJvcnN9IG9uY2UgdGhlIGZpbGUncyBsYXN0IHRlc3QgaGFzIHJ1bi4gSW4gcHJvZHVjdGlvbiBubyB3aW5kb3dcbiAqIGlzIG9wZW4sIHNvIGVtaXR0aW5nIGFuIGFzeW5jIGVycm9yIGNhcnJpZXMgbm8gYm9va2tlZXBpbmcgb3ZlcmhlYWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdGFydENvbGxlY3RpbmdVbmhhbmRsZWRBc3luY0Vycm9ycygpOiB2b2lkIHtcbiAgbW9kdWxlU3RhdGUuY29sbGVjdGVkVW5oYW5kbGVkQXN5bmNFcnJvcnMgPSBbXTtcbn1cblxuLyoqXG4gKiBDbG9zZXMgdGhlIHdpbmRvdyBvcGVuZWQgYnkge0BsaW5rIHN0YXJ0Q29sbGVjdGluZ1VuaGFuZGxlZEFzeW5jRXJyb3JzfSBhbmQgcmV0dXJucyB0aGUgdW5oYW5kbGVkXG4gKiBhc3luYyBlcnJvcnMgY29sbGVjdGVkIHdoaWxlIGl0IHdhcyBvcGVuLlxuICpcbiAqIFVzZSB7QGxpbmsgZHJhaW5Db2xsZWN0ZWRVbmhhbmRsZWRBc3luY0Vycm9yc30gaW5zdGVhZCB3aGVyZXZlciBjb2xsZWN0aW9uIG11c3QgY29udGludWUgYWZ0ZXJ3YXJkcyBcdTIwMTRcbiAqIG9uY2UgdGhlIHdpbmRvdyBpcyBjbG9zZWQsIGEgbGF0ZXIgYXN5bmMgZXJyb3IgaXMgbm90IGNvbGxlY3RlZCBieSBhbnlvbmUuXG4gKlxuICogQHJldHVybnMgVGhlIGNvbGxlY3RlZCB1bmhhbmRsZWQgYXN5bmMgZXJyb3JzLCBvciBhbiBlbXB0eSBhcnJheSBpZiBubyB3aW5kb3cgd2FzIG9wZW4uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdG9wQ29sbGVjdGluZ1VuaGFuZGxlZEFzeW5jRXJyb3JzKCk6IHVua25vd25bXSB7XG4gIGNvbnN0IGNvbGxlY3RlZEVycm9ycyA9IG1vZHVsZVN0YXRlLmNvbGxlY3RlZFVuaGFuZGxlZEFzeW5jRXJyb3JzID8/IFtdO1xuICBtb2R1bGVTdGF0ZS5jb2xsZWN0ZWRVbmhhbmRsZWRBc3luY0Vycm9ycyA9IG51bGw7XG4gIHJldHVybiBjb2xsZWN0ZWRFcnJvcnM7XG59XG5cbi8qKlxuICogVGhyb3dzIGFuIGVycm9yIHdpdGggdGhlIHNwZWNpZmllZCBtZXNzYWdlLlxuICpcbiAqIEBwYXJhbSBlcnJvciAtIFRoZSBlcnJvciB0byB0aHJvdy5cbiAqIEB0aHJvd3NcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRocm93RXhwcmVzc2lvbihlcnJvcjogdW5rbm93bik6IG5ldmVyIHtcbiAgdGhyb3cgZXJyb3I7XG59XG5cbmZ1bmN0aW9uIGdlbmVyYXRlTmVzdGVkRXJyb3JMaW5lcyhuZXN0ZWRFcnJvcjogdW5rbm93biwgdGl0bGU6IHN0cmluZyk6IEVycm9yTGluZVtdIHtcbiAgY29uc3QgbGluZXMgPSBbdG9UaXRsZUxpbmUodGl0bGUpLCAuLi5nZXRFcnJvckxpbmVzKG5lc3RlZEVycm9yKS5maWx0ZXIoKGxpbmUpID0+IGxpbmUudGV4dC50cmltKCkgIT09ICcnKV07XG4gIHJldHVybiBsaW5lcy5tYXAoKGxpbmUpID0+IGxpbmUuaXNGcmFtZSA/IGxpbmUgOiB7IGlzRnJhbWU6IHRydWUsIHRleHQ6IGdlbmVyYXRlU3RhY2tUcmFjZUxpbmUobGluZS50ZXh0KSB9KTtcbn1cblxuZnVuY3Rpb24gZ2VuZXJhdGVTdGFja1RyYWNlTGluZSh0aXRsZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGAke1NUQUNLX1RSQUNFX1BSRUZJWH0gLS0tICR7dGl0bGV9IC0tLSAoMClgO1xufVxuXG4vKipcbiAqIEJ1aWxkcyB0aGUgYE5hbWU6IG1lc3NhZ2VgIGhlYWRlciB0aGUgd2F5IFY4IHdyaXRlcyBpdCBpbnRvIGAuc3RhY2tgIChhIGJhcmUgYE5hbWVgIGZvciBhbiBlbXB0eSBtZXNzYWdlKS5cbiAqXG4gKiBAcGFyYW0gZXJyb3IgLSBUaGUgZXJyb3IuXG4gKiBAcmV0dXJucyBUaGUgaGVhZGVyLCB3aGljaCBzcGFucyBzZXZlcmFsIGxpbmVzIHdoZW4gdGhlIG1lc3NhZ2UgZG9lcy5cbiAqL1xuZnVuY3Rpb24gZ2V0RXJyb3JIZWFkZXIoZXJyb3I6IEVycm9yKTogc3RyaW5nIHtcbiAgcmV0dXJuIGVycm9yLm1lc3NhZ2UgPyBgJHtlcnJvci5uYW1lfTogJHtlcnJvci5tZXNzYWdlfWAgOiBlcnJvci5uYW1lO1xufVxuXG5mdW5jdGlvbiBnZXRFcnJvckxpbmVzKGVycm9yOiB1bmtub3duKTogRXJyb3JMaW5lW10ge1xuICBpZiAoIShlcnJvciBpbnN0YW5jZW9mIEVycm9yKSkge1xuICAgIHJldHVybiBTdHJpbmcoZXJyb3IpLnNwbGl0KCdcXG4nKS5tYXAoKHRleHQpID0+IHRvVGl0bGVMaW5lKHRleHQpKTtcbiAgfVxuXG4gIGNvbnN0IGxpbmVzID0gZ2V0T3duRXJyb3JMaW5lcyhlcnJvcik7XG4gIGlmIChlcnJvci5jYXVzZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgbGluZXMucHVzaCguLi5nZW5lcmF0ZU5lc3RlZEVycm9yTGluZXMoZXJyb3IuY2F1c2UsICdDYXVzZWQgYnk6JykpO1xuICB9XG4gIGlmIChlcnJvciBpbnN0YW5jZW9mIEFnZ3JlZ2F0ZUVycm9yKSB7XG4gICAgY29uc3QgYWdncmVnYXRlZEVycm9yczogcmVhZG9ubHkgdW5rbm93bltdID0gZXJyb3IuZXJyb3JzO1xuICAgIGZvciAoY29uc3QgW2luZGV4LCBhZ2dyZWdhdGVkRXJyb3JdIG9mIGFnZ3JlZ2F0ZWRFcnJvcnMuZW50cmllcygpKSB7XG4gICAgICBsaW5lcy5wdXNoKC4uLmdlbmVyYXRlTmVzdGVkRXJyb3JMaW5lcyhhZ2dyZWdhdGVkRXJyb3IsIGBBZ2dyZWdhdGVkIGVycm9yICMke1N0cmluZyhpbmRleCArIDEpfTpgKSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBsaW5lcztcbn1cblxuZnVuY3Rpb24gZ2V0T3duRXJyb3JMaW5lcyhlcnJvcjogRXJyb3IpOiBFcnJvckxpbmVbXSB7XG4gIGNvbnN0IGhlYWRlckxpbmVzID0gZ2V0RXJyb3JIZWFkZXIoZXJyb3IpLnNwbGl0KCdcXG4nKS5tYXAoKHRleHQpID0+IHRvVGl0bGVMaW5lKHRleHQpKTtcbiAgaWYgKGVycm9yLnN0YWNrID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gaGVhZGVyTGluZXM7XG4gIH1cblxuICBjb25zdCBzdGFja0xpbmVzID0gZXJyb3Iuc3RhY2suc3BsaXQoJ1xcbicpO1xuICBpZiAoaGFzU3RhY2tIZWFkZXIoKSkge1xuICAgIHJldHVybiBzdGFja0xpbmVzLm1hcCgodGV4dCkgPT4gKHsgaXNGcmFtZTogdGV4dC5zdGFydHNXaXRoKFNUQUNLX1RSQUNFX1BSRUZJWCksIHRleHQgfSkpO1xuICB9XG5cbiAgLy8gT24gYW4gZW5naW5lIHdpdGhvdXQgYSBoZWFkZXIgbGluZSwgdGhlIGAuc3RhY2tgIGlzIGZyYW1lcyBvbmx5LCBpbiBpdHMgb3duIGBuYW1lQHVybDpsaW5lOmNvbGAgZm9ybSwgc28gdGhlIG1lc3NhZ2UgaXMgbm93aGVyZSBpbiBpdDpcbiAgLy8gUHJlcGVuZCB0aGUgaGVhZGVyLCBhbmQgdGFrZSBldmVyeSBzdGFjayBsaW5lIGFzIGEgZnJhbWUuXG4gIHJldHVybiBbLi4uaGVhZGVyTGluZXMsIC4uLnN0YWNrTGluZXMuZmlsdGVyKCh0ZXh0KSA9PiB0ZXh0LnRyaW0oKSAhPT0gJycpLm1hcCgodGV4dCkgPT4gKHsgaXNGcmFtZTogdHJ1ZSwgdGV4dCB9KSldO1xufVxuXG4vKipcbiAqIEhhbmRsZXMgYXN5bmNocm9ub3VzIGVycm9ycyBieSBwcmludGluZyB0aGVtLlxuICpcbiAqIEBwYXJhbSBhc3luY0Vycm9yIC0gVGhlIGFzeW5jaHJvbm91cyBlcnJvciB0byBoYW5kbGUuXG4gKi9cbmZ1bmN0aW9uIGhhbmRsZUFzeW5jRXJyb3IoYXN5bmNFcnJvcjogdW5rbm93bik6IHZvaWQge1xuICBwcmludEVycm9yKGFzeW5jRXJyb3IpO1xufVxuXG4vKipcbiAqIEFuc3dlcnMgd2hldGhlciB0aGlzIGVuZ2luZSdzIGAuc3RhY2tgIG9wZW5zIHdpdGggdGhlIGVycm9yJ3MgYE5hbWU6IG1lc3NhZ2VgIGhlYWRlciBsaW5lLlxuICpcbiAqIFY4IHdyaXRlcyBvbmU7IEphdmFTY3JpcHRDb3JlIChldmVyeSBBcHBsZSBwbGF0Zm9ybSwgc28gT2JzaWRpYW4gb24gaU9TIGFuZCBpUGFkT1MpIGFuZCBTcGlkZXJNb25rZXkgd3JpdGUgZnJhbWVzIG9ubHkuXG4gKiBUaGUgYW5zd2VyIGJlbG9uZ3MgdG8gdGhlIGVuZ2luZSwgbm90IHRoZSBwbGF0Zm9ybSwgc28gaXQgaXMgcHJvYmVkIHJhdGhlciB0aGFuIHJlYWQgb2ZmIGBQbGF0Zm9ybWAuIEl0IGlzIHByb2JlZCBvbiBldmVyeVxuICogY2FsbCByYXRoZXIgdGhhbiBjYWNoZWQsIGJlY2F1c2UgYEVycm9yLnByZXBhcmVTdGFja1RyYWNlYCBjYW4gcmVzaGFwZSBWOCdzIHN0YWNrIGF0IHJ1bnRpbWUsIGFuZCBvbmUgZXh0cmEgYEVycm9yYCBjb3N0c1xuICogbm90aGluZyBvbiBhIHBhdGggdGhhdCBpcyBhbHJlYWR5IGhhbmRsaW5nIG9uZS5cbiAqXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgYC5zdGFja2AgY2FycmllcyB0aGUgaGVhZGVyIGxpbmUuXG4gKi9cbmZ1bmN0aW9uIGhhc1N0YWNrSGVhZGVyKCk6IGJvb2xlYW4ge1xuICBjb25zdCBmaXJzdExpbmUgPSBuZXcgRXJyb3IoU1RBQ0tfSEVBREVSX1BST0JFX01FU1NBR0UpLnN0YWNrPy5zcGxpdCgnXFxuJywgMSlbMF07XG4gIHJldHVybiBmaXJzdExpbmUgPT09IGBFcnJvcjogJHtTVEFDS19IRUFERVJfUFJPQkVfTUVTU0FHRX1gO1xufVxuXG5mdW5jdGlvbiB0b1RpdGxlTGluZSh0ZXh0OiBzdHJpbmcpOiBFcnJvckxpbmUge1xuICByZXR1cm4geyBpc0ZyYW1lOiBmYWxzZSwgdGV4dCB9O1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQU1BLDBCQUE0QjtBQUM1Qix3QkFHTztBQUNQLHlCQUFrQztBQU1sQyxNQUFNLG1CQUFtQixJQUFJLGdDQUFnQztBQUU3RCxpQkFBaUIsR0FBRyxjQUFjLGdCQUFnQjtBQXVCbEQsTUFBTSxjQUEyQjtBQUFBLEVBQy9CLDhCQUE4QjtBQUFBLEVBQzlCLCtCQUErQjtBQUNqQztBQUlPLE1BQU0sOEJBQThCO0FBRTNDLE1BQU0scUJBQXFCO0FBRTNCLE1BQU0sdUJBQXVCO0FBRTdCLE1BQU0sNkJBQTZCO0FBb0M1QixNQUFNLDhCQUE4QixNQUFNO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTXhDLFlBQVksUUFBZ0Q7QUFDakUsVUFBTSxFQUFFLE9BQU8sU0FBUyxXQUFXLElBQUk7QUFDdkMsVUFBTSxTQUFTLEVBQUUsTUFBTSxDQUFDO0FBQ3hCLFNBQUssT0FBTztBQUVaLFFBQUksWUFBWTtBQUNoQixVQUFNLGVBQWUsb0JBQUksSUFBMkI7QUFDcEQsV0FBTyxxQkFBcUIsdUJBQXVCO0FBQ2pELFVBQUksYUFBYSxJQUFJLFNBQVMsR0FBRztBQUMvQixjQUFNLElBQUksTUFBTSx5QkFBeUI7QUFBQSxNQUMzQztBQUNBLG1CQUFhLElBQUks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
257
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2Vycm9yLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29udGFpbnMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIGVycm9yIGhhbmRsaW5nLlxuICovXG5cbmltcG9ydCB7IEFzeW5jRXZlbnRzIH0gZnJvbSAnLi9hc3luYy1ldmVudHMudHMnO1xuaW1wb3J0IHtcbiAgQ2FsbGJhY2tEaXNwb3NhYmxlLFxuICBNdWx0aXBsZURpc3Bvc2VCZWhhdmlvclxufSBmcm9tICcuL2Rpc3Bvc2FibGUudHMnO1xuaW1wb3J0IHsgZW5zdXJlTm9uTnVsbGFibGUgfSBmcm9tICcuL3R5cGUtZ3VhcmRzLnRzJztcblxuaW50ZXJmYWNlIEVycm9yQXN5bmNFdmVudE1hcCB7XG4gIGFzeW5jRXJyb3I6IFtlcnJvcjogdW5rbm93bl07XG59XG5cbmNvbnN0IGVycm9yQXN5bmNFdmVudHMgPSBuZXcgQXN5bmNFdmVudHM8RXJyb3JBc3luY0V2ZW50TWFwPigpO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vbm8tdG9wLWxldmVsLXNpZGUtZWZmZWN0cyAtLSBJbnN0YWxsaW5nIHRoZSBkZWZhdWx0IGhhbmRsZXIgb24gaW1wb3J0IGlzIHdoYXQgdGhpcyBtb2R1bGUgaXMgZm9yLiBEZWZlcnJpbmcgaXQgYmVoaW5kIGEgY2FsbCB3b3VsZCBtZWFuIGV2ZXJ5IGNvbnN1bWVyIGhhZCB0byByZW1lbWJlciB0byBtYWtlIHRoYXQgY2FsbCBiZWZvcmUgdGhlIGZpcnN0IGFzeW5jIGVycm9yLCB3aGljaCBpcyBwcmVjaXNlbHkgdGhlIG1vbWVudCB0aGUgaGFuZGxlciBuZWVkcyB0byBhbHJlYWR5IGV4aXN0LlxuZXJyb3JBc3luY0V2ZW50cy5vbignYXN5bmNFcnJvcicsIGhhbmRsZUFzeW5jRXJyb3IpO1xuXG5pbnRlcmZhY2UgTW9kdWxlU3RhdGUge1xuICAvKipcbiAgICogVGhlIG5lc3RpbmcgZGVwdGggb2YgYWN0aXZlIHtAbGluayBzdGFydEFzeW5jRXJyb3JJZ25vcmVDb250ZXh0fSBzY29wZXMuIFdoaWxlIGdyZWF0ZXIgdGhhbiBgMGAsIGFuXG4gICAqIGFzeW5jIGVycm9yIGVtaXR0ZWQgKG9yIGEgZmlyZS1hbmQtZm9yZ2V0IG9wZXJhdGlvbiB3aG9zZSByZWplY3Rpb24gd2FzIGNhcHR1cmVkKSB3aXRoaW4gdGhlIHNjb3BlIGlzXG4gICAqIHRyZWF0ZWQgYXMgZXhwZWN0ZWQgYW5kIG5vdCBjb2xsZWN0ZWQgYXMgdW5oYW5kbGVkLlxuICAgKi9cbiAgYXN5bmNFcnJvcklnbm9yZUNvbnRleHREZXB0aDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgYnVmZmVyIHRoYXQgY29sbGVjdHMgdW5oYW5kbGVkIGFzeW5jIGVycm9ycyB3aGlsZSBhIGNvbGxlY3Rpb24gd2luZG93IGlzIG9wZW4sIG9yIGBudWxsYCB3aGVuXG4gICAqIG5vIHdpbmRvdyBpcyBvcGVuICh0aGUgZGVmYXVsdCBpbiBwcm9kdWN0aW9uKS4gT3BlbmVkIGJ5IHtAbGluayBzdGFydENvbGxlY3RpbmdVbmhhbmRsZWRBc3luY0Vycm9yc30sXG4gICAqIGVtcHRpZWQgd2l0aG91dCBjbG9zaW5nIGJ5IHtAbGluayBkcmFpbkNvbGxlY3RlZFVuaGFuZGxlZEFzeW5jRXJyb3JzfSwgYW5kIGRyYWluZWQtYW5kLWNsb3NlZCBieVxuICAgKiB7QGxpbmsgc3RvcENvbGxlY3RpbmdVbmhhbmRsZWRBc3luY0Vycm9yc30gXHUyMDE0IHVzZWQgYnkgdGhlIHRlc3QgaGFybmVzcyB0byBmYWlsIGEgdGVzdCB0aGF0IHN3YWxsb3dlZFxuICAgKiBhbiBhc3luYyBlcnJvci5cbiAgICovXG4gIGNvbGxlY3RlZFVuaGFuZGxlZEFzeW5jRXJyb3JzOiBudWxsIHwgdW5rbm93bltdO1xufVxuXG4vKipcbk1vZHVsZS1sZXZlbCBtdXRhYmxlIHN0YXRlLCBoZWxkIGluIG9uZSBvYmplY3Qgc28gZWFjaCBtdXRhdGlvbiBuYW1lcyBpdCBleHBsaWNpdGx5LlxuICovXG5jb25zdCBtb2R1bGVTdGF0ZTogTW9kdWxlU3RhdGUgPSB7XG4gIGFzeW5jRXJyb3JJZ25vcmVDb250ZXh0RGVwdGg6IDAsXG4gIGNvbGxlY3RlZFVuaGFuZGxlZEFzeW5jRXJyb3JzOiBudWxsXG59O1xuLyoqXG4gKiBBIG1lc3NhZ2Ugb2YgdGhlIEFzeW5jV3JhcHBlckVycm9yLlxuICovXG5leHBvcnQgY29uc3QgQVNZTkNfV1JBUFBFUl9FUlJPUl9NRVNTQUdFID0gJ0FuIHVuaGFuZGxlZCBlcnJvciBvY2N1cnJlZCBleGVjdXRpbmcgYXN5bmMgb3BlcmF0aW9uJztcblxuY29uc3QgU1RBQ0tfVFJBQ0VfUFJFRklYID0gJyAgICBhdCc7XG5cbmNvbnN0IEVSUk9SX0hFQURFUl9SRUdfRVhQID0gL15cXHcqRXJyb3IoPzo6IHwkKS87XG5cbmNvbnN0IFNUQUNLX0hFQURFUl9QUk9CRV9NRVNTQUdFID0gJ3N0YWNrIGhlYWRlciBwcm9iZSc7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3IgdGhlIHtAbGluayBDdXN0b21TdGFja1RyYWNlRXJyb3J9IGNvbnN0cnVjdG9yLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEN1c3RvbVN0YWNrVHJhY2VFcnJvckNvbnN0cnVjdG9yUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBjYXVzZSBvZiB0aGUgZXJyb3IuXG4gICAqL1xuICByZWFkb25seSBjYXVzZTogdW5rbm93bjtcblxuICAvKipcbiAgICogVGhlIG1lc3NhZ2Ugb2YgdGhlIGVycm9yLlxuICAgKi9cbiAgcmVhZG9ubHkgbWVzc2FnZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc3RhY2sgdHJhY2Ugb2YgdGhlIGVycm9yLlxuICAgKi9cbiAgcmVhZG9ubHkgc3RhY2tUcmFjZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIE9uZSBsaW5lIG9mIGFuIGVycm9yJ3Mgc3RyaW5nIGZvcm0sIHRhZ2dlZCB3aXRoIHdoZXRoZXIgaXQgaXMgYSBzdGFjayBmcmFtZS5cbiAqXG4gKiBBIHRpdGxlIChhbiBlcnJvciBoZWFkZXIsIGEgYENhdXNlZCBieTpgIG1hcmtlciwgYSBsaW5lIG9mIGEgbXVsdGktbGluZSBtZXNzYWdlKSBpcyB3cmFwcGVkIGludG9cbiAqIHtAbGluayBnZW5lcmF0ZVN0YWNrVHJhY2VMaW5lfSdzIGZvcm0gd2hlbiB0aGUgZXJyb3IgaXQgYmVsb25ncyB0byBpcyBuZXN0ZWQ7IGEgZnJhbWUgaXMga2VwdCB2ZXJiYXRpbS5cbiAqL1xuaW50ZXJmYWNlIEVycm9yTGluZSB7XG4gIHJlYWRvbmx5IGlzRnJhbWU6IGJvb2xlYW47XG4gIHJlYWRvbmx5IHRleHQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBBbiBlcnJvciB0aGF0IHdyYXBzIGFuIGVycm9yIHdpdGggYSBjdXN0b20gc3RhY2sgdHJhY2UuXG4gKi9cbmV4cG9ydCBjbGFzcyBDdXN0b21TdGFja1RyYWNlRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IEN1c3RvbVN0YWNrVHJhY2VFcnJvci5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZXJyb3IuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IocGFyYW1zOiBDdXN0b21TdGFja1RyYWNlRXJyb3JDb25zdHJ1Y3RvclBhcmFtcykge1xuICAgIGNvbnN0IHsgY2F1c2UsIG1lc3NhZ2UsIHN0YWNrVHJhY2UgfSA9IHBhcmFtcztcbiAgICBzdXBlcihtZXNzYWdlLCB7IGNhdXNlIH0pO1xuICAgIHRoaXMubmFtZSA9ICdDdXN0b21TdGFja1RyYWNlRXJyb3InO1xuXG4gICAgbGV0IHJvb3RDYXVzZSA9IGNhdXNlO1xuICAgIGNvbnN0IHBhcmVudENhdXNlcyA9IG5ldyBTZXQ8Q3VzdG9tU3RhY2tUcmFjZUVycm9yPigpO1xuICAgIHdoaWxlIChyb290Q2F1c2UgaW5zdGFuY2VvZiBDdXN0b21TdGFja1RyYWNlRXJyb3IpIHtcbiAgICAgIGlmIChwYXJlbnRDYXVzZXMuaGFzKHJvb3RDYXVzZSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDaXJjdWxhciBjYXVzZSBkZXRlY3RlZCcpO1xuICAgICAgfVxuICAgICAgcGFyZW50Q2F1c2VzLmFkZChyb290Q2F1c2UpO1xuICAgICAgcm9vdENhdXNlID0gcm9vdENhdXNlLmNhdXNlO1xuICAgIH1cblxuICAgIGNvbnN0IHN0YWNrTGluZXMgPSBzdGFja1RyYWNlLnNwbGl0KCdcXG4nKTtcbiAgICBpZiAoRVJST1JfSEVBREVSX1JFR19FWFAudGVzdChlbnN1cmVOb25OdWxsYWJsZShzdGFja0xpbmVzWzBdKSkpIHtcbiAgICAgIHN0YWNrTGluZXMuc2hpZnQoKTtcbiAgICB9XG4gICAgLy8gS2VlcCB0aGUgZW5naW5lJ3Mgb3duIGAuc3RhY2tgIHNoYXBlOiBhIGhlYWRlciBvbmx5IHdoZXJlIHRoZSBlbmdpbmUgd3JpdGVzIG9uZSAoVjgpLCBmcmFtZXMgb25seSB3aGVyZSBpdCBkb2VzIG5vdCAoSmF2YVNjcmlwdENvcmUsIFNwaWRlck1vbmtleSkuXG4gICAgaWYgKGhhc1N0YWNrSGVhZGVyKCkpIHtcbiAgICAgIHN0YWNrTGluZXMudW5zaGlmdChnZXRFcnJvckhlYWRlcih0aGlzKSk7XG4gICAgfVxuICAgIHRoaXMuc3RhY2sgPSBzdGFja0xpbmVzLmpvaW4oJ1xcbicpO1xuICB9XG59XG5cbi8qKlxuICogQW4gZXJyb3IgdGhhdCB3cmFwcyBhIG5vbi1gRXJyb3JgIHZhbHVlIHRoYXQgd2FzIHRocm93biwgcHJlc2VydmluZyB0aGUgb3JpZ2luYWwgdmFsdWUgaW4gYGNhdXNlYC5cbiAqL1xuZXhwb3J0IGNsYXNzIEVycm9yV3JhcHBlciBleHRlbmRzIEVycm9yIHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgRXJyb3JXcmFwcGVyLlxuICAgKlxuICAgKiBAcGFyYW0gdGhyb3duVmFsdWUgLSBUaGUgb3JpZ2luYWwgbm9uLWBFcnJvcmAgdmFsdWUgdGhhdCB3YXMgdGhyb3duLlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKHRocm93blZhbHVlOiB1bmtub3duKSB7XG4gICAgc3VwZXIoYEEgbm9uLUVycm9yIHZhbHVlIHdhcyB0aHJvd246ICR7U3RyaW5nKHRocm93blZhbHVlKX1gLCB7IGNhdXNlOiB0aHJvd25WYWx1ZSB9KTtcbiAgICB0aGlzLm5hbWUgPSAnRXJyb3JXcmFwcGVyJztcbiAgfVxuXG4gIC8qKlxuICAgKiBOb3JtYWxpemVzIGFueSB0aHJvd24gdmFsdWUgdG8gYW4gYEVycm9yYC5cbiAgICpcbiAgICogUmV0dXJucyB0aGUgdmFsdWUgdW5jaGFuZ2VkIGlmIGl0IGlzIGFscmVhZHkgYW4gYEVycm9yYCwgb3RoZXJ3aXNlIHdyYXBzIGl0IGluIGFuIHtAbGluayBFcnJvcldyYXBwZXJ9LlxuICAgKlxuICAgKiBAcGFyYW0gdGhyb3duVmFsdWUgLSBUaGUgdGhyb3duIHZhbHVlIHRvIG5vcm1hbGl6ZS5cbiAgICogQHJldHVybnMgQW4gYEVycm9yYCBpbnN0YW5jZTogdGhlIG9yaWdpbmFsIHZhbHVlIGlmIGl0IGlzIGFscmVhZHkgYW4gYEVycm9yYCwgb3RoZXJ3aXNlIGFuIHtAbGluayBFcnJvcldyYXBwZXJ9LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBjcmVhdGUodGhyb3duVmFsdWU6IHVua25vd24pOiBFcnJvciB7XG4gICAgcmV0dXJuIHRocm93blZhbHVlIGluc3RhbmNlb2YgRXJyb3IgPyB0aHJvd25WYWx1ZSA6IG5ldyBFcnJvcldyYXBwZXIodGhyb3duVmFsdWUpO1xuICB9XG59XG5cbi8qKlxuICogQW4gZXJyb3IgdGhhdCBpcyBub3QgcHJpbnRlZCB0byB0aGUgY29uc29sZS5cbiAqL1xuZXhwb3J0IGNsYXNzIFNpbGVudEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBTaWxlbnRFcnJvci5cbiAgICpcbiAgICogQHBhcmFtIG1lc3NhZ2UgLSBUaGUgbWVzc2FnZSBvZiB0aGUgZXJyb3IuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gICAgdGhpcy5uYW1lID0gJ1NpbGVudEVycm9yJztcbiAgfVxufVxuXG4vKipcbiAqIEVtcHRpZXMgdGhlIGNvbGxlY3Rpb24gd2luZG93IG9wZW5lZCBieSB7QGxpbmsgc3RhcnRDb2xsZWN0aW5nVW5oYW5kbGVkQXN5bmNFcnJvcnN9IGFuZCByZXR1cm5zIHdoYXQgaXRcbiAqIGhlbGQsIGxlYXZpbmcgdGhlIHdpbmRvdyAqKm9wZW4qKiBzbyBlcnJvcnMgZW1pdHRlZCBhZnRlcndhcmRzIGtlZXAgYmVpbmcgY29sbGVjdGVkLlxuICpcbiAqIFRoaXMgaXMgd2hhdCB0aGUgdGVzdCBzZXR1cCdzIChgQG1uYW91bW92L3R5cGVzY3JpcHQtdGVzdC10b29sa2l0L3NldHVwYCkgYGJlZm9yZUVhY2hgIC8gYGFmdGVyRWFjaGAgdXNlLCByYXRoZXIgdGhhblxuICoge0BsaW5rIHN0b3BDb2xsZWN0aW5nVW5oYW5kbGVkQXN5bmNFcnJvcnN9OiBhbiBhc3luYyBlcnJvciBlbWl0dGVkIGluIHRoZSBnYXAgYmV0d2VlbiB0d28gdGVzdHMgKGUuZy4gYnkgYVxuICogYHNldFRpbWVvdXRgIHRoZSB0ZXN0IGxlZnQgcGVuZGluZykgd291bGQgb3RoZXJ3aXNlIGxhbmQgb24gYSBjbG9zZWQgd2luZG93IGFuZCB2YW5pc2ggdW5yZXBvcnRlZC5cbiAqXG4gKiBAcmV0dXJucyBUaGUgdW5oYW5kbGVkIGFzeW5jIGVycm9ycyBjb2xsZWN0ZWQgc28gZmFyLCBvciBhbiBlbXB0eSBhcnJheSBpZiBubyB3aW5kb3cgaXMgb3Blbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRyYWluQ29sbGVjdGVkVW5oYW5kbGVkQXN5bmNFcnJvcnMoKTogdW5rbm93bltdIHtcbiAgcmV0dXJuIG1vZHVsZVN0YXRlLmNvbGxlY3RlZFVuaGFuZGxlZEFzeW5jRXJyb3JzPy5zcGxpY2UoMCkgPz8gW107XG59XG5cbi8qKlxuICogRW1pdHMgYW4gYXN5bmNocm9ub3VzIGVycm9yIGV2ZW50LlxuICpcbiAqIFdoZW4gYSBjb2xsZWN0aW9uIHdpbmRvdyBpcyBvcGVuIChzZWUge0BsaW5rIHN0YXJ0Q29sbGVjdGluZ1VuaGFuZGxlZEFzeW5jRXJyb3JzfSkgdGhlIGVycm9yIGlzXG4gKiBjb2xsZWN0ZWQgYXMgdW5oYW5kbGVkIHVubGVzcyBpdCBpcyBpZ25vcmVkIFx1MjAxNCBlaXRoZXIgYmVjYXVzZSBgc2hvdWxkSWdub3JlYCBpcyBgdHJ1ZWAgb3IgYW5cbiAqIHtAbGluayBzdGFydEFzeW5jRXJyb3JJZ25vcmVDb250ZXh0fSBzY29wZSBpcyBhY3RpdmUuIEEgcmVnaXN0ZXJlZCBjb25zdW1lciBoYW5kbGVyIGRlbGliZXJhdGVseSBkb2VzXG4gKiAqKm5vdCoqIGV4ZW1wdCB0aGUgZXJyb3I6IGluIHByb2R1Y3Rpb24gaXQgc2hvd3MgdGhlIHVzZXIgYSBOb3RpY2UsIHdoaWNoIGlzIG5vdCBhIHRlc3QgYXNzZXJ0aW5nIHRoYXRcbiAqIHRoZSBlcnJvciB3YXMgZXhwZWN0ZWQuIHtAbGluayBzdGFydEFzeW5jRXJyb3JJZ25vcmVDb250ZXh0fSBpcyB0aGUgc2luZ2xlLCBleHBsaWNpdCBvcHQtb3V0LlxuICpcbiAqIEBwYXJhbSBhc3luY0Vycm9yIC0gVGhlIGVycm9yIHRvIGVtaXQgYXMgYW4gYXN5bmNocm9ub3VzIGVycm9yIGV2ZW50LlxuICogQHBhcmFtIHNob3VsZElnbm9yZSAtIFdoZXRoZXIgdG8gdHJlYXQgdGhlIGVycm9yIGFzIGV4cGVjdGVkIGFuZCBuZXZlciBjb2xsZWN0IGl0IGFzIHVuaGFuZGxlZCwgcmVnYXJkbGVzcyBvZiB0aGUgYWN0aXZlIGlnbm9yZSBjb250ZXh0LiBVc2VkIHRvIGNhcnJ5IHRoZSBzY2hlZHVsZS10aW1lIGlnbm9yZSBkZWNpc2lvbiBvZiBhIGRlZmVycmVkIGZpcmUtYW5kLWZvcmdldCByZWplY3Rpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbWl0QXN5bmNFcnJvckV2ZW50KGFzeW5jRXJyb3I6IHVua25vd24sIHNob3VsZElnbm9yZSA9IGZhbHNlKTogdm9pZCB7XG4gIGNvbnN0IGlzSWdub3JlZCA9IHNob3VsZElnbm9yZSB8fCBtb2R1bGVTdGF0ZS5hc3luY0Vycm9ySWdub3JlQ29udGV4dERlcHRoID4gMDtcbiAgaWYgKG1vZHVsZVN0YXRlLmNvbGxlY3RlZFVuaGFuZGxlZEFzeW5jRXJyb3JzICYmICFpc0lnbm9yZWQpIHtcbiAgICBtb2R1bGVTdGF0ZS5jb2xsZWN0ZWRVbmhhbmRsZWRBc3luY0Vycm9ycy5wdXNoKGFzeW5jRXJyb3IpO1xuICB9XG4gIGVycm9yQXN5bmNFdmVudHMudHJpZ2dlcignYXN5bmNFcnJvcicsIGFzeW5jRXJyb3IpO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIGVycm9yIHRvIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uLCBpbmNsdWRpbmcgbmVzdGVkIGNhdXNlcyBhbmQgdGhlIGFnZ3JlZ2F0ZWQgZXJyb3JzIG9mXG4gKiBhbiBgQWdncmVnYXRlRXJyb3JgLCB3aXRoIGluZGVudGF0aW9uLlxuICpcbiAqIE5ldmVyIHRocm93czogaWYgdGhlIGVycm9yIGNhbm5vdCBiZSBmb3JtYXR0ZWQgKGEgdGhyb3dpbmcgZ2V0dGVyLCBhIG1hbGZvcm1lZCBuZXN0ZWQgZXJyb3IpLCBpdCBmYWxscyBiYWNrIHRvIHRoZVxuICogZXJyb3IncyBvd24gc3RyaW5nIGFuZCBzdGFjaywgc28gdGhlIGVycm9yIGJlaW5nIHJlcG9ydGVkIGlzIG5ldmVyIGhpZGRlbiBiZWhpbmQgYSBmYWlsdXJlIHRvIHJlcG9ydCBpdC5cbiAqXG4gKiBAcGFyYW0gZXJyb3IgLSBUaGUgZXJyb3IgdG8gY29udmVydCB0byBhIHN0cmluZy5cbiAqIEByZXR1cm5zIFRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIGVycm9yLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXJyb3JUb1N0cmluZyhlcnJvcjogdW5rbm93bik6IHN0cmluZyB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGdldEVycm9yTGluZXMoZXJyb3IpLm1hcCgobGluZSkgPT4gbGluZS50ZXh0KS5qb2luKCdcXG4nKTtcbiAgfSBjYXRjaCAoZm9ybWF0dGluZ0Vycm9yKSB7XG4gICAgcmV0dXJuIGdldEZhbGxiYWNrRXJyb3JTdHJpbmcoZXJyb3IsIGZvcm1hdHRpbmdFcnJvcik7XG4gIH1cbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBjdXJyZW50IHN0YWNrIHRyYWNlIGFzIGEgc3RyaW5nLCBleGNsdWRpbmcgdGhlIGN1cnJlbnQgZnVuY3Rpb24gY2FsbC5cbiAqXG4gKiBAcGFyYW0gZnJhbWVzVG9Ta2lwIC0gVGhlIG51bWJlciBvZiBmcmFtZXMgdG8gc2tpcCBpbiB0aGUgc3RhY2sgdHJhY2UuXG4gKiBAcmV0dXJucyBBIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgY3VycmVudCBzdGFjayB0cmFjZSwgZXhjbHVkaW5nIHRoZSBjdXJyZW50IGZ1bmN0aW9uIGNhbGwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdGFja1RyYWNlKGZyYW1lc1RvU2tpcCA9IDApOiBzdHJpbmcge1xuICAvLyBTa2lwcGluZyB0aGUgYGdldFN0YWNrVHJhY2VgIGZyYW1lIGl0c2VsZiwgcGx1cyB0aGUgYEVycm9yYCBoZWFkZXIgbGluZSBvbiBhbiBlbmdpbmUgdGhhdCB3cml0ZXMgb25lLlxuICBjb25zdCBHRVRfU1RBQ0tfVFJBQ0VfRlJBTUVfQ09VTlQgPSAxO1xuICBjb25zdCBhZGRpdGlvbmFsTGluZXNUb1NraXAgPSBHRVRfU1RBQ0tfVFJBQ0VfRlJBTUVfQ09VTlQgKyAoaGFzU3RhY2tIZWFkZXIoKSA/IDEgOiAwKTtcbiAgY29uc3Qgc3RhY2sgPSBlbnN1cmVOb25OdWxsYWJsZShuZXcgRXJyb3IoKS5zdGFjayk7XG4gIGNvbnN0IGxpbmVzID0gc3RhY2suc3BsaXQoJ1xcbicpO1xuICByZXR1cm4gbGluZXMuc2xpY2UoZnJhbWVzVG9Ta2lwICsgYWRkaXRpb25hbExpbmVzVG9Ta2lwKS5qb2luKCdcXG4nKTtcbn1cblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBhbiB7QGxpbmsgc3RhcnRBc3luY0Vycm9ySWdub3JlQ29udGV4dH0gc2NvcGUgaXMgY3VycmVudGx5IGFjdGl2ZS5cbiAqXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgYXQgbGVhc3Qgb25lIGlnbm9yZSBjb250ZXh0IGlzIGFjdGl2ZSwgYGZhbHNlYCBvdGhlcndpc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0FzeW5jRXJyb3JJZ25vcmVDb250ZXh0QWN0aXZlKCk6IGJvb2xlYW4ge1xuICByZXR1cm4gbW9kdWxlU3RhdGUuYXN5bmNFcnJvcklnbm9yZUNvbnRleHREZXB0aCA+IDA7XG59XG5cbi8qKlxuICogUHJpbnRzIGFuIGVycm9yIHRvIHRoZSBjb25zb2xlLCBpbmNsdWRpbmcgbmVzdGVkIGNhdXNlcyBhbmQgb3B0aW9uYWwgQU5TSSBzZXF1ZW5jZSBjbGVhcmluZy5cbiAqXG4gKiBAcGFyYW0gZXJyb3IgLSBUaGUgZXJyb3IgdG8gcHJpbnQuXG4gKiBAcGFyYW0gY29uc29sZSAtIFRoZSBjb25zb2xlIHRvIHByaW50IHRvIChkZWZhdWx0OiBgZ2xvYmFsVGhpcy5jb25zb2xlYCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcmludEVycm9yKGVycm9yOiB1bmtub3duLCBjb25zb2xlPzogQ29uc29sZSk6IHZvaWQge1xuICBjb25zb2xlID8/PSBnbG9iYWxUaGlzLmNvbnNvbGU7XG4gIGNvbnNvbGUuZXJyb3IoZXJyb3JUb1N0cmluZyhlcnJvcikpO1xufVxuXG4vKipcbiAqIFJlZ2lzdGVycyBhbiBldmVudCBoYW5kbGVyIGZvciBhc3luY2hyb25vdXMgZXJyb3JzLlxuICpcbiAqIFJlZ2lzdGVyaW5nIGEgaGFuZGxlciBkb2VzIG5vdCBtYXJrIHRoZSBlcnJvcnMgaXQgcmVjZWl2ZXMgYXMgZXhwZWN0ZWQgXHUyMDE0IHNlZVxuICoge0BsaW5rIGVtaXRBc3luY0Vycm9yRXZlbnR9LiBBIHRlc3QgdGhhdCBkZWxpYmVyYXRlbHkgdHJpZ2dlcnMgYW4gYXN5bmMgZXJyb3Igb3BlbnMgYVxuICoge0BsaW5rIHN0YXJ0QXN5bmNFcnJvcklnbm9yZUNvbnRleHR9IHNjb3BlIHJlZ2FyZGxlc3Mgb2Ygd2hvIGlzIGxpc3RlbmluZy5cbiAqXG4gKiBAcGFyYW0gaGFuZGxlciAtIFRoZSBoYW5kbGVyIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIGFuIGFzeW5jaHJvbm91cyBlcnJvciBldmVudCBvY2N1cnMuXG4gKiBAcmV0dXJucyBBIHtAbGluayBEaXNwb3NhYmxlfSB0aGF0IHVucmVnaXN0ZXJzIHRoZSBoYW5kbGVyIHdoZW4gZGlzcG9zZWQsIGZvciB1c2Ugd2l0aCBgdXNpbmdgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJBc3luY0Vycm9yRXZlbnRIYW5kbGVyKGhhbmRsZXI6IChhc3luY0Vycm9yOiB1bmtub3duKSA9PiB2b2lkKTogRGlzcG9zYWJsZSB7XG4gIGNvbnN0IGV2ZW50UmVmID0gZXJyb3JBc3luY0V2ZW50cy5vbignYXN5bmNFcnJvcicsIGhhbmRsZXIpO1xuICByZXR1cm4gbmV3IENhbGxiYWNrRGlzcG9zYWJsZSh7XG4gICAgY2FsbGJhY2s6ICgpOiB2b2lkID0+IHtcbiAgICAgIGVycm9yQXN5bmNFdmVudHMub2ZmcmVmKGV2ZW50UmVmKTtcbiAgICB9LFxuICAgIG11bHRpcGxlRGlzcG9zZUJlaGF2aW9yOiBNdWx0aXBsZURpc3Bvc2VCZWhhdmlvci5JZ25vcmVcbiAgfSk7XG59XG5cbi8qKlxuICogT3BlbnMgYW4gaWdub3JlIGNvbnRleHQgaW4gd2hpY2ggYXN5bmMgZXJyb3JzIGFyZSB0cmVhdGVkIGFzIGV4cGVjdGVkIHJhdGhlciB0aGFuIHVuaGFuZGxlZCwgc28gdGhlXG4gKiB0ZXN0IGhhcm5lc3MgZG9lcyBub3QgZmFpbCB0aGUgdGVzdC5cbiAqXG4gKiBXaGlsZSB0aGUgcmV0dXJuZWQgZGlzcG9zYWJsZSBpcyBoZWxkLCBhbiBhc3luYyBlcnJvciBlbWl0dGVkIGRpcmVjdGx5IChzZWVcbiAqIHtAbGluayBlbWl0QXN5bmNFcnJvckV2ZW50fSkgaXMgbm90IGNvbGxlY3RlZCBhcyB1bmhhbmRsZWQuIENydWNpYWxseSwgYSBmaXJlLWFuZC1mb3JnZXQgb3BlcmF0aW9uXG4gKiBzY2hlZHVsZWQgd2l0aGluIHRoZSBzY29wZSAoZS5nLiB2aWEge0BsaW5rIGFzeW5jIWludm9rZUFzeW5jU2FmZWx5fSkgaXMgYWxzbyBpZ25vcmVkIHdoZW4gaXQgbGF0ZXJcbiAqIHJlamVjdHMgXHUyMDE0IGV2ZW4gYWZ0ZXIgdGhlIHNjb3BlIGhhcyBleGl0ZWQgXHUyMDE0IGJlY2F1c2Uge0BsaW5rIGFzeW5jIWFkZEVycm9ySGFuZGxlcn0gY2FwdHVyZXMgdGhlIGFjdGl2ZVxuICogaWdub3JlIGNvbnRleHQgYXQgc2NoZWR1bGUgdGltZS4gQSB0ZXN0IHRoZXJlZm9yZSBkb2VzIG5vdCBuZWVkIHRvIGRyYWluIHRoZSBvcGVyYXRpb24gaXRzZWxmOlxuICpcbiAqIGBgYHRzXG4gKiBpdCgnZG9lcyBub3QgZmFpbCcsICgpID0+IHtcbiAqICAgdXNpbmcgXyA9IHN0YXJ0QXN5bmNFcnJvcklnbm9yZUNvbnRleHQoKTtcbiAqICAgaW52b2tlQXN5bmNTYWZlbHkoKCkgPT4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCdkZWxpYmVyYXRlbHkgc3dhbGxvd2VkJykpKTtcbiAqIH0pO1xuICogYGBgXG4gKlxuICogQ29udGV4dHMgbmVzdDsgdGhlIGlnbm9yZSBvbmx5IGVuZHMgb25jZSBldmVyeSBvcGVuIGNvbnRleHQgaGFzIGJlZW4gZGlzcG9zZWQuXG4gKlxuICogQHJldHVybnMgQSB7QGxpbmsgRGlzcG9zYWJsZX0gdGhhdCBjbG9zZXMgdGhlIGlnbm9yZSBjb250ZXh0IHdoZW4gZGlzcG9zZWQsIGZvciB1c2Ugd2l0aCBgdXNpbmdgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RhcnRBc3luY0Vycm9ySWdub3JlQ29udGV4dCgpOiBEaXNwb3NhYmxlIHtcbiAgbW9kdWxlU3RhdGUuYXN5bmNFcnJvcklnbm9yZUNvbnRleHREZXB0aCsrO1xuICByZXR1cm4gbmV3IENhbGxiYWNrRGlzcG9zYWJsZSh7XG4gICAgY2FsbGJhY2s6ICgpOiB2b2lkID0+IHtcbiAgICAgIG1vZHVsZVN0YXRlLmFzeW5jRXJyb3JJZ25vcmVDb250ZXh0RGVwdGgtLTtcbiAgICB9LFxuICAgIG11bHRpcGxlRGlzcG9zZUJlaGF2aW9yOiBNdWx0aXBsZURpc3Bvc2VCZWhhdmlvci5JZ25vcmVcbiAgfSk7XG59XG5cbi8qKlxuICogT3BlbnMgYSB3aW5kb3cgaW4gd2hpY2ggYXN5bmMgZXJyb3JzIGVtaXR0ZWQgb3V0c2lkZSBhbiBpZ25vcmUgY29udGV4dCBhcmUgY29sbGVjdGVkIGFzIHVuaGFuZGxlZFxuICogKHNlZSB7QGxpbmsgZW1pdEFzeW5jRXJyb3JFdmVudH0pLCBkaXNjYXJkaW5nIGFueXRoaW5nIGNvbGxlY3RlZCBieSBhIHByZXZpb3VzIHdpbmRvdy5cbiAqXG4gKiBJbnRlbmRlZCBmb3IgdGhlIHRlc3QgaGFybmVzcyBvbmx5OiB0aGUgcGVyLXRlc3Qgc2V0dXAgb3BlbnMgYSB3aW5kb3cgYmVmb3JlIGVhY2ggdGVzdCBhbmQgZW1wdGllcyBpdFxuICogYWZ0ZXIgZWFjaCB0ZXN0IHZpYSB7QGxpbmsgZHJhaW5Db2xsZWN0ZWRVbmhhbmRsZWRBc3luY0Vycm9yc30sIGNsb3NpbmcgaXQgZm9yIGdvb2Qgd2l0aFxuICoge0BsaW5rIHN0b3BDb2xsZWN0aW5nVW5oYW5kbGVkQXN5bmNFcnJvcnN9IG9uY2UgdGhlIGZpbGUncyBsYXN0IHRlc3QgaGFzIHJ1bi4gSW4gcHJvZHVjdGlvbiBubyB3aW5kb3dcbiAqIGlzIG9wZW4sIHNvIGVtaXR0aW5nIGFuIGFzeW5jIGVycm9yIGNhcnJpZXMgbm8gYm9va2tlZXBpbmcgb3ZlcmhlYWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdGFydENvbGxlY3RpbmdVbmhhbmRsZWRBc3luY0Vycm9ycygpOiB2b2lkIHtcbiAgbW9kdWxlU3RhdGUuY29sbGVjdGVkVW5oYW5kbGVkQXN5bmNFcnJvcnMgPSBbXTtcbn1cblxuLyoqXG4gKiBDbG9zZXMgdGhlIHdpbmRvdyBvcGVuZWQgYnkge0BsaW5rIHN0YXJ0Q29sbGVjdGluZ1VuaGFuZGxlZEFzeW5jRXJyb3JzfSBhbmQgcmV0dXJucyB0aGUgdW5oYW5kbGVkXG4gKiBhc3luYyBlcnJvcnMgY29sbGVjdGVkIHdoaWxlIGl0IHdhcyBvcGVuLlxuICpcbiAqIFVzZSB7QGxpbmsgZHJhaW5Db2xsZWN0ZWRVbmhhbmRsZWRBc3luY0Vycm9yc30gaW5zdGVhZCB3aGVyZXZlciBjb2xsZWN0aW9uIG11c3QgY29udGludWUgYWZ0ZXJ3YXJkcyBcdTIwMTRcbiAqIG9uY2UgdGhlIHdpbmRvdyBpcyBjbG9zZWQsIGEgbGF0ZXIgYXN5bmMgZXJyb3IgaXMgbm90IGNvbGxlY3RlZCBieSBhbnlvbmUuXG4gKlxuICogQHJldHVybnMgVGhlIGNvbGxlY3RlZCB1bmhhbmRsZWQgYXN5bmMgZXJyb3JzLCBvciBhbiBlbXB0eSBhcnJheSBpZiBubyB3aW5kb3cgd2FzIG9wZW4uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdG9wQ29sbGVjdGluZ1VuaGFuZGxlZEFzeW5jRXJyb3JzKCk6IHVua25vd25bXSB7XG4gIGNvbnN0IGNvbGxlY3RlZEVycm9ycyA9IG1vZHVsZVN0YXRlLmNvbGxlY3RlZFVuaGFuZGxlZEFzeW5jRXJyb3JzID8/IFtdO1xuICBtb2R1bGVTdGF0ZS5jb2xsZWN0ZWRVbmhhbmRsZWRBc3luY0Vycm9ycyA9IG51bGw7XG4gIHJldHVybiBjb2xsZWN0ZWRFcnJvcnM7XG59XG5cbi8qKlxuICogVGhyb3dzIGFuIGVycm9yIHdpdGggdGhlIHNwZWNpZmllZCBtZXNzYWdlLlxuICpcbiAqIEBwYXJhbSBlcnJvciAtIFRoZSBlcnJvciB0byB0aHJvdy5cbiAqIEB0aHJvd3NcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRocm93RXhwcmVzc2lvbihlcnJvcjogdW5rbm93bik6IG5ldmVyIHtcbiAgdGhyb3cgZXJyb3I7XG59XG5cbmZ1bmN0aW9uIGdlbmVyYXRlTmVzdGVkRXJyb3JMaW5lcyhuZXN0ZWRFcnJvcjogdW5rbm93biwgdGl0bGU6IHN0cmluZyk6IEVycm9yTGluZVtdIHtcbiAgY29uc3QgbGluZXMgPSBbdG9UaXRsZUxpbmUodGl0bGUpLCAuLi5nZXRFcnJvckxpbmVzKG5lc3RlZEVycm9yKS5maWx0ZXIoKGxpbmUpID0+IGxpbmUudGV4dC50cmltKCkgIT09ICcnKV07XG4gIHJldHVybiBsaW5lcy5tYXAoKGxpbmUpID0+IGxpbmUuaXNGcmFtZSA/IGxpbmUgOiB7IGlzRnJhbWU6IHRydWUsIHRleHQ6IGdlbmVyYXRlU3RhY2tUcmFjZUxpbmUobGluZS50ZXh0KSB9KTtcbn1cblxuZnVuY3Rpb24gZ2VuZXJhdGVTdGFja1RyYWNlTGluZSh0aXRsZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGAke1NUQUNLX1RSQUNFX1BSRUZJWH0gLS0tICR7dGl0bGV9IC0tLSAoMClgO1xufVxuXG4vKipcbiAqIEJ1aWxkcyB0aGUgYE5hbWU6IG1lc3NhZ2VgIGhlYWRlciB0aGUgd2F5IFY4IHdyaXRlcyBpdCBpbnRvIGAuc3RhY2tgIChhIGJhcmUgYE5hbWVgIGZvciBhbiBlbXB0eSBtZXNzYWdlKS5cbiAqXG4gKiBAcGFyYW0gZXJyb3IgLSBUaGUgZXJyb3IuXG4gKiBAcmV0dXJucyBUaGUgaGVhZGVyLCB3aGljaCBzcGFucyBzZXZlcmFsIGxpbmVzIHdoZW4gdGhlIG1lc3NhZ2UgZG9lcy5cbiAqL1xuZnVuY3Rpb24gZ2V0RXJyb3JIZWFkZXIoZXJyb3I6IEVycm9yKTogc3RyaW5nIHtcbiAgcmV0dXJuIGVycm9yLm1lc3NhZ2UgPyBgJHtlcnJvci5uYW1lfTogJHtlcnJvci5tZXNzYWdlfWAgOiBlcnJvci5uYW1lO1xufVxuXG5mdW5jdGlvbiBnZXRFcnJvckxpbmVzKGVycm9yOiB1bmtub3duKTogRXJyb3JMaW5lW10ge1xuICBpZiAoIShlcnJvciBpbnN0YW5jZW9mIEVycm9yKSkge1xuICAgIHJldHVybiBTdHJpbmcoZXJyb3IpLnNwbGl0KCdcXG4nKS5tYXAoKHRleHQpID0+IHRvVGl0bGVMaW5lKHRleHQpKTtcbiAgfVxuXG4gIGNvbnN0IGxpbmVzID0gZ2V0T3duRXJyb3JMaW5lcyhlcnJvcik7XG4gIGlmIChlcnJvci5jYXVzZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgbGluZXMucHVzaCguLi5nZW5lcmF0ZU5lc3RlZEVycm9yTGluZXMoZXJyb3IuY2F1c2UsICdDYXVzZWQgYnk6JykpO1xuICB9XG4gIC8vIEEgc3ViY2xhc3MsIGEgY3Jvc3MtcmVhbG0gaW5zdGFuY2Ugb3IgYSByZS13cmFwcGVkIG9uZSBjYW4gcGFzcyBgaW5zdGFuY2VvZiBBZ2dyZWdhdGVFcnJvcmAgd2l0aG91dCBhbiBgZXJyb3JzYCBhcnJheS5cbiAgY29uc3QgYWdncmVnYXRlZEVycm9yczogdW5rbm93biA9IGVycm9yIGluc3RhbmNlb2YgQWdncmVnYXRlRXJyb3IgPyBlcnJvci5lcnJvcnMgOiB1bmRlZmluZWQ7XG4gIGlmIChBcnJheS5pc0FycmF5KGFnZ3JlZ2F0ZWRFcnJvcnMpKSB7XG4gICAgZm9yIChjb25zdCBbaW5kZXgsIGFnZ3JlZ2F0ZWRFcnJvcl0gb2YgYWdncmVnYXRlZEVycm9ycy5lbnRyaWVzKCkpIHtcbiAgICAgIGxpbmVzLnB1c2goLi4uZ2VuZXJhdGVOZXN0ZWRFcnJvckxpbmVzKGFnZ3JlZ2F0ZWRFcnJvciwgYEFnZ3JlZ2F0ZWQgZXJyb3IgIyR7U3RyaW5nKGluZGV4ICsgMSl9OmApKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGxpbmVzO1xufVxuXG4vKipcbiAqIEJ1aWxkcyB0aGUgbGFzdC1yZXNvcnQgcmVwcmVzZW50YXRpb24gb2YgYW4gZXJyb3IgdGhhdCB7QGxpbmsgZXJyb3JUb1N0cmluZ30gZmFpbGVkIHRvIGZvcm1hdC5cbiAqXG4gKiBAcGFyYW0gZXJyb3IgLSBUaGUgZXJyb3IgdGhhdCBjb3VsZCBub3QgYmUgZm9ybWF0dGVkLlxuICogQHBhcmFtIGZvcm1hdHRpbmdFcnJvciAtIFdoYXQgdGhlIGZvcm1hdHRlciB0aHJldy5cbiAqIEByZXR1cm5zIFRoZSBlcnJvcidzIHN0cmluZywgaXRzIHN0YWNrIHdoZW4gaXQgaGFzIG9uZSwgYW5kIGEgbm90ZSBuYW1pbmcgdGhlIGZvcm1hdHRpbmcgZmFpbHVyZS5cbiAqL1xuZnVuY3Rpb24gZ2V0RmFsbGJhY2tFcnJvclN0cmluZyhlcnJvcjogdW5rbm93biwgZm9ybWF0dGluZ0Vycm9yOiB1bmtub3duKTogc3RyaW5nIHtcbiAgY29uc3QgZXJyb3JTdHJpbmcgPSBzYWZlVG9TdHJpbmcoKCkgPT4gU3RyaW5nKGVycm9yKSk7XG4gIGNvbnN0IHN0YWNrID0gc2FmZVRvU3RyaW5nKCgpID0+IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5zdGFjayA/PyAnJyA6ICcnKTtcbiAgY29uc3QgbGluZXMgPSBzdGFjay5zdGFydHNXaXRoKGVycm9yU3RyaW5nKSA/IFtzdGFja10gOiBbZXJyb3JTdHJpbmcsIHN0YWNrXTtcbiAgbGluZXMucHVzaChgKGVycm9yVG9TdHJpbmcgY291bGQgbm90IGZvcm1hdCB0aGlzIGVycm9yOiAke3NhZmVUb1N0cmluZygoKSA9PiBTdHJpbmcoZm9ybWF0dGluZ0Vycm9yKSl9KWApO1xuICByZXR1cm4gbGluZXMuZmlsdGVyKChsaW5lKSA9PiBsaW5lICE9PSAnJykuam9pbignXFxuJyk7XG59XG5cbmZ1bmN0aW9uIGdldE93bkVycm9yTGluZXMoZXJyb3I6IEVycm9yKTogRXJyb3JMaW5lW10ge1xuICBjb25zdCBoZWFkZXJMaW5lcyA9IGdldEVycm9ySGVhZGVyKGVycm9yKS5zcGxpdCgnXFxuJykubWFwKCh0ZXh0KSA9PiB0b1RpdGxlTGluZSh0ZXh0KSk7XG4gIGlmIChlcnJvci5zdGFjayA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIGhlYWRlckxpbmVzO1xuICB9XG5cbiAgY29uc3Qgc3RhY2tMaW5lcyA9IGVycm9yLnN0YWNrLnNwbGl0KCdcXG4nKTtcbiAgaWYgKGhhc1N0YWNrSGVhZGVyKCkpIHtcbiAgICByZXR1cm4gc3RhY2tMaW5lcy5tYXAoKHRleHQpID0+ICh7IGlzRnJhbWU6IHRleHQuc3RhcnRzV2l0aChTVEFDS19UUkFDRV9QUkVGSVgpLCB0ZXh0IH0pKTtcbiAgfVxuXG4gIC8vIE9uIGFuIGVuZ2luZSB3aXRob3V0IGEgaGVhZGVyIGxpbmUsIHRoZSBgLnN0YWNrYCBpcyBmcmFtZXMgb25seSwgaW4gaXRzIG93biBgbmFtZUB1cmw6bGluZTpjb2xgIGZvcm0sIHNvIHRoZSBtZXNzYWdlIGlzIG5vd2hlcmUgaW4gaXQ6XG4gIC8vIFByZXBlbmQgdGhlIGhlYWRlciwgYW5kIHRha2UgZXZlcnkgc3RhY2sgbGluZSBhcyBhIGZyYW1lLlxuICByZXR1cm4gWy4uLmhlYWRlckxpbmVzLCAuLi5zdGFja0xpbmVzLmZpbHRlcigodGV4dCkgPT4gdGV4dC50cmltKCkgIT09ICcnKS5tYXAoKHRleHQpID0+ICh7IGlzRnJhbWU6IHRydWUsIHRleHQgfSkpXTtcbn1cblxuLyoqXG4gKiBIYW5kbGVzIGFzeW5jaHJvbm91cyBlcnJvcnMgYnkgcHJpbnRpbmcgdGhlbS5cbiAqXG4gKiBAcGFyYW0gYXN5bmNFcnJvciAtIFRoZSBhc3luY2hyb25vdXMgZXJyb3IgdG8gaGFuZGxlLlxuICovXG5mdW5jdGlvbiBoYW5kbGVBc3luY0Vycm9yKGFzeW5jRXJyb3I6IHVua25vd24pOiB2b2lkIHtcbiAgcHJpbnRFcnJvcihhc3luY0Vycm9yKTtcbn1cblxuLyoqXG4gKiBBbnN3ZXJzIHdoZXRoZXIgdGhpcyBlbmdpbmUncyBgLnN0YWNrYCBvcGVucyB3aXRoIHRoZSBlcnJvcidzIGBOYW1lOiBtZXNzYWdlYCBoZWFkZXIgbGluZS5cbiAqXG4gKiBWOCB3cml0ZXMgb25lOyBKYXZhU2NyaXB0Q29yZSAoZXZlcnkgQXBwbGUgcGxhdGZvcm0sIHNvIE9ic2lkaWFuIG9uIGlPUyBhbmQgaVBhZE9TKSBhbmQgU3BpZGVyTW9ua2V5IHdyaXRlIGZyYW1lcyBvbmx5LlxuICogVGhlIGFuc3dlciBiZWxvbmdzIHRvIHRoZSBlbmdpbmUsIG5vdCB0aGUgcGxhdGZvcm0sIHNvIGl0IGlzIHByb2JlZCByYXRoZXIgdGhhbiByZWFkIG9mZiBgUGxhdGZvcm1gLiBJdCBpcyBwcm9iZWQgb24gZXZlcnlcbiAqIGNhbGwgcmF0aGVyIHRoYW4gY2FjaGVkLCBiZWNhdXNlIGBFcnJvci5wcmVwYXJlU3RhY2tUcmFjZWAgY2FuIHJlc2hhcGUgVjgncyBzdGFjayBhdCBydW50aW1lLCBhbmQgb25lIGV4dHJhIGBFcnJvcmAgY29zdHNcbiAqIG5vdGhpbmcgb24gYSBwYXRoIHRoYXQgaXMgYWxyZWFkeSBoYW5kbGluZyBvbmUuXG4gKlxuICogQHJldHVybnMgYHRydWVgIGlmIGAuc3RhY2tgIGNhcnJpZXMgdGhlIGhlYWRlciBsaW5lLlxuICovXG5mdW5jdGlvbiBoYXNTdGFja0hlYWRlcigpOiBib29sZWFuIHtcbiAgY29uc3QgZmlyc3RMaW5lID0gbmV3IEVycm9yKFNUQUNLX0hFQURFUl9QUk9CRV9NRVNTQUdFKS5zdGFjaz8uc3BsaXQoJ1xcbicsIDEpWzBdO1xuICByZXR1cm4gZmlyc3RMaW5lID09PSBgRXJyb3I6ICR7U1RBQ0tfSEVBREVSX1BST0JFX01FU1NBR0V9YDtcbn1cblxuZnVuY3Rpb24gc2FmZVRvU3RyaW5nKHRvU3RyaW5nOiAoKSA9PiBzdHJpbmcpOiBzdHJpbmcge1xuICB0cnkge1xuICAgIHJldHVybiB0b1N0cmluZygpO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gJzx1bnByaW50YWJsZT4nO1xuICB9XG59XG5cbmZ1bmN0aW9uIHRvVGl0bGVMaW5lKHRleHQ6IHN0cmluZyk6IEVycm9yTGluZSB7XG4gIHJldHVybiB7IGlzRnJhbWU6IGZhbHNlLCB0ZXh0IH07XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFB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
@@ -96,6 +96,9 @@ export declare function emitAsyncErrorEvent(asyncError: unknown, shouldIgnore?:
96
96
  * Converts an error to a string representation, including nested causes and the aggregated errors of
97
97
  * an `AggregateError`, with indentation.
98
98
  *
99
+ * Never throws: if the error cannot be formatted (a throwing getter, a malformed nested error), it falls back to the
100
+ * error's own string and stack, so the error being reported is never hidden behind a failure to report it.
101
+ *
99
102
  * @param error - The error to convert to a string.
100
103
  * @returns The string representation of the error.
101
104
  */
@@ -51,6 +51,15 @@ class LibraryContext {
51
51
  get debugNamespace() {
52
52
  return this.params.debugNamespace ?? DEFAULT_DEBUG_NAMESPACE;
53
53
  }
54
+ /**
55
+ * The earlier names of {@link debugNamespace} a filter may still be written for. Empty until {@link init} is called
56
+ * with some.
57
+ *
58
+ * @returns The debug namespace aliases.
59
+ */
60
+ get debugNamespaceAliases() {
61
+ return this.params.debugNamespaceAliases ?? [];
62
+ }
54
63
  /**
55
64
  * The namespace prefix prepended to the library's debug namespaces. Empty until {@link init} is called.
56
65
  *
@@ -97,4 +106,4 @@ const Library = new LibraryContext();
97
106
  LIBRARY_NAME,
98
107
  Library
99
108
  });
100
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2xpYnJhcnkudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBIZWxwZXJzIGZvciB3b3JraW5nIHdpdGggdGhlIGBAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWJgIGxpYnJhcnkuXG4gKi9cblxuLyoqXG4gKiBBIG5hbWUgb2YgdGhlIGBAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWJgIGxpYnJhcnkuXG4gKi9cbmV4cG9ydCBjb25zdCBMSUJSQVJZX05BTUUgPSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliJztcblxuLyoqXG4gKiBUaGUgZGVidWcgbmFtZXNwYWNlIHRoZSBsaWJyYXJ5J3Mgb3duIGRlYnVnZ2VycyBsaXZlIHVuZGVyIHVudGlsIHtAbGluayBMaWJyYXJ5LmluaXR9IHN1cHBsaWVzIGFub3RoZXIuXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0RFQlVHX05BTUVTUEFDRSA9ICd0eXBlc2NyaXB0LWxpYic7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIExpYnJhcnkuaW5pdH0uXG4gKlxuICogVGhlc2UgYXJlIHB1cmVseSBjb3NtZXRpYyB2YWx1ZXMgdGhlIGhvc3QgaW5qZWN0cyBvbmNlIGF0IGluaXRpYWxpemF0aW9uLCBzbyB0aGUgbGlicmFyeSBpdHNlbGYgY2Fycmllc1xuICogbm8ga25vd2xlZGdlIG9mIHdobyBob3N0cyBpdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMaWJyYXJ5SW5pdFBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgVVJMIG9mIHRoZSBndWlkZSBleHBsYWluaW5nIGhvdyB0byB0dXJuIGRlYnVnIG1lc3NhZ2VzIG9uIGFuZCBvZmYsIG5hbWVkIGluIHRoZSBsaWJyYXJ5J3MgZGVidWcgbWVzc2FnZXMuXG4gICAqIFdpdGhvdXQgb25lLCB0aGUgbWVzc2FnZXMgbmFtZSBubyBndWlkZS5cbiAgICovXG4gIHJlYWRvbmx5IGRlYnVnR3VpZGVVcmw/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lc3BhY2UgdGhlIGxpYnJhcnkncyBvd24gZGVidWdnZXJzIGxpdmUgdW5kZXIuIERlZmF1bHRzIHRvIHtAbGluayBERUZBVUxUX0RFQlVHX05BTUVTUEFDRX0uXG4gICAqIEEgaG9zdCB0aGF0IHB1Ymxpc2hlcyBpdHMgb3duIGRlYnVnIG5hbWVzcGFjZSB0byBpdHMgdXNlcnMgcGFzc2VzIGl0IGhlcmUsIHNvIHRoZWlyIGZpbHRlcnMga2VlcCBtYXRjaGluZy5cbiAgICovXG4gIHJlYWRvbmx5IGRlYnVnTmFtZXNwYWNlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZXNwYWNlIHByZWZpeCBwcmVwZW5kZWQgdG8gdGhlIGxpYnJhcnkncyBkZWJ1ZyBuYW1lc3BhY2VzIChlLmcuIGAke3BsdWdpbklkfTpgKS5cbiAgICovXG4gIHJlYWRvbmx5IGRlYnVnUHJlZml4TmFtZXNwYWNlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgZGVidWcgbG9nZ2luZyBzaG91bGQgYXBwZW5kIGEgcmljaCBEZXZUb29scyBzdGFjayB0cmFjZS5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFByaW50U3RhY2tUcmFjZTogYm9vbGVhbjtcbn1cblxuY29uc3QgREVGQVVMVF9QQVJBTVM6IExpYnJhcnlJbml0UGFyYW1zID0ge1xuICBkZWJ1Z1ByZWZpeE5hbWVzcGFjZTogJycsXG4gIHNob3VsZFByaW50U3RhY2tUcmFjZTogZmFsc2Vcbn07XG5cbi8qKlxuICogVGhlIHNpbmdsZSwgZGV0ZXJtaW5pc3RpYyBpbml0aWFsaXphdGlvbiBlbnRyeSBwb2ludCBmb3IgdGhlIGBAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWJgIGxpYnJhcnkuXG4gKlxuICogVGhlIGhvc3QgY2FsbHMge0BsaW5rIExpYnJhcnkuaW5pdH0gZXhhY3RseSBvbmNlIHRvIHB1c2ggaXRzIGNvc21ldGljIGNvbmZpZ3VyYXRpb247IHRoZSBsaWJyYXJ5IG9ubHlcbiAqIHJlYWRzIGl0IHRocm91Z2ggdGhlIGdldHRlcnMuIENhbGxpbmcge0BsaW5rIExpYnJhcnkuaW5pdH0gbW9yZSB0aGFuIG9uY2UgdGhyb3dzIFx1MjAxNFxuICoge0BsaW5rIExpYnJhcnkucmVzZXRUb0RlZmF1bHR9IGNsZWFycyB0aGUgc3RhdGUgKGUuZy4gYmV0d2VlbiB0ZXN0cywgb3Igb24gdW5sb2FkKSBhbmQgYWxsb3dzXG4gKiByZS1pbml0aWFsaXphdGlvbi5cbiAqL1xuY2xhc3MgTGlicmFyeUNvbnRleHQge1xuICAvKipcbiAgICogVGhlIFVSTCBvZiB0aGUgZ3VpZGUgZXhwbGFpbmluZyBob3cgdG8gdHVybiBkZWJ1ZyBtZXNzYWdlcyBvbiBhbmQgb2ZmLiBFbXB0eSB1bnRpbCB7QGxpbmsgaW5pdH0gaXMgY2FsbGVkIHdpdGggb25lLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgZGVidWcgZ3VpZGUgVVJMLlxuICAgKi9cbiAgcHVibGljIGdldCBkZWJ1Z0d1aWRlVXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucGFyYW1zLmRlYnVnR3VpZGVVcmwgPz8gJyc7XG4gIH1cblxuICAvKipcbiAgICogVGhlIG5hbWVzcGFjZSB0aGUgbGlicmFyeSdzIG93biBkZWJ1Z2dlcnMgbGl2ZSB1bmRlci5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIGRlYnVnIG5hbWVzcGFjZS5cbiAgICovXG4gIHB1YmxpYyBnZXQgZGVidWdOYW1lc3BhY2UoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wYXJhbXMuZGVidWdOYW1lc3BhY2UgPz8gREVGQVVMVF9ERUJVR19OQU1FU1BBQ0U7XG4gIH1cblxuICAvKipcbiAgICogVGhlIG5hbWVzcGFjZSBwcmVmaXggcHJlcGVuZGVkIHRvIHRoZSBsaWJyYXJ5J3MgZGVidWcgbmFtZXNwYWNlcy4gRW1wdHkgdW50aWwge0BsaW5rIGluaXR9IGlzIGNhbGxlZC5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIGRlYnVnIG5hbWVzcGFjZSBwcmVmaXguXG4gICAqL1xuICBwdWJsaWMgZ2V0IGRlYnVnUHJlZml4TmFtZXNwYWNlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucGFyYW1zLmRlYnVnUHJlZml4TmFtZXNwYWNlO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgZGVidWcgbG9nZ2luZyBzaG91bGQgYXBwZW5kIGEgcmljaCBEZXZUb29scyBzdGFjayB0cmFjZS4gYGZhbHNlYCB1bnRpbCB7QGxpbmsgaW5pdH0gaXMgY2FsbGVkLlxuICAgKlxuICAgKiBAcmV0dXJucyBXaGV0aGVyIHRvIHByaW50IHN0YWNrIHRyYWNlcy5cbiAgICovXG4gIHB1YmxpYyBnZXQgc2hvdWxkUHJpbnRTdGFja1RyYWNlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnBhcmFtcy5zaG91bGRQcmludFN0YWNrVHJhY2U7XG4gIH1cblxuICBwcml2YXRlIGlzSW5pdGlhbGl6ZWQgPSBmYWxzZTtcblxuICBwcml2YXRlIHBhcmFtczogTGlicmFyeUluaXRQYXJhbXMgPSB7IC4uLkRFRkFVTFRfUEFSQU1TIH07XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemVzIHRoZSBsaWJyYXJ5IHdpdGggdGhlIGhvc3QncyBjb3NtZXRpYyBjb25maWd1cmF0aW9uLiBNdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2U7IGNhbGxpbmcgaXRcbiAgICogYWdhaW4gYmVmb3JlIHtAbGluayByZXNldFRvRGVmYXVsdH0gdGhyb3dzLlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zIC0gVGhlIGNvc21ldGljIGNvbmZpZ3VyYXRpb24gdG8gaW5qZWN0LlxuICAgKi9cbiAgcHVibGljIGluaXQocGFyYW1zOiBMaWJyYXJ5SW5pdFBhcmFtcyk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzSW5pdGlhbGl6ZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHtMSUJSQVJZX05BTUV9IGlzIGFscmVhZHkgaW5pdGlhbGl6ZWQuIENhbGwgTGlicmFyeS5yZXNldFRvRGVmYXVsdCgpIGJlZm9yZSBpbml0aWFsaXppbmcgYWdhaW4uYCk7XG4gICAgfVxuICAgIHRoaXMuaXNJbml0aWFsaXplZCA9IHRydWU7XG4gICAgdGhpcy5wYXJhbXMgPSB7IC4uLnBhcmFtcyB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0cyB0aGUgbGlicmFyeSBiYWNrIHRvIGl0cyBkZWZhdWx0ICh1bmluaXRpYWxpemVkKSBzdGF0ZSwgYWxsb3dpbmcge0BsaW5rIGluaXR9IHRvIGJlIGNhbGxlZCBhZ2Fpbi5cbiAgICovXG4gIHB1YmxpYyByZXNldFRvRGVmYXVsdCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzSW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgICB0aGlzLnBhcmFtcyA9IHsgLi4uREVGQVVMVF9QQVJBTVMgfTtcbiAgfVxufVxuXG4vKipcbiAqIFRoZSBzaW5nbGUge0BsaW5rIExpYnJhcnlDb250ZXh0fSBpbnN0YW5jZSBcdTIwMTQgdGhlIGxpYnJhcnkncyBkZXRlcm1pbmlzdGljIGluaXRpYWxpemF0aW9uIGVudHJ5IHBvaW50LlxuICovXG5leHBvcnQgY29uc3QgTGlicmFyeSA9IG5ldyBMaWJyYXJ5Q29udGV4dCgpO1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVNPLE1BQU0sZUFBZTtBQUtyQixNQUFNLDBCQUEwQjtBQWdDdkMsTUFBTSxpQkFBb0M7QUFBQSxFQUN4QyxzQkFBc0I7QUFBQSxFQUN0Qix1QkFBdUI7QUFDekI7QUFVQSxNQUFNLGVBQWU7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFNbkIsSUFBVyxnQkFBd0I7QUFDakMsV0FBTyxLQUFLLE9BQU8saUJBQWlCO0FBQUEsRUFDdEM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPQSxJQUFXLGlCQUF5QjtBQUNsQyxXQUFPLEtBQUssT0FBTyxrQkFBa0I7QUFBQSxFQUN2QztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9BLElBQVcsdUJBQStCO0FBQ3hDLFdBQU8sS0FBSyxPQUFPO0FBQUEsRUFDckI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPQSxJQUFXLHdCQUFpQztBQUMxQyxXQUFPLEtBQUssT0FBTztBQUFBLEVBQ3JCO0FBQUEsRUFFUSxnQkFBZ0I7QUFBQSxFQUVoQixTQUE0QixFQUFFLEdBQUcsZUFBZTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUWpELEtBQUssUUFBaUM7QUFDM0MsUUFBSSxLQUFLLGVBQWU7QUFDdEIsWUFBTSxJQUFJLE1BQU0sR0FBRyxZQUFZLG1GQUFtRjtBQUFBLElBQ3BIO0FBQ0EsU0FBSyxnQkFBZ0I7QUFDckIsU0FBSyxTQUFTLEVBQUUsR0FBRyxPQUFPO0FBQUEsRUFDNUI7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtPLGlCQUF1QjtBQUM1QixTQUFLLGdCQUFnQjtBQUNyQixTQUFLLFNBQVMsRUFBRSxHQUFHLGVBQWU7QUFBQSxFQUNwQztBQUNGO0FBS08sTUFBTSxVQUFVLElBQUksZUFBZTsiLAogICJuYW1lcyI6IFtdCn0K
109
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2xpYnJhcnkudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBIZWxwZXJzIGZvciB3b3JraW5nIHdpdGggdGhlIGBAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWJgIGxpYnJhcnkuXG4gKi9cblxuLyoqXG4gKiBBIG5hbWUgb2YgdGhlIGBAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWJgIGxpYnJhcnkuXG4gKi9cbmV4cG9ydCBjb25zdCBMSUJSQVJZX05BTUUgPSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliJztcblxuLyoqXG4gKiBUaGUgZGVidWcgbmFtZXNwYWNlIHRoZSBsaWJyYXJ5J3Mgb3duIGRlYnVnZ2VycyBsaXZlIHVuZGVyIHVudGlsIHtAbGluayBMaWJyYXJ5LmluaXR9IHN1cHBsaWVzIGFub3RoZXIuXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0RFQlVHX05BTUVTUEFDRSA9ICd0eXBlc2NyaXB0LWxpYic7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIExpYnJhcnkuaW5pdH0uXG4gKlxuICogVGhlc2UgYXJlIHB1cmVseSBjb3NtZXRpYyB2YWx1ZXMgdGhlIGhvc3QgaW5qZWN0cyBvbmNlIGF0IGluaXRpYWxpemF0aW9uLCBzbyB0aGUgbGlicmFyeSBpdHNlbGYgY2Fycmllc1xuICogbm8ga25vd2xlZGdlIG9mIHdobyBob3N0cyBpdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMaWJyYXJ5SW5pdFBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgVVJMIG9mIHRoZSBndWlkZSBleHBsYWluaW5nIGhvdyB0byB0dXJuIGRlYnVnIG1lc3NhZ2VzIG9uIGFuZCBvZmYsIG5hbWVkIGluIHRoZSBsaWJyYXJ5J3MgZGVidWcgbWVzc2FnZXMuXG4gICAqIFdpdGhvdXQgb25lLCB0aGUgbWVzc2FnZXMgbmFtZSBubyBndWlkZS5cbiAgICovXG4gIHJlYWRvbmx5IGRlYnVnR3VpZGVVcmw/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lc3BhY2UgdGhlIGxpYnJhcnkncyBvd24gZGVidWdnZXJzIGxpdmUgdW5kZXIuIERlZmF1bHRzIHRvIHtAbGluayBERUZBVUxUX0RFQlVHX05BTUVTUEFDRX0uXG4gICAqIEEgaG9zdCB0aGF0IHB1Ymxpc2hlcyBpdHMgb3duIGRlYnVnIG5hbWVzcGFjZSB0byBpdHMgdXNlcnMgcGFzc2VzIGl0IGhlcmUsIHNvIHRoZWlyIGZpbHRlcnMga2VlcCBtYXRjaGluZy5cbiAgICovXG4gIHJlYWRvbmx5IGRlYnVnTmFtZXNwYWNlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFYXJsaWVyIG5hbWVzIG9mIHtAbGluayBkZWJ1Z05hbWVzcGFjZX0sIHNvIGEgZmlsdGVyIHdyaXR0ZW4gZm9yIG9uZSBvZiB0aGVtIGtlZXBzIHNob3dpbmcgdGhlIGxpYnJhcnkncyBkZWJ1Z1xuICAgKiBtZXNzYWdlcyBhZnRlciB0aGUgaG9zdCByZW5hbWVzIGl0cyBuYW1lc3BhY2UuIEVhY2ggbWVzc2FnZSBzdGlsbCBwcmludHMgb25jZTogdW5kZXIge0BsaW5rIGRlYnVnTmFtZXNwYWNlfSB3aGVuIGFcbiAgICogZmlsdGVyIGVuYWJsZXMgaXQsIG90aGVyd2lzZSB1bmRlciB0aGUgZmlyc3QgYWxpYXMgYSBmaWx0ZXIgZW5hYmxlcy4gRGVmYXVsdHMgdG8gbm9uZS5cbiAgICovXG4gIHJlYWRvbmx5IGRlYnVnTmFtZXNwYWNlQWxpYXNlcz86IHJlYWRvbmx5IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZXNwYWNlIHByZWZpeCBwcmVwZW5kZWQgdG8gdGhlIGxpYnJhcnkncyBkZWJ1ZyBuYW1lc3BhY2VzIChlLmcuIGAke3BsdWdpbklkfTpgKS5cbiAgICovXG4gIHJlYWRvbmx5IGRlYnVnUHJlZml4TmFtZXNwYWNlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgZGVidWcgbG9nZ2luZyBzaG91bGQgYXBwZW5kIGEgcmljaCBEZXZUb29scyBzdGFjayB0cmFjZS5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFByaW50U3RhY2tUcmFjZTogYm9vbGVhbjtcbn1cblxuY29uc3QgREVGQVVMVF9QQVJBTVM6IExpYnJhcnlJbml0UGFyYW1zID0ge1xuICBkZWJ1Z1ByZWZpeE5hbWVzcGFjZTogJycsXG4gIHNob3VsZFByaW50U3RhY2tUcmFjZTogZmFsc2Vcbn07XG5cbi8qKlxuICogVGhlIHNpbmdsZSwgZGV0ZXJtaW5pc3RpYyBpbml0aWFsaXphdGlvbiBlbnRyeSBwb2ludCBmb3IgdGhlIGBAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWJgIGxpYnJhcnkuXG4gKlxuICogVGhlIGhvc3QgY2FsbHMge0BsaW5rIExpYnJhcnkuaW5pdH0gZXhhY3RseSBvbmNlIHRvIHB1c2ggaXRzIGNvc21ldGljIGNvbmZpZ3VyYXRpb247IHRoZSBsaWJyYXJ5IG9ubHlcbiAqIHJlYWRzIGl0IHRocm91Z2ggdGhlIGdldHRlcnMuIENhbGxpbmcge0BsaW5rIExpYnJhcnkuaW5pdH0gbW9yZSB0aGFuIG9uY2UgdGhyb3dzIFx1MjAxNFxuICoge0BsaW5rIExpYnJhcnkucmVzZXRUb0RlZmF1bHR9IGNsZWFycyB0aGUgc3RhdGUgKGUuZy4gYmV0d2VlbiB0ZXN0cywgb3Igb24gdW5sb2FkKSBhbmQgYWxsb3dzXG4gKiByZS1pbml0aWFsaXphdGlvbi5cbiAqL1xuY2xhc3MgTGlicmFyeUNvbnRleHQge1xuICAvKipcbiAgICogVGhlIFVSTCBvZiB0aGUgZ3VpZGUgZXhwbGFpbmluZyBob3cgdG8gdHVybiBkZWJ1ZyBtZXNzYWdlcyBvbiBhbmQgb2ZmLiBFbXB0eSB1bnRpbCB7QGxpbmsgaW5pdH0gaXMgY2FsbGVkIHdpdGggb25lLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgZGVidWcgZ3VpZGUgVVJMLlxuICAgKi9cbiAgcHVibGljIGdldCBkZWJ1Z0d1aWRlVXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucGFyYW1zLmRlYnVnR3VpZGVVcmwgPz8gJyc7XG4gIH1cblxuICAvKipcbiAgICogVGhlIG5hbWVzcGFjZSB0aGUgbGlicmFyeSdzIG93biBkZWJ1Z2dlcnMgbGl2ZSB1bmRlci5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIGRlYnVnIG5hbWVzcGFjZS5cbiAgICovXG4gIHB1YmxpYyBnZXQgZGVidWdOYW1lc3BhY2UoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wYXJhbXMuZGVidWdOYW1lc3BhY2UgPz8gREVGQVVMVF9ERUJVR19OQU1FU1BBQ0U7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGVhcmxpZXIgbmFtZXMgb2Yge0BsaW5rIGRlYnVnTmFtZXNwYWNlfSBhIGZpbHRlciBtYXkgc3RpbGwgYmUgd3JpdHRlbiBmb3IuIEVtcHR5IHVudGlsIHtAbGluayBpbml0fSBpcyBjYWxsZWRcbiAgICogd2l0aCBzb21lLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgZGVidWcgbmFtZXNwYWNlIGFsaWFzZXMuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGRlYnVnTmFtZXNwYWNlQWxpYXNlcygpOiByZWFkb25seSBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMucGFyYW1zLmRlYnVnTmFtZXNwYWNlQWxpYXNlcyA/PyBbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgbmFtZXNwYWNlIHByZWZpeCBwcmVwZW5kZWQgdG8gdGhlIGxpYnJhcnkncyBkZWJ1ZyBuYW1lc3BhY2VzLiBFbXB0eSB1bnRpbCB7QGxpbmsgaW5pdH0gaXMgY2FsbGVkLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgZGVidWcgbmFtZXNwYWNlIHByZWZpeC5cbiAgICovXG4gIHB1YmxpYyBnZXQgZGVidWdQcmVmaXhOYW1lc3BhY2UoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wYXJhbXMuZGVidWdQcmVmaXhOYW1lc3BhY2U7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciBkZWJ1ZyBsb2dnaW5nIHNob3VsZCBhcHBlbmQgYSByaWNoIERldlRvb2xzIHN0YWNrIHRyYWNlLiBgZmFsc2VgIHVudGlsIHtAbGluayBpbml0fSBpcyBjYWxsZWQuXG4gICAqXG4gICAqIEByZXR1cm5zIFdoZXRoZXIgdG8gcHJpbnQgc3RhY2sgdHJhY2VzLlxuICAgKi9cbiAgcHVibGljIGdldCBzaG91bGRQcmludFN0YWNrVHJhY2UoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucGFyYW1zLnNob3VsZFByaW50U3RhY2tUcmFjZTtcbiAgfVxuXG4gIHByaXZhdGUgaXNJbml0aWFsaXplZCA9IGZhbHNlO1xuXG4gIHByaXZhdGUgcGFyYW1zOiBMaWJyYXJ5SW5pdFBhcmFtcyA9IHsgLi4uREVGQVVMVF9QQVJBTVMgfTtcblxuICAvKipcbiAgICogSW5pdGlhbGl6ZXMgdGhlIGxpYnJhcnkgd2l0aCB0aGUgaG9zdCdzIGNvc21ldGljIGNvbmZpZ3VyYXRpb24uIE11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZTsgY2FsbGluZyBpdFxuICAgKiBhZ2FpbiBiZWZvcmUge0BsaW5rIHJlc2V0VG9EZWZhdWx0fSB0aHJvd3MuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgY29zbWV0aWMgY29uZmlndXJhdGlvbiB0byBpbmplY3QuXG4gICAqL1xuICBwdWJsaWMgaW5pdChwYXJhbXM6IExpYnJhcnlJbml0UGFyYW1zKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNJbml0aWFsaXplZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGAke0xJQlJBUllfTkFNRX0gaXMgYWxyZWFkeSBpbml0aWFsaXplZC4gQ2FsbCBMaWJyYXJ5LnJlc2V0VG9EZWZhdWx0KCkgYmVmb3JlIGluaXRpYWxpemluZyBhZ2Fpbi5gKTtcbiAgICB9XG4gICAgdGhpcy5pc0luaXRpYWxpemVkID0gdHJ1ZTtcbiAgICB0aGlzLnBhcmFtcyA9IHsgLi4ucGFyYW1zIH07XG4gIH1cblxuICAvKipcbiAgICogUmVzZXRzIHRoZSBsaWJyYXJ5IGJhY2sgdG8gaXRzIGRlZmF1bHQgKHVuaW5pdGlhbGl6ZWQpIHN0YXRlLCBhbGxvd2luZyB7QGxpbmsgaW5pdH0gdG8gYmUgY2FsbGVkIGFnYWluLlxuICAgKi9cbiAgcHVibGljIHJlc2V0VG9EZWZhdWx0KCk6IHZvaWQge1xuICAgIHRoaXMuaXNJbml0aWFsaXplZCA9IGZhbHNlO1xuICAgIHRoaXMucGFyYW1zID0geyAuLi5ERUZBVUxUX1BBUkFNUyB9O1xuICB9XG59XG5cbi8qKlxuICogVGhlIHNpbmdsZSB7QGxpbmsgTGlicmFyeUNvbnRleHR9IGluc3RhbmNlIFx1MjAxNCB0aGUgbGlicmFyeSdzIGRldGVybWluaXN0aWMgaW5pdGlhbGl6YXRpb24gZW50cnkgcG9pbnQuXG4gKi9cbmV4cG9ydCBjb25zdCBMaWJyYXJ5ID0gbmV3IExpYnJhcnlDb250ZXh0KCk7XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBU08sTUFBTSxlQUFlO0FBS3JCLE1BQU0sMEJBQTBCO0FBdUN2QyxNQUFNLGlCQUFvQztBQUFBLEVBQ3hDLHNCQUFzQjtBQUFBLEVBQ3RCLHVCQUF1QjtBQUN6QjtBQVVBLE1BQU0sZUFBZTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU1uQixJQUFXLGdCQUF3QjtBQUNqQyxXQUFPLEtBQUssT0FBTyxpQkFBaUI7QUFBQSxFQUN0QztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9BLElBQVcsaUJBQXlCO0FBQ2xDLFdBQU8sS0FBSyxPQUFPLGtCQUFrQjtBQUFBLEVBQ3ZDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRQSxJQUFXLHdCQUEyQztBQUNwRCxXQUFPLEtBQUssT0FBTyx5QkFBeUIsQ0FBQztBQUFBLEVBQy9DO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT0EsSUFBVyx1QkFBK0I7QUFDeEMsV0FBTyxLQUFLLE9BQU87QUFBQSxFQUNyQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9BLElBQVcsd0JBQWlDO0FBQzFDLFdBQU8sS0FBSyxPQUFPO0FBQUEsRUFDckI7QUFBQSxFQUVRLGdCQUFnQjtBQUFBLEVBRWhCLFNBQTRCLEVBQUUsR0FBRyxlQUFlO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRakQsS0FBSyxRQUFpQztBQUMzQyxRQUFJLEtBQUssZUFBZTtBQUN0QixZQUFNLElBQUksTUFBTSxHQUFHLFlBQVksbUZBQW1GO0FBQUEsSUFDcEg7QUFDQSxTQUFLLGdCQUFnQjtBQUNyQixTQUFLLFNBQVMsRUFBRSxHQUFHLE9BQU87QUFBQSxFQUM1QjtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS08saUJBQXVCO0FBQzVCLFNBQUssZ0JBQWdCO0FBQ3JCLFNBQUssU0FBUyxFQUFFLEdBQUcsZUFBZTtBQUFBLEVBQ3BDO0FBQ0Y7QUFLTyxNQUFNLFVBQVUsSUFBSSxlQUFlOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -33,6 +33,12 @@ export interface LibraryInitParams {
33
33
  * A host that publishes its own debug namespace to its users passes it here, so their filters keep matching.
34
34
  */
35
35
  readonly debugNamespace?: string;
36
+ /**
37
+ * Earlier names of {@link debugNamespace}, so a filter written for one of them keeps showing the library's debug
38
+ * messages after the host renames its namespace. Each message still prints once: under {@link debugNamespace} when a
39
+ * filter enables it, otherwise under the first alias a filter enables. Defaults to none.
40
+ */
41
+ readonly debugNamespaceAliases?: readonly string[];
36
42
  /**
37
43
  * The namespace prefix prepended to the library's debug namespaces (e.g. `${pluginId}:`).
38
44
  */
@@ -63,6 +69,13 @@ declare class LibraryContext {
63
69
  * @returns The debug namespace.
64
70
  */
65
71
  get debugNamespace(): string;
72
+ /**
73
+ * The earlier names of {@link debugNamespace} a filter may still be written for. Empty until {@link init} is called
74
+ * with some.
75
+ *
76
+ * @returns The debug namespace aliases.
77
+ */
78
+ get debugNamespaceAliases(): readonly string[];
66
79
  /**
67
80
  * The namespace prefix prepended to the library's debug namespaces. Empty until {@link init} is called.
68
81
  *
@@ -65,4 +65,4 @@ function getGlobal() {
65
65
  getTypescriptLibStateSlot,
66
66
  resetTypescriptLibState
67
67
  });
68
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3R5cGVzY3JpcHQtbGliLXN0YXRlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogUHJvdmlkZXMgYWNjZXNzIHRvIHRoZSBwcm9jZXNzLXdpZGUgc2hhcmVkLXN0YXRlIGJhZyBvZiB0aGUgZ2VuZXJpYywgbm9uLU9ic2lkaWFuIHBhcnQgb2YgdGhlIGxpYnJhcnkuXG4gKlxuICogVGhlIGJhZyBsaXZlcyBvbiBgZ2xvYmFsVGhpc2AgdW5kZXIgYSBgU3ltYm9sLmZvcmAga2V5LCBzbyBldmVyeSBjb3B5IG9mIHRoaXMgbW9kdWxlIGxvYWRlZCBpbiBvbmUgcmVhbG0gc2hhcmVzXG4gKiBpdCwgd2hpY2hldmVyIHZlcnNpb24gaXQgaXMuIEl0IGhvbGRzIHdoYXQgbXVzdCBleGlzdCBvbmNlIHBlciByZWFsbTogdGhlIGRlYnVnZ2VycywgdGhlIGBkZWJ1Z2AgaW5zdGFuY2UgYW5kIHRoZVxuICogc2hhcmVkIGFib3J0IGNvbnRyb2xsZXIuIE9ic2lkaWFuLXNwZWNpZmljIHN0YXRlIHN0YXlzIGluIGBvYnNpZGlhbi1kZXYtdXRpbHMtc3RhdGUudHNgLlxuICpcbiAqIFRoZSBzbG90IGlzIGEgY3Jvc3MtdmVyc2lvbiB3aXJlIGZvcm1hdDogaXRzIGtleSBhbmQgdGhlIHtAbGluayBUeXBlc2NyaXB0TGliU3RhdGVTbG90fSBzaGFwZSBvbmx5IGV2ZXIgY2hhbmdlXG4gKiBhZGRpdGl2ZWx5LlxuICovXG5cbmltcG9ydCB7IFZhbHVlV3JhcHBlciB9IGZyb20gJy4vdmFsdWUtd3JhcHBlci50cyc7XG5cbi8qKlxuICogVGhlIHZlcnNpb24gb2YgdGhlIHtAbGluayBUeXBlc2NyaXB0TGliU3RhdGVTbG90fSBzaGFwZSB0aGlzIGNvcHkgd3JpdGVzLlxuICovXG5leHBvcnQgY29uc3QgVFlQRVNDUklQVF9MSUJfU1RBVEVfVkVSU0lPTiA9IDE7XG5cbi8qKlxuICogVGhlIGtleSBvZiB0aGUgZ2xvYmFsIHNsb3QgaG9sZGluZyB0aGUge0BsaW5rIFR5cGVzY3JpcHRMaWJTdGF0ZVNsb3R9LlxuICovXG5leHBvcnQgY29uc3QgVFlQRVNDUklQVF9MSUJfU1RBVEVfS0VZOiB1bmlxdWUgc3ltYm9sID0gU3ltYm9sLmZvcignQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3N0YXRlJyk7XG5cbi8qKlxuICogVGhlIHNoYXJlZC1zdGF0ZSBzbG90IHN0b3JlZCBvbiBgZ2xvYmFsVGhpc2AuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHlwZXNjcmlwdExpYlN0YXRlU2xvdCB7XG4gIC8qKlxuICAgKiBUaGUgc2hhcmVkIHZhbHVlcywgZWFjaCBpbiBhIHtAbGluayBWYWx1ZVdyYXBwZXJ9IHNvIGEgaG9sZGVyIGNhbiByZXBsYWNlIHRoZSB2YWx1ZSBpbiBwbGFjZS5cbiAgICovXG4gIHJlYWRvbmx5IHZhbHVlczogUmVjb3JkPHN0cmluZywgVmFsdWVXcmFwcGVyPjtcblxuICAvKipcbiAgICogVGhlIHZlcnNpb24gb2YgdGhlIHNsb3Qgc2hhcGUgdGhlIGNyZWF0b3Igd3JvdGUuIEluZm9ybWF0aW9uYWw6IHRoZSBzaGFwZSBvbmx5IGNoYW5nZXMgYWRkaXRpdmVseS5cbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb246IG51bWJlcjtcbn1cblxudHlwZSBHbG9iYWxXaXRoVHlwZXNjcmlwdExpYlN0YXRlID0gUGFydGlhbDxSZWNvcmQ8dHlwZW9mIFRZUEVTQ1JJUFRfTElCX1NUQVRFX0tFWSwgVHlwZXNjcmlwdExpYlN0YXRlU2xvdD4+O1xuXG4vKipcbiAqIFJldHJpZXZlcyBvciBjcmVhdGVzIGEgc2hhcmVkLXN0YXRlIHtAbGluayBWYWx1ZVdyYXBwZXJ9IGZvciBhIGdpdmVuIGtleS5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgc2hhcmVkIHN0YXRlIHZhbHVlLlxuICogQHBhcmFtIGtleSAtIFRoZSBrZXkgdG8gc3RvcmUgb3IgcmV0cmlldmUgdGhlIHNoYXJlZCBzdGF0ZSB1bmRlci5cbiAqIEBwYXJhbSBkZWZhdWx0VmFsdWUgLSBUaGUgZGVmYXVsdCB2YWx1ZSB0byB1c2UgaWYgdGhlIHNoYXJlZCBzdGF0ZSBkb2VzIG5vdCBleGlzdCB5ZXQuXG4gKiBAcmV0dXJucyBUaGUge0BsaW5rIFZhbHVlV3JhcHBlcn0gdGhhdCBzdG9yZXMgdGhlIHNoYXJlZCBzdGF0ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFR5cGVzY3JpcHRMaWJTdGF0ZTxUPihrZXk6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBUKTogVmFsdWVXcmFwcGVyPFQ+IHtcbiAgcmV0dXJuIChnZXRUeXBlc2NyaXB0TGliU3RhdGVTbG90KCkudmFsdWVzW2tleV0gPz89IFZhbHVlV3JhcHBlci5vZihkZWZhdWx0VmFsdWUpKSBhcyBWYWx1ZVdyYXBwZXI8VD47XG59XG5cbi8qKlxuICogUmV0cmlldmVzIG9yIGNyZWF0ZXMgdGhlIHNoYXJlZC1zdGF0ZSBzbG90LlxuICpcbiAqIEByZXR1cm5zIFRoZSB7QGxpbmsgVHlwZXNjcmlwdExpYlN0YXRlU2xvdH0uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUeXBlc2NyaXB0TGliU3RhdGVTbG90KCk6IFR5cGVzY3JpcHRMaWJTdGF0ZVNsb3Qge1xuICBjb25zdCBnbG9iYWwgPSBnZXRHbG9iYWwoKTtcbiAgbGV0IHNsb3QgPSBnbG9iYWxbVFlQRVNDUklQVF9MSUJfU1RBVEVfS0VZXTtcbiAgaWYgKCFzbG90KSB7XG4gICAgc2xvdCA9IGNyZWF0ZVNsb3QoKTtcbiAgICBnbG9iYWxbVFlQRVNDUklQVF9MSUJfU1RBVEVfS0VZXSA9IHNsb3Q7XG4gIH1cbiAgcmV0dXJuIHNsb3Q7XG59XG5cbi8qKlxuICogQ2xlYXJzIHRoZSBzaGFyZWQtc3RhdGUgYmFnLlxuICpcbiAqIEludGVuZGVkIGZvciB0ZXN0IGlzb2xhdGlvbjogY2FsbCBpdCBiZWZvcmUgZWFjaCB0ZXN0IHNvIGFjY3VtdWxhdGVkIHN0YXRlIGRvZXMgbm90IGxlYWsgYmV0d2VlbiB0ZXN0cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc2V0VHlwZXNjcmlwdExpYlN0YXRlKCk6IHZvaWQge1xuICBnZXRHbG9iYWwoKVtUWVBFU0NSSVBUX0xJQl9TVEFURV9LRVldID0gY3JlYXRlU2xvdCgpO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVTbG90KCk6IFR5cGVzY3JpcHRMaWJTdGF0ZVNsb3Qge1xuICByZXR1cm4ge1xuICAgIHZhbHVlczoge30sXG4gICAgdmVyc2lvbjogVFlQRVNDUklQVF9MSUJfU1RBVEVfVkVSU0lPTlxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRHbG9iYWwoKTogR2xvYmFsV2l0aFR5cGVzY3JpcHRMaWJTdGF0ZSB7XG4gIHJldHVybiBnbG9iYWxUaGlzIGFzIEdsb2JhbFdpdGhUeXBlc2NyaXB0TGliU3RhdGU7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWFBLDJCQUE2QjtBQUt0QixNQUFNLCtCQUErQjtBQUtyQyxNQUFNLDJCQUEwQyx1QkFBTyxJQUFJLGdDQUFnQztBQTJCM0YsU0FBUyxzQkFBeUIsS0FBYSxjQUFrQztBQUN0RixTQUFRLDBCQUEwQixFQUFFLE9BQU8sR0FBRyxNQUFNLGtDQUFhLEdBQUcsWUFBWTtBQUNsRjtBQU9PLFNBQVMsNEJBQW9EO0FBQ2xFLFFBQU0sU0FBUyxVQUFVO0FBQ3pCLE1BQUksT0FBTyxPQUFPLHdCQUF3QjtBQUMxQyxNQUFJLENBQUMsTUFBTTtBQUNULFdBQU8sV0FBVztBQUNsQixXQUFPLHdCQUF3QixJQUFJO0FBQUEsRUFDckM7QUFDQSxTQUFPO0FBQ1Q7QUFPTyxTQUFTLDBCQUFnQztBQUM5QyxZQUFVLEVBQUUsd0JBQXdCLElBQUksV0FBVztBQUNyRDtBQUVBLFNBQVMsYUFBcUM7QUFDNUMsU0FBTztBQUFBLElBQ0wsUUFBUSxDQUFDO0FBQUEsSUFDVCxTQUFTO0FBQUEsRUFDWDtBQUNGO0FBRUEsU0FBUyxZQUEwQztBQUNqRCxTQUFPO0FBQ1Q7IiwKICAibmFtZXMiOiBbXQp9Cg==
68
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3R5cGVzY3JpcHQtbGliLXN0YXRlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogUHJvdmlkZXMgYWNjZXNzIHRvIHRoZSBwcm9jZXNzLXdpZGUgc2hhcmVkLXN0YXRlIGJhZyBvZiB0aGUgZ2VuZXJpYywgbm9uLU9ic2lkaWFuIHBhcnQgb2YgdGhlIGxpYnJhcnkuXG4gKlxuICogVGhlIGJhZyBsaXZlcyBvbiBgZ2xvYmFsVGhpc2AgdW5kZXIgYSBgU3ltYm9sLmZvcmAga2V5LCBzbyBldmVyeSBjb3B5IG9mIHRoaXMgbW9kdWxlIGxvYWRlZCBpbiBvbmUgcmVhbG0gc2hhcmVzXG4gKiBpdCwgd2hpY2hldmVyIHZlcnNpb24gaXQgaXMuIEl0IGhvbGRzIHdoYXQgbXVzdCBleGlzdCBvbmNlIHBlciByZWFsbTogdGhlIGRlYnVnZ2VycywgdGhlIGBkZWJ1Z2AgaW5zdGFuY2UgYW5kIHRoZVxuICogc2hhcmVkIGFib3J0IGNvbnRyb2xsZXIuIE9ic2lkaWFuLXNwZWNpZmljIHN0YXRlIHN0YXlzIGluIGBAbW5hb3Vtb3Yvb2JzaWRpYW4tbGliYCwgdW5kZXIgaXRzIGxlZ2FjeSBgX19vYnNpZGlhbkRldlV0aWxzYCBnbG9iYWwuXG4gKlxuICogVGhlIHNsb3QgaXMgYSBjcm9zcy12ZXJzaW9uIHdpcmUgZm9ybWF0OiBpdHMga2V5IGFuZCB0aGUge0BsaW5rIFR5cGVzY3JpcHRMaWJTdGF0ZVNsb3R9IHNoYXBlIG9ubHkgZXZlciBjaGFuZ2VcbiAqIGFkZGl0aXZlbHkuXG4gKi9cblxuaW1wb3J0IHsgVmFsdWVXcmFwcGVyIH0gZnJvbSAnLi92YWx1ZS13cmFwcGVyLnRzJztcblxuLyoqXG4gKiBUaGUgdmVyc2lvbiBvZiB0aGUge0BsaW5rIFR5cGVzY3JpcHRMaWJTdGF0ZVNsb3R9IHNoYXBlIHRoaXMgY29weSB3cml0ZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBUWVBFU0NSSVBUX0xJQl9TVEFURV9WRVJTSU9OID0gMTtcblxuLyoqXG4gKiBUaGUga2V5IG9mIHRoZSBnbG9iYWwgc2xvdCBob2xkaW5nIHRoZSB7QGxpbmsgVHlwZXNjcmlwdExpYlN0YXRlU2xvdH0uXG4gKi9cbmV4cG9ydCBjb25zdCBUWVBFU0NSSVBUX0xJQl9TVEFURV9LRVk6IHVuaXF1ZSBzeW1ib2wgPSBTeW1ib2wuZm9yKCdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvc3RhdGUnKTtcblxuLyoqXG4gKiBUaGUgc2hhcmVkLXN0YXRlIHNsb3Qgc3RvcmVkIG9uIGBnbG9iYWxUaGlzYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUeXBlc2NyaXB0TGliU3RhdGVTbG90IHtcbiAgLyoqXG4gICAqIFRoZSBzaGFyZWQgdmFsdWVzLCBlYWNoIGluIGEge0BsaW5rIFZhbHVlV3JhcHBlcn0gc28gYSBob2xkZXIgY2FuIHJlcGxhY2UgdGhlIHZhbHVlIGluIHBsYWNlLlxuICAgKi9cbiAgcmVhZG9ubHkgdmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCBWYWx1ZVdyYXBwZXI+O1xuXG4gIC8qKlxuICAgKiBUaGUgdmVyc2lvbiBvZiB0aGUgc2xvdCBzaGFwZSB0aGUgY3JlYXRvciB3cm90ZS4gSW5mb3JtYXRpb25hbDogdGhlIHNoYXBlIG9ubHkgY2hhbmdlcyBhZGRpdGl2ZWx5LlxuICAgKi9cbiAgcmVhZG9ubHkgdmVyc2lvbjogbnVtYmVyO1xufVxuXG50eXBlIEdsb2JhbFdpdGhUeXBlc2NyaXB0TGliU3RhdGUgPSBQYXJ0aWFsPFJlY29yZDx0eXBlb2YgVFlQRVNDUklQVF9MSUJfU1RBVEVfS0VZLCBUeXBlc2NyaXB0TGliU3RhdGVTbG90Pj47XG5cbi8qKlxuICogUmV0cmlldmVzIG9yIGNyZWF0ZXMgYSBzaGFyZWQtc3RhdGUge0BsaW5rIFZhbHVlV3JhcHBlcn0gZm9yIGEgZ2l2ZW4ga2V5LlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIHRoZSBzaGFyZWQgc3RhdGUgdmFsdWUuXG4gKiBAcGFyYW0ga2V5IC0gVGhlIGtleSB0byBzdG9yZSBvciByZXRyaWV2ZSB0aGUgc2hhcmVkIHN0YXRlIHVuZGVyLlxuICogQHBhcmFtIGRlZmF1bHRWYWx1ZSAtIFRoZSBkZWZhdWx0IHZhbHVlIHRvIHVzZSBpZiB0aGUgc2hhcmVkIHN0YXRlIGRvZXMgbm90IGV4aXN0IHlldC5cbiAqIEByZXR1cm5zIFRoZSB7QGxpbmsgVmFsdWVXcmFwcGVyfSB0aGF0IHN0b3JlcyB0aGUgc2hhcmVkIHN0YXRlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VHlwZXNjcmlwdExpYlN0YXRlPFQ+KGtleTogc3RyaW5nLCBkZWZhdWx0VmFsdWU6IFQpOiBWYWx1ZVdyYXBwZXI8VD4ge1xuICByZXR1cm4gKGdldFR5cGVzY3JpcHRMaWJTdGF0ZVNsb3QoKS52YWx1ZXNba2V5XSA/Pz0gVmFsdWVXcmFwcGVyLm9mKGRlZmF1bHRWYWx1ZSkpIGFzIFZhbHVlV3JhcHBlcjxUPjtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgb3IgY3JlYXRlcyB0aGUgc2hhcmVkLXN0YXRlIHNsb3QuXG4gKlxuICogQHJldHVybnMgVGhlIHtAbGluayBUeXBlc2NyaXB0TGliU3RhdGVTbG90fS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFR5cGVzY3JpcHRMaWJTdGF0ZVNsb3QoKTogVHlwZXNjcmlwdExpYlN0YXRlU2xvdCB7XG4gIGNvbnN0IGdsb2JhbCA9IGdldEdsb2JhbCgpO1xuICBsZXQgc2xvdCA9IGdsb2JhbFtUWVBFU0NSSVBUX0xJQl9TVEFURV9LRVldO1xuICBpZiAoIXNsb3QpIHtcbiAgICBzbG90ID0gY3JlYXRlU2xvdCgpO1xuICAgIGdsb2JhbFtUWVBFU0NSSVBUX0xJQl9TVEFURV9LRVldID0gc2xvdDtcbiAgfVxuICByZXR1cm4gc2xvdDtcbn1cblxuLyoqXG4gKiBDbGVhcnMgdGhlIHNoYXJlZC1zdGF0ZSBiYWcuXG4gKlxuICogSW50ZW5kZWQgZm9yIHRlc3QgaXNvbGF0aW9uOiBjYWxsIGl0IGJlZm9yZSBlYWNoIHRlc3Qgc28gYWNjdW11bGF0ZWQgc3RhdGUgZG9lcyBub3QgbGVhayBiZXR3ZWVuIHRlc3RzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzZXRUeXBlc2NyaXB0TGliU3RhdGUoKTogdm9pZCB7XG4gIGdldEdsb2JhbCgpW1RZUEVTQ1JJUFRfTElCX1NUQVRFX0tFWV0gPSBjcmVhdGVTbG90KCk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVNsb3QoKTogVHlwZXNjcmlwdExpYlN0YXRlU2xvdCB7XG4gIHJldHVybiB7XG4gICAgdmFsdWVzOiB7fSxcbiAgICB2ZXJzaW9uOiBUWVBFU0NSSVBUX0xJQl9TVEFURV9WRVJTSU9OXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldEdsb2JhbCgpOiBHbG9iYWxXaXRoVHlwZXNjcmlwdExpYlN0YXRlIHtcbiAgcmV0dXJuIGdsb2JhbFRoaXMgYXMgR2xvYmFsV2l0aFR5cGVzY3JpcHRMaWJTdGF0ZTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBYUEsMkJBQTZCO0FBS3RCLE1BQU0sK0JBQStCO0FBS3JDLE1BQU0sMkJBQTBDLHVCQUFPLElBQUksZ0NBQWdDO0FBMkIzRixTQUFTLHNCQUF5QixLQUFhLGNBQWtDO0FBQ3RGLFNBQVEsMEJBQTBCLEVBQUUsT0FBTyxHQUFHLE1BQU0sa0NBQWEsR0FBRyxZQUFZO0FBQ2xGO0FBT08sU0FBUyw0QkFBb0Q7QUFDbEUsUUFBTSxTQUFTLFVBQVU7QUFDekIsTUFBSSxPQUFPLE9BQU8sd0JBQXdCO0FBQzFDLE1BQUksQ0FBQyxNQUFNO0FBQ1QsV0FBTyxXQUFXO0FBQ2xCLFdBQU8sd0JBQXdCLElBQUk7QUFBQSxFQUNyQztBQUNBLFNBQU87QUFDVDtBQU9PLFNBQVMsMEJBQWdDO0FBQzlDLFlBQVUsRUFBRSx3QkFBd0IsSUFBSSxXQUFXO0FBQ3JEO0FBRUEsU0FBUyxhQUFxQztBQUM1QyxTQUFPO0FBQUEsSUFDTCxRQUFRLENBQUM7QUFBQSxJQUNULFNBQVM7QUFBQSxFQUNYO0FBQ0Y7QUFFQSxTQUFTLFlBQTBDO0FBQ2pELFNBQU87QUFDVDsiLAogICJuYW1lcyI6IFtdCn0K
@@ -6,7 +6,7 @@
6
6
  *
7
7
  * The bag lives on `globalThis` under a `Symbol.for` key, so every copy of this module loaded in one realm shares
8
8
  * it, whichever version it is. It holds what must exist once per realm: the debuggers, the `debug` instance and the
9
- * shared abort controller. Obsidian-specific state stays in `obsidian-dev-utils-state.ts`.
9
+ * shared abort controller. Obsidian-specific state stays in `@mnaoumov/obsidian-lib`, under its legacy `__obsidianDevUtils` global.
10
10
  *
11
11
  * The slot is a cross-version wire format: its key and the {@link TypescriptLibStateSlot} shape only ever change
12
12
  * additively.