@dbx-tools/appkit 0.9.119 → 0.9.121

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.
@@ -51,9 +51,9 @@
51
51
  *
52
52
  * @module
53
53
  */
54
- import { ConfigurationError } from "@databricks/appkit";
54
+ import { ConfigurationError, Plugin } from "@databricks/appkit";
55
55
  import { configUtils } from "@dbx-tools/core";
56
- import { stringUtils, token } from "@dbx-tools/shared-core";
56
+ import { log, stringUtils, token } from "@dbx-tools/shared-core";
57
57
  /**
58
58
  * Header the Databricks Apps front door forwards the caller's OBO token on.
59
59
  * Its presence is what makes `asUser(req)` viable, so it is the signal
@@ -135,4 +135,70 @@ export function useServicePrincipal(mode, req) {
135
135
  return false;
136
136
  return requestAccessToken(req) === undefined;
137
137
  }
138
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbnRpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaWRlbnRpdHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvREc7QUFFSCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUU1RDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQztBQUU3RCw4RUFBOEU7QUFDOUUsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLEtBQUssQ0FBQyxjQUFjLENBQUM7QUFFbkQsNEVBQTRFO0FBQzVFLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztBQUt6RCxvRkFBb0Y7QUFDcEYsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUE0QixDQUFDLE1BQU0sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUU3Rjs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBaUIsTUFBTSxDQUFDO0FBTzFEOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxVQUFVLG1CQUFtQixDQUNqQyxVQUE4QixFQUM5QixPQUFtQyxFQUNuQyxLQUFLLEdBQUcsVUFBVTtJQUVsQixNQUFNLEdBQUcsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxPQUFPLEVBQUUsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzFFLElBQUksR0FBRyxLQUFLLFNBQVM7UUFBRSxPQUFPLHFCQUFxQixDQUFDO0lBQ3BELE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxXQUFXLEVBQWtCLENBQUM7SUFDL0MsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNuQyxNQUFNLEtBQUssR0FBRyxPQUFPLE9BQU8sS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxRSxNQUFNLElBQUksa0JBQWtCLENBQzFCLEdBQUcsS0FBSyxtQkFBbUIsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxLQUFLLEdBQUcsRUFDdkUsRUFBRSxPQUFPLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FDckQsQ0FBQztJQUNKLENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxHQUE4QjtJQUMvRCxPQUFPLFdBQVcsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLElBQUksU0FBUyxDQUFDO0FBQy9FLENBQUM7QUFFRCxzREFBc0Q7QUFDdEQsTUFBTSxVQUFVLGFBQWEsQ0FBQyxHQUE4QjtJQUMxRCxPQUFPLFdBQVcsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxJQUFJLFNBQVMsQ0FBQztBQUMxRSxDQUFDO0FBRUQseURBQXlEO0FBQ3pELE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxHQUE4QjtJQUM3RCxPQUFPLFdBQVcsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLElBQUksU0FBUyxDQUFDO0FBQzdFLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFDSCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsSUFBa0IsRUFBRSxHQUFtQjtJQUN6RSxJQUFJLElBQUksS0FBSyxtQkFBbUI7UUFBRSxPQUFPLElBQUksQ0FBQztJQUM5QyxJQUFJLElBQUksS0FBSyxNQUFNO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFDbEMsT0FBTyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxTQUFTLENBQUM7QUFDL0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogV2hpY2ggRGF0YWJyaWNrcyBpZGVudGl0eSBhIHJlcXVlc3QncyB3b3Jrc3BhY2UgY2FsbHMgcnVuIGFzLlxuICpcbiAqIEFwcEtpdCBnaXZlcyBhIHBsdWdpbiB0d28gaWRlbnRpdGllczogdGhlIGFtYmllbnQgU0VSVklDRSBjb250ZXh0ICh0aGUgYXBwJ3NcbiAqIG93biBzZXJ2aWNlIHByaW5jaXBhbCkgYW5kIGEgcGVyLXJlcXVlc3QgVVNFUiBjb250ZXh0IGVudGVyZWQgd2l0aFxuICogYGFzVXNlcihyZXEpYCwgd2hpY2ggYXV0aGVudGljYXRlcyBhcyB0aGUgY2FsbGVyIG9uLWJlaGFsZi1vZiAoT0JPKS4gVGhlXG4gKiBjaG9pY2UgaXMgb25lIGNhbGwsIHNvIHRoZSB3aG9sZSBkZWNpc2lvbiBpcyBcImRvIHdlIGVudGVyIGBhc1VzZXJgIGZvciB0aGlzXG4gKiByZXF1ZXN0XCIuXG4gKlxuICogYGFzVXNlcihyZXEpYCBuZWVkcyB0aGUgT0JPIHRva2VuIHRoZSBwbGF0Zm9ybSBmcm9udCBkb29yIGZvcndhcmRzIG9uXG4gKiB7QGxpbmsgQUNDRVNTX1RPS0VOX0hFQURFUn0uIE1lYXN1cmVkIGFnYWluc3QgdGhlIGluc3RhbGxlZCBBcHBLaXQsIGl0c1xuICogYmVoYXZpb3Igd2hlbiB0aGF0IGhlYWRlciBpcyBhYnNlbnQgZGVwZW5kcyBFTlRJUkVMWSBvbiBgTk9ERV9FTlZgOlxuICpcbiAqIHwgYE5PREVfRU5WYCAgICB8IG5vIGB4LWZvcndhcmRlZC1hY2Nlc3MtdG9rZW5gICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCAtLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8XG4gKiB8IGBkZXZlbG9wbWVudGAgfCBsb2dzIGEgd2FybmluZywgc2lsZW50bHkgcnVucyBhcyB0aGUgc2VydmljZSBwcmluY2lwYWwgfFxuICogfCBhbnl0aGluZyBlbHNlIHwgdGhyb3dzIGBBdXRoZW50aWNhdGlvbkVycm9yOiBNaXNzaW5nIHVzZXIgdG9rZW5gICAgICAgfFxuICpcbiAqIFRoYXQgcHJvZHVjdGlvbiB0aHJvdyBpcyBjb3JyZWN0IGZvciBhbiBhcHAgYmVoaW5kIHRoZSBEYXRhYnJpY2tzIGZyb250IGRvb3IsXG4gKiB3aGVyZSBhIG1pc3NpbmcgdG9rZW4gbWVhbnMgc29tZXRoaW5nIGlzIHdyb25nLiBJdCBpcyBmYXRhbCBmb3IgYW4gYXBwIHdob3NlXG4gKiB0cmFmZmljIGxlZ2l0aW1hdGVseSBhcnJpdmVzIFdJVEhPVVQgb25lOlxuICpcbiAqICAgLSBhIHB1YmxpYyB0dW5uZWwgKGBAZGJ4LXRvb2xzL3R1bm5lbGApLCB3aGVyZSBjYWxsZXJzIGF1dGhlbnRpY2F0ZSBieVxuICogICAgIGVtYWlsIE9UUCBhbmQgbm8gT0JPIHRva2VuIGV4aXN0cyB0byBmb3J3YXJkIC0gdGhlIGdhdGUgY2FuIHByb3ZlIFdITyB0aGVcbiAqICAgICBjYWxsZXIgaXMsIGJ1dCBpdCBjYW5ub3QgbWludCBhIERhdGFicmlja3MgY3JlZGVudGlhbCBmb3IgdGhlbTtcbiAqICAgLSBhbnkgcmV2ZXJzZSBwcm94eSwgd2ViaG9vaywgb3IgYm90IGNoYW5uZWwgKGBQT1NUIC9hcGkvdGVhbXMvbWVzc2FnZXNgKVxuICogICAgIHRoYXQgYXV0aGVudGljYXRlcyBpdHMgb3duIHdheS5cbiAqXG4gKiBTdWNoIGFuIGFwcCBtdXN0IG5vdCBydW4gd2l0aCBgTk9ERV9FTlY9ZGV2ZWxvcG1lbnRgIGp1c3QgdG8gZ2V0IHRoZSBmYWxsYmFjazpcbiAqIHRoYXQgZmxhZyBhbHNvIHJlbGF4ZXMgc2VjdXJlIGNvb2tpZXMsIEFwcEtpdCdzIG93biBkZXYgYWZmb3JkYW5jZXMsIGFuZFxuICogYGFsbG93VW5hdXRoZW50aWNhdGVkYCBlc2NhcGUgaGF0Y2hlcy4gSGVuY2Uge0BsaW5rIElkZW50aXR5TW9kZX06XG4gKlxuICogICAtIGBcInVzZXJcImAgLSBhbHdheXMgT0JPLiBQZXItdXNlciBhdHRyaWJ1dGlvbiBhbmQgcGVyLXVzZXIgR2VuaWUgLyBVbml0eVxuICogICAgIENhdGFsb2cgcm93IGZpbHRlcnMuIENvcnJlY3Qgd2hlbiBldmVyeSBjYWxsZXIgaXMgYSB3b3Jrc3BhY2UgbWVtYmVyLlxuICogICAtIGBcInNlcnZpY2UtcHJpbmNpcGFsXCJgIC0gYWx3YXlzIHRoZSBhcHAncyBvd24gaWRlbnRpdHkuIE5lZWRzIG5vIE9CT1xuICogICAgIHNjb3BlcyBhbmQgd29ya3MgZm9yIGFueSBjYWxsZXIsIGF0IHRoZSBjb3N0IG9mIHBlci11c2VyIGRhdGEgc2NvcGluZy5cbiAqICAgLSBgXCJhdXRvXCJgIC0gT0JPIHdoZW4gdGhlIHJlcXVlc3QgYWN0dWFsbHkgY2FycmllcyBhIHVzYWJsZSBPQk8gdG9rZW4sXG4gKiAgICAgdGhlIHNlcnZpY2UgcHJpbmNpcGFsIG90aGVyd2lzZS4gT25lIGRlcGxveW1lbnQgdGhlbiBzZXJ2ZXMgQk9USCBkb29yc1xuICogICAgIGNvcnJlY3RseTogZnJvbnQtZG9vciByZXF1ZXN0cyBrZWVwIGZ1bGwgcGVyLXVzZXIgc2NvcGluZywgd2hpbGUgdHVubmVsIC9cbiAqICAgICB3ZWJob29rIHJlcXVlc3RzIGRlZ3JhZGUgdG8gdGhlIHNlcnZpY2UgcHJpbmNpcGFsIGluc3RlYWQgb2YgNTAwaW5nLlxuICpcbiAqIGBcImF1dG9cImAgZGVjaWRlcyBwZXIgUkVRVUVTVCwgbm90IHBlciBib290LCBiZWNhdXNlIGEgc2luZ2xlIGNvbnRhaW5lciBzZXJ2ZXNcbiAqIGJvdGggZG9vcnMgYXQgb25jZSAtIHRoZSB0dW5uZWwgZ2F0ZSBhbmQgdGhlIHBsYXRmb3JtIGZyb250IGRvb3Igc2hhcmUgYSBwb3J0XG4gKiAoc2VlIGBAZGJ4LXRvb2xzL3R1bm5lbGApLiBBIGJvb3QtdGltZSBmbGFnIHdvdWxkIGhhdmUgdG8gYmUgd3JvbmcgZm9yIG9uZVxuICogb2YgdGhlbS5cbiAqXG4gKiBXaGF0IHRoZSBzZXJ2aWNlIHByaW5jaXBhbCBkb2VzIE5PVCBjaGFuZ2UgaXMgV0hPIHRoZSByZXF1ZXN0IGJlbG9uZ3MgdG8uIFRoZVxuICogY2FsbGVyJ3MgaWRlbnRpdHkgc3RpbGwgYXJyaXZlcyBvbiB7QGxpbmsgVVNFUl9JRF9IRUFERVJ9IC9cbiAqIHtAbGluayBVU0VSX0VNQUlMX0hFQURFUn0sIHNvIG1lbW9yeSB0aHJlYWRzLCBjYWNoZSBuYW1lc3BhY2VzLCBhbmQgdHJhY2VcbiAqIGF0dHJpYnV0aW9uIHN0YXkgcGVyLXVzZXIuIE9ubHkgdGhlIERhdGFicmlja3MgY3JlZGVudGlhbCBpcyBzaGFyZWQuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7IENvbmZpZ3VyYXRpb25FcnJvciB9IGZyb20gXCJAZGF0YWJyaWNrcy9hcHBraXRcIjtcbmltcG9ydCB7IGNvbmZpZ1V0aWxzIH0gZnJvbSBcIkBkYngtdG9vbHMvY29yZVwiO1xuaW1wb3J0IHsgc3RyaW5nVXRpbHMsIHRva2VuIH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWNvcmVcIjtcblxuLyoqXG4gKiBIZWFkZXIgdGhlIERhdGFicmlja3MgQXBwcyBmcm9udCBkb29yIGZvcndhcmRzIHRoZSBjYWxsZXIncyBPQk8gdG9rZW4gb24uXG4gKiBJdHMgcHJlc2VuY2UgaXMgd2hhdCBtYWtlcyBgYXNVc2VyKHJlcSlgIHZpYWJsZSwgc28gaXQgaXMgdGhlIHNpZ25hbFxuICoge0BsaW5rIHVzZVNlcnZpY2VQcmluY2lwYWx9IHJlYWRzIGluIGBcImF1dG9cImAgbW9kZS5cbiAqXG4gKiBSZS1leHBvcnRlZCBmcm9tIGBAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlYCdzIGB0b2tlbmAgbW9kdWxlICh3aGljaCByZWFkcyB0aGVcbiAqIHNhbWUgaGVhZGVyIHRvIGRlY29kZSBPQXV0aCBzY29wZXMpIHJhdGhlciB0aGFuIHJlLXNwZWxsZWQsIHNvIHRoZSBuYW1lIGZvclxuICogdGhpcyB3aXJlIGNvbnRyYWN0IGV4aXN0cyBvbmNlLlxuICovXG5leHBvcnQgY29uc3QgQUNDRVNTX1RPS0VOX0hFQURFUiA9IHRva2VuLkFDQ0VTU19UT0tFTl9IRUFERVI7XG5cbi8qKiBIZWFkZXIgdGhlIERhdGFicmlja3MgQXBwcyBmcm9udCBkb29yIGZvcndhcmRzIHRoZSBjYWxsZXIncyB1c2VyIGlkIG9uLiAqL1xuZXhwb3J0IGNvbnN0IFVTRVJfSURfSEVBREVSID0gdG9rZW4uVVNFUl9JRF9IRUFERVI7XG5cbi8qKiBIZWFkZXIgdGhlIERhdGFicmlja3MgQXBwcyBmcm9udCBkb29yIGZvcndhcmRzIHRoZSBjYWxsZXIncyBlbWFpbCBvbi4gKi9cbmV4cG9ydCBjb25zdCBVU0VSX0VNQUlMX0hFQURFUiA9IHRva2VuLlVTRVJfRU1BSUxfSEVBREVSO1xuXG4vKiogSWRlbnRpdHkgYSByZXF1ZXN0J3MgRGF0YWJyaWNrcyBjYWxscyBydW4gYXMuIFNlZSB0aGUgbW9kdWxlIGRvY3MuICovXG5leHBvcnQgdHlwZSBJZGVudGl0eU1vZGUgPSBcInVzZXJcIiB8IFwic2VydmljZS1wcmluY2lwYWxcIiB8IFwiYXV0b1wiO1xuXG4vKiogRXZlcnkgYWNjZXB0ZWQge0BsaW5rIElkZW50aXR5TW9kZX0sIGluIHRoZSBvcmRlciBkb2NzIGFuZCBzY2hlbWFzIGxpc3QgdGhlbS4gKi9cbmV4cG9ydCBjb25zdCBJREVOVElUWV9NT0RFUzogcmVhZG9ubHkgSWRlbnRpdHlNb2RlW10gPSBbXCJ1c2VyXCIsIFwic2VydmljZS1wcmluY2lwYWxcIiwgXCJhdXRvXCJdO1xuXG4vKipcbiAqIERlZmF1bHQgbW9kZS4gYFwidXNlclwiYCBrZWVwcyBPQk8gdGhlIG9ubHkgaWRlbnRpdHkgdW5sZXNzIGFuIGFwcCBvcHRzIGluLCBzb1xuICogYWRvcHRpbmcgdGhpcyBvcHRpb24gY2FuIG5ldmVyIHNpbGVudGx5IHdpZGVuIGFuIGV4aXN0aW5nIGFwcCdzIGRhdGEgYWNjZXNzLlxuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9JREVOVElUWV9NT0RFOiBJZGVudGl0eU1vZGUgPSBcInVzZXJcIjtcblxuLyoqIFRoZSBzdWJzZXQgb2YgYGV4cHJlc3MuUmVxdWVzdGAgdGhpcyBtb2R1bGUgcmVhZHMgLSBvbmUgaGVhZGVyIGxvb2t1cC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSGVhZGVyQmVhcmluZyB7XG4gIGhlYWRlcihuYW1lOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogUmVzb2x2ZSBhIGNvbmZpZ3VyZWQgbW9kZTogZXhwbGljaXQgY29uZmlnIHZhbHVlLCB0aGVuIHRoZSBmaXJzdCBub24tZW1wdHlcbiAqIHZhcmlhYmxlIGFtb25nIGBlbnZLZXlzYCwgdGhlbiB7QGxpbmsgREVGQVVMVF9JREVOVElUWV9NT0RFfS5cbiAqXG4gKiBBbiB1bnJlY29nbml6ZWQgdmFsdWUgdGhyb3dzIHJhdGhlciB0aGFuIGZhbGxpbmcgYmFjay4gRmFsbGluZyBiYWNrIHdvdWxkXG4gKiBzaWxlbnRseSBrZWVwIHNlcnZpbmcgT0JPIC0gYW5kIHRoZSBwcm9kdWN0aW9uIGBBdXRoZW50aWNhdGlvbkVycm9yYCBpdFxuICogcHJvZHVjZXMgLSB0byBleGFjdGx5IHRoZSBjYWxsZXJzIHRoZSBvcHRpb24gd2FzIHNldCB0byBhY2NvbW1vZGF0ZSwgYW5kIGFcbiAqIHR5cG8gKGBcIm9ib1wiYCwgYFwic3BcImApIGlzIHRoZSBsaWtlbGllc3Qgd2F5IHRvIGdldCBvbmUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlSWRlbnRpdHlNb2RlKFxuICBjb25maWd1cmVkOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gIGVudktleXM6IHN0cmluZyB8IHJlYWRvbmx5IHN0cmluZ1tdLFxuICBmaWVsZCA9IFwiaWRlbnRpdHlcIixcbik6IElkZW50aXR5TW9kZSB7XG4gIGNvbnN0IHJhdyA9IGNvbmZpZ1V0aWxzLnN0cmluZyhjb25maWd1cmVkLCBlbnZLZXlzLCBjb25maWdVdGlscy5FTlZfT05MWSk7XG4gIGlmIChyYXcgPT09IHVuZGVmaW5lZCkgcmV0dXJuIERFRkFVTFRfSURFTlRJVFlfTU9ERTtcbiAgY29uc3QgbW9kZSA9IHJhdy50b0xvd2VyQ2FzZSgpIGFzIElkZW50aXR5TW9kZTtcbiAgaWYgKCFJREVOVElUWV9NT0RFUy5pbmNsdWRlcyhtb2RlKSkge1xuICAgIGNvbnN0IG5hbWVzID0gdHlwZW9mIGVudktleXMgPT09IFwic3RyaW5nXCIgPyBlbnZLZXlzIDogZW52S2V5cy5qb2luKFwiIC8gXCIpO1xuICAgIHRocm93IG5ldyBDb25maWd1cmF0aW9uRXJyb3IoXG4gICAgICBgJHtmaWVsZH0gbXVzdCBiZSBvbmUgb2YgJHtJREVOVElUWV9NT0RFUy5qb2luKFwiIHwgXCIpfSAoZW52OiAke25hbWVzfSlgLFxuICAgICAgeyBjb250ZXh0OiB7IGZpZWxkLCBlbnZWYXI6IG5hbWVzLCByZWNlaXZlZDogcmF3IH0gfSxcbiAgICApO1xuICB9XG4gIHJldHVybiBtb2RlO1xufVxuXG4vKipcbiAqIFRoZSBPQk8gdG9rZW4gb24gYHJlcWAsIG9yIGB1bmRlZmluZWRgLiBSZWFkIHRocm91Z2ggdGhlIHNhbWUgdHJpbSBhcyBldmVyeVxuICogb3RoZXIgaGVhZGVyLCBzbyBhIGhlYWRlciBwcmVzZW50LWJ1dC1ibGFuayAod2hpY2ggc29tZSBwcm94aWVzIGVtaXQgZm9yIGFuXG4gKiB1bnNldCB1cHN0cmVhbSB2YWx1ZSkgY291bnRzIGFzIGFic2VudCByYXRoZXIgdGhhbiBhcyBhIHRva2VuIHRoYXQgZmFpbHMgYXRcbiAqIHRoZSBmaXJzdCBEYXRhYnJpY2tzIGNhbGwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXF1ZXN0QWNjZXNzVG9rZW4ocmVxOiBIZWFkZXJCZWFyaW5nIHwgdW5kZWZpbmVkKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIHN0cmluZ1V0aWxzLnRyaW1Ub051bGwocmVxPy5oZWFkZXIoQUNDRVNTX1RPS0VOX0hFQURFUikpID8/IHVuZGVmaW5lZDtcbn1cblxuLyoqIFRoZSBmb3J3YXJkZWQgdXNlciBpZCBvbiBgcmVxYCwgb3IgYHVuZGVmaW5lZGAuICovXG5leHBvcnQgZnVuY3Rpb24gcmVxdWVzdFVzZXJJZChyZXE6IEhlYWRlckJlYXJpbmcgfCB1bmRlZmluZWQpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gc3RyaW5nVXRpbHMudHJpbVRvTnVsbChyZXE/LmhlYWRlcihVU0VSX0lEX0hFQURFUikpID8/IHVuZGVmaW5lZDtcbn1cblxuLyoqIFRoZSBmb3J3YXJkZWQgdXNlciBlbWFpbCBvbiBgcmVxYCwgb3IgYHVuZGVmaW5lZGAuICovXG5leHBvcnQgZnVuY3Rpb24gcmVxdWVzdFVzZXJFbWFpbChyZXE6IEhlYWRlckJlYXJpbmcgfCB1bmRlZmluZWQpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gc3RyaW5nVXRpbHMudHJpbVRvTnVsbChyZXE/LmhlYWRlcihVU0VSX0VNQUlMX0hFQURFUikpID8/IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBXaGV0aGVyIGByZXFgIHNob3VsZCBydW4gaXRzIERhdGFicmlja3MgY2FsbHMgYXMgdGhlIGFwcCBzZXJ2aWNlIHByaW5jaXBhbFxuICogcmF0aGVyIHRoYW4gT0JPLlxuICpcbiAqIC0gYFwic2VydmljZS1wcmluY2lwYWxcImAgLT4gYWx3YXlzIGB0cnVlYC5cbiAqIC0gYFwidXNlclwiYCAtPiBhbHdheXMgYGZhbHNlYCwgZXZlbiB3aXRoIG5vIHRva2VuLiBUaGUgbW9kZSBpcyBhbiBleHBsaWNpdFxuICogICBhc3NlcnRpb24gdGhhdCBldmVyeSBjYWxsZXIgaXMgT0JPLWNhcGFibGUsIHNvIGEgbWlzc2luZyB0b2tlbiBpcyBhIHJlYWxcbiAqICAgZXJyb3IgYW5kIG11c3Qgc3VyZmFjZSBhcyBBcHBLaXQncyBgQXV0aGVudGljYXRpb25FcnJvcmAgcmF0aGVyIHRoYW4gYmVpbmdcbiAqICAgcXVpZXRseSBkb3duZ3JhZGVkIHRvIHNoYXJlZCBkYXRhIGFjY2Vzcy5cbiAqIC0gYFwiYXV0b1wiYCAtPiBgdHJ1ZWAgb25seSB3aGVuIHRoZSByZXF1ZXN0IGNhcnJpZXMgbm8gdXNhYmxlIE9CTyB0b2tlbi5cbiAqXG4gKiBBIHJlcXVlc3QgQXBwS2l0IHdpbGwgbm90IGFjY2VwdCBmb3IgT0JPIGFueXdheSAobm8gdG9rZW4pIGNhbiBuZXZlciBiZVxuICogc2VydmVkIGJ5IGVudGVyaW5nIGBhc1VzZXJgLCBzbyBpbiBgXCJhdXRvXCJgIG1vZGUgdGhlIHRva2VuIGNoZWNrIGlzIHRoZSB3aG9sZVxuICogZGVjaXNpb246IGl0IGlzIHRoZSBzYW1lIGNvbmRpdGlvbiBBcHBLaXQgaXRzZWxmIGJyYW5jaGVzIG9uLCBqdXN0IHJlc29sdmVkXG4gKiBiZWZvcmUgaXQgY2FuIHRocm93LlxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlU2VydmljZVByaW5jaXBhbChtb2RlOiBJZGVudGl0eU1vZGUsIHJlcT86IEhlYWRlckJlYXJpbmcpOiBib29sZWFuIHtcbiAgaWYgKG1vZGUgPT09IFwic2VydmljZS1wcmluY2lwYWxcIikgcmV0dXJuIHRydWU7XG4gIGlmIChtb2RlID09PSBcInVzZXJcIikgcmV0dXJuIGZhbHNlO1xuICByZXR1cm4gcmVxdWVzdEFjY2Vzc1Rva2VuKHJlcSkgPT09IHVuZGVmaW5lZDtcbn1cbiJdfQ==
138
+ const logger = log.logger("appkit");
139
+ const skippedAsUser = new Set();
140
+ const AS_USER_SKIP_WARN = "Skipping user impersonation";
141
+ const AS_USER_PATCHED = Symbol.for("dbx-tools.appkit.asUserDevLog");
142
+ /**
143
+ * In development, keep AppKit `asUser` behavior. The first missing-token skip
144
+ * for a forwarded email or user id uses AppKit's own warn; later skips for
145
+ * that user, and every skip with no forwarded identity, are silent. Request
146
+ * objects are not a stable key: each plugin call typically has its own `req`.
147
+ *
148
+ * No-op outside development, when `Plugin.asUser` is missing or not a
149
+ * function, or if the prototype cannot be rewritten. Failures never throw:
150
+ * AppKit keeps its original `asUser`. Extra arguments are forwarded so a
151
+ * later signature change still reaches the original method.
152
+ */
153
+ export function installAsUserDevelopmentPatch() {
154
+ if (process.env.NODE_ENV !== "development")
155
+ return;
156
+ try {
157
+ const proto = Plugin.prototype;
158
+ if (proto[AS_USER_PATCHED] === true)
159
+ return;
160
+ const original = proto.asUser;
161
+ if (typeof original !== "function")
162
+ return;
163
+ proto[AS_USER_PATCHED] = true;
164
+ proto.asUser = function patchedAsUser(req, ...rest) {
165
+ const headers = asHeaderBearing(req);
166
+ const args = [req, ...rest];
167
+ if (!headers || requestAccessToken(headers) !== undefined) {
168
+ return Function.prototype.apply.call(original, this, args);
169
+ }
170
+ return withAsUserSkipWarnSuppressed(headers, () => Function.prototype.apply.call(original, this, args));
171
+ };
172
+ }
173
+ catch (error) {
174
+ logger.debug("asUser development patch skipped", { error: String(error) });
175
+ }
176
+ }
177
+ function asHeaderBearing(req) {
178
+ if (req === null || typeof req !== "object")
179
+ return undefined;
180
+ if (typeof req.header !== "function")
181
+ return undefined;
182
+ return req;
183
+ }
184
+ function withAsUserSkipWarnSuppressed(req, fn) {
185
+ const user = requestUserEmail(req) ?? requestUserId(req);
186
+ if (user && !skippedAsUser.has(user)) {
187
+ skippedAsUser.add(user);
188
+ return fn();
189
+ }
190
+ const warn = console.warn;
191
+ console.warn = (...args) => {
192
+ if (!log.isLevelEnabled("debug") && args.some((value) => typeof value === "string" && value.includes(AS_USER_SKIP_WARN))) {
193
+ return;
194
+ }
195
+ warn.apply(console, args);
196
+ };
197
+ try {
198
+ return fn();
199
+ }
200
+ finally {
201
+ console.warn = warn;
202
+ }
203
+ }
204
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbnRpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaWRlbnRpdHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvREc7QUFFSCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDaEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRWpFOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsS0FBSyxDQUFDLG1CQUFtQixDQUFDO0FBRTdELDhFQUE4RTtBQUM5RSxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsS0FBSyxDQUFDLGNBQWMsQ0FBQztBQUVuRCw0RUFBNEU7QUFDNUUsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsS0FBSyxDQUFDLGlCQUFpQixDQUFDO0FBS3pELG9GQUFvRjtBQUNwRixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQTRCLENBQUMsTUFBTSxFQUFFLG1CQUFtQixFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBRTdGOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFpQixNQUFNLENBQUM7QUFPMUQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsbUJBQW1CLENBQ2pDLFVBQThCLEVBQzlCLE9BQW1DLEVBQ25DLEtBQUssR0FBRyxVQUFVO0lBRWxCLE1BQU0sR0FBRyxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDMUUsSUFBSSxHQUFHLEtBQUssU0FBUztRQUFFLE9BQU8scUJBQXFCLENBQUM7SUFD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QU8sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxHQUFHLElBQWUsRUFBRSxFQUFFO1FBQ3BDLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3pILE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsSUFBdUMsQ0FBQyxDQUFDO0lBQy9ELENBQUMsQ0FBQztJQUNGLElBQUksQ0FBQztRQUNILE9BQU8sRUFBRSxFQUFFLENBQUM7SUFDZCxDQUFDO1lBQVMsQ0FBQztRQUNULE9BQU8sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ3RCLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBXaGljaCBEYXRhYnJpY2tzIGlkZW50aXR5IGEgcmVxdWVzdCdzIHdvcmtzcGFjZSBjYWxscyBydW4gYXMuXG4gKlxuICogQXBwS2l0IGdpdmVzIGEgcGx1Z2luIHR3byBpZGVudGl0aWVzOiB0aGUgYW1iaWVudCBTRVJWSUNFIGNvbnRleHQgKHRoZSBhcHAnc1xuICogb3duIHNlcnZpY2UgcHJpbmNpcGFsKSBhbmQgYSBwZXItcmVxdWVzdCBVU0VSIGNvbnRleHQgZW50ZXJlZCB3aXRoXG4gKiBgYXNVc2VyKHJlcSlgLCB3aGljaCBhdXRoZW50aWNhdGVzIGFzIHRoZSBjYWxsZXIgb24tYmVoYWxmLW9mIChPQk8pLiBUaGVcbiAqIGNob2ljZSBpcyBvbmUgY2FsbCwgc28gdGhlIHdob2xlIGRlY2lzaW9uIGlzIFwiZG8gd2UgZW50ZXIgYGFzVXNlcmAgZm9yIHRoaXNcbiAqIHJlcXVlc3RcIi5cbiAqXG4gKiBgYXNVc2VyKHJlcSlgIG5lZWRzIHRoZSBPQk8gdG9rZW4gdGhlIHBsYXRmb3JtIGZyb250IGRvb3IgZm9yd2FyZHMgb25cbiAqIHtAbGluayBBQ0NFU1NfVE9LRU5fSEVBREVSfS4gTWVhc3VyZWQgYWdhaW5zdCB0aGUgaW5zdGFsbGVkIEFwcEtpdCwgaXRzXG4gKiBiZWhhdmlvciB3aGVuIHRoYXQgaGVhZGVyIGlzIGFic2VudCBkZXBlbmRzIEVOVElSRUxZIG9uIGBOT0RFX0VOVmA6XG4gKlxuICogfCBgTk9ERV9FTlZgICAgIHwgbm8gYHgtZm9yd2FyZGVkLWFjY2Vzcy10b2tlbmAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8IC0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHxcbiAqIHwgYGRldmVsb3BtZW50YCB8IGxvZ3MgYSB3YXJuaW5nLCBzaWxlbnRseSBydW5zIGFzIHRoZSBzZXJ2aWNlIHByaW5jaXBhbCB8XG4gKiB8IGFueXRoaW5nIGVsc2UgfCB0aHJvd3MgYEF1dGhlbnRpY2F0aW9uRXJyb3I6IE1pc3NpbmcgdXNlciB0b2tlbmAgICAgICB8XG4gKlxuICogVGhhdCBwcm9kdWN0aW9uIHRocm93IGlzIGNvcnJlY3QgZm9yIGFuIGFwcCBiZWhpbmQgdGhlIERhdGFicmlja3MgZnJvbnQgZG9vcixcbiAqIHdoZXJlIGEgbWlzc2luZyB0b2tlbiBtZWFucyBzb21ldGhpbmcgaXMgd3JvbmcuIEl0IGlzIGZhdGFsIGZvciBhbiBhcHAgd2hvc2VcbiAqIHRyYWZmaWMgbGVnaXRpbWF0ZWx5IGFycml2ZXMgV0lUSE9VVCBvbmU6XG4gKlxuICogICAtIGEgcHVibGljIHR1bm5lbCAoYEBkYngtdG9vbHMvdHVubmVsYCksIHdoZXJlIGNhbGxlcnMgYXV0aGVudGljYXRlIGJ5XG4gKiAgICAgZW1haWwgT1RQIGFuZCBubyBPQk8gdG9rZW4gZXhpc3RzIHRvIGZvcndhcmQgLSB0aGUgZ2F0ZSBjYW4gcHJvdmUgV0hPIHRoZVxuICogICAgIGNhbGxlciBpcywgYnV0IGl0IGNhbm5vdCBtaW50IGEgRGF0YWJyaWNrcyBjcmVkZW50aWFsIGZvciB0aGVtO1xuICogICAtIGFueSByZXZlcnNlIHByb3h5LCB3ZWJob29rLCBvciBib3QgY2hhbm5lbCAoYFBPU1QgL2FwaS90ZWFtcy9tZXNzYWdlc2ApXG4gKiAgICAgdGhhdCBhdXRoZW50aWNhdGVzIGl0cyBvd24gd2F5LlxuICpcbiAqIFN1Y2ggYW4gYXBwIG11c3Qgbm90IHJ1biB3aXRoIGBOT0RFX0VOVj1kZXZlbG9wbWVudGAganVzdCB0byBnZXQgdGhlIGZhbGxiYWNrOlxuICogdGhhdCBmbGFnIGFsc28gcmVsYXhlcyBzZWN1cmUgY29va2llcywgQXBwS2l0J3Mgb3duIGRldiBhZmZvcmRhbmNlcywgYW5kXG4gKiBgYWxsb3dVbmF1dGhlbnRpY2F0ZWRgIGVzY2FwZSBoYXRjaGVzLiBIZW5jZSB7QGxpbmsgSWRlbnRpdHlNb2RlfTpcbiAqXG4gKiAgIC0gYFwidXNlclwiYCAtIGFsd2F5cyBPQk8uIFBlci11c2VyIGF0dHJpYnV0aW9uIGFuZCBwZXItdXNlciBHZW5pZSAvIFVuaXR5XG4gKiAgICAgQ2F0YWxvZyByb3cgZmlsdGVycy4gQ29ycmVjdCB3aGVuIGV2ZXJ5IGNhbGxlciBpcyBhIHdvcmtzcGFjZSBtZW1iZXIuXG4gKiAgIC0gYFwic2VydmljZS1wcmluY2lwYWxcImAgLSBhbHdheXMgdGhlIGFwcCdzIG93biBpZGVudGl0eS4gTmVlZHMgbm8gT0JPXG4gKiAgICAgc2NvcGVzIGFuZCB3b3JrcyBmb3IgYW55IGNhbGxlciwgYXQgdGhlIGNvc3Qgb2YgcGVyLXVzZXIgZGF0YSBzY29waW5nLlxuICogICAtIGBcImF1dG9cImAgLSBPQk8gd2hlbiB0aGUgcmVxdWVzdCBhY3R1YWxseSBjYXJyaWVzIGEgdXNhYmxlIE9CTyB0b2tlbixcbiAqICAgICB0aGUgc2VydmljZSBwcmluY2lwYWwgb3RoZXJ3aXNlLiBPbmUgZGVwbG95bWVudCB0aGVuIHNlcnZlcyBCT1RIIGRvb3JzXG4gKiAgICAgY29ycmVjdGx5OiBmcm9udC1kb29yIHJlcXVlc3RzIGtlZXAgZnVsbCBwZXItdXNlciBzY29waW5nLCB3aGlsZSB0dW5uZWwgL1xuICogICAgIHdlYmhvb2sgcmVxdWVzdHMgZGVncmFkZSB0byB0aGUgc2VydmljZSBwcmluY2lwYWwgaW5zdGVhZCBvZiA1MDBpbmcuXG4gKlxuICogYFwiYXV0b1wiYCBkZWNpZGVzIHBlciBSRVFVRVNULCBub3QgcGVyIGJvb3QsIGJlY2F1c2UgYSBzaW5nbGUgY29udGFpbmVyIHNlcnZlc1xuICogYm90aCBkb29ycyBhdCBvbmNlIC0gdGhlIHR1bm5lbCBnYXRlIGFuZCB0aGUgcGxhdGZvcm0gZnJvbnQgZG9vciBzaGFyZSBhIHBvcnRcbiAqIChzZWUgYEBkYngtdG9vbHMvdHVubmVsYCkuIEEgYm9vdC10aW1lIGZsYWcgd291bGQgaGF2ZSB0byBiZSB3cm9uZyBmb3Igb25lXG4gKiBvZiB0aGVtLlxuICpcbiAqIFdoYXQgdGhlIHNlcnZpY2UgcHJpbmNpcGFsIGRvZXMgTk9UIGNoYW5nZSBpcyBXSE8gdGhlIHJlcXVlc3QgYmVsb25ncyB0by4gVGhlXG4gKiBjYWxsZXIncyBpZGVudGl0eSBzdGlsbCBhcnJpdmVzIG9uIHtAbGluayBVU0VSX0lEX0hFQURFUn0gL1xuICoge0BsaW5rIFVTRVJfRU1BSUxfSEVBREVSfSwgc28gbWVtb3J5IHRocmVhZHMsIGNhY2hlIG5hbWVzcGFjZXMsIGFuZCB0cmFjZVxuICogYXR0cmlidXRpb24gc3RheSBwZXItdXNlci4gT25seSB0aGUgRGF0YWJyaWNrcyBjcmVkZW50aWFsIGlzIHNoYXJlZC5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuaW1wb3J0IHsgQ29uZmlndXJhdGlvbkVycm9yLCBQbHVnaW4gfSBmcm9tIFwiQGRhdGFicmlja3MvYXBwa2l0XCI7XG5pbXBvcnQgeyBjb25maWdVdGlscyB9IGZyb20gXCJAZGJ4LXRvb2xzL2NvcmVcIjtcbmltcG9ydCB7IGxvZywgc3RyaW5nVXRpbHMsIHRva2VuIH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWNvcmVcIjtcblxuLyoqXG4gKiBIZWFkZXIgdGhlIERhdGFicmlja3MgQXBwcyBmcm9udCBkb29yIGZvcndhcmRzIHRoZSBjYWxsZXIncyBPQk8gdG9rZW4gb24uXG4gKiBJdHMgcHJlc2VuY2UgaXMgd2hhdCBtYWtlcyBgYXNVc2VyKHJlcSlgIHZpYWJsZSwgc28gaXQgaXMgdGhlIHNpZ25hbFxuICoge0BsaW5rIHVzZVNlcnZpY2VQcmluY2lwYWx9IHJlYWRzIGluIGBcImF1dG9cImAgbW9kZS5cbiAqXG4gKiBSZS1leHBvcnRlZCBmcm9tIGBAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlYCdzIGB0b2tlbmAgbW9kdWxlICh3aGljaCByZWFkcyB0aGVcbiAqIHNhbWUgaGVhZGVyIHRvIGRlY29kZSBPQXV0aCBzY29wZXMpIHJhdGhlciB0aGFuIHJlLXNwZWxsZWQsIHNvIHRoZSBuYW1lIGZvclxuICogdGhpcyB3aXJlIGNvbnRyYWN0IGV4aXN0cyBvbmNlLlxuICovXG5leHBvcnQgY29uc3QgQUNDRVNTX1RPS0VOX0hFQURFUiA9IHRva2VuLkFDQ0VTU19UT0tFTl9IRUFERVI7XG5cbi8qKiBIZWFkZXIgdGhlIERhdGFicmlja3MgQXBwcyBmcm9udCBkb29yIGZvcndhcmRzIHRoZSBjYWxsZXIncyB1c2VyIGlkIG9uLiAqL1xuZXhwb3J0IGNvbnN0IFVTRVJfSURfSEVBREVSID0gdG9rZW4uVVNFUl9JRF9IRUFERVI7XG5cbi8qKiBIZWFkZXIgdGhlIERhdGFicmlja3MgQXBwcyBmcm9udCBkb29yIGZvcndhcmRzIHRoZSBjYWxsZXIncyBlbWFpbCBvbi4gKi9cbmV4cG9ydCBjb25zdCBVU0VSX0VNQUlMX0hFQURFUiA9IHRva2VuLlVTRVJfRU1BSUxfSEVBREVSO1xuXG4vKiogSWRlbnRpdHkgYSByZXF1ZXN0J3MgRGF0YWJyaWNrcyBjYWxscyBydW4gYXMuIFNlZSB0aGUgbW9kdWxlIGRvY3MuICovXG5leHBvcnQgdHlwZSBJZGVudGl0eU1vZGUgPSBcInVzZXJcIiB8IFwic2VydmljZS1wcmluY2lwYWxcIiB8IFwiYXV0b1wiO1xuXG4vKiogRXZlcnkgYWNjZXB0ZWQge0BsaW5rIElkZW50aXR5TW9kZX0sIGluIHRoZSBvcmRlciBkb2NzIGFuZCBzY2hlbWFzIGxpc3QgdGhlbS4gKi9cbmV4cG9ydCBjb25zdCBJREVOVElUWV9NT0RFUzogcmVhZG9ubHkgSWRlbnRpdHlNb2RlW10gPSBbXCJ1c2VyXCIsIFwic2VydmljZS1wcmluY2lwYWxcIiwgXCJhdXRvXCJdO1xuXG4vKipcbiAqIERlZmF1bHQgbW9kZS4gYFwidXNlclwiYCBrZWVwcyBPQk8gdGhlIG9ubHkgaWRlbnRpdHkgdW5sZXNzIGFuIGFwcCBvcHRzIGluLCBzb1xuICogYWRvcHRpbmcgdGhpcyBvcHRpb24gY2FuIG5ldmVyIHNpbGVudGx5IHdpZGVuIGFuIGV4aXN0aW5nIGFwcCdzIGRhdGEgYWNjZXNzLlxuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9JREVOVElUWV9NT0RFOiBJZGVudGl0eU1vZGUgPSBcInVzZXJcIjtcblxuLyoqIFRoZSBzdWJzZXQgb2YgYGV4cHJlc3MuUmVxdWVzdGAgdGhpcyBtb2R1bGUgcmVhZHMgLSBvbmUgaGVhZGVyIGxvb2t1cC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSGVhZGVyQmVhcmluZyB7XG4gIGhlYWRlcihuYW1lOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogUmVzb2x2ZSBhIGNvbmZpZ3VyZWQgbW9kZTogZXhwbGljaXQgY29uZmlnIHZhbHVlLCB0aGVuIHRoZSBmaXJzdCBub24tZW1wdHlcbiAqIHZhcmlhYmxlIGFtb25nIGBlbnZLZXlzYCwgdGhlbiB7QGxpbmsgREVGQVVMVF9JREVOVElUWV9NT0RFfS5cbiAqXG4gKiBBbiB1bnJlY29nbml6ZWQgdmFsdWUgdGhyb3dzIHJhdGhlciB0aGFuIGZhbGxpbmcgYmFjay4gRmFsbGluZyBiYWNrIHdvdWxkXG4gKiBzaWxlbnRseSBrZWVwIHNlcnZpbmcgT0JPIC0gYW5kIHRoZSBwcm9kdWN0aW9uIGBBdXRoZW50aWNhdGlvbkVycm9yYCBpdFxuICogcHJvZHVjZXMgLSB0byBleGFjdGx5IHRoZSBjYWxsZXJzIHRoZSBvcHRpb24gd2FzIHNldCB0byBhY2NvbW1vZGF0ZSwgYW5kIGFcbiAqIHR5cG8gKGBcIm9ib1wiYCwgYFwic3BcImApIGlzIHRoZSBsaWtlbGllc3Qgd2F5IHRvIGdldCBvbmUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlSWRlbnRpdHlNb2RlKFxuICBjb25maWd1cmVkOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gIGVudktleXM6IHN0cmluZyB8IHJlYWRvbmx5IHN0cmluZ1tdLFxuICBmaWVsZCA9IFwiaWRlbnRpdHlcIixcbik6IElkZW50aXR5TW9kZSB7XG4gIGNvbnN0IHJhdyA9IGNvbmZpZ1V0aWxzLnN0cmluZyhjb25maWd1cmVkLCBlbnZLZXlzLCBjb25maWdVdGlscy5FTlZfT05MWSk7XG4gIGlmIChyYXcgPT09IHVuZGVmaW5lZCkgcmV0dXJuIERFRkFVTFRfSURFTlRJVFlfTU9ERTtcbiAgY29uc3QgbW9kZSA9IHJhdy50b0xvd2VyQ2FzZSgpIGFzIElkZW50aXR5TW9kZTtcbiAgaWYgKCFJREVOVElUWV9NT0RFUy5pbmNsdWRlcyhtb2RlKSkge1xuICAgIGNvbnN0IG5hbWVzID0gdHlwZW9mIGVudktleXMgPT09IFwic3RyaW5nXCIgPyBlbnZLZXlzIDogZW52S2V5cy5qb2luKFwiIC8gXCIpO1xuICAgIHRocm93IG5ldyBDb25maWd1cmF0aW9uRXJyb3IoXG4gICAgICBgJHtmaWVsZH0gbXVzdCBiZSBvbmUgb2YgJHtJREVOVElUWV9NT0RFUy5qb2luKFwiIHwgXCIpfSAoZW52OiAke25hbWVzfSlgLFxuICAgICAgeyBjb250ZXh0OiB7IGZpZWxkLCBlbnZWYXI6IG5hbWVzLCByZWNlaXZlZDogcmF3IH0gfSxcbiAgICApO1xuICB9XG4gIHJldHVybiBtb2RlO1xufVxuXG4vKipcbiAqIFRoZSBPQk8gdG9rZW4gb24gYHJlcWAsIG9yIGB1bmRlZmluZWRgLiBSZWFkIHRocm91Z2ggdGhlIHNhbWUgdHJpbSBhcyBldmVyeVxuICogb3RoZXIgaGVhZGVyLCBzbyBhIGhlYWRlciBwcmVzZW50LWJ1dC1ibGFuayAod2hpY2ggc29tZSBwcm94aWVzIGVtaXQgZm9yIGFuXG4gKiB1bnNldCB1cHN0cmVhbSB2YWx1ZSkgY291bnRzIGFzIGFic2VudCByYXRoZXIgdGhhbiBhcyBhIHRva2VuIHRoYXQgZmFpbHMgYXRcbiAqIHRoZSBmaXJzdCBEYXRhYnJpY2tzIGNhbGwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXF1ZXN0QWNjZXNzVG9rZW4ocmVxOiBIZWFkZXJCZWFyaW5nIHwgdW5kZWZpbmVkKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIHN0cmluZ1V0aWxzLnRyaW1Ub051bGwocmVxPy5oZWFkZXIoQUNDRVNTX1RPS0VOX0hFQURFUikpID8/IHVuZGVmaW5lZDtcbn1cblxuLyoqIFRoZSBmb3J3YXJkZWQgdXNlciBpZCBvbiBgcmVxYCwgb3IgYHVuZGVmaW5lZGAuICovXG5leHBvcnQgZnVuY3Rpb24gcmVxdWVzdFVzZXJJZChyZXE6IEhlYWRlckJlYXJpbmcgfCB1bmRlZmluZWQpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gc3RyaW5nVXRpbHMudHJpbVRvTnVsbChyZXE/LmhlYWRlcihVU0VSX0lEX0hFQURFUikpID8/IHVuZGVmaW5lZDtcbn1cblxuLyoqIFRoZSBmb3J3YXJkZWQgdXNlciBlbWFpbCBvbiBgcmVxYCwgb3IgYHVuZGVmaW5lZGAuICovXG5leHBvcnQgZnVuY3Rpb24gcmVxdWVzdFVzZXJFbWFpbChyZXE6IEhlYWRlckJlYXJpbmcgfCB1bmRlZmluZWQpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gc3RyaW5nVXRpbHMudHJpbVRvTnVsbChyZXE/LmhlYWRlcihVU0VSX0VNQUlMX0hFQURFUikpID8/IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBXaGV0aGVyIGByZXFgIHNob3VsZCBydW4gaXRzIERhdGFicmlja3MgY2FsbHMgYXMgdGhlIGFwcCBzZXJ2aWNlIHByaW5jaXBhbFxuICogcmF0aGVyIHRoYW4gT0JPLlxuICpcbiAqIC0gYFwic2VydmljZS1wcmluY2lwYWxcImAgLT4gYWx3YXlzIGB0cnVlYC5cbiAqIC0gYFwidXNlclwiYCAtPiBhbHdheXMgYGZhbHNlYCwgZXZlbiB3aXRoIG5vIHRva2VuLiBUaGUgbW9kZSBpcyBhbiBleHBsaWNpdFxuICogICBhc3NlcnRpb24gdGhhdCBldmVyeSBjYWxsZXIgaXMgT0JPLWNhcGFibGUsIHNvIGEgbWlzc2luZyB0b2tlbiBpcyBhIHJlYWxcbiAqICAgZXJyb3IgYW5kIG11c3Qgc3VyZmFjZSBhcyBBcHBLaXQncyBgQXV0aGVudGljYXRpb25FcnJvcmAgcmF0aGVyIHRoYW4gYmVpbmdcbiAqICAgcXVpZXRseSBkb3duZ3JhZGVkIHRvIHNoYXJlZCBkYXRhIGFjY2Vzcy5cbiAqIC0gYFwiYXV0b1wiYCAtPiBgdHJ1ZWAgb25seSB3aGVuIHRoZSByZXF1ZXN0IGNhcnJpZXMgbm8gdXNhYmxlIE9CTyB0b2tlbi5cbiAqXG4gKiBBIHJlcXVlc3QgQXBwS2l0IHdpbGwgbm90IGFjY2VwdCBmb3IgT0JPIGFueXdheSAobm8gdG9rZW4pIGNhbiBuZXZlciBiZVxuICogc2VydmVkIGJ5IGVudGVyaW5nIGBhc1VzZXJgLCBzbyBpbiBgXCJhdXRvXCJgIG1vZGUgdGhlIHRva2VuIGNoZWNrIGlzIHRoZSB3aG9sZVxuICogZGVjaXNpb246IGl0IGlzIHRoZSBzYW1lIGNvbmRpdGlvbiBBcHBLaXQgaXRzZWxmIGJyYW5jaGVzIG9uLCBqdXN0IHJlc29sdmVkXG4gKiBiZWZvcmUgaXQgY2FuIHRocm93LlxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlU2VydmljZVByaW5jaXBhbChtb2RlOiBJZGVudGl0eU1vZGUsIHJlcT86IEhlYWRlckJlYXJpbmcpOiBib29sZWFuIHtcbiAgaWYgKG1vZGUgPT09IFwic2VydmljZS1wcmluY2lwYWxcIikgcmV0dXJuIHRydWU7XG4gIGlmIChtb2RlID09PSBcInVzZXJcIikgcmV0dXJuIGZhbHNlO1xuICByZXR1cm4gcmVxdWVzdEFjY2Vzc1Rva2VuKHJlcSkgPT09IHVuZGVmaW5lZDtcbn1cblxuY29uc3QgbG9nZ2VyID0gbG9nLmxvZ2dlcihcImFwcGtpdFwiKTtcbmNvbnN0IHNraXBwZWRBc1VzZXIgPSBuZXcgU2V0PHN0cmluZz4oKTtcbmNvbnN0IEFTX1VTRVJfU0tJUF9XQVJOID0gXCJTa2lwcGluZyB1c2VyIGltcGVyc29uYXRpb25cIjtcbmNvbnN0IEFTX1VTRVJfUEFUQ0hFRCA9IFN5bWJvbC5mb3IoXCJkYngtdG9vbHMuYXBwa2l0LmFzVXNlckRldkxvZ1wiKTtcblxuLyoqXG4gKiBJbiBkZXZlbG9wbWVudCwga2VlcCBBcHBLaXQgYGFzVXNlcmAgYmVoYXZpb3IuIFRoZSBmaXJzdCBtaXNzaW5nLXRva2VuIHNraXBcbiAqIGZvciBhIGZvcndhcmRlZCBlbWFpbCBvciB1c2VyIGlkIHVzZXMgQXBwS2l0J3Mgb3duIHdhcm47IGxhdGVyIHNraXBzIGZvclxuICogdGhhdCB1c2VyLCBhbmQgZXZlcnkgc2tpcCB3aXRoIG5vIGZvcndhcmRlZCBpZGVudGl0eSwgYXJlIHNpbGVudC4gUmVxdWVzdFxuICogb2JqZWN0cyBhcmUgbm90IGEgc3RhYmxlIGtleTogZWFjaCBwbHVnaW4gY2FsbCB0eXBpY2FsbHkgaGFzIGl0cyBvd24gYHJlcWAuXG4gKlxuICogTm8tb3Agb3V0c2lkZSBkZXZlbG9wbWVudCwgd2hlbiBgUGx1Z2luLmFzVXNlcmAgaXMgbWlzc2luZyBvciBub3QgYVxuICogZnVuY3Rpb24sIG9yIGlmIHRoZSBwcm90b3R5cGUgY2Fubm90IGJlIHJld3JpdHRlbi4gRmFpbHVyZXMgbmV2ZXIgdGhyb3c6XG4gKiBBcHBLaXQga2VlcHMgaXRzIG9yaWdpbmFsIGBhc1VzZXJgLiBFeHRyYSBhcmd1bWVudHMgYXJlIGZvcndhcmRlZCBzbyBhXG4gKiBsYXRlciBzaWduYXR1cmUgY2hhbmdlIHN0aWxsIHJlYWNoZXMgdGhlIG9yaWdpbmFsIG1ldGhvZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbGxBc1VzZXJEZXZlbG9wbWVudFBhdGNoKCk6IHZvaWQge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwiZGV2ZWxvcG1lbnRcIikgcmV0dXJuO1xuICB0cnkge1xuICAgIGNvbnN0IHByb3RvID0gUGx1Z2luLnByb3RvdHlwZSBhcyB1bmtub3duIGFzIFJlY29yZDxQcm9wZXJ0eUtleSwgdW5rbm93bj47XG4gICAgaWYgKHByb3RvW0FTX1VTRVJfUEFUQ0hFRF0gPT09IHRydWUpIHJldHVybjtcbiAgICBjb25zdCBvcmlnaW5hbCA9IHByb3RvLmFzVXNlcjtcbiAgICBpZiAodHlwZW9mIG9yaWdpbmFsICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybjtcbiAgICBwcm90b1tBU19VU0VSX1BBVENIRURdID0gdHJ1ZTtcbiAgICBwcm90by5hc1VzZXIgPSBmdW5jdGlvbiBwYXRjaGVkQXNVc2VyKHRoaXM6IHVua25vd24sIHJlcTogdW5rbm93biwgLi4ucmVzdDogdW5rbm93bltdKSB7XG4gICAgICBjb25zdCBoZWFkZXJzID0gYXNIZWFkZXJCZWFyaW5nKHJlcSk7XG4gICAgICBjb25zdCBhcmdzID0gW3JlcSwgLi4ucmVzdF07XG4gICAgICBpZiAoIWhlYWRlcnMgfHwgcmVxdWVzdEFjY2Vzc1Rva2VuKGhlYWRlcnMpICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIEZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseS5jYWxsKG9yaWdpbmFsLCB0aGlzLCBhcmdzKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB3aXRoQXNVc2VyU2tpcFdhcm5TdXBwcmVzc2VkKGhlYWRlcnMsICgpID0+XG4gICAgICAgIEZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseS5jYWxsKG9yaWdpbmFsLCB0aGlzLCBhcmdzKSxcbiAgICAgICk7XG4gICAgfTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBsb2dnZXIuZGVidWcoXCJhc1VzZXIgZGV2ZWxvcG1lbnQgcGF0Y2ggc2tpcHBlZFwiLCB7IGVycm9yOiBTdHJpbmcoZXJyb3IpIH0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIGFzSGVhZGVyQmVhcmluZyhyZXE6IHVua25vd24pOiBIZWFkZXJCZWFyaW5nIHwgdW5kZWZpbmVkIHtcbiAgaWYgKHJlcSA9PT0gbnVsbCB8fCB0eXBlb2YgcmVxICE9PSBcIm9iamVjdFwiKSByZXR1cm4gdW5kZWZpbmVkO1xuICBpZiAodHlwZW9mIChyZXEgYXMgSGVhZGVyQmVhcmluZykuaGVhZGVyICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiB1bmRlZmluZWQ7XG4gIHJldHVybiByZXEgYXMgSGVhZGVyQmVhcmluZztcbn1cblxuZnVuY3Rpb24gd2l0aEFzVXNlclNraXBXYXJuU3VwcHJlc3NlZDxUPihyZXE6IEhlYWRlckJlYXJpbmcsIGZuOiAoKSA9PiBUKTogVCB7XG4gIGNvbnN0IHVzZXIgPSByZXF1ZXN0VXNlckVtYWlsKHJlcSkgPz8gcmVxdWVzdFVzZXJJZChyZXEpO1xuICBpZiAodXNlciAmJiAhc2tpcHBlZEFzVXNlci5oYXModXNlcikpIHtcbiAgICBza2lwcGVkQXNVc2VyLmFkZCh1c2VyKTtcbiAgICByZXR1cm4gZm4oKTtcbiAgfVxuICBjb25zdCB3YXJuID0gY29uc29sZS53YXJuO1xuICBjb25zb2xlLndhcm4gPSAoLi4uYXJnczogdW5rbm93bltdKSA9PiB7XG4gICAgaWYgKCFsb2cuaXNMZXZlbEVuYWJsZWQoXCJkZWJ1Z1wiKSAmJiBhcmdzLnNvbWUoKHZhbHVlKSA9PiB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgJiYgdmFsdWUuaW5jbHVkZXMoQVNfVVNFUl9TS0lQX1dBUk4pKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB3YXJuLmFwcGx5KGNvbnNvbGUsIGFyZ3MgYXMgUGFyYW1ldGVyczx0eXBlb2YgY29uc29sZS53YXJuPik7XG4gIH07XG4gIHRyeSB7XG4gICAgcmV0dXJuIGZuKCk7XG4gIH0gZmluYWxseSB7XG4gICAgY29uc29sZS53YXJuID0gd2FybjtcbiAgfVxufVxuIl19
@@ -19,7 +19,7 @@
19
19
  * @module
20
20
  */
21
21
  import { Plugin, toPlugin } from "@databricks/appkit";
22
- import { log } from "@dbx-tools/shared-core";
22
+ import { errorUtils, log } from "@dbx-tools/shared-core";
23
23
  const logger = log.logger("interceptor");
24
24
  /**
25
25
  * Build an {@link InterceptorContext} + its {@link InterceptorRuntime}.
@@ -44,7 +44,10 @@ export function createInterceptorContext(env) {
44
44
  catch (error) {
45
45
  // Match AppKit: a failing lifecycle handler is logged, never fatal, and
46
46
  // never blocks its siblings.
47
- logger.warn("lifecycle handler failed", { event, error });
47
+ logger.warn("lifecycle handler failed", {
48
+ event,
49
+ error: errorUtils.toError(error),
50
+ });
48
51
  }
49
52
  }
50
53
  };
@@ -89,4 +92,4 @@ export class LifecycleBridgePlugin extends Plugin {
89
92
  }
90
93
  /** Factory for the injected {@link LifecycleBridgePlugin}. */
91
94
  export const lifecycleBridge = toPlugin(LifecycleBridgePlugin);
92
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJjZXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQkc7QUFFSCxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBOEMsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHN0MsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztBQTRFekM7O0dBRUc7QUFDSCxNQUFNLFVBQVUsd0JBQXdCLENBQUMsR0FBbUI7SUFDMUQsTUFBTSxRQUFRLEdBQUcsSUFBSSxHQUFHLEVBQXNDLENBQUM7SUFFL0QsTUFBTSxXQUFXLEdBQUcsQ0FBQyxLQUFxQixFQUFFLEVBQW9CLEVBQVEsRUFBRTtRQUN4RSxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLElBQUksSUFBSTtZQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7O1lBQ25CLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqQyxDQUFDLENBQUM7SUFFRixNQUFNLGFBQWEsR0FBRyxLQUFLLEVBQUUsS0FBcUIsRUFBaUIsRUFBRTtRQUNuRSxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxJQUFJO1lBQUUsT0FBTztRQUNsQixLQUFLLE1BQU0sRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQztnQkFDSCxNQUFNLEVBQUUsRUFBRSxDQUFDO1lBQ2IsQ0FBQztZQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7Z0JBQ2Ysd0VBQXdFO2dCQUN4RSw2QkFBNkI7Z0JBQzdCLE1BQU0sQ0FBQyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUM1RCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUMsQ0FBQztJQUVGLE1BQU0sT0FBTyxHQUF1QjtRQUNsQyxHQUFHO1FBQ0gsV0FBVztLQUNaLENBQUM7SUFFRixPQUFPLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxDQUFDO0FBQ3BDLENBQUM7QUFpQkQsU0FBUyxjQUFjLENBQUMsT0FBZ0I7SUFDdEMsT0FBTyxPQUFRLE9BQTRDLEVBQUUsV0FBVyxLQUFLLFVBQVUsQ0FBQztBQUMxRixDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxPQUFPLHFCQUFzQixTQUFRLE1BQTZCO0lBQ3RFLE1BQU0sQ0FBQyxRQUFRLEdBQUc7UUFDaEIsSUFBSSxFQUFFLHlCQUF5QjtRQUMvQixXQUFXLEVBQUUsa0JBQWtCO1FBQy9CLFdBQVcsRUFBRSxzRUFBc0U7UUFDbkYsU0FBUyxFQUFFLE1BQU07UUFDakIsTUFBTSxFQUFFLElBQUk7UUFDWixTQUFTLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUU7S0FDVSxDQUFDO0lBRTdDLEtBQUssQ0FBQyxLQUFLO1FBQ2xCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxPQUFPO1lBQUUsT0FBTztRQUNyQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ2xDLE1BQU0sQ0FBQyxLQUFLLENBQUMsNEVBQTRFLENBQUMsQ0FBQztZQUMzRixPQUFPO1FBQ1QsQ0FBQztRQUNELE1BQU0sTUFBTSxHQUFxQixDQUFDLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUNoRixLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDdEUsQ0FBQztJQUNILENBQUM7O0FBR0gsOERBQThEO0FBQzlELE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxRQUFRLENBQUMscUJBQXFCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhlIGBjcmVhdGVBcHBgIElOVEVSQ0VQVE9SIGNvbnRleHQ6IGFuIGluLXByb2Nlc3MgaGFuZGxlIGFuIGFwcCBoYW5kcyB0b1xuICogYWRkLW9ucyAodGhlIHR1bm5lbCwgY2hpZWZseSkgc28gdGhleSBjYW4gcmVhZCB0aGUgZW52IGF1dG8tY29uZmlndXJhdGlvblxuICogY29tcHV0ZWQgYW5kIGhvb2sgQXBwS2l0J3MgbGlmZWN5Y2xlLlxuICpcbiAqIEFuIGludGVyY2VwdG9yIGlzIGEgcGxhaW4gZnVuY3Rpb24gYChjdHgpID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+YCBwYXNzZWQgdG9cbiAqIGBhcHBraXQuY3JlYXRlQXBwYCdzIGBpbnRlcmNlcHRvcmAgb3B0aW9uIChcIm9uZSBvciBtYW55XCIpLiBgYXBwa2l0LmNyZWF0ZUFwcGBcbiAqIHJ1bnMgZWFjaCBvbmUgQUZURVIgYXV0by1jb25maWd1cmF0aW9uIGhhcyBwb3B1bGF0ZWQgYHByb2Nlc3MuZW52YCBidXQgYXMgcGFydFxuICogb2YgYm9vdGluZyB0aGUgYXBwLCBzbyBhbiBpbnRlcmNlcHRvciBzZWVzIHRoZSByZXNvbHZlZCBjb25uZWN0aW9uIGFuZCBjYW4gYmluZFxuICogcHJvY2Vzc2VzIGJlZm9yZSBvciBkdXJpbmcgc2V0dXAuXG4gKlxuICogVGhlIG5hbWVzIGhlcmUgbWlycm9yIEFwcEtpdCdzIG93biB2b2NhYnVsYXJ5IHJhdGhlciB0aGFuIGludmVudGluZyBwYXJhbGxlbFxuICogb25lczoge0BsaW5rIExpZmVjeWNsZUV2ZW50fSBhbmQge0BsaW5rIEludGVyY2VwdG9yQ29udGV4dC5vbkxpZmVjeWNsZX0gYXJlIHRoZVxuICogZXhhY3Qgc2hhcGUgb2YgYFBsdWdpbkNvbnRleHQub25MaWZlY3ljbGVgIChgc2V0dXA6Y29tcGxldGVgIC8gYHNlcnZlcjpyZWFkeWAgL1xuICogYHNodXRkb3duYCkuIFRoZSBicmlkZ2UgdGhhdCBtYWtlcyB0aGF0IGhvb2sgcmVhY2hhYmxlIGZyb20gT1VUU0lERSBhIHBsdWdpbiAtXG4gKiB3aGVyZSBpbnRlcmNlcHRvcnMgcnVuIC0gaXMge0BsaW5rIGxpZmVjeWNsZUJyaWRnZX0sIGEgdGlueSBpbnRlcm5hbCBwbHVnaW5cbiAqIGBhcHBraXQuY3JlYXRlQXBwYCBpbmplY3RzIHRvIGNhcHR1cmUgYHRoaXMuY29udGV4dGAgYW5kIHJlbGF5IGl0cyBldmVudHMuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7IFBsdWdpbiwgdG9QbHVnaW4sIHR5cGUgQmFzZVBsdWdpbkNvbmZpZywgdHlwZSBQbHVnaW5NYW5pZmVzdCB9IGZyb20gXCJAZGF0YWJyaWNrcy9hcHBraXRcIjtcbmltcG9ydCB7IGxvZyB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlXCI7XG5pbXBvcnQgdHlwZSB7IExha2ViYXNlQ29ubmVjdGlvbiB9IGZyb20gXCIuL2xha2ViYXNlLXJlc29sdmVyLnRzXCI7XG5cbmNvbnN0IGxvZ2dlciA9IGxvZy5sb2dnZXIoXCJpbnRlcmNlcHRvclwiKTtcblxuLyoqXG4gKiBBcHBLaXQncyBwbHVnaW4tbGlmZWN5Y2xlIGV2ZW50cywgdmVyYmF0aW0gZnJvbSBgUGx1Z2luQ29udGV4dGBcbiAqIChgbm9kZV9tb2R1bGVzL0BkYXRhYnJpY2tzL2FwcGtpdC8uLi4vY29yZS9wbHVnaW4tY29udGV4dC5kLnRzYCkuIFJlLWRlY2xhcmVkXG4gKiBzdHJ1Y3R1cmFsbHkgcmF0aGVyIHRoYW4gaW1wb3J0ZWQgYmVjYXVzZSBgUGx1Z2luQ29udGV4dGAgaXMgbm90IGluIHRoZVxuICogcGFja2FnZSdzIGBleHBvcnRzYCBtYXAgKHRoZSBzYW1lIHJlYXNvbiB7QGxpbmsgUGx1Z2luQ29udGV4dExpa2V9IGV4aXN0cyBpblxuICogYC4vcGx1Z2luYCkuXG4gKlxuICogLSBgc2V0dXA6Y29tcGxldGVgIC0gZXZlcnkgcGx1Z2luJ3MgYHNldHVwKClgIGhhcyByZXNvbHZlZC5cbiAqIC0gYHNlcnZlcjpyZWFkeWAgLSB0aGUgYHNlcnZlcigpYCBwbHVnaW4gaXMgbGlzdGVuaW5nIChuZXZlciBmaXJlcyBmb3IgYVxuICogICBzZXJ2ZXJsZXNzIGFwcCwgZS5nLiB0aGUgdHVubmVsIGdhdGUpLlxuICogLSBgc2h1dGRvd25gIC0gdGhlIGFwcCBpcyB0ZWFyaW5nIGRvd24uXG4gKi9cbmV4cG9ydCB0eXBlIExpZmVjeWNsZUV2ZW50ID0gXCJzZXR1cDpjb21wbGV0ZVwiIHwgXCJzZXJ2ZXI6cmVhZHlcIiB8IFwic2h1dGRvd25cIjtcblxuLyoqIEEgbGlmZWN5Y2xlIHN1YnNjcmliZXIuIEVycm9ycyBhcmUgbG9nZ2VkLCBub3QgcHJvcGFnYXRlZCAobWF0Y2hlcyBBcHBLaXQpLiAqL1xuZXhwb3J0IHR5cGUgTGlmZWN5Y2xlSGFuZGxlciA9ICgpID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+O1xuXG4vKipcbiAqIFRoZSBlbnYgYXV0by1jb25maWd1cmF0aW9uIHJlc29sdmVkIGJlZm9yZSBib290LCBleHBvc2VkIHRvIGludGVyY2VwdG9ycyBzb1xuICogdGhleSByZWFkIENPTVBVVEVEIHZhbHVlcyBpbnN0ZWFkIG9mIHJlLXJlYWRpbmcgYHByb2Nlc3MuZW52YCB0aGVtc2VsdmVzLlxuICpcbiAqIGBsYWtlYmFzZWAgaXMgdGhlIHJlc29sdmVkIFBvc3RncmVzIGNvbm5lY3Rpb24gd2hlbiBMYWtlYmFzZSBhdXRvLWNvbmZpZyByYW5cbiAqIChzZWUgYGFwcGtpdC5hdXRvQ29uZmlndXJlYCksIGVsc2UgYHVuZGVmaW5lZGAuIGBkYXRhYnJpY2tzSG9zdGAgaXMgdGhlXG4gKiB3b3Jrc3BhY2UgaG9zdCBhcyByZXNvbHZlZCBpbnRvIHRoZSBlbnZpcm9ubWVudCAoYERBVEFCUklDS1NfSE9TVGApLCB3aGljaCB0aGVcbiAqIHR1bm5lbCBpbnRlcmNlcHRvciBib3RoIHJlYWRzIGFuZCwgd2hlbiBpdCBtdXN0LCBzZXRzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc29sdmVkQXBwRW52IHtcbiAgLyoqIFJlc29sdmVkIExha2ViYXNlIGNvbm5lY3Rpb24sIHdoZW4gYXV0by1jb25maWcgcmVzb2x2ZWQgb25lLiAqL1xuICByZWFkb25seSBsYWtlYmFzZT86IExha2ViYXNlQ29ubmVjdGlvbjtcbiAgLyoqIFJlc29sdmVkIERhdGFicmlja3Mgd29ya3NwYWNlIGhvc3QgKGBEQVRBQlJJQ0tTX0hPU1RgKSwgd2hlbiBrbm93bi4gKi9cbiAgcmVhZG9ubHkgZGF0YWJyaWNrc0hvc3Q/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogVGhlIGhhbmRsZSBwYXNzZWQgdG8gZWFjaCBpbnRlcmNlcHRvci5cbiAqXG4gKiBAZXhhbXBsZVxuICogaW1wb3J0IHsgYXBwa2l0IH0gZnJvbSBcIkBkYngtdG9vbHMvYXBwa2l0XCI7XG4gKlxuICogYXdhaXQgYXBwa2l0LmNyZWF0ZUFwcCh7XG4gKiAgIHBsdWdpbnM6IFtzZXJ2ZXIoKV0sXG4gKiAgIGludGVyY2VwdG9yOiAoY3R4KSA9PiB7XG4gKiAgICAgY29uc3QgYXV4aWxpYXJ5ID0gc3RhcnRBdXhpbGlhcnkoY3R4LmVudi5kYXRhYnJpY2tzSG9zdCk7XG4gKiAgICAgY3R4Lm9uTGlmZWN5Y2xlKFwic2h1dGRvd25cIiwgKCkgPT4gYXV4aWxpYXJ5LnN0b3AoKSk7XG4gKiAgIH0sXG4gKiB9KTtcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnRlcmNlcHRvckNvbnRleHQge1xuICAvKiogVGhlIGVudiBhdXRvLWNvbmZpZ3VyYXRpb24gY29tcHV0ZWQgYmVmb3JlIGJvb3QuICovXG4gIHJlYWRvbmx5IGVudjogUmVzb2x2ZWRBcHBFbnY7XG4gIC8qKlxuICAgKiBTdWJzY3JpYmUgdG8gYW4gQXBwS2l0IGxpZmVjeWNsZSBldmVudC4gTWlycm9ycyBgUGx1Z2luQ29udGV4dC5vbkxpZmVjeWNsZWA7XG4gICAqIHRoZSBpbmplY3RlZCB7QGxpbmsgbGlmZWN5Y2xlQnJpZGdlfSByZWxheXMgdGhlIHJlYWwgZXZlbnRzIGhlcmUgb25jZSB0aGUgYXBwXG4gICAqIGJvb3RzLiBBIGhhbmRsZXIgcmVnaXN0ZXJlZCBmb3IgYW4gZXZlbnQgdGhhdCBhbHJlYWR5IGZpcmVkIGlzIE5PVCBjYWxsZWRcbiAgICogcmV0cm9hY3RpdmVseSAoc2FtZSBzZW1hbnRpY3MgYXMgQXBwS2l0KS5cbiAgICovXG4gIG9uTGlmZWN5Y2xlKGV2ZW50OiBMaWZlY3ljbGVFdmVudCwgZm46IExpZmVjeWNsZUhhbmRsZXIpOiB2b2lkO1xufVxuXG4vKiogQSBzaW5nbGUgaW50ZXJjZXB0b3IsIG9yIHNldmVyYWwuIFRoZSBgY3JlYXRlQXBwYCBgaW50ZXJjZXB0b3I/OmAgb3B0aW9uLiAqL1xuZXhwb3J0IHR5cGUgSW50ZXJjZXB0b3IgPSAoY3R4OiBJbnRlcmNlcHRvckNvbnRleHQpID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+O1xuXG4vKipcbiAqIFRoZSBtdXRhYmxlIG1hY2hpbmVyeSBiZWhpbmQgYW4ge0BsaW5rIEludGVyY2VwdG9yQ29udGV4dH0uIFNwbGl0IG91dCBzb1xuICoge0BsaW5rIGNyZWF0ZUludGVyY2VwdG9yQ29udGV4dH0gY2FuIGhhbmQgdGhlIHB1YmxpYyBjb250ZXh0IHRvIGludGVyY2VwdG9yc1xuICogd2hpbGUgYGFwcGtpdC5jcmVhdGVBcHBgIHJldGFpbnMgdGhlIGBlbWl0TGlmZWN5Y2xlYCBzaWRlLWNoYW5uZWwgdGhlIGJyaWRnZSBkcml2ZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZXJjZXB0b3JSdW50aW1lIHtcbiAgLyoqIFRoZSBjb250ZXh0IGhhbmRlZCB0byBlYWNoIGludGVyY2VwdG9yLiAqL1xuICByZWFkb25seSBjb250ZXh0OiBJbnRlcmNlcHRvckNvbnRleHQ7XG4gIC8qKiBGaXJlIGEgbGlmZWN5Y2xlIGV2ZW50IHRvIGV2ZXJ5IHN1YnNjcmliZXIgKGNhbGxlZCBieSB7QGxpbmsgbGlmZWN5Y2xlQnJpZGdlfSkuICovXG4gIGVtaXRMaWZlY3ljbGUoZXZlbnQ6IExpZmVjeWNsZUV2ZW50KTogUHJvbWlzZTx2b2lkPjtcbn1cblxuLyoqXG4gKiBCdWlsZCBhbiB7QGxpbmsgSW50ZXJjZXB0b3JDb250ZXh0fSArIGl0cyB7QGxpbmsgSW50ZXJjZXB0b3JSdW50aW1lfS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUludGVyY2VwdG9yQ29udGV4dChlbnY6IFJlc29sdmVkQXBwRW52KTogSW50ZXJjZXB0b3JSdW50aW1lIHtcbiAgY29uc3QgaGFuZGxlcnMgPSBuZXcgTWFwPExpZmVjeWNsZUV2ZW50LCBMaWZlY3ljbGVIYW5kbGVyW10+KCk7XG5cbiAgY29uc3Qgb25MaWZlY3ljbGUgPSAoZXZlbnQ6IExpZmVjeWNsZUV2ZW50LCBmbjogTGlmZWN5Y2xlSGFuZGxlcik6IHZvaWQgPT4ge1xuICAgIGNvbnN0IGxpc3QgPSBoYW5kbGVycy5nZXQoZXZlbnQpO1xuICAgIGlmIChsaXN0KSBsaXN0LnB1c2goZm4pO1xuICAgIGVsc2UgaGFuZGxlcnMuc2V0KGV2ZW50LCBbZm5dKTtcbiAgfTtcblxuICBjb25zdCBlbWl0TGlmZWN5Y2xlID0gYXN5bmMgKGV2ZW50OiBMaWZlY3ljbGVFdmVudCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIGNvbnN0IGxpc3QgPSBoYW5kbGVycy5nZXQoZXZlbnQpO1xuICAgIGlmICghbGlzdCkgcmV0dXJuO1xuICAgIGZvciAoY29uc3QgZm4gb2YgbGlzdCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgZm4oKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIC8vIE1hdGNoIEFwcEtpdDogYSBmYWlsaW5nIGxpZmVjeWNsZSBoYW5kbGVyIGlzIGxvZ2dlZCwgbmV2ZXIgZmF0YWwsIGFuZFxuICAgICAgICAvLyBuZXZlciBibG9ja3MgaXRzIHNpYmxpbmdzLlxuICAgICAgICBsb2dnZXIud2FybihcImxpZmVjeWNsZSBoYW5kbGVyIGZhaWxlZFwiLCB7IGV2ZW50LCBlcnJvciB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgY29uc3QgY29udGV4dDogSW50ZXJjZXB0b3JDb250ZXh0ID0ge1xuICAgIGVudixcbiAgICBvbkxpZmVjeWNsZSxcbiAgfTtcblxuICByZXR1cm4geyBjb250ZXh0LCBlbWl0TGlmZWN5Y2xlIH07XG59XG5cbi8qKiBDb25maWcgZm9yIHtAbGluayBMaWZlY3ljbGVCcmlkZ2VQbHVnaW59OiB0aGUgc2luayBpdHMgY2FwdHVyZWQgZXZlbnRzIGZsb3cgdG8uICovXG5pbnRlcmZhY2UgTGlmZWN5Y2xlQnJpZGdlQ29uZmlnIGV4dGVuZHMgQmFzZVBsdWdpbkNvbmZpZyB7XG4gIC8qKiBUaGUgcnVudGltZSB3aG9zZSBgZW1pdExpZmVjeWNsZWAgcmVjZWl2ZXMgdGhlIHJlYWwgQXBwS2l0IGV2ZW50cy4gKi9cbiAgcnVudGltZT86IEludGVyY2VwdG9yUnVudGltZTtcbn1cblxuLyoqXG4gKiBTdHJ1Y3R1cmFsIHNoYXBlIG9mIHRoZSBgUGx1Z2luQ29udGV4dC5vbkxpZmVjeWNsZWAgd2UgYnJpZGdlLiBNaXJyb3JzIG9ubHkgdGhlXG4gKiBvbmUgbWV0aG9kIHdlIHRvdWNoIChsaWtlIHtAbGluayBQbHVnaW5Db250ZXh0TGlrZX0gaW4gYC4vcGx1Z2luYCksIHNpbmNlXG4gKiBBcHBLaXQncyBgUGx1Z2luQ29udGV4dGAgaXMgbm90IGltcG9ydGFibGUgZnJvbSB0aGUgcGFja2FnZSdzIGBleHBvcnRzYC5cbiAqL1xuaW50ZXJmYWNlIExpZmVjeWNsZUNvbnRleHRMaWtlIHtcbiAgb25MaWZlY3ljbGUoZXZlbnQ6IExpZmVjeWNsZUV2ZW50LCBmbjogTGlmZWN5Y2xlSGFuZGxlcik6IHZvaWQ7XG59XG5cbmZ1bmN0aW9uIGhhc09uTGlmZWN5Y2xlKGNvbnRleHQ6IHVua25vd24pOiBjb250ZXh0IGlzIExpZmVjeWNsZUNvbnRleHRMaWtlIHtcbiAgcmV0dXJuIHR5cGVvZiAoY29udGV4dCBhcyBMaWZlY3ljbGVDb250ZXh0TGlrZSB8IHVuZGVmaW5lZCk/Lm9uTGlmZWN5Y2xlID09PSBcImZ1bmN0aW9uXCI7XG59XG5cbi8qKlxuICogVGhlIGludGVybmFsIHBsdWdpbiBgYXBwa2l0LmNyZWF0ZUFwcGAgaW5qZWN0cyB0byBtYWtlIEFwcEtpdCdzIGxpZmVjeWNsZVxuICogcmVhY2hhYmxlIGZyb20gaW50ZXJjZXB0b3IgY29kZS4gT24gYHNldHVwKClgIGl0IHJlYWRzIGl0cyBvd24gYHRoaXMuY29udGV4dGBcbiAqICh0aGUgcmVhbCBgUGx1Z2luQ29udGV4dGApIGFuZCBmb3J3YXJkcyBlYWNoIHtAbGluayBMaWZlY3ljbGVFdmVudH0gdG8gdGhlXG4gKiBpbnRlcmNlcHRvciBydW50aW1lLCBzbyBgY3R4Lm9uTGlmZWN5Y2xlKC4uLilgIGhhbmRsZXJzIGZpcmUgb24gdGhlIGdlbnVpbmVcbiAqIGV2ZW50cy4gSXQgb3ducyBubyByb3V0ZXMsIGNvbmZpZyBzdXJmYWNlLCBvciBleHBvcnRzLlxuICovXG5leHBvcnQgY2xhc3MgTGlmZWN5Y2xlQnJpZGdlUGx1Z2luIGV4dGVuZHMgUGx1Z2luPExpZmVjeWNsZUJyaWRnZUNvbmZpZz4ge1xuICBzdGF0aWMgbWFuaWZlc3QgPSB7XG4gICAgbmFtZTogXCJkYnhUb29sc0xpZmVjeWNsZUJyaWRnZVwiLFxuICAgIGRpc3BsYXlOYW1lOiBcIkxpZmVjeWNsZSBCcmlkZ2VcIixcbiAgICBkZXNjcmlwdGlvbjogXCJSZWxheXMgQXBwS2l0IGxpZmVjeWNsZSBldmVudHMgdG8gdGhlIGNyZWF0ZUFwcCBpbnRlcmNlcHRvciBjb250ZXh0LlwiLFxuICAgIHN0YWJpbGl0eTogXCJiZXRhXCIsXG4gICAgaGlkZGVuOiB0cnVlLFxuICAgIHJlc291cmNlczogeyByZXF1aXJlZDogW10sIG9wdGlvbmFsOiBbXSB9LFxuICB9IHNhdGlzZmllcyBQbHVnaW5NYW5pZmVzdDxcImRieFRvb2xzTGlmZWN5Y2xlQnJpZGdlXCI+O1xuXG4gIG92ZXJyaWRlIGFzeW5jIHNldHVwKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHJ1bnRpbWUgPSB0aGlzLmNvbmZpZy5ydW50aW1lO1xuICAgIGlmICghcnVudGltZSkgcmV0dXJuO1xuICAgIGlmICghaGFzT25MaWZlY3ljbGUodGhpcy5jb250ZXh0KSkge1xuICAgICAgbG9nZ2VyLmRlYnVnKFwibm8gUGx1Z2luQ29udGV4dC5vbkxpZmVjeWNsZSB0byBicmlkZ2U7IGludGVyY2VwdG9yIGxpZmVjeWNsZSBldmVudHMgaW5lcnRcIik7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGV2ZW50czogTGlmZWN5Y2xlRXZlbnRbXSA9IFtcInNldHVwOmNvbXBsZXRlXCIsIFwic2VydmVyOnJlYWR5XCIsIFwic2h1dGRvd25cIl07XG4gICAgZm9yIChjb25zdCBldmVudCBvZiBldmVudHMpIHtcbiAgICAgIHRoaXMuY29udGV4dC5vbkxpZmVjeWNsZShldmVudCwgKCkgPT4gcnVudGltZS5lbWl0TGlmZWN5Y2xlKGV2ZW50KSk7XG4gICAgfVxuICB9XG59XG5cbi8qKiBGYWN0b3J5IGZvciB0aGUgaW5qZWN0ZWQge0BsaW5rIExpZmVjeWNsZUJyaWRnZVBsdWdpbn0uICovXG5leHBvcnQgY29uc3QgbGlmZWN5Y2xlQnJpZGdlID0gdG9QbHVnaW4oTGlmZWN5Y2xlQnJpZGdlUGx1Z2luKTtcbiJdfQ==
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJjZXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQkc7QUFFSCxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBOEMsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRyxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBR3pELE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7QUE0RXpDOztHQUVHO0FBQ0gsTUFBTSxVQUFVLHdCQUF3QixDQUFDLEdBQW1CO0lBQzFELE1BQU0sUUFBUSxHQUFHLElBQUksR0FBRyxFQUFzQyxDQUFDO0lBRS9ELE1BQU0sV0FBVyxHQUFHLENBQUMsS0FBcUIsRUFBRSxFQUFvQixFQUFRLEVBQUU7UUFDeEUsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqQyxJQUFJLElBQUk7WUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDOztZQUNuQixRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDakMsQ0FBQyxDQUFDO0lBRUYsTUFBTSxhQUFhLEdBQUcsS0FBSyxFQUFFLEtBQXFCLEVBQWlCLEVBQUU7UUFDbkUsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsSUFBSTtZQUFFLE9BQU87UUFDbEIsS0FBSyxNQUFNLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUM7Z0JBQ0gsTUFBTSxFQUFFLEVBQUUsQ0FBQztZQUNiLENBQUM7WUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUNmLHdFQUF3RTtnQkFDeEUsNkJBQTZCO2dCQUM3QixNQUFNLENBQUMsSUFBSSxDQUFDLDBCQUEwQixFQUFFO29CQUN0QyxLQUFLO29CQUNMLEtBQUssRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztpQkFDakMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDLENBQUM7SUFFRixNQUFNLE9BQU8sR0FBdUI7UUFDbEMsR0FBRztRQUNILFdBQVc7S0FDWixDQUFDO0lBRUYsT0FBTyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsQ0FBQztBQUNwQyxDQUFDO0FBaUJELFNBQVMsY0FBYyxDQUFDLE9BQWdCO0lBQ3RDLE9BQU8sT0FBUSxPQUE0QyxFQUFFLFdBQVcsS0FBSyxVQUFVLENBQUM7QUFDMUYsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxNQUE2QjtJQUN0RSxNQUFNLENBQUMsUUFBUSxHQUFHO1FBQ2hCLElBQUksRUFBRSx5QkFBeUI7UUFDL0IsV0FBVyxFQUFFLGtCQUFrQjtRQUMvQixXQUFXLEVBQUUsc0VBQXNFO1FBQ25GLFNBQVMsRUFBRSxNQUFNO1FBQ2pCLE1BQU0sRUFBRSxJQUFJO1FBQ1osU0FBUyxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFO0tBQ1UsQ0FBQztJQUU3QyxLQUFLLENBQUMsS0FBSztRQUNsQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQztRQUNwQyxJQUFJLENBQUMsT0FBTztZQUFFLE9BQU87UUFDckIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNsQyxNQUFNLENBQUMsS0FBSyxDQUFDLDRFQUE0RSxDQUFDLENBQUM7WUFDM0YsT0FBTztRQUNULENBQUM7UUFDRCxNQUFNLE1BQU0sR0FBcUIsQ0FBQyxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDaEYsS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3RFLENBQUM7SUFDSCxDQUFDOztBQUdILDhEQUE4RDtBQUM5RCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDLHFCQUFxQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoZSBgY3JlYXRlQXBwYCBJTlRFUkNFUFRPUiBjb250ZXh0OiBhbiBpbi1wcm9jZXNzIGhhbmRsZSBhbiBhcHAgaGFuZHMgdG9cbiAqIGFkZC1vbnMgKHRoZSB0dW5uZWwsIGNoaWVmbHkpIHNvIHRoZXkgY2FuIHJlYWQgdGhlIGVudiBhdXRvLWNvbmZpZ3VyYXRpb25cbiAqIGNvbXB1dGVkIGFuZCBob29rIEFwcEtpdCdzIGxpZmVjeWNsZS5cbiAqXG4gKiBBbiBpbnRlcmNlcHRvciBpcyBhIHBsYWluIGZ1bmN0aW9uIGAoY3R4KSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPmAgcGFzc2VkIHRvXG4gKiBgYXBwa2l0LmNyZWF0ZUFwcGAncyBgaW50ZXJjZXB0b3JgIG9wdGlvbiAoXCJvbmUgb3IgbWFueVwiKS4gYGFwcGtpdC5jcmVhdGVBcHBgXG4gKiBydW5zIGVhY2ggb25lIEFGVEVSIGF1dG8tY29uZmlndXJhdGlvbiBoYXMgcG9wdWxhdGVkIGBwcm9jZXNzLmVudmAgYnV0IGFzIHBhcnRcbiAqIG9mIGJvb3RpbmcgdGhlIGFwcCwgc28gYW4gaW50ZXJjZXB0b3Igc2VlcyB0aGUgcmVzb2x2ZWQgY29ubmVjdGlvbiBhbmQgY2FuIGJpbmRcbiAqIHByb2Nlc3NlcyBiZWZvcmUgb3IgZHVyaW5nIHNldHVwLlxuICpcbiAqIFRoZSBuYW1lcyBoZXJlIG1pcnJvciBBcHBLaXQncyBvd24gdm9jYWJ1bGFyeSByYXRoZXIgdGhhbiBpbnZlbnRpbmcgcGFyYWxsZWxcbiAqIG9uZXM6IHtAbGluayBMaWZlY3ljbGVFdmVudH0gYW5kIHtAbGluayBJbnRlcmNlcHRvckNvbnRleHQub25MaWZlY3ljbGV9IGFyZSB0aGVcbiAqIGV4YWN0IHNoYXBlIG9mIGBQbHVnaW5Db250ZXh0Lm9uTGlmZWN5Y2xlYCAoYHNldHVwOmNvbXBsZXRlYCAvIGBzZXJ2ZXI6cmVhZHlgIC9cbiAqIGBzaHV0ZG93bmApLiBUaGUgYnJpZGdlIHRoYXQgbWFrZXMgdGhhdCBob29rIHJlYWNoYWJsZSBmcm9tIE9VVFNJREUgYSBwbHVnaW4gLVxuICogd2hlcmUgaW50ZXJjZXB0b3JzIHJ1biAtIGlzIHtAbGluayBsaWZlY3ljbGVCcmlkZ2V9LCBhIHRpbnkgaW50ZXJuYWwgcGx1Z2luXG4gKiBgYXBwa2l0LmNyZWF0ZUFwcGAgaW5qZWN0cyB0byBjYXB0dXJlIGB0aGlzLmNvbnRleHRgIGFuZCByZWxheSBpdHMgZXZlbnRzLlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG5pbXBvcnQgeyBQbHVnaW4sIHRvUGx1Z2luLCB0eXBlIEJhc2VQbHVnaW5Db25maWcsIHR5cGUgUGx1Z2luTWFuaWZlc3QgfSBmcm9tIFwiQGRhdGFicmlja3MvYXBwa2l0XCI7XG5pbXBvcnQgeyBlcnJvclV0aWxzLCBsb2cgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZVwiO1xuaW1wb3J0IHR5cGUgeyBMYWtlYmFzZUNvbm5lY3Rpb24gfSBmcm9tIFwiLi9sYWtlYmFzZS1yZXNvbHZlci50c1wiO1xuXG5jb25zdCBsb2dnZXIgPSBsb2cubG9nZ2VyKFwiaW50ZXJjZXB0b3JcIik7XG5cbi8qKlxuICogQXBwS2l0J3MgcGx1Z2luLWxpZmVjeWNsZSBldmVudHMsIHZlcmJhdGltIGZyb20gYFBsdWdpbkNvbnRleHRgXG4gKiAoYG5vZGVfbW9kdWxlcy9AZGF0YWJyaWNrcy9hcHBraXQvLi4uL2NvcmUvcGx1Z2luLWNvbnRleHQuZC50c2ApLiBSZS1kZWNsYXJlZFxuICogc3RydWN0dXJhbGx5IHJhdGhlciB0aGFuIGltcG9ydGVkIGJlY2F1c2UgYFBsdWdpbkNvbnRleHRgIGlzIG5vdCBpbiB0aGVcbiAqIHBhY2thZ2UncyBgZXhwb3J0c2AgbWFwICh0aGUgc2FtZSByZWFzb24ge0BsaW5rIFBsdWdpbkNvbnRleHRMaWtlfSBleGlzdHMgaW5cbiAqIGAuL3BsdWdpbmApLlxuICpcbiAqIC0gYHNldHVwOmNvbXBsZXRlYCAtIGV2ZXJ5IHBsdWdpbidzIGBzZXR1cCgpYCBoYXMgcmVzb2x2ZWQuXG4gKiAtIGBzZXJ2ZXI6cmVhZHlgIC0gdGhlIGBzZXJ2ZXIoKWAgcGx1Z2luIGlzIGxpc3RlbmluZyAobmV2ZXIgZmlyZXMgZm9yIGFcbiAqICAgc2VydmVybGVzcyBhcHAsIGUuZy4gdGhlIHR1bm5lbCBnYXRlKS5cbiAqIC0gYHNodXRkb3duYCAtIHRoZSBhcHAgaXMgdGVhcmluZyBkb3duLlxuICovXG5leHBvcnQgdHlwZSBMaWZlY3ljbGVFdmVudCA9IFwic2V0dXA6Y29tcGxldGVcIiB8IFwic2VydmVyOnJlYWR5XCIgfCBcInNodXRkb3duXCI7XG5cbi8qKiBBIGxpZmVjeWNsZSBzdWJzY3JpYmVyLiBFcnJvcnMgYXJlIGxvZ2dlZCwgbm90IHByb3BhZ2F0ZWQgKG1hdGNoZXMgQXBwS2l0KS4gKi9cbmV4cG9ydCB0eXBlIExpZmVjeWNsZUhhbmRsZXIgPSAoKSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPjtcblxuLyoqXG4gKiBUaGUgZW52IGF1dG8tY29uZmlndXJhdGlvbiByZXNvbHZlZCBiZWZvcmUgYm9vdCwgZXhwb3NlZCB0byBpbnRlcmNlcHRvcnMgc29cbiAqIHRoZXkgcmVhZCBDT01QVVRFRCB2YWx1ZXMgaW5zdGVhZCBvZiByZS1yZWFkaW5nIGBwcm9jZXNzLmVudmAgdGhlbXNlbHZlcy5cbiAqXG4gKiBgbGFrZWJhc2VgIGlzIHRoZSByZXNvbHZlZCBQb3N0Z3JlcyBjb25uZWN0aW9uIHdoZW4gTGFrZWJhc2UgYXV0by1jb25maWcgcmFuXG4gKiAoc2VlIGBhcHBraXQuYXV0b0NvbmZpZ3VyZWApLCBlbHNlIGB1bmRlZmluZWRgLiBgZGF0YWJyaWNrc0hvc3RgIGlzIHRoZVxuICogd29ya3NwYWNlIGhvc3QgYXMgcmVzb2x2ZWQgaW50byB0aGUgZW52aXJvbm1lbnQgKGBEQVRBQlJJQ0tTX0hPU1RgKSwgd2hpY2ggdGhlXG4gKiB0dW5uZWwgaW50ZXJjZXB0b3IgYm90aCByZWFkcyBhbmQsIHdoZW4gaXQgbXVzdCwgc2V0cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXNvbHZlZEFwcEVudiB7XG4gIC8qKiBSZXNvbHZlZCBMYWtlYmFzZSBjb25uZWN0aW9uLCB3aGVuIGF1dG8tY29uZmlnIHJlc29sdmVkIG9uZS4gKi9cbiAgcmVhZG9ubHkgbGFrZWJhc2U/OiBMYWtlYmFzZUNvbm5lY3Rpb247XG4gIC8qKiBSZXNvbHZlZCBEYXRhYnJpY2tzIHdvcmtzcGFjZSBob3N0IChgREFUQUJSSUNLU19IT1NUYCksIHdoZW4ga25vd24uICovXG4gIHJlYWRvbmx5IGRhdGFicmlja3NIb3N0Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRoZSBoYW5kbGUgcGFzc2VkIHRvIGVhY2ggaW50ZXJjZXB0b3IuXG4gKlxuICogQGV4YW1wbGVcbiAqIGltcG9ydCB7IGFwcGtpdCB9IGZyb20gXCJAZGJ4LXRvb2xzL2FwcGtpdFwiO1xuICpcbiAqIGF3YWl0IGFwcGtpdC5jcmVhdGVBcHAoe1xuICogICBwbHVnaW5zOiBbc2VydmVyKCldLFxuICogICBpbnRlcmNlcHRvcjogKGN0eCkgPT4ge1xuICogICAgIGNvbnN0IGF1eGlsaWFyeSA9IHN0YXJ0QXV4aWxpYXJ5KGN0eC5lbnYuZGF0YWJyaWNrc0hvc3QpO1xuICogICAgIGN0eC5vbkxpZmVjeWNsZShcInNodXRkb3duXCIsICgpID0+IGF1eGlsaWFyeS5zdG9wKCkpO1xuICogICB9LFxuICogfSk7XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZXJjZXB0b3JDb250ZXh0IHtcbiAgLyoqIFRoZSBlbnYgYXV0by1jb25maWd1cmF0aW9uIGNvbXB1dGVkIGJlZm9yZSBib290LiAqL1xuICByZWFkb25seSBlbnY6IFJlc29sdmVkQXBwRW52O1xuICAvKipcbiAgICogU3Vic2NyaWJlIHRvIGFuIEFwcEtpdCBsaWZlY3ljbGUgZXZlbnQuIE1pcnJvcnMgYFBsdWdpbkNvbnRleHQub25MaWZlY3ljbGVgO1xuICAgKiB0aGUgaW5qZWN0ZWQge0BsaW5rIGxpZmVjeWNsZUJyaWRnZX0gcmVsYXlzIHRoZSByZWFsIGV2ZW50cyBoZXJlIG9uY2UgdGhlIGFwcFxuICAgKiBib290cy4gQSBoYW5kbGVyIHJlZ2lzdGVyZWQgZm9yIGFuIGV2ZW50IHRoYXQgYWxyZWFkeSBmaXJlZCBpcyBOT1QgY2FsbGVkXG4gICAqIHJldHJvYWN0aXZlbHkgKHNhbWUgc2VtYW50aWNzIGFzIEFwcEtpdCkuXG4gICAqL1xuICBvbkxpZmVjeWNsZShldmVudDogTGlmZWN5Y2xlRXZlbnQsIGZuOiBMaWZlY3ljbGVIYW5kbGVyKTogdm9pZDtcbn1cblxuLyoqIEEgc2luZ2xlIGludGVyY2VwdG9yLCBvciBzZXZlcmFsLiBUaGUgYGNyZWF0ZUFwcGAgYGludGVyY2VwdG9yPzpgIG9wdGlvbi4gKi9cbmV4cG9ydCB0eXBlIEludGVyY2VwdG9yID0gKGN0eDogSW50ZXJjZXB0b3JDb250ZXh0KSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPjtcblxuLyoqXG4gKiBUaGUgbXV0YWJsZSBtYWNoaW5lcnkgYmVoaW5kIGFuIHtAbGluayBJbnRlcmNlcHRvckNvbnRleHR9LiBTcGxpdCBvdXQgc29cbiAqIHtAbGluayBjcmVhdGVJbnRlcmNlcHRvckNvbnRleHR9IGNhbiBoYW5kIHRoZSBwdWJsaWMgY29udGV4dCB0byBpbnRlcmNlcHRvcnNcbiAqIHdoaWxlIGBhcHBraXQuY3JlYXRlQXBwYCByZXRhaW5zIHRoZSBgZW1pdExpZmVjeWNsZWAgc2lkZS1jaGFubmVsIHRoZSBicmlkZ2UgZHJpdmVzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEludGVyY2VwdG9yUnVudGltZSB7XG4gIC8qKiBUaGUgY29udGV4dCBoYW5kZWQgdG8gZWFjaCBpbnRlcmNlcHRvci4gKi9cbiAgcmVhZG9ubHkgY29udGV4dDogSW50ZXJjZXB0b3JDb250ZXh0O1xuICAvKiogRmlyZSBhIGxpZmVjeWNsZSBldmVudCB0byBldmVyeSBzdWJzY3JpYmVyIChjYWxsZWQgYnkge0BsaW5rIGxpZmVjeWNsZUJyaWRnZX0pLiAqL1xuICBlbWl0TGlmZWN5Y2xlKGV2ZW50OiBMaWZlY3ljbGVFdmVudCk6IFByb21pc2U8dm9pZD47XG59XG5cbi8qKlxuICogQnVpbGQgYW4ge0BsaW5rIEludGVyY2VwdG9yQ29udGV4dH0gKyBpdHMge0BsaW5rIEludGVyY2VwdG9yUnVudGltZX0uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVJbnRlcmNlcHRvckNvbnRleHQoZW52OiBSZXNvbHZlZEFwcEVudik6IEludGVyY2VwdG9yUnVudGltZSB7XG4gIGNvbnN0IGhhbmRsZXJzID0gbmV3IE1hcDxMaWZlY3ljbGVFdmVudCwgTGlmZWN5Y2xlSGFuZGxlcltdPigpO1xuXG4gIGNvbnN0IG9uTGlmZWN5Y2xlID0gKGV2ZW50OiBMaWZlY3ljbGVFdmVudCwgZm46IExpZmVjeWNsZUhhbmRsZXIpOiB2b2lkID0+IHtcbiAgICBjb25zdCBsaXN0ID0gaGFuZGxlcnMuZ2V0KGV2ZW50KTtcbiAgICBpZiAobGlzdCkgbGlzdC5wdXNoKGZuKTtcbiAgICBlbHNlIGhhbmRsZXJzLnNldChldmVudCwgW2ZuXSk7XG4gIH07XG5cbiAgY29uc3QgZW1pdExpZmVjeWNsZSA9IGFzeW5jIChldmVudDogTGlmZWN5Y2xlRXZlbnQpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBjb25zdCBsaXN0ID0gaGFuZGxlcnMuZ2V0KGV2ZW50KTtcbiAgICBpZiAoIWxpc3QpIHJldHVybjtcbiAgICBmb3IgKGNvbnN0IGZuIG9mIGxpc3QpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGZuKCk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAvLyBNYXRjaCBBcHBLaXQ6IGEgZmFpbGluZyBsaWZlY3ljbGUgaGFuZGxlciBpcyBsb2dnZWQsIG5ldmVyIGZhdGFsLCBhbmRcbiAgICAgICAgLy8gbmV2ZXIgYmxvY2tzIGl0cyBzaWJsaW5ncy5cbiAgICAgICAgbG9nZ2VyLndhcm4oXCJsaWZlY3ljbGUgaGFuZGxlciBmYWlsZWRcIiwge1xuICAgICAgICAgIGV2ZW50LFxuICAgICAgICAgIGVycm9yOiBlcnJvclV0aWxzLnRvRXJyb3IoZXJyb3IpLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgY29uc3QgY29udGV4dDogSW50ZXJjZXB0b3JDb250ZXh0ID0ge1xuICAgIGVudixcbiAgICBvbkxpZmVjeWNsZSxcbiAgfTtcblxuICByZXR1cm4geyBjb250ZXh0LCBlbWl0TGlmZWN5Y2xlIH07XG59XG5cbi8qKiBDb25maWcgZm9yIHtAbGluayBMaWZlY3ljbGVCcmlkZ2VQbHVnaW59OiB0aGUgc2luayBpdHMgY2FwdHVyZWQgZXZlbnRzIGZsb3cgdG8uICovXG5pbnRlcmZhY2UgTGlmZWN5Y2xlQnJpZGdlQ29uZmlnIGV4dGVuZHMgQmFzZVBsdWdpbkNvbmZpZyB7XG4gIC8qKiBUaGUgcnVudGltZSB3aG9zZSBgZW1pdExpZmVjeWNsZWAgcmVjZWl2ZXMgdGhlIHJlYWwgQXBwS2l0IGV2ZW50cy4gKi9cbiAgcnVudGltZT86IEludGVyY2VwdG9yUnVudGltZTtcbn1cblxuLyoqXG4gKiBTdHJ1Y3R1cmFsIHNoYXBlIG9mIHRoZSBgUGx1Z2luQ29udGV4dC5vbkxpZmVjeWNsZWAgd2UgYnJpZGdlLiBNaXJyb3JzIG9ubHkgdGhlXG4gKiBvbmUgbWV0aG9kIHdlIHRvdWNoIChsaWtlIHtAbGluayBQbHVnaW5Db250ZXh0TGlrZX0gaW4gYC4vcGx1Z2luYCksIHNpbmNlXG4gKiBBcHBLaXQncyBgUGx1Z2luQ29udGV4dGAgaXMgbm90IGltcG9ydGFibGUgZnJvbSB0aGUgcGFja2FnZSdzIGBleHBvcnRzYC5cbiAqL1xuaW50ZXJmYWNlIExpZmVjeWNsZUNvbnRleHRMaWtlIHtcbiAgb25MaWZlY3ljbGUoZXZlbnQ6IExpZmVjeWNsZUV2ZW50LCBmbjogTGlmZWN5Y2xlSGFuZGxlcik6IHZvaWQ7XG59XG5cbmZ1bmN0aW9uIGhhc09uTGlmZWN5Y2xlKGNvbnRleHQ6IHVua25vd24pOiBjb250ZXh0IGlzIExpZmVjeWNsZUNvbnRleHRMaWtlIHtcbiAgcmV0dXJuIHR5cGVvZiAoY29udGV4dCBhcyBMaWZlY3ljbGVDb250ZXh0TGlrZSB8IHVuZGVmaW5lZCk/Lm9uTGlmZWN5Y2xlID09PSBcImZ1bmN0aW9uXCI7XG59XG5cbi8qKlxuICogVGhlIGludGVybmFsIHBsdWdpbiBgYXBwa2l0LmNyZWF0ZUFwcGAgaW5qZWN0cyB0byBtYWtlIEFwcEtpdCdzIGxpZmVjeWNsZVxuICogcmVhY2hhYmxlIGZyb20gaW50ZXJjZXB0b3IgY29kZS4gT24gYHNldHVwKClgIGl0IHJlYWRzIGl0cyBvd24gYHRoaXMuY29udGV4dGBcbiAqICh0aGUgcmVhbCBgUGx1Z2luQ29udGV4dGApIGFuZCBmb3J3YXJkcyBlYWNoIHtAbGluayBMaWZlY3ljbGVFdmVudH0gdG8gdGhlXG4gKiBpbnRlcmNlcHRvciBydW50aW1lLCBzbyBgY3R4Lm9uTGlmZWN5Y2xlKC4uLilgIGhhbmRsZXJzIGZpcmUgb24gdGhlIGdlbnVpbmVcbiAqIGV2ZW50cy4gSXQgb3ducyBubyByb3V0ZXMsIGNvbmZpZyBzdXJmYWNlLCBvciBleHBvcnRzLlxuICovXG5leHBvcnQgY2xhc3MgTGlmZWN5Y2xlQnJpZGdlUGx1Z2luIGV4dGVuZHMgUGx1Z2luPExpZmVjeWNsZUJyaWRnZUNvbmZpZz4ge1xuICBzdGF0aWMgbWFuaWZlc3QgPSB7XG4gICAgbmFtZTogXCJkYnhUb29sc0xpZmVjeWNsZUJyaWRnZVwiLFxuICAgIGRpc3BsYXlOYW1lOiBcIkxpZmVjeWNsZSBCcmlkZ2VcIixcbiAgICBkZXNjcmlwdGlvbjogXCJSZWxheXMgQXBwS2l0IGxpZmVjeWNsZSBldmVudHMgdG8gdGhlIGNyZWF0ZUFwcCBpbnRlcmNlcHRvciBjb250ZXh0LlwiLFxuICAgIHN0YWJpbGl0eTogXCJiZXRhXCIsXG4gICAgaGlkZGVuOiB0cnVlLFxuICAgIHJlc291cmNlczogeyByZXF1aXJlZDogW10sIG9wdGlvbmFsOiBbXSB9LFxuICB9IHNhdGlzZmllcyBQbHVnaW5NYW5pZmVzdDxcImRieFRvb2xzTGlmZWN5Y2xlQnJpZGdlXCI+O1xuXG4gIG92ZXJyaWRlIGFzeW5jIHNldHVwKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHJ1bnRpbWUgPSB0aGlzLmNvbmZpZy5ydW50aW1lO1xuICAgIGlmICghcnVudGltZSkgcmV0dXJuO1xuICAgIGlmICghaGFzT25MaWZlY3ljbGUodGhpcy5jb250ZXh0KSkge1xuICAgICAgbG9nZ2VyLmRlYnVnKFwibm8gUGx1Z2luQ29udGV4dC5vbkxpZmVjeWNsZSB0byBicmlkZ2U7IGludGVyY2VwdG9yIGxpZmVjeWNsZSBldmVudHMgaW5lcnRcIik7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGV2ZW50czogTGlmZWN5Y2xlRXZlbnRbXSA9IFtcInNldHVwOmNvbXBsZXRlXCIsIFwic2VydmVyOnJlYWR5XCIsIFwic2h1dGRvd25cIl07XG4gICAgZm9yIChjb25zdCBldmVudCBvZiBldmVudHMpIHtcbiAgICAgIHRoaXMuY29udGV4dC5vbkxpZmVjeWNsZShldmVudCwgKCkgPT4gcnVudGltZS5lbWl0TGlmZWN5Y2xlKGV2ZW50KSk7XG4gICAgfVxuICB9XG59XG5cbi8qKiBGYWN0b3J5IGZvciB0aGUgaW5qZWN0ZWQge0BsaW5rIExpZmVjeWNsZUJyaWRnZVBsdWdpbn0uICovXG5leHBvcnQgY29uc3QgbGlmZWN5Y2xlQnJpZGdlID0gdG9QbHVnaW4oTGlmZWN5Y2xlQnJpZGdlUGx1Z2luKTtcbiJdfQ==
@@ -34,6 +34,7 @@
34
34
  *
35
35
  * @module
36
36
  */
37
+ import { type LakebasePool } from "@databricks/appkit";
37
38
  import { type LakebaseConnectionInputs, type SslMode } from "./pgaddress.ts";
38
39
  /**
39
40
  * User-supplied Lakebase inputs (config or env) before any API resolution.
@@ -59,6 +60,19 @@ export interface LakebaseConnection extends LakebaseConnectionInputs {
59
60
  port: number;
60
61
  sslMode: SslMode;
61
62
  }
63
+ /**
64
+ * Capture AppKit's existing service-principal Lakebase pool.
65
+ *
66
+ * Call this during `setup:complete`, outside any `asUser()` scope. AppKit's
67
+ * exported pool routes dynamically by request context, but its runtime
68
+ * `activePool()` method returns the already-created underlying pool selected in
69
+ * the current context. Capturing it once at startup pins application-owned
70
+ * storage to the service principal without creating another pool or connection.
71
+ *
72
+ * A future AppKit version may export a fixed pool directly; in that case the
73
+ * pool has no `activePool()` method and is returned unchanged.
74
+ */
75
+ export declare function captureServicePrincipalPool(pool: LakebasePool): LakebasePool;
62
76
  /**
63
77
  * Validate a `PGPORT`-shaped value. Returns `undefined` when unset, and throws
64
78
  * a {@link ValidationError} naming `PGPORT` for anything that is not a TCP